"반복문"의 두 판 사이의 차이
(→for in 문) |
|||
320번째 줄: | 320번째 줄: | ||
:위 예에서 while 문의 조건문은 treeHit < 10이다. 즉 treeHit가 10보다 작은 동안에 while 문 안의 문장을 계속 수행한다. whlie 문 안의 문장을 보면 제일 먼저 treeHit = treeHit + 1로 treeHit 값이 계속 1씩 증가한다. 그리고 나무를 treeHit번 만큼 찍었음을 알리는 문장을 출력하고 treeHit가 10이 되면 "나무 넘어갑니다."라는 문장을 출력한다. 그러고 나면 treeHit < 10 조건문이 거짓이 되므로 while 문을 빠져나가게 된다.<ref name='re_exp9'></ref> | :위 예에서 while 문의 조건문은 treeHit < 10이다. 즉 treeHit가 10보다 작은 동안에 while 문 안의 문장을 계속 수행한다. whlie 문 안의 문장을 보면 제일 먼저 treeHit = treeHit + 1로 treeHit 값이 계속 1씩 증가한다. 그리고 나무를 treeHit번 만큼 찍었음을 알리는 문장을 출력하고 treeHit가 10이 되면 "나무 넘어갑니다."라는 문장을 출력한다. 그러고 나면 treeHit < 10 조건문이 거짓이 되므로 while 문을 빠져나가게 된다.<ref name='re_exp9'></ref> | ||
− | + | == | |
{{각주}} | {{각주}} | ||
2020년 8월 7일 (금) 16:56 판
반복문(iteration)은 프로그래밍 언어에서 특정 작업을 반복적으로 수행하는 프로그래밍 문법이다. 주로 일정한 법칙 및 변화가 있는 작업을 할 때 사용된다. [1]
개요
컴퓨터 프로그래밍에서 반복문(영어: iteration)은 제어문중 하나로, 프로그램 소스 코드내에서 특정한 부분의 코드가 반복적으로 수행될 수 있도록 하는 구문이다. [2]
C 언어에서의 반복문
for 문
- for : for 문은 반복 횟수를 명확히 알고 있을 때 사용하는 반복문이다.
for 문 알고리즘
[3]
1. ⓛ초기화식이 제일 먼저 실행된다.
2. ②조건식을 평가해서 true이면
3. ③실행문을 실행시키고
4. ④false이면 for문을 종료한다.
5. 만약 실행문이 실행되었다면 블록 내부의 ③실행문을 모두 실행시키고 ④증감식을 실행 시킨 뒤 다시 ②조건식을 평가하게 된다.[3]
for 문 문법
//문법 for(초기화식; 조건식; 증감식){ 실행문; }
for 문의 생략
- 상황에 따라 초기화식, 조건식, 증감식, 실행문의 블록 등 여러가지 코드를 생략할 수도 있다.
//초기화식 생략 int i=0; for(;i<10;i++){ printf("%d\n",i); } //조건식 생략(무한루프에 빠지게 된다.) for(int i=0;;i++){ printf("%d\n",i); } //증감식 생략(무한루프에 빠지게 된다.) for(int i=0;i<10;){ printf("%d\n",i); } //실행문이 한 라인일 경우 { } 대괄호 생략 가능 for(int i=0;i<10;i++) printf("%d\n",i);[3]
while 문
- while : while 문은 조건식이 true일 경우에 계속해서 반복하는 문법이다. 조건식에는 비교 또는 논리 연산식이 줄로 오는데 조건식이 false가 되면 반복을 멈추고 while 문을 종료한다.[4]
while 문 알고리즘
[4]
1. ①조건식을 평가한다. 평가 결과가 true이면 ②실행문을 실행한다.
2. ②실행문이 모두 실행되면 다시 ①조건식으로 되돌아가서 다시 검사한다.
3. 만약 ①조건식이 true라면 1, 2번 순서를 다시 반복하고, 아니면 while 문을 종료한다.
[4]
while 문 문법
//문법 while(조건식){ 실행문; } //사용법 int i=1; while(i<10){ printf("%d\n",i); i++; }
- while 문은 조건식이 true라면 실행문을 실행시킨다. 블록 안에 증감문은 넣어 주어도 되고 넣어주지 않아도 되는데 증감식을 넣어 주지 않게 되면 (while 문을 빠져나오는 구문이 없다면) 무한루프에 빠지게 된다.[4]
do while 문
- 먼저 한 번 코드를 실행한 후 조건 확인 및 반복을 하는 반복문이다.
do while 문 문법 및 예시
#include <stdio.h> int main() { int i = 0; do // 처음 한 번은 아래 코드가 실행됨 { printf("Hello, world! %d\n", i); // Hello, world!와 i의 값을 함께 출력 i++; // i를 1씩 증가시킴 } while (i < 100); // i가 100보다 작을 때 반복. 0부터 99까지 증가하면서 100번 반복 return 0; }
- 실행 결과
Hello, world! 0 Hello, world! 1 ... (생략) Hello, world! 97 Hello, world! 98 Hello, world! 99
- do 다음에 오는 코드는 조건식과 상관없이 무조건 한 번은 실행된다. 따라서 printf가 한 번 실행되고, i++도 실행되어 i가 1 증가한다. 이 상태로 조건식에서 i가 100보다 작은지 검사하게 되는데, 아직은 i가 100보다 작으므로 계속 반복하다가 i가 100이 되면 i < 100은 거짓이 되므로 반복을 끝낸다.
- do while 반복문도 반드시 { } (중괄호) 안에 변화식을 지정해야 한다. 만약 조건식만 지정하고 중괄호 안에서 변화식을 생략하면 반복이 끝나지 않고 계속 실행(무한 루프)되므로 주의해야 한다.[5]
반복문 생략과 탈출
break
- break : break는 영어로 '부수다, 깨다' 라는 의미를 가지고 있으며 이 의미와 비슷한 일을 하는데, 바로 반복문을 빠져나오는 일이다.
- break를 사용하지 않으면 for 문이나 while 문 같은 반복문은 종결조건이 될 때까지 계속해서 반복문을 돌게 된다. 하지만 이 break를 사용하면, 종결조건을 만족하지 않았는데도 반복문을 빠져나올 수 있다.[6]
예시
#include <stdio.h> int main(){ int input; int cnt = 0; scanf("%d", &input); for(int i = 1; i < 50; i++){ if(i == input){ break; printf("break 완료"); } printf("%d ", i); } while(1){ if(cnt == input){ printf("\nwhile문 : %d\n", cnt); break; } cnt++; } return 0; }
- 위 코드는 50 이하의 숫자 중 입력값까지 출력하는 간단한 코드이다. 위처럼 조건문 안에 break를 쓰면 해당 조건을 만족했을 때 반복문을 빠져나가게 된다.
- 그리고 break를 만나면 바로 반복문을 빠져나가는 것이기 때문에, break 아래에 있는 코드는 실행되지 않는다. 따라서 "break 완료"라는 문구는 출력되지 않는다.
- while 조건안에 1을 넣어주어 무한 반복문을 만든 후, 특정조건에서 종료되게 할 수도 있다.[6]
continue
- continue : continue는 영어로 '계속하다' 라는 의미를 가지고 있는데, 마찬가지로 반복문을 계속 진행하는 역할을 한다.[6]
예시
#include <stdio.h> int main(){ for(int i=0; i<10; i++){ if(i%2 == 0){ continue; } printf("%d ", i); } return 0; }
- 위와 같이 continue는 어떤 특정 조건을 제외시킬 때 사용하는데, if문에 들어와서 continue를 만나면 바로 아래 코드는 무시하고 다음 반복문을 실행한다.[6]
자바 언어에서의 반복문
for 문
- for : for 문은 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문이다.
for 문 알고리즘
이때 for 문을 구성하는 초기식, 조건식, 증감식은 각각 생략할 수 있다.[7]
for 문 문법
for (초기식; 조건식; 증감식) { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; } [7]
for 문 예시
for (i = 0; i < 5; i++) { System.out.println("for 문이 " + (i + 1) + "번째 반복 실행중입니다."); } System.out.println("for 문이 종료된 후 변수 i의 값은 " + i + "입니다.");
- 실행결과
for 문이 1번째 반복 실행중입니다. for 문이 2번째 반복 실행중입니다. for 문이 3번째 반복 실행중입니다. for 문이 4번째 반복 실행중입니다. for 문이 5번째 반복 실행중입니다. for 문이 종료된 후 변수 i의 값은 5입니다.[7]
while 문
- while 문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행한다.[7]
while 문 알고리즘
while 문은 우선 조건식이 참(true)인지를 판단하여, 참이면 내부의 명령문을 실행한다.
내부의 명령문을 전부 실행하고 나면, 다시 조건식으로 돌아와 또 한 번 참인지를 판단하게 된다.
이렇게 조건식의 검사를 통해 반복해서 실행되는 반복문을 루프(loop)라고 한다.
[7]
while 문 문법
while (조건식) { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; }
while 문 예시
int i = 0; while (i < 5) { System.out.println("while 문이 " + (i + 1) + "번째 반복 실행중입니다."); i++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨. } System.out.println("while 문이 종료된 후 변수 i의 값은 " + i + "입니다.");
- 실행결과
while 문이 1번째 반복 실행중입니다. while 문이 2번째 반복 실행중입니다. while 문이 3번째 반복 실행중입니다. while 문이 4번째 반복 실행중입니다. while 문이 5번째 반복 실행중입니다. while 문이 종료된 후 변수 i의 값은 5입니다.[7]
- while 문 내부에 조건식의 결과를 변경하는 명령문이 존재하지 않을 때는 프로그램이 영원히 반복된다.
- 이것을 무한 루프(infinite loop)에 빠졌다고 하며, 무한 루프에 빠진 프로그램은 영원히 종료되지 않는다.
- 무한 루프는 특별히 의도한 경우가 아니라면 반드시 피해야 하는 상황이다.
- 따라서 while 문을 작성할 때는 조건식의 결과가 어느 순간 거짓(false)을 갖도록 조건식의 결과를 변경하는 명령문을 반드시 포함시켜야 한다.[7]
do while 문
- do while : do while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다.
- 즉, do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.[7]
do while 문 알고리즘
do while 문 문법
do { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; } while (조건식);[7]
do while 문 예시
int i = 1, j = 1; while (i < 1) { System.out.println("while 문이 " + i + "번째 반복 실행중입니다."); i++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨. } System.out.println("while 문이 종료된 후 변수 i의 값은 " + i + "입니다."); do { System.out.println("do / while 문이 " + i + "번째 반복 실행중입니다."); j++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨. } while (j < 1); System.out.println("do / while 문이 종료된 후 변수 j의 값은 " + j + "입니다.");
- 실행 결과
while 문이 종료된 후 변수 i의 값은 1입니다. do / while 문이 1번째 반복 실행중입니다. do / while 문이 종료된 후 변수 j의 값은 2입니다.
- 위의 예제가 만약 while 문이었다면 단 한 번의 출력도 없었을 것이다.
- 하지만 do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행해 준다.[7]
Enhanced for 문
- Enhanced for : JDK 1.5부터 배열과 컬렉션의 모든 요소를 참조하기 위한 Enhanced for 문이라는 반복문이 새롭게 추가되었다.
- 이 반복문은 배열과 컬렉션 프레임워크에서 유용하게 사용된다.[8]
Enhanced for 문 문법
for (타입 변수이름 : 배열이나 컬렉션이름) { 배열의 길이만큼 반복적으로 실행하고자 하는 명령문; }
- Enhanced for 문은 명시한 배열이나 컬렉션의 길이만큼 반복되어 실행된다.
- 루프마다 각 요소는 명시한 변수의 이름으로 저장되며, 명령문에서는 이 변수를 사용하여 각 요소를 참조할 수 있다. [8]
Enhanced for 문 예시
- Enhanced for 문을 사용하여 각 배열 요소의 값을 출력하는 예제
int[] arr = new int[]{1, 2, 3, 4, 5}; for (int e : arr) { System.out.print(e + " "); }[8]
- 실행 결과
1 2 3 4 5 [8]
파이썬 언어에서의 반복문
for in 문
- for in : 파이썬 프로그래밍 언어에서 사용하는 for 문이다.
for in 문 문법
for 변수 in 리스트(또는 튜플, 문자열): 수행할 문장1 수행할 문장2 ...
for in 문 예시
test_list = ['one', 'two', 'three'] for i in test_list: print(i)
- 실행 결과
one two three
- ['one', 'two', 'three'] 리스트의 첫 번째 요소인 'one'이 먼저 i 변수에 대입된 후 print(i) 문장을 수행한다. 다음에 두 번째 요소 'two'가 i 변수에 대입된 후 print(i) 문장을 수행하고 리스트의 마지막 요소까지 이것을 반복한다.
while 문
- while : while 문은 반복해서 문장을 수행해야 할 경우 사용한다.
while 문 문법
while 조건식: 반복할 코드 변화식
- while 문은 조건문이 참인 동안에 while 문 아래의 문장이 반복해서 수행된다. [10]
while 문 예시
treeHit = 0 while treeHit < 10: treeHit = treeHit +1 print("나무를 %d번 찍었습니다." % treeHit) if treeHit == 10: print("나무 넘어갑니다.")
- 실행 결과
나무를 1번 찍었습니다. 나무를 2번 찍었습니다. 나무를 3번 찍었습니다. 나무를 4번 찍었습니다. 나무를 5번 찍었습니다. 나무를 6번 찍었습니다. 나무를 7번 찍었습니다. 나무를 8번 찍었습니다. 나무를 9번 찍었습니다. 나무를 10번 찍었습니다. 나무 넘어갑니다.[10]
- 위 예에서 while 문의 조건문은 treeHit < 10이다. 즉 treeHit가 10보다 작은 동안에 while 문 안의 문장을 계속 수행한다. whlie 문 안의 문장을 보면 제일 먼저 treeHit = treeHit + 1로 treeHit 값이 계속 1씩 증가한다. 그리고 나무를 treeHit번 만큼 찍었음을 알리는 문장을 출력하고 treeHit가 10이 되면 "나무 넘어갑니다."라는 문장을 출력한다. 그러고 나면 treeHit < 10 조건문이 거짓이 되므로 while 문을 빠져나가게 된다.[10]
==
각주
- ↑ 한 눈에 끝내는 C언어 기초, 〈반복문이란? 〉
- ↑ 위키백과, 〈반복문 〉
- ↑ 3.0 3.1 3.2 코딩팩토리, 〈For문 사용법 & 예제 총정리 〉, 2019년 7월 24일
- ↑ 4.0 4.1 4.2 4.3 코딩팩토리, 〈While문 사용법, 예제 총정리〉, 2019년 7월 23일
- ↑ 코딩도장, 〈do while 반복문 사용하기〉
- ↑ 6.0 6.1 6.2 6.3 한 눈에 끝내는 c언어 기초, 〈break와 continue〉
- ↑ 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 탭스쿨,〈break와 반복문〉
- ↑ 8.0 8.1 8.2 8.3 탭스쿨,〈Enhanced for 문〉
- ↑ WikiDocs,〈for문〉
- ↑ 10.0 10.1 10.2 10.3 10.4 WikiDocs,〈while문〉
참고자료
- 한 눈에 끝내는 C언어 기초, 〈반복문이란? 〉
- 코딩팩토리, 〈For문 사용법 & 예제 총정리 〉, 2019년 7월 24일
- 코딩팩토리, 〈While문 사용법, 예제 총정리〉, 2019년 7월 23일
- 코딩도장, 〈do while 반복문 사용하기〉
- 한 눈에 끝내는 c언어 기초, 〈break와 continue〉
- 탭스쿨,〈break와 반복문〉
- 탭스쿨,〈Enhanced for 문〉
- 더북(TheBook),〈Try! helloworld 파이썬〉
- WikiDocs,〈for문〉
- WikiDocs,〈while문〉
같이 보기