Light Blue Pointer
본문 바로가기
Others/자격증 공부

02-01 기본 문법 활용하기

by Greedy 2021. 7. 29.

01 변수

1) 프로그래밍 언어 활용의 개요

프로그램 언어는 컴퓨터 시스템을 동작시키기 위한 프로그램 작성 언어이며, 프로그램은 다소 단순해 보이는 명령어들의 조합으로 구성되고, 이러한 조합들은 비트라고 불리는 2진수의 값으로 작성되거나 변환되어 컴퓨터가 이해할 수 있도록 한다

2) 컴퓨터에 명령을 전달하는 방법

비트로 변환하여 전달된다
전기적 신호를 이용하거나 광신호를 이용하는 방식 등이 있다
어떠한 프로그래밍 언어를 사용하느냐에 따라 비트 변환 없이 프로그램 자체를 0과 1로만 작성할 수 있으나, 어느 정도의 한계가 있다
더욱 복잡한 프로그램을 구현하기 위해 프로그래밍 언어는 점진적으로 발전하게 되었다

3) 컴퓨터 시스템 구조

컴퓨터는 명령에 따라 0과 1의 값들을 정해진 순서대로 실행하며 그 과정에서 처리 및 저장을 수행한다

중앙처리장치 CPU
컴퓨터의 두뇌로서 프로그램을 읽고 해석하여 처리한다
산술논리 연산 장치, 제어 장치, 레지스터로 구성된다
각 부분의 동작을 제어하고 연산을 수행한다
컴퓨터의 중추적인 역할을 담당하고 있다

산술논리 연산 장치 : 컴퓨터에서 수행하는 산술 연산과 논리 연산을 수행하는 장치이다.
제어 장치 : 중앙 처리 장치에서 사용하는 명령어의 처리 과정을 관리하고 제어하는 장치이다.
레지스터 : 중앙 처리 장치에서 사용되는 데이터 정보를 임시로 저장하는 장치이다.

기억장치
컴퓨터에 필요한 정보를 저장하는 장치이다.
중앙 처리 장치가 사용하는 주기억 장치와 영구적 저장을 위한 보조 기억 장치로 구성된다.

입력장치
컴퓨터 시스템 외부에서 정보를 입력받는 장치이다.
마우스, 키보드, 터치패드, 광학 스피커 등이 있다.

출력 장치
컴퓨터 시스템에서 처리된 결과물을 외부로 출력해주는 장치이다.
대표적인 출력 장치로 프린터, 스피커, 모니터 등이 있다.

4) 명령어 사이클 (실행단계)

명령어 사이클 : 중앙 처리 장치가 명령어를 처리하는 4개의 단계.

IF ID EX WB
Fetch(인출) Decode(해석) Execute(실행) Write Back(기록)

 

5) 명령어 형식

컴퓨터가 표현하는 비트는 그 개수만큼 많은 정보를 전달할 수 있다
용도에 따라 필드로 나눌 수 있다
필드의 수 배치 방법 각 필드에 포함 되는 0과 1의 개수를 정리한 것이다
명령어 실행 단계 예수처럼 명령어 형식에 따라 정보의 양이 달라지므로 용도에 따라 적절하게 구성해야 한다

OPcode 연산 코드 Operand1 연산자 Operand2 연산자

6) 프로그램의 구성 요소

프로그램은 크게 자료 구조와 알고리즘으로 구성된다.

자료 구조

컴퓨터에 데이터를 삽입, 삭제, 수정하게 해 주는 논리적인 공간 구조를 의미한다.
자료의 형태에 따라 단순 구조, 선형 구조, 비선형 구조, 파일 구조로 분류할 수 있다.

자료의 형태에 따른 자료 구조 분류

유형 설명
단순 구조 Simple 프로그래밍 언어에서 제공하는 기본 데이터 타입
선형 구조 Linear 자료들 사이의 선후 관계가 일대일인 구조
비선형 구조 Non-linear 자료들 사이의 선후 관계가 계층 또는 그물 형태를 가지는 구조
파일 구조 File 보조 기억 장치에 데이터값이 실제로 기록되는 자료 구조

알고리즘

넒은 의미 : 프로그램을 구성하는 요소 > 좁은 의미 : 어떤 문제에 대한 찾는 해법

알고리즘의 5가지 특성

유형 설명
입력 >= 0 외부로부터 입력되는 자료가 0개 이상이어야 한다
출력 >= 1 출력되는 결과가 1개 이상이어야 한다
명확성 각 명령어의 의미가 명확하여야 한다
유한성 정해진 단계를 지나면 종료되어야 한다
유효성 모든 명령은 실행이 가능한 연산들이어야 한다

알고리즘은 자연어, 순서도, 의사 코드, 프로그래밍 언어를 이용하여 표현할 수 있다.
순서도(흐름도)는 알고리즘을 알기 쉽게 기호와 그림으로 나타낸 것을 말한다.

순서도 기호

 

7) 변수

변수명 작성 규칙

사용 문자는 숫자와 영문자
첫 자에는 영문자나 _ (숫자 ㄴ)
변수명의 최대 길이는 10자자예약어는 변수명으로 사용할 수 없다
공백 안됨
변수형을 나타내는 특문 !,#,%,$,_를 제외한 다른 특문 안됨

*식별자 : 프로그램의 구성 요소를 구별하기 위한 기준으로 변수명이 식별자에 속한다

변수의 종류

기억할 데이터의 종류에 따른 분류 : 정수값을 저장하는 정수형 변수와 실수값을 저장하는 실수형 변수가 있고, 문자 상수만을 기억하는 문자 변수가 있다.
기억 장소의 형태에 따른 분류 : 단순 변수와 첨자 변수가 있다.
단순 변수 : 한 개의 변수에 한 개의 데이터만 기억시킬 수 있는 일반적인 변수이다.
첨자 변수 : 한 개의 변수에 여러 개의 데이터를 기억시킬수 있는 변수로, 배열에 사용된다.

8) 바인딩

변수와 변수에 관련된 속성을 연결하는 과정으로 정적 바인딩과 동적 바인딩으로 구분된다.
정적 바인딩 : 프로그램 실행 시간 전에 속성을 연결하는 방식이다.
동적 바인딩 : 프로그램 실행 시간에 속성을 연결하는 방식이다.

세분화된 바인딩 시간

바인딩 시간 설명
언어 정의 시간 프로그래밍 언어를 정의할 때 이루어지는 바인딩
c언어의 int타입이 정수값을 가진다는 의미를 바인딩
'+'기호에 덧셈 연산처리라는 의미를 바인딩
언어 구현 시간 언어에 대한 번역기를 구현할 때 이루어지는 바인딩
c언어의 int 타입에 가능한 값의 범위를 바인딩
정수에 컴퓨터 내에서의 표기법을 바인딩
번역 시간 원시 프로그램을 번역할 때 이루어지는 바인딩
int x; //c선언문에서 변수 x에 타입 int를 바인딩
링크 시간 프로그램을 라이브러리와 링크할 때 이루어지는 바인딩
라이브러리 부프로그램 호출에 부프로그램 코드를 바인딩
적재 시간 프로그램의 실행을 위해 메모리로 적재할 때 이루어지는 바인딩
전역변수에 메모리 주소를 바인딩
실행 시간 프로그램을 실행할 때 이루어지는 바인딩
x=10; //C배정문에서 변수 x에 10을 바인딩

9) 선언

변수에 이름, 데이터 타입 등의 속성을 부여하는 작업으로 명시적 선언과 묵시적 선언으로 구분된다.

명시적 선언 : 선언문을 이용하여 변수 이름을 나열하고 속성을 부여하는 방식이다.
묵시적 선언 : 별도의 선언문 없이 디폴트 규칙에 의해 속성이 부여되는 방식이다. (FORTRAN, Perl)

FORTRAN : I,J,K,L,M,N으로 시작되면 정수 타입이고 그렇지 않으면 실수 타입으로 간주한다.
Perl : $로 시작되면 스칼라 변수, @로 시작되면 배열, %로 시작되면 해시 구조체
선언 : 부분적인 속성을 바인딩 하는 것
정의 : 모든 잠재적인 속성을 바인딩 하는 것

10) 영역

이름이 사용되는 범위를 의미하며, 정적 영역과 동적 영역으로 구분된다.
정적 영역 : 변수를 찾을 때 구조에 기반하는 방식이다. 대부분의 언어에서 사용됨.

동적 영역 : 변수를 찾을 때 구조보다는 순서에 기반하는 방식이다. APL,SNOBOL4,LISP초기 버전에서 적용된 방식으로 이름에 해당하는 변수를 찾을 때 외향적인 구조에 기반하지 않고, 부프로그램들의 호출 순서에 기반한다. 먼저 자신을 포함하고 있는 블록에서 선언되었는지를 보고, 아니면 자신을 포함하는 블록을 호출한 문장을 포함하고 있는 블록에서 선언된 것인지를 조사한다. 이러한 과정은 해당 변수를 찾을때까지 계속된다. 동적 영역을 적용하는 언어의 변수에 대한 영역은 실행 시간에 결정된다.

11) 할당

변수에 메모리 공간을 바인딩하는 작업을 의미한다.
변수에 메모리 공간을 바인딩하는 과정을 기억 장소 할당이라 한다.
변수로부터 바인딩이 해제된 메모리 공간을 가용 공간으로 돌려주는 과정을 회수라 한다.
변수가 특정 메모리 주소에 바인딩되어 있는 시간을 수명이라 하는데, 변수의 수명은 변수가 메모리 공간에 바인딩될 떄 시작되어 회수될 때까지를 의미한다.
변수의 할당은 수명에 따라 정적 할당, 스택 기반 할당, 동적 할당으로 분류된다.

정적 영역
스택
 

정적 할당 Static Allocation

변수에 메모리 공간이 정적으로 할당됨
한번 할당되면 프로그램 종료시까지 할당 상태가 그대로 유지됨
전역 변수가 주로 정적 할당
지역변수도 static을 이용해서 정적으로 할당할 수 있음

스택 기반 할당 Stack Based Allocation

자동 할당
변수의 타입은 정적으로 할당되지만 메모리 공간은 실행 시간 중에 할당됨
지역 변수가 주로 스택 기반 할당
함수가 끝나면 스택에서 회수됨

동적 할당 Dynamic Allocation

명시적인 명령어에 의해 실행시간에 할당된다.
동적으로 할당된 영역은 포인터나 참조 변수를 통해 참조할 수 있다.
c에서는 동적 할당을 위한 함수로 malloc(Memory ALLOCation)을 제공하고 있다.
동적으로 할당된 영역을 회수하는 함수로 free를 제공하고 있다.
이들 함수를 이용하기 위해서는 stdlib.h헤더 파일을 포함해야 한다.
동적 할당은 실행시간중에 삽입, 삭제가 자주 발생하는 연결 리스트나 트리에서 흔히 사용된다.
PASCAL과 Ada등에서도 동적 할당을 제공한다.

12) 데이터 타입

변수가 가질 수 있는 속성값의 길이 및 성질을 의미한다.

데이터 타입

타입 메모리 크기 범위 데이터
Char
Unsigned Char
1byte
1byte
-127 ~ 127
0~255
문자
int
Unsigned int
4byte
4byte
  정수
Short
Unsigned short
2byte
2byte
  정수
Long
Unsigned long
4byte
4byte
  정수
Float 4byte   실수
Double 8byte   실수
Bool 1byte   참, 거짓

 

13) 연산자

데이터 처리를 위해 연산을 표현하는 기호로 다음과 같은 연산자를 사용한다.

c언어 연산자 리스트

기능별 분류 연산자 결합순서 우선순위
일차식 ()[]->. -> 1
단항 연산자 ! ~ ++ -- - + (형명) * & sizeof <- 2
승제 연산자 * / % -> 3
가감 연산자 + - <- 4
시프트 연산자      
비교 연산자      
등가 연산자      
비트 연산자      
       
       
논리 연산자      
       
조건 연산자      
대입 연산자 = += -= *= /= %= >>= <<= &= ^= !=    
콤마 연산자 .    


14) 명령문

프로그램을 구성하는 문장으로 지시 사항을 처리하는 단위를 의미하며, 아래와 같은 명령어 들이 있다.
그러나 프로그래밍 언어에 따라 사용되는 형식은 조금씩 다르다

조건문

if 

case switch

 

반복문

while

for

do

 

break 

continue

 

03 사용자 정의 자료형 활용

1) 사용자 정의 자료형의 개요

열거형

괄호 안에 연속적인 값이 들어가는 자료형

특정 값을 넣어주지 않으면 1씩 늘어나기 때문에 상수 배열이라고도 부름

 

C++을 이용한 열거체 구현 방법 예시

enum

{

    상수 멤버 1

    상수 멤버 2

    상수 멤버 3

}

 

구조체

구조체는 괄호 안에 멤버 변수를 사용하는 자료형

내부에 멤버 변수 자료형을 마음대로 선언할 수 있음

멤버 함수의 작성도 가능

 

C++을 이용한 구조체 구현 방법 예시

struct

{

    자료형 변수명 1;

    자료형 변수명 2;

    자료형 변수명 3;

    반환자료형 함수명()

        {

        };

}

 

공용체

공용체는 구조체와 거의 유사하지만 범주가 조금 더 큼

열거체나 구조체와 달리 공용체명을 작성하여야 함

구조체를 멤버로 사용할 수 있음

 

C++을 이용한 공용체 구현 방법 예시

union 공용체명

{

    자료형 변수명 1;

    자료형 변수명 2;

    자료형 변수명 3;

    struct

        {

        };

};

 

2) 추상화

추상화는 복잡한 문제의 본질을 이해하기 위해 세부 사항은 배제하고 중요한 부분을 중심으로 간략화하는 기법

 

추상화의 유형

기능 추상화 입력 자료를 출력 자료로 변환하는 과정을 추상화
자료 추상화 자료와 자료에 적용할 수 있는 오퍼레이션을 함께 정의
제어 추상화  외부 이벤트에 대한 반응을 추상화하는 방법

 

3) 상속화 구체화

상속 : 상위 수준 그룹의 모든 특성을 하위 수준 그룹이 이어받아 재사용 또는 확장하는 특성을 의미

구체화 : 하위수준 그룹이 상위수준 그룹의 추상적인 부분을 구체화시키는 것을 의미 

단일 상속 : 상위 수준의 그룹이 하나만 존재

다중 상속 : 상위 수준의 그룹이 여러개 존재

 

4) 사용자 정의 자료형 활용 수행하기

중복되는 변수와 연산, 명령문에 대하여 추상화 개념을 적용

변수와 연산자, 명령문 간의 연관 관계를 식별하여 상속과 구체화의 개념을 적용

사용자 정의 자료형으로 정의