"While"의 두 판 사이의 차이
1번째 줄: | 1번째 줄: | ||
'''while'''은 영어로는 ~동안에 라는 의미를 가지고 있고 프로그래밍에서는 조건 반복문이다. while 루프는 if문의 반복으로 생각할 수도 있다. | '''while'''은 영어로는 ~동안에 라는 의미를 가지고 있고 프로그래밍에서는 조건 반복문이다. while 루프는 if문의 반복으로 생각할 수도 있다. | ||
+ | |||
+ | == while 루프 == | ||
+ | 대부분의 컴퓨터 프로그래밍 언어에서 while 루프는 반복문의 일종으로, 주어진 불린 자료형 조건을 기반으로 코드가 반복적으로 수행할 수 있게 도와준다. 이 while 루프는 if 문의 반복으로 생각할 수도 있다. while은 코드와 조건의 블록을 이루고 있다. 조건이 true라면 블록 안의 코드는 실행한다. 조건이 false가 될 때까지 이 작업을 반복한다. 블록을 실행하기 전에 while 루프를 검사하므로 제어 구조는 사전 시험 루프(pre-test loop)로 불리기도 한다. 루프를 실행한 뒤에 조건을 시험하는 do while 루프와 비교된다. 이를테면, C 프로그래밍 언어에서 (같은 구문을 사용하는 자바, C++에도 해당), 다음과 같은 코드의 파편은 | ||
+ | |||
+ | x = 0; | ||
+ | while(x < 3) { | ||
+ | x++; | ||
+ | } | ||
+ | |||
+ | 먼저 x가 3보다 작은지를 검사하고 작을 경우 1씩 숫자를 더한다. 조건을 다시 검사하고 다시 실행하여 변수 x가 값 3을 가질 때까지 이 과정을 반복한다. 물론 언제나 "true"라는 조건을 성립하게 만들 수도 있으며, 이때 무한 반복을 만들어 낸다. 고의로 이러한 루프를 만들 경우, break문과 같은 다른 제어 구조를 사용하여 루프를 끝낼 수 있다.<ref> 〈[https://ko.wikipedia.org/wiki/While_%EB%A3%A8%ED%94%84 while 루프]〉, 《위키백과》 | ||
== 문법 == | == 문법 == | ||
54번째 줄: | 64번째 줄: | ||
} | } | ||
− | 위의 실행 예제에도 보이듯이, square.c 프로그램은 숫자를 매우 규칙적으로 출력한다. 이는 변환규격을 %d 대신 %10d를 사용함으로써 얻는 효과다. 출력 길이가 지정된다면 printf는 숫자를 우측정렬한다.<ref>, 〈[https://wikidocs.net/26934 while문 - C 프로그래밍: 현대적 접근]〉, 《위키독스》, 2020-12-03</ref> | + | 위의 실행 예제에도 보이듯이, square.c 프로그램은 숫자를 매우 규칙적으로 출력한다. 이는 변환규격을 %d 대신 %10d를 사용함으로써 얻는 효과다. 출력 길이가 지정된다면 printf는 숫자를 우측정렬한다.<ref>, 〈[https://wikidocs.net/26934 while문 - C 프로그래밍: 현대적 접근]〉, 《위키독스》, 2020-12-03 </ref> |
== for문과의 차이점 == | == for문과의 차이점 == |
2021년 7월 9일 (금) 11:23 판
while은 영어로는 ~동안에 라는 의미를 가지고 있고 프로그래밍에서는 조건 반복문이다. while 루프는 if문의 반복으로 생각할 수도 있다.
while 루프
대부분의 컴퓨터 프로그래밍 언어에서 while 루프는 반복문의 일종으로, 주어진 불린 자료형 조건을 기반으로 코드가 반복적으로 수행할 수 있게 도와준다. 이 while 루프는 if 문의 반복으로 생각할 수도 있다. while은 코드와 조건의 블록을 이루고 있다. 조건이 true라면 블록 안의 코드는 실행한다. 조건이 false가 될 때까지 이 작업을 반복한다. 블록을 실행하기 전에 while 루프를 검사하므로 제어 구조는 사전 시험 루프(pre-test loop)로 불리기도 한다. 루프를 실행한 뒤에 조건을 시험하는 do while 루프와 비교된다. 이를테면, C 프로그래밍 언어에서 (같은 구문을 사용하는 자바, C++에도 해당), 다음과 같은 코드의 파편은
x = 0; while(x < 3) { x++; }
먼저 x가 3보다 작은지를 검사하고 작을 경우 1씩 숫자를 더한다. 조건을 다시 검사하고 다시 실행하여 변수 x가 값 3을 가질 때까지 이 과정을 반복한다. 물론 언제나 "true"라는 조건을 성립하게 만들 수도 있으며, 이때 무한 반복을 만들어 낸다. 고의로 이러한 루프를 만들 경우, break문과 같은 다른 제어 구조를 사용하여 루프를 끝낼 수 있다.인용 오류: <ref>
태그를 닫는 </ref>
태그가 없습니다
for문과의 차이점
while문은 조건식을 검사하여 참이면 명령을 수행하고 for문처럼 증감식으로 변숫값을 증감시킨다. 그리고 다시 조건식과 비교하여 특정한 명령을 반복 수행한다. 따라서 다음과 같이 for문으로 쓸 수 있다.
[while문] 초기화; 1 ① while(조건식) ② { ③ 명령문 1; . . ④ 증감식; }
[for문] for(초기화;,조건식;,증감식) ① ② ④ { ③ 명령문 1; 명령문 2; . . }
일반적으로 for문은 괄호 안에서 초기화를 하지만 while문은 while문 외부에서 초기화를 한다.물론 for문에서도 for문 시작 전에 초기화를 할 수 있으나 일반적이지 않다.
무한 반복
종료되지 않는 반복문을 무한 반복(infinity loop)이라고 한다. 일반적으로 어떤 조건을 사용하여 조건에 맞으면 반복시키지만 경우에 따라서는 무한 반복을 사용하기도 한다. while문에서 무한 반복을 사용하는 방법은 다음과 같다.
[while문] while(1) { 문장 . . }
while문에서는 while(1)처럼 조건식에 값 1을 주어 조건이 항상 참이라는 것을 나타낸다. 이와 같은 프로그래밍에서는 값이 0인 경우 거짓이고 그 외에 값이 있는 경우는 참이다. 위의 경우는 while(2)를 해도 무한 반복한다. 그러나 일반적으로 while(1)이라는 표현을 더 많이 쓴다. 무한 반복에서 빠져나오려면 break문을 이용하거나 디버깅을 강제 종료하는 방법이 있다.
각주