Просмотр содержимого документа
«Конспект урока по теме "Циклы в Паскале"»
Конспект урока
«Программирование циклов»
Цели:
Образовательные:
проверить уровень усвоения материала по теме: “Условный оператор”;
развивать наблюдательность, логическое мышление;
познакомить учащихся с применением циклов в языке Турбо Паскаль.
Воспитательные:
воспитание познавательной потребности, интереса к предмету.
План
Решение задачи на ветвление.
Изучение нового материала:
Цикл с предусловием.
Цикл с параметром.
Итог урока.
Домашнее задание.
Содержание урока.
I. Проверка домашнего задания
Орг. Момент. Приветствие.
Ребята, на прошлом уроке вы проходили ветвление на языке программирования. Давайте с вами решим задачу, которая называется “Сумма или квадрат”. Программа должна вычислить сумму двух вещественных чисел х и у, если х – положительное, иначе вычислить х2. В этой задаче, если х неположительное, у уже выводить не надо. К доске вызывается ученик
– Вот как выглядит программа:
program sum_or_square; var x, y: Real; begin
Readln (x); if x 0 then begin ReadLn (y); WriteLn (x + y) end; else WriteLn (x * x); end.
– Молодцы, решили задачу правильно. А сегодня мы с вами познакомимся с циклами.
II. Изучение нового материала
– Первой остановкой в нашем путешествии по стране Программирование, полной чудес, даже опасностей была Англия, Лондон, Бейкер-Стрит, дом знаменитого сыщика Шерлока Холмса. Там мы останавливались в поисках лжи и истины. Перенесемся из Англии конца XIX века на две тысячи лет назад – в Древнюю Грецию. Древняя Греция – страна великих ученых, поэтов и легендарных героев. Познакомимся с историей одного из них. “...Сизиф, сын бога повелителя всех ветров Эола, был основателем города Коринфа, который в древнейшие времена назывался Эфирой. Никто во всей Греции не мог равняться по коварству, хитрости и изворотливости ума с Сизифом. Сизиф благодаря своей хитрости собрал неисчислимые богатства у себя в Коринфе; далеко распространилась слава о его сокровищах. Когда пришел к нему бог смерти мрачный Танат, чтобы низвести его в печальное царство Аида, то Сизиф, еще раньше почувствовав приближение бога смерти, коварно обманул бога Таната и заковал его в оковы. Перестали тогда на земле умирать люди. Нигде не совершались большие пышные похороны; перестали приносить и жертвы богам подземного царства. Нарушился на земле порядок, заведенный Зевсом. Тогда громовержец Зевс послал к Сизифу могучего бога войны Ареса. Он освободил Таната из оков, а Танат исторг душу Сизифа и отвел ее в царство теней умерших.} Но и тут сумел помочь себе хитрый Сизиф. Он сказал жене своей, чтобы она не погребала его тела и не приносила жертвы подземным богам. Послушалась мужа жена Сизифа. Аид и Персефона долго ждали похоронных жертв. Всё нет их! Наконец приблизился к трону Аида Сизиф и сказал владыке царства умерших: – О, властитель душ умерших, великий Аид, равный могуществом Зевсу, отпусти меня на светлую землю. Я велю жене моей принести тебе богатые жертвы и вернусь обратно в царство теней. Так обманул Сизиф владыку Аида, и тот отпустил его на землю. Сизиф не вернулся, конечно, в царство Аида. Он остался в пышном дворце своем и весело пировал, радуясь, что один из всех смертных сумел вернуться из мрачного царства теней. Разгневался Аид, снова послал он Таната за душой Сизифа. Явился Танат во дворец хитрейшего из смертных и застал его за роскошным пиром. Исторг душу Сизифа ненавистный богам и людям бог смерти; навсегда отлетела теперь душа Сизифа в царство теней. Тяжкое наказание несет Сизиф в загробной жизни за все коварства, за все обманы, которые совершил он на земле. Он осужден вкатывать на высокую, крутую гору громадный камень. Напрягая все силы, трудится Сизиф. Пот градом струится с него от тяжкой работы. Все ближе вершина; еще усилие, и окончен будет труд Сизифа; но вырывается из рук его камень и с шумом катится вниз, поднимая облака пыли. Снова принимается Сизиф за работу. . Так вечно катит камень Сизиф и никогда не может достигнуть цели – вершины горы...”
– Ничего не скажешь – грустная история! Ведь Сизиф – в общем-то неплохой парень, во всяком случаев уме ему не откажешь! Нельзя ли помочь бедняге? Вот что интересно – дайте прочитать древний миф программисту, и он скажет: “Ничего страшного. Речь идет о выполнении бесконечного цикла. Я и сам иногда попадаю в такое же положение и нахожу из него выход!”
– Цикл является одной из важнейших алгоритмических структур и представляет собой последовательность операторов, которая выполняется неоднократно. В программах, связанных с обработкой данных или вычислениями, часто приходится выполнять циклически повторяющиеся действия. Циклы позволяют записать такие действия в компактной форме. Циклы принадлежат к числу управляющих операторов. Внимательный ученик мог заметить, что до сих пор мы использовали два вида операторов. Одни из них (Read, Write, оператор присваивания) только выполняли какие-либо действия, другие же управляли ходом выполнения программы (например, условный оператор). Последние и называются управляющими операторами. Давайте познакомимся с примерами использования циклов в программах на Паскале. Рассмотрим задачу на вычисление суммы большого числа слагаемых:
– Можно было бы выбрать простое решение и записать вычисление данной суммы в строчку, употребив 99 операций деления и 99 операций сложения. Ну а если число элементов суммы равно 1000 или просто любому целому числу? Представьте себе программу с оператором, который занимает несколько страниц и содержит 999 сложений! Очевидно, простое решение здесь уже не подходит. Можно заметить, что при вычислении суммы повторяются всего три операции, причем в определенном порядке:
1. Разделить единицу на знаменатель. 2. Прибавить частное к ранее полученной сумме. 3. Увеличить на 1 значение знаменателя.
– Следовательно, задачу можно решить, например, так:
1. Присвоить переменной Sum значение, равное 0 (Sum : = 0). 2. Присвоить переменной i значение, равное 1 (i:= 1). 3. Добавить к сумме значение 1 / i (Sum := Sum + 1 / i). 4. Увеличить i на 1 (i:= i + 1). 5. Повторить шаги 3 и 4.
– Повторив операции 3 и 4 99 раз, мы получим требуемую сумму. Это пример алгоритмической конструкции “цикл”.
– В языке программирования Паскаль имеется три разновидности цикла:
Цикл с предусловием (цикл “пока” – whi1е);
Цикл с постусловием (цикл “до тех пор, пока” repeat...unti1);
Цикл с параметром (со счетчиком) (цикл “для” – for ... to / downto);
– Каждая из трех разновидностей цикла имеет свои особенности, для каждой из них есть свой круг задач, наиболее естественно решаемых именно с ее помощью.
2.1. Цикл с предусловием
– Цикл с предусловием имеет следующий вид:
While условие do {эта часть называется заголовком цикла} оператор; {эта часть называется телом цикла}
Телом цикла может быть и группа операторов, заключенная в операторные скобки begin... end (то есть составной оператор). Цикл с предусловием выполняется до тех пор, пока истинно условие в заголовке цикла, причем оно проверяется вначале, потом исполняется оператор. Переменным, входящим в условие, должны быть присвоены определенные значения до входа в цикл. В теле цикла должны быть операторы, которые в какой-то момент изменят значение условия, сделав его ложным. Если этого не случится, цикл будет бесконечным. При возникновении в программе бесконечного цикла говорят, что программа “зациклилась”. Зациклившуюся программу приходится останавливать одновременным нажатием клавиш CtrL + Break, иначе она будет выполняться вечно (точнее, до первого отключения компьютера). Задача о вычислении суммы может быть решена с использованием цикла whilе... do следующим образом:
program summa1; const n = 100; {Так объявляется именованная константа программы}
var i : Integer; sum : Real;
begin sum := 0; i : = 1; {Присвоим переменной sum начальное значение 0, а i – начальное значение 1} while i n do begin sum := sum +1 / i;
i := i + 1 {Переменная i меняется внутри цикла, и ее величина определяет очередное повторение тела цикла}
end;
WriteLn (' сумма', n, ' элементов= ' sum:10:5) ; end.
– Цикл в этой программе работает следующим образом:
вначале i = 1, sum = 0;
условие i
значение суммы увеличивается на единицу: sum = 0 + 1;
i увеличивается на 1 i = 2;
условие i
значение суммы sum = 0 + 1 + 1 / 2, а переменной i = 3;
после выполнения данной последовательности действий необходимое число раз получаем: sum =...+ 1 / 100,i = 101;
условие i
– Отметим, что в данном решении использовалась константа. Константа может иметь имя, тогда она называется именованной константой. Объявляется именованная константа в предложении описания констант, которое размещается в разделе описаний программы и имеет вид:
const имя = значение;
– Использование именованных констант преследует две цели:
сделать программу более удобной для понимания. Если, допустим, в программе часто используется число 12, то иногда удобнее один раз дать ему имя, например dozen, а затем использовать это имя;
облегчить изменение программы. Если, скажем, нужно изменить количество элементов суммы, то лучше изменить одну строку в предложении описания констант, чем вносить исправления во всей программе.
2.2 Цикл с параметром (со счетчиком)
– Цикл со счетчиком имеет следующий вид:
For i := начальное_значение to конечное_значение do ... оператор;
– Здесь переменная i, называемая управляющей переменной цикла for (или его счетчиком), является произвольным идентификатором, который объявляется как переменная целого (чаще всего) типа. Она может быть также логической или символьной (о символьном типе речь пойдет дальше). Допускаются и некоторые другие типы, но этот случай мы рассматривать не будем. При выполнении оператора for сначала вычисляется значение выражения начальное_значение, затем вычисляется значение выражения конечное_значение, далее управляющая переменная цикла последовательно пробегает все значения от начального до конечного. В том случае, когда начальное значение оказывается больше конечного значения, тело цикла не будет выполняться вовсе. Начальное и конечное значения остаются неизменными в ходе выполнения всего цикла fог. Параметр цикла i, если он целого типа, пробегает все значения с приращением 1, и его текущее значение не должно изменяться операторами внутри цикла. Такое изменение не запрещено правилами языка, но его последствия будут непредсказуемы. После завершения цикла параметр i считается неопределенным.
В цикле:
for i := начальное_значение dоwntо конечное_значение do... оператор;
параметр цикла меняется от начального значения до конечного с шагом – 1.
– Программа вычисления суммы с использованием цикла со счетчиком дана далее в двух вариантах (ва риант с to и вариант с downto).
program summa3; const
n = 100;
vaг
i : Integeг; sum: Real;
begin sum := 0; for i := 1 to n do {При первом выполнении цикла i равняется 1, к sum добавляется 1, затем i = 2, к sum добавляется 1/2}
sum := sum + 1 / i; {Затем i = 3, к sum добавляется 1/3, и так продолжается до i = n} WгiteLn('cуммa ‘, n,' элементов = ', sum:10:5); end.
Второйвариант:
program summa4; const
n = 100;
vaг
i : Integeг; sum: Real;
begin sum := 0; foг i := n downto 1 do
sum := sum + 1 / i;
WriteLn (‘Сумма ’, n, ‘элементов = ’, sum:10:5); end.
– Самостоятельно разберите работу циклов for в обоих случаях.
– Какую разновидность цикла лучше выбрать в каждом конкретном случае?
Использовать цикл for в том случае, когда точно знаете, сколько раз должно быть выполнено тело цикла. В противном случае обратитесь к другим циклам.
Используйте цикл while, если необходимо, чтобы проверка была произведена прежде, чем будет выполняться тело цикла.
III. Итог урока
– Итак, мы познакомились с циклами, важнейшей составной частью большинства программ. Но как нам быть с героем древнегреческого мифа? Мы выяснили, что циклическое действие, которое он выполняет, будет конечным, если существует условие, при выполнении (или невыполнении) которого цикл должен завершиться. Ограничение может быть и по числу повторений цикла. От цикла, который выполняет Сизиф, немного пользы, ведь каждый раз он повторяет одно и то же действие. Цикл в программе при каждом новом повторении выполняет действие, которое хотя бы немного отличается о предыдущего. Так, сизиф мог бы, скажем, каждый раз вкатывать на гору камень меньшего размера, чем предыдущий. Условием окончания нелегкого сизифова труда было бы в этом случае выкатыванием на гору камня, например, весом в 1 грамм. Следовательно, помочь Сизифу можно, изменив алгоритм его работы, введя в него “правильный” цикл.
– Завершим мы тему “Циклы” решением задач на следующем уроке. В каждой задаче вначале нужно придумать алгоритм, а затем написать программу.
IV. Домашнее задание
– Подумайте над решением следующей задачи: дано натуральное число. Посчитать количество цифр в числе.