Döngü sırasında - While loop

while döngüsü akış şeması

Çoğu bilgisayar programlama dilinde, while döngüsü , kodun belirli bir Boolean koşuluna göre tekrar tekrar yürütülmesine izin veren bir kontrol akışı ifadesidir . Süre döngü tekrarlayan olarak düşünülebilir açıklamada eğer .

genel bakış

İken yapısı bir kod bloğu ve bir durumdur / ifade oluşur. Koşul/ifade değerlendirilir ve koşul/ifade doğruysa , bloktaki tüm aşağıdakilerin içindeki kod yürütülür. Bu, koşul/ifade false olana kadar tekrarlanır . while döngüsü, blok yürütülmeden önce koşulu/ifadeyi kontrol ettiğinden, kontrol yapısı genellikle ön test döngüsü olarak da bilinir . Bunu, döngü yürütüldükten sonra koşulu/ifadeyi test eden do while döngüsüyle karşılaştırın .

Örneğin, C programlama dili (yanı sıra Java , C # , Objective-C ve C ++ , aynı sözdizimini kullanın bu durumda), kod parçası

int x = 0;

while (x < 5) {
    printf ("x = %d\n", x);
    x++;
}

önce x'in 5'ten küçük olup olmadığını kontrol eder, yani daha sonra printf fonksiyonunun çalıştırıldığı ve x'in 1 artırıldığı {loop body} girilir . Döngü gövdesindeki tüm ifadeler tamamlandıktan sonra, koşul, ( x < 5), tekrar kontrol edilir ve döngü tekrar yürütülür, bu işlem x değişkeni 5 değerine sahip olana kadar tekrarlanır .

Sonsuz bir döngü yaratarak koşulun her zaman doğru olarak değerlendirilmesinin mümkün ve bazı durumlarda istenebilir olduğunu unutmayın . Böyle bir döngü kasıtlı olarak oluşturulduğunda, genellikle döngünün sonlandırılmasını kontrol eden başka bir kontrol yapısı ( break ifadesi gibi) vardır. Örneğin:

while (true) {
    // do complicated stuff
    if (someCondition)
        break;
    // more stuff
}

Sergileme sırasında döngüleri

Bu while döngüleri, 5 sayısının faktöriyelini hesaplayacaktır :

ActionScript 3

var counter: int = 5;
var factorial: int = 1;

while (counter > 1) {
    factorial *= counter;
    counter--;
}

Printf("Factorial = %d", factorial);

Ada

with Ada.Integer_Text_IO;

procedure Factorial is
    Counter   : Integer := 5;
    Factorial : Integer := 1;
begin
    while Counter > 0 loop
        Factorial := Factorial * Counter;
        Counter   := Counter - 1;
    end loop;

    Ada.Integer_Text_IO.Put (Factorial);
end Factorial;

OtomatikKısayol tuşu

counter := 5
factorial := 1

While counter > 0
    factorial *= counter--    

MsgBox % factorial

Microsoft Küçük Temel

counter = 5    ' Counter = 5
factorial = 1  ' initial value of variable "factorial"

While counter > 0
    factorial = factorial * counter
    counter = counter - 1
    TextWindow.WriteLine(counter)
EndWhile

Visual Basic

Dim counter As Integer = 5    ' init variable and set value
Dim factorial As Integer = 1  ' initialize factorial variable

Do While counter > 0
    factorial = factorial * counter
    counter = counter - 1
Loop     ' program goes here, until counter = 0

'Debug.Print factorial         ' Console.WriteLine(factorial) in Visual Basic .NET

Bourne (Unix) kabuğu

counter=5
factorial=1
while [ $counter -gt 0 ]; do
    factorial=$((factorial * counter))
    counter=$((counter - 1))
done

echo $factorial

C veya C++

int main() {
    int counter = 5;
    int factorial = 1;

    while (counter > 1)
        factorial *= counter--;

    printf("%d", factorial);
}

CFML

komut dosyası sözdizimi

counter = 5;
factorial = 1;
 
while (counter > 1) {
    factorial *= counter--;
}

writeOutput(factorial);

Etiket sözdizimi

<cfset counter = 5>
<cfset factorial = 1>
<cfloop condition="counter GT 1">
    <cfset factorial *= counter-->
</cfloop>
<cfoutput>#factorial#</cfoutput>

Fortran

program FactorialProg
    integer :: counter = 5
    integer :: factorial = 1

    do while (counter > 0)
        factorial = factorial * counter
        counter = counter - 1
    end do

    print *, factorial
end program FactorialProg

Gitmek

Go'nun bir whiile ifadesi yoktur, ancak for ifadesinin bazı öğelerini atlarsanız, for ifadesinin işlevi vardır.

counter, factorial := 5, 1

for counter > 1 {
	counter, factorial = counter-1, factorial*counter
}

Java , C# , D

Döngünün kodu Java, C# ve D için aynıdır:

int counter = 5;
int factorial = 1;

while (counter > 1)
    factorial *= counter--;

JavaScript

let counter = 5;
let factorial = 1;

while (counter > 1)
    factorial *= counter--;

console.log(factorial);

Lua

counter = 5
factorial = 1

while counter > 0 do
  factorial = factorial * counter
  counter = counter - 1
end

print(factorial)

MATLAB & GNU Oktavı

counter = 5;
factorial = 1;

while (counter > 0)
    factorial = factorial * counter;      %Multiply
    counter = counter - 1;                %Decrement
end

factorial

matematik

Block[{counter=5,factorial=1},  (*localize counter and factorial*)
    While[counter>0,            (*While loop*)
        factorial*=counter;     (*Multiply*)
        counter--;              (*Decrement*)
    ];

    factorial
]

Oberon , Oberon-2 (programlama dili) , Oberon-07 veya Pascal Bileşeni

MODULE Factorial;
IMPORT Out;
VAR
    Counter, Factorial: INTEGER;
BEGIN
    Counter := 5;
    Factorial := 1;

    WHILE Counter > 0 DO
        Factorial := Factorial * Counter;
        DEC(Counter)
    END;
    
    Out.Int(Factorial,0)
END Factorial.

Maya Gömülü Dil

int $counter = 5;
int $factorial = 1;

int $multiplication;

while ($counter > 0) {
    $multiplication = $factorial * $counter;

    $counter -= 1;
    
    print("Counter is: " + $counter + ", multiplication is: " + $multiplication + "\n");
}

Nim

var
  counter = 5            # Set counter value to 5
  factorial = 1          # Set factorial value to 1

while counter > 0:       # While counter is greater than 0
    factorial *= counter # Set new value of factorial to counter.
    dec counter          # Set the counter to counter - 1.

echo factorial

Döngüyü sonlandırmayan:

while true:
  echo "Help! I'm stuck in a loop!"

paskal

Pascal'ın while döngüsünün iki biçimi vardır, while ve tekrar . Koşul doğru olduğu sürece bir ifadeyi tekrarlar (bir başlangıç-bitiş bloğu içine alınmadığı sürece). Tekrar ifadesi tekrar tekrar bir ile bir veya daha fazla tabloların bir blok yürütür kadar açıklamada ve koşul yanlış sürece tekrar devam eder. İkisi arasındaki temel fark, koşul başlangıçta yanlışsa while döngüsü sıfır kez yürütülebilir, yinelenene kadar döngü her zaman en az bir kez yürütülür.

program Factorial1;
var
    Fv: integer;

    procedure fact(counter:integer);
    var
        Factorial: integer;

    begin       
         Factorial := 1;
    
         while Counter > 0 do
         begin
             Factorial := Factorial * Counter;
             Counter := Counter - 1
         end;

         WriteLn(Factorial)
     end;

begin
    Write('Enter a number to return its factorial: ');
    readln(fv);
    repeat
         fact(fv);
         Write('Enter another number to return its factorial (or 0 to quit): '); 
     until fv=0;
end.

Perl

my $counter   = 5;
my $factorial = 1;

while ($counter > 0) {
    $factorial *= $counter--; # Multiply, then decrement
}

print $factorial;

Birlikte halkalar genellikle (tanımlandığı gibi hattı ile veri hattı okumak için kullanılan $/açık filehandles hat ayırıcı):

open IN, "<test.txt";

while (<IN>) {
    print;
}

close IN;

PHP

$counter = 5;
$factorial = 1;

while ($counter > 0) {
    $factorial *= $counter--; // Multiply, then decrement.
}

echo $factorial;

PL/I

declare counter   fixed initial(5);
declare factorial fixed initial(1);

do while(counter > 0)
    factorial = factorial * counter;
    counter = counter - 1;
end;

piton

counter = 5                           # Set the value to 5 
factorial = 1                         # Set the value to 1

while counter > 0:                    # While counter(5) is greater than 0  
    factorial *= counter              # Set new value of factorial to counter.
    counter -= 1                      # Set the counter to counter - 1.

print(factorial)                      # Print the value of factorial.

Döngüyü sonlandırmayan:

while True:
    print("Help! I'm stuck in a loop!")

raket

Racket'te, diğer Scheme uygulamalarında olduğu gibi, bir adlandırılmış-let , döngüleri uygulamanın popüler bir yoludur:

#lang racket
(define counter 5)
(define factorial 1)
(let loop ()
    (when (> counter 0)
        (set! factorial (* factorial counter))
        (set! counter (sub1 counter))
        (loop)))
(displayln factorial)

Bir makro sistemi kullanmak, bir while döngüsü uygulamak önemsiz bir alıştırmadır (genellikle makroları tanıtmak için kullanılır):

#lang racket
(define-syntax-rule (while test body ...) ; implements a while loop
    (let loop () (when test body ... (loop))))
(define counter 5)
(define factorial 1)
(while (> counter 0)
    (set! factorial (* factorial counter))
    (set! counter (sub1 counter)))
(displayln factorial)

Ancak, zorunlu bir programlama stilinin genellikle Racket'te (Scheme'de olduğu gibi) önerilmediğini unutmayın.

yakut

# Calculate the factorial of 5
i = 1
factorial = 1

while i <= 5
  factorial *= i
  i += 1
end

puts factorial

Pas

fn main() {
    let mut counter = 5;
    let mut factorial = 1;

    while counter > 1 {
        factorial *= counter;
        counter -= 1;
    }

    println!("{}", factorial);
}

küçük konuşma

Diğer dillerin aksine, Smalltalk'ta while döngüsü bir dil yapısı değildir, ancak sınıfta BlockClosuretek parametreli bir yöntem olarak tanımlanır , body bir closure olarak, koşul olarak self kullanılarak.

Smalltalk ayrıca buna karşılık gelen bir whileFalse: yöntemine sahiptir.

| count factorial |
count := 5.
factorial := 1.
[count > 0] whileTrue: 
    [factorial := factorial * count.
    count := count - 1].
Transcript show: factorial

Süratli

var counter = 5                 // Set the initial counter value to 5 
var factorial = 1               // Set the initial factorial value to 1

while counter > 0 {             // While counter(5) is greater than 0  
    factorial *= counter        // Set new value of factorial to factorial x counter.
    counter -= 1                // Set the new value of counter to  counter - 1.
}

print(factorial)                // Print the value of factorial.

Tcl

set counter 5
set factorial 1

while {$counter > 0} {
    set factorial [expr $factorial * $counter] 
    incr counter -1 
}

puts $factorial

CANINI SIKMAK

int counter = 5;
int factorial = 1;

while (counter > 1)
    factorial *= counter--;

printf("%d", factorial);

Güç kalkanı

$counter = 5
$factorial = 1

while ($counter) {
    $factorial *= $counter--
}

$factorial

Programlama dili yaparken

While programlama dili, zorunlu programlama dili anlambiliminin teorik analizinde kullanılan atamalar, sıralı kompozisyon, koşul ve while ifadelerinden oluşturulmuş basit bir programlama dilidir .

C := 5;
F := 1;

while (C > 1) do
    F := F * C;
    C := C - 1;

Ayrıca bakınız

Referanslar