Пример цикла с параметром из жизни блок схема
Цикл с параметром был уже рассмотрен нами в разделе “Алгоритм” в теме “Виды алгоритмов”.
Цикл с параметром используется, когда заранее известно сколько раз должен выполниться цикл.
Формат записи цикла:
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. |
Задачи
- Даны 10 чисел, вывести те из них, которые являются полными квадратами. Составить блок-схему и программу.
- Даны 10 чисел, найти их произведение. Составить блок-схему и программу.
- Даны 10 чисел, найти сумму четных. Составить блок-схему и программу.
- Даны 10 чисел, найти количество отрицательных. Составить блок-схему и программу.
- Даны n действительных чисел. Найти максимум и минимум. Составить блок-схему и программу.
- Даны n действительных чисел. Найти среднее арифметическое всех элементов. Составить блок-схему и программу.
- Даны n действительных чисел. Найти среднее арифметическое отрицательных и положительных элементов. Составить блок-схему и программу.
- Даны n натуральных чисел. Найти сумму и произведение элементов, кратных 3 и 5. Составить блок-схему и программу.
- Даны n натуральных чисел. Вывести те числа, значения которых являются степенями двойки (1, 2, 4, 8, 16, …). Составить блок-схему и программу.
- Даны n натуральных чисел. Вывести те числа, значения которых находятся в отрезке [a, b]. Составить блок-схему и программу.
- Даны n натуральных чисел. Вывести на экран те числа, значения которых являются квадратами какого-либо числа.Составить блок-схему и программу.
- Дано натуральное число n. Найти n2. Составить блок-схему и программу.
- Даны натуральные числа a, n. Найти an. Составить блок-схему и программу.
- Дано натуральное число 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!+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.
Алгоритм действий:
- Создать двумерный массив.
- Проверить каждое число на соответствие условиям:
a) если 9 < Х < 100, то разделить его нацело на 10 посредством div;
b) выделить вторую цифру числа посредством деления через mod;
c) сложить выделенные цифры;
d) поделить посредством mod заданную сумму на 2;
e) если результат будет равен 0, то счетчик увеличивается на 1.
Задача 2
Дан одномерный массив целочисленных элементов. Найти количество положительных чисел.
Алгоритм действий:
- Создать массив целочисленных элементов, созданных посредством randomize.
- В цикл с параметром вложить условный оператор IF, который будет проверять заданный элемент на соответствие условию: Х>0.
- Если условие выполняется, то счетчик увеличивается на 1.
- После цикла следует вывести на экран получившееся значение счетчика.
Данные, указанные в скобках {}, являются комментариями. В строке 11 можно вывести массив на экран двумя способами: оставить пробел между числами либо отвести под каждый элемент определенное количество ячеек (в данном случае их 5).
В строке 12 переменную counter можно увеличить также двумя способами: либо к предыдущему значению прибавить 1, либо воспользоваться стандартной функцией Inc.
Задача 3
Дана квадратная матрица. Найти количество положительных элементов, находящихся на главной диагонали.
Пояснения:
В массиве чисел главная диагональ тянется из верхнего левого угла в правый нижний. Особенностью ее является тот факт, что индексы строки и столбца совпадают. Поэтому достаточно организовать 1 цикл для перехода по строкам без перебора остальных элементов.
Алгоритм действий:
- Создать квадратную матрицу.
- Присвоить переменной, ответственной за подсчет положительных элементов, значение «0».
- Составить цикл по созданию квадратной матрицы.
- Организовать цикл по проверке условия: если число на главной диагонали >0, тогда счетчик увеличивается на 1.
- После окончания действия цикла на экран вывести значение переменной, хранящей количество положительных элементов.
Противостояние двух языков программирования: С и Turbo Pascal
Как правило, уважающий себя программист знает несколько языков. К примеру, это могут быть С++, Turbo Pascal, Delphi, Java и т. д. Противостояние двух из них было ярко выражено еще в 80-е гг. (С и турбо паскаль). В конце ХХ века такая же борьба наблюдалась между Си++ и Java.
В виртуальном пространстве среди трех десятков языков программирования можно выделить три самые яркие пары, противостояние которых поражало величайшие умы киберпространства: алгол-60 и фортран, Pascal и C, Java и С++. Конечно, эти ощущения субъективные, но в тот или иной период один из пары был лидером. Это объяснялось требованиями промышленности и необходимости в том или ином программном продукте. В 70-х гг. «управлял миром» фортран, в 80-х – Turbo Pascal, в 90-х – С++. Конечно, ни один из них не «умер». Скорее, они преобразовались в усовершенствованные программные продукты.
При изучении языков программирования можно заметить, что в некоторых темах синтаксис схож. Так, циклы с параметром в C аналогичны подобным конструкциям в Pascal, за исключением некоторых моментов.
Интересно, что разработчики Turbo Pascal (Старый Свет) пользовались результатами наработок американских ученых, в то время как в Новом Свете активно применяли итоги исследований европейских специалистов. В Европе разработчики ратуют в большей степени за чистоту и компактность языков программирования, а американские умы склоняются больше к использованию новомодных веяний в написании кода.
Источник
ПЛАН-КОНСЕКТ УРОКА
ПО ИНФОРМАТИКЕ И ИКТ
В 10 КЛАССЕ ПО ТЕМЕ:
«Циклические алгоритмы. Циклы с параметром».
Предмет: Информатика и ИКТ
Тема урока: «Циклические алгоритмы. Циклы с параметром»
Тип урока: Изучение нового материала
Форма: урок-практикум
Цели урока
образовательные: Познакомиться с понятием «Циклы с параметром». Закрепить знания учеников об алгоритме.
развивающие: Воспитать трудолюбие, самостоятельность, культуру речи и общения.
воспитательные: Развивать мышление, память, речь и другие психические процессы.
Познавательные УУД: формируют и развивают компетентность в области использования ИКТ
(ИКТ-компетенции).
Регулятивные УУД: умеют соотносить свои действия с планируемыми результатами.
Коммуникативные УУД: умеют работать индивидуально и в группе.
Личностные УУД: понимают значимость подготовки в области информатики и ИКТ в условиях
развития информационного общества.
Средства обучения: проектор, персональный компьютер, специализированное программное обеспечение (среда программирования «PascalABC»).
Ход урока
1. Организация начала урока
Здравствуйте. Сегодня я, буду вести уроки «Информатики и ИКТ». Приветствую обучающихся, проверяю их готовность к уроку. Обучающиеся приветствуют друг друга.
2. Проверка выполнения домашнего задания
Спрашиваю у них пройденный материал.
1. Что такое циклический алгоритм?
Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.
2. Что такое цикл?
Цикл – форма организации действий, при которой одна и та же последовательность действий совершается несколько раз до тех пор, пока выполняется какое – либо условие.
3. Какую конструкцию имеет цикл с предусловием и цикл с постусловием?
Цикл с предусловием “Пока”
(While … do)
Цикл с постусловием “До”
(Repeat … until)
4. В чем отличие цикла с постусловием от цикла с предусловием?
Отличие:
Есть небольшое отличие в организации цикла repeat по сравнению с while: для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin … end. Зарезервированные слова repeat и until действуют как операторные скобки.
Конструкция repeat … until работает аналогично циклу while. Различие заключается в том, что цикл while проверяет условие до выполнения действий, в то время как repeat проверяет условие после выполнения действий. Это гарантирует хотя бы одно выполнение действий до завершения цикла.
3. Изучение нового материала
Тема наших уроков будет: «Циклические алгоритмы. Цикл с параметром».
Иногда заранее известно, сколько раз должен выполняться цикл. Для задач такого типа в языке Паскаль имеются операторы циклов с параметрами.
Блок-схема цикла с параметром выглядит так:
Формат записи таких операторов следующий:
Если операторов несколько, тогда, используются операторные скобки begin … end
При выполнении оператора for вначале вычисляется выражение <нач .знач.> и осуществляется присваивание его значения переменной цикла <пар .цикла> := <нач. знач.>.
После этого циклически повторяются:
1) проверка условия <пар .цикла> <кон. знач.>; если условие не выполнено, оператор for завершает работу;
2) выполнение оператора <оператор> или операторов s1; s2; s3; … sn, как в случае третьем;
3) переменная цикла <пар. цикла> увеличивается на единицу.
Графическое изображение циклов for будет таким:
Существует другая форма оператора цикла for:
for <пар .цик.> := <нач. зн.> downto <кон. зн.> do <оператор>.
Замена зарезервированного слова to на downto означает, что шаг параметра цикла равен (-1).
Изменение значения параметра идет от большего значения к меньшему, т. е.
<нач. знач.> <кон. знач.>.
Теперь рассмотрим задачу:
Вывести на экран числа от 1 до 5 в:
a) прямом порядке;
b) обратном порядке.
Математическая модель:
a) 1 2 3 4 5
b) 5 4 3 2 1
Решение данной задачи выглядит так:
Сядьте все теперь за АРМ и давайте вы самостоятельно решите такую задачу:
Так, с цифрами все разобрались, а давайте теперь разберемся с буквенными значениями. Решите самостоятельно такую задачу:
Даю подсказку! Буквам присваивается значение переменной char.
А теперь давайте попробуем решить следующею задачу с использованием циклов с постусловием, предусловием и цикла с параметром!
4. Подведение итогов
Вам понравился урок?
Выставление оценок и озвучивание их ученикам.
Спасибо за участие и активную деятельность. До новых встреч.
5. Домашнее задание
Домашнее задание будет задано учителем.
Источник