검수요청.png검수요청.png

반복문

위키원
theraker (토론 | 기여)님의 2020년 8월 7일 (금) 11:48 판 (예시)
이동: 둘러보기, 검색

반복문(iteration)은 프로그래밍 언어에서 특정 작업을 반복적으로 수행하는 프로그래밍 문법이다. 주로 일정한 법칙 및 변화가 있는 작업을 할 때 사용된다. [1]

개요

컴퓨터 프로그래밍에서 반복문(영어: iteration)은 제어문중 하나로, 프로그램 소스 코드내에서 특정한 부분의 코드가 반복적으로 수행될 수 있도록 하는 구문이다. [2]

C 언어에서의 반복문

for문

  • for문은 반복 횟수를 명확히 알고 있을 때 사용한다.

for문 알고리즘

For문 흐름.jpg[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문은 조건식이 true일 경우에 계속해서 반복하는 문법이다. 조건식에는 비교 또는 논리 연산식이 줄로 오는데 조건식이 false가 되면 반복을 멈추고 while문을 종료한다.[4]

while문 알고리즘

While문 흐름.jpg[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를 사용하지 않으면 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는 영어로 '계속하다' 라는 의미를 가지고 있는데, 마찬가지로 반복문을 계속 진행하는 역할을 한다.[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문 흐름.png
이때 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문 흐름.png 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문

enhanced for문

파이썬 언어에서의 반복문

각주

  1. 한 눈에 끝내는 C언어 기초, 〈반복문이란?
  2. 위키백과, 〈반복문
  3. 3.0 3.1 3.2 코딩팩토리, 〈For문 사용법 & 예제 총정리 〉, 2019년 7월 24일
  4. 4.0 4.1 4.2 4.3 코딩팩토리, 〈While문 사용법, 예제 총정리〉, 2019년 7월 23일
  5. 코딩도장, 〈do while 반복문 사용하기
  6. 6.0 6.1 6.2 6.3 한 눈에 끝내는 c언어 기초, 〈break와 continue
  7. 7.0 7.1 7.2 7.3 7.4 7.5 7.6 탭스쿨,〈break와 반복문

참고자료

같이 보기


  검수요청.png검수요청.png 이 반복문 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.