Циклический алгоритм икт паскаль пример. Циклические алгоритмы Виды циклов и циклические команды на Паскале. Выбор цикла зависит от особенностей условия задачи. Только практика подскажет Вам оптимальное решение


Типы циклов

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

циклы с предусловием

цикл while с предусловием

цикл repeat - until с постусловием


Цикл с предусловием в Паскале - WHILE

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

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


Структура цикла WHILE


Блок – схема цикла WHILE

оператор

условие


Пример

Задача: Написать программу, которая вычисляет сумму всех четных чисел до 50.

writeln ("Сумма равна: ",sum);


Задача

Написать программу, которая ищет n!.


Цикл с постусловием в Паскале – REPEAT-UNTIL

Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после выполнения тела (действий) цикла. Это обеспечивает его выполнение хотя бы один раз в отличие от ранее разобранных циклов.

Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, то есть можно выполнять несколько действий, поэтому служебные слова Begin и End не нужны.


Структура цикла

REPEAT-UNTIL


Блок – схема цикла REPEAT-UNTIL

оператор

условие


Пример

Задача: Написать программу, которая определяет сумму первой и последней цифр в числе.

a,b,c,d:integer;

writeln("введите число");

writeln(‘Сумма первой и последней цифры равна:‘c);


Задача

Написать программу, которая определяет является ли число простым.


Цикл с параметром в Паскале - FOR

Цикл FOR задаёт условие по которому программа будет работать до его выполнения, допустим нужно n раз зациклить программу, то это легко сделать с помощью данного цикла.

У цикла FOR есть характерная черта - счетчик который обычно обозначается буквой i или j.

В цикле счетчик можно задавать как в прямом (служебное слово to ), так и в обратном порядке (служебное слово downto ).


Структура цикла FOR

FOR i:= n1 TO n2 DO

1 – ая форма записи

FOR i:= n2 DOWNTO n1 DO

2 – ая форма записи


Блок – схема цикла FOR

i:= n1 … n2

Тело цикла


Пример

Задача: Написать программу, которая вычисляет n-ую степень заданного числа.

a, n, i, pr: integer;

writeln (‘Введите число");

writeln (‘Введите степень числа");

for i:= 1 to n do

writeln (‘Степень числа равна’,pr);


Задача

Написать программу, которая находит число P = (1-1/2)(1-1/3)*…*(1-1/n).

N вводится с клавиатуры.







Цикл с предусловием Если число повторений заранее неизвестно, а задано лишь условием, и действие, которое необходимо выполнить только после проверки условия используют цикл в предусловием. В качестве условия используется логическое выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла происходит проверка условия, если результат «истина», то тело цикла выполняется еще раз, если «ложь», то происходит выход из цикла. На блок - схемеВ Pascal begin end; Условие Тело цикла Нет Практика Начало цикла Конец цикла ДА While do


Цикл с постусловием Если число повторений заранее неизвестно, а задано лишь условием, и действие, которое необходимо выполнить до проверки условия используют цикл с постусловием. В качестве условия используется логическое выражение, тело цикла – простой или составной оператор. После каждого выполнением тела цикла происходит проверка условия, если результат «ложь», то тело цикла выполняется еще раз, если «истина», то происходит выход из цикла. На блок - схемеВ Pascal Repeat Условие Тело цикла Да Нет Практика Until ;


Цикл с параметром В случаях, когда число повторений заранее известно применяется цикл в параметром. Переменная, задающая число повторений, называется параметром цикла, либо управляющей переменной. После каждого выполнения тела цикла управляющая переменная увеличивается либо уменьшается, цикл выполняется до тех пора пока она не превысит либо станет меньше ограничения. На блок - схемеВ Pascal Х – управляющая переменная (параметр цикла) А – начальное значение Х, В – конечное Х С – шаг изменения Х В качестве шага можно использовать только: «to» = 1; «downto» = -1 X:=A,В,C Тело цикла Практика For X:=A to B do Begin End;


Пример задачи с использованием цикла с предусловием Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н BHBH X:=1 X:=X*3 конец Х Ввод заданной степени Начальные значения «В» счетчик степени В=В+1 Умножение на 3 Увеличение счетчика Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; B:=1; While B


H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн" title="Пример задачи с использованием цикла с постусловием Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н B>=H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн" class="link_thumb"> 8 Пример задачи с использованием цикла с постусловием Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н B>=H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные значения «В» счетчик степени В=В+1 Умножение на 3 Увеличение счетчика Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; B:=0; Repeat X:=X*3; B:=B+1; Until B>=H; Writeln (Результат,X); End. Нет Да Теория Pascal Блок-Схема Пояснения B:=0 =H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн"> =H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные значения «В» счетчик степени В=В+1 Умножение на 3 Увеличение счетчика Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; B:=0; Repeat X:=X*3; B:=B+1; Until B>=H; Writeln (Результат,X); End. Нет Да Теория Pascal Блок-Схема Пояснения B:=0"> =H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн" title="Пример задачи с использованием цикла с постусловием Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н B>=H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн"> title="Пример задачи с использованием цикла с постусловием Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н B>=H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн">


Пример задачи с использованием цикла с параметром Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н X:=1 X:=X*3 конец Х Ввод заданной степени Начальное значение Х=1 Параметры от 1 до Н Умножение на 3 Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; For B:=1 to H do Begin X:=X*3; End; Writeln (Результат,X); End. B:=1,H,1 Теория Pascal Блок-Схема Пояснения




Задача: Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней. Входные переменные: Выходные переменные: S – общий путь d – количество дней Sd – расстояние за текущий день


Конец Вопросы для контроля: 1.Каким оператором в Pascal задается цикл с предусловием 2.Как в цикле в параметром указывать шаг «1» и «-1» 3.По какой ветке происходит выход из цикла с постусловием 4.Есть ли в цикле с параметром условия 5.Что может быть телом цикла 6.Когда используется цикл с параметрами

Слайд 2

План

Понятие цикла Оператор цикла For Цикл While Цикл Repeat Литература

Слайд 3

Литература

Касторнов А.Ф., Евстратова Г.А. Язык программирования Паскаль: учебное пособие для вузов. - Череповец: ГОУ ВПО ЧГУ, 2010. - 117 c. - Библиогр.: С.114. Электронный учебник по языку программирования Паскаль /http://pascal.guti.ru План

Слайд 4

Понятие цикла

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

Слайд 5

Алгоритм, в котором есть группа операторов, выполняемая несколько раз, называется циклическим. Группа повторяемых операторов называется телом цикла. В Паскале циклы могут быть реализованы при помощи операторов циклов For, While и Repeat. План

Слайд 6

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

Оператор цикла For используется в том случае, если тело цикла надо выполнить несколько раз, причем число повторов заранее известно.

Слайд 7

1-я форма записи оператора цикла For

1-я форма записи оператора For в общем виде выглядит следующим образом: ForСчетчик:=Начальное_значениеtoКонечное_значениеdoОператор; Где For, to, do – служебные слова. Счетчик – это переменная порядкового типа (обычно типа Integer), которая определяет число повторов цикла. Число повторов считается по формуле: Конечное_значение–Начальное_значение+1. Конечное_значение должно быть больше или равно Начальному_значению.

Слайд 8

Если тело цикла состоит из нескольких операторов, то 1-я форма записи оператора For выглядит так: ForСчетчик:=Начальное_значениеtoКонечное_значениеdo Begin {Тело цикла} End;

Слайд 9

Рассмотрим алгоритм работы цикла For в первой форме записи. Счетчику присваивается Начальное_ значение. Проверяется условие: Значение счетчика больше Конечного_значения? Если условие истинно (Да), выполнение цикла заканчивается. Если условие ложно (Нет), то выполняется тело цикла, затем значение счетчика увеличивается на единицу и снова выполняется проверка условия, т.е. п.2.

Слайд 10

2-я форма записи оператора цикла For

2-я форма записи оператора For в общем виде выглядит следующим образом: For Счетчик:=Начальное_значениеdowntoКонечное_значениеdoОператор; Где: For, downto, do – служебные слова. Счетчик– это переменная порядкового типа (обычно типа Integer), которая определяет число повторов цикла. Число повторов считается по формуле: Начальное_значение–Конечное_значение+1. Начальное_значениедолжно быть больше или равноКонечному_значению.

Слайд 11

Если тело цикла состоит из нескольких операторов, то 2-я форма записи оператора For выглядит так: ForСчетчик:=Начальное_значениеdowntoКонечное_значениеdo Begin //Тело цикла End;

Слайд 12

Рассмотрим алгоритм работы цикла For во второй форме записи: Счетчику присваивается Начальное_ значение. Проверяется условие: Значение счетчика меньше Конечного_значения? Если условие истинно (Да), выполнение цикла заканчивается. Если условие ложно (Нет), то выполняется тело цикла, затем значение счетчика уменьшается на единицу и снова выполняется проверка условия, т.е. п.2.

Слайд 13

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

programEx1; var i, n:integer; {i – счетчик, n – необходимое количество звездочек} s:string;{s – формируемая строка звездочек} begin Writeln("Введите количество звездочек"); {запрашивается количество звездочек} Readln(n); {пользователь вводит количество звездочек n} s:=""; {формирование строки звездочек начинается с пустой строки} {Строка формируется по циклу For. Начальное_значениесчетчика – 1, Конечное_значение– необходимое количество звездочек n.} fori:= 1 to n do s:=s+"*"; {на каждом шаге цикла к строке приклеивается одна звездочка} Writeln(s);{выводится строка} Readln; end. План Пример:Программа формирует строку звездочек. Количество звездочек в строке определяется пользователем.

Слайд 14

Цикл While

Цикл While используется в том случае, если число повторений тела цикла во время разработки программы неизвестно и может быть определено только во время ее работы. В общем виде оператор While записывается следующим образом: While Условие doОператор; Где While, do – служебные слова. Условие – выражение логического типа, определяющее продолжение цикла.

Слайд 15

Если тело цикла состоит из нескольких операторов, то цикл While записывается следующим образом: WhileУсловие do Begin //Тело цикла End;

Слайд 16

Рассмотрим алгоритм работы цикла While: Проверяется условие. Если условие истинно, то выполняется тело цикла. После чего снова проверяется условие. Если условие ложно, то цикл завершается.

Слайд 17

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

Слайд 18

Program Ex2; varAccount: Real; {размер счета} Month: Integer; {количество месяцев, прошедших с момента открытия счета} begin Account:=1000; {на счет положили 1000 рублей} Month:=0; {счет только что открыт} whileAccount

Слайд 19

Цикл Repeat

Цикл Repeat, как и цикл While, используется в программе в том случае, если необходимо выполнить тело цикла несколько раз, но число повторений заранее неизвестно. В общем виде цикл Repeat записывается следующим образом: Repeat //Тело цикла Until Условие; Где Repeat, Until – служебные слова. Условие – выражение логического типа, определяющее окончание цикла.

Слайд 20

Рассмотрим алгоритм работы цикла Repeat: Выполняется находящееся между зарезервированными словами Repeat и Until тело цикла. Проверяется условие. Если условие истинно, цикл завершается. Если условие ложно, снова выполняется тело цикла.

Слайд 21

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

Слайд 22

Program Ex3; var Time:integer; {время деления} Cells: integer;{количество клеток} begin Time:=0;{клетка еще не начала деление} Cells:=1;{клетка одна} Repeat Time:=Time+3;{через следующие три часа} Cells:=Cells*2;{количество клеток увеличилось в 2 раза} Until Cells>24; {до истинности условия «количество клеток больше 24»} Writeln(Time);{вывод результата} Readln; end. План Пример: Одноклеточная амёба каждые 3 часа делится на 2 клетки. Определите, через какое количество часов число клеток превысит 24.

Посмотреть все слайды























Назад Вперёд

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

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

Ход урока

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i – параметр цикла;
a – начальное значение цикла;
b – конечное значение цикла;
h – шаг изменения параметра.

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

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

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

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

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

Пример.

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

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

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

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

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

Шаг Операция Р i Проверка условия
1 P:=1 1
2 i:=1; 1 1
3 i<=5
P:=P*I
i:=i+1
1 1 1<=5, да (истина)
4 i<=5
P:=P*I
i:=i+1
2 2 2<=5, да (истина)
5 i<=5
P:=P*I
i:=i+1
6 3 3<=5, да (истина)
6 i<=5
P:=P*I
i:=i+1
24 4 4<=5, да (истина)
7 i<=5
P:=P*I
i:=i+1
120 5 5<=5, да (истина)
8 i<=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. Разобрали примеры решения задач с помощью этих структур.