Инструкция цикла for реализует алгоритмическую структуру цикл с параметром (или цикл со счетчиком). Цикл for применяется в том случае, когда в программе, прежде выполнения инструкций цикла, становится известным (или заранее определено) количество шагов этого цикла. В блок-схеме инструкция for изображается следующим образом:
Синтаксис:
For (инициализация ; условие ; модификация ) { Инструкции тела цикла; }
Если в теле цикла одна инструкция, то { } можно опустить. Переменная-параметр цикла (счетчик) может быть любого числового типа. Это делает цикл for C++ таким же универсальным, как и цикл типа while . В разделе модификации чаще всего используется операция постфиксного или префиксного инкремента (или декремента), но может использоваться любое выражение с присваиванием, изменяющее значение параметра цикла. Цикл работает следующим образом:
- В начале происходит описание и инициализация переменной-счетчика
- Далее проверка условия: если выражение имеет значение true , произойдет итерация
- После выполнения инструкций тела цикла производится модификация величины счетчика
Примечание
: в C++ является правилом делать описание переменной-счетчика в заголовке цикла. Но это не обязательно, тем более, если планируется инициализировать несколько переменных в разделе инициализации так, как это реализовано в программе 9.2. Однако, использование описания переменной-счетчика в заголовке цикла приводит к описанию локальной переменной, уничтожаемой автоматически при завершении работы цикла. Поэтому, без крайней необходимости, описание переменной-счетчика вне цикла for производить не следует.
В процессе работы цикла for не рекомендуется изменять операнды в выражениях заголовка цикла – это приведет к разного рода ошибкам! Но сами значения переменных (или констант), в том числе изменяемые значения (счетчик), использовать можно. Рассмотрим классический пример.
Программа 9.1 Дано натуральное число N. Вывести все делители этого числа.
#include
Использование инструкции continue в цикле for
При использовании инструкции continue в цикле for необходимо учитывать особенности работы этого цикла:
- Инструкции, следующие после continue , будут пропущены
- Затем происходит модификация счетчика
- Переход к выполнению следующей итерации (иначе, проверки условия)
Покажем это на примере: int main() { for (int i = 1; i < 20; i++) { if (i % 2 == 0) continue; cout << i << " "; } 1 3 5 7 9 11 13 15 17 19
Примечание . Обратите внимание: хотя вывод чисел по условию пропущен, но инкрементация счетчика выполняется. Этот пример приведен всего-лишь для иллюстрации, программировать цикл так не следует! Эту задачу лучше решить следующим образом:
Int main() { for (int i = 1; i < 20; i += 2) cout << i << " ";
Несколько выражений в разделе инициализации и модификации
Как мы уже отметили ранее в заголовке инструкции for должно быть три раздела. Выражения, находящееся в этих разделах, можно опускать, но нельзя опускать ";" . В конце концов, можно оставить только; . Заголовок в виде:
For (;;) { ... }
является заголовком “бесконечного” цикла. (Выход из цикла должен программироваться внутри тела цикла).
C++ поддерживает несколько выражений в разделах инициализации и модификации в заголовке инструкции for . При этом условие продолжения цикла должно быть одно!
Например. Постановка задачи: Вычислить факториал числа, не превосходящий 20.
Программа 9.2
#include
Примечание : обратите внимание, что поток вывода в строке 12 не относится к телу цикла! (В конце заголовка – ;). Таким образом, данный цикл в теле имеет пустую инструкцию, а все выражения вычисляются в заголовке. Программа 9.2 правильно вычисляет факториал числа от 0 до 20 .
Цикл for основанный на диапазоне (range-based for)
Для перебора элементов массива или контейнера приходится выполнять однотипные действия, при этом использовать громоздкий код. Для упрощения работы с контейнерами в C++ существует специальная форма цикла for – range-based for (цикл for основанный на диапазоне
или диапазонный for).
Синтаксис
:
For (объявление : имя_последовательности ) loop_statement
Использование range-based for на примере C-массива:
Программа 9.3
#include
Чтобы элементы массива можно было изменять – переменная s должна быть ссылочной переменной (как в примере выше). Если переменная не является ссылкой, то данные будут копироваться. Для автоматического выведения типа в этом цикле используется спецификатор auto . range-based for имеет ограничение на работу с динамическими массивами: он не поддерживает изменение размера массива, так как содержит фиксированный указатель конца массива. При работе с массивами, имеющими фиксированный размер, диапазонный for является прекрасной и безопасной альтернативой обычному for .
Вложенные циклы for
Так же, как и другие инструкции циклов, for поддерживает структуру вложенных циклов. Применение вложенных циклов for для организации ввода и вывода двумерных массивов выглядит гораздо компактнее, чем при использовании цикла while .
Однако, при решении задач обхода таких массивов, необходимо избегать применение условной инструкции if . Зачастую, задачу можно реализовать более рационально, путем манипуляции индексами (переменными цикла i и j). То есть, поставить в зависимость изменение одного индекса, от значения величины другого. Рассмотрим два примера.
Программа 9.4
Дана квадратная матрица размера n, элементы которой равны 0. Заполнить элементы, лежащие ниже и на самой главной диагонали единицами.
#include
Программа 9.5
Составить программу заполнения массива числами треугольника Паскаля и вывода этого массива. Треугольник паскаля имеет вид:
В этом треугольнике на вершине и по бокам стоят единицы (в программе 9.5 треугольник “положен на бок” – стороны треугольника: первый столбец и главная диагональ). Каждое число равно сумме двух чисел, расположенных над ним. Строки треугольника симметричны относительно вертикальной оси и содержат биноминальные коэффициенты.
#include
Вопросы
- Может ли быть заменена в программе инструкция цикла for на инструкцию цикла while? Всегда ли это можно сделать?
- Когда удобнее применять для организации циклов инструкцию for? while?
- Возможны ли в заголовке инструкции for следующие выражения: a) for (;a > b && !(a % 2);) b) for (a > b;;) c) for (;;i = 0) d) for (;i = 0;) e) for (;;i++, --b) f) for (--i;;) g) for (b = 0; b != a;) ?
- Переменная i – параметр внешнего цикла, а j – вложенного. Доступна ли будет переменная j во внешнем цикле? i во вложенном цикле?
Учебник
Домашняя работа
- Зад. 29. Напишите программу, в которой вводятся натуральные числа a и b , а на дисплей выводятся все простые числа в диапазоне от a до b (идея алгоритма Программа 8.5)
- Зад. 30. Совершенным называется число, равное сумме всех своих делителей, меньших его самого (например, число 6 = 1 + 2 + 3). Напишите программу, которая вводит натуральное число N и определяет, является ли число N совершенным.
- Напишите программу, которая выводит на экран квадратную числовую таблицу размера n x n , имеющую следующий вид при n = 10: 1 * * * * * * * * * * 2 * * * * * * * * * * 3 * * * * * * * * * * 4 * * * * * * * * * * 5 * * * * * * * * * * 6 * * * * * * * * * * 7 * * * * * * * * * * 8 * * * * * * * * * * 9 * * * * * * * * * * 10
Литература
- Лафоре Р. Объектно-ориентированное программирование в C++ (4-е изд.). Питер: 2004
- Прата, Стивен. Язык программирования C++. Лекции и упражнения, 6-е изд.: Пер. с англ. - М.: ООО «И.Д. Вильяме», 2012
- Липпман Б. Стенли, Жози Лажойе, Барбара Э. Му. Язык программирования С++. Базовый курс. Изд. 5-е. М: ООО “И. Д. Вильямс”, 2014
- Эллайн А. C++. От ламера до программера. СПб.: Питер, 2015
- Шилдт Г. С++: Базовый курс, 3-изд. М.: Вильямс, 2010
Здравствуйте, дорогие читатели! Вот мы с вами и подошли к изучению циклов. Циклы в Паскаль. Что это такое? Как этим пользоваться? Для чего они нужны? Именно на эти вопросы я сегодня и отвечу.
Если вы читали , то знаете, что существует три вида алгоритмов: линейный, разветвляющийся и циклический. Мы с вами уже знаем, как реализовывать и алгоритмы на Паскале. Приступим к изучению последнего типа алгоритмов.
В языке Pascal, как и в большинстве языков программирования, существует три типа циклических конструкций.
Любой цикл состоит из тела и заголовка. Тело цикла — это набор повторяющихся операторов, а условие — это логическое выражение, в зависимости от результата которого и происходит повторное выполнение цикла.
Возьмем одну задачу, которую будем решать, используя различные виды циклов.
Задача 1. Вывести все числа от 1 до числа, введенного с клавиатуры.
While, или цикл с предусловием
Как вы, наверное, уже поняли из названия, while — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true ; как только условие становится false
While имеет формат:
while < условие> do <оператор 1>; {Пока … делай ….}
Данный цикл подходит только для одного оператора, если же вы хотите использовать несколько операторов в своем коде, вам следует заключить их в операторные скобки — begin и end; .
Решение задачи.
Program example_while; var i, N: integer; { объявляем переменные } begin i:= 1; { Присваиваем i значение 1 } readln(N); { Считываем последнее число } while i <= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) } begin {Открываем операторные скобки} write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} end; { закрываем скобки } end.
Repeat, или цикл с постусловием
Repeat — полная противоположность while . Repeat — это цикл, в котором условие стоит после тела. Причем оно выполняется тогда и только тогда, когда результат условия false ;как только логическое выражение становится true , выполнение цикла прекращается.
Repeat имеет формат:
repeat
{ повторяй … }
<оператор 1>;
< оператор 2>;
…
until
{до…} <условие>
Begin и end не требуются.
Решение задачи.
Program example_repeat; var i, N: integer;{ объявляем переменные } begin i:= 1; { Присваиваем i значение 1 } readln(N); { Считываем последнее число } repeat {после repeat не требуется begin и end } write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} until i = N + 1; {Например, i = 11, а N = 10. Цикл прекратится, так условие стало true.} end.
For, или цикл с параметром
For — это цикл, в котором тело выполняется заданное количество раз.
Существует две формы записи этого цикла:
Первая форма
for <счетчик1> := <значение1> to <конечное_значение> do <оператор1>;<счетчик1> будет увеличиваться на 1.
<значение1> — это начальное значение счетчика. Это может быть переменная или число.
<конечное_значение> : как только значение <счетчик1> станет больше <конечное_значение>
Если требуется написать несколько операторов в теле цикла, используем begin и end .
И <счетчик1>, и <конечное_значение>, и <значение1> — переменные целого типа.
Чаще всего в качестве счетчика используется переменная i.
Вторая форма
for <счетчик2> := <значение2> downto <конечное_значение> do <оператор1>;После каждой итерации значение <счетчик2> будет уменьшатся на 1.
<значение2> — это начальное значение счетчика.
<конечное_значение> : как только значение <счетчик2> станет меньше <конечное_значение>, выполнение цикла прекратится.
Два важных примечания:
- Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение; конечное_значение].
- Изменять значение счетчика внутри тела нельзя ! Вот что выводит компилятор:
Решение задачи:
Program example_for; var i, N: integer; begin read(N); {предположим, что мы ввели 10} for i:= 1 to N do write(i, " "); {количество итераций - 10 - 1 + 1 = 10} end.
Согласитесь, данный код проще и лаконичнее, чем все предыдущие. И цикл for — не совсем обычный цикл, в нем нет логического условия. Поэтому цикл с параметром в программировании называют синтаксическим сахаром. Синтаксический сахар — это дополнения синтаксиса языка программирования, которые не добавляют новых возможностей, а делают использование языка более удобным для человека.
Давайте решим пару задач.
For1
. Даны целые числа K и N (N > 0). Вывести N раз число K.
Организовываем простой цикл от 1 до требуемого числа.
Program for1; var K, N, i: integer; begin read(K, N); for i:= 1 to N do write(K, " "); {Пишем К через пробел } end.
For2 . < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.
Так как A < B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> — <начальное_значение> + 1.
Program for2; var A, B, i, count: integer; begin read(A, B); for i:= A to B do write(i, " "); {выписываем числа от меньшего к большему} count:= B - A + 1; {считаем количество чисел} writeln; write("Количество чисел - ", count); end.
For9 . Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно.
Организовываем такой же цикл, как и в предыдущей задаче, но одновременно суммируем квадраты всех чисел. Чтобы высчитать квадрат, используем функцию .
Program for9; var A, B, i, S: integer; begin read(A, B); S:= 0; {PascalABC делает это автоматически, но если у вас другой компилятор советуем обнулять переменные вручную} for i:= A to B do S:= S + Sqr(i); {складываем все квадраты} writeln; write("Сумма квадратов - ", S); end.
For13° . Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать.
Для того, чтобы поменять знак, каждую итерацию цикла меняем значение специальной переменной на противоположное.
Program for13; var N, A, i: integer; S: real; begin Write("N = "); readln(N); S:= 1.1; A:= 1; {Сначала положительное} for i:= 2 to N do {первую итерацию цикла мы уже произвели, поэтому начинаем отсчет с 2} begin A:= -A; {Теперь отрицательное} S:= S + A * (1 + i / 10); {Складываем} end; Writeln(S:5:1); {Отдадим под дробную часть одно знакоместо} end.
While1° . Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.
Каждый раз вычитаем B из А, пока А — В >= 0.
Program while1; var A, B: integer; begin readln(A, B); while (A - B) >= 0 do A:= A - B; {Пока разница положительная, вычитаем. Необходимо предусмотреть вариант с кратностью А и B, поэтому >=} write(A); end.
While4° . Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является - вывести False.
Действуем следующим образом: пока N делится нацело на три, делим N нацело. Затем, если N = 1 — число является степенью тройки; если N <> 1, тогда число — не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое , и как работают .
Program while4; var N: integer; begin readln(N); while N mod 3 = 0 do N:= N div 3; {Пока остаток от деления на три равен нулю, делим N нацело } writeln(N = 1); {логическое выражение} end.
На сегодня все! Не забывайте почаще заходить на наш сайт и кликать по кнопочкам, которые расположены перед комментариями.
Цикл с параметром имеет следующий формат:
for (инициализация; выражение; модификации) оператор;
Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой (операцией «последовательное выполнение»), например, так:
for (int i = 0, j = 2; ...
for (k = 1, m = 0; ...
Областью действия переменных, объявленных в части инициализации цикла, является цикл 1 . Инициализация выполняется один раз в начале исполнения цикла.
Выражение определяет условие выполнения цикла: если его результат, приведенный к типу bool , равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием.
Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую. Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).
Пример (оператор, вычисляющий сумму чисел от 1 до 100):
for (Int i = 1, s = 0; 1<=100; i++) s += i;
Пример (программа печатает таблицу значений функции у=х 2 +1 во введенном диапазоне):
#Include
float Xn, Xk, Dx, X;
printf (“Введите диапазон и шаг изменения аргумента: ");
scanf (“%f%f%f”, &Xn, &Xk, &Dx);
printf (“| X | Y |\n");
for (X = Xn; X<=Xk; X+=Dx)
printf (" | %5.2f | %5.2f |\n”, X*X + 1);
Пример (программа находит все делители целого положительного числа):
#Include
Int num, half, div;
cout << “\n Введите число: "; cin >> num;
for (half = num / 2, div = 2; div <= half; div++)
if (!(num %div))cout << div <<"\n";
Два последних примера выполняют те же действия, что и примеры для цикла с предусловием, но записаны более компактно и наглядно: все действия, связанные с управлением циклом, локализованы в его заголовке.
Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот по следующей схеме:
for (b1: b2; bЗ) оператор b1;
while (b2){ оператор; bЗ;}
Часто встречающиеся ошибки при программировании циклов - использование в теле цикла неинициализированных переменных и неверная запись условия выхода из цикла.
q проверить, всем ли переменным, встречающимся в правой части операторов присваивания в теле цикла, присвоены до этого начальные значения (а также возможно ли выполнение других операторов);
q проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;
q предусмотреть аварийный выход из цикла по достижению некоторого количества итераций;
q и, конечно, не забывать о том, что если в теле цикла требуется выполнить более одного оператора, нужно заключать их в фигурные скобки.
Операторы цикла взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае.
Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы раз (например, если в цикле производится ввод данных).
Оператором whiIe удобнее пользоваться в случаях, когда число итераций заранее не известно, очевидных параметров цикла нет или модификацию параметров удобнее записывать не в конце тела цикла.
Оператор for предпочтительнее в большинстве остальных случаев (однозначно - для организации циклов со счетчиками).
Операторы цикла с параметром (for)
Операторы цикла с параметром (которые начинаются со слова for ) вызывает повторяющееся выполнение оператора (который может быть составным оператором) пока управляющей переменной присваивается возрастающая последовательность значений.
For параметр цикла:= начальное значение to конечное значение do оператор.
В качестве управляющей переменной должен использоваться идентификатор переменной. Управляющая переменная должна иметь перечислимый тип. Начальное и конечное значения должны иметь тип, совместимый по присваиванию с перечислимым типом. Когда начинает выполняться оператор for , начальное и конечное значения определяются один раз, и эти значения сохраняются на протяжении всего выполнения оператора for . Оператор, который содержится в теле оператора for , выполняется один раз для каждого значения в диапазоне между начальным и конечным значением. Управляющая переменная всегда инициализируется начальным значением. Когда работает оператор for и используется ключевое слово to , значение управляющей переменной увеличивается при каждом повторении на единицу. Если начальное значение превышает конечное значение, то содержащийся в теле оператора for оператор не выполнятся. Когда в операторе цикла используется ключевое слово downto , значение управляющей переменной уменьшается при каждом повторении на единицу. Если начальное значение в таком операторе меньше, чем конечное значение, то содержащийся в теле оператора цикла оператор не выполнятся.
Если оператор, содержащийся в теле оператора for , изменяет значение управляющей переменной, то это является ошибкой. После выполнения оператора for значение управляющей переменной становится неопределенным, если только выполнение оператора for не было прервано с помощью оператора перехода.
На параметр цикла в операторе for накладываются следующие ограничения:
1) параметр цикла, а также его начальное и конечное значения не могут быть изменены никаким оператором в теле цикла;
2) вход в цикл ТОЛЬКО через его начало.
Массив - это упорядоченная совокупность переменных одного типа, называемых элементами массива. Все элементы имеют одно и то же имя, совпадающее с именем массива. Каждый элемент снабжается индексом (порядковым номером), определяющим его относительную позицию в ряду других элементов, и называется индексированной переменной. Индекс элемента записывается вслед за его именем в квадратных скобках, например, a, max и т.д. Характеристиками каждого массива являютnя его имя, размерность и длина. Имя массива выбирается по тем же правилам, что и имя простой (неиндексированной) переменной. Понятие размерности массива аналогично понятию размерности матрицы в математике. Так одномерный массив соответствует вектору - строке, двумерный - матрице такой же размерности и т.д.
Длина массива - это количество составляющих его элементов. Массивы относятся к одной из разновидностей составного типа, а именно к регулярному типу.
Определение регулярного типа имеет вид
array of t1
где array - массив (ключевоеое слово);
of - из (ключевое слово);
t1 - тип элементов массива (базовый тип);
t2 - тип индексов элементов массива.
В качестве элементов массива могут выступать переменные любого типа, допустимого в языке. Тип индекса задаёт количество элементов в массиве, т.е. его длину; это количество определяется числом возможных значений типа,указанного в описании массива. Для индексации элементов массива чаще всего используется ограниченный тип, который образуется из какого-либо стандартного типа (например, целого) путём наложения ограничений на допустимый диапазон его значений. Эти ограничения задаются минимальным и максимальным значениями индекса, разделёнными двумя стоящими подряд точками и заключёнными в квадратные скобки, например, , [-5..35] и т.д.
В программе каждый массив должен быть описан. Его описание может быть сделано либо в разделе описания переменных - var , либо в двух разделах: описания типов - type и описания переменных. Но в любом случае в описании массива должно присутствовать определение регулярного типа.
Описание массива в разделе переменных выглядит так:
var
имя массива: array of t1;
Цикл с параметром был уже рассмотрен нами в разделе "Алгоритм" в теме "Виды алгоритмов".
Цикл с параметром
используется,
когда заранее известно
сколько раз должен выполниться цикл.
Формат записи цикла:
Здесь for, to, do - зарезервированные слова (для, до, выполнить);
<пар. цикла>
- параметр цикла – переменная целочисленного
типа (типа integer);
<нач. знач.>
- начальное значение - число или переменная
целочисленного
типа (типа integer);
<кон. знач.>
- конечное значение - число или
переменная
целочисленного
типа (типа integer);
<оператор>
- произвольный оператор Паскаля.
Пример:
For i:=1 to n do
<оператор>
здесь i - параметр цикла
1 - начальное значение
n - конечное значение
Если в теле цикла используется несколько операторов, тогда, используются
операторные скобки: begin ... end.
При выполнении оператора for вначале вычисляется выражение <нач.знач.> и осуществляется присваивание его значения переменной цикла <пар.цикла> := <нач. знач.>. Далее сравниваются
<пар.цикла> и
<кон.знач.>. До тех пор, пока они не станут равными будет выполняться оператор (операторы). Значение переменной цикла
<нач.знач> автоматически увеличивается на единицу в ходе выполнения цикла.
Надо сразу заметить, что задать шаг цикла, отличный от 1 в этом операторе нельзя.
Пример:
Возможны такие записи
оператора цикла:
1) for i:= 1 to n do s1;
2) for i:= 3 to 10 do s1;
3) for i:= a to b do s1;
4) for i:= a to b do
begin
s1;
s2;
...
sn
end;
Здесь s1,
s2, s3, ... sn -
операторы цикла.
Пример:
Составить программу вывода на экран чисел от 1 до 10.
Пример:
Составить программу вычисления факториала числа n, т. е. n!. (0! = 1)
Объяснение
программы:
Переменная n - для вводимого пользователем числа, факториал которого надо
найти; f - переменная, в которой будет "накапливаться" значение
факториала числа n; i - переменная цикла.
Устанавливается первоначальное значение переменной f:= 1.
Далее начинается цикл. Переменной i присваивается начальное значение 1; оно
сравнивается с конечным - n (1 <= n), если условие
истинно, тогда выполняется оператор (в этой программе он один): f:=
f*i, 1*1=1; значение переменной цикла увеличивается на 1, т. е. станет равным:
i:= i + 1, 1 + 1 = 2 и цикл повторяется.
Когда значение i станет равным n, тогда цикл выполнится
последний раз, потому что следующее значение i будет n + 1, что больше
конечного значения n, условие i <= n - ложно, цикл не
выполняется.
Существует другая форма оператора цикла For:
Формат записи цикла:
Замена зарезервированного
слова to на downto означает, что шаг параметра цикла
равен (-1).
Изменение значения
параметра идет от большего значения к меньшему, т. е.
<нач. знач.> <кон. знач.>.
Пример:
Возможны такие записи оператора цикла:
1) for i:= n downto 1 do s1;
2) for i:= 10 downto 3 do s1;
3) for i:= b downto a do s1; (при условии, что b>a)
4) for i:=
b downto a
do
begin
S1;
s2;
...
sn
end; (при условии, что b>a)
Здесь s1, s2, s3, ... sn - операторы цикла.
Пример: Программу вычисления факториала числа можно составить, используя этот оператор цикла.
Задачи
- Даны 10 чисел, вывести те из них, которые являются полными квадратами.
- Даны 10 чисел, найти их произведение. Составить блок-схему и программу.
- Даны 10 чисел, найти сумму четных. Составить блок-схему и программу.
- Даны 10 чисел, найти количество отрицательных. Составить блок-схему и программу.
- Даны n действительных чисел. Найти максимум и минимум. Составить блок-схему и программу.
- Даны n действительных чисел. Найти среднее арифметическое всех элементов. Составить блок-схему и программу.
- Даны n действительных чисел. Найти среднее арифметическое отрицательных и положительных элементов. Составить блок-схему и программу.
- Даны n натуральных чисел. Найти сумму и произведение элементов, кратных 3 и 5. Составить блок-схему и программу.
- Даны n натуральных чисел. Вывести те числа, значения которых являются степенями двойки (1, 2, 4, 8, 16, ...). Составить блок-схему и программу.
- Даны n натуральных чисел. Вывести те числа, значения которых находятся в отрезке . Составить блок-схему и программу.
- Даны n натуральных чисел. Вывести на экран те числа, значения которых являются квадратами какого-либо числа. Составить блок-схему и программу.
- Дано натуральное число n. Найти n 2. Составить блок-схему и программу.
- Даны натуральные числа a, n. Найти a n. Составить блок-схему и программу.
- Дано натуральное число n. Определить его разрядность, цифру старшего разряда числа увеличить на 2
- Дано натуральное число n. Поменять местами первую и последнюю цифры числа
- Дано натуральное число n. Цифры числа, кратные 2 заменить на 0.
- Дано натуральное число n. Цифры числа, кратные 3 заменить на 1.
- Дано натуральное число n. Вычислить произведение (2n-1)*(3n-1)*(4n-1)*...*(10n-1). Составить блок-схему и программу.
- Вычислить сумму 2+4+6+...+100. Составить блок-схему и программу.
- Дано натуральное число n, действительное x. Вычислить произведение x+x/2+x/3+...+x/n. Составить блок-схему и программу.
- Дано натуральное число n. Вычислить P=(1-1/2)(1-1/3)...(1-1/n), где n>2. Составить блок-схему и программу.
- Дано натуральное число n. Вычислить P=(1+x)/n+(2+x)/(n-1)+...+(n+x)/1. Составить блок-схему и программу.
- Даны n натуральных чисел. Вычислить сумму ряда 1+x/1!+x 2 /2!+x 3 /3!+ ... +x n /n!. Составить блок-схему и программу.