Циклы с параметрами реферат

Обновлено: 05.07.2024

Название работы: Циклы в Pascal

Категория: Лабораторная работа

Предметная область: Информатика, кибернетика и программирование

Описание: Теоретическое введение Операторы цикла Операторы цикла используются для вычислений повторяющихся многократно. Блок ради выполнения которого и организуется цикл называется телом цикла. Проверка условия продолжения цикла и модификация параметра цикла. Один проход цикла называется итерацией.

Дата добавления: 2013-09-24

Размер файла: 25.7 KB

Работу скачали: 9 чел.

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ

по лабораторной работе №2

Студент: Скобелева М.С.
Группа: ПИЭ-11
Преподаватель: Нестеров А.П.
Вариант: 7

1 Теоретическое введение

Операторы цикла используются для вычислений, повторяющихся многократно. В Паскале имеется три вида циклов: цикл с предусловием while , цикл с постусловием repeat и цикл с параметром for . Каждый из них состоит из определенной последовательности операторов. Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки. Проверка условия продолжения цикла и модификация параметра цикла. Один проход цикла называется итерацией .

Начальные установки служат для того, чтобы до входа в цикл задать значения переменных, которые в нем используются.

Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла, либо после тела цикла. Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

Параметром цикла называется переменная, которая используется при проверке условия цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла. Количество повторений такого цикла можно определить заранее. Параметр есть не у всякого цикла. В так называемом итеративном цикле условие продолжения содержит переменные, значения которых изменяются в цикле по рекуррентным формулам.

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break , continue и goto . Передавать управление извне внутрь цикла не рекомендуется, потому что при этом могут не выполниться начальные установки.

Формат оператора прост: while выражение do оператор

Выражение должно быть логического типа. Например, это может быть операция отношения или просто логическая переменная. Если результат вычисления выражения равен true , выполняется расположенный после служебного слова do простой или составной оператор. Эти действия повторяются до того момента, пока результатом выражения не станет значение false . После окончания цикла управление передается на следующий за ним оператор.

Тело цикла с постусловием заключено между служебными словами repeat и until , поэтому заключать его в блок не требуется.

В отличии от цикла while , этот цикл будет выполняться, пока логическое выражение после слова until ложно. Как только результат выражения станет истинным, произойдет выход из цикла. Вычисление выражения выполняется в конце каждой итерации цикла.

Этот вид цикла применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз. Если же такой необходимости нет, предпочтительнее пользоваться циклом с предусловием.

Этот оператор применяется, если требуется выполнить тело цикла заранее заданное количество раз. Параметр порядкового типа на каждом проходе цикла автоматически либо увеличивается, либо уменьшается на единицу.

Выражения должны быть того же типа, что и переменная цикла, оператор – простым или составным. Циклы с параметрами обычно применяется при работе с массивами.

В Паскале есть несколько стандартных процедур, изменяющих последовательности выполнения операторов:

Break – завершает выполнение цикла, внутри которого записана;

Continue – выполняет переход к следующей итерации цикла;

Exit – выполняет выход из программы или подпрограммы;

Halt – немедленно завершает выполнение программы.

Этот оператор имеет простой синтаксис: в точке программы, из которой требуется организовать переход, после слова goto через пробел записывается имя метки, например, goto 1 или goto error . При программировании на Паскале необходимость в применении оператора перехода возникает в очень ограниченном количестве ситуаций, в большинстве же случаев используются операторы циклов вместе с процедурами передачи управления.

Использование оператора безусловного перехода оправданно, как правило, в двух случаях:

-принудительный выход вниз по тексту программы из нескольких вложенных циклов или операторов выбора;

- переход из нескольких мест программы в одно.

Во всех остальных случаях следует привести алгоритм к структурному виду, то есть преобразовать его так, чтобы он мог быть записан с помощью базовых конструкций.

2. Техническое задание

Для пункта таблицы составить алгоритм вычисления табличных значений функций y = f ( x , z ), содержащий двукратный цикл: во внешнем цикле менять х от 1 до 2.2 с шагом 0.3; во внутреннем цикле изменять от 0.6 до 2 с шагом 0.2.

Ответ при x =1, z =0.6 f ( x , z ) = 0, 0426.

3. Анализ технического задания

Для того, чтобы написать данную программу, необходимо написать программу с двумя циклами – внешним и внутренним. Для выполнения удобнее сначала воспользоваться циклом repeat (цикл с постусловием), а потом циклом while (цикл с предусловием).

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

Y= 1+ 1/2+ 1/3 + …+ 1/ n

Очевидно, что с использованием только рассмотренных выше типов операторов можно составить программу лишь для фиксированного значения n. Например, при n=5 требуемые вычисления можно задать с помощью оператора присваивания вида:

Если же значение n не фиксируется, а является исходным данным, вводимым в процессе выполнения программы (и даже константой, описанной в программе), то аналогичный оператор присваивания записать невозможно. Ибо запись вида Y:= 1+1/2+1/3+…+1/ n в языках программирования недопустима.

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

Простой арифметический оператор цикла Паскаля (цикл с параметром)

Вернемся к рассмотренной выше задаче вычисления суммы первых n членов гармонического ряда, правила которой невозможно задать в виде арифметического выражения, если значение n заранее не фиксировано.

На самом деле вычисление этой суммы можно осуществить по очень простому и компактному алгоритму: предварительно положим y=0 (с помощью оператора присваивания y:=0), а затем выполним оператор присваивания y:= y+1/ i для последовательных значений i= 1,2,…, n. При каждом очередном выполнении этого оператора к текущему значению y будет прибавляться очередное слагаемое. Как видно, в этом случае процесс вычислений будет носить циклический характер: оператор y:= y+1/i должен выполняться многократно, т.е. циклически, при различных значениях i.

Этот пример циклического вычислительного процесса является весьма типичным; его характерные особенности состоят в том, что

· число повторений цикла известно к началу его выполнения (в данном случае оно равно значению n, которое предполагается заданным к этому времени);

· управление циклом осуществляется с помощью переменной порядкового типа, которая в этом циклическом процессе принимает последовательные значения от заданного начального до заданного конечного значений (в нашем случае – это целочисленная переменная i, принимающая последовательные значения от 1 до n).

Для компактного задания подобного рода вычислительных процессов и служит оператор цикла с параметром . Чаще всего используется следующий вид этого оператора В Паскале:

For V:= E1 to E2 do S,

где for (для), to (увеличиваясь к) и do (выполнять, делать) – служебные слова, V – переменная порядкового типа, называемая параметром цикла, Е1 и Е2 – выражения того же типа, что и параметр цикла, S – оператор, который и выполняется многократно в цикле, называемый телом цикла.

Заметим, что в Паскале после do должен стоять один оператор, если необходимо выполнить несколько действий, то они должны быть объединены в один составной оператор путем заключения в операторные скобки.

Этот оператор цикла Паскаля предусматривает присваивание параметру цикла V последовательных значений от начального значения, равного значению выражения Е1, до конечного значения, равного значению выражения Е2, т.е. при каждом повторении выполняется оператор присваивания V:= succ(V) , и выполнение оператора S при каждом значении параметра цикла V. При этом значения выражений Е1 и Е2 вычисляются один раз, при входе в оператор цикла, а значение параметра цикла V не должно изменяться в результате выполнения оператора S. Если заданное конечное значение меньше начального значения (что допустимо), то оператор S не выполняется ни разу.

В Паскале считается, что при нормальном завершении выполнения оператора цикла значение параметра цикла не определено.

С использованием оператора цикла с параметром алгоритм вычисления суммы первых n членов гармонического ряда может быть задан следующим образом:

Пример кода программы для суммирования первых n членов гармонического ряда

For i:= 1 to n do y:= y+1/i;

В некоторых случаях бывает удобно, чтобы параметр цикла Паскаля принимал последовательные, но не возрастающие, а убывающие значения. Для таких случаев в Паскале предусмотрен оператор цикла с параметром следующего вида:

For V:= E1 downto E2 do S,

где downto (уменьшаясь к) – служебное слово, а все остальные слова и выражения имеют прежний смысл. Изменение параметра цикла от большего значения к меньшему происходит при выполнении присваивания V:=pred(V). Заметим, что начальное значение может быть меньше конечного значения. В этом случае оператор S не выполнится ни разу. Значение параметра цикла по завершении выполнения такого цикла так же считается неопределенным.

Следует запомнить и то, что для обоих вариантов записи цикла с параметром справедливо: если начальное и конечное значения равны, то тело цикла (оператор S) выполнится один раз.

Заметим так же, что параметр цикла может и не использоваться в теле цикла, так что основное его назначение – это управление числом повторений цикла. Например, значение y= x n, где n>=0 – целое, можно вычислить по следующему алгоритму: предварительно положить y=1, а затем n раз домножить это значение на x:

Пример кода программы цикла Паскаля

For i:= 1 to n do y:= y*x;

Как видно, здесь параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y* x) выполнилось нужное число раз.

Арифметический оператор цикла Паскаля с произвольным шагом

Естественным усложнением простого арифметического цикла Паскаля, является цикл, в котором параметр цикла изменяется не на 1, а на произвольную величину – шаг приращения . При этом в процессе выполнения цикла шаг изменяется по заданному закону. Стандартные операторы для реализации такого цикла есть в Форте, в других языках их приходится организовывать из простейшего арифметического цикла.

Итерационные операторы цикла Паскаля

Итерационные циклы отличаются от циклов с параметром тем, что в них заранее неизвестно число повторений.

Пусть мы отправляемся за грибами и возвращаемся домой, когда корзина наполнится. Все грибники делятся на 2 категории:

· Смотрят, есть ли место в корзине, а уже потом срывают грибы, если их можно поместить в корзину. (Правда, в жизни таких грибников встречать не приходилось)

· Сначала срывают грибы, а уже потом думают, как их положить в корзину.

Отсюда получаются два варианта реализации итерационных циклов:

с предусловием и с постусловием.

В цикле с предусловием сначала проверяется условие, а потом делается шаг. Грибник придет с полной или почти полной корзиной. В цикле с постусловием – сначала шаг, а потом проверка. Как всякий нормальный грибник, этот принесет полную или слегка переполненную корзину.

Какой алгоритм выбрать? Это зависит от конкретной задачи.

Если, сделав шаг без проверки, можно свалиться в яму, то лучше проверка вначале (как слепой с палочкой). Ну, а если шаг без проверки вас не пугает, то можно отложить ее до завершения шага.

Нужно также проанализировать событие, которого мы ожидаем. Если оно может случиться до первого шага, то нужен цикл с предусловием. А если событие не может случиться до первого шага, то нужен цикл с постусловием.

Оператор цикла Паскаля с постусловием

Рассмотрим теперь математическую задачу. Пусть нам необходимо вычислить сумму первых членов гармонического ряда, удовлетворяющих условию 1/i>= e, где 0 n;

Оператор цикла Паскаля с предусловием

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

Пусть, например, дано вещественное число М. Требуется найти наименьшее целое неотрицательное число k, при котором 3 k> M. Эту задачу можно решить по следующему алгоритму: предварительно положить y=1 и k=0; затем в цикле домножать значение y на 3 и увеличивать значение k на 1 до тех пор, пока текущее значение y впервые окажется больше значения М. На первый взгляд, здесь можно воспользоваться оператором цикла с постусловием:

Пример кода оператора цикла Паскаля с постусловием

Однако нетрудно убедиться в том, что при M 20;

Как видно из листинга, управляющей переменной x в обоих случаях присвоено начальное значение 1, оба цикла изменяют значение x и, соответственно, условие цикла, оператором x:=x+1;, но для цикла repeat условие "перевернуто" ("пока x не станет больше 20"), а тело не заключено в операторные скобки.

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

8.Оператор перехода. Метки. Применение оператора перехода для досрочного выхода из цикла.

9.Постановка задачи сортировки.

Простые алгоритмы сортировки.

Анализ алгоритма сортировки обменами.

Анализ алгоритма сортировки выбором.

10.Задачи и упражнения

1.Оператор цикла с параметром.

Циклы - основное средство в программировании, позволяющее коротко записывать алгоритм, осуществляющий большое количество действий.

Для реализации циклических алгоритмов в языке Паскаль используются операторы повторения:

оператор цикла с параметром;

оператор цикла с предусловием;

оператор цикла с постусловием.

В настоящем параграфе изучается оператор цикла с параметром. Такой оператор предусматривает повторное выполнение некоторого оператора с одновременным изменением значения, присваиваемого управляющей переменной (параметру этого цикла). Он имеет вид:

Синтаксическая диаграмма оператора цикла с параметром:

О ператор цикла

Имя - это имя переменной - параметра цикла;

A - начальное значение параметра цикла;

B - конечное значение параметра цикла;

Оператор - тело цикла.

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

Если начальное и конечное значения разделяет служебное слово to, то после выполнения оператора (тела цикла) параметр цикла v принимает значение Succ(v), если же разделителем начального и конечного значений служит слово downto, то параметр цикла v после выполнении тела цикла принимает значение Pred(v). В частности, если параметр v имеет тип Integer, то одновременно с выполнением тела цикла осуществляется либо присваивание v := v + 1 (to), либо v := v - 1 (downto). Дополнительно (принудительно) изменять значение параметра в теле цикла не рекомендуется, поскольку контроль за правильностью исполнения такого цикла очень затруднен. Если в цикле с to начальное значение больше, чем конечное, то цикл не выполняется вообще. Аналогично, если в цикле с downto начальное значение меньше, чем конечное, цикл также не выполняется.

Стандарт языка локализует действие параметра только в самом цикле, поэтому при нормальном выходе из цикла, т.е. когда параметр цикла уже принял все возможные значения между начальным и конечным значениями, значение параметра считается неопределенным (В реализации языка это правило часто не выполняется).

Program NFactorial; var Factorial, Argument: Integer; i : Integer;

Write(‘ введите аргумент факториала ‘);

For i := 2 to Argument do Factorial := i*Factorial;

i - параметра цикла;

2 - начальное значение параметра цикла;

Argument - конечное значение параметра цикла;

Factorial := i*Factorial - тело цикла.

Отметим, что на входе Argument > 7 значение Factorial выйдет за пределы типа Integer и результат будет неправильным.  

В следующем примере вычисляются суммы  x n /n 2 ,  x n /n 3

Var Summa1, Summa2, x : Real;

Index, n : Integer;

Write(‘ введите x и n ‘); Readln(x, n);

Summa1 := 1; Summa2 := 1;

For Index := 1 to n do begin

u1 := v/Sqr(Index); u2 := u1/Index;

Summa1 := Summa1 + u1; Summa2 := Summa2 + u2;

Writeln( ‘ S1 = ‘, Summa1,’ ‘,’ S2 = ‘, Summa2)

Обратите внимание на то, что все операторы, которые необходимо выполнить в цикле, объединены в составной оператор.

Часто шаг изменения переменной, которая управляет циклом, отличен от 1, -1. Следую­щий пример демонстрирует применение цикла с параметром в таких вычислениях.

Пример 3 . Табулирование функции вещественного переменного.

var MinBound, MaxBound, Step: Real;

x, y : Real; Coef : Real;

Write(‘Введите пределы табулирования ‘); Readln(MinBound, MaxBound);

Write(‘Введите шаг табулирования ‘); Readln(Step);

n := Round((MinBound - MaxBound)/Step);

x := MinBound; Coef := 1/Sqrt(Pi);

for i := 0 to n do begin

y := Coef * exp(-Sqr(x)/2);

writeln(‘ x = ‘,x,’ y = ‘,y);

Программа табулирует функцию y=1/ e -x2/2 в интервале значений [MinBound, MaxBound] с шагом Step. Обратите внимание на то, что перед входом в цикл вычисляется N - верхняя граница параметра цикла, а в теле цикла вычисляется следующее значение х.

Var Letter : char;

For Letter := ‘z’ downto ‘a’ do Write(Letter, ‘,’)

Программа этого примера распечатывает буквы латинского алфавита в обратном порядке.

2.Циклические программы. Сложность циклической программы. Оптимизация циклических программ.

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

Сложность T ц простейшей циклической программы, содержащей арифметический цикл, определяется формулой T ц = NT b где N - количество повторений цикла, T b - сложность тела цикла. Если арифметический цикл завершается нормально, то N = |Ord(MaxVal) - Ord(MinVal)|, где MaxVal, MinVal - нижняя и верхняя границы параметра. Таким образом, оптимизация программы по времени заключается в уменьшении сложности тела цикла и (если это возможно) уменьшении количества повторений цикла.

Для оптимизации тела цикла используют следующие приемы:

Предварительное (вне цикла) вычисление подвыражений , значение которых не меняется в цикле. Например, в программе Tabulation до входа в цикл вычислено значение Coef=1/Sqrt(Pi);

Использование соотношений , связывающих переменные, изменяющиеся в цикле, для вычислений одной из них через другие. В программе SeriesSumma переменные u1 и u2 - члены ряда - определены как функции от x, i:

u1(x, i) = x i / i 2 ; u2(x, i) = x i / i 3 ;

Поэтому имеет место равенство u2*i = u1, которое используется для вычисления u2.

Ограниченный тип в языке Паскаль можно определить, накладывая ограничения на уже определенный скалярный тип - его называют базовым скалярным типом. Ограничения определяются диапазоном - минимальным и максимальным значениями констант базового скалярного типа. Ограничение стандартного типа Real не допускается.

Синтаксическая диаграмма ограничения имеет вид:

а) Type Day = 1..30; - ограничение на тип integer;

б) Digit = ‘0’..’9’; - ограничение на тип char;

в) Type Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Workday = Monday .. Friday; - ограничение на скалярный тип Weekday.

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

Type Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Workday = Monday .. Friday;

For i := Monday to Friday do

Monday: Writeln(‘физика‘, ’информатика‘, ’история’);

Tuesday, Friday: Writeln(‘мат. анализ‘,’педагогика‘, ‘английский’);

Wednesday, Thursday: Writeln(‘физика ‘,’алгебра‘,’информатика’)

4.Сложные (составные) типы.

В языке Pascal реализован механизм определения сложных (составных) типов данных. Новый тип данных определяется как структурированная совокупность данных-компонент стандартных или ранее определенных типов. Поскольку типы компонент могут также составными, можно строить сложные иерархии типов. Методы стуктурирования данных в языке позволяют строить массивы, записи, множества и файлы. Эти методы называют статическими, поскольку их описание осуществляется предварительно. Более сложные структуры можно создавать дина­мически - в процессе выполнения программы - с помощью ссылок. При изучении сложных типов основное внимание уделяется способам конструирования данного и способам доступа к компонентам данного.

5.Регулярный тип. Массивы.

Значениями регулярного типа являются массивы. Массив - это наиболее распространенная структура данных. Во многих языках программирования (Fortran, Algol-60, Basic) это един­ственный явно определенный сложный тип.

Массив - это последовательность однотипных данных, обьединенная общим именем, эле­мен­ты (компоненты) которой отличаются (идентифицируются) индексами. Индекс элемента указывает место (номер) элемента в массиве. Количество элементов массива фиксировано и определено в его описании. Доступ к элементу массива осуществляется вычислением значения его индекса. Поэтому массивы - это структуры данных с прямым (случайным) доступом. Все компо­ненты массива являются одинаково доступными. При определении регулярного типа задается и тип компонент, и тип индексов. Само определение имеет вид:

Похожие страницы:

Операторы управления языка Паскаль

. ‘,b,’в массиве отсутствует’) else Writeln(‘элемент ‘,b,’стоит на’,i,’-том месте’); End. Операторы повторения While . и Repeat. В предыдущем параграфе мы изучили оператор повторения с параметром (For). Это оператор используется .

Операторы цикла (3)

. значение параметра; внутри цикла изменять параметр цикла с помощью оператора присваивания; проверять условие повторения или . является параметром цикла. Для организации цикла с известным числом повторений в Pascal используется оператор for .

Операторы языка Delphi

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

Итерационные циклы в программировании

. массиве. Алгоритмы сортировки массивов (продолжение). Сортировка вставками. Задачи и упражнения. 1.Операторы повторения . While и Repeat. В предыдущем параграфе мы изучили оператор повторения с параметром (For). Это оператор .

Программирование выражений и операторов на языке Delphi

. семантикой языка программирования. Некоторые операторы (перехода, условные) позволяют . естественный последовательный порядок выполнения операторов. I. ЦЕЛЬ И СОДЕРЖАНИЕ . языке Delphi и программировании основных операторов. Содержание работы: 1. Запись .


Понятия о циклах .Как запускать программу,что нужно делать и как работать.

Содержимое разработки


Очень часто нужно, чтобы определённая часть программы выполнялась много раз. Разумеется, можно просто сделать так: скопировать-вставить и так нужное число раз. Однако, это абсурдно, особенно, если действие надо выполнять, например, 1000 раз. Поэтому существуют так называемые циклы, которую присутствуют в большинстве языков программирования. И о них я Вам и расскажу.

Циклы в JavaScript содержит определённый код, который прокручивается многократно. Существует несколько видов циклов: for, while и do-while.

Начнём с самого первого цикла (и самого популярного) - цикла for. Общий вид этого цикла таков:

for (переменная_итерации = начальное_значение; условие; действие_после_каждой_итерации)
//код программы

Давайте прокомментирую то, что здесь написано. Вначале идёт - переменная итерации. Это обычное имя переменной для итерации. Дальше идёт начальное_значение. Собственно, название говорит само за себя. Дальше идёт условие, при выполнении которого (то есть возвращается true) цикл запускается ещё один раз, и, наконец, действие, которое выполняется после каждой итерации. Как правило, это изменение переменной для итерации.

Давайте с Вами напишем простой скрипт, который будет выводить количество итераций цикла:

for (i = 0; i 100; i++)
document.write(i + " ");

Здесь мы задали переменную для итерации (называется i), которой присвоили значение 0. Дальше проверяется условие: i . Если оно выполняется, то выполняется одна итерация цикла. После выполнения каждой итерации происходит i++ (то есть увеличение переменной i на 1). Снова проверяется условие, и если оно истинно, то выполняется ещё одна итерация. И так до тех пор, пока условие i не станет ложным. Очевидно, что оно будет ложно лишь через 100 итераций. Таким образом, данный цикл будет выполняться 100 раз, что мы можем увидеть, если запустим этот скрипт. И ещё кое-что. Так как у нас здесь выполняется всего один оператор (document.write()), то наличие фигурных скобок необязательно. Если у Вас 2 и более операторов крутятся в цикле, то тогда необходимо их поставить.

Теперь поговорим о второй разновидности циклов в JavaScript - while. В принципе, цикл очень похож на for(хотя все циклы похожи). Но здесь общий вид другой:

while (условие)
//код программы
>

Как видите, здесь нет ни переменной для итерации, ни каких-либо действий после итерации. Отсюда следует вывод: чтобы выйти из цикла необходимо в самом цикле сделать так, чтобы "условие" стало ложным. Если это не сделать, то произойдёт зацикливание, а, следовательно, Ваш скрипт повиснет.

Давайте реализуем такую же задачу, как и раньше, но используя цикл while.

var i = 0;
while (i 100)
i++;
document.write(i + " ");
>

Перед началом цикла мы создали переменную i, которой присвоили начальное значение. Затем перед запуском цикла проверяется условие, и если оно истинно, то запускается итерация цикла, в которой мы увеличиваем переменную для итерации (иначе произойдёт зацикливание). И выводим эту переменную.

И, наконец, последний вид циклов в JavaScript - цикл do-while. Синтаксис такой:

do
//код программы
> while (условие)

Очень похож на цикл while, однако, здесь есть всего одно, но очень принципиальное отличие. Если цикл while сначала проверяет условие, а потом уже выполняет или нет итерацию. То цикл do-while сначала именно выполняет итерацию, и только потом проверяет условие. И если оно ложно, то выходит из цикла. Другими словами, независимо от условия данный цикл гарантированно выполнится хотя бы 1 раз. Думаю, что данный код будет излишним, но всё же.

var i = 0;
do
i++;
document.write(i + " ");
> while (i 100)

Пояснять код не буду, уверен, Вы из без меня с ним разберётесь. Поэтому я лучше перейду к двум интересным операторам: break и continue.

Начнём с break. Данный оператор позволяет досрочно выскочить из цикла. Давайте с Вами напишем такой код:

for (i = 0; i 100; i++)
if (i == 50) break;
document.write(i + " ");
>

Вы можете запустить этот скрипт и обнаружите, что вывелись только числа до 49, так как при i = 50 цикл прервался, благодаря оператору break.

Теперь рассказываю об операторе continue. Данный оператор позволяет перейти к следующей итерации цикла. Чтобы не расписывать здесь много, лучше сразу покажу пример:

for (i = 0; i 100; i++)
if (i == 50) continue;
document.write(i + " ");
>

Если Вы запустите этот скрипт, то увидите, что не хватает числа 50. Это произошло потому, что при i = 50, мы переходим к следующей итерации цикла, перед которой i увеличивается на 1 и становится равным 51-му.


-75%

Читайте также: