Сколько раз исполнится тело цикла
Перейти к содержимому

Сколько раз исполнится тело цикла

  • автор:

Операторы цикла. Задачи целочисленной арифметики

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

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

Различают циклы с известным числом повторений ( цикл с параметром ) и итерационные (с пред- и постусловием).

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

Если в цикле изменяется простая переменная, то она является параметром цикла; если в цикле изменяется переменная с индексом, то индекс этой переменной является параметром цикла.

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

Структура цикла, организованного с помощью этого оператора, имеет вид:

For I := A To B Do Begin End;
For I := A DownTo B Do Begin End;

Здесь I — параметр, изменяющийся в цикле; A , B — выражения порядкового типа, обозначающие начальное, конечное значение параметра цикла. Шаг изменения порядкового номера параметра цикла равен 1, если в заголовке цикла стоит To (т.е. реально следующее значение параметра цикла вычисляется с помощью функции succ); и -1 — при DownTo (вычисление производится с помощью функции pred).

Порядок выполнения цикла с шагом 1 следующий: вычисляются значения начального и конечного значений параметра цикла; параметр если I принимает начальное значение; если I меньше или равно конечному значению, исполняется тело цикла; значение параметра цикла увеличивается, т.е. I := succ(I); проверяется условие I (для отрицательного шага условие I>=B ) и при его выполнении цикл повторяется. Выход из цикла осуществляется, если I>B ( IB (или A

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

Задача 1. Дано натуральное n , действительное x . Вычислить

Разработаем алгоритм решения задачи:

1) ввести данные - количество слагаемых n и число x; 2) присвоить переменной, в которой будем хранить степени sin x, значение 1; S := 0; 3) присвоить параметру цикла значение 1; 4) если значение параметра цикла меньше n, перейти к следующему пункту, иначе к п. 9; 5) вычислить очередную степень sin x; 6) добавить вычисленное значение к сумме; 7) увеличить параметр цикла на 1; 8) перейти к п.4; 9) вывести на печать сумму S; 10) конец.
 Program Summa; Var S, X, Pr : Real; N, I : Integer; Begin Write('Введите число слагаемых и x: '); ReadLn(N, X); Pr := 1; S := 0; For I := 1 To N Do Begin Pr := Pr * Sin(X); S := S + Pr End; WriteLn('Сумма равна ', S : 7 : 4) End.

Достаточно часто цикл с параметром используется при разработке программ обработки массивов.

Примечание. Как видно из рассказа, приведённого выше, область применения цикла с параметром в языке Pascal значительно ограничена: ограничения связаны с шагом изменения параметра цикла, с типом параметра цикла, его начального и конечного значения. В некоторых языках, например, в Basic, таких ограничений не существует.

По сравнению с циклом с параметром итерационные циклы являются универсальными. Для организации итерационных циклов используются операторы цикла с предусловием while и цикла с постусловием repeat..until.

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

Соответствующие структуры циклов:

while B Do Begin End; Repeat Until C;

Здесь B , C — логические выражения.

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

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

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

Задача 2. Найти наименьший номер члена последовательности, для которого выполняется условие | a n — a n -1 | < e , где a n =arctg a n -1 +1, a 1=0. Вывести на экран этот номер и все элементы ai ( i = 1, 2, . n ).

Поскольку по ходу решения задачи необходимо знать a n и a n -1 , будем запоминать их соответственно в переменных ANew и AOld.

Program Posled; Var Eps, AOld, ANew : Real; N : Integer; Begin Write('Введите число Epsilon '); ReadLn(Eps); AOld := 0; ANew := ArcTan(AOld) + 1; N := 2; WriteLn(AOld : 8 :5); WriteLn(ANew : 8 :5); While Abs(ANew - AOld) >= Eps Do Begin AOld := ANew; ANew := ArcTan(AOld) + 1; WriteLn(ANew : 8 :5); N := N + 1 End; WriteLn('Искомый номер ', N) End.

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

Задача 3. На интервале [2; n ] найти натуральное число с максимальной суммой делителей.

Предлагаемая задача может быть отнесена к классу «задачи целочисленной арифметики», где аргументы, результаты и промежуточные величины относятся к целому типу. Следует заметить, что в такого рода задачах довольно часто используются операции DIV и MOD; наиболее типичной подзадачей является определение количества цифр в записи числа.

Алгоритм решения задачи:

1) ввести число n; 2) переменной для хранения максимальной суммы делителей присвоить значение 1 (это сумма делителей числа 1); 3) запомнить число с максимальной суммой делителей; 4) параметру цикла I присвоить значение 2; 5) если I больше n, перейти к п. 13, иначе - к следующему пункту; 6) переменной для хранения очередной суммы делителей присвоить значение 0; 7) параметру цикла K присвоить значение 1; 8) если K больше I/2, перейти к п. 11, иначе - к следующему пункту; 9) если I делится на K без остатка, добавить K к текущей сумме делителей; 10) увеличить K на 1 и перейти к п. 8; 11) сравнить текущую сумму делителей с максимальной, если максимальная меньше, запомнить новое значение и число, соответствующее этой сумме; 12) увеличить I на 1 и перейти к п. 5; 13) вывести число с максимальной суммой делителей и эту сумму; 14) конец.
Program Sum_Del; Var N, I, Sum_Max, Sum, K, Ch : Integer; Begin Write('Введите число N: '); ReadLn(N); Sum_Max := 1; Ch := 1; For I := 2 To N Do Begin Sum := 0; For K := 1 To I Div 2 + 1 Do If I Mod K = 0 Then Sum := Sum + K; Sum := Sum + I; If Sum > Sum_Max Then Begin Sum_Max := Sum; Ch := I End; End; WriteLn('Максимальную сумму делителей ', Sum_Max, ' имеет число ',Ch) End.

Задача 4. Дано натуральное число n . Получить все простые делители этого числа.

 Program Pr_Del; Var N, I, Vsp : Integer; Log_Per, Priznak : Boolean; Begin Write('Введите натуральное число: '); ReadLn(N); Priznak := True;  For I := 2 To Round(Sqrt(N)) Do If N Mod I = 0 Then Begin Priznak := False; Log_Per := False; Vsp := 2; Repeat If (I Mod Vsp = 0) And (I <> Vsp) Then Log_Per := True; Vsp := Vsp + 1 Until (Vsp > I Div 2 + 1) Or Log_Per; If Not(Log_Per) Then WriteLn(I) End; If Priznak Then WriteLn(N) End.

Предлагаем читателю самостоятельно разобраться с представленным решением.

Контрольные вопросы и задания

  1. Назовите отличия итерационных циклов и цикла с параметром.
  2. Какова структура оператора цикла с параметром? Каков алгоритм выполнения цикла с параметром?
  3. Какого типа должны быть параметр цикла, его начальное и конечное значения в цикле с параметром в языке Pascal?
  4. Могут ли параметр цикла, его начальное и конечное значения в цикле с параметром в языке Pascal быть разных типов? Обоснуйте ответ.
  5. Может ли один цикл быть вложен внутрь другого? Если да, то какова глубина этой вложенности?
  6. Какова структура циклов с пред- и постусловием? как выполняются эти циклы?
  7. Каково минимальное и максимальное количество исполнений циклов с пред- и постусловием? С чем это связано?
  8. Сколько раз исполнится тело цикла во фрагменте программы?

For i := 1 to -1 Do k:=k*i;
For i := -1 to 1 Do k:=k*i;
For i := 1 downto -1 Do k:=k*i;
M := 123; While M <> 0 Do M := M Mod 10;

Проанализируйте работу программы. program math;
var x, y: integer;
begin
x:=1;
y:=1;
while x begin
y:=y*2;
x:=x+1
end;
end.
Ответьте на вопросы:
1) Сколько раз исполнится тело цикла?
2) Какое значение примет х после завершения программы?
3) Какое значение примет у после завершения программы?
4) Сколько раз исполнится тело цикла, если изменить условие на x 5) Сколько раз исполн. тело цикла, если изменить условие на x>=5 ?
6) Сколько раз исполн. тело цикла, если изменить услов. на x>0 ?
7) Что произойдёт, если из тела цикла убрать команду x:=x+1 ?
8) Сколько раз исполн. тело цикла, если измен. команду x:=x+1 на x:=x+2 ?
9) Сколько раз исполнится тело цикла, если измен. команду x:=x+1 на x:=x-1 ?

Удачник66

X увеличивается в цикле с 1 до 4, каждый раз на 1.
y каждый раз увеличивается в 2 раза, начиная с 1 и до 2^4 = 16.
1) Тело цикла исполнится 4 раза.
2) x примет значение 5.
3) y примет значение 16.
4) Если написать x На выходе будет x = 6, y = 32.
5) Если написать x >= 5, то тело цикла не будет исполнено ни разу, потому что условие сразу не выполняется.
6) Если написать x > 0, то программа зациклится. Цикл будет исполняться бесконечно, потому что x всегда > 0.
7) Если убрать команду x:=x+1, то программа тоже зациклится. Выхода не будет, потому что x всегда остается равным 1 < 5.
8) Если написать команду x:=x+2, то тело цикла исполнится 2 раза:
при x := 1 и при x := 3. На третий раз станет x = 5 и будет выход из цикла.
9) Если написать команду x:=x-1, то программа зациклится. Выхода не будет, потому что x будет уменьшаться и всегда останется < 5.

Новые вопросы в Информатика

Дайте будь ласка правильну відповідь​

LazarusНаписати програми :1. Дано сторони прямокутника А і B знайти його площу S і периметр P.2.Дано довжину ребра куба А. Знайти його об’єм.результат … и робіт здати у вигляді скріншотів (скріншот коду , скріншот запущеної програми або скріншот вікна програми )

Ввод и вывод чисел Изучи предложенный код программы и определи возможную ошибку при нахождении периметра прямоугольника. a=int(input(‘Введите 1-е числ … о:’)) b=float(input(‘Введите 2-е число:’)) print(2*(a+b)) стороны прямоугольника не могут принимать отрицательные значения нельзя в операторе вывода записывать арифметические выражения первое число не может быть целым второе число не может быть верным

Сортировка. Урок 1 Дан массив пum = [‘two ‘, ‘seven’, ‘one ‘, ‘four ‘, ‘zero ‘, ‘nine’]. Выбери результат сортировки массива по убыванию. num = [‘zero … ‘, ‘two ‘, ‘seven’, ‘one ‘, ‘nine’, ‘four ‘] num = [‘nine’, ‘zero ‘, ‘four ‘, ‘one ‘, ‘seven’, ‘two ‘] num = [‘four ‘, ‘nine’, ‘one ‘, ‘seven’, ‘two’, ‘zero’] num = [‘nine’, ‘seven’, ‘four ‘, ‘two ‘, ‘one ‘, ‘zero ‘]​

Цикл

Цикл в программировании — это управляющая конструкция, которая заставляет какой-то блок кода выполняться несколько раз. Циклы есть в большинстве языков программирования. Чаще всего их объявляют командами for, while или repeat.

«IT-специалист с нуля» — наш лучший курс для старта в IT

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

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

условие и тело цикла, схема

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Кто и зачем пользуется циклами

Циклы встречаются в работе большинства программистов практически на всех языках программирования. Они есть в Java, JavaScript, PHP, Python, C++ — везде. Циклов в привычном виде нет разве что в очень низкоуровневых языках, близких к «железу», таких как ассемблер.

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

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

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

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

Какими бывают циклы

Обычно в языках программирования несколько видов циклов. У каждого из них свое назначение. Разберемся с основными.

For. Это цикл, который выполняется заданное количество раз. В большинстве C-подобных языков (то есть таких, которые внешне похожи на C и C++) он имеет похожую структуру:

Объявление переменной — это создание итератора, переменной, которая будет изменяться на каждом шаге цикла. Когда итератор достигнет какого-то значения, цикл закончится.

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

Действие — то, что нужно выполнить в конце каждой итерации. Сюда записывают изменения итератора: например, добавить к нему единицу или отнять какое-то число.

принцип работы цикла

Стандартный случай — задается итератор, равный 0. Условие — итератор меньше какого-нибудь N. Действие — прибавить к итератору единицу. Цикл будет выполняться N+1 раз, потому что отсчет идет с нуля. Есть и вариации, их рассмотрим ниже.

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

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

For in / for of / for-each. Частный случай цикла for — когда нужно пройти по структуре данных. Для этого в некоторых языках существует особая конструкция. Это цикл for, который вместо итератора работает с самой структурой данных, например массивом или объектом.

В JavaScript такой цикл называется for of (есть еще for in, но он работает немного иначе), в Java — for-each, в Python — for in. Синтаксис примерно такой:

for in*  < > * in приведено для примера. В JS там не in, а of, а в Java и C++ — вообще двоеточие.

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

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

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

While с предусловием. While — совсем другой случай. Это цикл, который используют, если нужное количество действий заранее неизвестно. Он может выполниться несколько раз, один раз, бесконечное количество раз — или вообще не выполниться ни разу. Слово while переводится как «пока» и отражает суть: пока верно какое-то условие, цикл выполняется.

Синтаксис у него примерно такой, хотя в зависимости от языка детали могут различаться:

while () < >

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

While с постусловием. Это вариация цикла while. Ее единственное отличие — условие пишется не до, а после тела цикла:

do < > while ();

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

Repeat / until. В некоторых языках есть еще один вид цикла — repeat или until. Он похож на while, но, в отличие от него, описывает не условие для продолжения, а условие для выхода из цикла. Цикл закончится, когда условие окажется верным.

В Pascal это цикл с постусловием, который описывается так:

repeat < > until (); А, например, в Perl это цикл с предусловием: until () < >

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

Как можно модифицировать циклы

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

Цикл по структуре данных. Это цикл for in / for of, о котором мы уже говорили. Обычным циклом тоже можно пройти по массиву: запустить счетчик от 0 до длины структуры данных. Но тут есть детали, которые стоит прояснить подробнее.

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

Если структура не итерируемая, то пройти по ней циклом for in / for of обычно нельзя. В большинстве языков программирования это работает именно так.

Структуру можно сделать итерируемой: написать свой итератор или присоединить стандартный. Такая возможность есть в большинстве языков программирования и помогает тонко управлять перебором структур данных.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

Цикл в обратную сторону. Тут все проще: цикл for можно запустить не только от 0 до какого-то числа, но и наоборот. Тогда итератор на каждом шаге будет не увеличиваться, а уменьшаться на единицу. Соответственно, цикл пройдет столько же раз, но в обратном направлении. Иногда эта возможность бывает полезной.

Кстати, повернуть цикл for в другую сторону — не единственная его модификация. Можно, например, сделать цикл с шагом 2 и больше, чтобы итератор изменялся не на 1, а на 2 или другое число. Можно вообще не складывать с ним или вычитать из него числа, а умножать или делить. Вариаций много. Но используют их не так часто, чтобы не усложнять код: хорошая практика — делать программу понятной и легко читаемой.

Вложенный цикл. Его иногда называют двойным циклом. Это цикл, в который вложен другой цикл. Чаще всего это цикл for.

Тело внешнего цикла — внутренний цикл. А уже внутри могут быть разные подпрограммы.

схема циклов

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

На каждом шаге внешнего цикла выполняется весь внутренний, целиком. Если внешний цикл происходит N раз, а внутренний — M раз, то общее количество итераций во вложенном цикле — N * M. Это много. Поэтому вложенные циклы ресурсоемкие, и ими пользуются, только если без них не обойтись. К тому же конструкция из двух циклов друг в друге серьезно усложняет читаемость кода.

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

Бесконечным чаще всего становится цикл while, но в теории таким можно сделать и цикл for — например, если не менять итератор или установить невозможное условие для выхода.

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

Как прервать цикл

Существует несколько способов остановить выполнение цикла. Чаще всего используют тот, который предусмотрен самой конструкцией, — невыполнение условия. Но есть и другие возможности. Пользоваться ими не всегда корректно.

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

Условия могут быть разными, в том числе сложными, состоящими из нескольких частей. Ниже мы расскажем про break и continue — в большинстве случаев грамотно составленные условия помогают обойтись без использования этих операторов.

Пропуск итерации. Если по какой-то причине в цикле нужно закончить итерацию раньше времени и перейти на следующую, для этого есть специальная команда. Обычно она называется continue. По сути, это оператор, который говорит программе: «Закончи это повторение, продолжи со следующего шага».

Continue нужно просто написать в том месте, где вы хотите выйти из текущей итерации, — например, если в программе выполнилось какое-то условие.

На практике continue используется не слишком часто, во многих языках его считают плохой практикой. Его можно заменить условным оператором.

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

Когда программа доходит до этой команды, она выходит из цикла или условия и начинает выполнять код, который идет дальше. Никаких итераций больше не происходит. Например, мы искали в цикле какое-то число, нашли его — дальше проходить по циклу не нужно. Можно из него выйти.

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

Команду можно использовать не только в циклах, но и, например, в условных структурах if/else.

Пауза. Некоторые языки дают возможность временно приостановить цикл, как бы установить задержку для его выполнения. Например, подождать несколько секунд — для этого есть специальные функции. Как реализовать такую возможность, зависит от языка и ситуации.

Что нужно знать при использовании циклов

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

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

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

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

Хотите узнать больше про языки программирования? Запишитесь на курсы и станьте разработчиком на одном из востребованных современных языков.

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Циклы. While, do while, for, чем отличаются?

space2pacman

while — выполняется пока заданное выражение правда (проверка перед одним циклом выполнения)
while do — выполняется пока заданное выражение правда (проверка после одного цикла выполнения)
for — создано для выполнения кода n-ное количество раз
Вообще недавно видел забавную картинку, которая хорошо это дело демонстрирует

Спойлер

5c3367af26f7c126057439.jpeg

space2pacman

Ярослав Иванов @space2pacman

Rikonardo, ну вы то че))while и do while одинаковые. Разница в том что последний запускает тело цикла без проверки на первой итерации.

REKTOR_RG

Ярослав Иванов, ну по крайней мере нам на курсах c# рассказали, что do while проводит проверку после пробега кода внутри (итерации), а while сначала проверяет, а потом выполняет

space2pacman

Ярослав Иванов @space2pacman
Rikonardo, все верно) только это на первых итерациях. Потом они идентичны)

myjcom

while, do while, for

Прошу объяснить понятными определениями..

Решения вопроса 1
Программист на «си с крестами» и не только

While — сначала проверь, потом сделай, и так по кругу.
Do — сначала сделай, потом проверь, и так по кругу.

Отличаются они только случаем, когда условие не выполняется: while не пройдёт, а do пройдёт один раз.

// Пример 1. // верно while (впереди свободно) шаг; // неверно — можно врезаться в препятствие, если нельзя сделать ни шагу do шаг while (впереди свободно); // Пример 2. // Неверно — пока у вас в руках нет рубашки, условие цикла некорректно while (рубашка грязная) возьми рубашку; // верно do возьми рубашку; while (рубашка грязная);

Циклы for, foreach и прочие — это разновидность цикла while (не do!!), сделанная для специального сценария: пройти некий набор объектов.

Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать
Ответы на вопрос 4

webinar

Учим yii: https://youtu.be/-WRMlGHLgRg

Слишком очевидный ответ, если посмотреть на примеры: www.php.su/learnphp/cs/?cycles

Допустим у Вас есть коробочка в которой хранятся бутылочки с «пивасиком» и бутылочки с «молоком»
Если Ваш батя попросил протереть все бутылки из коробочки — это foreach
Если каждую бутылку, пока в коробке не закончится пивасик — это while
Если каждую бутылку, пока протертых бутылок с пивасиком станет 4 — это тоже while
Если каждую бутылку, пока в коробке не закончится пивасик, но раз уж взял бутылку последнюю с молоком, то будь любезен протри — это do-while
Если с 3-й по 12-ю — это for
Если только с молоком — это мамка, а не батя

Ответ написан более трёх лет назад
Нравится 10 3 комментария

space2pacman

Ярослав Иванов @space2pacman
Аналогия с пивасиком как раз ему зайдёт))) только надо ещё разбавить нецензурными словами.
Вы, учитель года :))

webinar

iMaximus, видимо нет, автор просил для детей 3-х лет, я старался. А ответами он отметил варианты 18+, со всякими взрослыми словечками 🙂

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

Для примера:
for — выведите N чисел на экран (N определяет число итераций).
while — алгоритм Евклида для вычисления НОД (если одно из чисел 0, то итераций не будет)
do-while — реализация игры «Угадай число». (всегда требуется хотя бы одна попытка, то точное их число неизвестно).

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

lxsmkv

Test automation engineer

Нам в школе так обьяснили:
while — в зависимости от условия тело цикла может быть не выполнено ни разу.
do while — тело цикла будет выполнено минимум один раз.

ну а for — будет выполняется для выбраных элементов последовательности (какие это будут элементы — указывается в условии). Тут можно задать периодичность, например, для каждого второго элемента.

Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать

Как — то, почитал я ответы коллег, и остался разочарован. Понятно, что вопрос не простой, а очень простой, но можно и по аккуратнее в изложении. В общем, мои 5 копеек.
Любой цикл — это кусок кода, который обычно называют телом цикла, и который мы желаем выполнить несколько раз. Количество повторений может быть заданно заранее, например: цикл от 0 до 10, зависеть от данных, например: для каждого элемента массива или зависеть от значения, которое мы в теле цикла вычисляем, например: пока f(x) > 0 выполнять. По крайней мере, во всех известных мне языках программирования, есть оператор досрочного выхода из цикла.
while. Цикл с предварительным условием. Выполняется пока условие истинно. Проверка происходит до исполнения тела цикла. Если условие изначально ложно, то тело не выполнится ни разу. Если условие ни когда не станет ложным, то мы получим бесконечный цикл. Распространенные ошибки новичков, при использовании этого цикла:
— условие не зависит от переменных, которые изменяются в теле цикла, и оно всегда получается истинным
— условие ни когда не станет ложным, в силу его свойств, например: X * X >= 0 всегда верно
Пример на php:

$i = 1; while ($i

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

$i = 0; do < echo $i; >while ($i > 0);

for. Чаще всего этот оператор описывает цикл с фиксированным количеством повторений. Вот так он может выглядеть, например, для php:

for ($i = 1; $i

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *