2. 다시 또 다시 반복 (반복구조)

【배우기】


1. 엔트리로 반복구조 이해하기

2. 파이선으로 반복구조 이해하기

1프로그래밍에서 반복구조란 무엇일까요?

우리가 일상생활을 하거나, 일을 해야 할 때 반복해서 일을 진행해야 하는 경우가 있다. 그렇다면 ‘컴퓨터는 반복이라는 기능이 가능할까?’라고 생각했을 때, 컴퓨터 또는 기계들에게서 가장 잘 나타는 활동이 반복이라고 보일 수 있다. 또한 사람들이 어떠한 일을 반복적으로 실행했을 때, 지루함을 느낄 수 있으며, 매일 같이 같은 행동을 반복하기에는 너무나 큰 어려움이 뒤따른다. 그러나 컴퓨터의 경우를 생각해 보면, 컴퓨터 또는 기계들은 같은 명령을 반복할 때, 힘들어하지 않으며, 오차의 범위가 작다. 따라서 이러한 특성들로 인해서 컴퓨터는 사람이 하기 어려운 반복적인 일들을 대신 처리해주며 생활의 편리성을 도와준다.

그렇다면, 컴퓨터에서 반복구조라는 것은 무엇인가? 알아보도록 하자. 컴퓨터에서 반복구조의 의미는 반복적인 일을 매우 정확하게 그리고 빠르게 처리하는 것을 뜻한다. 예를 들어, 인쇄소에서 같은 광고지를 1,000장을 만든다고 가정하였을 경우, 사람은 1,000장을 만들기 위해서 많은 시간과 노력이 필요하며, 힘든 노동력이 필요하다. 하지만 컴퓨터를 이용하여 1,000장의 광고지를 인쇄하도록 설정한다면, 컴퓨터는 같은 동작을 1,000장을 인쇄하는 조건으로 같은 동작을 만족할 때까지 반복적으로 명령을 되풀이하며 수행하게 되는데, 이러한 구조를 우리는 반복구조라고 한다.

이미지. 인쇄소에서 반복적으로 인쇄를 찍어내는 사진이 반복되는 그림.

2엔트리로 반복구조 이해하기

1. 엔트리로 사각형 그리는 프로그램 만들기(반복구조)

엔트리로 사각형을 그리는 프로그램을 만들어 보도록 하자. 하지만 이러한 프로그램이 반복구조와 어떤 연관성이 있는지 궁금해할 수 있다. 그렇다면 사각형을 그린다고 생각해보자. 사각형은 4개의 선으로 이루어져 있으며, 4개의 선이 직각으로 연결되어 있다는 것을 알 수 있다. 따라서 이러한 조건들이 만족되어야 사각형을 그릴 수가 있다. 또한 선은 점들이 모여 선이 될 수 있다 따라서 점을 연속적으로 반복해서 찍어야 선이 될 수 있으며, 이러한 반복된 선들은 어떤 일정한 조건에 따라 반복되어 첫 번째 선을 그리고 난 후에는 직각으로 위치를 변경하여 점을 지속적으로 찍어 나아가다 보면 사각형이 완성되게 된다. 따라서 사각형 그리는 프로그램은 반복구조와 큰 연관성이 있다. 반복구조에 대해서 충분한이해가 되었다면 엔트리로 사각형을 그리는 프로그램을 만들어 보도록 하자.

2단원 2차시의 지체장애 학생을 위한 컴퓨터 환경 만들기의 PC 태블릿 모드 사용법을 참고하여 터치모니터와 함께 사용해보자.

가. 오브젝트 구성

1
이미지. 연필 오브젝트 스크린샷
연필 오브젝트를 추가한다. 추가된 연필에서 가운데 점의 위치를 연필의 끝 지점에 맞춘다. 점의 위치가 선 그리기의 시작점이 된다.

나. 오브젝트에 엔트리 블록 코딩

이번 블록 프로그램의 코딩에 있어서 오브젝트는 하나 밖에 존재하지 않으며, 하나의 오브젝트에 모든 블록코딩이 연결되게 된다는 것을 염두에 두고, 블록 프로그램 코딩을 진행하였으면 한다.

1
이미지. 시작하기 버튼을 클릭했을 때 블록, 붓의 색을 빨강색으로 정하기 블록, 붓의 굵기를 5만큼 바꾸기 블록, 그리기 시작하기블록이 연결되어 있다.

순번 1번의 오브젝트를 클릭

블록탭-[시작]-[시작하기 버튼을 클릭했을 때]

블록탭-[붓]-[붓의 색을 (으)로 정하기]- 붓색 설정

블록탭-[붓]-[붓의 굵기를 1만큼 바꾸기]-붓의 굵기를 5로 설정

블록탭-[붓]-[그리기 시작하기]

2
이미지. 이동방향으로 1만큼 움직이기 블록이 100번 반복하기 블록과 연결 되어 있고, 방향을 90도로 정하기 블록이 그 다음으로 연결되어 있는 스크린샷.

블록탭-[흐름]-[10번 반복하기]-10을 100으로 변경 설정

블록탭-[이동 방향으로 10만큼 움직이기]-10을 1로 변경 설정-반복하기 블록 안에 넣음

블록탭-[방향을 (으)로 정하기]-90도로 변경 설정

붓을 1씩 이동하여 100 만큼 반복적으로 움직인 후 90도로 변경하라는 블록 코딩

3
이미지. 이동방향으로 1만큼 움직이기 블록이 100번 반복하기 블록과 연결 되어 있고, 방향을 180도로 정하기 블록이 그 다음으로 연결되어 있는 스크린샷

블록탭-[흐름]-[10번 반복하기]-10을 100으로 변경 설정

블록탭-[이동 방향으로 10만큼 움직이기]-10을 1로 변경 설정-반복하기 블록 안에 넣음

블록탭-[방향을 (으)로 정하기]-180도로 변경 설정

붓을 1씩 이동하여 100 만큼 반복적으로 움직인 후 180도로 변경하라는 블록 코딩

4
이미지. 이동방향으로 1만큼 움직이기 블록이 100번 반복하기 블록과 연결 되어 있고, 방향을 270도로 정하기 블록이 그 다음으로 연결되어 있는 스크린샷

블록탭-[흐름]-[10번 반복하기]-10을 100으로 변경 설정

블록탭-[이동 방향으로 10만큼 움직이기]-10을 1로 변경 설정-반복하기 블록 안에 넣음

블록탭-[방향을 (으)로 정하기]-270도로 변경 설정

붓을 1씩 이동하여 100 만큼 반복적으로 움직인 후 270도로 변경하라는 블록 코딩

5
이미지. 이동방향으로 1만큼 움직이기 블록이 100번 반복하기 블록과 연결 되어 있고, 그리기 멈추기 블록이 그 다음으로 연결되어 있는 스크린샷

블록탭-[흐름]-[10번 반복하기]-10을 100으로 변경 설정

블록탭-[이동 방향으로 10만큼 움직이기]-10을 1로 변경 설정-반복하기 블록 안에 넣음

블록탭-[그리기 멈추기]

붓을 1씩 이동하여 100 만큼 반복적으로 움직인 후 그리기를 멈추라는 블록 코딩

다. 오브젝트에 엔트리 블록 코딩 실행 결과

엔트리 블록 코딩을 끝낸 후 실제적인 실행 결과를 확인해 보도록 하자. 사각형을 그리는 프로그램 엔트리 블록 코딩의 결과는 아래와 같이 실행된다.

이미지. 사각형을 그리는 프로그램 동영상의 스크린샷

실행 결과를 보면, 사각형 프로그램이 시작과 동시에 연필 오브젝트에서 선이 그려지면서, 100 만큼 선이 이동한 후, 90도를 직각으로 방향을 전환한 후 다시 100 만큼 선이 이동한다. 그리고 다신 180도 만큼 방향을 전환하여 직각을 만든 후, 100 만큼 선이 그려지며 이동한다. 그리고 다시 270도로 방향을 전환하여 다시 100 만큼 선을 반복하여 그리면, 사각형이 그려진 후 프로그램이 종료되게 된다. 따라서 선이 그려지는 과정 자체가 ‘반복구조’라고 볼 수 있다.

2엔트리로 숨바꼭질 프로그램 만들기(반복구조)

반복 구조를 블록 코딩하는 방법은 두 가지로 나누어서 생각할 수 있는데, 첫 번째는 [“”번 반복하기] 블록이고, 두 번째는 [“참”인 동안 반복하기] 블록이다. 이 두 블록은 비슷하면서, 다른 반복구조를 가지고 있는데, 첫 번째 블록은 일정한 수만큼 반복하는 반복구조라면, 두 번째 블록은 일정한 조건을 가지고 반복하는 구조를 가진 블록이라고 할 수 있다. 따라서 숨바꼭질 프로그램에서는 두 번째 블록을 활용하여 반복구조의 프로그램을 만들어 보도록 하자.

가. 오브젝트 구성

1
이미지. 배경 오브젝트의 스크린샷
배경으로 꽃밭(1)을 오브젝트에서 찾아서 추가 한다.
2
이미지. 나무 오브젝트의 스크린샷
배경에 나무를 추가하기 위해 오브젝트에서 나무(5)를 오브젝트에서 찾아서 추가한다.
3
이미지. 여자아이 오브젝트의 스크린샷
숨바꼭질 게임을 위한 친구를 추가하기 위해 오브젝트에서 “뛰어노는 아이”를 찾아서 추가한다.
4
이미지. 남자아이의 오브젝트의 스크린 샷
숨바꼭질 게임을 위한 친구를 추가하기 위해 오브젝트에서 “개구쟁이”를 찾아서 추가한다.
5
이미지. 남자아이 2의 오브젝트 스크린샷
숨바꼭질 게임을 위한 친구를 추가하기 위해 오브젝트에서 “걷고 있는 사람(2)”를 찾아서 추가한다.
6
이미지. 여자아이2의 오브젝트 스크린샷 부품 사진
숨바꼭질 게임을 위한 친구를 추가하기 위해 오브젝트에서 “걷고 있는 사람(1)”를 찾아서 추가하는데, 이 오브젝트에서는 조건에 맞춰 숫자를 10까지 수를 셀 수 있다.

나. 오브젝트에 엔트리 블록 코딩

이번 엔트리 블록 코딩은 반복구조 있어서, 일정한 조건을 주고, 그 조건이 맞았을 때 프로그램을 반복적으로 실행할 수 있는 코딩으로써 앞에서의 반복구조와 다르게 “<조건>인 동안 반복하기”의 블록 코딩이 사용됨을 생각하며, 블록코딩하여 보자.

1
이미지. 시작하기 버튼을 클릭했을 때 블록, 우리 숨바꼭질 놀이 하자를 2초 동안 말하기 블록, 내가 10을 세는 동안 숨으면 돼, 알았지를 2초 동안 말하기 블록, 그럼 시작한다를 2초동안 말하기 블록, 숫자 10을 셀 동안 캐릭터를 누르면 사라집니다.를 2초동안 말하기 블록이 연결되어 있다.

순번 6번의 오브젝트를 클릭(순번 6의 오브젝트의 블록코딩은 1~3까지 모두 하나의 블록코딩임)

블록탭-[시작]-[시작하기 버튼을 클릭했을 때]

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “우리 숨바꼭질 놀이 하자!”로 변경

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “내가 10을 세는 동안 숨으면 돼. 알았지?”로 변경-4초를 2초로 변경

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “그럼 시작한다.”로 변경-4초를 2초로 변경

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “(숫자 10을 셀 동안 캐릭터를 누르면 사라집니다.)”로 변경-4초를 2초로 변경

2
이미지.  숫자값을 1초동안 말하기, 숫자에 1만큼 더하기 블록들이 숫자 값 < 11인 동안 반복하기 블록에 연결되어 있다.

순번 6번의 오브젝트를 클릭(순번 6의 오브젝트의 블록코딩은 1~3까지 모두 하나의 블록 코딩임)

블록탭-[흐름]-[참이 될 때까지 반복하기]-“될 때까지”를 “인 동안”으로 변경

블록탭 - [판단] - [ 10 <10 ] - “ 10>10 ” 을 “10<11”로 변경-속성탭-[변수]-[변수 추가하기]-[변수 이름: 숫자]-[숫자]-[변수 속성]-[기본값: 1]-[숫자] 블럭을 [판단]에서10<11에서 10의 위치에 [숫자] 블록을 대체-판단 블록을 “ ”인 동안 반복하기 안에 넣음

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “숫자 값”으로 변경-4초를 1초로 변경

블록탭-[자료]-[숫자에 10만큼 더하기]-10을 1로 변경

3
이미지. 자 이제 찾는다를 2초동안 말하기 블록, x:20위치로 이동하기 블록, x:-20 위치로 이동하기 블록, 못찾겠는데를 2초동안 말하기 블록, y:30 위치로 이동하기 블록, x:30 위치로 이동하기 블록, 모두 나와바를 2초동안 말하기 블록이 연결되어 있다.

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “자.. 이제 찾는다.”로 변경-4초를 2초로 변경

블록탭-[움직임]-[x:0 위치로 이동하기]-0을 20으로 변경

블록탭-[움직임]-[x:0 위치로 이동하기]-0을 -20으로 변경

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “못 찾겠는데.”로 변경-4초를 2초로 변경

블록탭-[움직임]-[y:0 위치로 이동하기]-0을 30으로 변경

블록탭-[움직임]-[x:0 위치로 이동하기]-0을 30으로 변경

블록탭-[생김새]-[안녕을(를) 4초 동안 말하기]-“안녕”을 “모두 나와봐”로 변경-4초를 2초로 변경

4
이미지. 오브젝트를 클릭했을 때 블록 과 모양 숨기기 블록이 연결되어 있다.

순번 3번의 오브젝트를 클릭

블록탭-[시작]-[오브젝트를 클릭했을 때]

블록탭-[생김새]-[모양 숨기기]

5
이미지. 오브젝트를 클릭했을 때 블록 과 모양 숨기기 블록이 연결되어 있다.

순번 4번의 오브젝트를 클릭

블록탭-[시작]-[오브젝트를 클릭했을 때]

블록탭-[생김새]-[모양 숨기기]

6
이미지. 오브젝트를 클릭했을 때 블록 과 모양 숨기기 블록이 연결되어 있다.

순번 5번의 오브젝트를 클릭

블록탭-[시작]-[오브젝트를 클릭했을 때]

블록탭-[생김새]-[모양 숨기기]

다. 오브젝트에 엔트리 블록 코딩 실행 결과

엔트리 블록 코딩을 끝낸 후 실제적인 실행 결과를 확인해 보도록 하자. 숨바꼭질 프로그램 엔트리 블록 코딩의 결과는 아래와 같이 실행된다.

이미지. 엔트리로 숨바꼭질 프로그램 만들기 동영상의 스크린샷

실행 결과를 살펴보면, 술래가 숨바꼭질 놀이를 하기 위해서 친구들에게 놀이를 제시하며, 놀이 방법에 대해서 설명한다. 그리고 놀이를 시작하기 위해서 술래가 숫자를 세는 데, 숫자를 세는 방법은 반복구조로 블록 코딩되어 있으며, 일정한 조건을 주고 반복할 수 있도록 되어 있다.

3파이선으로 반복구조 이해하기

1. 파이선으로 사각형 그리는 프로그램 만들기(반복구조)

엔트리에서 사각형을 반복구조로 그릴 수 있듯이, 파이선에서도 사각형을 반복구조를 활용하여 그림을 그릴 수 있다. 그리고 엔트리에서 반복구조에 사용되는 블록이 있듯이, 파이선에서는 반복구조를 컴퓨터에 명령하기 위해서 for 문과 while 문의 문법을 사용하게 되는데, 사각형을 그리는 프로그램에서는 for 문을 사용하여 반복구조를 이해하여 보도록 하겠다. 그렇다면 파이선 프로그램 코딩으로 사각형을 그리는 프로그램을 만들어 보자.

TIP - for문

for 문의 형태는 “for <아이템> in <처리할 항목> : 반복처리 명령”으로 모든 처리할 항목이 끝나면, 반복을 종료하는 반복구조의 제어문으로 볼 수 있으며, range( )라는 함수를 처리할 항목에 많이 사용하고 있는데, range( ) 함수는 자동으로 숫자 리스트를 만들어 주는 함수이다.

가. 파이선 프로그램 코딩

파이선으로 사각형 그리는 프로그램의 전체 코딩은 아래와 같은데, 전체적 코딩을 살펴보면, 엔트리 블록 코딩의 내용보다 더 간단하게 프로그램 되어 있다는 것을 알 수 있다. 이러한 이유는 텍스트 코딩의 장점으로써 반복구조를 수학적 계산과 논리로, 간단하게 프로그램 코딩할 수 있다. 그렇다면 전체적인 파이선 프로그램 코딩 내용을 살펴보고, 반복구조가 어떻게 되는지와 for 문의 사용을 학습하여 보도록 하자.

import turtle


sides=4



t=turtle.Turtle(“turtle”)



for i in range(sides):

   t.forward(100)

   t.left(360/sides)

전체적인 파이선 프로그램 코딩을 살펴보면, 첫 줄에는 임폴트해서 터틀의 패키지를 가져와서 프로그램에 사용하도록 하며, for 문에서는 총 4번을 반복하고, 실행 명령어에서는 100 만큼 선을 그린 후, 90도로 회전하여 다음 선을 그리도록 한다는 것이다. 지금까지 전체적인 파이선 프로그램의 코딩을 알아봤다면, 다음으로 세부적인 내용을 통해서 어떻게 프로그램 코딩이 됐는지 알아보도록 하자.

import turtle


sides=4



t=turtle.Turtle(“turtle”)

이미지. 순서도 그림. 시작,아래 화살표 sides=4,아래 화살표 t=turtle.Turtle ('turtle')

우선 첫 줄에서 import turtle는 turtle라는 패키지를 사용하기 위해서 선언해주는 것이다. 따라서 turtle를 활용하여 그리기가 가능하게 된 것이다. 그리고 그다음에는 sides=4라는 것이 있는데 이것은 sides라는 변수에 4라는 값을 입력하라는 것인데, 변수에 관해서는 다음 단원에서 다시 설명하도록 하고, 우선은 sides가 숫자로 표현하면 4가 된다고 생각하면 된다.
그리고 그다음으로는 t=turtle.Turtle(“turtle”)라는 프로그램 코딩인데, 다소 어렵게 생각될 수 있지만 실제적으로 설명하자면, 선을 긋는 그래픽을 위해서 turtle의 기능 중 하나를 사용하기 위한 선언이라고 생각하면 된다. 따라서 t에서 점 하나를 찍고 나면, turtle의 다른 함수들을 불러와서 사용할 수 있게 된다.

for i in range(sides):

   t.forward(100)

   t.left(360/sides)

이미지. 순서도 그림. i<range(sides)가 참이면 t.forward(100),아래 화살표 t.left(360/sides)

다음 파이선 프로그램 코딩은 반복구조를 실행 가능하게 하는 for 문이다. 따라서 첫 줄에서 for i in range(sides) :은 for 문을 사용하는데, 있어 어떠한 조건이 참일 경우 지속적으로 반복하라는 명령어이다. for 문의 문법을 해석해보면, for 다음의 I는 실제적으로 0으로써 반복의 시작점이 되며, in 뒤쪽에 range(sides)는 range의 함수에 4라는 값을 넣어서, 4번을 반복하여 for 문의 다음 문장을 실행할 수 있도록 해준다. 그리고 for 문에서 가장 중요한 것은 for 문의 마지막 부분에 “:”과 다음 코딩을 실행하기 위한 띄어쓰기로써 만약 for 문에서 다음 문장을 띄어쓰기하지 않으면 문법적인 오류로 인해서 실행할 수 없다는 것을 유의하며, 파이썬 프로그램 코딩을 하기 바란다. 그렇다면 for 문 안에서 실행되어질 다음 프로그램 코딩을 살펴보자면, t.forword(100)로써, 해석하자면, 100 만큼의 길이의 선을 그리라는 뜻이다. 따라서 100이라는 숫자를 변경하면 변경된 숫자만큼 길이를 그리게 될 것이다. 그 다음으로는 t.left(360/sides)라는 프로그램 코딩이 있는데, 이것은 실제적으로 보면 90도로 선긋기를 변경해서 실행할 수 있도록 선의 위치를 변경해준 것이다. 따라서 괄호 안의 360/sides를 90으로 변경해도 같은 모양의 사각형이 그려진다는 것을 알 수 있다. 따라서 이 for 문에서 선을 100씩 4번 반복해서 그려지게 되는데, 선을 4번 그리고 나면, 프로그램은 종료되게 된다.

나. 파이선 프로그램 코딩 결과

파이선으로 사각형을 그리는 프로그램을 완성하였다면, 프로그램을 실행하여 프로그램이 반복구조로 실행되는지 알아보도록 하자. 프로그램 실행 결과는 아래와 같다.

이미지. 파이선으로 사각형을 그리는 프로그램 동영상의 스크린샷

위쪽 (동영상) 그림은 실제적인 프로그램을 실행한 결과로써, 실행된 내용을 살펴보면, 프로그램이 반복적으로 프로그램을 실행하였고, 출력된 내용을 보면, 선을 4번 그리는데, 90도로 변경하며 그림을 그리고 있다는 것을 알 수 있다. 따라서 프로그램에서 반복하는 횟수를 변경하거나 명령을 변경하여 보면,반복구조를 더 쉽게 이해할 수 있으며, 반복에 대한 개념을 이해할 수 있을 것이다.

2. 파이선으로 숨바꼭질 프로그램 만들기(반복구조)

두 번째로는 파이선의 while 문으로 숨바꼭질 프로그램을 코딩하여 반복구조를 학습하여 보도록 하자. 또한 for 문과 while 문의 차이점이 무엇인지 생각하여 보자. 우선은 while 문은 for 문과 다르게 횟수를 정하여 반복하는 것이 아니라, 조건식을 두고, 조건이 참일 경우에 다음 명령을 반복하여 실행할 수 있도록 되어 있다. 따라서 시작과 끝 값이 없으므로, 시작과 끝이 필요한 경우 그 값을 할 수 있는 역할의 코딩을 넣어줘야 하는 것이 for 문과 while 문의 차이점이라고 할 수 있다. 그렇다면, while 문으로 숨바꼭질 프로그램을 만들어보고, 반복구조를 학습하여 보도록 하자.

TIP - while문

while 참 또는 변수값<끝값 :

   반복되어 실행될 명령

   변수=변수+증가값

while 문은 while 다음에 조건식이 들어가며, 조건식이 참일 경우에 반복되는데, 첫 값과 끝 값이 있는 경우에는 일정하게 증가하는 값이 필요하므로, 필수적으로 반복적으로 실행될 명령 다음으로 값을 증가시켜 나아갈 수 있는 프로그램 코딩이 꼭 필요하다.

가. 파이선 프로그램 코딩

파이선으로 숨바꼭질 프로그램의 전체 코딩은 아래와 같은데, 전체적 코딩을 살펴보면, 엔트리 블록 코딩으로 숨바꼭질 프로그램보다 더 간단하게 프로그램 되어 있다는 것을 알 수 있다. 또한 for문의 반복구조에 비해서 프로그램 코딩이 복잡하지만, 조건을 줄 수 있는 특징을 살펴볼 수도 있다. 그렇다면 전체적인 파이선 프로그램 코딩 내용을 살펴보고, 반복구조가 어떻게 되는지와 while 문의 사용을 학습하여 보도록 하자.

import time



number=1



print("우리 숨바꼭질 놀이 하자!")

time.sleep(2)

print(“내가 10을 세는 동안 숨으면 돼. 알았지?”)

print(“그럼 시작한다.”)

time.sleep(2)



while number<11:

   print(number)

   time.sleep(1)

   number+=1



print(“자.. 이제 찾는다”)

time.sleep(2)

print(“여기도 없고, 바위 옆에도 없고”)

time.sleep(2)

print(“못찾겠어. 다들 어디 있는거야”)

time.sleep(2)

print(“모두 나와봐”)

전체적인 파이선 프로그램 코딩을 살펴보면, 첫 줄에는 import time가 코딩되어 있는데, 이것은 time의 패키지를 가져와서 사용하겠다는 것으로 time.sleep(2)을 사용하기 위해서 가져왔다. 그리고 숨바꼭질과 관련된 문장을 출력해주고, while 문에서는 숫자를 1~10까지 출력해주기 위해서 10번 반복할 수 있는 반복구조로 프로그램 코딩이 되었다. 그리고 10번의 반복이 끝나면, 반복구조를 빠져나와 숨바꼭질과 관련된 문장을 출력하고 프로그램이 종료되게 된다. 지금까지 전체적인 파이선 프로그램의 코딩을 알아봤다면, 다음으로 세부적인 내용을 통해서 어떻게 프로그램 코딩이 됐는지 알아보도록 하자.

import time



number=1



print("우리 숨바꼭질 놀이 하자!")

time.sleep(2)

print(“내가 10을 세는 동안 숨으면 돼. 알았지?”)

print(“그럼 시작한다.”)

time.sleep(2)



이미지. 순서도 그림, 시작,아래 화살표 number=1,아래 화살표 우리 숨바꼭질 놀이 하자!, 아래 화살표 내가 10을 세는 동안 숨으면돼. 알았지?,아래 화살표 그럼 시작한다.

우선 첫 줄은 time 패키지를 위한 프로그램 코딩이고, 두 번째 줄은 number라는 변수를 1 값으로 정한다는 선언으로 볼 수 있으며, 변수에 관해서는 다음 단원에서 자세히 설명하도록 하겠다. 그리고 그 다음은 “print(“우리 숨바꼭질 놀이 하자!”)”으로 “우리 숨바꼭질 놀이 하자!”가 출력되게 된다. 그리고 “time.sleep(2)”으로 2초간 출력을 대기한 후 “print(“내가 10을 세는 동안 숨으면 돼. 알았지?”)”를 실행하여, “내가 10을 세는 동안 숨으면 돼. 알았지?”를 출력한다. 그리고 다시 2초간을 대기한 후 “print(“그럼 시작한다.”)”으로 “그럼 시작한다.”라고 출력한다.

while number<11:

   print(number)

   time.sleep(1)

   number+=1



이미지. 순서도 그림. i<range(sides)가 참이면 number,  아래 화살표 number+=1 이면 다시 i <range(sides)

다음으로 while 문으로 반복구조의 프로그램 코딩이 나오게 된다. 가장 먼저 while 그리고 다음으로 조건식이 들어가게 되는데 조건식은 “number<11”이다. 이것은 number와 11이라는 숫자를 비교하고, 값이 참인 경우에 반복하도록 하고 있다. 따라서 참인 경우에는 그다음 아래의 실행 부분의 코딩을 실행하게 되는데 “print(number)”으로 number의 숫자를 출력하게 된다. 따라서 만약 1부터 값이 시작되었다면, 1~10까지 값을 출력하게 된다. 그리고 그다음으로 “time.sleep(1)”의 프로그램 코딩으로 1초간 간격을 두고 난 후, “number+=1”을 실행하게 되는데, 코딩을 해석해보면, 현재 number의 값에 1을 더한 후 값을 저장하라는 것으로 산술연산자가 사용되어 있는 프로그램 코딩이다. 따라서 number의 값이 10이 될 때까지 값은 반복되면서 number 값이 하나씩 증가하게 된다. 따라서 이 while 문의 반복은 총 10번이며, 10번이 반복되는 동안, 1~10까지의 값을 화면에 출력하게 된다.

print(“자.. 이제 찾는다”)

time.sleep(2)

print(“여기도 없고, 바위 옆에도 없고”)

time.sleep(2)

print(“못찾겠어. 다들 어디 있는거야”)

time.sleep(2)

print(“모두 나와봐”)

이미지. 순서도 그림. 자 이제 찾는다, 아래 화살표. 여기도 없고, 바위 옆에도 없고, 아래 화살표, 못찾겠어, 다들 어디에 있는거야, 아래 화살표, 모두 나와봐

반복구조가 끝나고 나면, 다시 순차구조로 돌아와서 “print(“자.. 이제 찾는다”)”에서 “자.. 이제 찾는다”를 출력하고, 2초를 대기한 후, “print(“여기도 없고, 바위 옆에도 없고”)”의 코딩으로 “여기도 없고, 바위 옆에도 없고”를 출력한다. 그리고 다시 2초를 대기한 후 “print(“못찾겠어. 다들 어디 있는 거야”)”으로 “못찾겠어. 다들 어디 있는거야”를 출력하고, “print(“모두 나와봐”)”의 코딩으로 “모두 나와봐”를 출력한 후 프로그램을 종료하게 된다.

나. 파이선 프로그램 코딩 결과

파이선으로 숨바꼭질 프로그램을 완성하였다면, 프로그램을 실행하여 프로그램이 반복구조로 실행되는지 알아보도록 하자. 프로그램 실행 결과는 아래와 같다.

이미지. 파이선으로 숨바꼭질 프로그램 만들기 동영상의 스크린샷

위쪽 (동영상) 그림은 실제적인 프로그램을 실행한 결과로써, 실행된 내용을 살펴보면, 프로그램이 반복적으로 프로그램을 실행하였고, 출력된 내용을 보면, 숨바꼭질에 관련된 내용을 순차구조에 따라 출력하게 된다. 그리고 그다음으로 while 문의 반복구조에 들어오게 되어 숫자를 1부터 10까지 출력하게 된다. 그리고 while 문의 조건식이 참이 아니게 되면서 while 문을 빠져나와서, 순차구조에 따라 다음 문장들을 출력하고 종료하게 된다. 따라서 프로그램에서 반복하는 횟수를 변경하기 위해서 조건식을 변경해보면, while 문에서의 반복구조를 더 쉽게 이해할 수 있으며, 반복에 대한 개념을 이해할 수 있을 것이다

생각해보기

1) 숫자를 1부터 1,000까지 출력되도록 해 보자.

2) 같은 단어를 반복하여 100번 출력되도록 해 보자.

3) 숫자를 1,000부터 1까지 출력되도록 해 보자.