2. 반복구조

【배우기】


엔트리로 해보자

파이선으로 해보자

반복구조는 어떤 일을 정해진 횟수만큼 반복해서 하거나 무한 반복하는 구조를 말한다. 집안에서 움직이는 로봇청소기가 전원을 끌 때까지 반복해서 일을 한다거나 거리의 신호등이 일정한 간격으로 계속 반복되는 것이 반복구조의 예라고 할 수 있다.


이미지. 왼쪽에는 로봇 청소기 그림이, 오른쪽에는 신호등 그림이 있다.

1엔트리로 해보자

가. 오브젝트 배치
이미지. 공책 오브젝트의 스크린샷

나의 공책 오브젝트를 배경으로 추가한다.

이미지. 공책 오브젝트에 연필 오브젝트를 추가한 스크린샷

도형을 그리기 위한 연필 오브젝트를 추가한다.

이미지. 연필 오브젝트의 중심점을 가운데에서 연필심 쪽으로 옮긴 스트린샷

오브젝트를 추가한 후 연필 오브젝트의 가운데 위치한 중심점을 마우스로 드래그 하여 연필심 쪽으로 옮겨서 도형을 그리는 모습이 자연스럽게 해주도록 한다.

나. 삼각형 그리기
1) 한변 그리기
이미지. 시작하기 버튼을 클릭했을 때 블록, 그리기 시작하기 블록, 이동 방향으로 50만큼 움직이기 블록이 연결되어 있는 스크린샷

[예제코드]

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

[붓] 꾸러미 - [그리기 시작하기] 블록

[움직임] 꾸러미의 [이동방향으로 O만큼 움직이기] 블록

[이동방향으로 O만큼 움직이기]의 O에 50 입력하기

[실행결과]
이미지. 공책 오브젝트에 연필 오브젝트가 한 변을 그은 스크린샷
2) 삼각형 완성하기
이미지. 시작하기 버튼을 클릭했을 때 블록, 그리기 시작하기 블록에 3번 반복하기 블록에 이동 방향으로 50만큼 움직이기 블록, 이동 방향으로 120도 만큼 회전하기 블록이 연결되어 있는 스크린샷

[예제코드]

[움직임] 꾸러미 - [이동방향을 O만큼 회전하기] 블록

[이동방향을 O만큼 회전하기]의 O에 120도 입력하기

[흐름] 꾸러미 - [O번 반복하기] 블록과

[O번 반복하기] 의 O에 3 입력하기

[실행결과]
이미지. 삼각형 그리기 동영상의 스크린샷
다. 사각형 그리기
1) 한변 그리기
이미지. 시작하기 버튼을 클릭했을 때 블록, 그리기 시작하기 블록, 이동방향으로 50만큼 움직이기 블록이 연결되어 있는 스크린샷

[예제코드]

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

[붓] 꾸러미 - [그리기 시작하기] 블록

[움직임] 꾸러미의 [이동방향으로 O만큼 움직이기] 블록

[이동방향으로 O만큼 움직이기]의 O에 50 입력하기

[실행결과]
이미지. 공책 오브젝트에 연필 오브젝트가 한 변을 그은 스크린샷
2) 사각형 완성하기
이미지. 시작하기 버튼을 클릭했을 때 블록, 그리기 시작하기 블록에 5번 반복하기 블록에 연결된 이동 방향으로 50만큼 움직이기 블록, 이동 방향으로 120도 만큼 회전하기 블록이 있는 스크린샷

[예제코드]

[움직임] 꾸러미 - [이동방향을 O만큼 회전하기] 블록

[이동방향을 O만큼 회전하기]의 O에 90도 입력하기

[흐름] 꾸러미 - [O번 반복하기] 블록

④ O에 4 입력하기

[실행결과]
이미지. 사각형 그리기 동영상의 스크린샷
라. 코딩 해보기
1) 반복구조를 이용해 나의 공책 오브젝트 위에 연필 오브젝트로 다음과 같이 정팔각형을 그려보자.
이미지. 공책 오브젝트에 연필 오브젝트로 육각형을 그린 스크린샷.
이미지. 시작하기 버튼을 클릭했을 때 블록, 그리기 시작하기 블록에 연결된 8번 반복하기 블록, 이동 방향으로 50만큼 움직이기 블록, 이동 방향으로 45도만큼 회전하기 블록이 있는 스크린샷 . .
2) 반복구조를 이용해 나의 공책 오브젝트 위에 연필 오브젝트로 다음과 같이 마름모를 그려보자
이미지. 공책 오브젝트에 연필 오브젝트로 마름모 그린 스크린샷.
 이미지. 시작하기 버튼을 클릭했을 때 블록, 그리기 시작하기 블록에 연결된 2번 반복하기 블록, 이동 방향으로 50만큼 움직이기 블록, 이동 방향을 30도 만큼 회전하기 블록, 이동방향을 50만큼 움직이기 블록, 이동방향을 150도만큼 회전하기 블록이 있는 스크린샷

2파이선으로 해보자

가. for 문 알아보기

주로 사용하는 for 문의 형식은 다음과 같다.

for 변수 in range(a,b,c) :

   반복되는 부분


예제코드,2_1.py

for i in range(0,3,1) :

  print(“만나서 반갑습니다.”)


이미지. 2_1py의 순서도. 시작, i=1, i<3 이 true면 만나서 반갑습니다, 종료, fales이면 종료
실행결과

> 2_1.py

만나서 반갑습니다.

만나서 반갑습니다.

만나서 반갑습니다.

print( ) 함수는 모니터에 결과물을 출력합니다. ( )안에 “(큰따옴표)나 ‘(작은따옴표)로 묶어준 것은 텍스트로 인식되어서 그대로 출력된다. range(0,3,1)로 코딩했으므로 0부터 2까지 총 3번 반복이 일어난다.

예제코드,2_2.py

i=0


sum=0



for i in range(1, 11, 1) :


sum=sum+i



print(“1에서 10까지 자연수의 합은 :


%d” % sum)


이미지. 2_2py의 순서도. 시작, i=1, sum=0, i<11 이 true면 sum=sum+i, i++ , print('1에서 10까지 자연수의 합은: %d' %sum), 종료, i<11이 fales이면 print('1에서 10까지 자연수의 합은: %d' %sum), 종료
실행결과

> 2_2.py

1에서 10까지 자연수의 합은 : 55

1행과 2행에서는 i와 sum을 0으로 정한다. 그리고 4행과 5행이 반복된다. 처음에는 i값 1을 현재 sum의 값인 0과 더해 다시 sum에 대입한다. 두 번째 반복될 때에는 i값 2를 현재 sum값인 1과 더해 다시 sum에 대입한다. 0+1=1, 1+2=3, 3+3=6, 6+4=10과 같은 과정이 10번 반복되면 1에서 10까지 더한 값이 sum에 들어가게 된다. 또한 변수의 값을 문자열에 포함하려고 한다면, 나중에 추가할 값에 대한 표시인 %s(문자열)나 %d(정수), %f(실수)를 이용해 문자열에 값을 포함시킬 수 있다. 위 예제에서는 1에서 10까지의 자연수의 합인 정수 변수가 사용되므로 %d가 사용되었다.

1부터 10까지 수의 합은 단순히 덧셈을 통해 계산하더라도 많은 시간이 걸리지는 않는다. 하지만 만약 1부터 10000까지 수의 합을 구한다고 할 때, 이것을 일일이 계산하기에는 너무 많은 시간이 소요된다. 이것이 반복문을 사용하는 가장 큰 이유다.

나. 코딩해 보기
1) for 문을 사용해서 1부터 10까지 자연수 중 홀수의 합을 구할 수 있도록 코딩해 보자.

i=0


sum=0



for i in range(1, 11, 2) :


sum=sum+i



print(“1에서 10까지 자연수 중 홀수의 합은 : %d” % sum)


2) 정수 a를 입력받고 for 문을 사용해서 1부터 입력한 수까지의 합을 구할 수 있도록 코드를 완성해 보자.

i=0


sum=0


a=int(input(“정수를 입력해 주세요:”)) # 정수를 입력받는 부분으로 뒤에서 자세하게 알아보겠습니다.



for i in range(1, a+1, 1) :


sum=sum+i



print(“1에서 %d까지 자연수의 합은 : %d” % (a, sum))


생각해 보기

1) “파이선 파이팅”을 100번 출력되게 해 보자.

2) 1부터 100까지의 자연수에서 3의 배수의 합이 출력되게 해 보자.

3) 10부터 1씩 줄어들어 0이 되면 “발사”가 출력되게 해 보자.