2장 프로그래밍 언어 활용
Section 127 변수
1. 변수의 개요
- 변수(Variable)은 컴퓨터가 명령을 처리하는 도중 발생하는 값을 젖아하기 위한 공간으로, 변할 수 있는 값을 의미한다.
- 변수는 저장하는 값에 따라 정수형, 실수형, 문자형, 포인터형 등으로 구분한다.
2. 변수명 작성 규칙
- 영문자, 숫자, _(under bar)를 사용할 수 있다.
- 첫 글자는 영문자나 _(unber bar)로 시작해야 하며, 숫자는 올 수 없다.
- 글자 수에 제한이 없다.
- 공백이나 *, +, -, / 등의 특수문자를 사용할 수 없다.
- 대 소문자를 구분한다.
- 예약어를 변수명으로 사용할 수 없다.
- 변수 선언 시 문장 끝에 반드시 세미콜론(;)을 붙여야 한다.
※ 예약어
- 정해진 기능을 수행하도록 이미 용도가 정해져 있는 단어로, 변수 이름이나 다른 목적으로 사용할 수 없다.
C 언어의 예약어 예시
Do, for, while(반복문)
Case, default, else, if, swith(선택문)
Break, continue, goto, return(분기문)
Char, double, enum, float, int, long, short, signed, struct, typedef, union, unsigned, void (자료형)
Auto, extern, register, static (기억 클래스)
Const, sizeof, volatile (기타)
※ 변수를 상수로 만들어 사용하기
- 변수는 실행하는 도중 발생한 값을 저장하기 위한 공간으로, 변수의 값은 변경될 수 있다. 하지만 변수에 저장된 값이 프로그램 종료까지 변경되지 않도록 상수로 만들어 사용할 수 있는데, 이런 경우 C언어에서는 const라는 예약어를 사용한다.
- 변수처럼 상수에 이름을 붙여 기호화하여 사용한다고 하여 심볼릭(Symbolic) 상수라고도 한다.
3. 기억 클래스
- 변수 선언 시 메모리 내에 변수의 값을 저장하기 위한 기억영역이 할당되는데, 할당되는 기억영역에 따라 사용 범위에 제한이 있다. 기억영역을 결정하는 작업을 기억 클래스(Storage Class)라 한다.
- C 언어에서는 다음과 같이 5가지 종류의 기억 클래스를 제공한다.
자동 변수(Automatic Variable)
- 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수이다.
- 함수나 블록이 실행되느 동안에만 존재하며 이를 벗어나면 자동으로 소멸된다.
- 초기화하지 않으면 쓰레기값(Garbage Value)이 저장된다.
외부 변수(External Variable)
- 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조(reference)하기 위한 변수이다.
- 외부 변수는 함수 밖에서 선언한다.
- 함수가 종료된 뒤에도 값이 소멸되지 않는다.
- 초기화하지 않으면 자동으로 0으로 초기화된다.
- 다른 파일에서 선언된 변수를 참조할 경우 초기화 할 수 없다.
정적 변수(Static Variable)
- 정적 변수는 함수나 블록 내에서 선언하는 내부 정적 변수와 함수 외부에서 선언하는 외부 정적 변수가 있다.
- 내부 정적 변수는 선언한 함수나 블록 내에서만 사용할 수 있고, 외부 정적 변수는 모든 함수에서 사용할 수 있다.
- 두 변수 모두 함수나 블록이 종료된 뒤에도 값이 소멸되지 않는다.
- 초기화는 변수 선언 시 한 번만 할 수 있으며, 초기화를 생략하면 자동으로 0으로 초기화 된다.
레지스터 변수(Register Variable)
- 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수이다.
- 자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용한다.
- 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸된다.
- 레지스터의 사용 개수는 한정되어 있어 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당된다.
- CPU에 저장되어 메모리 주소를 가질 수 없기 때문에 변수의 주소를 구하는 주소 연산자(&)를 사용할 수 없다.
4. 변수의 선언
- 변수는 일반적으로 다음과 같읕 형식으로 선언
자료형 변수명 = 값;
자료형 : 변수에 저장될 자료의 형식을 지정한다.
변수명 : 사용자가 원하는 이름을 임의로 지정한다. 단 변수명 작성 규칙에 맞게 지정해야 한다.
값 : 변수를 선언하면서 초기화할 값을 지정한다. 단 값은 지정하지 않아도 된다.
Section 128 연산자
산술 연산자는 가, 감, 승, 제 등의 산술 계산에 사용되는 연산자를 말한다.
- 산술 연산자에는 일반 산술식과 달리 한 변수의 값을 증가하거나 감소시키는 증감 연산자가 있다.
+ : 덧셈
- : 뺄셈
* : 곱셈
/ : 나눗셈
% : 나머지
++ : 증가 연산자 (전치 : 변수 앞에 증감 연산자가 오는 형태로, 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용한다.)
-- : 감소 연산자 (후치 : 변수 뒤에 증감 연산자가 오는 형태로, 먼저 변수를 연산에 사용한 후 변수의 값을 증감시킨다.)
2. 관계 연산자
- 두 수의 관계를 비교하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자이다.
- 거짓은 0, 참은 1로 사용되지만 0외의 모든 숫자도 참으로 간주된다.
== : 같다
!= : 같지않다
> : 크다
>= : 크거나 같다
< : 작다
<= : 작거나 같다
3. 비트 연산자
- 비트별(0, 1)로 연산하여 결과를 얻는 연산자이다.
& : and (모든 비트가 1일 때만 1)
^ : xor (모든 비트가 같으면 0, 하나라도 다르면 1)
| : or (모든 비트 중 한 비트라도 1이면 1)
~ : not (각 비트의 부정, 0이면 1, 1이면 0)
<< : 왼쪽 시프트(비트를 왼쪽으로 이동)
>> : 오른쪽 시프트(비트를 오른쪽으로 이동)
4. 논리 연산자
- 두개의 논리 값을 연산하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자이다.
거짓은 0, 참은 1이다.
! : not (부정)
&& : and (모두 참이면 참)
|| : or (하나라도 참이면 참)
5. 대입 연산자
- 연산 후 결과를 대입하는 연산식을 간략하게 입력 할 수 있도록 대입 연산자를 제공한다.
- 산술, 관계, 비트, 논리 연산자에 모두 적용할 수 있다.
+=
-=
*=
/=
%=
<<=
>>=
6. 조건 연산자
- 조건에 따라 서로 다른 수식을 수행한다.
형식
조건 ? 수식1 : 수식2; (조건의 수식이 참이면 수식1을, 거짓이면 수식2를 실행한다)
7. 기타 연산자
sizeof : 자료형의 크기를 표시한다.
,(콤마) :
- 콤마로 구분하여 한 줄에 두 개 이상의 수식을 작성하거나 변수를 정의한다.
- 왼쪽에 오른쪽에서 순서대로 수행되며, 순서 연산자로 부르기도 한다.
(자료형):
- 사용자가 자료형을 다른 자료형으로 변환할 때 사용하는 것으로, cast(캐스트) 연산자라고 부른다.
- 변환할 자료형을 괄호 안에 넣어서 변활할 값이나 변수명 앞에 놓는다.
8. 연산자 우선순위
- 한 개의 수식에 여러 개의 연산자가 사용되면 기본적으로 아래 표의 순서대로 처리된다.
- 아래 표의 한 줄에 가로로 나열된 연산자는 우선수위가 같기 떄문에 결합규칙에 따라 ←는 오른쪽에 있는 연산자부터, →는 왼쪽에 있는 연산자부터 차례로 계산된다.
대분류 |
중분류 |
연산자 |
결합규칙 |
우선 순위 |
단항 연산자 |
단항 연산자 |
! ~ ++ -- sizeof |
← |
높음
낮음 |
이항 연산자 |
산술 연산자 |
* / % |
→ |
|
+ - |
||||
시프트 연산자 |
<< >> |
|||
관계 연산자 |
< <= >= > |
|||
비트 연산자 |
== != |
|||
논리 연산자 |
&& || |
|||
삼항 연산자 |
조건 연산자 |
? : |
→ |
|
대입 연산자 |
대입 연산자 |
= += -= *= /= %= <<= >>= 등 |
← |
|
순서 연산자 |
순서 연산자 |
, |
→ |
Section 129 제어문
1. 제어문의 개념
- 컴퓨터 프로그램은 명령어가 서술된 순서에 따라 위에 아래로 실행되는데, 조건을 지정해서 진행 순서를 변경할 수 있다. 이렇게 프로그램의 순서를 변경할 떄 사용하는 명령문을 제어문이라고 한다.
2. 단순 if문
- if문은 조건에 따라서 실행할 문장을 달리하는 제어문이며, 단순 if문은 조건이 한 개일 때 사용하는 제어문이다.
- 조건이 참일 때만 실행할 문장을 지정할 수도 있고, 참과 거짓에 대해 각각 다른 실행문을 지정할 수도 있다.
- 형식1 : 조건이 참일 때만 실행한다.
- 조건이 참일 때 실행할 문장이 하나인 경우
If(조건)
실행할 문장;
- 조건이 참일 때 실행할 문장이 두 문장 이상인 경우
If(조건) {
실행할 문장1;
실행할 문장2;
.
.
}
3. 다중 if문
- 조건이 여러 개 일 때 사용하는 제어문이다.
If(조건1)
실행할 문장1;
Else if(조건2)
실행할 문장2;
Else if(조건3)
실행할 문장3;
Else
실행할 문장4;
4. switch문은 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리할 수 있는 제어문이다.
Switch(수식)
{
Case 레이블1:
실행할 문장1;
Break;
Case 레이블2;
실행할 문장2;
Break;
Default;
실행할 문장3;
}
- case 문의 레이블에는 한 개의 상수만 지정할 수 있으며, int char, enum형의 상수만 가능하다.
- case문의 레이블에는 변수를 지정할 수 없다.
- break문은 생략이 가능하지만 break문이 생략되면 수식과 레이블이 일치할 때 실행할 문장부터 break문 또는 switch문이 종료될 떄까지 모든 문장이 실행된다.
5. goto문
- goto문은 프로그램 실행 중 현재 위치에서 원하는 다른 문장으로 건너뛰어 수행을 계속하기 위해 사용하는 제어문이다.
- goto문은 원하는 문장으로 쉽게 이동할 수 있지만 많이 사용하면 프로그램으 ㅣ이해와 유지보수가 어려워져 거의 사용하지 않는다.
형식
Goto 레이블;
레이블:
실행할 문장
Section 130 반복문
1. 반복문의 개요
- 제어문의 한 종류로 일정한 횟수를 반복하는 명령문을 말한다. 보통 변수의 값을 일정하게 증가시키면서 정해진 수가 될 때까지 명령이나 명령 그룹을 반복 수행한다.
2. for문
- 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복하는 제어문이다.
- for문은 초기값을 정한 다음 최종값에 대한 조건이 참이면 실행할 문장을 실행한 후 초기값을 증가값 만큼 증가시키면서 최종값에 대한 조건이 참인 동안 실행할 문장을 반복 수행한다.
형식
For(식1(초기값); 식2(최종값); 식3(증가값)
실행할 문장;
- 초기값, 최종값, 증가값 중 하나 이상을 생략할 수 있고, 각각의 요소에 여러 개의 수식을 지정할 수도 있다.
- for(; ;)와 같이 조건에 참여하는 수식을 모두 생략하면 for문은 무한 반복한다.
- for문은 처음부터 최종값에 대한 조건식을 만족하지 못하면 한 번도 수행하지 않는다.
- 문자도 for문을 수행할 수 있다.
3. while문
- 조건이 참인 동안 실행할 문장을 반복 수행하는 제어문이다.
- while문은 조건이 참인동안 실행할 문장을 반복 수행하다가 조건이 거짓이면 while문을 끝낸 후 다음 코드를 실행한다.
- while문은 조건이 처음부터 거짓이면 한 번도 수행하지 않는다.
형식
While(조건)
실행할 문장
4. do~while문
- do while문은 조건이 참이 동안 정해진 문장을 반복 수행하다가 조건이 거짓이면 반복문을 벗어나는 while문과 같은 동작을 하는데, 다른 점은 do~while문은 실행할 문장을 무조건 한 번 실행한 다음 조건을 판단하여 탈출 여부를 결정한다는 것이다.
형식
Do
실행할 문장;
While(조건);
5. break, continue
- switch문이나 반복문의 실행을 제어하기 위해 사용되는 예약어디ㅏ.
break
- switch문이나 반복문 안에서 break가 나오면 블록을 벗어난다.
continue
- continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮긴다.
- 반복문에서만 사용된다.
Section 131 배열과 문자열
1. 배열의 개념
- 배열은 동일한 데이터 유형을 여러 개 사용해야 할 경우 이를 손쉽게 처리하기 위해 여러 개의 변수들을 조합해서 하나의 이름으로 정의해 사용하는 것을 말한다.
- 배열은 하나의 이름으로 여러 기억장소를 가리키기 때문에 배열에서 개별적인 요소들의 위치는 첨자를 이용하여 지정한다.
- 배열은 변수명 뒤에 대괄호 []를 붙이고 그 안에 사용할 개수를 지정한다.
- C언어에서 배열의 위치는 0부터 시작된다.
- 배열은 행 우선으로 데이터가 기억장소에 할당된다.
- C 언어에서 배열 위치를 나타내는 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같다.
2. 1차원 배열
- 1차원 배열은 변수들을 일직선상의 개념으로 조합한 배열이다.
형식
자료형 변수명[개수];
- 자료형: 배열에 저장할 자료의 형을 지정한다.
- 변수명 : 사용할 배열의 이름으로 사용자가 임의로 지정한다.
- 개수 : 배열의 크기를 지정하는 것으로 생략할 수 있다.
3. 2차원 배열
- 2차원 배열은 변수들을 평면, 즉 행과 열로 조합한 배열이다.
형식
- 자료형 변수명[행개수][열개수]
4. 배열의 초기화
- 배열 선언 시 초기값을 지정할 수 있다.
- 배열을 선언할 때 배열의 크기를 생략하는 경우에는 반드시 초기값을 지정해야 초기값을 지정한 개수 만큼의 배열이 선언된다.
5. 배열 형태의 문자열 변수
- C언어에서는 큰따옴표(“”)로 묶인 글자는 글자 수에 관계없이 문자열로 처리된다.
- C언어에는 문자열을 저장하는 자료형이 없기 때문에 배열, 또는 포인터를 이용하여 처리한다.
형식
Char 배열이름[크기] = “문자열”
- 배열에 문자열을 저장하면 문자열의 끝을 알리기 위한 널 문자(‘\0’)가 문자열 끝에 자동으로 삽입된다.
- 배열에 문자열을 저장할 때는 배열 선언 시 초기값으로 지정해야 하며, 이미 선언된 배열에는 문자열을 저장할 수 없다.
- 문자열 끝에 자동으로 널 문자가 삽입되므로, 널 문자까지 고려하여 배열 크기를 지정해야 한다.
Section 132 포인터
1. 포인터와 포인터 변수
- 포인터는 변수의 주소를 말하며, C언어에서는 주소를 제어할 수 있는 기능을 제공한다.
- C언어에서 변수의 주소를 저장할 때 사용하는 변수를 포인터 변수라 한다.
- 포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 간접 연산자 *를 붙인다.
- 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 번지 연산자 &를 붙인다.
- 실행문에서 포인터 변수에 간접 연산자 *를 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말한다.
- 포인터 변수는 필요에 의해 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수이다.
포인터 변수의 용도
- 연결된 자료 구조를 구성하기 위해 사용한다.
- 동적으로 할당된 자료 구조를 지정하기 위해 사용한다.
- 배열을 인수로 전달하기 위해 사용한다.
- 문자열을 표현하기 위해 사용한다.
- 커다란 배열에서 요소를 효율적으로 저장하기 위해 사용한다.
- 메모리에 직접 접근하기 위해 사용한다.
2. 포인터와 배열
- 배열을 포인터 변수에 저장한 후 포인터를 이용해 배열의 요소에 접근할 수 있다.
- 배열 위치를 나타내는 첨자를 생략하고 배열의 대표명만 지정하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같다.
- 배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자를 사용한다.
- 배열의 요소가 포인터인 포인터형 배열을 선언할 수 있다.
Section 138 데이터 입∙출력
1. C 언어의 표준 입출력 함수의 개요
- 표준 입출력 함수란 키보드로 입력받아 화면으로 출력할 떄 사용하는 함수로, 대표적으로 scanf(), getchar(), gets(), printf(), putchar(), puts() 등이 있다.
2. scanf() 함수
- C언어의 표준 입력 함수로, 키보드로 입력받아 변수에 저장하는 함수이다.
형식
Scanf(서식 문자열, 변수의 주소)
서식문자열 : 입력받을 데이터의 자료형을 지정한다.
변수의 주소 : 데이터를 입력받을 변수를 적는다. 변수의 주소로 입력받아야 하기 때문에 변수에 주소연산자 &를 붙인다.
특징
- 입력받을 데이터의 자료형, 자릿수 등을 지정할 수 있다.
- 한 번에 여러 개의 데이터를 입력 받을 수 있다.
- 서식 문자열과 변수의 자료형은 일치해야 한다.
서식 문자열
- 서식 문자열은 printf() 함수로 출력할 때도 동일하게 적용된다.
%d : 정수형 10진수를 입∙출력하기 위해 지정한다.
%u : 부호없는 정수형 10진수를 입∙출력하기 위해 지정한다.
%o : 정수형 8진수를 입∙출력하기 위해 지정한다.
%x : 정수형 16진수를 입∙출력하기 위해 지정한다.
%c : 문자를 입∙출력하기 위해 지정한다.
%s : 문자열을 입∙출력하기 위해 지정한다.
%f : 소수점을 포함하는 실수를 입∙출력 하기 위해 지정한다.
%e : 지수형 실수를 입∙출력하기 위해 지정한다.
%ld : long형 10진수를 입∙출력하기 위해 지정한다.
%lo : long형 8진수를 입∙출력하기 위해 지정한다.
%lx : long형 16진수를 입∙출력하기 위해 지정한다.
%p : 주소를 16진수로 입∙출력하기 위해 지정한다.
3. printf() 함수
- C 언어의 표준 출력 함수로, 인수로 주어진 값을 화면에 출력하는 함수이다.
형식
Printf(서식 문자열, 변수)
서식 문자열: 변수의 자료형에 맞는 서식문자열을 입력한다.
변수 : 서식 문자열의 순서에 맞게 출력할 변수를 적는다. Scanf()와 달리 주소 연산자&를 붙이지 않는다.
주요 제어문자
- 입력 혹은 출력 내용을 제어하는 문자이다.
\n : new line (커서를 다음 줄 앞으로 이동한다.)
\b : backspace(커서를 왼쪽으로 한 칸 이동한다.)
\t : tab(커서를 일정 간격 띄운다.)
\r : carriage return(커서를 현재 줄의 처음으로 이동한다.)
\0 : null (널 문자를 출력한다.)
\’ : single quote(작은따옴표를 출력한다.)
\” : double quote(큰따옴표를 출력한다.)
\a : alert(스피커로 벨 소리를 출력한다.)
\\ : backslash : 역 슬래시를 출력한다.
\f : form feed : 한 페이지를 넘긴다.
4. 기타 표준 입∙출력 함수
입력
Getchar() : 키보드로 한 문자를 입력받아 변수에 저장하는 함수
Gets() : 키보드로 문자열을 입력받아 변수에 저장하는 함수로, enter를 누르기 전까지를 하나의 문자열로 인식하여 저장함
출력
Putchar() : 인수로 주어진 한 문자를 화면에 출력하는 함수
Puts() : 인수로 주어진 문자열을 화면에 출력한 후 커서를 자동을 hekdma 줄 앞으로 이동하는 함수
'정보처리기사' 카테고리의 다른 글
2020년 정보처리기사 1·2회 필기 가답안 (0) | 2020.06.08 |
---|---|
정보처리기사 4과목 데이터베이스 구축 3장 응용 SW 기초 기술 활용 요점 정리 (0) | 2020.04.16 |
정보처리기사 3과목 데이터베이스 구축 2장 물리 데이터베이스 설계 요점 정리 (0) | 2020.04.16 |
정보처리기사 3과목 데이터베이스 구축 1장 논리 데이터베이스 설계 요점 정리 (0) | 2020.04.16 |
정보처리기사 2과목 소프트웨어 개발 5장 인터페이스 구현 요점 정리 (0) | 2020.04.16 |