Дата ___________ Класс ___________
Тема: «Циклические алгоритмы»
Цель: Дать понятия циклических алгоритмов а также научить учащихся составлять циклические алгоритмы на языке Паскаль, используя операторы While, Repeat, For.
Задачи:
-
Закрепить знания полученные на прошлых занятиях с операторами ветвления;
-
развитие умений использовать различные операторы цикла для решения задач;
-
развитие умений учащихся в выборе оптимального решения для задач циклической структуры.
Тип занятия: комбинированный
Методы обучения: объяснительно-иллюстративный, исследовательский, практический.
Оборудование и программное обеспечение:
-
интерактивная презентация по теме «Программирование циклических алгоритмов»;
-
компьютеры с инсталлированным на них пакетом Pascal ABC;
-
проектор и экран для демонстрации лекции;
-
дидактический раздаточный материал.
План урока:
-
Организационный момент.
-
Повторение ранее изученного материала.
-
Объяснение задания для учащихся.
-
Закрепление знаний.(Решение задач.)
-
Подведение итогов урока.
-
Домашнее задание
Ход занятия:
-
Организационный момент (проверка присутствующих, проверка готовности к работе)
-
Повторение ранее изученного материала
Вы уже знаете, что алгоритмы любой степени сложности состоят из трёх базовых типов алгоритмических конструкций. Назовите, пожалуйста, эти конструкции? Ответ:(следование, ветвление и цикл).
Вы умеете записывать линейные и разветвляющиеся алгоритмы на языке Паскаль. На этом уроке нам предстоит познакомиться с операторами для организации циклов. Но прежде чем мы начнём с ними знакомиться, давайте вспомним некоторые определения и понятия связанные с циклами.
Основные понятия:
-
алгоритмическая структура Цикл представляет собой последовательность команд, выполняемых многократно
-
циклические алгоритмы могут быть организованы в нескольких вариантах:
-
цикл со счётчиком (с параметром)
-
цикл с условием (предусловием и постусловием)
-
При разработке алгоритмов циклической структуры выделяют следующие понятия:
-
параметр (переменная цикла) – величина, с изменением значения которой связано многократное выполнение цикла
-
начальное и конечное значения параметра цикла
-
шаг параметра цикла — значение, на которое изменяется параметр цикла при каждом повторении
-
тело цикла – команды, выполняемые в цикле
З
(Цикл с предусловием)
(Цикл с постусловием)
(Цикл со счётчиком)
адание 1: Назовите разновидность цикла представленного в виде блок-схемы
Предусловие Цикл с параметром Цикл с постусловием
ЗНЗПЦ – задание начального значения параметра цикла
ЗИПЦ – закон изменения параметра цикла
Материал для работы с учащимися:
Запишите, пожалуйста, тему нашего сегодняшнего урока «Составление программ. Программирование циклических алгоритмов»
В языке программирования Pascal каждому виду циклов соответствует свой оператор.
Цикл с предусловием
Формат оператора:
while условие do оператор;
где условие – логическое выражение, управляющее числом повторений – вычисляется перед каждой итерацией.
Выполнение оператора while заключается в следующем: проверяется условие, — если оно выполняется (значение его – TRUE), то выполняется оператор (тело цикла), записанный после слова do, — если же условие не выполняется (значение его – FALSE), происходит выход из цикла. Процесс повторяется до тех пор, пока условие не станет ложным. Здесь в качестве условия записывается условие продолжения цикла
Цикл с постусловием
Формат оператора:
repeat
оператор1;
оператор2;
…..
операторN;
until условие;
где условие – логическое выражение, управляющее числом повторений; оператор1,…операторN – операторы записанные между служебными словами repeat и until . Эти операторы составляют тело цикла. Выполнение оператора REPEAT заключается в следующем: тело цикла выполняется, затем проверяется условие. Если условие не выполняется (значение его – FALSE), снова выполняется тело цикла, затем снова проверяется условие… Процесс повторяется до тех пор, пока условие не станет истинным (пока значение его не будет равно TRUE).
Здесь в качестве условия записывается условие выхода из цикла.
Цикл со счетчиком
Цикл с увеличением счетчика
Формат оператора:
for Счетчик НачальноеЗначение to КонечноеЗначение do Оператор;
Цикл с уменьшением счетчика
Формат оператора:
for Счетчик НачальноеЗначение downto КонечноеЗначение do Оператор;
Переменная, стоящая после for в операторе цикла, называется счетчиком, параметром или [управляющей] переменной цикла. Счетчик цикла – переменная порядкового типа; начальное и конечное значения счетчика, в общем случае, — выражения того же типа, что и тип счетчика. Оператор, стоящий после слова do, — тело цикла — может быть составным.
Мы познакомились с операторами языка программирования Turbo Pascal для записи циклических алгоритмов. Воспользуемся этими операторами для решения следующей задачи:
Получить таблицу температур по Цельсию от 0 до 100 градусов и их эквивалентов по шкале Фаренгейта, используя для перевода формулу .
Запишем сначала решение данной задачи, воспользовавшись «циклом с предусловием»
Program prim1;
Var Tc:integer; {температура по Цельсию тип целый}
Tf:real; {температура по Фаренгейту тип действительный}
Begin
Tc:=0;
While Tc
Begin
Tf:=9/5*Tc+32;
Writeln(Tc,Tf); Тело Цикла
Tc:=Tc+1;
End;
End.
Запишем эту же задачу, используя «цикл со счётчиком»
Program prim2;
Var Tc:integer; {температура по Цельсию тип целый}
Tf:real; {температура по Фаренгейту тип действительный}
Begin
For Tc:=0 to 100 do
Begin
Tf:=9/5*Tc+32;
Writeln(Tc,Tf);
Tc:=Tc+1;
End;
End.
А теперь посмотрим, как наша задача решается с помощью конструкции «цикл с постусловием»
Program prim3;
Var Tc:integer; {температура по Цельсию тип целый}
Tf:real; {температура по Фаренгейту тип действительный}
Begin
Tc:=0;
Repeat
Tf:=9/5*Tc+32;
Writeln(Tc,Tf); Тело Цикла
Tc:=Tc+1;
Until Tc100 условие должно быть ложным
End.
Вы обратили внимание, что одну и ту же задачу мы записали при помощи трёх различных операторов.
Какие выводы вы можете сделать? (Можно использовать любой оператор цикла. Есть ограничения в использовании цикла For (шаг изменения параметра цикла должен быть 1 или -1. Если не известно сколько раз будет выполняться цикл, то используем While или Repeat)
-
Закрепление знаний.
Для закрепления материала решим следующую задачу:
Получить таблицу перевода расстояния из дюймов в сантиметры для значений
длин от 1 до 50 дюймов. (1дюйм=2,54см)
Какой тип цикла оптимален для решения данной задачи? (Ответ: цикл с параметром)
Давайте нарисуем на доске блок-схему решения этой задачи с использованием структуры цикла с параметром (со счётчиком).
Запишем программу:
Program prim1;
Var d: integer;
s:real;
begin
for d:=1 to 50 do
begin
s:=d*2.54;
writeln(d:4,s:5:2);
end;
end.
Для приведенной задачи определим, какие операторы образуют тело цикла, какая переменная является управляющей переменной цикла. Заполним таблицу:
Управляющая переменная цикла |
Начальное значение |
Конечное значение |
Шаг изменения |
Количество повторений цикла |
d
|
1 |
20 |
1 |
20 |
Самостоятельная работа:
Переделать программу, используя другой вариант цикла (с предварительным или последующим условием). Задание выполняется на компьютерах в среде программирования Turbo Pascal (если времени недостаточно можно выполнить задание без применения компьютера).
Отчёт должен содержать:
-
Блок-схему алгоритма решения задачи;
-
Текст программы;
-
Результаты работы программы. (если задание выполняется на компьютере)
Пример: Напечатать все буквы латинского алфавита.
Так как буквы латинского алфавита упорядочены, то можно составить программу, где используется цикл с параметрами символьного типа:
PROGRAM Alfavit;
Var sim:char;
BEGIN
writeln(‘Латинский алфавит’);
For sim:=‘A’ TO ‘Z’ DO
WRITE(‘ ‘,sim)
END.
Пример: Даны действительные числа. Вычислить их среднее арифметическое.
{ среднеарифметическое}
Program CA;
var i:integer; { параметр цикла}
n: integer; { количество чисел}
s :real; { вводимое число}
t: real; { среднее арифметическое}
begin
t:=0;
writeln(‘введите количество чисел’);
read(n);
for i:=1 to n do
begin
write(‘введите число ‘);
read(s);
t:=t+s;
end;
t:=t/n;
writeln(‘——————————————’);
writeln(‘среднее арифметическое=’, t:5:2);
end.
Пример: Вычислить объем каждого из нескольких шаров, а затем найти их суммарный объем. Известно, что радиус первого шара — R, радиус каждого последующего шара больше предыдущего на величину DR; радиус последнего шара — RK. Объем шара обозначим V, суммарный объем — VM. V=4/3*Pi*R3
Program Shar ;
const pi=3.14;
var
r,rk: real; (* радиус *);
v,vm: real; (* объём *);
dr:real; (* изменение радиуса *);
begin
writeln( ‘ введите начальное значение радиуса r : ‘ );
read(R);
writeln(‘ введите конечное значение радиуса rk : ‘ );
read(rk);
writeln( ‘ введите шаг изменения радиуса dr : ‘)
read(dr);
vm:=0;
while r
begin
v:=4*pi*r*r*r/3;
vm:=vm+v;
writeln(‘ r=‘ , r:6:2, ‘ ‘ :5, ‘ v=‘ , v:7:3);
r:=r+dr;
end;
Writeln (‘ **************************** ’);
Writeln(‘ общий объем VM=‘, VM:8:3)
end.
-
Подведение итогов
Сегодня на уроке мы создавали программы с операторами для записи циклов в языке программирования Паскаль. Применили полученные знания при решении задач. Выяснили, что подавляющее большинство задач с циклами можно решать разными способами, используя при этом один из трех операторов цикла. Часто решения, использующие различные операторы цикла, оказываются равноценными. В некоторых случаях все же предпочтительнее использовать какой-то один из операторов.
Завершите фразу:
• Сегодня я узнал…
• Я научился…
• У меня получилось …
• Было трудно…
-
Домашнее задание
-
Выучить форматы записи операторов WHILE, REPEAT…UNTIL, FOR и правила их использования.
-
Разработать алгоритм решения задачи в виде блок-схемы и написать программу на языке программирования Turbo Pascal. Решить задачу с использованием трёх различных типов циклов.
Задача: В чайник налили воду при температуре 20°С и поставили на газ. Каждую минуту вода нагревается на 10°С. Через какое время вода закипит.