Сдвоенный урок информатики на тему "Операторы цикла в среде программирования Pascal ABC". 9-й класс

Разделы: Информатика, Конкурс «Презентация к уроку»

Класс: 9


Презентация к уроку

Загрузить презентацию (226 кБ)


Цели урока:

  • Образовательные: познакомить учащихся с особенностями разных типов операторов цикла, сформировать у учащихся умение записывать на языке программирования операторы цикла.
  • Развивающие: развивать познавательный интерес к предмету, для этого использовать межпредметные связи информатики с математикой, учить замечать сходство и различие.
  • Воспитательные: формировать умение слушать, тренировать навыки культуры работы на компьютере.

Межпредметные связи: связь с математикой

Тип урока:комбинированный:

План урока

I. Проверка домашнего задания.
II. Изучение нового материала.
1. Цикл с предусловием.
2. Цикл с постусловием.
3. Цикл с параметром.
III. Практическая работа в среде программирования Pascal ABC.
IV. Итог урока.
V. Домашнее задание.

Оборудование: раздаточный материал, ПК, электронная доска. Презентация

ХОД УРОКА

I. Проверка домашнего задания (до урока один ученик записывает свою программу, демонстрируя на экране, остальные ее обсуждают, задают вопросы, просят исполнить).

Задание: написать программу, определяющую, принадлежит ли точка А(х,у) кругу с центром в начале координат и радиусом r.

Выставляется оценка ученику.

II. Изучение нового материала (Слайды 1 и 2)

а) Проблемные ситуации:

1. Вспомним «легенду о создателе шахмат»: (Слайд 3)

Создалась проблемная ситуация: смог ли принц Сирам выполнить желание Сеты?
Составляем вместе математическую модель для первой задачи. Какую сумму нужно подсчитать?
Ответ учащихся: 1 + 2 + 4 + 8 + ... = 1 + 1 • 2 + 2 • 2 + 4 • 2 + 8 • 2 + ... = 20 + 21 + 22 + 23 + ... + 263.
Складываем степени числа 2 от нулевой степени до 63. Но вычислять вручную или даже на калькуляторе довольно долго.
Какие действия здесь приходится повторять? (Умножать на 2, чтобы получить каждое следующее число и складывать).

2. В старинной «Арифметике» Магницкого приведена следующая задача: (Слайд 4)

Проблемная ситуация: верно ли, что за гвозди придется уплатить не более 10 рублей?
Обе эти задачи будем решать, не применяя формулы суммы членов геометрической прогрессии.
Итак, мы столкнулись с повторяющимися действиями, то есть циклами.

б) Объяснение учителя(сопровождается записями на доске и обращением к слайдам)

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

Циклы являются управляющими операторами, так же как и условный оператор, так как они управляют ходом выполнения программы.
Сегодня мы познакомимся с примерами использования циклов в программах на Паскале.
Рассмотрим задачу на вычисление большого числа слагаемых: Вычислить сумму: s = 1 + 2 + 3 + ... + п, если значение п задано, не применяя формулу суммы членов арифметической прогрессии. (Слайд 5)

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

При вычислении суммы повторяются два действия:

  1. Прибавляем очередное слагаемое к ранее полученной сумме.
  2. Увеличиваем на единицу слагаемое.

Какие варианты решения задачи вы предлагаете?

  1. Начать сумму с нуля, то есть переменной s присвоить 0 (s :=0).
  2. Переменной i присвоить значение 1 (i :=1).
  3. Добавить к сумме значение i (s := s + i).
  4. Увеличить i на 1 (i:= i + 1).
  5. Повторять пункты 3 и 4, пока не дойдем до слагаемого n.

Рассмотрели пример алгоритмической конструкции «цикл».
В языке Паскаль существует три вида операторов цикла. Каждый из них имеет свои особенности и у каждого есть свои задачи.

(На слайдах блок-схемамы циклических алгоритмов. Слайды 6, 7)

1) Цикл с предусловием (цикл «пока» – while)

Синтаксис оператора:
while <условие> do <оператор>;
где while (пока) do (делать) — зарезервированные слова, <условие> – логическое выражение, <оператор> – тело цикла. Телом цикла может быть и группа операторов, заключенная в операторные скобки begin ... end, так называемый составной оператор.
Выполняется этот оператор так: сначала проверяется условие на истинность и, если оно истинно, выполняется оператор, затем условие проверяется вновь и т. д. Как только на очередном шаге условие оператора не выполняется, то выполнение оператора цикла прекращается. Переменным присваиваются определенные значения до входа в цикл. В теле цикла должны быть операторы, которые в какой-то момент сделают условие ложным, иначе цикл будет бесконечным.

2) Цикл с постусловием (цикл «до тех пор, пока» repeat...until)

Синтаксис оператора:
repeat
<группа операторов> until <условие>;
где repeat (повторять), until (пока не).
Вначале выполняется группа операторов, а затем проверяется условие, и, если условие ложно, то выполнение цикла повторяется, а иначе цикл прекращается.

3) Цикл с параметром (со счетчиком) (цикл «для» – for.. .to/downto).

В среде программирования Qbasic мы встречались с оператором цикла с  параметром. Сегодня вы увидите сходство и различие цикла с параметром в языках программирования Qbasic и  Pascal ABC.

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

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

Синтаксис оператора  цикла с параметром в Qbasic:

FOR i = a TO b STEP h

Синтаксис оператора цикла с параметром в Pascal ABC:

for <параметр цикла> := <начальное значение параметра цикла>
to <конечное значение параметра цикла > do begin
<операторы (тело цикла)> end;
for (для), to (до), do (делать), begin (начало), end (конец) – зарезервированные слова;
<параметр цикла> – переменная целого типа;
<начальное значение параметра цикла> – выражение целого типа;
<конечное значение параметра цикла> – выражение целого типа;
<операторы> – любые операторы Паскаля;
begin <операторы> end; – составной оператор, который используется, если в программе больше одного повторяющегося действия. Если повторяющееся действие одно, то begin и end можно опустить и после do будет идти только один оператор Паскаля.

Оператор цикла с параметром следует применять, если заранее известно, сколько раз нужно выполнять некоторый оператор. Параметр цикла может являться просто счетчиком, контролирующим количество повторений оператора, а может и использоваться в самом операторе (с учетом того факта, что на каждом шаге цикла параметр цикла на 1 отличается от предыдущего  своего значения).

Работа оператора цикла

Сначала параметру цикла присваивается начальное значение, затем проверяется выполнение условия: значение параметра цикла меньше или равно конечному значению. Если условие истинно, выполняются операторы, идущие после do. Этот процесс продолжается до тех пор, пока условие не станет ложным. В случае, когда условие является ложным на первом шаге, оператор вообще не выполняется ни разу.

III. Практикум. Реализация на компьютере

а) Вернемся к задаче о сумме:s = l + 2 + 3 + … + n и решим ее с использованием трех видов цикла. (Приложение 1)

Исполните программы при n = 1; 2; 10; 100; 200.
(У всех на столах таблицы с программами). Учащиеся делятся на 3 группы по номерам компьютеров: № 1-4; № 5-8; № 9-12. После набора и запуска на исполнение проводится разбор работы циклов всех типов.

Предполагаемые ответы: 1 группа. Цикл с предусловием.

После ввода значения числа n (например, 100) цикл в первой программе работает так:

  • вначале s = 0 и i = 1;
  • условие i <= 100 в операторе while (пока) истинно, поэтому начинается выполнение цикла;
  • сумма увеличивается на единицу: s = 0 + 1; значение i увеличивается на 1, получаем i = 2;
  • условие i <= 100 вновь истинно, поэтому тело цикла повторяется снова; значение суммы s = 0 + 1 + 2, а переменной i = 3;
  • после выполнения этой последовательности действий необходимое число раз получаем: s = 1 + 2.... + 100, i = 101;
  • условие i <= 100 ложно, на этом цикл завершается.

Далее следует вывод результата: сумма 100 чисел равна 5050.

2 группа. Цикл с постусловием

Введем n = 10.
• вначале s = 0 и i = 1;
• после оператора repeat, s = 0 + 1, i увеличивается на 1 и станет i = 2;
• условие i > 10 ложно, поэтому выполнение цикла продолжается;
• значение суммы изменяется: s = 1 + 2, i увеличивается на 1 :  i = 3;
• условие i > 10 ложно, цикл повторяется;
• цикл повторяется, пока условие не станет i = 10 + 1, а значение суммы s = 1 + 2 ... + 100;
• условие i > 10 истинно, цикл завершается.
Идет вывод результата: сумма 100 чисел равна 55.

3 группа.  Цикл с параметром

Введем n = 200.
• вначале s = 0;
• при первом выполнении цикла i = 1, к сумме добавляется i, то есть 1;
• затем i = 2, к сумме добавляется 2;
• затем i = 3, к сумме добавляется 3;
• и так продолжается до i = 200;
Идет вывод результата: сумма 200 чисел равна 20100.

б) А как же быть с легендой о шахматной доске?Знаем ли мы, сколько раз будет выполняться тело цикла? Каким циклом лучше воспользоваться?  (Слайды 8 и 9)
В языке Qbasic есть операция возведения в степень, поэтому вычисляем сумму сразу. Параметр цикла i будет меняться от 0 до 63 и используется в самом операторе цикла.
В языке Паскаль нет функции «возведение в степень», только  «возведение в квадрат». Здесь параметр цикла будет являться счетчиком. Используем составной оператор. Вначале вычисляем 2n для целых неотрицательных значений n, а затем вычисляем сумму. Первоначальное значение суммы равно 1. (Варианты программ на столах)
Результаты на языке Qbasic Запуск программы: run s = 1.844674Е+19
Результаты на языке  Pascal s = 1.8446744074Е19.
Самостоятельно разберите работу цикла for. В результате получилось очень большое число:18 446 744 407 000 000 000 зерен. Можно подсчитать, что масса такого большого числа зерен больше триллиона тонн. Это превосходит количество пшеницы, собранное человечеством до настоящего времени.

в) Фронтальное обсуждение второй задачи.

Предлагаемые вопросы: (Слайды 10 и 11)

1. Сколько слагаемых во второй сумме?
2. Какую сумму надо вычислить?
3. Какие можно сделать изменения в программе на языке Qbasic для решения второй задачи?
4. Что изменить на языке  Pascal?

Предполагаемые ответы:

1. 24 слагаемых, так как 6 • 4 = 24
2. S = 1/4+ 1/2 + 1 + 2 + 4 +... = 2–2 + 2–1 + 20 + 21 + 22 + ... +221
3. На языке Qbasic изменяем параметры цикла FOR i = –2 ТО 21.
4. На языке Turbo Pascal изменим начальное значение суммы s:=l,75 и параметры счетчика for i: = 1 to 21.

Внесите изменения в программы и получите результат. (Получится приблизительно 42 000 рублей)

г) Рассмотрим задачу на вычисление факториала числа п.

Произведение n последовательных натуральных чисел называется факториалом числа n. (Cлайд 12)

n! = 1 • 2 • 3 • ... •  (n – 1) • n; 5! = 1 • 2 • 3 • 4 • 5.

Если n число небольшое, то вычислять недолго на калькуляторе. Чем число больше, тем больше времени требуют вычисления. Заметим, что при вычислении этого произведения повторяются всего две операции, причем в определенном порядке:

  1. Умножить множитель на ранее вычисленное произведение.
  2. Увеличить на 1 множитель.

Если при вычислении суммы счетчику суммы присваивается 0, то при вычислении произведения счетчику произведения присваиваем 1. Эту задачу тоже можно описать тремя операторами цикла. Чтобы можно было вычислять факториалы чисел, лучше переменную f описать типом real.
(Варианты решения тремя способами в таблице с программами).  
Опишите выполнение циклов каждого типа.

IV. Итог урока

На уроке мы познакомились с операторами цикла в Паскале, рассмотрели типы операторов цикла, их принципиальное различие. Циклы используются в большинстве программ. Продолжим работать с циклами на следующем уроке. Всякую ли задачу можно описать тремя операторами цикла? (Конечно, нет)

Памятка для выбора типа оператора цикла (Слайд 13)

  • Цикл с предусловием (цикл while) применяйте, если необходимо, чтобы проверка была прежде, чем выполнение тела цикла.
  • Цикл с постусловием (цикл repeat) применяйте, если необходимо, чтобы тело цикла выполнялось хотя бы один раз.
  • Цикл для (цикл for) применяйте, если точно знаете, сколько раз должно быть выполнено тело цикла.

(Карточки с программами и памятки остаются у учеников).

V. Домашнее задание: (Слайд 14)

Вычислить значение переменной y при заданном значении n:
(Использовать три различных оператора цикла).
Вернемся к цитате. Как вы считаете, подтвердили ли мы ее сегодня на уроке? (Высказывания учеников)

VI. Комментированное сообщение оценок