| 응시자가 다음을 수행할 수 있어야 함: | 참고 사항 및 가이드라인 |
|---|---|
| 1 변수와 상수를 선언하고 사용하기 | |
| 2 기본 데이터 타입을 이해하고 사용하기 | • 다음을 포함: – 정수 – 실수 – char – string –布尔 |
| 3 입력과 출력을 이해하고 사용하기 | |
| 4 (a) 순서의 개념을 이해하고 사용하기 | |
| (b) 선택의 개념을 이해하고 사용하기 | • 다음을 포함: – IF 문장 – CASE 문장 |
| (c) 반복의 개념을 이해하고 사용하기 | • 다음을 포함: – 카운트 제어 루프 – 전조건 루프 – 후조건 루프 |
| (d) 합산 및 세기의 개념을 이해하고 사용하기 | |
| (e) 문자열 처리의 개념을 이해하고 사용하기 | • 다음을 포함: – 길이 – 부분 문자열 – 대문자 변환 – 소문자 변환 • 문자열의 첫 번째 문자는 위치 0 또는 1일 수 있다. |
| (f) 산술 연산자, 관계 연산자 및 논리 연산자를 이해하고 사용하기 | • 산술 연산자(다음으로 제한): – + – – – / – * – ^ (제곱) – MOD – DIV • 관계 연산자(다음으로 제한): – = – < – <= – > – >= – <> (등이 아님) • 논리 연산자(다음으로 제한): – AND – OR – NOT |
| 5 중첩 문장을 이해하고 사용하기 | • 중첩 선택 및 반복을 포함 • 시험관은 중첩 문장을 3단계 이상 작성할 필요는 없다. |
| 6 (a) 절차, 함수 및 매개변수의 의미를 이해하기 (b) 매개변수가 있거나 없는 경우를 포함하여 절차와 함수를 정의하고 사용하기 (c) 로컬 변수와 글로벌 변수를 이해하고 사용하기 | • 절차와 함수는 최대 3개의 매개변수를 가질 수 있다. |
| 7 라이브러리 rutin을 이해하고 사용하기 | • 다음을 포함: – MOD – DIV – ROUND – RANDOM |
| 8 **유지 가능한 프로그램(maintainable program)**을 만드는 방법을 이해함 | • 다음에 대한 적절한 사용 포함: – 의미 있는 식별자(identifiers) – 프로그래밍 언어가 제공하는 주석(commenting) 기능 – 절차(procedures)와 함수(functions) – 문법(syntax)에 대한 관련적이고 적절한 주석 • 다음에 대해 의미 있는 식별자를 사용: – 변수 – 상수 – 배열 – 절차와 함수 |
프로그래밍
IGCSE 컴퓨터 과학 · 주제 8
13:16
프로그래밍
Here is a short program. It reads five test marks and prints the total. The five marks are eight, nine, seven, six and ten, so the total should be forty. Watch…
영어 내레이션 · 영어 + 중국어 자막 burned-in
8.1
변수와 상수
Syllabus
출처: Cambridge International syllabus
변수는 프로그램 실행 중에도 변경 가능한 값을 저장하는 이름이 붙은 저장 공간입니다. 상수는 값이 고정되어 변경되지 않는 이름이 붙은 저장 공간입니다.


사용하기 전에 선언해야 합니다(이름과 유형을 명시):
DECLARE Score : INTEGER
DECLARE Name : STRING
CONSTANT Pi ← 3.142

변하지 않는 값(Pi 등)에는 상수를 사용하여 한 곳에서 설정하고 쉽게 읽을 수 있도록 합니다.
변수와 대입
각 줄을 따라가며 변수가 새로운 값을 어떻게 갖는지 확인하세요.
| English | 한국어 |
|---|---|
| variable/ˈveərɪəbl/ | 变量 |
| constant/ˈkɒnstənt/ | 일정함 |
| declare/dɪˈkleə/ | 선언(declare) |
| integer/ˈɪntɪdʒə/ | 정수 |
| string/strɪŋ/ | 문자열(string) |
8.1
데이터 유형
데이터 유형은 변수가 어떤 종류의 값을 저장하는지 나타냅니다. 기본 5가지 유형을 반드시 알아야 합니다.

| 유형 | 보유 값 | 예시 |
|---|---|---|
| 정수 (integer) | 전체 숫자 | 42, -7 |
| 실수 (real) | 소수점이 있는 숫자 | 3.14, -0.5 |
| char | 단일 문자 | 'A', '?' |
| 문자열 | 문자들의 나열 | "Hello" |
| 부울린 | 두 값 중 하나 | TRUE 또는 FALSE |
| English | 한국어 |
|---|---|
| data type/ˈdeɪtə taɪp/ | 데이터 타입 |
| real/rɪəl/ | 실수(real) |
| char/tʃɑː/ | 문자(char) |
| Boolean/ˈbuːlɪən/ | Boolean |
8.1
입력과 출력
입력은 사용자로부터 값을 읽습니다. 출력은 화면에 값을 표시합니다.
OUTPUT "What is your name?"
INPUT Name
OUTPUT "Hello ", Name
| English | 한국어 |
|---|---|
| input/ˈɪnpʊt/ | 입력(input) |
| output/ˈaʊtpʊt/ | 输出 |
8.1
세 가지 기본 구조
모든 프로그램은 세 가지 제어 구조로 구성됩니다.

순차
순차란 단계가 위에서부터 아래로 순서대로 하나씩 실행되는 것을 의미합니다.
INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT Area
선택
선택은 조건에 따라 어떤 단계를 실행할지 결정합니다. 선택지가 많을 때는 IF 문장이나 CASE 문장을 사용합니다.
IF Score >= 50
THEN
OUTPUT "Pass"
ELSE
OUTPUT "Fail"
ENDIF
CASE OF Grade
'A' : OUTPUT "Excellent"
'B' : OUTPUT "Good"
OTHERWISE OUTPUT "Keep trying"
ENDCASE
반복
반복(루프)은 단계를 여러 번 실행합니다. 세 가지 유형이 있습니다.
카운트 제어 루프는 고정된 횟수만큼 반복됩니다:
FOR I ← 1 TO 5
OUTPUT "Hello"
NEXT I
전제 조건 루프는 각 반복 전에 조건을 확인하므로, 0회 실행될 수 있습니다:
WHILE Answer <> "stop" DO
INPUT Answer
ENDWHILE
후위 조건 루프는 각 반복 후에 조건을 확인하므로, 최소 한 번은 반드시 실행됩니다:
REPEAT
INPUT Password
UNTIL Password = "secret"

IF … ELSE IF 사다리꼴이 결정을 내리는 방식
조건은 위에서 아래로 테스트됩니다; 첫 번째로 참인 조건이 실행되고 나머지는 건너뜁니다. 점수를 슬라이드하여 어떤 가지가 켜지는지 확인하십시오.
선택(Selection)
값을 변경하여 어떤 분기가 실행되는지 확인하세요 — 선택 구조의 작동 원리입니다.
| English | 한국어 |
|---|---|
| loop/luːp/ | 循环 |
| count-controlled loop/kaʊnt kənˈtrəʊld luːp/ | 카운트 제어 루프 |
| pre-condition loop/priː kənˈdɪʃn luːp/ | 사전 조건 루프 |
| post-condition loop/pəʊst kənˈdɪʃn luːp/ | 사후 조건 루프 |
| length/leŋθ/ | 길이 |
8.1
합산 및 카운팅
- 합산(totalling) — 누적 합계(value)에 값을 계속 더함:
Total ← Total + Value. - 카운팅(counting) — 카운터에 매번 1을 더함:
Count ← Count + 1.

*추적 표는 합산 및 카운팅 루프를 단계별로 따릅니다
Total ← 0
FOR I ← 1 TO 10
INPUT Mark
Total ← Total + Mark
NEXT I
OUTPUT Total
작업 예시. 프로그램은 점수 5개를 읽은 뒤, 총점과 평균을 출력해야 합니다.
Total ← 0
FOR I ← 1 TO 5
INPUT Mark
Total ← Total + Mark
NEXT I
Average ← Total / 5
OUTPUT Total, Average
두 줄은 점수를 처리합니다. Total ← 0은 루프 앞에 위치해야 합니다: 안에 넣으면 총점이 매 회차마다 초기화되어 마지막 점수만 출력됩니다. 그리고 Average ← Total / 5은 루프 뒤에 위치해야 합니다: 모든 점수가 더하기 전까지는 총점이 완성되지 않기 때문입니다. 초기화는 앞에, 계산은 뒤에 - 이것이 문제에서 실제로 검증하려는 순서입니다.
| English | 한국어 |
|---|---|
| totalling/ˈtəʊtəlɪŋ/ | 합계 계산 |
| counting/ˈkaʊntɪŋ/ | 세기 |
| remainder/rɪˈmeɪndə/ | 나머지 |
8.1
연산자
산술 연산자
| 연산자 | 뜻 |
|---|---|
+ - * / |
더하기, 빼기, 곱하기, 나누기 |
^ |
지수 |
MOD |
나누기后的 나머지 |
DIV |
나누기의 정수 부분 |
예를 들어, 17 MOD 5은 2이고, 17 DIV 5은 3입니다.
관계 연산자
두 값을 비교하여 부울린 결과를 도출합니다: =, <, <=, >, >=, 그리고 <> (등하지 않음).
논리 연산자
조건들을 연결합니다: AND (둘 다 참이어야 함), OR (최소 하나 참이어야 함), NOT (참/거짓 반전).

IF Age >= 13 AND Age <= 19
THEN
OUTPUT "Teenager"
ENDIF
8.1
문자열 처리
문자열은 문자들로 이루어집니다. 유용한 연산:
- 길이(length) — 문자열 내 문자의 수;
- 부분 문자열(substring) — 문자열에서 추출된 작은 부분;
- 대문자(upper case) — 문자를 대문자로 변환;
- 소문자(lower case) — 문자를 소문자로 변환.
name ← "Computer"
OUTPUT LENGTH(name) // 8
OUTPUT SUBSTRING(name, 1, 4) // "Comp"
OUTPUT UCASE(name) // "COMPUTER"
OUTPUT LCASE(name) // "computer"
(첫 번째 문자는 언어에 따라 위치 0 또는 위치 1로นับ됩니다.)
SUBSTRING: 문자열의 일부를 가져오기
첫 번째 문자는 위치 1에 있습니다. SUBSTRING(Word, Start, Length)는 Start 위치에서 시작하여 Length 개 수의 문자를 가져옵니다 — 두 핸들을 드래그하여 생성된 호출을 읽어보십시오.
| English | 한국어 |
|---|---|
| substring/ˈsʌbstrɪŋ/ | 서브스트링 |
| upper case/ˈʌpə keɪs/ | 대문자(upper case) |
| lower case/ˈləʊə keɪs/ | 소문자(lower case) |
8.1
중첩된 문장
**중첩된 문장(nested statement)**은 하나의 제어 구조가 다른 구조 안에 배치된 것입니다. 선택과 반복을 중첩할 수 있습니다.
FOR I ← 1 TO 3
IF MOD(I, 2) = 0
THEN
OUTPUT I, " is even"
ELSE
OUTPUT I, " is odd"
ENDIF
NEXT I
3단계 이상의 중첩을 작성할 필요는 없습니다.
| English | 한국어 |
|---|---|
| nested statement/ˈnestɪd ˈsteɪtmənt/ | 중嵌套 statement(nested statement) |
8.1
프로시저와 함수
코드를 반복하지 않도록程序를 명명된 블록으로 분리할 수 있습니다.
- **절차(procedure)**는 작업을 수행하는 명명된 코드 블록입니다.
CALL로 실행합니다. - **함수(function)**은 절차와 유사하지만, 값을 반환하여 호출된 위치로 보냅니다.
**파라미터(parameter)**는 절차나 함수로 전달되는 값(최대 3개)입니다.
PROCEDURE Greet(PersonName : STRING)
OUTPUT "Hello ", PersonName
ENDPROCEDURE
CALL Greet("Sam")
FUNCTION Square(N : INTEGER) RETURNS INTEGER
RETURN N * N
ENDFUNCTION
Answer ← Square(5) // answer is 25
로컬 변수와 글로벌 변수
- **로컬 변수(local variable)**는 절차나 함수 내부에 선언됩니다. 그곳에서만 사용할 수 있습니다.
- **글로벌 변수(global variable)**는 메인 프로그램에 선언됩니다. 어디서나 사용할 수 있습니다.
로컬 변수는 안전합니다.程序的 다른 부분에서 실수로 변경될 수 없기 때문입니다.
| English | 한국어 |
|---|---|
| procedure/prəˈsiːdʒə/ | 절차 |
| function/ˈfʌŋkʃn/ | 함수(function) |
| parameter/pəˈræmɪtə/ | 파라미터 |
| local variable/ˈləʊkl ˈveərɪəbl/ | 로컬 변수 |
| global variable/ˈɡləʊbl ˈveərɪəbl/ | 전역 변수 |
| library routine/ˈlaɪbrəri ruːˈtiːn/ | 라이브러리 루틴(library routine) |
8.1
라이브러리routine
라이브러리 routine은 미리 준비된 코드로, 바로 사용할 수 있습니다. 다음을 알아야 합니다:
| routine | 역할 |
|---|---|
MOD |
나누기의 나머지를 제공 |
DIV |
나누기의 정수 부분을 제공 |
ROUND |
실수를 소수점 몇 자리까지 반올림 |
RANDOM |
무작위 번호를 제공 |
8.1
유지보수 가능한 프로그램 작성
유지보수 가능한(maintainable) 프로그램은 다른 사람들이 나중에 쉽게 읽고 수정할 수 있는 것입니다. 만들려면:
- 유의미한 식별자(meaningful identifiers) 사용 — 변수, 상수, 배열, 절차, 함수에 명확한 이름 (
totalScore,x대신); - **주석(comments)**을 추가하여 코드의 각 부분이 무엇을 하는지 설명합니다;
- 절차와 함수를 사용하여 작업을 작은 블록으로 분리합니다.
| English | 한국어 |
|---|---|
| maintainable/meɪnˈteɪnəbl/ | 유지 가능(maintainable) |
| meaningful identifiers/ˈmiːnɪŋfl aɪˈdentɪfaɪəz/ | 의미 있는 식별자(meaningful identifiers) |
| comments/ˈkɒments/ | 비고 |
8.2
배열
Syllabus
| 응시자가 다음을 수행할 수 있어야 함: | 참고 사항 및 가이드라인 |
|---|---|
| 1 일차원(1D) 및 이차원(2D) 배열을 선언하고 사용함 | |
| 2 배열의 사용을 이해함 | • 변수를 배열의 인덱스로 사용하는 것 포함 |
| 3 반복문을 사용하여 배열에 값을 입력하고 값을 읽습니다. | • 첫 번째 인덱스는 0 또는 1일 수 있습니다. • 중첩 반복문 포함 |
출처: Cambridge International syllabus
**배열(array)**는 동일한 타입의 여러 값을 인덱스(위치 번호)를 통해查找하는 단일 변수입니다.
1차원 배열
1차원(1D) 배열은 단일 목록과 같습니다.
DECLARE Scores : ARRAY[1:5] OF INTEGER
Scores[1] ← 90
Scores[2] ← 75
OUTPUT Scores[1]

루프를 사용하여 배열을 채우거나 읽을 수 있습니다:
FOR I ← 1 TO 5
INPUT Scores[I]
NEXT I
2차원 배열
2차원(2D) 배열은 행과 열이 있는 표와 같습니다. 두 개의 인덱스를 사용합니다.
DECLARE Grid : ARRAY[1:3, 1:3] OF INTEGER
Grid[1, 1] ← 5
Grid[2, 3] ← 8

루프 내부에 루프를 사용하여 2D 배열을 읽습니다(중첩 반복).
배열(Data arrays)
한 행과 한 열을 선택하여 하나의 셀을 읽으세요. 캠브리지 배열은 1부터 시작하므로, 2차원 요소는 괄호 하나만 사용하여 표현합니다 — Grid[2, 3].
| English | 한국어 |
|---|---|
| array/əˈreɪ/ | 배열 (array) |
| index/ˈɪndeks/ | インデックス |
| one-dimensional (1D) array/wʌn daɪˈmenʃənl əˈreɪ/ | 일차원 배열(one-dimensional (1D) array) |
| two-dimensional (2D) array/tuː daɪˈmenʃənl əˈreɪ/ | 이차원 배열(two-dimensional (2D) array) |
8.3
파일 처리
Syllabus
| 응시자가 다음을 수행할 수 있어야 함: | 참고 사항 및 가이드라인 |
|---|---|
| 1 프로그램에 의해 사용될 데이터를 파일에 저장하는 목적 이해하기 | |
| 2 파일을 열고, 닫고, 읽기 및 쓰기에 사용하기 | • 다음 포함: – 단일 데이터 항목 읽기 및 쓰기 – 텍스트 줄 읽기 및 쓰기 |
출처: Cambridge International syllabus
프로그램은 데이터를 파일에 저장하여 프로그램 종료 후에도 유지할 수 있습니다. 파일을 열고, 사용한 후 닫아야 합니다.
OPENFILE "data.txt" FOR WRITE
WRITEFILE "data.txt", "Hello"
CLOSEFILE "data.txt"
OPENFILE "data.txt" FOR READ
READFILE "data.txt", Line
CLOSEFILE "data.txt"
단일 데이터 항목이나 전체 텍스트 줄을 읽고 쓸 수 있습니다. 작업이 끝나면 파일을 반드시 닫으십시오.
| English | 한국어 |
|---|---|
| file/faɪl/ | 파일 |
8.3
시험 팁
- 변수는 프로그램 실행 중 변경될 수 있지만, 상수는 고정됩니다. 다섯 가지 데이터 유형을 배우세요: integer, real, char, string, Boolean.
- 모든 프로그램은 세 가지 구조로 구성됩니다: 순서(sequence), 선택(selection, IF / CASE), 반복(iteration, loops).
- WHILE 루프는 본문을 실행하기 전에 조건을 검사하므로, 0회 실행될 수도 있습니다. REPEAT … UNTIL 루프는 본문을 실행한 후에 조건을 검사하므로, 최소 한 번은 반드시 실행됩니다.
MOD은 나눈 나머지를,DIV은 정수 부분을 반환합니다:17 MOD 5의 결과는 2이며,17 DIV 5의 결과는 3입니다.- **함수(function)**는 값을 반환하지만, **절차(procedure)**는 그렇지 않습니다. 로컬(local) 변수는 블록 내에서만 작동하고, 글로벌(global) 변수는 어디서든 작동합니다.
| English | 한국어 |
|---|---|
| sequence/ˈsiːkwəns/ | 순서(시퀀스) |
| selection/sɪˈlekʃn/ | 선택 |
| iteration/ˌɪtəˈreɪʃn/ | 반복(iteration) |
이 주제에 대한 인터랙티브 수업
즉시 체크 기능 exercises를 통해 단계별로 진행하세요.