While 루프

While loop
While 루프 흐름도

대부분의 컴퓨터 프로그래밍 언어에서 while loop은 주어진 부울 조건에 따라 반복적으로 코드를 실행할 수 있는 제어 흐름 입니다.while 루프는 반복 if 문으로 간주할 수 있습니다.

개요

while 구성은 코드 블록과 조건/[1]식으로 구성됩니다.조건/식을 평가하여 조건/식이 [1]이면 블록 내의 모든 다음 코드 중 하나가 실행됩니다.이것은 조건/식이 false가 될 때까지 반복됩니다.while loop은 블록을 실행하기 전에 조건/식을 체크하기 때문에 제어 구조는 종종 사전 테스트 루프라고도 합니다.이것을 do while 루프와 비교합니다.이 루프는 루프가 실행된 후 조건/식을 테스트합니다.

예를 들어 C 프로그래밍 언어(이 경우 동일한 구문을 사용하는 Java, C#,[2] Objective-C 및 C++)에서는 코드 fragment가 사용됩니다.

인트 x = 0;  하는 동안에 (x < > 5) {     인쇄물 ("x = %d\n", x);     x++; } 

먼저 x가 5보다 작은지 여부를 확인합니다.그러면 {loop body}가 입력됩니다.여기서 printf 함수가 실행되고 x가 1씩 증가합니다.루프 본체 내의 모든 스테이트먼트를 완료한 후 조건(x < 5)을 다시 체크하고 루프를 다시 실행하며 변수 x가 값 5가 될 때까지 이 처리를 반복한다.

조건이 항상 true로 평가되어 무한 루프가 생성될 수 있으며 경우에 따라서는 바람직한 경우도 있습니다.이러한 루프가 의도적으로 작성되면 일반적으로 루프의 종료를 제어하는 다른 제어 구조(브레이크 스테이트먼트 등)가 존재합니다.예를 들어 다음과 같습니다.

하는 동안에 (진실의) {     // 복잡한 일을 하다     한다면 (어떤 조건)         브레이크.;     // 더 많은 것 } 

루프 상태에서의 데모

이러한 while 루프는 숫자 5의 계수를 계산합니다.

액션 스크립트 3

변화하다 계산대: 인트 = 5; 변화하다 요인: 인트 = 1;  하는 동안에 (계산대 > 1) {     요인 *= 계산대;     계산대--; }  프린트("요인 = %d", 요인); 

아다

와 함께 Ada.Integer_텍스트_IO;  절차. 요인      계산대   : 정수 := 5;     요인 : 정수 := 1; 시작한다.     하는 동안에 계산대 > 0 고리         요인 := 요인 * 계산대;         계산대   := 계산대 - 1;     끝. 고리;      아다.정수_텍스트_IO.놓다 (요인); 끝. 요인; 

APL

계산대  5 요인  1  :하는 동안에 계산대 > 0     요인 × 계산대     계산대 - 1     :종료 시간    요인 

자동 단축키

계산대 := 5 요인 := 1  하는 동안에 계산대 > 0     요인 *= 계산대--      메시지 박스 % 요인 

Microsoft Small Basic

계산대 = 5    ' 카운터 = 5 요인 = 1  변수 "initial"의 초기값  하는 동안에 계산대 > 0     요인 = 요인 * 계산대     계산대 = 계산대 - 1     텍스트 창.기입선(계산대) 종료 시간 

비주얼 베이직

어둡다 계산대 ~하듯이 정수 = 5    ' init 변수 및 set 값 어둡다 요인 ~하듯이 정수 = 1  요인 변수 초기화  하다 하는 동안에 계산대 > 0     요인 = 요인 * 계산대     계산대 = 계산대 - 1 고리     카운터 = 0까지 ' 프로그램이 여기에 들어갑니다.  'Debug.Print factor' 콘솔.[ Visual Basic ]의 [WriteLine(팩터)]를 선택합니다.그물 

본(Unix) 셸

counter=5 factor=1인 동안 [$counter -gt 0]; do factor=$(counter * counter) counter=$(counter - 1) 반향 $secho

C 또는 C++

인트 주된() {     인트 세어보세요 = 5;     인트 요인 = 1;      하는 동안에 (세어보세요 > 1)         요인 *= 세어보세요--;      인쇄물(%d, 요인); } 

CFML

스크립트 구문

카운터 = 5, 요인 = 1, (카운터 > 1) { 요인 *= 카운터--; } 쓰기출력(요인);

태그 구문

<cfset> 계산대 = 5> <cfset> 요인 = 1> < cfloop > 조건.="카운터 GT 1">     <cfset> 요인 *= 계산대--> </cfloop> <cfoutput>#요인#</cfoutput> 

포트란

프로그램.요인 프로그램     정수 :: 계산대 = 5     정수 :: 요인 = 1      을 하다 (계산대 > 0)         요인 = 요인 * 계산대         계산대 = 계산대 - 1     end do를 하다  인쇄물 *, 요인 종료 프로그램요인 프로그램 

가세요

Go에는 while 문이 없지만 for 문의 일부 요소를 생략하면 for 문의 기능이 있습니다.

계산대, 요인 := 5, 1  위해서 계산대 > 1 {  계산대, 요인 = 계산대-1, 요인*계산대 } 

Java, C#, D

루프의 코드는 Java, C# 및 D에서 동일합니다.

인트 계산대 = 5; 인트 요인 = 1;  하는 동안에 (계산대 > 1)     요인 *= 계산대--; 

자바스크립트

허락하다 계산대 = 5; 허락하다 요인 = 1;  하는 동안에 (계산대 > 1)     요인 *= 계산대--;  콘솔.로그.(요인); 

루아

계산대 = 5 요인 = 1  하는 동안에 계산대 > 0 하다   요인 = 요인 * 계산대   계산대 = 계산대 - 1 끝.  인쇄물(요인) 

MATLAB & GNU 옥타브

계산대 = 5; 요인 = 1;  하는 동안에 (계산대 > 0)     요인 = 요인 * 계산대;      %멀티플라이     계산대 = 계산대 - 1;                감소율 끝.  요인 

매스매티카

블록[{계산대=5,요인=1},  (*카운터 및 요인 현지화*)     하는 동안에[계산대>0,            (*while loop*)         요인*=계산대;     (*멀티플라이*)         계산대--;              (*감소*)     ];      요인 ] 

Oberon, Oberon-2(프로그래밍 언어), Oberon-07 또는 Component Pascal

모듈 요인; 수입품 나가.; VAR     계산대, 요인: 정수; 시작한다.     계산대 := 5;     요인 := 1;      하는 동안에 계산대 > 0 하다         요인 := 요인 * 계산대;         DEC(계산대)     끝.;          나가..내부(요인,0) 끝. 요인. 

Maya 임베디드 언어

인트 $카운터 = 5; 인트 $140 = 1;  인트 증배;  하는 동안에 ($카운터 > 0) {     증배 = $140 * $카운터;      $카운터 -= 1;          인쇄물("카운터: " + $카운터 + ", 곱셈은: " + 증배 + "\n"); } 

변화하다   계산대 = 5            # 카운터 값을 5로 설정합니다.   요인 = 1          # 요인 값을 1로 설정  하는 동안에 계산대 > 0:       카운터가 0보다 큰 경우     요인 *= 계산대 # 계수할 요인 값을 새로 설정합니다.     데크 계산대          # 카운터를 카운터 - 1로 설정합니다.  메아리치다 요인 

루프 중 비종단:

하는 동안에 진실의:   메아리치다 "도와주세요! 루프에 빠졌어요!" 

파스칼

파스칼에는 while 루프와 반복의 두 가지 형태가 있습니다.이 조건이 true인 한 (시작 블록에 둘러싸이지 않는 한)1개의 문을 반복합니다.repeat 문은 1개 또는 여러 개의 문으로 이루어진 블록을 too 을 통해 반복 실행하며 조건이 false가 아닌 한 계속 반복합니다.두 가지 주요 차이점은 조건이 처음에 false일 경우 루프가 0회 실행될 수 있지만 repeat-until 루프는 항상 적어도1회 실행됩니다.

프로그램. 요인 1; 변화하다     FV: 정수;      절차. 사실(계산대:정수);     변화하다         요인: 정수;      시작한다.                 요인 := 1;               하는 동안에 계산대 > 0 하다          시작한다.              요인 := 요인 * 계산대;              계산대 := 계산대 - 1          끝.;           기입(요인)      끝.;  시작한다.     기입하다('요인을 반환할 숫자 입력: ');     판독(fv);     따라하다          사실(fv);          기입하다('요인을 반환하려면 다른 숫자 입력(종료하려면 0):');       까지 fv=0; 끝.. 

나의 $카운터   = 5; 나의 $140 = 1;  하는 동안에 ($카운터 > 0) {     $140 *= $카운터--; # 곱셈 후 감소 }  인쇄물 $140; 

루프가 데이터 한 줄 읽기에 자주 사용되는 반면,$/열려 있는 파일 핸들로부터 행 구분 기호:

열다. 입력, "<test.txt";  하는 동안에 (<입력>) {     인쇄물; }  가까운. 입력; 

PHP

$카운터 = 5; $140 = 1;  하는 동안에 ($카운터 > 0) {     $140 *= $카운터--; // 곱한 다음 감소합니다. }  메아리치다 $140; 

PL/I

계수기 고정 이니셜(5), 계수기 고정 이니셜(1)을 선언하고, 계수기 고정 이니셜(1)을 선언하며, 계수기(counter > 0) 계수기 = 계수기 * 계수기 = 계수기 - 1; ;

파이썬

계산대 = 5                           # 값을 5로 설정합니다. 요인 = 1                         # 값을 1로 설정합니다.  하는 동안에 계산대 > 0:                    # 카운터(5)가 0보다 큰 경우     요인 *= 계산대              # 계수할 요인 값을 새로 설정합니다.     계산대 -= 1                      # 카운터를 카운터 - 1로 설정합니다.  인쇄물(요인)                      # 요인 값을 인쇄합니다. 

루프 중 비종단:

하는 동안에 진실의:     인쇄물("도와주세요! 루프에 빠졌어요!") 

라켓

다른 스킴 구현과 마찬가지로 Racket에서는 named-let이 루프를 구현하는 일반적인 방법입니다.

#실패하다라켓 (정의하다 계산대 5) (정의하다 요인 1) (허락하다 고리 ()     (언제 (> 계산대 0)         (세트! 요인 (* 요인 계산대))         (세트! 계산대 (서브1 계산대))         (고리))) (표시 요인) 

매크로 시스템을 사용하는 경우 while loop 구현은 간단한 연습입니다(일반적으로 매크로 도입에 사용됩니다).

#실패하다라켓 (define-timeout-rule(정의규칙) (하는 동안에 시험  ...) ;는 while 루프를 구현합니다.     (허락하다 고리 () (언제 시험  ... (고리)))) (정의하다 계산대 5) (정의하다 요인 1) (하는 동안에 (> 계산대 0)     (세트! 요인 (* 요인 계산대))     (세트! 계산대 (서브1 계산대))) (표시 요인) 

그러나 필수 프로그래밍 스타일은 종종 Racket(Scheme)에서 권장되지 않습니다.

루비

# 5의 계수를 계산합니다. i = 1 요인 = 1  하는 동안에 i <=> 5   요인 *= i   i += 1 끝.  놓다 요인 

fn 주된() {     허락하다 뮤트 계산대 = 5;     허락하다 뮤트 요인 = 1;      하는 동안에 계산대 > 1 {         요인 *= 계산대;         계산대 -= 1;     }      프린트!("{}", 요인); } 

스몰토크

다른 언어와는 달리 Smalltalk에서 while loop은 언어 구조가 아니라 클래스에서 정의됩니다.BlockClosure하나의 매개변수를 가진 방법으로서, 본문은 폐쇄로서, 자아를 조건으로 사용한다.

Smalltalk에는 대응하는 whileFalse: 메서드도 있습니다.

  요인 카운트 : = 5. 요인 : = 1. [카운트 > 0]인 동안참: [:= 요인 * 카운트. 카운트:= 카운트 - 1]스크립트 표시: 요인

재빠르다

변화하다 계산대 = 5                 // 초기 카운터 값을 5로 설정합니다. 변화하다 요인 = 1               // 초기 요인 값을 1로 설정  하는 동안에 계산대 > 0 {             // 카운터(5)가 0보다 큰 경우     요인 *= 계산대        // 요인 값을 요인 x 카운터로 설정합니다.     계산대 -= 1                // 카운터의 새 값을 카운터 - 1로 설정합니다. }  인쇄물(요인)                // 요인 값을 인쇄합니다. 

TCL

{$counter > 0} {set factor [expr $count * $counter] incr 카운터 -1}(가) $counting을 설정하는 동안 set counter 5 set factor 1이 $counting

팩스

인트 계산대 = 5; 인트 요인 = 1;  하는 동안에 (계산대 > 1)     요인 *= 계산대--;  인쇄물(%d, 요인); 

PowerShell

$카운터 = 5 $140 = 1  하는 동안에 ($카운터) {     $140 *= $카운터-- }  $140 

언어를 프로그래밍하는 동안

While 프로그래밍[3] 언어는 할당, 순차적 구성, 조건문 및 while 문장으로 구성된 단순한 프로그래밍 언어로, 명령형 프로그래밍 언어 [4][5]의미론의 이론적 분석에 사용됩니다.

C := 5; F := 1;  하는 동안에 (C > 1) 하다     F := F * C;     C := C - 1; 

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "The while and do-while Statements (The Java™ Tutorials > Learning the Java Language > Language Basics)". Dosc.oracle.com. Retrieved 2016-10-21.
  2. ^ "while (C# reference)". Msdn.microsoft.com. Retrieved 2016-10-21.
  3. ^ "Chapter 3 : The While programming language" (PDF). Profs.sci.univr.it. Retrieved 2016-10-21.
  4. ^ Flemming Nielson; Hanne R. Nielson; Chris Hankin (1999). Principles of Program Analysis. Springer. ISBN 978-3-540-65410-0. Retrieved 29 May 2013.
  5. ^ Illingworth, Valerie (11 December 1997). Dictionary of Computing. Oxford Paperback Reference (4th ed.). Oxford University Press. ISBN 9780192800466.