В большинстве языков программирования цикл while - это поток управления оператор, который позволяет многократно выполнять код на основе заданного логического условия. Цикл while можно рассматривать как повторяющийся оператор if.
Конструкция while состоит из блока кода и условия / выражения. Условие / выражение оценивается, и если условие / выражение истинно, выполняется код в пределах всего их следующего в блоке. Это повторяется до тех пор, пока условие / выражение не станет ложным. Поскольку цикл while проверяет условие / выражение перед выполнением блока, структура управления часто также известна как цикл предварительного тестирования . Сравните это с циклом do while, который проверяет условие / выражение после выполнения цикла.
Например, в языке программирования C (а также Java, C#,Objective-C и C ++, который используйте тот же синтаксис в этом случае), фрагмент кода
int x = 0; while (x < 5) { printf ("x = %d\n", x); x++; }
сначала проверяет, меньше ли x, чем 5, что так и есть, поэтому затем вводится {тело цикла}, где выполняется функция printf, и x увеличивается на 1. После выполнения всех операторов в цикле body, условие, (x < 5), is checked again, and the loop is executed again, this process repeating until the переменная x имеет значение 5.
Обратите внимание, что возможно, а в некоторых случаях желательно, чтобы условие всегда оценивалось как истинное, создавая бесконечный цикл. Когда такой цикл создается намеренно, обычно существует другая управляющая структура (например, оператор break ), которая управляет завершением цикла. Например:
while ( true) {// делать сложные вещи if (someCondition) break; // еще что-то}
Эти циклы while вычисляют факториал числа 5:
var counter: int = 5; var factorial: int = 1; while (counter>1) {factorial * = counter; counter--;} Printf ("Factorial =% d", factorial);
![]() | Викибук Ада_Программирование есть страница по теме: Управление |
с Ada.Integer_Text_IO; Факториал процедуры - Counter: Integer: = 5; Факториал: Целое число: = 1; начало, пока счетчик>0 цикл Факториал: = Факториал * Счетчик; Счетчик: = Счетчик - 1; конец петли; Ada.Integer_Text_IO.Put (факториал); конец Факториал;
counter: = 5 factorial: = 1 While counter>0 factorial * = counter - MsgBox% factorial
counter = 5 'Counter = 5 factorial = 1' начальное значение переменной "factorial" Пока counter>0 factorial = factorial * counter counter = counter - 1 TextWindow.WriteLine (counter) EndWhile
Dim counter As Integer = 5 'инициализировать переменную и установить значение Dim factorial As Integer = 1 'инициализировать факторную переменную Do While counter>0 factorial = factorial * counter counter = counter - 1 Loop' программа идет сюда, пока counter = 0 'Debug.Print factorial' Console.WriteLine (factorial) в Visual Basic.NET
counter = 5 factorial = 1, а [$ counter -gt 0]; do factorial = $ ((factorial * counter)) counter = $ ((counter - 1)) done echo $ factorial
int main () {int counter = 5; int factorial = 1; в то время как (счетчик>1) факториал * = счетчик--; printf ("% d", факториал); }
counter = 5; факториал = 1; в то время как (счетчик>1) {факториал * = счетчик--; } writeOutput (факториал);
# factorial #
программа FactorialProg integer :: counter = 5 integer :: factorial = 1 do while (counter>0) factorial = factorial * counter counter = counter - 1 end do print *, факториальная конечная программа FactorialProg
Код цикла одинаков для Java, C # и D:
int counter = 5; int factorial = 1; в то время как (счетчик>1) факториал * = счетчик--;
let counter = 5; пусть факториал = 1; в то время как (счетчик>1) факториал * = счетчик--; console.log (факториал);
counter = 5 factorial = 1 while counter>0 do factorial = factorial * counter counter = counter - 1 end print (factorial)
counter = 5; факториал = 1; пока (счетчик>0) факториал = факториал * счетчик; % Умножение счетчика = счетчик - 1; % Уменьшить конечный факториал
Блок [{counter = 5, factorial = 1}, (* локализовать счетчик и факториал *) While [counter>0, (* while loop *) factorial * = counter; (* Умножить *) counter--; (* Декремент *)]; факториал]
МОДУЛЬ Факториал; ИМПОРТ Out; Счетчик VAR, факториал: INTEGER; BEGIN Счетчик: = 5; Факториал: = 1; WHILE Counter>0 DO Factorial: = Factorial * Counter; DEC (счетчик) END; Out.Int (Factorial, 0) END Факториал.
int $ counter = 5; int $ factorial = 1; int $ умножение; в то время как ($ counter>0) {$ multiplication = $ factorial * $ counter; $ counter - = 1; print ("Счетчик:" + $ counter + ", умножение:" + $ умножение + "\ n"); }
программа Factorial1; var Counter, Factorial: integer; начало счетчика: = 5; Факториал: = 1; пока Counter>0 начинаем Факториал: = Факториал * Счетчик; Счетчик: = Счетчик - 1 конец; WriteLn (Factorial) конец.
мой $ counter = 5; мой $ факториал = 1; в то время как ($ counter>0) {$ factorial * = $ counter--; # Умножить, а затем уменьшить} print $ factorial;
Циклы while часто используются для чтения данных построчно (как определено разделителем строк $ /
) из открытых дескрипторов файлов:
open IN, ") {print;} close IN;
$ counter = 5; $ factorial = 1; while ($ counter>0) {$ factorial * = $ counter; // Сначала умножаем. $ Counter--; // затем уменьшаем.} print $ factorial;
объявить counter fixed initial (5); объявить factorial fixed initial (1); do while (counter>0) factorial = factorial * counter; counter = counter - 1; end;
counter = 5 # Установить значение 5 factorial = 1 # Установить значение 1, а counter>0: # Пока counter (5) больше 0 factorial * = counter # Установить новое значение factorial счетчик - = 1 # Установить счетчик на счетчик - 1. print (factorial) # Распечатать значение факториала.
Непрерывный цикл while:
while True: print ("Помогите! Я застрял в петле! ")
В Racket, как и в других реализациях Scheme, named-let является популярным способом реализации ent loops:
#lang racket (определить счетчик 5) (определить факториал 1) (let loop () (when (>counter 0) (set! factorial (* factorial counter)) (set! counter (sub1 counter)) (loop))) (displayln factorial)
При использовании макросистемы реализация цикла while является тривиальным упражнением (обычно используется для введения макросов):
#lang racket (define-syntax-rule (while test body...); реализует цикл while (let loop () (when test body... (loop)))) (определить счетчик 5) (определить факториал 1) (while (>counter 0) (set! Factorial (* factorial counter)) (set! Counter (sub1 counter))) (displayln factorial)
Но обратите внимание, что императивный стиль программирования часто не приветствуется в Racket (как на схеме).
# Вычислить факториал 5 i = 1 factorial = 1, а i <= 5 factorial *= i i += 1 end puts factorial
fn main () {let mut counter = 5; пусть mut factorial = 1; пока счетчик>1 {факториал * = счетчик; счетчик - = 1; } println! ("{}", факториал); }
В отличие от других языков, в Smalltalk цикл while не является языковой конструкцией , а определен в классе BlockClosure
как метод с одним параметром, тело как закрытие с использованием self в качестве условия.
Smalltalk также имеет соответствующий метод whileFalse :.
| считать факториал | count: = 5. factorial: = 1. [count>0] whileTrue: [factorial: = factorial * count. count: = count - 1]. Transcript show: factorial
var counter = 5 // Установите начальное значение счетчика на 5 var factorial = 1 // Установите начальное значение факториала на 1, пока counter>0 {// Пока counter (5) больше 0 факториал * = счетчик // Устанавливаем новое значение факториала в счетчик факториала х. counter - = 1 // Устанавливаем новое значение counter на counter - 1.} print (factorial) // Распечатываем значение factorial.
устанавливает счетчик 5, устанавливает факториал 1, в то время как {$ counter>0} {set factorial [expr $ factorial * $ counter] incr counter -1} ставит $ factorial
int counter = 5 ; int factorial = 1; в то время как (счетчик>1) факториал * = счетчик--; printf ("% d", факториал);
$ counter = 5 $ factorial = 1 while ($ counter) {$ factorial * = $ counter--} $ factorial
Язык программирования While является простой язык программирования, построенный из присваиваний, последовательной композиции, условных выражений и операторов while, используемый в теоретическом анализе семантики императивного языка программирования.
C: = 5; F: = 1; пока (C>1) сделать F: = F * C; C: = C - 1;