본문 바로가기
Topos Uranos

요약

이 수업은 데이터와 그 자료형을 다루는, 강좌의 두 번째 단원을 연다. 수업은 단원의 목적을 설명한다. 곧, 프로그램의 모든 데이터는 자료형과 함께 메모리에 놓이며 그 자료형이 데이터가 가질 수 있는 값, 차지하는 크기, 허용하는 연산을 정한다는 것, 그리고 그 한계에는 관찰할 수 있는 결과가 따른다는 것을 가르치는 것이다. 또 단원의 네 수업과, 이름과 값을 가진 칸으로서의 변수에서 자료형 사이의 변환과 상수에 이르기까지 그 수업들을 잇는 실을 소개하고, 단원이 첫 단원에서 이미 안다고 전제하는 것, 곧 읽고 쓰는 프로그램을 작성하고 컴파일하고 실행하는 일을 상기시킨다. 단원이 해결하는 문제, 곧 겉보기에는 올바르지만 계산이 수학의 계산과 맞지 않는 프로그램의 문제를 합 0.1+0.20.1 + 0.2에서 출발하여 제시하는데, 이 합은 컴퓨터에서 정확히 0.30.3이 되지 않는다. 끝으로 이 단원이 뒤의 단원들과 C++ 프로그래밍 II 강좌에서 어디로 이어지는지 보여 준다.

학습 목표

  1. 단원 내용의 순서를 서술하고, 각 수업이 그 뒤의 수업에 무엇을 보태는지 설명한다.
  2. 1단원에서 필요한 것(컴파일과 실행의 순환, 형식을 갖춘 출력, std::cin을 이용한 읽기, 컴파일러 메시지 읽기)을 떠올리고, 필요하면 복습한다.
  3. 하나의 예로, 프로그램의 수가 왜 수학의 수가 아닌지 설명하고, 컴퓨터에서 0.1+0.20.1 + 0.2가 왜 정확히 0.30.3이 아닌지 미리 내다본다.
  4. 단원을 마칠 때 할 줄 알아야 하는 것을 확인하고, 그것을 뒤의 단원들에서 배울 것과 구별한다.

입문 평가

단원을 시작하기 전에 출발점을 재어 두면 좋다. 이 평가는 자기 평가이며 점수를 매기지 않는다. 목적은 오직 학습의 방향을 잡는 데 있다. 처음 네 문항은 단원이 첫 단원에서 이미 안다고 전제하는 것을 확인한다. 절차를 한 단계씩 따라가기, 수를 소수 둘째 자리까지 쓰기, 반올림, 그리고 오류 메시지 읽기이다. 그 뒤의 여섯 문항은 수업 순서대로 단원의 핵심 개념을 다룬다. 아직 맞힐 의무는 누구에게도 없으며, 그중 한 문항에서는 “아직 모르겠다”가 정직한 답이다. 맞든 틀리든 모든 답이 요점을 설명하고 그 요점을 다루는 수업을 알려 주기 때문이다. 같은 능력은 단원 끝의 종합 수업에서 다시 측정한다.

입문 평가

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

  1. 문제 1이전 단원에서어떤 절차에 이렇게 적혀 있다. “1. rr의 값을 17로 한다. 2. rr의 값을 r−5r - 5로 한다. 3. rr의 값을 r−5r - 5로 한다.” 끝났을 때 rr의 값은 얼마인가?

  2. 문제 2이전 단원에서문장 std::println("{:.2f}", 2.0 / 3);의 출력은 무엇인가?

  3. 문제 3이전 단원에서12.34612.346을 반올림하여 소수 둘째 자리까지 쓰려고 한다. 무엇을 얻는가?

  4. 문제 4이전 단원에서어떤 프로그램의 5번째 줄에는 const int pages{12} 선언이, 6번째 줄에는 std::println("{}", pages); 문장이 있다. 컴파일러는 6:5: error: expected ',' or ';' before 'std' 메시지를 출력한다. 결함은 어디에 있는가?

  5. 문제 5어떤 프로그램이 int a{2}; 선언과 int b{7}; 선언을 한 뒤, a = b; 문장과 b = 10; 문장을 실행한다. 마지막에 a의 값은 얼마인가?

  6. 문제 6수 13을 이진법으로 어떻게 쓰는가?

  7. 문제 74바이트 int 변수에 그 최댓값인 2 147 483 6472\,147\,483\,647이 들어 있고, 프로그램이 거기에 1을 더한다. 무엇을 말할 수 있는가?

  8. 문제 81/31/3의 소수 표현은 유한한가?

  9. 문제 9std::println("{}", 0.1 + 0.2); 문장의 출력은 무엇인가?

  10. 문제 10어떤 프로그램이 const double ratio{7 / 2}; 선언을 한 뒤 ratio 변수를 출력한다. 무엇이 나타나는가?