Тема: Реализация циклического алгоритма на Паскале.
Цели:
Образовательная: познакомиться с записью и выработать навыки использования операторов цикла на языке программирования Паскаль, научиться оформлять таблицы и проводить трассировку фрагментов программы.
Развивающая: развивать способность воспринимать, обрабатывать и обобщать информацию; развивать логическое, абстрактное мышление; развивать навыки самоконтроля и взаимоконтроля.
Воспитательная: воспитывать сознательное отношение и творческий подход к изучаемому предмету, четкость и организованность в труде, аккуратность, внимательность, бережное отношение к технике и к информации.
Методы обучения: словесные, проблемно-поисковые, наглядно-иллюстрационные, репродуктивные, методы самостоятельной работы.
Организационные формы: индивидуальная, групповая, фронтальная.
Оборудование: таблица, доска и фломастеры, мультипроектор, компьютеры, тесты.
Структура урока:
Оргмомент, постановка цели урока.
Подготовка к восприятию нового материала через повторение и актуализацию опорных знаний.
Активное изучение нового материала.
Осмысление и применение изученного на практике.
Подведение итогов урока.
Домашнее задание.
Тип урока: урок закрепления известных знаний, получения новых знаний, их осмысления, закрепления, отработки, практического применения для решения задач.
План урока:
1. Приветствие. Объявление темы и целей урока. (Постановка проблемы.)
2. Подготовка к восприятию нового материала:
Какие типы алгоритмов существуют (линейный, разветвляющийся, циклический);
Какие типы алгоритмов мы уже можем реализовать на Паскале (линейный, разветвляющийся);
Когда применяется циклический алгоритм (при повторении одних и тех же действий несколько раз);
Что такое тело цикла (действия внутри цикла, именно они повторяются при исполнении алгоритма);
Типы циклических алгоритмов (рассмотрены еще при изучении записи алгоритмов в виде блок-схем: со счетчиком, с предусловием, с постусловием).
В алгоритме, записанном ниже, используются целочисленные переменные k и m. Определите значение переменной k после выполнения данного алгоритма:
m:= -1;
k:=2*m-2;
m:=k+2;
k:=k*m+5; (13)
Определите значение переменной p после выполнения следующего фрагмента программы: (-61)
Паскаль | Алгоритмический язык |
m:=13; n:=21; n:=2*m-n; if m p:=m+n else p:= 4-m*n; | m:=13; n:=21; n:=2*m-n; если m то p:=m+n иначе p:= 4-m*n все |
Цель повторения: определить, что мы успели понять и усвоить за предыдущие уроки, и, соответственно, ликвидировать пробелы в знаниях; закрепить знания.
3. Новый материал – совместное изучение (на партах у учащихся таблица).
Таблицы выдаются детям (и остаются у них, подклеиваются в рабочие тетради):
Операторы цикла на Паскале
Цикл с параметром (со счетчиком) | Цикл с предусловием | Цикл с постусловием |
Оператор цикла с параметром применяют тогда, когда заранее известно число повторений одной и той же последовательности операторов Цикл с параметром по возрастающим значениям параметра For I: = А to В do тело цикла; Тело цикла – простой или составной оператор. Составной оператор – группа операторов между begin и end. I – переменная, порядкового типа (integer, char) Начальное (А) и конечное (В) значения параметра цикла могут быть представлены константами, переменными или арифметическими выражениями. Оператор цикла с параметром данного вида выполняется следующим образом- вычисляются значения выражений А и В. Если А последовательно принимает значения, равные А, А+1, …., В-1, В (шаг+1) и для каждого из этих значений выполняется . Если АВ, то не выполняется ни разу. Цикл с параметром по убывающим значениям параметра: For I:=А downto В do тело цикла; Параметр I меняет свое значение от А до В с шагом –1 (для целого типа), если А | Цикл с предусловием используется тогда, когда число повторений оператора цикла заранее не известно, а задается некоторое условие продолжения цикла. While do ; Выполнение оператора цикла с предусловием начинается с проверки условия, записанного после слова While. Если оно соблюдается, то выполняется , затем вновь проверяется условие и т. д. Как только при очередной проверке окажется, что условие не соблюдается, выполнятся не будет. Цикл выполняется пока условие истинно (верно), если условие сразу не верно – цикл не выполняется ни разу. Примечание: Если состоит из нескольких операторов, то они объединяются операторными скобками. В теле цикла обязательно должен быть оператор, влияющий на соблюдение условия, в противном случае произойдет зацикливание. | Для программной реализации циклических алгоритмов с неизвестным заранее числом повторений имеется ещё один оператор – оператор цикла с постусловием, который имеет следующий вид: Repeat ; ; ……………. n; Until ;{ до тех пор, пока не} Этот оператор отличается от цикла с предусловием тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает выполнение цикла хотя бы один раз. Данный оператор цикла предлагает наличие нескольких операторов в теле цикла, поэтому служебные слова Begin и End не нужны. Последовательность операторов, входящих в тело цикла, выполняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом Until. Если условие соблюдается, цикл завершается. В противном случае – тело цикла выполняется еще раз, после чего снова проверяется соблюдение условия. Цикл выполняется пока условие ложно. |
В ходе объяснения учитель приводит примеры решения задач на все виды циклов:
Пример 1
Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (0n
Вопросы для обсуждения
Каким образом можно выделить последнюю (младшую) цифру числа?
Каким действием можно выделить первую (старшую) цифру числа?
Обазначим через k очередное число, p1 – старшую цифру числа k, p2- младшую цифру числа k, s- сумма цифр числа k. Число k будем печатать только в том случае, когда сумма p1 и р2 будет равна s.
Решение
Program Example_9;
Var s, k, n, p1, p2: Integer;
Begin
Writeln (‘Введите целое число ’);
Readln (n);
For k:= 10 to 99 do
Begin
P1:= k div 10;
P2:= k mod 10;
S:= p1+p2;
If s=n Then writeln (k);
End;
Writeln (‘ нажмите ’);
Readln ;
End.
Трассировка примера
Рассмотрим выполнение программы в пошаговом режиме для n=2:
n | k | Р1 | Р2 | S | Условие s=n |
2 | 10 | 1 | 0 | 1 | Нет |
| 11 | 1 | 1 | 2 | Да |
| 12 | 1 | 2 | 3 | Нет |
| … | … | … | … | … |
| 99 | 9 | 9 | 18 | нет |
В результате работы программы на экране появится 2 числа:
11
20
Пример 2
Подсчитать количество цифр заданного натурального числа n.
Решение
Подсчет количества цифр начнем с последней цифры числа. На очередном шаге цикла увеличим счетчик цифр на единицу, а число уменьшим в 10 раз (тем самым мы избавляемся от последней цифры числа). Далее с получившимся числом проделаем ту же последовательность действий и т. д. пока число не станет равным нулю.
Program Example_13;
Var m, n, k: Longint; Begin
Writeln (‘введите натуральное число’);
Readln (n);
m:= n;
k:=0;
While m0 Do
Begin
Inc (k);
m := m div 10;
End;
writeln (‘В числе ’, n,’-‘,k,’цифр’);
Readln ;
End.
Трассировка примера
Рассмотрим выполнение программы в пошаговом режиме для числа 65387:
n | m | k |
65387 | 65387 | 0 |
65387 | 6538 | 1 |
65387 | 653 | 2 |
65387 | 65 | 3 |
65387 | 6 | 4 |
65387 | 0 | 5 |
В результате работы программы на экране появится предложение:
В числе 65387 – 5 цифр.
Пример 3.
Составьте программу планирования закупок в магазине на сумму, не превышающую заданную величину.
Решение
Обозначим через x и k цену и количество товара, через p- заданную предельную сумму, через s – стоимость покупки. Начальное значение общей стоимости покупки s равно нулю. Значение предельной суммы считывается с клавиатуры. Необходимо повторять запрос цены и количества выбранного товара, вычислять его стоимость, суммировать её с общей стоимостью и выводить результат на экран до тех пор, пока стоимость не превысит предельную сумму p.
Program Example_17;
Var x, k, p, s: integer; Begin
Writeln (‘Предельная сумма - ’);
Readln ( p);
s:=0;
Repeat
Writeln (‘Введите цену товара и его количество’);
Readln (x, k);
s:= s + x*k ;
writeln (‘Стоимость покупки равна ’,s);
Until s p;
Writeln (‘ Суммарная стоимость покупки превысила предельную сумму’);
Readln ;
End.
Трассировка примера
Рассмотрим выполнение программы в пошаговом режиме для суммы 100 рублей:
р | s | x | k | Условие sp |
100 | 0 | 16 | 2 | |
| 0+32=32 | | | 32100 нет |
| | 6 | 5 | |
| 32+30=62 | | | 62100 нет |
| | 25 | 2 | |
| 62+50=112 | | | 112100 да |
В результате работы программы на экране:
Введите цену товара и его количество 16 2
Стоимость покупки равна 32
Введите цену товара и его количество 6 5
Стоимость покупки равна 62
Введите цену товара и его количество 25 2
Стоимость покупки равна 112
Суммарная стоимость покупки превысила предельную сумму
4.Осмысление и применение изученного на практике.
Задание 1. Выполнить трассировку всех трех примеров для следующих значений:
Пример 1. n=5
Пример 2. n = 2543
Пример 3. S= 250 x=100 k= 3
Задание 2.
1) Сколько раз будет выполнено тело цикла в следующих фрагментах программ:
For k:= -1 to 1 do ….
For k:= 10 to 20 do…
For k:= 20 to 10 do …
2) Дана последовательность операторов:
a:= 1; b:=1;
While a+bDo
Begin a:=a+1; b:=b+2 End;
S:=a+b;
Сколько раз будет повторен цикл и какими будут значения переменных a, b и s
После завершения этой последовательности операторов?
3)Какое значение будет принимать переменная у после выполнения программы:
5.Подведение итогов урока.
– Итак, мы познакомились с циклами, важнейшей составной частью большинства программ. Завершим мы тему “Циклы” решением задач на следующем уроке.
6.Домашнее задание.
Выполнить по карточкам домашнюю самостоятельную работу в трёх вариантах :
Вариант 1
Составить программу, используя цикл с параметром:
Подсчитать сумму всех нечётных чисел от 230 до 430
Вариант2
Составить программу, используя цикл с предусловием:
Вычислить сумму цифр числа.
Вариант3
Напишите программу, используя цикл с постусловием для задачи:
Найти сумму цифр четырёхзначного числа.
РАЗДАТОЧНЫЙ МАТЕРИАЛ ПО ТЕМЕ «ЦИКЛЫ»
Повторение
Какие типы алгоритмов существуют?
Какие типы алгоритмов мы уже можем реализовать на Паскаль?
Когда применяется циклический алгоритм?
Что такое тело цикла?
Типы циклических алгоритмов.
В алгоритме, записанном ниже, используются целочисленные переменные k и m. Определите значение переменной k после выполнения данного алгоритма:
m:= -1;
k:=2*m-2;
m:=k+2;
k:=k*m+5; (13)
Определите значение переменной p после выполнения следующего фрагмента программы: (-61)
Паскаль | Алгоритмический язык |
m:=13; n:=21; n:=2*m-n; if m p:=m+n else p:= 4-m*n; | m:=13; n:=21; n:=2*m-n; если mn то p:=m+n иначе p:= 4-m*n все |
Закрепление
Задание 1. Выполнить трассировку всех трех примеров для следующих значений:
Пример 1. n=5
Пример 2. n = 2543
Пример 3. S= 250 x=100 k= 3
Задание 2.
1) Сколько раз будет выполнено тело цикла в следующих фрагментах программ:
For k:= -1 to 1 do ….
For k:= 10 to 20 do…
For k:= 20 to 10 do …
2) Дана последовательность операторов:
a:= 1; b:=1;
While a+bDo
Begin a:=a+1; b:=b+2 End;
S:=a+b;
Сколько раз будет повторен цикл и какими будут значения переменных a, b и s, после завершения этой последовательности операторов?
3)Какое значение будет принимать переменная у после выполнения программы:
Операторы цикла на Паскале
Цикл с параметром (со счетчиком) | Цикл с предусловием | Цикл с постусловием |
Оператор цикла с параметром применяют тогда, когда заранее известно число повторений одной и той же последовательности операторов Цикл с параметром по возрастающим значениям параметра For I: = А to В do тело цикла; Тело цикла – простой или составной оператор. Составной оператор – группа операторов между begin и end. I – переменная, порядкового типа (integer, char) Начальное (А) и конечное (В) значения параметра цикла могут быть представлены константами, переменными или арифметическими выражениями. Оператор цикла с параметром данного вида выполняется следующим образом- вычисляются значения выражений А и В. Если А последовательно принимает значения, равные А, А+1, …., В-1, В (шаг+1) и для каждого из этих значений выполняется . Если АВ, то не выполняется ни разу. Цикл с параметром по убывающим значениям параметра: For I:=А downto В do тело цикла; Параметр I меняет свое значение от А до В с шагом –1 (для целого типа), если А | Цикл с предусловием используется тогда, когда число повторений оператора цикла заранее не известно, а задается некоторое условие продолжения цикла. While do ; Выполнение оператора цикла с предусловием начинается с проверки условия, записанного после слова While. Если оно соблюдается, то выполняется , затем вновь проверяется условие и т. д. Как только при очередной проверке окажется, что условие не соблюдается, выполнятся не будет. Цикл выполняется пока условие истинно (верно), если условие сразу не верно – цикл не выполняется ни разу. Примечание: Если состоит из нескольких операторов, то они объединяются операторными скобками. В теле цикла обязательно должен быть оператор, влияющий на соблюдение условия, в противном случае произойдет зацикливание. | Для программной реализации циклических алгоритмов с неизвестным заранее числом повторений имеется ещё один оператор – оператор цикла с постусловием, который имеет следующий вид: Repeat ; ; ……………. n; Until ;{ до тех пор, пока не} Этот оператор отличается от цикла с предусловием тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает выполнение цикла хотя бы один раз. Данный оператор цикла предлагает наличие нескольких операторов в теле цикла, поэтому служебные слова Begin и End не нужны. Последовательность операторов, входящих в тело цикла, выполняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом Until. Если условие соблюдается, цикл завершается. В противном случае – тело цикла выполняется еще раз, после чего снова проверяется соблюдение условия. Цикл выполняется пока условие ложно. |
Пример 1
Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (0n
Трассировка примера
Рассмотрим выполнение программы в пошаговом режиме для n=___:
В результате работы программы на экране появится ____ числа:
Пример 2
Подсчитать количество цифр заданного натурального числа n.
Трассировка примера
Рассмотрим выполнение программы в пошаговом режиме для числа ___________:
В результате работы программы на экране появится предложение:
В числе _________ – ___ цифр.
Пример 3
Составьте программу планирования закупок в магазине на сумму, не превышающую заданную величину.
Трассировка примера
Рассмотрим выполнение программы в пошаговом режиме для суммы _____ рублей:
В результате работы программы на экране:
Введите цену товара и его количество ____ _____
Стоимость покупки равна _____
Введите цену товара и его количество ____ _____
Стоимость покупки равна ____
Введите цену товара и его количество ____ _____
Стоимость покупки равна _____
Суммарная стоимость покупки превысила предельную сумму