Skip to Content
독학사독학사 3단계프로그래밍언어론26. 코드·모델 추론형 예상문제 (제어·하위프로그램·활성화 레코드)

재구성 출제 고지: 이 편은 국가평생교육진흥원 독학학위제 컴퓨터과학 전공 3단계 「프로그래밍언어론」의 최신 출제기준(평가영역) 중 제어 구조, 하위프로그램·매개변수 전달, 하위프로그램 구현(활성화 레코드), 언어 구현 방식 영역을 근거로 새로 구성한 코드·모델 추론형 예상문제 24문항입니다. 실제 특정 회차의 기출 문항을 그대로 옮기거나 암기해 재현한 것이 아니며, 13~15·21편에서 다룬 개념을 의사코드 실행 추적과 스택 그림 해설로 재구성했습니다. 실제 응시 시 문항 수·배점·시험 시간은 그해 시행 공고를 반드시 확인하시기 바랍니다. 아래 의사코드는 특정 프로그래밍언어의 실제 문법이 아니라 매개변수 전달·스코프 규칙을 비교하기 위한 교육용 표기입니다.

이 편의 영역 구성

문항 번호출제기준 영역관련 편유형
1–4제어 구조 설계(선택·반복·다중 루프·case)13편코드 추적
5–10매개변수 전달 방식(값·참조·값-결과·이름)14편코드 결과 대조
11–17활성화 레코드 구조·정적 체인·동적 체인·재귀 구현15편모델·스택 그림
18–22언어 구현 방식(컴파일러·인터프리터·링크)21편개념·비교
23–24매개변수 전달과 활성화 레코드 종합14–15편종합·코드 추적

문제 1

i = 1 while i <= 3 do: j = 1 while j <= 2 do: 만약 j == 2이면 break(안쪽 루프만 탈출) (i, j)를 출력한다 j = j + 1 i = i + 1
문제 14지선다
위 의사코드에서 break가 안쪽 while 루프만 탈출하는 구조적 제어문일 때, 총 몇 번 (i, j) 쌍이 출력되는가?

문제 2

문제 24지선다
문제 1의 break가 만약 안쪽 루프뿐 아니라 바깥 루프까지 함께 탈출하는 언어였다면(다중 루프 탈출), 몇 번 출력되었겠는가?

문제 3

n = 3 switch n: case 1: A를 출력한다 case 2: B를 출력한다 case 3: C를 출력한다 case 4: D를 출력한다 default: E를 출력한다 (각 case 끝에 break가 없다고 가정 — fall-through 언어)
문제 34지선다
case마다 break가 없어 다음 case로 그대로 흘러 내려가는(fall-through) 언어에서 위 코드를 실행하면 출력되는 것은?

문제 4

문제 44지선다
switch 문의 fall-through 특성이 시험에서 자주 지적되는 함정인 이유로 가장 적절한 것은?

문제 5

다음 하위프로그램 swap이 두 값을 서로 바꾸려는 목적으로 작성되었다고 하자.

procedure swap(a, b): temp = a a = b b = temp x = 1 y = 2 call swap(x, y) // 값 전달(pass by value) 방식 x와 y를 출력한다
문제 54지선다
매개변수 전달 방식이 값 전달(pass by value)일 때, swap 호출 이후 x와 y의 값은?

문제 6

문제 5와 동일한 swap 코드를 이번에는 참조 전달(pass by reference)로 호출한다고 가정한다.

문제 64지선다
매개변수 전달 방식이 참조 전달일 때, swap 호출 이후 x와 y의 값은?

문제 7

문제 74지선다
문제 5와 문제 6의 결과 차이가 보여주는 값 전달과 참조 전달의 근본적 차이로 가장 적절한 것은?

문제 8

다음은 값-결과 전달(pass by value-result, copy-restore)로 호출되는 하위프로그램이다. 형식 매개변수 a는 실제 인자 x와 연결되고, 또 다른 실제 인자로 배열 원소 arr[1]도 함께 넘겨받으며, 이 하위프로그램 안에서 배열 arr 자체도 전역으로 접근 가능하다고 하자.

전역 배열 arr = [10, 20] procedure p(a): a = a + 1 arr[1] = 99 // 전역 배열을 직접 변경 // 값-결과 전달로 arr[1]을 인자로 넘겨 호출 call p(arr[1]) arr[1]을 출력한다
문제 84지선다
값-결과 전달 방식에서 arr[1]을 넘겼을 때, 호출이 끝난 뒤 arr[1]의 값은?

문제 9

문제 94지선다
문제 8의 상황을 참조 전달로 바꾸어 arr[1]을 참조로 넘겼다면 결과가 어떻게 달라지는가?

문제 10

문제 104지선다
이름에 의한 호출(call by name)에 대한 설명으로 가장 적절한 것은?

문제 11

문제 114지선다
하위프로그램이 호출될 때 실행 스택에 새로 쌓이는 활성화 레코드(activation record)에 일반적으로 포함되는 항목으로 가장 거리가 먼 것은?

문제 12

문제 124지선다
활성화 레코드의 동적 링크(dynamic link, control link)가 하는 역할로 가장 적절한 것은?

문제 13

정적 스코프 언어에서 다음과 같이 하위프로그램이 중첩되어 정의되어 있다고 하자.

procedure Outer는: 지역 변수 x = 5 procedure Inner는: x를 출력한다 // Outer의 지역 변수 x를 참조 call Inner() call Outer()
문제 134지선다
Inner의 활성화 레코드가 자신을 둘러싼 Outer의 지역 변수 x를 찾아갈 때 사용하는 것은?

문제 14

문제 144지선다
정적 체인(static chain)과 동적 체인(dynamic chain)의 차이를 설명한 것으로 가장 적절한 것은?

문제 15

다음과 같이 재귀적으로 정의된 팩토리얼 하위프로그램을 3을 인자로 호출한다.

function factorial(n): 만약 n <= 1이면 1을 반환한다 아니면 n * factorial(n - 1)을 반환한다 factorial(3)을 호출한다
문제 154지선다
factorial(3) 호출 과정에서 실행 스택에 동시에 쌓이는 활성화 레코드의 최대 개수는? (factorial(3) 자신의 최초 호출을 포함해서 센다)

문제 16

문제 164지선다
재귀 함수가 기저 조건(base case) 없이 잘못 작성되어 계속 자기 자신을 호출할 때 일반적으로 발생하는 문제로 가장 적절한 것은?

문제 17

문제 174지선다
하위프로그램이 정상적으로 반환될 때 실행 스택에서 일어나는 일로 가장 적절한 것은?

문제 18

문제 184지선다
컴파일러(compiler)와 인터프리터(interpreter) 구현 방식의 차이를 설명한 것으로 가장 적절한 것은?

문제 19

문제 194지선다
자바(Java)처럼 소스 코드를 바이트코드로 컴파일한 뒤, 이를 가상 머신이 해석 또는 즉시 컴파일(JIT)하여 실행하는 하이브리드 구현 방식의 특징으로 가장 적절한 것은?

문제 20

문제 204지선다
활성화 레코드의 정적 링크(access link)가 만드는 정적 체인과, 실행 파일을 만들 때 라이브러리 코드를 연결하는 정적 링크(static linking)라는 용어를 비교한 설명으로 가장 적절한 것은?

문제 21

문제 214지선다
언어 설계와 구현 방식의 관계에 대한 설명으로 가장 적절한 것은?

문제 22

문제 224지선다
런타임 라이브러리(runtime library)의 일반적인 역할로 가장 적절한 것은?

문제 23

다음 하위프로그램은 참조 전달로 배열 원소 하나를 넘겨받아 값을 두 배로 만든다.

procedure doubleIt(a): // 참조 전달 a = a * 2 전역 배열 nums = [3, 7] call doubleIt(nums[2]) nums를 출력한다
문제 234지선다
doubleIt이 참조 전달로 nums[2]를 넘겨받아 실행된 뒤, 전역 배열 nums의 상태는? (배열 인덱스는 1부터 시작한다)

문제 24

문제 244지선다
제어 구조·매개변수 전달·활성화 레코드를 종합했을 때 옳지 않은 설명은?

참고 자료

Last updated on