이 페이지의 목차
1단원 마무리
학습 목표
- 1단원의 핵심 개념을 정리한다.
- 성취기준별로 자신의 이해 정도를 점검한다.
관련 성취기준
- 프그01-01
각종 프로그래밍 언어의 종류와 특징을 이해하고, 개발 분야와 용도에 따라 적절한 프로그래밍 언어를 선택할 수 있다.
- 프그01-02
프로그램을 효율적으로 개발하기 위한 체계적인 절차와 단계별로 유의해야 할 사항에 대하여 설명할 수 있다.
- 프그01-03
주어진 문제를 해결하기 위한 알고리즘의 개념을 알고, 순서도 또는 의사 코드 등을 이용하여 문제를 해결하는 알고리즘을 작성할 수 있다.
- 프그01-04
디지털 기술을 통한 프로그래밍 공동 개발 환경의 필요성과 공유 및 협업을 통한 프로그래밍을 경험할 수 있다.
1단원을 한 문장으로
프로그래밍은 코드를 타이핑하는 일이 아니라, 문제를 푸는 절차를 정해 그것을 컴퓨터가 읽을 수 있게 옮기는 일이다.
1단원의 아홉 차시는 이 한 문장을 네 방향으로 풀어 놓은 것이다. 무엇으로 옮기는가(언어), 어떤 순서로 만드는가(절차), 절차를 어떻게 적는가(알고리즘), 누구와 함께 만드는가(협업).
정리 ① 프로그래밍 언어의 종류와 선택
되돌아갈 곳: 1차시 프로그램과 프로그래밍 언어 · 2차시 번역 방식으로 나눠 보는 언어 — 컴파일러와 인터프리터 · 3차시 용도에 맞는 언어 고르기
정리 ② 프로그램 개발 절차와 유의 사항
되돌아갈 곳: 4차시 프로그램 개발 절차 · 5차시 단계마다 조심할 것
정리 ③ 알고리즘과 그 표현
되돌아갈 곳: 6차시 알고리즘이란 무엇인가 · 7차시 순서도와 의사 코드로 표현하기
정리 ④ 개발 환경과 공동 개발
되돌아갈 곳: 8차시 개발 환경 준비하기 · 9차시 함께 개발하기 — 공유와 협업
용어로 되짚기
고급 언어로 쓴 코드는 반드시 1을 거쳐야 실행된다. 실행 전에 전체를 옮기는 것이 2이고 실행하며 한 줄씩 옮기는 것이 3다. 문제를 푸는 절차를 4이라 하며, 그것을 기호와 화살표로 그린 것이 5다. 고친 내력을 기록해 되돌릴 수 있게 해 주는 도구가 6다.
정답 보기
- 번역
- 컴파일러
- 인터프리터
- 알고리즘
- 순서도
- 버전 관리
- 1요구 사항 분석
- 2설계
- 3구현
- 4테스트
- 5유지 보수
잘못은 늦게 발견할수록 고치는 값이 커진다. 그래서 앞 단계를 건너뛰지 않는다.
개념이 이어지는 자리
1단원의 개념들은 따로 있지 않고 서로 걸려 있다. 아래 표의 오른쪽 칸이 그 연결이다.
| 개념 | 어디서 다시 쓰이는가 |
|---|---|
| 번역 방식(컴파일 · 해석) | 개발 환경을 준비할 때 — 번역기가 있어야 코드가 실행된다 |
| 언어 선택 기준 | 설계 단계에서 — 실행 환경과 성능 요구가 언어를 정한다 |
| 모듈로 나누기 | 테스트에서 — 나눠 두면 단위 테스트로 잘못의 위치를 좁힌다 |
| 모듈로 나누기 | 협업에서 — 모듈로 나뉜 프로그램은 사람으로도 나눌 수 있다 |
| 알고리즘의 유한성 | 반복문을 쓸 때 — 끝나는 조건이 없으면 무한 루프가 된다 |
| 의사 코드의 들여쓰기 | 2단원 Python 문법에서 — 들여쓰기가 그대로 문법이 된다 |
| 경계값 확인 | 조건문을 쓸 때 — 부등호에 등호를 붙일지 정하는 판단 |
| 왜 고쳤는지 적기 | 주석과 협업 기록에서 — 코드가 말해 주지 않는 것을 남긴다 |
스스로 점검하기
성취기준별로 지금 할 수 있는 것을 표시해 보자. “들어 봤다”와 “설명할 수 있다”는 다르다. 설명할 수 있는지 확인하는 방법은 옆 사람에게 소리 내어 말해 보는 것이다.
| 확인할 것 | 아직 | 대체로 | 설명할 수 있다 | 되돌아갈 차시 |
|---|---|---|---|---|
| 고급 언어가 번역되어야 실행되는 까닭을 말할 수 있다 | ☐ | ☐ | ☐ | 1·2차시 |
| 컴파일러와 인터프리터의 차이를 오류 시점으로 설명할 수 있다 | ☐ | ☐ | ☐ | 2차시 |
| 주어진 개발 과제에 알맞은 언어를 근거를 들어 고를 수 있다 | ☐ | ☐ | ☐ | 3차시 |
| 개발 절차 다섯 단계와 각 단계의 산출물을 말할 수 있다 | ☐ | ☐ | ☐ | 4차시 |
| 애매한 요구 사항을 확인할 수 있는 형태로 바꿀 수 있다 | ☐ | ☐ | ☐ | 5차시 |
| 단위·통합·시스템 테스트의 목적을 구분할 수 있다 | ☐ | ☐ | ☐ | 5차시 |
| 알고리즘의 다섯 조건을 예를 들어 설명할 수 있다 | ☐ | ☐ | ☐ | 6차시 |
| 같은 문제를 푸는 두 알고리즘의 효율을 비교할 수 있다 | ☐ | ☐ | ☐ | 6차시 |
| 갈라짐과 반복이 있는 절차를 순서도로 그릴 수 있다 | ☐ | ☐ | ☐ | 7차시 |
| 같은 절차를 의사 코드로 옮겨 적을 수 있다 | ☐ | ☐ | ☐ | 7차시 |
| 통합 개발 환경이 해 주는 일을 말할 수 있다 | ☐ | ☐ | ☐ | 8차시 |
| 공동 개발 환경이 필요한 까닭을 문제 중심으로 설명할 수 있다 | ☐ | ☐ | ☐ | 8·9차시 |
| 코드를 공유할 때 확인해야 할 것을 말할 수 있다 | ☐ | ☐ | ☐ | 9차시 |
’아직’에 표시한 줄이 있으면 그 차시로 돌아가 생각 열기와 확인 문제만 다시 본다. 본문 전체를 다시 읽는 것보다 빠르다.
단원 평가 문제
1단원 평가 문제
보기를 누르면 바로 채점된다. 틀려도 해설을 읽으면 된다.
다음 설명에 해당하는 번역 방식은? '소스 코드 전체를 미리 번역해 실행 파일을 만들며, 문법 오류를 실행 전에 알려 준다.'프그01-01
다음 중 언어 선택에서 가장 강한 제약이 되는 것은?프그01-01
개발 절차에서 다음 산출물이 나오는 단계는? '기능 목록, 입력과 출력, 제약 조건을 적은 문서'프그01-02
'0 이상 100 이하의 점수만 받는다'는 요구 사항을 테스트할 때, 반드시 넣어야 하는 값의 조합으로 가장 알맞은 것은?프그01-02
모듈 A는 점수를 문자열로 넘기고 모듈 B는 숫자를 기다린다. 각각 따로 시험했을 때는 문제가 없었다. 이 잘못이 드러나는 단계는?프그01-02
다음 절차가 어긴 알고리즘의 조건은? '값이 답과 같아질 때까지 1씩 늘린다. (답보다 큰 값에서 시작한 경우를 다루지 않았다)'프그01-03
순서도에서 반복을 나타낼 때 반드시 지켜야 하는 것은?프그01-03
1부터 1,000,000까지 중 하나를 찾을 때, 하나씩 세는 방법과 가운데를 묻는 방법의 최대 횟수 차이를 바르게 말한 것은?프그01-03
같은 코드가 내 컴퓨터에서는 실행되고 짝의 컴퓨터에서는 실행되지 않는 원인으로 알맞지 않은 것은?프그01-04
버전 관리 도구를 쓰는데도 협업에서 문제가 계속 생긴다. 다음 중 가장 먼저 점검할 약속은?프그01-04
2단원으로 넘어가기 전에
2단원부터는 실제로 코드를 쓴다. 변수, 자료형, 입력과 출력, 연산자, 조건과 반복, 함수, 파일을 차례로 다룬다.
넘어가기 전에 한 가지만 확인해 두자. 2단원에서 배우는 것은 1단원에서 정한 절차를 적는 방법이다. 문법을 익히는 동안 이 순서를 잊기 쉽다. 코드가 잘 안 될 때 문법을 다시 보는 것도 필요하지만, 그보다 먼저 물어야 할 것이 있다.
지금 이 프로그램이 무엇을 하려는 절차인지 말로 설명할 수 있는가?
설명하지 못한다면 문법이 아니라 절차가 아직 없는 것이다. 그때는 7차시 로 돌아가 의사 코드로 적어 보는 편이 빠르다.
교과서에서 찾기
| 교과서 | 해당 위치 | 쪽수 |
|---|---|---|
| 성림출판(Python) | 프로그래밍의 개요 › 01 프로그래밍 언어의 종류와 특징 | 12쪽 |
| 씨마스커뮤니케이션(Python) | 프로그래밍 개요 › 1 프로그래밍 언어의 종류와 특징 | 14쪽 |
| 삼양미디어(Python) | 프로그래밍의 개요 › 01 프로그래밍 언어 | 12쪽 |
| 삼양미디어(C) | 프로그래밍의 개요 › 01 프로그래밍 언어 | 12쪽 |
| 씨마스(C) | 프로그래밍의 개요 › 1 프로그래밍 언어의 종류와 특징 | 12쪽 |
| 웅보출판사(C) | 프로그래밍의 개요 › Chapter 01 프로그래밍 언어의 종류와 특징 | 11쪽 |