Оператор цикла for . Общая форма. Примеры решения задач
Поиск на других ресурсах:
1. Назначение оператора цикла for . Общая форма
Цикл for предназначен для организации циклического процесса. С помощью цикла for можно организовывать циклический процесс любого типа, в котором:
- количество итераций цикла заведомо известно;
- количество итераций цикла неизвестно и определяется на основе выполнения некоторого условия.
Общая форма оператора цикла for
for (инициализация; условие; выражение) < // некоторые инструкции, операторы // . >
- инициализация – выражение, инициализирующее переменную-счетчик. Эта переменная определяет количество итераций, которые должны выполниться в цикле;
- условие – логическое выражение, которое определяет необходимость выполнения следующей итерации цикла. Если условие = true , то выполняется следующая итерация цикла. Если значение условие = false , то происходит прекращение выполнения цикла и переход к следующему оператору, который следует за оператором for ;
- выражение – некоторое выражение, изменяющее значение переменной-счетчика. Необязательно выражение может изменять значение переменной-счетчика. Также переменная-счетчик может изменять свое значение в теле цикла.
Если оператор цикла for применяется для одного оператора, то в общей форме фигурные скобки можно опустить
#20. Оператор цикла while | Python для начинающих
for (инициализация; условие; выражение) оператор;
здесь оператор – один оператор или одна инструкция.
2. Разновидности цикла for . Примеры
В цикле for можно опускать любую из его частей (инициализация, условие, выражение). Следующие примеры демонстрируют универсальность цикла for , который может быть использовано по разному.
Пример 1. В примере опущена часть, которая инициализирует переменную-счетчик. Вычисляется сумма
s = 2 + 4 + 8 + … + 100
Фрагмент кода, решающий данную задачу следующий:
// вычислить сумму 2+4+8+. +100 int sum = 0; int i = 0; // нет части инициализации переменной-счетчика for (; i // sum = 2550
Пример 2. В примере опущена часть, которая проверяет условие выполнения следующей итерации. Пример вычисляет сумму элементов массива A .
// вычислить сумму элементов массива A double[] A = < 2.5, 1.2, 0.8, 3.3, 4.2 >; double sum = 0; int i; // нет части, которая проверяет условие выполнения цикла for (i = 0; ; i++) < if (i == A.Length) break; sum += A[i]; > // sum = 12.0
Пример 3. В примере опущена часть выражения, которая изменяет переменную-счетчик. Дано вещественное число a и натуральное число n . Вычислить:
Фрагмент кода, решающий данную задачу
// вычислить произведение a*(a+1)*. *(a+n-1) int mult; int i; int n, a; n = 5; a = 4; mult = 1; // отсутствует часть прироста переменной-счетчика i for (i = 0; i < n; ) < mult = mult * (a + i); i++; >// mult = 6720
Пример 4. В примере цикл for не содержит инициализации и условия. Задано натуральное число n . Определить максимальную цифру этого числа.
#21. Операторы циклов break, continue и else | Python для начинающих
Решение данной задачи с использованием цикла for (приложение типа Console Application )
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 < class Program < static void Main(string[] args) < // определить максимальную цифру числа n int n; int t, d; int max; // ввод n Console.Write(«n color: #008080;»>Convert.ToInt32(Console.ReadLine()); t = n; max = 0; // максимальная цифра for (; t > 0; ) // цикл не содержит инициализации и прироста счетчика < d = t % 10; if (max < d) max = d; t = t / 10; >Console.WriteLine(«Max = «, max); > > >
Результат выполнения вышеприведенной программы:
n = 283915 Max = 9
Пример 5. В примере цикл for не содержит условия и выражения. Выход из цикла for осуществляется с помощью инструкции break .
Задан массив B чисел типа float . Найти позицию pos первого элемента массива, значение которого лежит в диапазоне от -5 до +5.
Фрагмент кода, решающий данную задачу
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 < class Program < static void Main(string[] args) < // найти позицию первого вхождения float[] B = < 12.4f, -11.9f, 7.5f, 2.3f, 1.8f >; int pos; for (pos = 0; ; ) // цикл for не содержит условия и выражения < if (pos == B.Length) break; if ((B[pos] >= -5) (B[pos] break; pos++; > if (pos == B.Length) Console.WriteLine(«Искомого элемента нет в массиве.»); else Console.WriteLine(«pos = «, pos); > > >
Результат выполнения программы
pos = 3
Пример 6. В примере демонстрируется «пустой» цикл for . В общем случае пустой цикл for выглядит следующим образом:
for ( ; ; ) < // некоторые инструкции // . >
3. Примеры цикла for , в котором количество итераций заведомо известно
Пример 1. Найти сумму всех целых чисел от 100 до 200. Фрагмент программы, которая решает данную задачу с использованием цикла for следующий:
// вычислить сумму int sum; int i; sum = 0; for (i = 100; i // sum = 15150
Пример 2. Дано натуральное число n . Разработать программу, которая находит следующую сумму
Фрагмент кода, решающий данную задачу
// вычислить сумму double sum; int i; int n; n = 10; sum = 0; for (i = 1; i // sum = 2.92896825396825
Пример 3. Рекурентные соотношения. Последовательность чисел a0 , a1 , a2 , … получается по закону:
Текст программы, которая решает данную задачу, следующий:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 < class Program < static void Main(string[] args) < // получить a1, a2, . an double a0, ak; int k; int n; n = 10; a0 = 1; k = 0; Console.WriteLine(«a[] = «, k, a0); for (k = 1; k Console.WriteLine(«a[] = «, k, ak); a0 = ak; > > > >
В результате выполнения вышеприведенного кода, будет выведен следующий результат
a[0] = 1 a[1] = 2 a[2] = 4.5 a[3] = 13.8333333333333 a[4] = 55.5833333333333 a[5] = 278.116666666667 a[6] = 1668.86666666667 a[7] = 11682.2095238095 a[8] = 93457.8011904762 a[9] = 841120.321825397 a[10] = 8411203.31825397
4. Примеры цикла for , в котором количество итераций заведомо неизвестно
Пример 1. Дано вещественное число a . Найти такое наименьшее n , что
Решение задачи для приложения типа Console Application
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < // цикл for, в котором количество итераций заранее неизвестно int n; double a; double t; Console.Write(«a color: #008080;»>Convert.ToDouble(Console.ReadLine()); // цикл вычисления for (n = 1, t = 0; t < a; n++) t = t + 1.0 / n; Console.Write(«n = «, n — 1); > > >
Выполнение данной программы даст следующий результат
a = 2 n = 4
Пример 2. Задано число a (1< a ≤1.5). Найти такое наименьшее n , что в последовательности чисел
последнее число есть меньше чем a .
Ниже приведено решение задачи для приложения типа Console Application
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 < class Program < static void Main(string[] args) < // найти наименьшее n int n; double a; double t; Console.Write(«a color: #008080;»>Convert.ToDouble(Console.ReadLine()); // в части инициализации помещаются два выражения for (n = 2, t = 1 + 1.0 / n; t >= a; n++) t = 1 + 1.0 / n; Console.WriteLine(«n = «, n-1); > > >
Как видно из вышеприведенного кода, в цикле for в части инициализации помещаются два выражения, разделенных запятой:
for (n = 2, t = 1 + 1.0 / n; t >= a; n++) t = 1 + 1.0 / n;
Выполнение программы для некоторого значения a может быть, например, следующим
a = 1.3 n = 4
5. Понятие вложенного цикла for
Цикл for может быть вложенным в любой другой управляющий оператор, которым может быть:
- оператор условного перехода if ;
- оператор варианта switch ;
- оператор цикла for ;
- оператор цикла while ;
- оператор цикла do…while .
Количество уровней вложения неограничено.
6. Примеры решения задач, в которых цикл for есть вложенным в другие циклы
Пример 1. В примере цикл for вложен в другой цикл for .
Напечатать числа в следующем виде:
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
Фрагмент кода, который решает данную задачу для приложения типа Console Application :
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 < class Program < static void Main(string[] args) < // в цикле for вложен другой цикл for for (int i = 1; i for (int j = 1; j Console.Write(» «, i); Console.WriteLine(); > > > >
Пример 2. Цикл for вложен в цикл while .
Найти все целые числа из промежутка от 1 до 300, в которых ровно 5 делителей.
Фрагмент кода, который решает данную задачу
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 < class Program < static void Main(string[] args) < // найти все числа от 1 до 300 в которых ровно 5 делителей int num; int i, k; num = 1; while (num for (i = 1; i // цикл for вложен в цикл while if (num % i == 0) k++; if (k == 5) Console.WriteLine(«», num); num++; > > > >
Результат выполнения программы
16 81
Связанные темы
- Оператор условного перехода if . Полная и сокращенная формы. Конструкция if-else-if
- Оператор выбора switch
- Оператор цикла while . Примеры
Источник: www.bestprog.net
Lesson 6
Пока цикл
while цикл повторяет последовательность действий много раз, пока какое-то условие не достигнет False . Условие задается перед телом цикла и проверяется перед каждым исполнением тела цикла. Как правило, в while используется цикл , когда невозможно определить точное число итераций цикла заранее.
Синтаксис в while цикл в простейшем случае выглядит следующим образом :
while some condition: a block of statements
Сначала Python проверяет условие. Если это значение False, то цикл завершается и управление передается следующему оператору после в while тело цикла. Если условие истинно, то тело цикла выполняется, а затем условие снова проверяется. Это продолжается, пока условие равно True.
Когда условие становится False, цикл завершается и управление передается следующему оператору после цикла.
Например, следующий фрагмент программы печатает квадраты всех целых чисел от 1 до 10. Здесь можно заменить цикл «while» на цикл for . in range(. ) :
1 4 9 16 25 36 49 64 81 100
i = 1 while i
В этом примере переменная i внутри цикла выполняет итерацию от 1 до 10. Такая переменная, значение которой изменяется с каждой новой итерацией цикла, называется счетчиком. Обратите внимание, что после выполнения этого фрагмента значение переменной i определено и равно 11 , потому что, когда i == 11 условие i
Вот другой пример использование в while цикла , чтобы определить количество цифр целого числа n :
5678
n = int(input()) length = 0 while n > 0: n //= 10 # это эквивалентно n = n // 10 length += 1 print(length) # 4
На каждой итерации мы сокращаем последнюю цифру числа, используя целочисленное деление на 10 ( n //= 10 ). В переменной length мы подсчитываем, сколько раз мы это делали.
В Python есть еще один, более простой способ решить эту проблему: .
Advertising by Google, may be based on your interests
2. Поток управления контуром: else
Можно написать оператор else: после тела цикла, который выполняется один раз после окончания цикла:
None
i = 1 while i
На первый взгляд это утверждение, похоже, не имеет смысла, потому else: тело else: statement можно просто поместить после окончания цикла. «else» после цикла имеет смысл только при использовании в сочетании с break . Если во время выполнения цикла интерпретатор Python обнаруживает break , он немедленно останавливает выполнение цикла и выходит из него. В этом случае ветка else: не выполняется. Таким образом, break используется для прерывания выполнения цикла в середине любой итерации.
Вот пример, похожий на Black Jack: программа, которая считывает числа и суммирует их до тех пор, пока общая сумма не станет больше или равна 21. Входная последовательность заканчивается на 0, чтобы программа могла остановиться, даже если общая сумма всех чисел равна менее 21.
Посмотрим, как он ведет себя на разных входах.
Версия 1. После проверки условия цикл завершается нормально, поэтому выполняется ветка else.
2 4 7 0
total_sum = 0 a = int(input()) while a != 0: total_sum += a if total_sum >= 21: print(‘Total sum is’, total_sum) break a = int(input()) else: print(‘Total sum is less than 21 and is equal to’, total_sum, ‘.’)
Версия 2. Цикл прерывается break , поэтому ветвь «else» пропускается.
9 9 5 4 0
total_sum = 0 a = int(input()) while a != 0: total_sum += a if total_sum >= 21: print(‘Total sum is’, total_sum) break a = int(input()) else: print(‘Total sum is less than 21 and is equal to’, total_sum, ‘.’)
Филиал «Else» также может использоваться с циклом «for». Давайте рассмотрим пример, когда программа считывает 5 целых чисел, но останавливается вправо, когда выполняется первое отрицательное целое число.
Версия 1. Цикл завершается нормально, поэтому выполняется ветка «else».
3 6 2 4 5
for i in range(5): a = int(input()) if a < 0: print(‘Met a negative number’, a) break else: print(‘No negative numbers met’)
Версия 2. Цикл прерван, поэтому ветка «else» не выполняется.
3 6 -2 4 5
for i in range(5): a = int(input()) if a < 0: print(‘Met a negative number’, a) break else: print(‘No negative numbers met’)
Источник: snakify.org
ЦИКЛ FOR
Жизнь циклична. Природа циклична. Зима сменяется весной, весна — летом, затем осень с дождями и слякотью, да снова зима, которую сменяет весна. Цикл. Время: час ночи, вот уже два, три. двенадцать дня, час, два, три. Сутки проходят и заново повторяется: час, два три.
Циклы, циклы, циклы.
Даже наша ходьба циклична. Сначала правую ногу вперёд, опора, потом левую вперёд, опора. Повторить двадцать раз и дойти до холодильника. Всё циклично! Завтрак, обед, ужин; работа, работа, работа, зарплата, работа, работа, работа, зарплата, раз в год отпуск.
Год, второй, третий.
Жизнь циклична. Пример из уже нами изученного: дни недели. Цикл. Понедельник, вторник, среда, четверг, пятница, суббота, воскресенье. Закончили?
Заново! Если пометить дни числами, как мы с вами делали, то у нас постоянный, регулярно повторяющийся ряд чисел:
1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3.
Идея циклов: при многократном повторении одних и тех же действий прийти к нужному результату. Шаг за шагом к холодильнику. Небольшими шагами, без лишних усилий, но постоянно, ритмично, уверенно — к цели.
Повторение за повторением, повторение повторения и мы получаем отсортированные данные. Видим путь из А в Б на экране автомобильного навигатора. Считаем факториал.
Что такое умножение? Сложение числа самим с собой столько раз, сколько указано множителем: тоже цикл!
2 * 4 = 2 + 2 + 2 + 2
«Многократное повторение одного и того же действия с целью получения результата»: для 2 * 4 повторяем по правилу «к результату прибавлять число два четыре раза».
Чтобы научиться планировать и реализовывать циклы на языке программирования, мы должны выработать в себе умение находить небольшие, одинаковые по смыслу части общего целого. В приведённом примере 2 * 4 такая осмысленно небольшая часть — это операция +2. Повторим 4 раза и получим результат. Или операция +4, повторённая два раза.