Задача цикла с параметром блок схема

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

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

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

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!. Составить блок-схему и программу.

Наверх

Источник

Особенное место в Turbo Pascal занимают циклы. Их начинают изучать сразу же после отработки навыков ввода-вывода информации на экран. Ведь большинство задач сводится к тому, что циклы с параметром и другие конструкции помогают облегчить написание и функционирование определенного блока программы.

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

Разновидности циклов

Всего различают три разновидности:

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

Циклы с параметром, иначе их называют For … to … do или For … downto …. do, многократно повторяют определенную последовательность действий. В принципе, и другие разновидности используются с этой же целью, только в for-цикле заранее известно количество шагов.

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

Основные определения по теме

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

Понятие «циклы с параметрами» означает, что в данной конструкции проверяется условие, после чего выполняется набор итераций. Счетчик увеличивается (или уменьшается), и все повторяется. Тело цикла будет задействовано до тех пор, пока условие истинно.

For … to … do: алгоритм работы, синтаксис

Как уже было сказано, циклы с параметром используются в задачах, в которых указан «промежуток», в котором предстоит работать. Так, это может быть массив чисел, дней недели, строк стихотворения и т. д.

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

for исх.переменная := граница 1 to граница 2 do

begin

тело цикла;

end;

Здесь: исх. переменная объявляется пользователем в начале программы или блока; граница 1 и граница 2 – начальное и конечное значение промежутка; в теле цикла прописывается ряд действий, которые должны выполняться программой. Необходимо помнить, что если тело цикла содержит всего 1 команду, тогда операторные скобки begin…end можно опустить. В таком варианте конструкции счетчик, а именно <исх.переменная>, будет увеличиваться с шагом, равным 1.

for исх.переменная := граница 1 downto граница 2 do

begin

тело цикла;

end;

Здесь же исх. переменная будет уменьшаться с шагом, равным 1.

Схема работы цикла с параметром For … to … do будет выглядеть следующим образом:

  • Задается значение верхней границы промежутка, т. е. граница 2.
  • Исх.переменной присваивается значение параметра граница 1.
  • Проходит проверка условия: исх.переменная ≤ граница 2.
  • При получении результата True (Истина) выполняется тело цикла.
  • Счетчик увеличивается на шаг, равный 1.
  • Выполнение пунктов 3-5 происходит ровно до того момента, пока условие истинно: исх.переменная > граница 2. Как только это произошло, происходит выход из цикла и управление передается команде, следующей за данной конструкцией.

В For … downto … do алгоритм работы схож с вышеуказанным, за исключением некоторых пунктов:

  • В 3-м пункте проверяется условие: исх.переменная ≥ граница 2.
  • В 5-й строчке алгоритма счетчик уменьшается на 1.
  • В 6-м пункте команды 3-5 будут выполняться до тех пор, пока не будет удовлетворено условие: исх.переменная < граница 2.

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

Все остальное аналогично в обоих алгоритмах работы.

Блок-схема цикла с параметром

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

циклы с параметрами означает

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

Циклы с параметрами требуют определенного рода условий.

  • Счетчик и границы промежутка (т. е. исх.переменная, граница 1 и граница 2) должны принадлежать одному типу данных. Если имеется лишь совместимость между начальным и конечным значениями отрезка и исходной переменной, то программа может повести себя неправильно, поскольку границы будут преобразованы по типу данных исходного параметра.
  • Тип данных, которому должны принадлежать значения параметров, должен быть целочисленным. Крайне не рекомендуется использовать вещественный тип.
  • Изменять значение параметра исх.переменная в теле цикла принудительно нежелательно. Иначе пользователь с трудом сможет отследить возможные появившиеся ошибки.
  • В отличие от других видов циклов, в For … to … do или For … downto … do шаг не может меняться на параметр, отличный от 1.

Turbo Pascal: как выйти из цикла

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

Циклы с параметром в паскале (программирование которых предполагает «извечную» истинность условия) можно остановить с помощью Continue. Здесь работа налажена следующим образом: текущая итерация досрочно заканчивает свое выполнение, управление передается следующей команде, но без выхода из цикла.

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

Процедура Halt сводит принцип функционирования к следующему: полностью оканчивается работа программы.

Примеры заданий с решением

Пользователю будет полезно после изучения темы «Циклы с параметром в паскале» примеры сначала изучить, а затем тренироваться писать код самостоятельно. Простые задачи помогают будущему программисту узнавать теорию в практике, а затем успешно ее применять. По теме «Циклы с параметром» примеры задач с решением можно найти легкие и сложные. Здесь представлены 3 задачи, в которых разбираются алгоритмы работы и даются пояснения и комментарии к каждому решению.

Задача 1

Дан двумерный массив натуральных чисел в диапазоне [0..199], выбранных случайно. Найти количество всех двузначных чисел, сумма цифр которых кратна 2.

Алгоритм действий:

  1. Создать двумерный массив.
  2. Проверить каждое число на соответствие условиям:

a) если 9 < Х < 100, то разделить его нацело на 10 посредством div;

b) выделить вторую цифру числа посредством деления через mod;

c) сложить выделенные цифры;

d) поделить посредством mod заданную сумму на 2;

e) если результат будет равен 0, то счетчик увеличивается на 1.

циклы с параметром примеры задач

Задача 2

Дан одномерный массив целочисленных элементов. Найти количество положительных чисел.

Алгоритм действий:

  1. Создать массив целочисленных элементов, созданных посредством randomize.
  2. В цикл с параметром вложить условный оператор IF, который будет проверять заданный элемент на соответствие условию: Х>0.
  3. Если условие выполняется, то счетчик увеличивается на 1.
  4. После цикла следует вывести на экран получившееся значение счетчика.

Данные, указанные в скобках {}, являются комментариями. В строке 11 можно вывести массив на экран двумя способами: оставить пробел между числами либо отвести под каждый элемент определенное количество ячеек (в данном случае их 5).

В строке 12 переменную counter можно увеличить также двумя способами: либо к предыдущему значению прибавить 1, либо воспользоваться стандартной функцией Inc.

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

Задача 3

Дана квадратная матрица. Найти количество положительных элементов, находящихся на главной диагонали.

Пояснения:

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

Алгоритм действий:

  1. Создать квадратную матрицу.
  2. Присвоить переменной, ответственной за подсчет положительных элементов, значение «0».
  3. Составить цикл по созданию квадратной матрицы.
  4. Организовать цикл по проверке условия: если число на главной диагонали >0, тогда счетчик увеличивается на 1.
  5. После окончания действия цикла на экран вывести значение переменной, хранящей количество положительных элементов.

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

Противостояние двух языков программирования: С и Turbo Pascal

Как правило, уважающий себя программист знает несколько языков. К примеру, это могут быть С++, Turbo Pascal, Delphi, Java и т. д. Противостояние двух из них было ярко выражено еще в 80-е гг. (С и турбо паскаль). В конце ХХ века такая же борьба наблюдалась между Си++ и Java.

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

В виртуальном пространстве среди трех десятков языков программирования можно выделить три самые яркие пары, противостояние которых поражало величайшие умы киберпространства: алгол-60 и фортран, Pascal и C, Java и С++. Конечно, эти ощущения субъективные, но в тот или иной период один из пары был лидером. Это объяснялось требованиями промышленности и необходимости в том или ином программном продукте. В 70-х гг. «управлял миром» фортран, в 80-х – Turbo Pascal, в 90-х – С++. Конечно, ни один из них не «умер». Скорее, они преобразовались в усовершенствованные программные продукты.

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

Интересно, что разработчики Turbo Pascal (Старый Свет) пользовались результатами наработок американских ученых, в то время как в Новом Свете активно применяли итоги исследований европейских специалистов. В Европе разработчики ратуют в большей степени за чистоту и компактность языков программирования, а американские умы склоняются больше к использованию новомодных веяний в написании кода.

Источник

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

Ход урока

I. Актуализация знаний

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

II. Теоретический материал урока

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

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

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

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

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

Существует 3 типа циклических структур:

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

Иначе данные структуры называют циклами типа «Пока», «До», «Для».

Графическая форма записи данных алгоритмических структур:

Цикл с предусловием (иначе цикл пока) имеет вид:

Форматы записи операторов алгоритмаБлок-схемаФорматы записи операторов на Паскале
Пока (условие)

нц

серия команд

кц

while условие do

begin

серия команд;

end;

где

условие – выражение логического типа.

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

Серия команд, находящихся между begin и end, выполняются до тех пор, пока условие истинно.

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

Цикл с постусловием (иначе цикл до) имеет вид:

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

until условие

где

условие – выражение логического типа.

Обратите внимание:

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

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

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

Цикл с параметром (иначе цикл для) имеет вид:

Форматы записи операторов алгоритмаБлок-схемаФорматы записи операторов на Паскале
Для i от а до b шаг h

делай

Нц

Серия команд

кц

h = +1

for i:= a to b do

begin

серия команд

end;

h = -1

for i:= b downto a do

begin

Cерия команд;

end;

где

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

a – начальное значение цикла;

b – конечное значение цикла;

h – шаг изменения параметра.

Структура данного цикла иначе называют циклом i раз.

Эта команда выполняется таким образом: параметру i присваивается начальное значение а, сравнивается с конечным значением b и, если оно меньше или равно конечному значению b, выполняется серия команд. Параметру присваивается значение предыдущего, увеличенного на величину h – шага изменения параметра и вновь сравнивается с конечным значением b.

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

Если между begin и end находится только один оператор, то операторные скобки можно не писать. Это правило работает для цикла типа «Пока» и «Для».

Рассмотрим пример решения задач с использованием данных структур

Пример.

Вычислить произведение чисел от 1 до 5 используя различные варианты цикла

Математическая модель:

Р= 1· 2· 3· 4· 5=120

Составим алгоритм в виде блок-схемы.

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

ШагОперацияРiПроверка условия
1P:=11
2i:=1;11
3i<=5

P:=P*I

i:=i+1

111<=5, да (истина)
4i<=5

P:=P*I

i:=i+1

222<=5, да (истина)
5i<=5

P:=P*I

i:=i+1

633<=5, да (истина)
6i<=5

P:=P*I

i:=i+1

2444<=5, да (истина)
7i<=5

P:=P*I

i:=i+1

12055<=5, да (истина)
8i<=5

P:=P*I

i:=i+1

6<=5, нет (ложь)

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

Шаг первый: Р присваивается значение один.

Шаг второй: i присваивается значение один.

Шаг третий: при i равном единице проверяем условие один меньше или равен пяти, да, условие истинно, значит Р присваивается значение один умноженное на один, будет два. Для i: один плюс один, будет два.

Шаг четвертый: при i равном двум проверяем условие два меньше или равен пяти, да, условие истинно, значит Р присваивается значение 2 умноженное на один, будет 2. Для i: два плюс один, будет три.

Шаг пятый: при i равном трем проверяем условие три меньше или равен пяти, да, условие истинно, значит Р присваивается значение два умноженное на три, будет шесть. Для i: три плюс один, будет четыре.

Шаг шестой: при i равном четырем проверяем условие четыре меньше или равен пяти, да, условие истинно, значит Р присваивается значение шесть умноженное на четыре, будет двадцать четыре. Для i: четыре плюс один, будет пять.

Шаг седьмой: при i равном пяти проверяем условие пять меньше или равен пяти, да ,условие истинно, значит Р присваивается значение двадцать четыре умноженное на пять, будет сто двадцать. Для i: пять плюс один, будет шесть.

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

Program Pr1;

Var i: integer;

Begin

P:=1;

i:=1;

While i<=5 do

begin

P:=P*i;

i:=i+1;

end;

Write (‘P=’, P);

end.

Для цикла с постусловием построим блок-схему и трассировочную таблицу. (слайд16)

В результате получаем последнее значение равное сто двадцати на седьмом шаге

И для Цикла с параметром построим блок-схему и трассировочную таблицу. (слайд17)

В результате получаем последнее значение равное сто двадцати на шестом шаге

Задача:

Вывести на экран числа от 1 до 5 в:

  1. прямом порядке;
  2. обратном порядке.

Математическая модель:

  1. 1 2 3 4 5;
  2. 5 4 3 2 1.

Блок-схема и программа решения задачи представлена для чисел в прямом порядке и обратном порядке.

(слайд 21)

Запишем рассмотренные алгоритмы на языке программирования Паскаль.

(слайд 22)

III. Подведение итогов урока

И так мы рассмотрели следующие вопросы:

  1. Алгоритмическая структура цикл;
  2. Виды алгоритмических структур:
    1. Цикл с предусловием;
    2. Цикл с послеусловием;
    3. Цикл с параметром;
  3. Рассмотрели способы записи данных структур;
  4. Разобрали примеры решения задач с помощью этих структур.

Источник

Читайте также:  Схема клеточного цикла митоза