0311

CS

1강. 프로그래밍 언어 활용_PL(1), (2)

해당 글은 Inflearn의 국립안동대학교 SW융합교육원에서 제작된 '정보처리기사 자격증 대비 교육(실기)' 강의 정리본임을 알립니다.참고 : https://www.inflearn.com/course/정보처리기사-자격증-대비교육-실기/dashboard

프로그래밍 언어 활용

| 001 C언어와 JAVA언어의 기본문법구조

1. C언어와 JAVA 언어의 개요

1) C언어

  • 1972년

  • 유닉스 운영체제 개발에 사용할 목적

  • 특징

    • 논리적이고 구조적인 시스템

    • 하드웨어 제어가 가능, 프로그램 이식성 높음

    • 간략한 문법 표현으로 함축적인 프로그램 작성이 용이

    • 효율성과 유연성을 가진 저급 언어 특성을 가진 고급 언어

  • C언어는 컴파일러형 언어이다.

  • 단계

    • 소스 파일(.c)은 컴파일러를 통해 목적 코드(.obj)로 변환된다.

    • 이후 링커(Linker)헤더 파일(.h) 라이브러리를 연결하여 실행 파일(.exe)을 생성한다.

    • 마지막으로 로더(Loader)가 실행 파일을 메모리에 적재(load) 하여 프로그램이 실행된다.

2) JAVA언어

  • 1996년

  • 객체 지향 프로그래밍 언어

  • 프로그래밍 언어와 함께 실행 환경(플랫폼)을 포함한다.

  • 특징

    • 플랫폼 독립적이다.

    • 상속을 지원하는 객체 지향 프로그래밍 언어(Object-Oriented PL)

  • Java 플랫폼 구성

    1. Java VM (가상머신) : Java 바이트코드를 실행하는 환경

    2. Java API : 클래스와 라이브러리 집합 (예: java.lang, java.util 등)

2. C 언어의 기본 구조

  • 소스코드는 파일명 .c로 작성

  • 절차절 프로그래밍의 대표적인 언어는 함수 중심

1) C언어의 main() 함수는 여러 가지 방법 중 선언할 수 있다.

3. JAVA언어의 기본 구조

  • 소스코드는 클래스명.java로 작성되어 있다.

  • 클래스명은 반드시 대문자로 시작해야 한다.

  • 클래스들 중심으로 되어 있으며, 클래스 내의 메소드 통해 기능을 구현한다.

  • 여러 개의 java 파일 중 하나만 main 메소드를 갖게 된다. (public 클래스, 실행 클래스)

4. C언어와 JAVA언어의 기본 소스코드의 비교

5. C언어와 JAVA 언어의 프로그램 구성 요소

1) C언어

(1) 예약어(reserved word) : 키워드

  • 자료형관련, 기억관련, 제어관련, 기타

  • int, char, static, if~else, for, while, include

(2) 명칭(identifier) : 식별자

  • 변수명, 배열명, 함수명, 매크로명

(3) 상수(constant)

  • 정수상수, 실수상수, 문자상수, 문자열상수

(4) 연산자(operator)

(5) 설명문(comment) : 주석

  • 비실행문

  • 한 줄 주석 : // C언어 공부 방법

  • 여러 줄 주석 : /* 다양한 코드를 살펴보며, 코드에 주석을 적어보기! */

2) JAVA 언어 (1) 예약어(reserved word) : 키워드

  • 자료형관련, 기억관련, 제어관련, 기타

  • int, char, static, if~else, for, while, import

(2) 명칭(identifier) : 식별자

  • 클래스명, 메소드명, 변수명, 배열명, 함수명

  • (관례) 클래스 이름은 대문자로 시작, 메소드나 필드, 변수의 이름은 소문자로 시작

(3) 상수(constant)

  • 논리상수, 정수상수, 실수상수, 문자상수, 문자열상수

(4) 연산자(operator)

(5) 설명문(comment) : 주석

  • 비실행문

  • 한 줄 주석 // JAVA언어 공부 방법

  • 여러 줄 주석 : /* 다양한 코드를 살펴보며, 코드에 주석을 적어보기! */

6. C언어와 기본 문법 구조와 printf() 함수

  • prinf() 함수

    • 기능 : 출력 양식으로 자료(상수)를 출력하는 함수

    • 형식#Include <stdio.h>printf("출력형식", 출력대상1, 출력대상2);

    • 특징

      • #include <stdio.h> 필수

        • 함수 종류 : printf(), scanf(), getchar(), putchar(), gets(), puts(), fgets(), fputs()

  • 출력형식 변환 문자

    • %d : 10진 정수로 변환

    • %f : 부동소수점을 실수로

    • %c : 한 문자로 변환

    • %s : 문자열로 변환

    • %o : 8진 정수

    • %x : 16진 정수

    • %u : 부호 없는 10진 정수

    • %e : 지수

7. JAVA의 System.out.print()와 System.out.println()

  • System.out.println( )은 java.lang 패키지에서 제공하는 표준출력문(메소드)이다.

    • 괄호 사이에 출력하고자 하는 변수나 문자열이 올 수 있다. 원하는 내용이 출력된 후 ‘줄 바꿈’이 자동으로 이루어진다.

    • 반면, System.out.print( )는 출력 직후 자동 줄 바꿈을 하지 않고 같은 줄에 커서가 머물러있게 된다.

  • System.out.println()와 System.out.print()에서 여러 항목을 이어서 출력하고자 할 경우는 별도의 출력형식 지정 없이 항목들의 접속(concatenation)을 의미하는 기호 ‘+’를 사용하면 된다.

print, println, printf

x+y = 30이 아닌, x+y = 1020

| 002 데이터 타입

1. 데이터 타입의 정의

  • 자료형 : 변수가 가질 수 있는 데이터(값)의 유형

  • 프로그램 작성 시, 자료형을 결정하여 변수를 선언

2. 데이터 타입의 분류

1) 기본 데이터 타입

  • 정해진 구조 외에 다른 구조를 가질 수 없는 자료형 (컴파일러가 이미 알고 있음)

  • 종류 : 논리형, 문자형, 정수형, 실수형

2) 구조적 데이터 타입 (= 확장 데이터 타입 = 사용자 정의 데이터 타입)

  • 기본 자료형으로부터 파생하여 만든 자료형 (컴파일러에게 알려줘야 함)

  • 종류 : 배열(같은 자료형 자료 모임), 레코드(다른 자료형 자료 모임), 포인터형, 문자열형

3. 기본 데이터 타입

1) 논리형

  • 참과 거짓 두 개의 상수만 존재한다.

  • C언어의 기본 데이터 타입은 아니다.

  • JAVA : true, false / Python : True, False

2) 문자형

  • 단일 문자의 자료형

  • 작은따옴표로 표현된 상수들

  • 예 : 'a', 'A', '1', ' ', '!' 등

  • 특징 : 'A'

    • C, C++ : char 형 (1byte, 아스키코드)

    • JAVA, Python : char 형 (2byte, 유니코드)

3) 정수형

  • 고정 소수점 타입

  • 부호는 있고, 소수점이 없는 정수 상수

  • 예 : +1, -2, +123, -123 등

4) 실수형

  • 부동 소수점 타입

  • 부호와 소수점이 있는 실수 상수

  • 예시 : +3.14, -3.14, +1.0, -123.0 등

4. 구조적 데이터 타입 (= 확장 데이터 타입 = 사용자 정의 데이터 타입)

: 여러 자료를 하나의 단위로 묶어 취급한다.

1) 배열(Array)

  • 동일한 유형의 값들을 모아 놓은 자료형

  • 순차 구조, 첨자(index)로 배열 원소를 구별

  • 1차원 구조, 2차원 이상의 다차원 구조

2) 레코드(Record) = C언어 : 구조체(struct), 공용체(union)

  • 서로 다른 유형의 값들을 모아 놓은 자료형

  • 이름으로 원소를 구별

3) 포인터형(Pointer)

  • 객체를 참조하기 위해 메모리의 주소를 값으로 하는 자료형

  • 커다란 배열의 원소를 효율적으로 저장하고자 할 때 이용

  • 지원 프로그래밍 언어 : C, C++

4) 문자열형(Character String Type)

  • 문자열(단일 문자들)의 자료형

  • 큰따옴표로 표현된 상수들

  • 기본 데이터 타입이 아니다.

  • JAVA도 기본 자료형이 아니다.

5. 프로그래밍 언어의 기본 데이터 타입(Primitive Type) 및 크기

  • 자료형의 예약어는 모두 소문자

  • C++ 언어의 논리형의 예약어는 bool

  • Python의 long형은 무한 크기 (= 동적 타이핑)

  • C# 언어의 실수형에는 Decimal(16byte)가 존재

String은 기본 데이터 타입이 아니다.

| 003 변수와 상수

1. 상수(constant)의 개념

  • 항상 고정된 값을 갖는 자료(값)로, 변경 불가능하다.

  • 유형 : 정수형, 실수형, 문자형, 문자열형, 논리형

  • 수명 시간 동안 고정된 하나의 값과 이름을 가진 자료

  • 프로그램이 동작하는 동안 값이 바뀌지 않는 공간

2. C 프로그램의 상수

3. 변수 (variable)

  • 프로그램 실행 중 변경할 수 있는 값이 저장되는 기억공간 (= 메모리)

  • 프로그램에서 하나의 값을 저장할 수 있는 기억 장소의 이름

  • 변수의 구성 : 이름, 값, 속성, 참조

  • 변수명 : 언어 별로 변수명을 만드는 규칙에 따라 다르다.

  • 변수의 데이터 타입은 컴파일 시간에 한 번 정해지면, 일반적으로 그대로 유지한다.

  • 변수의 4요소

    • 선언문 : 주소, 이름, 자료형

    • 대입문 : 값

  • 바인딩: 어떤 변수의 명칭과 그 메모리 주소, 데이터형 또는 실제 값을 연결하는 것

    • 바인딩 시간 : 변수들이 갖는 속성이 완전히 결정되는 시간

    • 바인딩의 종류 : 정적 바인딩(번역 시간, 데이터영역/스택영역), 동적 바인딩(실행 시간, 힙영역)

4. 변수의 선언문

1) 변수의 선언문

  • 변수명과 자료형을 결정하여, 기억공간을 할당하는 것

  • 정적형 검사가 가능하다.

  • 형식 : 자료형 변수명;

2) C언어의 변수명 정의 규칙

  • 영문 대소문자, 숫자를 혼합

  • 대소문자 구별

  • 예약어 사용 금지

  • 밑줄(_)을 제외한 모든 특수문자 사용 금지

  • 숫자로 시작 금지

  • C언어는 주로, 스네이크 케이스 팟홀 방식

  • JAVA언어는 주로 카멜 케이스, 파스칼 케이스 방식

5. 변수의 대입문 및 초기화

1) 변수의 대입문

  • 변수(기억공간)에 자료(값)를 대입(할당, 배정, Assign)하는 것

  • 변수의 내용(값)을 변경하는 문장

  • 형식 : L-VALUE = R-VALUE;

  • 예시 : a = 20;

2) 변수의 초기화

  • 변수의 선언문과 대입문을 구별하여 코딩할 수 있지만, 초기화를 통해 변수선언이 이루어짐과 동시에 특정 값을 부여할 수도 있다.

  • 예시 : int kor = 90;

6. 변수와 c언어의 scanf() 함수

  • 콘솔(키보드)을 통해 사용자가 직접 원하는 값을 변수에 대입

  • 기능 : 콘솔화면에서 키보드로부터 자료(상수)를 주어진 입력 형식으로 입력시키는 함수

  • 형식: #include <stdio.h>scanf("입력 형식", &입력대상1, &입력대상2, ...);

  • 입력 형식 변환 문자

    • %d : 10진 정수로 변환

    • %f : 부동소수점을 실수로

    • %c : 한 문자로 변환

    • %s : 문자열로 변환

    • %ld : long 정수

    • %lf : double 실수

    • %o : 8진 정수

    • %x : 16진 정수

목차