Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Схема цикла while

В большинстве языков компьютерного программирования цикл 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" ,  факториал );

Ада [ править ]

с  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 (язык программирования) - язык программирования со свойством, что функции, которые он может вычислять, в точности являются примитивными рекурсивными функциями.

Ссылки [ править ]

  1. ^ a b «Операторы while и do-while (Учебники Java ™> Изучение языка Java> Основы языка)» . Dosc.oracle.com . Проверено 21 октября 2016 .
  2. ^ "пока (справочник по C #)" . Msdn.microsoft.com . Проверено 21 октября 2016 .
  3. ^ «Глава 3: Язык программирования While» (PDF) . Profs.sci.univr.it . Проверено 21 октября 2016 .
  4. ^ Флемминг Нильсон; Ханне Р. Нильсон; Крис Ханкин (1999). Принципы анализа программ . Springer. ISBN 978-3-540-65410-0. Проверено 29 мая 2013 года .
  5. ^ Illingworth, Валерия (11 декабря 1997). Словарь по вычислительной технике . Оксфордская книга в мягкой обложке (4-е изд.). Издательство Оксфордского университета. ISBN 9780192800466.