프로그래밍기능사 · 프로그래밍 언어 과목
프로그래밍기능사 C·자바 코드 읽기 개념 정리
중요도 ★★★★★ · 40% (추정)
AI가 새로 쓴 글 가운데, 작성과 분리된 AI 검증(다시 읽고 사실·수치 확인)을 통과한 단원만 싣습니다. 틀린 곳을 발견하면 알려 주세요.
개요
이 단원은 C 언어와 자바로 쓴 짧은 코드를 읽고 실행 결과를 맞히는 연습을 합니다. 시험에서는 코드 전체를 이해하기보다, 변수 값이 한 줄씩 어떻게 바뀌는지 정확히 따라가는 힘을 봅니다. 그래서 종이에 변수 이름을 적고 값을 표로 적어 가며 푸는 습관이 가장 중요합니다.
C 언어의 배열은 첨자가 0부터 시작하므로, 크기가 5인 배열의 마지막 칸은 4번입니다. 증감 연산자는 위치에 따라 결과가 달라집니다. ++a 는 먼저 1을 더한 뒤 값을 쓰고, a++ 는 지금 값을 먼저 쓴 뒤 1을 더합니다. C 의 printf 에서 %d 는 정수, %c 는 문자 한 개, %s 는 문자열을 출력합니다.
자바는 객체지향 언어라서 클래스와 객체가 기본입니다. 클래스는 설계도이고, new 로 만든 실제 물건이 객체입니다. 부모 클래스의 메서드를 자식 클래스가 이름과 매개변수를 똑같이 해서 다시 정의하는 것을 오버라이딩, 한 클래스 안에서 이름은 같고 매개변수가 다른 메서드를 여럿 두는 것을 오버로딩이라고 합니다. 두 용어를 바꿔 놓은 선지에 속지 않도록 구분해 두세요.
핵심 개념
배열 첨자
C 와 자바의 배열은 첫 칸의 번호가 0 입니다. 크기가 n 인 배열의 마지막 칸 번호는 n-1 입니다.
외우는 요령'크기 5 → 0, 1, 2, 3, 4' 로 손가락으로 세어 봅니다.
전위·후위 증감 연산자
++a(전위)는 먼저 1을 더한 뒤 그 값을 씁니다. a++(후위)는 지금 값을 먼저 쓰고 나서 1을 더합니다.
외우는 요령++ 가 앞에 있으면 '먼저 올리고', 뒤에 있으면 '나중에 올린다'.
printf 서식 지정자
C 의 printf 에서 %d 는 10진 정수, %c 는 문자 한 개, %s 는 문자열, %f 는 실수를 출력합니다.
외우는 요령d 는 decimal(10진수), c 는 character, s 는 string.
클래스와 객체
클래스는 속성과 기능을 정해 둔 설계도이고, 객체는 그 설계도로 new 를 써서 실제로 만든 것입니다.
외우는 요령붕어빵 틀이 클래스, 구워 낸 붕어빵이 객체.
오버로딩과 오버라이딩
오버로딩은 한 클래스 안에 이름은 같고 매개변수가 다른 메서드를 여럿 두는 것입니다. 오버라이딩은 상속받은 부모의 메서드를 자식이 같은 모양으로 다시 정의하는 것입니다.
외우는 요령오버라이딩은 '덮어쓰기(ride over)' — 부모 것을 덮는다.
자주 나오는 포인트
- 반복문 안에서 합계나 배열 값이 바뀌는 과정을 따라가 최종 출력값을 묻습니다.
- a++ 와 ++a 가 섞인 식의 결과를 묻는 문제를 대비하세요.
- 배열 첨자가 0부터 시작한다는 점을 놓쳐 한 칸씩 밀려 계산하는 실수를 조심하세요.
- 오버로딩과 오버라이딩의 정의를 바꿔 놓은 선지가 나옵니다.
헷갈리는 것 비교: 오버로딩과 오버라이딩
| 구분 | 오버로딩 | 오버라이딩 |
|---|---|---|
| 어디서 | 같은 클래스 안 | 부모와 자식 클래스 사이 |
| 메서드 이름 | 같다 | 같다 |
| 매개변수 | 개수나 자료형이 다르다 | 똑같다 |
| 목적 | 같은 일을 여러 방식으로 받기 | 물려받은 기능을 새로 바꾸기 |
대표 문제 3개
검수를 마친 예상문제 가운데 이 단원의 대표 문제입니다.
문제 1. 다음 C 프로그램의 출력 결과는? int s = 0; for (int i = 1; i <= 5; i++) s += i; printf("%d", s);
- ① 5
- ② 10
- ③ 6
- ④ 15
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ④ 15
핵심: for 문으로 1부터 5까지 더하면 15
i 가 1부터 5까지 바뀌면서 s 에 차례로 더해집니다.
- s = 0 + 1 = 1
- s = 1 + 2 = 3
- s = 3 + 3 = 6
- s = 6 + 4 = 10
- s = 10 + 5 = 15
- 출력: 15
틀린 선지
- ① 5: 마지막 i 값만 넣은 것입니다. s += i 는 계속 더해 나갑니다.
- ② 10: 1부터 4까지만 더한 값입니다. 조건이 i <= 5 이므로 5 도 더합니다.
- ③ 6: 1부터 3까지만 더한 값입니다.
문제 2. 다음 C 프로그램의 출력 결과는? int a[5] = {1, 2, 3, 4, 5}; printf("%d", a[2]);
- ① 4
- ② 2
- ③ 1
- ④ 3
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ④ 3
핵심: C 배열의 첨자는 0부터 시작한다
C 의 배열 번호(첨자)는 0부터 시작합니다.
- a[0] = 1, a[1] = 2, a[2] = 3
- 출력: 3
틀린 선지
- ① 4: a[3] 의 값입니다.
- ② 2: 배열 번호를 1부터 센 경우입니다. C 배열은 0번부터 시작합니다.
- ③ 1: a[0] 의 값입니다.
문제 3. 다음 C 프로그램의 출력 결과는? int i = 0, c = 0; while (i < 10) { i += 3; c++; } printf("%d %d", i, c);
- ① 12 3
- ② 12 4
- ③ 10 4
- ④ 9 3
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ② 12 4
핵심: while 문은 조건이 거짓이 될 때까지 반복한다
반복할 때마다 i 는 3 늘고 c 는 1 늘어납니다.
- 1회: i = 3, c = 1
- 2회: i = 6, c = 2
- 3회: i = 9, c = 3 (9 < 10 이므로 계속)
- 4회: i = 12, c = 4 (12 < 10 이 거짓이므로 멈춤)
- 출력: 12 4
틀린 선지
- ① 12 3: 반복 횟수 c 는 4 입니다.
- ③ 10 4: i 는 3씩 늘어나므로 10 이 될 수 없습니다.
- ④ 9 3: i 가 9 일 때도 9 < 10 이 참이므로 한 번 더 반복합니다.