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

Операторы цикла цикл с параметром оператор цикла thumbnail

Цикл с параметром был уже рассмотрен нами в разделе “Алгоритм” в теме “Виды алгоритмов”.

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

Формат записи цикла:

For <пар.цикла> := <нач.знач> to <кон.знач.> do <оператор>

Здесь 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.

Блок-схема:

Программный код:

Program Problem; {Вывод чисел}

var i : integer;

begin

for i:=1 to 10 do

writeln (i);

redaln;

end.

Пример:

Составить программу вычисления факториала числа n, т. е. n!. (0! = 1)

Блок-схема:

Программный код:

Program Problem1; {Вычисление факториала числа n!}

var

n, f, i : integer;

begin

write(‘Введите натуральное число’);

readln(n);

f := 1;

if n <> 0 then for i := 1 to n do f := f*i;

writeln (‘Факториал числа ‘, n, ‘ равен ‘, f);

redaln;

end.

Объяснение программы:

Переменная 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:

Формат записи цикла:

For <пар.цикла> := <нач.знач> downto <кон.знач.> do <оператор>

Замена зарезервированного слова 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 – операторы цикла.

Пример: Программу вычисления факториала числа можно составить, используя этот оператор цикла.

Блок-схема

Программный код:

var

n, i, f : longint;

begin

write(“Введите натуральное число “);

readln(n);

f := 1;

if n <> 0 then for i := n downto 1 do f := f*i;

writeln(“Факториал числа “, n, ” равен “, f);

end.

Задачи

  1. Даны 10 чисел, вывести те из них, которые являются полными квадратами. Составить блок-схему и программу.
  2. Даны 10 чисел, найти их произведение. Составить блок-схему и программу.
  3. Даны 10 чисел, найти сумму четных. Составить блок-схему и программу.
  4. Даны 10 чисел, найти количество отрицательных. Составить блок-схему и программу.
  5. Даны n действительных чисел. Найти максимум и минимум. Составить блок-схему и программу.
  6. Даны n действительных чисел. Найти среднее арифметическое всех элементов. Составить блок-схему и программу.
  7. Даны n действительных чисел. Найти среднее арифметическое отрицательных и положительных элементов. Составить блок-схему и программу.
  8. Даны n натуральных чисел. Найти сумму и произведение элементов, кратных 3 и 5. Составить блок-схему и программу.
  9. Даны n натуральных чисел. Вывести те числа, значения которых являются степенями двойки (1, 2, 4, 8, 16, …). Составить блок-схему и программу.
  10. Даны n натуральных чисел. Вывести те числа, значения которых находятся в отрезке [a, b]. Составить блок-схему и программу.
  11. Даны n натуральных чисел. Вывести на экран те числа, значения которых являются квадратами какого-либо числа.Составить блок-схему и программу.
  12. Дано натуральное число n. Найти n2. Составить блок-схему и программу.
  13. Даны натуральные числа a, n. Найти an. Составить блок-схему и программу.
  14. Дано натуральное число n. Определить его разрядность, цифру старшего разряда числа увеличить на 2
  15. Дано натуральное число n. Поменять местами первую и последнюю цифры числа
  16. Дано натуральное число n. Цифры числа, кратные 2 заменить на 0.
  17. Дано натуральное число n. Цифры числа, кратные 3 заменить на 1.
  18. Дано натуральное число n. Вычислить произведение (2n-1)*(3n-1)*(4n-1)*…*(10n-1). Составить блок-схему и программу.
  19. Вычислить сумму 2+4+6+…+100. Составить блок-схему и программу.
  20. Дано натуральное число n, действительное x. Вычислить произведение x+x/2+x/3+…+x/n. Составить блок-схему и программу.
  21. Дано натуральное число n. Вычислить P=(1-1/2)(1-1/3)…(1-1/n), где n>2. Составить блок-схему и программу.
  22. Дано натуральное число n. Вычислить P=(1+x)/n+(2+x)/(n-1)+…+(n+x)/1. Составить блок-схему и программу.
  23. Даны n натуральных чисел. Вычислить сумму ряда 1+x/1!+x2/2!+x3/3!+ …+xn/n!. Составить блок-схему и программу.

Наверх

Источник

Урок из серии: «Язык программирования Паскаль«

На предыдущем уроке Вы познакомились с оператором выбора Select Case.

В этом уроке будет описано использование оператора цикла с параметром For.

Циклический процесс, или просто цикл, это повторение одних и тех же действий.

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

Они всегда имеют заголовок цикла, определяющий число повторений, и тело цикла – повторяющиеся действия.

Переменная, которая изменяются внутри цикла и влияют на его окончание, называется параметром цикла.

Величина, на которую изменяется переменная цикла, называется шагом цикла.

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

Опишем первый из них.

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

Оператор цикла с параметром (цикл for) применяется тогда, когда заранее известно количество повторений одного и того же действия.

Для записи оператора цикла с параметром в языке Паскаль используется две формы записи.

for <параметр> := <начальное значение> to <конечное значение> do <тело цикла>;

или

for <параметр> := <начальное значение> downto <конечное значение> do <тело цикла>;

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

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

здесь:

<параметр> – переменная цикла (счетчик цикла);

<начальное значение> – начальное значение переменной цикла;

<конечное значение> – конечное значение переменной цикла.

В языке Паскаль шаг цикла всегда равен единице.

Если тело цикла состоит из нескольких операторов, то оно заключается в операторные скобки Begin – End.

Рассмотрим пример с использованием оператора цикла For.

Пример. Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (0<n<=18).

Вопросы для обсуждения

  1. Каким действием можно выделить последнюю цифру числа?
  2. Каким действием можно выделить первую цифру числа?

Обозначим:

k – это просматриваемое число;

p1 – это первая цифра числа k;

p2 – это вторая цифра числа k;

s – это сумма цифр данного числа k.

Число k будем выписывать только в том случае, когда сумма p1 и p2 будет равна n.

Program Primer9_1; Var k,n,p1,p2,s : Integer; Begin Writeln(‘Введите целое число n (0 < n <= 18): ‘); Readln(n); For k:=10 To 99 Do {Для(For) k от 10 до (To) 99 делать(Do)} Begin p2:=k Mod 10; {Выделяем вторую цифру} p1:=k Div 10; {Выделяем вторую цифру} s:=p1+p2; If s = n Then Writeln(k); {Если сумма равна n, то выводим k} End; End.

Коротко о главном

1. Если нужно многократно повторять одни и те же действия, то в программе организуют цикл.

2. Когда заранее известно число повторений и шаг цикла равен 1 (или -1), для организации циклов используют оператор for.

3. Оператор for имеет две формы записи. Если в заголовке цикла используется ключевое слово to, значение переменной цикла увеличивается на 1, если слово downto – переменная цикла уменьшается на 1.

4. Количество повторений цикла определяется по формуле:

<конечное значение> – <начальное значение> +1.

5. Нельзя изменять параметр цикла в теле цикла.

На следующем уроке мы рассмотрим циклы с неизвестным числом повторений.

Следующий урок: Операторы цикла с условием While и Repeat

Источник

Циклы чрезвычайно важны в программирования на C++, да и в остальных языках. Начнем с теории.

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

В C++ предусмотрены три оператора, реализующих циклический процесс: while, do..while и for. Рассмотрим каждый из них.

Оператор с предусловием (while)

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

while условие

{

оператор_1;

оператор_2;

оператор_n;

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include “stdafx.h”

#include <iostream>

using namespace std;

int main ()

{

int x, y, i, pen; //описаваем нужные переменные

x=0; //стартовое значение переменной

y=56; //определяем пенсионный возраст

while (x<=3) //пока параметр цикла не превышает конечное значение.

//выполнять тело цикла

{

cout<<“How old are you? n”;

cin>>i;

pen=y-i;

cout<<“Remained until retirement (years) = “<<pen<<endl;

x++; //изменение параметра цикла (аналогично x=x+1 (расмотрим в последующих уроках))

}

system (“pause”);

return 0;

}

Вот результат работы программы:

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

Цикл с постусловием (do…while)

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

do оператор while (выражение);

Работает цикл следующим образом. В начале выполняется оператор, затем вычисляется значение выражения. Если оно истинно, оператор тела цикла выполняется еще раз.

Рассмотрим код на примере прошлой программы, изменив некоторые строки.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include “stdafx.h”

#include <iostream>

using namespace std;

int main ()

{

int x, y, i, pen; //описаваем нужные переменные

x=0; //стартовое значение переменной

y=56; //определяем пенсионный возраст

do

{

cout<<“How old are you? n”;

cin>>i;

pen=y-i;

cout<<“Remained until retirement (years) = “<<pen<<endl;

x++; //изменение параметра цикла (аналогично x=x+1)

}

while (x<=-1); //условие ложно, но цикл выполняется 1 раз

system (“pause”);

return 0;

}

Цикл с параметром (for)

Данный цикл можно представить такой конструкцией;

for (начальные_присваивания; выражение; приращение) оператор;

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

Давайте на примере задачи рассмотрим цикл с параметром. Нам необходимо посчитать сумму чисел от 1 до 500. Делаем:

#include “stdafx.h”

#include <iostream>

using namespace std;

int main ()

{

int i; //определяем переменную

int sum = 0;

for (i=1; i<=500; i=i+1) // задаем начальное значение, конечное 500, шаг цикла

{

sum = sum + i;

}

cout << “The sum of the numbers from 1 to 500 = ” <<sum<<endl;

system (“pause”);

return 0;

}

Ответ будет 125250.

Похожие записи:

  • Условные операторы if и switch в C++
  • Классы в C++. Общие сведения
  • Строки и структуры в C++. Уроки программирования
  • Hellow, Word, первая программа на языке C++
  • Ввод и вывод данных C++

Источник

Циклы

Здравствуйте, дорогие читатели! Вот мы с вами и подошли к изучению циклов. Циклы в Паскаль. Что это такое? Как этим пользоваться? Для чего они нужны? Именно на эти вопросы я сегодня и отвечу.

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

В языке 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> станет меньше <конечное_значение>, выполнение цикла прекратится.

Два важных примечания:

  1. Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение ; конечное_значение].
  2. Изменять значение счетчика внутри тела нельзя! Вот что выводит компилятор:

for

Решение задачи:

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. Даны два целых числа A и B (A < 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 включительно.

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

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, тогда число – не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое div и mod, и как работают логические выражения.

program while4; var N: integer; begin readln(N); while N mod 3 = 0 do N := N div 3; {Пока остаток от деления на три равен нулю, делим N нацело } writeln(N = 1); {логическое выражение} end.

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

Источник

Читайте также:  Грудное кормление и менструальный цикл