21. 반복문 - while 반복문, 무한 루프, 중첩 루프
for 반복문과 같이 연산을 반복해서 할 수 있게 해주지만
그 방식이 for 반복문과는 다른 while 반복문에 대해 알아보자.
in 과 함께 쓰여 데이터스트럭쳐를 사용하던 for 반복문과는 다르게
while 반복문은 while 옆에 쓰인 조건식이 True 값인 동안에, 자신이 포함하고 있는 문장들을 계속해서 연산, 실행시켜주는 반복문이다.
위 이미지와 같이 while 옆에 조건식을 쓰고 : 콜론으로 문장을 포함시킨다.
여기서 주의할 점은 i = i +1 과 같이 끝을 낼 수 있는 제어문을 작성해주어야 한다는 것이다.
작성해주지 않으면 생길 수 있는 현상이 바로
무한 루프이다!
제어문이 없는 while 반복문은 끝이 없는 무한 루프속에 갇혀 강제로 멈출 때까지 연산을 계속하게 된다.
그렇다고 무조건 막아야만 하는 것은 아니다.
패스트푸드 가게 키오스크처럼 결제과정이 끝나고 다시 처음으로 돌아오는 경우나
게임 캐릭터에 어떤 입력을 하고 액션을 마치면 다시 처음 상태로 돌아오는 등
곳곳에 무한루프가 필요한 경우도 있다.
물론 그러한 무한루프도 특정한 행동에 한해서 종료되고 제어될 수 있어야한다.
위 이미지처럼 계속해서 끝없이 input으로 데이터를 입력받지만
특정 단어에 있어서 루프가 종료되고 연산이 종료될 수 있도록 제어할 수 있는 것이 중요하다.
위 방법뿐만 아니라 for 반복문이든 while 반복문이든
반복문 하나만으로 문제가 해결되지 않을 때가 있는데
이 때 반복문에 반복문을 포함시켜 중첩 루프를 만들수도 있다.
위 이미지처럼 구구단의 데이터 값이 두 가지가 필요한 경우,
반복문을 중첩시켜 아주 쉽게 연산할 수 있다.
이 때, 주의할 점은 반복문 간의 포함관계와 연산순서를 정확히 파악해야한다는 점이다!
꼭꼭 놓치지말고 파악하도록 하자.
위 연산의 결과는 이미지가 크므로 마지막에 넣도록 하겠다.
위에서 입력한 대로 9 x 9 = 81 까지 나온다.