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

"반복문"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
8번째 줄: 8번째 줄:
 
= C 언어에서의 반복문 =
 
= C 언어에서의 반복문 =
 
== for 문 ==
 
== for 문 ==
* '''for''' : 반복 횟수를 명확히 알고 있을 때 사용하는 반복문이다.
+
* '''for''' : for 문은 반복 횟수를 명확히 알고 있을 때 사용하는 반복문이다.
 
=== for 문 알고리즘 ===
 
=== for 문 알고리즘 ===
 
[[파일:For문_흐름.jpg]]<ref name='re_exp'>코딩팩토리, 〈[https://coding-factory.tistory.com/382 For문 사용법 & 예제 총정리 ]〉, 2019년 7월 24일</ref><br>
 
[[파일:For문_흐름.jpg]]<ref name='re_exp'>코딩팩토리, 〈[https://coding-factory.tistory.com/382 For문 사용법 & 예제 총정리 ]〉, 2019년 7월 24일</ref><br>
43번째 줄: 43번째 줄:
 
       printf("%d\n",i);<ref name='re_exp'></ref>
 
       printf("%d\n",i);<ref name='re_exp'></ref>
 
== while 문 ==
 
== while 문 ==
* '''while :문'''조건식이 true일 경우에 계속해서 반복하는 문법이다. 조건식에는 비교 또는 논리 연산식이 줄로 오는데 조건식이 false가 되면 반복을 멈추고 while 문을 종료한다.<ref name='re_exp2'>코딩팩토리, 〈[https://coding-factory.tistory.com/381 While문 사용법, 예제 총정리]〉, 2019년 7월 23일</ref>  
+
* '''while''' : while 문은 조건식이 true일 경우에 계속해서 반복하는 문법이다. 조건식에는 비교 또는 논리 연산식이 줄로 오는데 조건식이 false가 되면 반복을 멈추고 while 문을 종료한다.<ref name='re_exp2'>코딩팩토리, 〈[https://coding-factory.tistory.com/381 While문 사용법, 예제 총정리]〉, 2019년 7월 23일</ref>  
 
=== while 문 알고리즘 ===
 
=== while 문 알고리즘 ===
 
[[파일:While문_흐름.jpg]]<ref name='re_exp2'></ref><br>
 
[[파일:While문_흐름.jpg]]<ref name='re_exp2'></ref><br>
90번째 줄: 90번째 줄:
 
== 반복문 생략과 탈출 ==
 
== 반복문 생략과 탈출 ==
 
=== break ===
 
=== break ===
* '''break'''영어로 '부수다, 깨다' 라는 의미를 가지고 있으며 이 의미와 비슷한 일을 하는데, 바로 반복문을 빠져나오는 일이다.  
+
* '''break''' : break는 영어로 '부수다, 깨다' 라는 의미를 가지고 있으며 이 의미와 비슷한 일을 하는데, 바로 반복문을 빠져나오는 일이다.  
 
:break를 사용하지 않으면 for 문이나 while 문 같은 반복문은 종결조건이 될 때까지 계속해서 반복문을 돌게 된다. 하지만 이 break를 사용하면, 종결조건을 만족하지 않았는데도 반복문을 빠져나올 수 있다.<ref name='re_exp4'>한 눈에 끝내는 c언어 기초, 〈[https://edu.goorm.io/learn/lecture/201/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-c%EC%96%B8%EC%96%B4-%EA%B8%B0%EC%B4%88/lesson/417573/break%EC%99%80-continue break와 continue]〉</ref>  
 
:break를 사용하지 않으면 for 문이나 while 문 같은 반복문은 종결조건이 될 때까지 계속해서 반복문을 돌게 된다. 하지만 이 break를 사용하면, 종결조건을 만족하지 않았는데도 반복문을 빠져나올 수 있다.<ref name='re_exp4'>한 눈에 끝내는 c언어 기초, 〈[https://edu.goorm.io/learn/lecture/201/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-c%EC%96%B8%EC%96%B4-%EA%B8%B0%EC%B4%88/lesson/417573/break%EC%99%80-continue break와 continue]〉</ref>  
 
==== 예시 ====
 
==== 예시 ====
122번째 줄: 122번째 줄:
  
 
=== continue ===
 
=== continue ===
* '''continue'''영어로 '계속하다' 라는 의미를 가지고 있는데, 마찬가지로 반복문을 계속 진행하는 역할을 한다.<ref name='re_exp4'></ref>
+
* '''continue''' : continue는 영어로 '계속하다' 라는 의미를 가지고 있는데, 마찬가지로 반복문을 계속 진행하는 역할을 한다.<ref name='re_exp4'></ref>
 
==== 예시 ====
 
==== 예시 ====
 
   #include <stdio.h>
 
   #include <stdio.h>
205번째 줄: 205번째 줄:
 
:따라서 while 문을 작성할 때는 조건식의 결과가 어느 순간 거짓(false)을 갖도록 조건식의 결과를 변경하는 명령문을 반드시 포함시켜야 한다.<ref name='re_exp5'></ref>
 
:따라서 while 문을 작성할 때는 조건식의 결과가 어느 순간 거짓(false)을 갖도록 조건식의 결과를 변경하는 명령문을 반드시 포함시켜야 한다.<ref name='re_exp5'></ref>
 
== do while 문 ==
 
== do while 문 ==
* '''do while''' 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다.
+
* '''do while''' : do while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다.
 
:즉, do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.<ref name='re_exp5'></ref>
 
:즉, do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.<ref name='re_exp5'></ref>
 
=== do while 문 알고리즘 ===
 
=== do while 문 알고리즘 ===
245번째 줄: 245번째 줄:
 
:하지만 do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행해 준다.<ref name='re_exp5'></ref>
 
:하지만 do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행해 준다.<ref name='re_exp5'></ref>
 
== Enhanced for 문 ==
 
== Enhanced for 문 ==
* JDK 1.5부터 배열과 컬렉션의 모든 요소를 참조하기 위한 '''Enhanced for''' 문이라는 반복문이 새롭게 추가되었다.
+
* '''Enhanced for''' : JDK 1.5부터 배열과 컬렉션의 모든 요소를 참조하기 위한 Enhanced for 문이라는 반복문이 새롭게 추가되었다.
 
:이 반복문은 배열과 컬렉션 프레임워크에서 유용하게 사용된다.<ref name='re_exp6'>탭스쿨,〈[http://tcpschool.com/java/java_array_application Enhanced for 문]〉</ref>  
 
:이 반복문은 배열과 컬렉션 프레임워크에서 유용하게 사용된다.<ref name='re_exp6'>탭스쿨,〈[http://tcpschool.com/java/java_array_application Enhanced for 문]〉</ref>  
 
=== Enhanced for 문 문법 ===
 
=== Enhanced for 문 문법 ===

2020년 8월 7일 (금) 13:17 판

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

개요

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

C 언어에서의 반복문

for 문

  • 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 : 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는 영어로 '부수다, 깨다' 라는 의미를 가지고 있으며 이 의미와 비슷한 일을 하는데, 바로 반복문을 빠져나오는 일이다.
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문 흐름.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 문

  • do while : do while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다.
즉, do while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.[7]

do while 문 알고리즘

자바 do while문 흐름.png

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]

파이썬 언어에서의 반복문

각주

  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 7.7 7.8 7.9 탭스쿨,〈break와 반복문
  8. 8.0 8.1 8.2 8.3 탭스쿨,〈Enhanced for 문

참고자료

같이 보기


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