While 루프
While loop루프 구조 |
---|
대부분의 컴퓨터 프로그래밍 언어에서 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;
「 」를 참조해 주세요.
레퍼런스
- ^ a b "The while and do-while Statements (The Java™ Tutorials > Learning the Java Language > Language Basics)". Dosc.oracle.com. Retrieved 2016-10-21.
- ^ "while (C# reference)". Msdn.microsoft.com. Retrieved 2016-10-21.
- ^ "Chapter 3 : The While programming language" (PDF). Profs.sci.univr.it. Retrieved 2016-10-21.
- ^ Flemming Nielson; Hanne R. Nielson; Chris Hankin (1999). Principles of Program Analysis. Springer. ISBN 978-3-540-65410-0. Retrieved 29 May 2013.
- ^ Illingworth, Valerie (11 December 1997). Dictionary of Computing. Oxford Paperback Reference (4th ed.). Oxford University Press. ISBN 9780192800466.