요약
프로그램은 입력을 출력으로 바꾸며, 이 수업은 그 변환의 두 끝과 그 사이에서 잘못될 수 있는 것을 다룬다. std::print 함수와 std::println 함수로 출력하는 법을, 너비와 맞춤과 소수 자릿수를 정하는 자리표시자와 형식 지정과 함께 가르치고, std::cin 객체로 수를 읽는 법을 가르친다. 또 사용자가 요청받은 것과 다른 것을 입력했을 때 무슨 일이 일어나는지 예측하는 법을 가르치는데, C++ 같은 입력 체계에서 이는 경고를 낳지 않고 오류 상태의 스트림과 0이 든 변수를 낳는다. 그리고 프로그램의 오류를 드러나는 시점에 따라 네 종류, 곧 컴파일 오류, 링크 오류, 실행 오류, 논리 오류로 분류하는 법을 가르친다. 끝으로 컴파일러 메시지를 체계적으로 읽는 법을 다룬다.
학습 목표
std::cin객체로 데이터를 읽고std::println함수로 결과를 출력하는 프로그램을, 너비와 소수 자릿수의 형식 지정을 써서 작성한다.std::print함수와std::println함수를 여러 번 호출하는 프로그램의 정확한 출력을 줄바꿈까지 포함해 예측한다.- 입력이 기대한 형태가 아닐 때(수 대신 문자가 올 때) 무슨 일이 일어나는지 설명하고, 읽기의 상태를 확인한다.
- 오류를 컴파일 오류, 링크 오류, 실행 오류, 논리 오류 가운데 하나로 분류하고, 그 드러나는 모습으로부터 위치를 찾는다.
프로그램과 그 경계
문제에서 알고리즘으로 수업에서는 각 문제를 무엇이 들어가고 무엇이 나오는지로 규정했다. 프로그램은 그 명세를 실현한다. 데이터를 받아 변환하고 결과를 내놓는다. 그런데 데이터는 프로그램 안에서 생겨나지 않고 밖에서, 곧 프로그램을 쓰는 사람의 키보드나 파일이나 다른 프로그램에서 온다. 결과도 안에 머물지 않고 화면이나 파일이나 다른 프로그램으로 간다. 이 바깥과의 소통은 운영 체제가 모든 프로그램을 시작할 때 열어 주는 두 통로를 거친다. 표준 입력은 터미널에서 키보드로 치는 것이고, 표준 출력은 터미널이 보여 주는 것이다. C++는 이 둘을 스트림으로 나타낸다. 스트림은 차례대로 하나씩 소비되거나 만들어지는 문자의 나열이다.
두 끝은 대칭이 아니다. 출력은 프로그램이 정하므로 정확하게 쓸 수 있다. 화면에 나타나는 문자 하나하나가 프로그램이 쓰라고 명령한 바로 그 문자이다. 반면 입력은 다른 사람이 정한다. 프로그램은 수를 요청하지만, 키보드 앞에 있는 사람은 단어나, 소수점 대신 쉼표를 쓴 수나, 너무 큰 수를 치거나 아무것도 치지 않을 수 있다. 그렇다면 입력은 신뢰할 수 없는 경계이고, 데이터를 읽는 모든 프로그램은 받은 것이 기대한 형태가 아닐 때 어떻게 할지를 미리 정해 두어야 한다. 이 수업은 먼저 출력하는 법을, 다음으로 읽는 법을, 다음으로 읽기가 실패할 때 무슨 일이 일어나는지를 가르치고, 마지막으로 사용자의 실수가 아닌 프로그램의 오류를 그것이 드러나는 시점에 따라 알아보는 법을 가르친다.
콘텐츠를 불러오는 중…