본문 바로가기
개발

[파이썬&루비] 반복문(Iterator) - while

by 마스터누누 2017. 5. 29.
728x90
반응형

반복문(Iterator) - while



앞선 포스팅에서 프로그래밍 언어는 효율성과 재사용성을 기반으로 발전한다고 했다.

반복문도 효율성을 위한 컴퓨터 언어 발전의 산물이라고 할 수있다.


만약 반복문이 없었다면, 같은 연산을 100만번 실행하기 위해 100만줄의 코드가 필요하겠지만,

반복문을 사용한다면 단 몇줄의 코드만으로 같은 연산을 여러번 실행할 수 있다.


또한, 이런 반복문의 특성은 프로그래밍 언어에서 가장 중요한 특성을 실현가능하게 한다.

바로 'DRY'(Don't Repeat Yourself) 원칙이다.

프로그래밍 언어 뿐만 아니라 일상적인 회화에서도 중복은 지양해야할 것 중의 하나이다.

예를 들어 이름을 먼저 언급하고 대명사로 해당 이름을 치환하듯이,

프로그래밍 언어에서도 긴 연산을 변수에 담아 사용하거나 반복문으로 처리하게 된다.





1
2
3
4
5
6
7
8
9
10
#python
while False:
    print('Hello world')
print('After while')
 
#ruby
while false do
  puts('Hello world')
end
puts('after while')
cs


반복문은 여러가지 형태가 있는데, 상황에 따라 가장 효율적인 방식이 있다.

우선, 반복문중에 대표적인것은 while이다.

while은 ~동안 이라는 뜻으로써, '어떠한 조건이 만족되는 동안' 반복문 내부의 코드를 실행한다.

while문 뒤에 따라 오는 값은 true와 false 둘중의 하나이며, 즉, boolean 값이 들어가야한다.

이는 if 조건문과 동일하다.


파이썬에서는 while 뒤에 조건문이 들어가고 블록으로 코드를 구분하며,

루비에서는 while 뒤에 조건문, 그리고 do 뒤에 반복문 코드가 들어가고, 마지막에 end를 사용하여 반복문을 종료한다.

만약 while 뒤의 조건이 계속 true일 경우 그 유명한 '무한루프' 상태에 빠지게 된다.





1
2
3
4
5
6
7
8
9
10
11
12
#python
= 0
while i < 3:
    print('Hello world')
    i = i + 1
 
#ruby
= 0
while i < 3 do
    puts('Hello world')
    i = i + 1
end
cs


반복문을 효율적으로 사용하기 위해서는 '제한 조건'을 걸어서

일정한 반복 후에 반복문을 탈출하게 해야한다.


대표적으로 while 외부에 비교를 위한 변수를 선언하고

반복이 일어날 때 마다 이 변수를 증가/감소 시킴으로써 결국 일정값에 도달하면 반복문을 탈출 시키는 것이다.

이를 사용하여 자신이 원하는 횟수만큼 코드를 실행할 수 있다.





1
2
3
4
5
6
7
8
9
10
11
12
#python
= 0
while i < 10:
    print('print("Hello world '+str(i*9)+'")')
    i = i + 1
 
#ruby
= 0
while i < 10 do
    puts('puts("Hello world '+(i*9).to_s()+'")')
    i = i + 1
end
cs


또한, 외부에서 할당된 조건 변수를 단순히 카운트를 위해서 사용하는 것이 아니라 

반복문 내부에서 연산이나 조작의 대상으로 지정이 가능하다.

그리고 반복문 내부에서 조건문과 결합한 복합문의 처리를 하면 더욱 강력해진다.



출처 : 생활코딩, 파이썬&루비

반응형

댓글