본문 바로가기

프로그래밍

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
응시자가 다음을 수행할 수 있어야 함: 참고 사항 및 가이드라인
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)에 대한 관련적이고 적절한 주석 • 다음에 대해 의미 있는 식별자를 사용: – 변수 – 상수 – 배열 – 절차와 함수

출처: Cambridge International syllabus

변수는 프로그램 실행 중에도 변경 가능한 값을 저장하는 이름이 붙은 저장 공간입니다. 상수는 값이 고정되어 변경되지 않는 이름이 붙은 저장 공간입니다.

variable named age holding the value 16
변수는 값이 변경 가능한 이름이 붙은 저장 공간입니다
화면에 표시된 프로그램 코드 줄들
변수와 상수는 프로그램 코드 내에서 설정된 값의 이름이 붙은 저장 공간입니다

사용하기 전에 선언해야 합니다(이름과 유형을 명시):

DECLARE Score : INTEGER
DECLARE Name : STRING
CONSTANT Pi ← 3.142
두 개의 RAM 메모리 모듈
프로그램이 실행될 때 변수는 컴퓨터의 메모리(RAM)에 저장됩니다

변하지 않는 값(Pi 등)에는 상수를 사용하여 한 곳에서 설정하고 쉽게 읽을 수 있도록 합니다.

탐색하기

변수와 대입

각 줄을 따라가며 변수가 새로운 값을 어떻게 갖는지 확인하세요.

English 한국어
variable/ˈveərɪəbl/ 变量
constant/ˈkɒnstənt/ 일정함
declare/dɪˈkleə/ 선언(declare)
integer/ˈɪntɪdʒə/ 정수
string/strɪŋ/ 문자열(string)
8.1

데이터 유형

데이터 유형은 변수가 어떤 종류의 값을 저장하는지 나타냅니다. 기본 5가지 유형을 반드시 알아야 합니다.

데이터 유형: 정수 (7), 실수 (3.5), char ('A'), string ("hello"), boolean (true/false)
기본 데이터 타입: 정수(integer), 실수(real), 문자(char), 문자열(string), 부울리안(boolean)
유형 보유 값 예시
정수 (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"
두 개의 루프 흐름도: WHILE는 본체 전에 조건을 테스트하고; REPEAT은 본체를 먼저 실행한 후 테스트함
전제 조건(WHILE) 루프는 본체 전에 테스트하므로 0회 실행될 수 있으며, 후위 조건(REPEAT) 루프는 본체 후에 테스트하므로 최소 한 번 실행됩니다
탐색하기

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.
count = count + 1은 1씩 증가; total = total + value는 누적 합계에 더함
카운터는 1씩 증가하며, 총계(total)는 누적 합계를 만듭니다

4, 7, 5의 값에 대한 루프를 추적하는 표: total은 0, 4, 11, 16으로 변하고 count는 0, 1, 2, 3으로 변함 *추적 표는 합산 및 카운팅 루프를 단계별로 따릅니다

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 (참/거짓 반전).

연산자의 세 가족: 플러스와 타임 같은 산술 연산자는 숫자를, less-than 같은 관계 연산자는 비교하여 참/거짓을, 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]
인덱스 1부터 5까지 표시된 한 줄의 5개 상자가 값들을 포함하고 있으며, 인덱스 2의 값이 75로 강조됨
1D 배열은 하나의 변수에 여러 값을 저장하며, 각 값은 인덱스로 접근합니다

루프를 사용하여 배열을 채우거나 읽을 수 있습니다:

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
행과 열 번호가 매겨진 3x3 격자; 행 2, 열 3의 셀이 강조되어 'grid row 2 column 3'로 표시됨
2D 배열은 표입니다; 각 값은 두 개의 인스 [행, 열]으로 찾습니다

루프 내부에 루프를 사용하여 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를 통해 단계별로 진행하세요.

과거 시험지

IGCSE 컴퓨터 과학 내 추가 주제

로그인 또는 계정 만들기

IGCSE, A-Level & AP