Эта статья требует дополнительных ссылок для проверки . ( октябрь 2016 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Конструкции петель |
---|
В большинстве языков компьютерного программирования цикл while - это оператор потока управления, который позволяет многократно выполнять код на основе заданного логического условия. В то время как цикл можно рассматривать как повторение , если заявление .
Обзор [ править ]
Конструкция while состоит из блока кода и условия / выражения. [1] Условие / выражение оценивается, и если условие / выражение истинно , [1] выполняется код в пределах всего их следующего в блоке. Это повторяется до тех пор, пока условие / выражение не станет ложным . Поскольку в то время проверки цикла условия / выражение перед блоком выполняется, структура управления часто также известна как предтестовая петля . Сравните это с циклом do while , который проверяет условие / выражение после выполнения цикла.
Например, в языке программирования C (а также в Java , C # , [2] Objective-C и C ++ , которые в данном случае используют тот же синтаксис ) фрагмент кода
int x = 0 ;в то время как ( x < 5 ) { printf ( "x =% d \ n " , x ); x ++ ; }
сначала проверяется, меньше ли x, чем 5, что так и есть, поэтому затем вводится {тело цикла}, где выполняется функция printf и x увеличивается на 1. После выполнения всех операторов в теле цикла условие, ( x <5), снова проверяется, и цикл выполняется снова, этот процесс повторяется до тех пор, пока переменная x не будет иметь значение 5.
Обратите внимание, что возможно, а в некоторых случаях желательно, чтобы условие всегда оценивалось как истинное, создавая бесконечный цикл . Когда такой цикл создается намеренно, обычно существует другая управляющая структура (например, оператор break ), которая контролирует завершение цикла. Например:
while ( true ) { // делать сложные вещи if ( someCondition ) break ; // еще кое-что }
Демонстрация циклов while [ править ]
Эти циклы while вычисляют факториал числа 5:
ActionScript 3 [ править ]
var counter : int = 5 ; var factorial : int = 1 ;в то время как ( счетчик > 1 ) { факториал * = счетчик ; счетчик -; }Printf ( "Факториал =% d" , факториал );
Ада [ править ]
В Wikibook Ada_Programming есть страница по теме: Управление |
с Ada.Integer_Text_IO ; Факториал процедуры - Counter : Integer : = 5 ; Факториал : Целое число : = 1 ; начало, пока счетчик > 0 цикл Факториал : = Факториал * Счетчик ; Счетчик : = Счетчик - 1 ; конец петли ; Ада . Целочисленный_текст_IO . Положите ( Факториал ); конец Факториал ;
AutoHotkey [ править ]
счетчик : = 5 факториал : = 1Пока счетчик > 0 факториал * = счетчик - MsgBox % факториал
Microsoft Small Basic [ править ]
counter = 5 'Counter = 5 factorial = 1 ' начальное значение переменной "factorial"Пока счетчик > 0 факториал = факториал * счетчик счетчик = счетчик - 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 Программа цикла продолжается, пока counter = 0'Debug.Print factorial' Console.WriteLine (факториал) в Visual Basic .NET
Оболочка Bourne (Unix) [ править ]
counter = 5 factorial = 1, а [ $ counter -gt 0 ] ; do factorial = $ (( factorial * counter )) counter = $ (( counter - 1 )) doneecho $ factorial
C или C ++ [ править ]
int main () { int counter = 5 ; int factorial = 1 ; в то время как ( счетчик > 1 ) факториал * = счетчик - ; printf ( "% d" , факториал ); }
CFML [ править ]
Синтаксис скрипта [ править ]
counter = 5;факториал = 1; while (counter> 1) { факториал * = счетчик--;}writeOutput (факториал);
Синтаксис тега [ править ]
<cfset counter = 5 > <cfset factorial = 1 > <cfloop condition = "counter GT 1" > <cfset factorial * = counter - > </cfloop> <cfoutput> # factorial # </cfoutput>
Фортран [ править ]
программа FactorialProg integer :: counter = 5 integer :: factorial = 1 делать пока ( счетчик > 0 ) факториал = факториал * счетчик счетчик = счетчик - 1 конец делать print * , факториал конечной программы FactorialProg
Java , C # , D [ править ]
Код цикла одинаков для Java, C # и D:
int counter = 5 ; int factorial = 1 ;в то время как ( счетчик > 1 ) факториал * = счетчик -;
JavaScript [ править ]
пусть counter = 5 ; пусть факториал = 1 ;в то время как ( счетчик > 1 ) факториал * = счетчик - ;консоль . журнал ( факториал );
Lua [ править ]
счетчик = 5 факториал = 1в то время как счетчик > 0 do factorial = factorial * counter counter = counter - 1 endпечать ( факториал )
MATLAB и GNU Octave [ править ]
counter = 5 ; факториал = 1 ;в то время как ( счетчик > 0 ) факториал = факториал * счетчик ; % Умножение счетчика = счетчик - 1 ; % Decrement endфакториал
Математика [ править ]
Блок [{ counter = 5 , factorial = 1 }, (* локализуйте счетчик и факториал *) Пока [ счетчик > 0 , (* Цикл пока *) факториал * = счетчик ; (* Умножить *) счетчик - ; (* Уменьшение *) ]; факториал]
Оберон , Оберон-2 (язык программирования) , Оберон-07 или Компонентный Паскаль [ править ]
МОДУЛЬ Факториал ; ИМПОРТ Out ; Счетчик VAR , факториал : INTEGER ; BEGIN Счетчик : = 5 ; Факториал : = 1 ; WHILE Counter > 0 DO Factorial : = Factorial * Counter ; DEC ( счетчик ) END ; Out . Int ( Factorial , 0 ) END Факториал .
Встроенный язык Maya [ править ]
int $ counter = 5 ; int $ factorial = 1 ;int $ умножение ;в то время как ( $ counter > 0 ) { $ multiplication = $ factorial * $ counter ; $ counter - = 1 ; print ( "Счетчик:" + $ counter + ", умножение:" + $ умножение + "\ n" ); }
Ним [ править ]
var counter = 5 # Установить значение счетчика на 5 factorial = 1 # Установить значение factorial на 1while counter > 0 : # Пока counter больше 0 factorial * = counter # Установить новое значение факториала как counter. dec counter # Установить счетчик на счетчик - 1.эхо- факториал
Непрерывный цикл while:
while true : echo "Помогите! Я застрял в петле!"
Паскаль [ править ]
В Паскале есть две формы цикла while: while и repeat . Пока повторяет одну инструкцию (если она не заключена в блок begin-end), пока выполняется условие. Оператор repeat многократно выполняет блок из одного или нескольких операторов через оператор until и продолжает повторяться, если условие не ложно. Основное различие между ними заключается в том, что цикл while может выполняться ноль раз, если условие изначально ложно, цикл до повторения всегда выполняется хотя бы один раз.
программа Factorial1 ; var Fv : целое число ; факт процедуры ( счетчик : целое число ) ; var Factorial : целое число ; начало Факториал : = 1 ; в то время как счетчик > 0 делать начинают Факториал : = Факториал * Счетчик ; Счетчик : = Счетчик - 1 конец ; WriteLn ( Factorial ) end ;begin Write ( 'Введите число, чтобы получить его факториал:' ) ; readln ( fv ) ; повторить факт ( fv ) ; Write ( 'Введите другое число, чтобы вернуть его факториал (или 0, чтобы выйти):' ) ; пока fv = 0 ; конец .
Perl [ править ]
мой счетчик $ = 5 ; мой $ факториал = 1 ;в то время как ( $ counter > 0 ) { $ factorial * = $ counter - ; # Умножить, а затем уменьшить }print $ factorial ;
Циклы while часто используются для чтения данных построчно (как определено $/
разделителем строк) из открытых дескрипторов файлов:
открыть IN , "<test.txt" ;в то время как ( <IN> ) { печать ; }закрыть В ;
PHP [ править ]
$ counter = 5 ; $ факториал = 1 ;в то время как ( $ counter > 0 ) { $ factorial * = $ counter - ; // Умножить, а затем уменьшить. }echo $ factorial ;
PL / I [ править ]
объявить счетчик фиксированным начальным ( 5 ) ;объявить факториал фиксированным начальным ( 1 ) ;делать пока ( счетчик > 0 ) факториал = факториал * счетчик ; counter = counter - 1 ; конец ;
Python [ править ]
counter = 5 # Установить значение 5 factorial = 1 # Установить значение 1while counter > 0 : # Пока counter (5) больше 0 factorial * = counter # Установить новое значение факториала как counter. counter - = 1 # Установить счетчик на counter - 1.print ( factorial ) # Вывести значение факториала.
Непрерывный цикл while:
while True : print ( «Помогите! Я зациклился!» )
Ракетка [ править ]
В Racket, как и в других реализациях Scheme , популярным способом реализации циклов является named-let :
#lang racket ( определите счетчик 5 ) ( определите факториал 1 ) ( let loop () ( when ( > counter 0 ) ( set! factorial ( * factorial counter )) ( set! counter ( sub1 counter )) ( loop ))) ( displayln факториал )
Использование макро - системы, реализует то время как цикл является тривиальным упражнения (обычно используется для введения макросов):
#lang racket ( define-syntax-rule ( while test body ... ) ; реализует цикл while ( let loop () ( when test body ... ( loop )))) ( определить счетчик 5 ) ( определить факториал 1 ) (в то время как ( > счетчик 0 ) ( установить! факториал ( * счетчик факториала )) ( установить! counter ( sub1 counter ))) ( displayln факториал )
Но обратите внимание, что императивный стиль программирования часто не приветствуется в Racket (как и в Scheme).
Руби [ править ]
# Вычислить факториал 5 i = 1 factorial = 1в то время как я <= 5 факториал * = я я + = 1 конецставит факториал
Ржавчина [ править ]
fn main () { пусть mut counter = 5 ; пусть mut factorial = 1 ; while counter > 1 { факториал * = счетчик ; счетчик - = 1 ; } println ! ( "{}" , факториал ); }
Smalltalk [ править ]
В отличие от других языков, в Smalltalk во время цикла не является языковой конструкцией , но определенный в классе BlockClosure
как метод с одним параметром, тело как закрытие , используя себя в качестве условия.
Smalltalk также имеет соответствующий метод whileFalse :.
| считать факториал | количество : = 5 . факториал : = 1 . [ count > 0 ] whileTrue: [ factorial : = factorial * count . count : = count - 1 ] . Расшифровка шоу: факториал
Swift [ править ]
var counter = 5 // Устанавливаем начальное значение счетчика на 5 var factorial = 1 // Устанавливаем начальное значение факториала на 1while counter > 0 { // Пока counter (5) больше 0 factorial * = counter // Установить новое значение факториала на факториал x counter. counter - = 1 // Устанавливаем новое значение counter на counter - 1. }print ( factorial ) // Вывести значение факториала.
Tcl [ править ]
установить счетчик 5 установить факториал 1в то время как { $ counter > 0 } { set factorial [expr $ factorial * $ counter ] incr counter - 1 }помещает $ factorial
VEX [ править ]
int counter = 5 ; int factorial = 1 ;в то время как ( счетчик > 1 ) факториал * = счетчик -;printf ( "% d" , факториал );
PowerShell [ править ]
$ counter = 5 $ factorial = 1while ( $ counter ) { $ factorial * = $ counter - }$ факториал
Пока язык программирования [ править ]
Язык программирования While [3] - это простой язык программирования, построенный из присваиваний, последовательной композиции, условных выражений и операторов while, используемый в теоретическом анализе семантики императивного языка программирования. [4] [5]
С : = 5 ; F : = 1 ;пока ( C > 1 ) сделать F : = F * C ; C : = C - 1 ;
См. Также [ править ]
- Сделать цикл while
- Для цикла
- Для каждого
- LOOP (язык программирования) - язык программирования со свойством, что функции, которые он может вычислять, в точности являются примитивными рекурсивными функциями.
Ссылки [ править ]
- ^ a b «Операторы 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). Принципы анализа программ . Springer. ISBN 978-3-540-65410-0. Проверено 29 мая 2013 года .
- ^ Illingworth, Валерия (11 декабря 1997). Словарь по вычислительной технике . Оксфордская книга в мягкой обложке (4-е изд.). Издательство Оксфордского университета. ISBN 9780192800466.