[정보처리기사 필기] 4-2. 프로그래밍 언어 활용
2020 시나공 정보처리기사 필기책 참고
주의! 중요도가 낮은 항목(C)은 일부 제외
1. 데이터 타입 – B
- 변수에 저장될 데이터의 형식
- 데이터 타입의 유형
- Integer : 정수
- Floating Poing : 소수점 이하가 있는 실수
- Character : 한 문자. ‘ ‘안에 표시
- String : 문자열. “ “안에 표시
- Boolean : True or False. 기본값은 False
- Array : 같은 타입의 데이터 집합. { }안에 ,로 구분
- C/C++의 데이터 타입 크기 및 기억 범위
종류 | 데이터 타입 | 크기 | 기억 범위 |
---|---|---|---|
문자 | char | 1Byte | -128 ~ 127 |
부호없는 문자 | unsigned char | 1Byte | 0 ~ 2^8 - 1 |
정수 | short | 2Byte | -2^15 ~ 2^15 - 1 |
” | int | 4Byte | -2^31 ~ 2^31 - 1 |
” | long | 4Byte | -2^31 ~ 2^31 - 1 |
” | long long | 8Byte | -2^63 ~ 2^63 - 1 |
부호없는 정수 | unsigned short | 2Byte | 0 ~ 2^16 - 1 |
” | unsigned int | 4Byte | 0 ~ 2^32 - 1 |
” | unsigned long | 4Byte | 0 ~ 2^64 - 1 |
실수 | float | 4Byte | 1.2 * 10^-38 ~ 3.4 * 10^38 |
” | double | 8Byte | 2.2 * 10^-308 ~ 1.8 * 10^308 |
” | long double | 8Byte | 2.2 * 10^-308 ~ 1.8 * 10^308 |
- Java의 데이터 타입 크기 및 기억 범위
종류 | 데이터 타입 | 크기 | 기억 범위 |
---|---|---|---|
문자 | char | 2Byte | 0 ~ 2^16 - 1 |
정수 | byte | 1Byte | -2^7 ~ 2^7 - 1 |
” | short | 2Byte | -2^15 ~ 2^15 - 1 |
” | int | 4Byte | -2^31 ~ 2~31 - 1 |
” | long | 8Byte | -2^63 ~ 2^63 - 1 |
실수 | float | 4Byte | 1.4 * 10^-45 ~ 3.4 * 10^38 |
” | double | 8Byte | 4.9 * 10^-324 ~ 1.8 * 10^308 |
논리 | boolean | 1Byte | true or false |
2. 변수 – A
- 변수명 작성 규칙
- 영문자, 숫자, 언더바 사용 가능
- 첫 글자는 숫자 올 수 없음
- 글자 수 제한 없음
- 공백이나 특수문자 사용 불가
- 대소문자 구분
- 예약어를 변수명으로 사용할 수 없음
- 변수 선언 시 문장 끝에 반드시 ; 붙어야 함
- 기억 클래스
- 기억영역을 결정하는 작업
종류 | 기억영역 | 예약어 | 생존기간 | 사용 범위 |
---|---|---|---|---|
자동 변수 | 메모리(스택) | auto | 일시적 | 지역적 |
레지스터 변수 | 레지스터 | register | ” | ” |
정적 변수(내부) | 메모리(데이터) | static | 영구적 | ” |
정적 변수(외부) | ” | ” | ” | 전역적 |
외부 변수 | ” | extern | ” | ” |
- 자동 변수
- 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
- 함수나 블록을 벗어나면 자동으로 소멸
- 초기화하지 않으면 쓰레기값이 저장됨
- 외부 변수
- 선언된 변수나 함수를 참조하기 위한 변수
- 함수 밖에서 선언
- 함수가 종료된 후에도 값이 소멸되지 않음
- 초기화되지 않으면 자동으로 0으로 초기화
- 다른 파일에서 선언된 변수를 참조할 경우 초기화 할 수 없음
- 정적 변수
- 함수나 블록 내에서 선언하는 내부 정적 변수, 함수 외부에서 선언하는 외부 정적 변수
- 내부 정적 변수는 함수나 블록 내에서만 사용, 외부 정적 변수는 모든 함수에서 사용
- 함수나 블록이 종료된 뒤에도 값이 소멸되지 않음
- 초기화는 변수 선언 시 한 번만 가능. 초기화를 생략하면 자동으로 0으로 초기화
- 레지스터 변수
- 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수
- 자주 사용하는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용
- 함수나 블록을 벗어나면 자동으로 소멸
- 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당
- 변수의 주소를 구하는 주소 연산자(&)를 사용할 수 없음
- 변수의 선언
- 자료형 변수명 = 값;
3. 연산자 – A
- 산술 연산자
- 산술 계산에 사용되는 연산자
- +, -, *, /, %, ++, –
- ++, –
- 전치 : 먼저 변수의 값을 증감시킨 후 변수를 연산에 사용
- 후치 : 변수를 연산에 사용한 후 변수의 값을 증감
- 관계 연산자
- 참, 거짓을 결과로 얻는 연산자
- ==, !=, >, >=, <, <=
- 비트 연산자
- 비트별(0, 1)로 연산하여 결과를 얻는 연산자
-
&, ^, , ~, «, »
- 논리 연산자
- 참, 거짓을 결과로 얻는 연산자
-
&&, , !
- 대입 연산자
- 연산식을 간략하게 입력할 수 있음
- 산술, 관계, 비트, 논리 연산자에 모두 적용 가능
- +=, -=, *=, /=, %=, «=, »=
- 조건 연산자
- 조건에 따라 서로 다른 수식을 수행
- 조건 ? 수식1 : 수식2 : 조건의 수식이 참이면 수식1, 거짓이면 수식2 실행
- 기타 연산자
- sizeof : 자료형의 크기를 표시
- ,(콤마) : 한 줄에 두 개 이상의 수식을 작성하거나 변수를 정의. 순서 연산자
- (자료형) : 형 변환을 위해 사용. cast 연산자
- 연산자 우선순위
대분류 | 중분류 | 연산자 | 결합규칙 | 우선 순위 |
---|---|---|---|---|
단항 연산자 | 단항 연산자 | ! ~ ++ – sizeof | ← | 1 |
이항 연산자 | 산술 연산자 | * / % | → | 2 |
” | ” | + - | ” | 3 |
” | 시프트 연산자 | « » | ” | 4 |
” | 관계 연산자 | < <= >= > | ” | 5 |
” | ” | == != | ” | 6 |
” | 비트 연산자 | & | ” | 7 |
” | ” | ^ | ” | ” |
” | ” | 비트 or | ” | ” |
” | 논리 연산자 | && | ” | 8 |
” | ” | 논리 or | ” | ” |
삼항 연산자 | 조건 연산자 | ? : | → | 9 |
대입 연산자 | 대입 연산자 | = += -= *= /= %= «= »= 등 | ← | 10 |
순서 연산자 | 순서 연산자 | , | → | 11 |
4. 제어문 – A
- 단순 if 문
- 조건이 한 개 일 때 사용
// 조건이 참일 때만 실행
if (조건)
실행할 문장1;
실행할 문장2;
// 조건이 참일 떄와 거짓 때 실행할 문장이 다름
if (조건)
실행할 문장1;
else
실행할 문장2;
- 다중 if 문
// else if
if (조건1)
실행할 문장1;
else if (조건2)
실행할 문장2;
else if (조건3)
실행할 문장3;
else
실행할 문장4;
// 중첩 if문
if (조건1)
{
if (조건2)
실행할 문장1;
else
실행할 문장2
}
else
실행할 문장3;
- switch문
- 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리
switch (수식)
{
case 레이블1:
실행할 문장1;
break;
case 레이블2:
실행할 문장2;
break;
default:
실행할 문장3;
}
- goto문
- 현재 위치에서 원하는 다른 문장으로 건너뛰어 수행을 계속하기 위해 사용
- 많이 사용하면 프로그램의 이해와 유지 보수가 어려워져 거의 사용하지 않음
goto 레이블;
레이블:
실행할 문장
5. 반복문 – A
- for문
- 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복
for(식1; 식2; 식3)
실행할 문장;
- while 문
- 조건이 참인 동안 실행할 문장을 반복
while(조건)
실행할 문장;
- do ~ while문
- 실행할 문장을 무조건 한 번 실행한 다음 조건을 판단하여 탈출 여부를 결정
do
실행할 문장;
while(조건);
- break, continue
- break : switch문이나 반복문 안에서 break가 나오면 블록을 벗어남
- continue : continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮김. 반복문에서만 사용
6. 배열과 문자열 – A
- 배열의 개념
- 개별적인 요소들의 위치는 첨자를 이용하여 지정
- 변수명 뒤에 []를 붙이고 그 안에 사용할 개수 지정
- 배열의 위치는 0부터 시작
- 행 우선으로 데이터가 기억장소에 할당
- 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같음
- 1차원 배열
자료형 변수명[개수];
- 2차원 배열
자료형 변수명[행개수][열개수]
- 배열의 초기화
- 배열 선언 시 초기값을 지정할 수 있음
- 배열 선언 시 배열의 크기를 생략하는 경우, 반드시 초기값을 지정해야 함
- 배열 형태의 문자열 변수
- C에서 “ “로 묶인 글자는 글자 수에 관계없이 문자열로 처리
- C에는 문자열을 저장하는 자료형이 없기 때문에 배열, 포인터를 이용하여 처리
- 배열에 문자열을 저장하면 문자열의 끝을 알리기 위한 널 문자(‘\0’)가 자동으로 삽입
- 배열에 문자열을 저장할 때는 배열 선언 시 초기값으로 지정. 선언된 배열에는 문자열 저장 불가
- 널 문자를 고려하여 배열 크기를 지정해야 함
char 배열이름[크기] = "문자열"
- Java에는 주소를 컨트롤하는 기능이 없음
- 하지만 Java는 문자열을 처리할 수 있도록 클래스를 제공
7. 포인터 – A
- 포인터와 포인터 변수
- 포인터는 변수의 주소를 말함. C에서는 주소를 제어할 수 있는 기능을 제공
- 변수의 주소를 저장할 때 사용하는 변수를 포인터 변수라 함
- 포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 * 를 붙임(int *a;)
- 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 & 를 붙임(a = &b;)
- 실행문에서 포인터에 * 를 붙이면 해당 포인터 변수가 가리키는 곳의 값임(c = *a;)
- 포인터 변수는 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수
- 포인터 변수의 용도
- 연결된 자료 구조를 구성하기 위해 사용
- 동적으로 할당된 자료 구조를 지정하기 위해 사용
- 배열을 인수로 전달하기 위해 사용
- 문자열을 표현하기 위해 사용
- 요소를 효율적으로 저장하기 위해 사용
- 메모리에 직접 접근하기 위해 사용
- 포인터와 배열
- 배열을 포인터 변수에 저장한 후 포인터를 이용해 배열의 요소에 접근 가능
- 첨자를 생략하고 배열의 대표명만 지정하면 배열의 첫 번째 요소의 주소를 지정하는 것
- 배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자 사용
- 배열의 요소가 포인터인 포인터형 배열을 선언할 수 있음
int a[5], *b;
8. 데이터 입출력 – A
- C언어의 표준 입출력 함수의 개요
- 키보드로 입력받아 화면으로 출력할 때 사용하는 함수
- scanf() 함수
- 표준 입력함수. 키보드로 입력받아 변수에 저장
// 형식
scanf(서식 문자열, 변수의 주소)
// % : 서식 문자임을 지정
// 3 : 입력 자릿수를 3자리로 지정
// d : 10진수로 입력
// &a : 입력받은 데이터를 변수 a의 주소에 저장
scanf("%3d", &a);
- 특징
- 입력받을 데이터의 자료형, 자릿수 등을 지정할 수 있음
- 여러 개의 데이터를 입력 받을 수 있음
- 서식 문자열과 변수의 자료형은 일치해야 함
- 서식 문자열
- %d : 정수형 10진수를 입출력
- %u : 부호없는 정수형 10진수를 입출력
- %o : 정수형 8진수를 입출력
- %x : 정수형 16진수를 입출력
- %c : 문자를 입출력
- %s : 문자열을 입출력
- %f : 소수점을 포함하는 실수를 입출력
- %e : 지수형 실수를 입출력
- %ld : long형 10진수를 입출력
- %lo : long형 8진수를 입출력
- %lx : long형 16진수를 입출력
- %p : 주소를 16진수로 입출력
- Java에서의 표준 입력
- Scanner 클래스를 이용해 키보드로부터 값을 입력받는 객체 변수를 생성한 후 사용
// 형식
Scanner scan = new Scanner(System.in);
a = scan.nextInt();
- 객체 변수 생성
- Scanner : 입력에 사용할 객체 변수를 생성할 때 사용
- scan : 객체 변수명
- new : 객체 생성 예약어
- Scanner() : 클래스 이름
- System.in : 표준 입력장치. 즉 키보드
- 객체 변수 활용
- a : 입력받은 값을 저장할 변수
- scan.nextInt()
- scan : 입력에 사용할 객체 변수 이름
- nextInt() : 입력받은 값을 정수형으로 반환
- printf() 함수
- C언어의 표준 출력 함수. 인수로 주어진 값을 화면에 출력
// 형식
printf(서식 문자열, 변수)
// % : 서식 문자임을 지정
// - : 왼쪽부터 출력
// 8 : 출력 자리수를 8자리로 지정
// 2 : 소수점 이하를 2자리로 지정
// f : 실수로 출력
printf("%-8.2f", 200.2)
// 200.20VV (V는 빈칸을 의미)
- 주요 제어 문자
- \n : 커서를 다음 줄 앞으로 이동
- \b : 커서를 왼쪽으로 한 칸 이동
- \t : 커서를 일정 간격 띄움
- \r : 커서를 현재 줄의 처음으로 이동
- \0 : 널 문자를 출력
- ' : 작은따옴표 출력
- " : 큰따옴표 출력
- \a : 스피커로 벨 소리를 출력
- \ : 역 슬래시를 출력
- \f : 한 페이지를 넘김
- Java에서의 표준 출력
- Java에서 값을 화면에 출력할 때는 printf() 메소드 이용
// 형식
System.out.printf(서식 문자열, 변수)
- System 클래스의 서브 클래스인 out 클래스의 메소드 printf()를 사용하여 출력
- 기타 표준 입출력 함수
- 입력
- getchar() : 한 문자를 입력받아 변수에 저장
- gets() : 문자열을 입력받아 변수로 저장. enter를 누르기 전까지를 하나의 문자열로 인식
- 출력
- putchar() : 한 문자를 화면에 출력
- puts() : 문자열을 화면에 출력한 후 커서를 자동으로 다음 줄 앞으로 이동
댓글남기기