Пока цикл
Эта статья нуждается в дополнительных ссылок для проверки . ( октябрь 2016 г. ) |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/While-loop-diagram.svg/220px-While-loop-diagram.svg.png)
Конструкции цикла |
---|
В большинстве языков программирования цикл while — это потока управления оператор , который позволяет многократно выполнять код на основе заданного логического условия. Цикл while можно рассматривать как повторяющийся оператор if .
Обзор [ править ]
состоит Конструкция while из блока кода и условия/выражения. [1] Условие/выражение оценивается, и если условие/выражение истинно , [1] выполняется код внутри всех последующих блоков в блоке. Это повторяется до тех пор, пока условие/выражение не станет ложным . Поскольку цикл while проверяет условие/выражение перед выполнением блока, структуру управления часто называют циклом предварительного тестирования . Сравните это с do while циклом , который проверяет условие/выражение после выполнения цикла.
Например, в языках C , Java , C# , [2] Objective-C и C++ (которые в данном случае используют один и тот же синтаксис ), фрагмент кода
интервал х = 0 ;
while ( x < 5 ) {
printf ( "x = %d \n " , x );
х ++ ;
}
сначала проверяется, меньше ли x 5, а так оно и есть, затем вводится {тело цикла}, где запускается функция printf и x увеличивается на 1. После выполнения всех операторов в теле цикла выполняется условие ( x < 5), проверяется еще раз, и цикл выполняется снова, причем этот процесс повторяется до тех пор, пока переменная x не примет значение 5.
Возможно, а в некоторых случаях желательно, чтобы условие всегда принимало значение true, создавая бесконечный цикл . Когда такой цикл создается намеренно, обычно существует другая управляющая структура (например, оператор прерывания ), которая управляет завершением цикла. Например:
while ( true ) {
// делаем сложные вещи
if ( someCondition )
break ;
// больше вещей
}
Демонстрация while циклов [ править ]
Эти циклы while вычисляют факториал числа 5:
ActionScript 3 [ править ]
вар счетчик : int = 5 ;
вар факториал : int = 1 ;
while ( счетчик > 1 ) {
факториал *= счетчик ;
прилавок --;
}
Printf ( "Факториал = %d" , факториал );
Есть [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png)
с Ada.Integer_Text_IO ;
процедура Факториал -
Counter : Integer := 5 ;
Факториал : Целое число := 1 ;
начать
, пока Counter > 0 цикл
Факториал := Факториал * Counter ;
Счетчик := Счетчик - 1 ;
конец цикла ;
Ада . Целое_Текст_IO . Положить ( Факториал );
конец Факториала ;
АПЛ [ править ]
counter ← 5
факториал ← 1
: Пока счетчик > 0
факториал × ← счетчик
счетчик - ← 1
: EndWhile
⎕ ← факториал
или просто
! 5
Автохоткей [ править ]
счетчик := 5
факториал := 1
Пока счетчик > 0
факториал *= счетчик --
MsgBox % факториал
Маленький базовый [ править ]
counter = 5 ' Counter = 5
Factorial = 1 ' Начальное значение переменной "factorial"
Пока счетчик > 0
Factorial = Factorial * Counter
Counter = Counter - 1
TextWindow . WriteLine ( счетчик )
EndWhile
Visual Basic [ править ]
Dim counter As Integer = 5 ' инициализируем переменную и устанавливаем значение
Dim Factorial As Integer = 1 ' инициализируем факторную переменную
Do While counter > 0
Factorial = Factorial * counter
Counter = Counter - 1
Цикл ' Программа выполняется здесь, пока счетчик = 0
'Отладка. Печать факториала ' Console.WriteLine(факториал) в Visual Basic .NET
Оболочка Bourne (Unix) [ править ]
счетчик = 5
факториал = 1
while [ $counter -gt 0 ] ; do
факториал = $(( факториал * счетчик ))
счетчик = $(( счетчик - 1 ))
готово
echo $факториал
Си, С++ [ править ]
int main () {
int count = 5 ;
int факториал = 1 ;
while ( count > 1 )
факториал *= count -- ;
printf ( "%d" , факториал );
}
Язык разметки ColdFusion (CFML) [ править ]
Синтаксис скрипта [ править ]
счетчик = 5 ;
факториал = 1 ;
while ( counter > 1 ) {
факториал *= counter -- ;
}
writeOutput ( факториал );
Синтаксис тега [ править ]
<cfset counter = 5 >
<cfset Factorial = 1 >
<cfloop Condition = "counter GT 1" >
<cfset Factorial *= Counter -- >
</cfloop>
<cfoutput> # факториал # </cfoutput>
Фортран [ править ]
программа FactorialProg
целое :: счетчик = 5
целое число :: факториал = 1
do while ( счетчик > 0 )
факториал = факториал * счетчик
счетчик = счетчик - 1
конец do
print * , факториал
конец программы FactorialProg
Иди [ править ]
В Go нет оператора while , но он выполняет функцию оператора for при пропуске некоторых элементов оператора for .
счетчик , факториал := 5 , 1
для счетчика > 1 {
счетчик , факториал = счетчик - 1 , факториал * счетчик
}
Ява, C , D #
Код цикла одинаков для Java, C# и D:
интервал счетчика = 5 ;
int факториал = 1 ;
while ( счетчик > 1 )
факториал *= счетчик -- ;
JavaScript [ править ]
пусть счетчик = 5 ;
пусть факториал = 1 ;
while ( счетчик > 1 )
факториал *= счетчик -- ;
консоль . журнал ( факториал );
Возьмите [ править ]
счетчик = 5
факториал = 1
, пока счетчик > 0 do
факториал = факториал * счетчик
счетчик = счетчик - 1
конец
печати ( факториал )
MATLAB, Октава [ править ]
счетчик = 5 ;
факториал = 1 ;
while ( счетчик > 0 )
факториал = факториал * счетчик ; %Multiply
counter = counter - 1 ; %Уменьшить
конечный
факториал
Математика [ править ]
Block [{ counter = 5 , Factorial = 1 }, (*локализовать счётчик и факториал*)
While [ counter > 0 , (*Пока цикл*)
Factorial *= Counter ; (*Умножить*)
счетчик -- ; (*Уменьшение*)
];
факториал
]
Оберон, Оберон-2, Оберон-07 Паскаль Компонентный ,
МОДУЛЬ Факториал ;
ИМПОРТ Выход ;
VAR
Счетчик , Факториал : INTEGER ;
НАЧАТЬ
Счетчик := 5 ;
Факториал := 1 ;
WHILE Counter > 0 DO
Факториал := Факториал * Счетчик ;
DEC ( Счетчик )
КОНЕЦ ;
Вне . Int ( Факториал , 0 )
END Факториал .
Встроенный язык Maya [ править ]
интервал $counter = 5 ;
int $факториал = 1 ;
интервал $умножение ;
while ( $counter > 0 ) {
$multiplication = $factorial * $counter ;
$счетчик -= 1 ;
print ( "Счетчик: " + $counter + ", умножение: " + $multiplication + "\n" );
}
Nim [ edit ]
var
counter = 5 # Установить значение счетчика равным 5
factial = 1 # Установить значение факториала равным 1
while counter > 0 : # Пока счетчик больше 0
Factorial *= Counter # Установить новое значение факториала для счетчика.
dec counter # Установить счетчик на counter - 1.
echo Factorial
Незавершающийся цикл while:
while true :
echo "Помогите! Я застрял в петле!"
Паскаль [ править ]
В Паскале есть две формы цикла while: while и повтор . While повторяет один оператор (если он не заключен в блок начала-конца), пока условие истинно. Оператор повторения повторно выполняет блок из одного или нескольких операторов посредством оператора до тех пор, пока не будет выполнено, пока условие не станет ложным. Основное различие между ними заключается в том, что цикл while может выполняться ноль раз, если условие изначально ложно, а цикл повторения-до всегда выполняется хотя бы один раз.
программа Факториал1 ;
вар
Fv : целое число ;
процедуры факт ( счетчик : целое число ) ;
вар
Факториал : целое число ;
начать
Факториал := 1 ;
пока Counter > 0, do
Begin
Factorial := Factorial * Counter ;
Счетчик := Счетчик - 1
конец ;
WriteLn ( Факториал )
конец ;
Begin
Write ( 'Введите число, чтобы вернуть его факториал:' ) ;
readln ( ф.в. ) ;
повторить
факт ( fv ) ;
Write ( 'Введите другое число, чтобы вернуть его факториал (или 0, чтобы выйти): ' ) ;
пока fv = 0 ;
конец .
Перл [ править ]
мой $counter = 5 ;
мой $факториал = 1 ;
while ( $counter > 0 ) {
$factorial *= $counter -- ; # Умножаем, затем уменьшаем
}
print $factorial ;
Хотя циклы часто используются для чтения данных построчно (как определено в $/
разделитель строк) из открытых дескрипторов файлов:
открыть IN , "<test.txt" ;
while ( <IN> ) {
печать ;
}
приближаться ;
PHP [ править ]
$счетчик = 5 ;
$факториал = 1 ;
while ( $counter > 0 ) {
$factorial *= $counter -- ; // Умножаем, затем уменьшаем.
}
эхо $факториал ;
ПЛ/И [ править ]
объявить счетчика фиксированную начальную величину ( 5 ) ;
объявить факториал фиксированным начальным значением ( 1 ) ;
делать while ( счетчик > 0 )
факториал = факториал * счетчик ;
счетчик = счетчик - 1 ;
конец ;
Питон [ править ]
counter = 5 # Установите значение 5
Factorial = 1 # Установите значение 1,
пока счетчик > 0 : # Пока счетчик (5) больше 0,
факториал *= счетчик # Установите новое значение факториала для счетчика.
counter -= 1 # Установите счетчик на counter - 1.
print ( factorial ) # Распечатайте значение факториала.
Незавершающийся цикл while:
while True :
print ( «Помогите! Я застрял в цикле!» )
Ракетка [ править ]
В Racket, как и в других Scheme реализациях , именованный элемент является популярным способом реализации циклов:
#lang Racket
( определить счетчик 5 )
( определить факториал 1 )
( let цикл ()
( когда ( > счетчик 0 )
( установить! факториал ( * факториала счетчик ))
( установить! счетчик ( sub1 счетчик ))
( цикл )))
( displayln факториал )
Используя систему макросов, реализация цикла while является тривиальным упражнением (обычно используемым для введения макросов):
#lang Racket
( define-syntax-rule ( while test body ... ) ; реализует цикл while
( let цикл () ( if test body ... ( цикл ))))
( define counter 5 )
( определит факториал 1 )
( while ( > counter 0 )
( set! Factorial ( * Factorial Counter ))
( set! Counter ( sub1 счетчик )))
( displayln Factorial )
Однако в Scheme и Racket императивный стиль программирования часто не рекомендуется.
Руби [ править ]
# Вычислить факториал 5
i = 1
факториал = 1
while i <= 5
факториал *= i
i += 1
end
помещает факториал
Ржавчина [ править ]
fn main () {
let mut counter = 5 ;
пусть mut факториал = 1 ;
while counter > 1 {
факториал *= counter ;
счетчик -= 1 ;
}
печатьлн! ( "{}" , факториал );
}
Смолток [ править ]
В отличие от других языков, в Smalltalk цикл while не является языковой конструкцией , а определен в классе. BlockClosure
как метод с одним параметром, тело как замыкание , используя self в качестве условия.
В Smalltalk также есть соответствующий метод whileFalse:.
| посчитать факториал |
считать := 5 .
факториал := 1 .
[ count > 0 ] whileTrue:
[ факториал := факториал * количество .
счет := счет - 1 ] .
Расшифровка шоу: факториал
Свифт [ править ]
var counter = 5 // Устанавливаем начальное значение счетчика равным 5
var factial = 1 // Устанавливаем начальное значение факториала равным 1
while counter > 0 { // Пока counter(5) больше 0
factial *= counter // Устанавливаем новое значение факториала к счетчику факториала x.
counter -= 1 // Установите новое значение счетчика на counter - 1.
}
print ( factorial ) // Распечатайте значение факториала.
ТКЛ [ править ]
установить счетчик 5,
установить факториал 1,
пока { $counter > 0 } {
установить факториал [выражение $факториал * $counter ]
incr counter - 1
}
помещает $факториал
ВЕКС [ править ]
интервал счетчика = 5 ;
int факториал = 1 ;
while ( счетчик > 1 )
факториал *= счетчик -- ;
printf ( "%d" , факториал );
PowerShell [ править ]
$counter = 5
$factorial = 1
while ( $counter ) {
$factorial *= $counter --
}
$factorial
Пока (язык) [ править ]
Пока [3] — это простой язык программирования, построенный на основе присваиваний, последовательной композиции, условных операторов и операторов while, используемый в теоретическом анализе семантики императивного языка программирования . [4] [5]
С := 5 ;
Ф := 1 ;
в то время как ( C > 1 ) делайте
F := F * C ;
С := С - 1 ;
См. также [ править ]
- Сделать цикл while
- Для цикла
- Для каждого
- LOOP (язык программирования) – язык программирования, обладающий тем свойством, что функции, которые он может вычислять, являются в точности примитивно-рекурсивными функциями.
Ссылки [ править ]
- ^ Перейти обратно: а б «Операторы while и do- while (Учебные пособия по Java > Изучение языка Java > Основы языка)» . Dosc.oracle.com . Проверено 21 октября 2016 г.
- ^ "пока (ссылка на C#)" . Msdn.microsoft.com . Проверено 21 октября 2016 г.
- ^ «Глава 3: Язык программирования While» (PDF) . Profs.sci.univr.it . Проверено 21 октября 2016 г.
- ^ Флемминг Нильсон; Ханне Р. Нильсон; Крис Хэнкин (1999). Принципы анализа программ . Спрингер. ISBN 978-3-540-65410-0 . Проверено 29 мая 2013 г.
- ^ Иллингворт, Валери (11 декабря 1997 г.). Словарь вычислительной техники . Оксфордский справочник в мягкой обложке (4-е изд.). Издательство Оксфордского университета. ISBN 9780192800466 .