Пока цикл - While loop

Схема цикла while

В большинстве языков компьютерного программирования пока цикл это поток управления заявление который позволяет выполнять код повторно на основе заданного Булево условие. В пока цикл можно рассматривать как повторяющийся если заявление.

Обзор

В пока конструкция состоит из блока кода и условия / выражения.[1] Условие / выражение оценивается, и если условие / выражение правда,[1] код в пределах всего их следующего в блоке выполняется. Это повторяется до тех пор, пока условие / выражение не станет ложный. Поскольку пока цикл проверяет условие / выражение перед выполнением блока, управляющая структура часто также известна как предтестовый цикл. Сравните это с делать пока петля, который проверяет условие / выражение после цикл выполнен.

Например, в Язык программирования C (а также Ява, C #,[2] Цель-C, и C ++, который использовать тот же синтаксис в данном случае) фрагмент кода

int Икс = 0;пока (Икс < 5) {    printf ("x =% d п", Икс);    Икс++;}

сначала проверяет, меньше ли x, чем 5, а затем вводится {тело цикла}, где printf функция запускается, а x увеличивается на 1. После выполнения всех операторов в теле цикла условие (x <5) проверяется снова, и цикл выполняется снова, этот процесс повторяется до тех пор, пока переменная x имеет значение 5.

Обратите внимание, что это возможно, а в некоторых случаях желательно, чтобы состояние всегда оценить как истина, создавая бесконечный цикл. Когда такой цикл создается намеренно, обычно используется другая управляющая структура (например, перемена оператор), который контролирует завершение цикла, например:

пока (правда) {    // делаем сложные вещи    если (someCondition)        перемена;    // больше вещей}

Демонстрация пока петли

Эти пока петли рассчитают факториал числа 5:

ActionScript 3

вар счетчик: int = 5;вар факториал: int = 1;пока (счетчик > 1) {    факториал *= счетчик;    счетчик--;}Printf(«Факториал =% d», факториал);

Ада

с Ada.Integer_Text_IO;процедура Факториал является    Счетчик   : Целое число := 5;    Факториал : Целое число := 1;начинать    пока Счетчик > 0 петля        Факториал := Факториал * Счетчик;        Счетчик   := Счетчик - 1;    конец петля;    Ада.Integer_Text_IO.Положил (Факториал);конец Факториал;

AutoHotkey

счетчик := 5факториал := 1В то время как счетчик > 0    факториал *= счетчик--    MsgBox % факториал

Microsoft Small Basic

счетчик = 5    'Counter = 5факториал = 1  'начальное значение переменной "факториал"В то время как счетчик > 0    факториал = факториал * счетчик    счетчик = счетчик - 1    TextWindow.WriteLine(счетчик)Конец

Visual Basic

Тусклый счетчик В качестве Целое число = 5    'инициализировать переменную и установить значениеТусклый факториал В качестве Целое число = 1  'инициализировать факторную переменнуюДелать В то время как счетчик > 0    факториал = факториал * счетчик    счетчик = счетчик - 1Петля     'программа продолжается, пока counter = 0'Debug.Print factorial' Console.WriteLine (факториал) в Visual Basic .NET

Оболочка Bourne (Unix)

счетчик=5факториал=1пока [ $ counter -gt 0 ]; делать    факториал=$((факториал * счетчик))    счетчик=$((счетчик - 1))сделаноэхо $ факториал

C или C ++

int основной() {    int счетчик = 5;    int факториал = 1;    пока (счетчик > 1)        факториал *= счетчик--;    printf("% d", факториал);}

CFML

Синтаксис скрипта

счетчик = 5; факториал = 1; while (counter> 1) {factorial * = counter -;} writeOutput (факториал);

Синтаксис тега

 счетчик = 5> факториал = 1> условие=«счетчик ГТ 1»>     факториал *= счетчик--></cfloop><cfoutput>#факториал#</cfoutput>

Фортран

программа ФакториалПрог    целое число :: счетчик = 5    целое число :: факториал = 1    делать пока (счетчик > 0)        факториал = факториал * счетчик        счетчик = счетчик - 1    конец делать    Распечатать *, факториалконец программы ФакториалПрог

Ява, C #, D

Код цикла одинаковый для Java, C # и D:

int счетчик = 5;int факториал = 1;пока (счетчик > 1)    факториал *= счетчик--;

JavaScript

позволять счетчик = 5;позволять факториал = 1;пока (счетчик > 1)    факториал *= счетчик--;консоль.бревно(факториал);

Lua

счетчик = 5факториал = 1пока счетчик > 0 делать  факториал = факториал * счетчик  счетчик = счетчик - 1конецРаспечатать(факториал)

MATLAB & GNU Octave

счетчик = 5;факториал = 1;пока (счетчик > 0)    факториал = факториал * счетчик;      % Умножить    счетчик = счетчик - 1;                % Decrementконецфакториал

Mathematica

Блокировать[{счетчик=5,факториал=1},(* локализовать счетчик и факториал *)В то время как[счетчик>0,(* Цикл пока *)факториал*=счетчик;(* Умножить *)счетчик--;(* Уменьшение *)];факториал]

Оберон, Оберон-2 (язык программирования), Оберон-07, или же Компонент Паскаль

МОДУЛЬ Факториал;ИМПОРТ Из;VAR    Счетчик, Факториал: ЦЕЛОЕ;НАЧАТЬ    Счетчик := 5;    Факториал := 1;    В ТО ВРЕМЯ КАК Счетчик > 0 ДЕЛАТЬ        Факториал := Факториал * Счетчик;        DEC(Счетчик)    КОНЕЦ;        Из.Int(Факториал,0)КОНЕЦ Факториал.

Встроенный язык Maya

int $ counter = 5;int $ факториал = 1;int умножение $;пока ($ counter > 0) {    умножение $ = $ факториал * $ counter;    $ counter -= 1;        Распечатать("Счетчик:" + $ counter + ", умножение:" + умножение $ + " п");}

Ним

вар  счетчик = 5            # Установить значение счетчика на 5  факториал = 1          # Установить факториал на 1пока счетчик > 0:       # Пока счетчик больше 0    факториал *= счетчик # Установить новое значение факториала для счетчика.    декабрь счетчик          # Установить счетчик на счетчик - 1.эхо факториал

Непрерывный цикл while:

пока правда:  эхо "Помогите! Я застрял в петле!"

Паскаль

программа Факториал1;вар    Счетчик, Факториал: целое число;начинать    Счетчик := 5;    Факториал := 1;        пока Счетчик > 0 делать    начинать        Факториал := Факториал * Счетчик;        Счетчик := Счетчик - 1    конец;    WriteLn(Факториал)конец.

Perl

мой $ counter   = 5;мой $ факториал = 1;пока ($ counter > 0) {    $ факториал *= $ counter--; # Умножить, а затем уменьшить}Распечатать $ факториал;

В то время как циклы часто используются для чтения данных построчно (как определено $/ разделитель строк) из открытых дескрипторов файлов:

открыто В, ";пока (<IN>) {    Распечатать;}близко В;

PHP

$ counter = 5;$ факториал = 1;пока ($ counter > 0) {    $ факториал *= $ counter; // Сначала умножаем.    $ counter--; // затем уменьшаем.}Распечатать $ факториал;

PL / I

объявитьсчетчикисправленоисходный(5);объявитьфакториалисправленоисходный(1);делатьпока(счетчик>0)факториал=факториал*счетчик;счетчик=счетчик-1;конец;

Python

счетчик = 5                           # Установите значение 5 факториал = 1                         # Установите значение 1пока счетчик > 0:                    # Пока счетчик (5) больше 0     факториал *= счетчик              # Установить новое значение факториала для счетчика.    счетчик -= 1                      # Установить счетчик на счетчик - 1.Распечатать(факториал)                      # Вывести значение факториала.

Непрерывный цикл while:

пока Истинный:    Распечатать("Помогите! Я застрял в петле!")

Ракетка

В Racket, как и в других Схема реализации, по имени-пусть это популярный способ реализации циклов:

#lang ракетка(определять счетчик 5)(определять факториал 1)(позволять петля ()    (когда (> счетчик 0)        (набор! факториал (* факториал счетчик))        (набор! счетчик (sub1 счетчик))        (петля)))(displayln факториал)

Используя макросистему, реализуя пока цикл - это тривиальное упражнение (обычно используется для введения макросов):

#lang ракетка(определить-синтаксис-правило (пока тестовое задание тело ...) ; реализует цикл while    (позволять петля () (когда тестовое задание тело ... (петля))))(определять счетчик 5)(определять факториал 1)(пока (> счетчик 0)    (набор! факториал (* факториал счетчик))    (набор! счетчик (sub1 счетчик)))(displayln факториал)

Но обратите внимание, что императивный стиль программирования часто не приветствуется в Racket (как и в Scheme).

Рубин

# Вычислить факториал 5я = 1факториал = 1пока я <= 5  факториал *= я  я += 1конецставит факториал

Ржавчина

fn основной(){позволятьмутсчетчик=5;позволятьмутфакториал=1;покасчетчик>1{факториал*=счетчик;счетчик-=1;}println!("{}",факториал);}

Болтовня

В отличие от других языков, в Smalltalk пока петля не языковая конструкция но определен в классе БлокЗакрытие как метод с одним параметром, тело как закрытие, используя self в качестве условия.

Smalltalk также имеет соответствующий метод whileFalse :.

| считать факториал |считать := 5.факториал := 1.[считать > 0] whileTrue:     [факториал := факториал * считать.    считать := считать - 1].Стенограмма Показать: факториал

Быстрый

вар счетчик = 5                 // Устанавливаем начальное значение счетчика на 5 вар факториал = 1               // Устанавливаем начальное значение факториала равным 1пока счетчик > 0 {             // Пока counter (5) больше 0     факториал *= счетчик        // Устанавливаем новое значение факториала в счетчик факториала x.    счетчик -= 1                // Устанавливаем новое значение счетчика на counter - 1.}Распечатать(факториал)                // Выводим значение факториала.

Tcl

набор счетчик 5набор факториал 1пока {$ counter > 0} {    набор факториал [выражение $ факториал * $ counter]     счетчик incr -1 }ставит $ факториал

VEX

int счетчик = 5;int факториал = 1;пока (счетчик > 1)    факториал *= счетчик--;printf("% d", факториал);

PowerShell

$ counter = 5$ факториал = 1пока ($ counter) {    $ факториал *= $ counter--}$ факториал

Пока язык программирования

Язык программирования While[3] - это простой язык программирования, состоящий из присваиваний, последовательной композиции, условных выражений и операторов while, используемый в теоретическом анализе семантики императивного языка программирования.[4][5]

C := 5;F := 1;пока (C > 1) делать    F := F * C;    C := C - 1;

Смотрите также

Рекомендации

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