반복문
컴퓨터 프로그래밍에서 반복문(iteration)은 제어문 중 하나로, 프로그램 소스 코드내에서 특정한 부분의
코드가 반복적으로 수행될 수 있도록 하는 구문이다.
for 문
컴퓨터 프로그래밍에서 for 루프는 반복문의 일종으로, 특정한 부분의 코드가 반복적으로 수행될 수 있도록
한다. for 루프는 while 루프와 같은 다른 반복문과는 달리 일반적으로 해당 루프에 연계된 루프 변수가
존재하며, 그 변수의 비교 및 증감을 위해서 별도의 문법을 할애한 점이 구분된다. 그리고 가장 중요한 것
은 while 루프와 다르게 for 루프는 반복의 횟수를 알고 있을 경우 사용한다.
A : 초기값, B : 조건식, C : 증감식, D : 실행코드
[for 문 예제1] 1~ 10까지의 정수를 출력하세요.
1. 문제에서 숫자 1부터 10까지라고 범위를 알려주었기때문에 초기값은 1이며, 조건식에 i <= 10,
즉 10까지 루프를 돌며 i가 1씩 증가한다는 의미이다.
2. format 출력서식으로 i를 적게되면 1부터 10까지 루프를 수행하여 출력한다.
[for 문 예제2] 1~ 10까지의 정수 중에 1, 3, 5, 7, 9만 출력하세요.
** for 문 증감식에 i++은 i를 1씩 증가시키지만, i+=2는 i를 2씩 증가시킨다.
(즉, i += 2는 i = i + 2와 같은 의미이다.)
1. 위에서와 같이 문제에서 숫자 1부터 10까지라고 범위를 알려주었기때문에 초기값은 1이며, 조건식에
i <= 10, 즉 10까지 루프를 돌며 이번에는 i가 2씩 증가한다는 의미이다.
2. 출력문도 마찬가지로 format 출력서식으로 i를 적게되면 1부터 10까지 루프를 수행하여 출력한다.
[for 문 예제3] 구구단 2단을 출력하세요.
1. 구구단에서 중요한것은 어떤 숫자가 순차적으로 증가하는지를 이해해야한다.
2. 2에 곱해지는 숫자가 1부터 9까지 1씩 순차적으로 증가한다는것을 알 수 있다.
3. 증가하는 부분에 i를 넣어 출력문을 코딩한다.
4. 위 그림과 같이 구구단 2단이 출력된다.
[for 문 예제4] 키보드로 숫자를 입력받아 구구단을 만들어 보세요.
1. 이번에는 숫자를 입력받기 때문에 Scanner 클래스를 import 한다.
2. 순차적으로 늘어나는 곳이 어디인지 위에서 파악했기때문에 위에서와 다르게 입력받는 숫자를 변수에
저장한다.
3. format 출력서식으로 위 그림과 같이 출력문을 작성한다.
4. 실행하여 입력받은 숫자에 따라 다른 단수의 구구단을 출력을 확인한다.
이중 for 문
정확하게 말하면 다중 for 문 안에 이중 for 문이 들어가지만 필자는 기본적인 이중 for문에 대한 이해만
하고 넘어가려한다.
[이중 for 문 예제1] - 이해
바깥 for문 초기값과 조건식을 비교하여 참이면 안쪽 for문으로 내려가서 안쪽 for문의 초기값과 조건식을
비교하고, 참이면 실행문을 출력한다. 이 과정에서 안쪽 for문이 조건식과 비교하여 거짓일 경우 다시 바깥
for문으로 올라가고 초기값에서 증감식에 입력한 +1 증가한 값과 조건식을 비교하고 참이면 다시 안쪽 for
문으로 내려가고 거짓이면 반복문을 종료한다.
[이중 for 문 예제2] 구구단을 2단부터 5단까지 세로로 출력하세요.
이번 문제도 위 문제와 같이 바깥 for 문과 안쪽 for 문에 대한 이해가 있어야 한다.
구구단에서 단은 9번 실행할때까지 변화하지 않기때문에 안쪽 for문에서 9번 실행될동안 바깥 for문은
조건식에 따라 1번씩만 실행되어야 한다.
[이중 for 문 예제3] 구구단을 2단부터 9단까지 같은 단은 아래로 출력하고 다른 단은 옆으로 출력하세요.
1. 이번에는 단수가 1씩 증가를 해야하고 곱해지는 수가 바깥 for 문으로 가야한다는 것을 캐치해야한다.
2. 이중 for 문에 대한 이해를 하고있다면 바깥 for 문에서는 1번씩 돌고 안쪽 for 문에서는 8번씩
돌아야하기때문에 이 점만 이해하고 있다면 위 그림과 같은 코드를 짤 수 있다.
while 문
while 루프는 for 루프와 다르게 반복의 횟수를 모르고 있을 경우 사용한다. 조건식은 특정 조건을 만족할
때까지 계속해서 주어진 명령문을 반복 실행한다. while 문은 루프에 진입하기 전에 먼저 조건식부터 검사
한다.**(선조건 후수행)**
[while 문 예제1] while 문으로 1~ 10까지 숫자를 출력하세요.
1. while 문은 선조건 후수행이라는 것을 알고 있어야한다.
2. 조건식에서 사용할 변수 i의 초기값을 1로 지정한다.
3. 문제에서 1부터 10까지의 숫자를 모두 출력해야하니 10 이하의 숫자까지 변수 i를 1씩 증가시킨다.
4. 위와 같은 순서를 알면 위 코드를 프로그래밍할 수 있으며, 숫자가 1부터 10까지 출력된 사실을
확인하고 넘어간다.
[while 문 예제2] 키보드로 문자열을 입력 받아 공백을 기준으로 토큰마다 출력하세요.
** 토큰 : 문자열에서 공백을 기준으로 나누어진 하나의 문자열을 가리킨다.
** hasNext() : 무한대기상태에서 토큰이 들어오면 true를 반환하고 false를 반환하며 while loop를
빠져나오려면 ctrl + z를 입력해야 한다.
1. 위 문제를 풀기 앞서 hasNext() 메소드와 토큰의 의미를 알아야한다.
2. 키보드로 문자열을 입력받기 전 이해를 돕기 위해 처음 출력문에 "Enter input data "를 출력한다.
3. Scanner 클래스를 import 한다.
4. 우리는 키보드로 문자열을 입력받기때문에 정확한 반복횟수를 알지못하기 때문에 이 경우에는 for 문
보다는 while 문이 더 적합하여 while 문을 사용한다.
5. while 문의 조건식에 키보드로 입력받은 문자열을 hasNext() 메소드를 호출하여 문자열이 들어오면
hasNext() 메소드가 토큰마다 쪼개주어 문자열을 반환한다는 것을 이해해야한다.
6. 반환되는 문자열을 변수 token에 저장하고 format 출력서식으로 입력받은 문자열을 출력한다.
do ~ while 문
do ~ while 루프도 for 루프와 다르게 반복의 횟수를 모르고 있을 경우 사용한다. 조건식은 특정 조건을
만족할 때까지 계속해서 주어진 명령문을 반복 실행한다. 그런데 do ~ while 문은 while 문과 다르게
루프에 진입하기 전에 먼저 루프를 수행하고 조건문을 확인한다.**(선수행 후조건)**
[do ~ while 문 예제1] 1~ 10까지 숫자를 출력하세요.
1. do ~ while 문은 선수행 후조건이라는 개념을 이해해야한다.
2. do 여는 브레이스({)와 닫는 브레이스(}) 사이의 코드를 먼저 수행한다.
3. 출력문에 따라 i = 1이라는 결과값이 출력되고 while 문의 조건식을 보게된다.
4. 조건식의 결과가 참인동안 반복 루프를 수행한다.
[do ~ while 문 예제2] 사용자가 "quit"이라는 문자열을 입력할 때까지 출력하세요.
** break 문 : 반복문을 사용할 때 루프를 돌며 break 문을 만나면 프로그램을 종료한다는 의미이다.
1. 키보드로 문자열을 입력받아야하니 Scanner 클래스를 import 한다.
2. do ~ while 문에 선수행할 출력문과 문자열을 입력받는 nextLine() 메소드를 사용한다.
3. 여기서 문자열과 문자열의 비교는 단순비교연산자(==)를 사용하지 않고 Object 클래스에 정의된
equals() 메소드를 호출하여 비교한다.
4. 키보드로 입력받은 문자열을 equals() 메소드를 사용하여 조건문인 if 문의 조건식을 문자열 "quit"과 같다면 프로그램을 종료한다는 break 문을 사용한다.
5. if 문의 조건식의 결과가 false라면 키보드로 입력받은 문자열을 출력한다.
6. 이 문제는 "quit"이라는 문자열을 입력할 동안 무한 루프를 돌아야하기때문에 while의 조건식은
항상 참인 boolean 타입의 논리값인 true를 입력한다.