본문 바로가기
Topos Uranos

요약

이 수업은 제어 흐름을 다루는, 강좌의 네 번째 단원을 연다. 수업은 단원의 목적을 설명한다. 곧, 프로그램의 문이 실행되는 순서를 조건문과 반복문으로 다스리고, 그 올바름에 대해 추론하는 법, 다시 말해 모든 경우가 처리되고, 모든 반복문이 해야 할 일을 하며, 끝내 종료하도록 보장하는 법을 가르치는 것이다. 또 단원의 네 수업과 그 수업들을 잇는 실을 소개하고, 단원이 이미 안다고 전제하는 것, 특히 세 번째 단원의 복합 조건을 되짚는다. 그리고 단원이 해결하는 문제, 곧 정해진 수의 단계로 최대공약수를 계산하여 데이터에 따라 틀린 답을 내거나 0으로 나누기에서 멈추어 버리는 프로그램의 문제를 제시한다. 불변식을 단원이 반복문을 정당화할 때 쓸 도구로 미리 소개하고, 끝으로 단원이 뒤의 단원들과 C++ 프로그래밍 II 강좌에서 어디로 이어지는지 보여 준다.

학습 목표

  1. 단원 내용의 순서를 기술하고, 각 수업이 바로 뒤에 오는 수업에 무엇을 보태는지 설명한다.
  2. 세 번째 단원의 복합 조건(논리 연결사, 단락 평가, 드모르간 법칙에 의한 부정)을 떠올리고, 필요하면 복습한다.
  3. 예를 통해, 추론의 도구로서의 불변식을 미리 접한다. 불변식이란 반복이 보존하고, 반복이 끝났을 때 결과를 주는 변수들 사이의 관계이다.
  4. 단원을 마쳤을 때 할 줄 알아야 하는 것을 알아보고, 그것을 뒤의 단원들에서 배울 것과 구별한다.

입문 평가

단원을 시작하기 전에 출발점을 재어 두면 좋다. 이 평가는 자기 평가이며 점수를 매기지 않는다. 목적은 오직 학습의 방향을 잡는 데 있다. 처음 네 문항은 단원이 이미 안다고 전제하는 것을 확인한다. 복합 조건의 부정, 단락 평가, 1.1강에 나온 반복의 추적, 그리고 int 타입의 한계이다. 그 뒤의 일곱 문항은 수업 순서대로 단원의 핵심 개념을 다루며, 그중 몇 문항은 학교 수학에서 출발한다. 최대공약수, 합의 기호, 절차의 종료성이다. 아직 맞힐 의무는 누구에게도 없으며, 그중 몇 문항에서는 “아직 모르겠다”가 정직한 답이다. 맞든 틀리든 모든 답이 요점을 설명하고 그 요점을 다루는 수업을 알려 주기 때문이다. 같은 능력은 단원 끝의 종합 수업에서 다시 측정한다.

입문 평가

단원을 시작하기 전에 출발점을 확인해 보세요. 짧은 자기 평가입니다. 점수가 매겨지지 않으며 결과는 브라우저에만 저장됩니다.

  1. 문제 1이전 단원에서1 <= n && n <= 10 조건의 부정은 무엇인가?

  2. 문제 2이전 단원에서int d{0}; 선언과 int n{5}; 선언이 있을 때, d != 0 && n / d > 2 식을 계산하면 무슨 일이 일어나는가?

  3. 문제 3이전 단원에서1.1강의 뺄셈을 거듭하는 나눗셈은 q=0q = 0, r=ar = a에서 시작하여 “r≥br \geq b인 동안, bb의 값을 rr에서 빼고 qq에 1을 더한다”를 되풀이한다. a=20a = 20, b=5b = 5일 때 반복의 본문은 몇 번 실행되는가?

  4. 문제 4이전 단원에서32비트 int 타입에서, 46341 * 46341 식의 값에 대해 표준은 무엇을 보장하는가?

  5. 문제 5어떤 프로그램에 이런 연쇄 조건문이 있다고 하자. “합격”을 출력하는 if (score >= 50) 가지, “우수”를 출력하는 else if (score >= 90) 가지, 그리고 “불합격”을 출력하는 else 가지이다. score 변수가 95일 때 무엇을 출력하는가?

  6. 문제 6아래 식 가운데 1+2+⋯+n1 + 2 + \cdots + n의 합을 나타내는 것은 어느 것인가?

  7. 문제 7int total{0}; 선언이 있을 때, for (int i{0}; i < 5; ++i) { total += i; } 반복문 뒤에 std::println("{}", total); 문은 무엇을 출력하는가?

  8. 문제 8뺄셈을 거듭하는 나눗셈(q=0q = 0, r=ar = a에서 시작하여, r≥br \geq b인 동안 rr의 값을 r−br - b의 값으로, qq의 값을 q+1q + 1의 값으로 바꾼다)에서, 조건이 계산될 때마다 성립하는 변수들 사이의 관계는 무엇인가?

  9. 문제 9어떤 절차가 임의의 정수 nn에서 출발하여(양수, 0, 음수 어느 것이든) “n>0n > 0인 동안, nn에서 2를 뺀다”를 되풀이한다. 모든 nn에 대해 종료하는가?

  10. 문제 1084와 36의 최대공약수는 얼마인가?

  11. 문제 11약수를 시험하여 101이 소수인지 판정하려면 어느 약수까지 가면 충분한가?