93
정보 Sangwook Lee Deogi High School

Sangwook Lee Deogi High Schooledpia.net/info/materials/3-3.pdf4 3-1 프로그래밍환경(p122) •프로그래밍언어의종류를설명할수있다. •프로그래밍언어의개발환경및특징을이

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

정보

Sangwook LeeDeogi High School

III 문제 해결과 프로그래밍

1 추상화

2 알고리즘

3 프로그래밍

3

3 프로그래밍

3-1 프로그래밍 환경3-2 변수와 자료형3-3 연산자3-4 표준 입출력과 파일 입출력3-5 제어 구조의 활용3-6 배열의 활용3-7 함수의 활용

4

3-1 프로그래밍 환경 (p122)

• 프로그래밍 언어의 종류를 설명할 수 있다.

• 프로그래밍 언어의 개발 환경 및 특징을 이

해할 수 있다.

학습 목표

5

• 프로그램(program)

– 컴퓨터가 해야 될 일을 지시한 명령어들의 집합

– 스마트폰, 태블릿PC 등에서는 ‘앱’이라는 용어를 사용

프로그래밍의 이해

6

프로그램이란

알고리즘을 작성

알고리즘이란?

문제를 해결하기 위한 구체적인 절차

데이터를 표현 하고,

그렇게 표현된

데이터를 처리 하는 것

자료 구조를 작성

자료 구조란?

자료를 효율적으로이용할 수 있도록저장하는 방법

7

프로그램이란

데이터를 표현한다는 것=

자료 구조를 작성한다는 것=

자료 저장 방법을 결정한다는 것=

자료 저장 형태와입출력 방식을 결정한다는 것

8

• 프로그래밍 (programming)

– 주어진 문제를 해결하기 위해 컴퓨터 프로그램을 만들고 실행하는전 과정

– 절차

• 문제 분석 → 입출력 설계 → 알고리즘 설계 → 코딩 → 프로그램 실행

★ 코딩 (coding)

– 주어진 문제를 해결하기 위해 설계한 자료구조와 알고리즘을 특정한 프로그래밍 언어를 사용하여 작성하는 것

– 좁은 의미의 프로그래밍

프로그래밍의 이해

9

• 프로그래밍 언어 (programming language)

– 컴퓨터에게 작업을 지시하기 위해 만든 언어

– 종류

• 저수준 언어: 어셈블리

• 고수준 언어: BASIC, C, C++, JAVA, SCRATCH

[1] 저급 언어와 고급 언어 (p123)

10

• 저수준 언어 vs 고수준 언어

[1] 저급 언어와 고급 언어 (p123)

고수준 언어 저수준 언어

• 사람이 이해하기 쉬운 언어

• 처리(번역) 속도가 느림

• 프로그램 작성이 쉬움

• 호환성 높음

→ 다양한 CPU에서 실행

• 기계가 이해하기 쉬운 언어

• 처리(번역) 속도가 빠름

• 프로그램 작성이 어려움

• 호환성 낮음

→ 특정 CPU에서만 실행

C Language Assembly Language Machine Language

11

• 언어 번역 프로그램

– 코딩 결과(소스 코드)를 기계어(실행 파일)로 변환하는 프로그램

– 종류

• 저수준 언어 번역 프로그램: 어셈블러

• 고수준 언어 번역 프로그램: C 컴파일러, JAVA 컴파일러 등

[2] 언어 번역 프로그램의 종류 (p123)

12

• 컴파일러 vs 인터프리터

– 컴파일러

• 소스 코드를 한꺼번에 어셈블리 코드나 실행 가능한 기계어로변환

– 인터프리터

• 소스 코드를 한 줄씩 실행 가능한 기계어로 변환 후 바로 실행

[2] 언어 번역 프로그램의 종류 (p123)

13

• 파이썬(Python)이란

– 네덜란드 프로그래머인 귀도 반 로섬이 1991년에 발표

– 지금은 파이썬 소프트웨어 재단에서 관리

[3] 파이썬 프로그램 개발 환경 (p124)

Guido van Rossum

14

• 파이썬 언어의 특징

– 변수를 선언하지 않고 사용 가능

– 들여쓰기를 통해 블록 구분

– 풍부한 라이브러리 제공

[3] 파이썬 프로그램 개발 환경 (p124)

라이브러리(library)란…미리 만들어 놓은 함수의 집합

블록이란…관련 있는 문장들의 묶음으로처리 범위를 결정하는 단위

라이브러리를 활용하면프로그램을 간결하고 빠르게 작성 가능

15

★ 라이브러리(library)

– 유용한 함수를 미리 만들어 모아 놓은 것

★ 함수(function)

– 특정 기능을 수행하는 작은 프로그램

★ 모듈(module)

– 관련된 함수를 포함하고 있는 파일

[3] 파이썬 프로그램 개발 환경 (p124)

라이브러리에 있는 함수를 사용하기 위해서는함수를 포함하고 있는 모듈을 불러오면 됨

16

※ IDE

– Integrated Development Environment(통합개발환경)

– 에디터, 편집, 컴파일, 실행 등 프로그램 개발에 필요한 모든 기능을 통합적으로 제공하는 소프트웨어

[3] 파이썬 프로그램 개발 환경 (p124)

17

• IDLE

– Integrated Development and Learning Environment

– 파이썬의 기본 IDE

– IDLE의 두 가지 창

[3] 파이썬 프로그램 개발 환경 (p124)

셸 창편집 창

18

• IDLE 편집 창 띄우는 방법

① 바탕화면 또는 시작 메뉴에서 IDLE 실행하여 셸 창 띄움

[3] 파이썬 프로그램 개발 환경 (p124)

19

• IDLE 편집 창 띄우는 방법

② 셸 창에서 [File]–[New File] 선택하여 편집 창 띄움

[3] 파이썬 프로그램 개발 환경 (p124)

20

1. 편집 창에서 소스 코드 작성

[예제] 30명의 학생 발표 순서 정하기 (p124)

import random

nums = [n for n in range(1,31)]random.shuffle(nums)

print("발표 순서: ")print(nums)

21

2. [File]-[Save] 선택하여 바탕 화면에 “발표 순서”로 저장

[예제] 30명의 학생 발표 순서 정하기 (p124)

1

2

3

22

3. [Run]-[Run Module] 선택하여 프로그램 실행

[예제] 30명의 학생 발표 순서 정하기 (p124)

23

• 소스 코드 설명

[예제] 30명의 학생 발표 순서 정하기 (p124)

import random

nums = [n for n in range(1,31)]random.shuffle(nums)

print("발표 순서: ")print(nums)

random 모듈을불러온다

1부터31 직전까지값을차례로nums에저장한다

random 모듈에포함된shuffle( ) 함수를이용

하여nums에저장된숫자들을 무작위로섞는다

화면에“발표순서: ”를표시한다.

nums에들어있는숫자들을모두출력한다

24

• 터틀(turtle) 모듈

– 직선, 원, 도형 등을 사용하여 그림을 그리는 모듈

• 터틀 모듈 불러오는 방법 2가지

[3] 파이썬 프로그램 개발 환경 (p125)

import turtle

from turtle import *

or

25

• 터틀 모듈의 명령어

– forward(x) / backward(x)

• x픽셀만큼 전진 / x픽셀만큼 후진

– left(x) / right(x)

• 왼쪽으로 x도 회전 / 오른쪽으로 y도 회전

– circle(x)

• 반지름이 x픽셀인 원을 그림

– pencolor(‘x’)

• 선의 색상을 x색으로 설정 (예) red, blue, green, …

– clear() / home()

• 화면 지움 / 거북이를 처음 위치로 이동

[3] 파이썬 프로그램 개발 환경 (p125)

26

[예제] 정삼각형 그리기 (p125)

?from turtle import *forward(200)left(120)forward(200)left(120)forward(200)

27

[예제] 정육각형 그리기 (p125)

28

[예제] 정육각형 그리기 (p125)

from turtle import *

forward(100)left(60)forward(100)left(60)forward(100)left(60)forward(100)left(60)forward(100)left(60)forward(100)left(60)

from turtle import *

n = 0while n < 6:

forward(100)left(60)n = n + 1

만약, n=n+1 이 없다면? 무한 반복!

조건식

반복 문장

29

3 프로그래밍

3-1 프로그래밍 환경3-2 변수와 자료형3-3 연산자3-4 표준 입출력과 파일 입출력3-5 제어 구조의 활용3-6 배열의 활용3-7 함수의 활용

30

3-2 변수와 자료형 (p126)

• 자료형의 종류와 특성을 설명할 수 있다.

• 변수를 활용하여 프로그램을 작성할 수 있다.

학습 목표

31

• 변수란

– 프로그램을 실행할 때 필요한 자료(값)를 저장하는 공간

[1] 자료의 종류와 특성 (p127)

32

• 변수에 값을 넣는 방법

[1] 자료의 종류와 특성 (p127)

변수명 = 값;

(예)

C 또는 JAVA의 경우

33

• 변수 선언이란

– 변수를 사용하기 전에 미리 만드는 것

• 변수 선언 방법

[1] 자료의 종류와 특성 (p127)

자료형 변수명;

ex) int x;

자료형이란…변수에 저장하는 값의 형태로서 int(정수), float(실수) 등이 있음

→ 정수를 저장하는 변수 x를 만드시오~

C 또는 JAVA의 경우

34

[1] 자료의 종류와 특성 (p127)

파이썬에서는…선언 과정 없이 변수를 바로 사용 가능!

int n;

n = 123;

n = 123

<변수 n에 정수 123을 저장하는 C와 Python 코드>

C 코드 Python 코드

35

• 자료형이란

– 변수에 저장하는 값의 형태

• 자료형의 종류

– 정수형

– 실수형

– 문자열형

– 리스트

– 튜플

– 딕셔너리

[1] 자료의 종류와 특성 (p127)

36

• 자료형의 종류

– 정수형(int)

예) 3 / 92

– 실수형(float)

예) 3.14 / 11.27

– 문자열형(str)

예) “abc” / “이상욱”

– 리스트(list)

예) [10, 20, 30] / [“abc”, “def”] / [7.2, “목요일”]

[1] 자료의 종류와 특성 (p127)

문자열형은 반드시…큰따옴표나 작은따옴표로 묶어야 됨

name = sangwook (X)name = ‘sangwook’ (O)

리스트 값은 여러 값들의 묶음 형태로서서로 다른 종류의 값들의 묶음도 가능

37

• 공통점

– 여러 자료들을 하나의 이름으로 연속적으로(일렬로) 저장하는 공간

배열 vs 리스트

38

• 차이점

배열 vs 리스트

배열 리스트

서로 다른 자료형 저장 불가능 가능

전체 크기(자료 저장 공간 수)

고정 가변

기억 장소 저장 형태 연속 비연속

39

• 변수명이란

– 변수를 구분하기 위한 변수의 이름

• 변수명 작성 규칙

– 첫 번째 문자는 영문자, 한글, ‘_’만 가능

– 두 번째 문자부터는 영문자, 한글, ‘_’, 숫자 가능

– 공백과 하이픈(-)은 사용 불가

– 대소문자를 구분

예) num과 Num은 다른 변수

– 예약어 사용 불가

예) for = 27 (×)

[2] 변수의 활용 (p128)

예약어(reserved word)

if, while 등과 같이프로그램에서 사용하기 위해미리 만들어 놓은 단어

40

• 변수명 작성 권장 사항

– 저장된 값의 의미를 알 수 있는 이름을 사용할 것

• abc (×)

• num (△)

• name (○)

– 여러 단어로 이루어진 경우, 가독성을 높이기 위해 이어지는 단어의 첫 번째 문자를 대문자로 작성할 것

• studentname (×)

• student_name (△)

• studentName (○)

[2] 변수의 활용 (p128)

41

• 변수 str1과 str2에 문자열을 저장하고 출력한 후, 두 변수의 값을 교환한 후 다시 출력하는 프로그램을 작성하시오

[예제] 변숫값 교환 (p128)

str1 = You need Python.

str2 = Life is too short,

str1 = Life is too short,

str2 = You need Python.

<프로그램 실행 결과>

42

1. IDLE 실행

바탕화면 또는 시작 메뉴에서 IDLE 실행

2. 편집 창 띄우기

셸 창에서 [File]-[New File]

☞ 단축키: <Ctrl + N>

[예제] 변숫값 교환 (p128)

만약, 기존 편집 창이 띄워져 있으면기존 편집 창에서 [File]-[New File]

43

3. 코드 작성

[예제] 변숫값 교환 (p128)

str1 = "You need Python."

str2 = "Life is too short,"

print("str1 =", str1)

print("str2 =", str2)

temp = str1

str1 = str2

str2 = temp

print("str1 =", str1)

print("str2 =", str2)

임시 변수 temp를 사용하여 str1과 str2의 값을 교환하는 소스 코드

44

4. 저장

① [File]-[Save]

② 파일명 입력 후 저장

5. 번역 및 실행

[Run]-[Run Module]

☞ 단축키: <F5>

[예제] 변숫값 교환 (p128)

45

• 동일한 소스 코드

[예제] 변숫값 교환 (p128)

str1 = "You need Python."

str2 = "Life is too short,"

print("str1 =", str1)

print("str1 =", str2)

str1, str2 = str2, str1

print("str1 =", str1)

print("str1 =", str2)

임시 변수를 사용하지 않고 str1과 str2의 값을 교환하는 소스 코드

46

• 프로그램 실행 후 각 변수의 최종값을 적으시오

스스로 해결하기 (p128)

num1:

num2:

sum:

200

300

500

sum = 0

num1 = 100

num1 = num1+100

num2 = 300

sum = num1+num2

<변수의 최종값>

47

• 변수 name의 자료형이 출력되도록 프로그램을 완성하시오

스스로 해결하기 (p129)

My name is 홍길동

<class 'str'>

※ str: 문자열 자료형

name = "홍길동"

print("My name is", name)

type(name)print(type(name))

실행 결과

48

• 다음 프로그램의 실행 결과는?

스스로 해결하기 (p129)

pi = 3.14

area = 5 * 5 * pi

print(type(area))

<class 'float'>

실행 결과

※ float: 실수 자료형

49

• 다음 프로그램의 실행 결과는?

스스로 해결하기 (p129)

thisYear = 2016

myBirthYear = "2000"

age = thisYear - myBirthYear

print(age)

TypeError: unsupported operand type(s) for -: 'int' and 'str'

실행 결과

50

3 프로그래밍

3-1 프로그래밍 환경3-2 변수와 자료형3-3 연산자3-4 표준 입출력과 파일 입출력3-5 제어 구조의 활용3-6 배열의 활용3-7 함수의 활용

51

3-3 연산자 (p130)

• 다양한 연산자의 종류와 기능을 설명할 수 있다.

• 연산자를 활용한 프로그램을 작성할 수 있다.

학습 목표

52

• 연산자란

– 자료에 어떤 작업을 지시하는 기호

• 연산자 종류

– 산술 연산자

– 비교 연산자

– 논리 연산자

[1] 다양한 연산자의 종류 (p131)

53

• 산술 연산자

– 덧셈, 뺄셈, 곱셈, 나눗셈을 하는 연산자

• 산술 연산자 종류

[1] 다양한 연산자의 종류 (p131)

연산자 기능 사용 예

+ 덧셈 3 + 5 →

- 뺄셈 3 - 5 →

* 곱셈 7 * 4 →

/ 나눗셈 7 / 4 →

% 나머지 7 % 4 →

8

-3

28

1.75

3

54

• 비교 연산자

– 값을 비교하여 참(True), 거짓(False)을 판별하는 연산자

• 비교 연산자 종류

[1] 다양한 연산자의 종류 (p131)

연산자 기능 사용 예

< 작다 11 < 14 →

> 크다 11 > 14 →

<= 작거나 같다 11 <= 14 →

>= 크거나 같다 11 >= 14 →

== 같다 11 == 14 →

!= 같지 않다 11 != 14 →

True

False

True

False

False

True

55

• 논리 연산자

– 참(True), 거짓(False) 값에 대하여 논리 연산을 하는 기호

• 논리 연산자 종류

[1] 다양한 연산자의 종류 (p131)

연산자 기능 사용 예

and 논리곱 True and False →

or 논리합 True or False →

not 논리 부정 not True →

False

True

False

연산에 사용되는 값과 연산의 결과 값이 모두참(True)과 거짓(False)으로만 이루어진 연산

56

• 집합 개념으로 논리 연산 설명하기

– AND: 교집합

– OR: 합집합

– NOT: 여집합

[1] 다양한 연산자의 종류 (p131)

True AND False → False

어떤 집합 A에는 포함되고 다른 집합 B에는 안 포함되는 자료는… A∩B에 안 포함됨

True OR False → True

어떤 집합 A에는 포함되고 다른 집합 B에는 안 포함되는 자료는… A∪B에 포함됨

NOT True → False

어떤 집합 A에 포함되는 자료는… A⊂에 안 포함됨

57

• 아이디와 패스워드를 입력 받아서 미리 저장된 값과 비교하여 일치여부를 판단하는 프로그램을 작성하시오.

[예제] 아이디와 패스워드 검사 (p132)

>>>

====================

아이디: python

패스워드: 1234

True

True

True

>>>

58

• 세부 기능

– 아이디와 패스워드를 입력 받음

– 아이디 일치하면 True, 불일치하면 False 출력

– 패스워드 일치하면 True, 불일치하면 False 출력

– 아이디, 패스워드 모두 일치하면 True, 하나라도 불일치하면False 출력

[예제] 아이디와 패스워드 검사 (p132)

59

1. IDLE 실행

바탕화면 또는 시작 메뉴에서 IDLE 실행

2. 편집 창 띄우기

셸 창에서 [File]-[New File] 선택

☞ 단축키: <Ctrl + N>

[예제] 아이디와 패스워드 검사 (p132)

만약, 기존에 사용했던 편집 창이 띄워져 있으면편집 창에서 [File]-[New File] 선택

60

3. 코드 작성

[예제] 아이디와 패스워드 검사 (p132)

id = "python"

pw = "1234"

answer1 = input("아이디: " )

answer2 = input("패스워드: " )

print(id == answer1)

print(pw == answer2)

print(id == answer1 and pw == answer2)아이디와 패스워드가 모두 일치했을 때 True를 출력하는 코드

61

4. 저장

① [File]-[Save]

② 파일명 입력 후 저장

5. 번역 및 실행

[Run]-[Run Module] 선택

☞ 단축키: <F5>

[예제] 아이디와 패스워드 검사 (p132)

62

• 사용자가 금액을 입력하면 해당 금액을 최소한의 지폐 개수로 나타내는 프로그램을 작성하시오.

[스스로 해결하기] 최소 지폐 개수 출력 (p133)

(예)사용자가 128,000원 입력하면…

5만원 2장, 1만원 2장, 5천원 1장, 1천원 3장을 출력

>>>

=========

Total Money: 128000

50000원: 2장, 10000원: 2장, 5000원: 1장, 1000원: 3장

>>>

63

• 세부 기능

– 금액을 키보드로 입력 받음

– m50000 변수에 5만원 지폐 최대 개수 저장

– m10000 변수에 1만원 지폐 최대 개수 저장

– m5000 변수에 5천원 지폐 최대 개수 저장

– m1000 변수에 1천원 지폐 개수 저장

– 각각의 변숫값 출력

[스스로 해결하기] 최소 지폐 개수 출력 (p133)

64

• 소스 코드

[스스로 해결하기] 최소 지폐 개수 출력 (p133)

money = int(input("Total Money: "))

m50000 = money 50000

money = money 50000

m10000 = money 10000

money = money 10000

m5000 = money 5000

money = money 5000

m1000 = money 1000

money = money 1000

print("5만원: %d장, 1만원: %d장, 5천원: %d장, 1천원: %d장" %

(m50000, m10000, m5000, m1000))

/

%

/

%

/

%

/

%

문자열(str) 형을 정수(int) 형으로 변환

m50000에 2.56 저장

money에 28000 저장

128000 입력 했다고 가정하면…

m10000에 2.8 저장

money에 8000 저장

m5000에 1.6 저장

money에 3000 저장

m1000에 3.0 저장

money애 0 저장

5만원 최대 지폐 수 저장

5만원으로 나눈 나머지 저장

1만원 최대 지폐 수 저장

1만원으로 나눈 나머지 저장

65

3 프로그래밍

3-1 프로그래밍 환경3-2 변수와 자료형3-3 연산자3-4 표준 입출력과 파일 입출력3-5 제어 구조의 활용3-6 배열의 활용3-7 함수의 활용

66

3-4 표준 입출력과 파일 입출력 (p134)

• 표준 입출력과 파일 입출력의 개념과 필요성을 설명

할 수 있다.

• 표준 입출력과 파일 입출력을 활용하여 문제를 해결

할 수 있다.

학습 목표

67

[1] 프로그램 처리 과정 (p135)

데이터 입력

알고리즘에 의한 처리

데이터 출력

68

• 표준 입출력이란

– 표준 입력 (장치)로부터 자료를 입력 받고, 표준 출력 (장치)에 자료를 출력하는 것

• 파이썬의 표준 입출력 함수

– 표준 입력 함수

• input()

– 표준 출력 함수

• print()

[2] 표준 입출력 (p135)

일반적으로표준 입력 장치는 키보드이고 표준 출력 장치는 모니터이며

표준 입력 장치와 표준 출력 장치는 변경 가능

69

• print()

– 괄호 안의 문자열이나 변숫값을 화면으로 출력하는 역할

– 문자열을 출력하려면 작은따옴표 또는 큰따옴표를 사용하고 변숫값을 출력할 때에는 변수명 사용

– 출력하고자 하는 값이 여러 개인 경우에는 콤마로 구분

[2] 표준 입출력 (p135)

good_day = "좋은 하루"

print(good_day,"보내세요!")

<print() 함수 사용 예>

콤마로 구분된 각각의 값 사이에는공백 한 개가 추가되어 출력

70

• input()

– 문자열을 화면에 출력한 후 키보드로부터 문자열을 입력 받는 역할

– 출력할 문자열은 작은따옴표 또는 큰따옴표로 묶음

– 입력 받은 문자열을 저장하기 위해 변수와 등호를 함께 사용

– 입력 받은 문자열을 정수로 변환하기 위해서 int() 함수를 사용

[2] 표준 입출력 (p135)

age = input("나이를 입력해 주세요.")

print(20-int(age), "년 후면 20살이시네요!")

<input() 함수 사용 예>

콤마 뒤의 공백은 의미 없음

71

[예제] 영화 관람료 출력 (p135)

>>>

====================

안녕하세요? 티켓 금액은 7000 원입니다.

영화를 관람하실 인원을 입력해 주세요: 30

예매하실 인원은 30 명, 총 금액은 210000 원입니다.

>>>

<실행 화면>

영화 관람 인원을 입력 받고총 금액을 출력하는 프로그램

72

• 프로그램 세부 기능

– 티켓 금액 출력

– 관람 인원 입력

– 관람 인원 및 총 금액 출력

[예제] 영화 관람료 출력 (p135)

>>>

====================

안녕하세요? 티켓 금액은 7000 원입니다.

영화를 관람하실 인원을 입력해 주세요: 30

예매하실 인원은 30 명, 총 금액은 210000 원입니다.

>>>

<실행 화면>

73

• 소스 코드

[예제] 영화 관람료 출력 (p135)

fee = 7000

print("안녕하세요? 티켓 금액은", fee, "원입니다.")

num = input("영화를 관람하실 인원을 입력해 주세요: ")

total = fee * int(num)

print("예매하실 인원은",num,"명, 총 금액은",total,"원입니다.")

74

• 파일 입출력이란

– 파일로부터 자료를 입력 받고, 파일에 자료를 출력하는 것

• 파이썬의 파일 입출력 함수

– 파일 열기 함수

• open()

– 파일 입력 함수

• read(), readline()

– 파일 출력 함수

• write()

– 파일 닫기 함수

• close()

[3] 파일 입출력 (p136)

75

• 파일 입출력 함수의 종류 및 사용 방법

[3] 파일 입출력 (p136)

76

[예제] 영화 예매 프로그램 (p136)

영화 제목을 입력해주세요: 이미테이션 게임

티켓 비용을 입력해주세요: 7000

영화 제목: 이미테이션 게임

티켓 비용: 7000

<실행 화면>

입력 받은 영화 제목과 티켓 비용을파일에 저장한 후

파일 내용을 읽어서 출력하는 프로그램

77

• 프로그램 세부 기능

– 영화 제목, 티켓 비용을 키보드로부터 입력 받음

– 입력 받은 영화 제목, 티켓 비용을 파일에 씀

– 영화 제목, 티켓 비용을 파일로부터 읽음

– 읽은 영화 제목, 티켓 비용을 화면에 출력

[예제] 영화 예매 프로그램 (p136)

영화 제목을 입력해주세요: 이미테이션 게임

티켓 비용을 입력해주세요: 7000

영화 제목: 이미테이션 게임

티켓 비용: 7000

<실행 화면>

78

• 소스 코드

[예제] 영화 예매 프로그램 (p136)

title = input("영화 제목을 입력해주세요: ")

fee = input("티켓 비용을 입력해주세요: ")

f1 = open("movie.txt", "w") #파일에 쓰기(출력) 위해 파일 열기

f1.write(title + "\n")

f1.write(fee)

f1.close()

f1 = open("movie.txt", "r") #파일로부터 읽기(입력) 위해 파일 열기

title = f1.readline()

fee = f1.readline()

f1.close()

print("영화 제목:", title)

print("티켓 비용:", fee)

movie.txt 파일의 첫 줄에 title 값을, 둘째 줄에 fee 값을 쓰는 코드

movie.txt 파일의 첫 줄을 읽어 title에, 둘째 줄을 읽어 fee에 저장하는 코드

79

3 프로그래밍

3-1 프로그래밍 환경3-2 변수와 자료형3-3 연산자3-4 표준 입출력과 파일 입출력3-5 제어 구조의 활용3-6 배열의 활용3-7 함수의 활용

80

3-5 제어 구조의 활용 (p138)

• 순차, 반복, 선택 구조를 활용한 프로그램을 작성할

수 있다.

• 중첩 제어 구조를 활용한 프로그램을 작성할 수 있

다.

학습 목표

81

• 제어 구조(control structure)란

– 작업 처리(실행) 흐름을 표현하는 프로그램 속 문장 구조

제어 구조

프로그램의 처리 흐름 유형 3가지

프로그램을 작성하는 과정은… 제어 구조를 만들어 가는 과정!

82

• 제어 구조 종류

– 순차 구조: 처리 순서가 한 방향으로 진행되는 구조

– 선택 구조: 조건에 따라 처리 순서가 다르게 진행되는 구조

– 반복 구조: 조건을 만족하는 동안 처리가 반복하여 진행되는 구조

제어 구조

순차 구조 선택 구조 반복 구조

83

제어 구조의 필요성

우리가 프로그램을 작성하다 보면…특정 문장을 선택하여 실행하거나,

특정 문장을 반복적으로 실행하고 싶은 경우가 있음

A) 학생의 총점을 학생 수 만큼 반복하여 계산!

A) 석차 백분율에 따라 등급을 선택하여 출력!

Q) 여러 문장 중 한 문장을 선택해야 되는 경우?

Q) 특정 문장을 반복해야 되는 경우?

84

제어 구조의 필요성

이때 선택 또는 반복 제어 구조를 만들면위에서부터 아래로 순차적으로 진행되는

프로그램 실행 흐름을 변경할 수 있음

선택 구조 반복 구조순차 구조

85

• 제어문

– 조건에 따라 특정 문장을 선택하여 실행하거나, 특정 문장을 반복적으로 실행하는 제어 구조를 만드는 명령문

• 제어문 종류

– 선택문

• 선택 구조를 만드는 명령문

• 예: if, switch

– 반복문

• 반복 구조를 만드는 명령문

• 예: for, while

제어문이란

86

• 구조적 프로그램

– 순차, 선택, 반복 구조를 포함하는 프로그램

• 구조적 프로그램의 장점

– 프로그램의 구조가 간결

☞ 이해하기 쉬움

☞ 수정하기 쉬움

☞ 많은 기능을 구현하기 쉬움

구조적 프로그램이란

87

3 프로그래밍

3-1 프로그래밍 환경3-2 변수와 자료형3-3 연산자3-4 표준 입출력과 파일 입출력3-5 제어 구조의 활용3-6 배열의 활용3-7 함수의 활용

88

3-6 배열의 활용 (p148)

• 배열의 개념과 표현 방법을 설명할 수 있다.

• 배열을 활용하여 프로그램을 작성할 수 있다.

학습 목표

배열

• 배열이란

– 연속적인 기억 장소에 동일한 형식의 자료들을 저장하는 자료 구조

– 여러 자료들을 하나의 배열 이름으로 저장

– 배열 내 각각의 저장 공간은 첨자로 구분

– 저장된 자료들에 대하여 반복적인 작업을 할 때 매우 효율적

89

“배열도 넓은 의미로는 변수!”

배열

• 배열의 장점

– 동일 형식과 성격을 가진 자료들의 저장 공간을 만들기 쉬움

<C 언어에서 저장 공간 3개 만들기>

90

왜냐하면 배열은…여러 저장 공간을 하나의 이름으로 표현하기 때문!

변수로 만들기 배열로 만들기

int 김○○;

int 이☆☆;

int 박♡♡;

int 정보[3];

배열

• 배열의 장점

– 동일 형식과 성격을 가진 자료들을 저장하기 쉬움

91

왜냐하면 배열은…여러 저장 공간을 첨자로 구분하기 때문!

<C 언어에서 자료 입력하기>

변수에 입력하기 배열에 입력하기

김○○ = 70;

이☆☆ = 90;

박♡♡ = 80;

정보[0] = 70;

정보[1] = 90;

정보[2] = 80;

92

• 배열의 장점

– 반복문을 함께 사용하면 간결한 작업 처리가 가능

배열

5를 더하기 (순차 구조) 5를 더하기 (반복 구조)

<C 언어에서 30개의 자료에 5를 더하기>

정보[0] = 정보[0] + 5;

정보[1] = 정보[1] + 5;

정보[2] = 정보[2] + 5;

:

:

정보[28] = 정보[28] + 5;

정보[29] = 정보[29] + 5;

for (x=0; x<=29; x++) {

정보[x] = 정보[x] + 5;

}

93