2. Актуализация знаний Здравствуйте, ребята! Сегодня мы продолжим изучение синтаксиса циклических конструкций в языке Pascal. И на этом уроке вам предстоит изучить синтаксис цикла с заданным условием окончания работы (цикла с постусловием). Запишите сегодняшнюю дату и тему сегодняшнего урока: «Программирование циклов с постусловием». Теперь повторим материал прошлого занятия и материал из раздела «Алгоритмизация»: • как описывается цикл с предусловием на языке Pascal; • изобразите блок-схему цикла с предусловием и постусловием; • посмотрите на изображенные блок-схемы и назовите отличительную особенность цикла с постусловием от цикла с предусловием, которую мы обозначали ранее. |
(Отвечают на вопросы) while do ; Блок-схемы:   Цикл с постусловием всегда выполнится хотя бы раз, в отличие от цикла с предусловием. |
3. Изучение нового материала Итак, блок-схему цикла с предусловием мы изобразили. Теперь рассмотрим с вами задачу, которую мы уже решали на прошлом уроке (запишите её условие в тетради): необходимо найти сумму всех натуральных чисел от 1 до N, где N вводится с клавиатуры. Давайте попробуем изменить прошлый алгоритм для решения этой задачи так, чтобы применить цикл с постусловием. Пока я буду набирать задачу в редакторе, записывайте её решение у себя в тетради. [Совместно с обучающимися решаю задачу на компьютере в IDE, попутно решение проецируется на экран]. Список возможных вопросов обсуждения задачи. 1) Что необходимо сделать, чтобы применить цикл с постусловием в этой задаче? А теперь рассмотрим, как описывается цикл с постусловием в языке Pascal. Оставьте место для дальнейшего решения и запишите подзаголовок «Цикл с постусловием в языке Pascal». Цикл с постусловием записывается следующим образом (запишите это в своих тетрадях): repeat until ; Сначала записывается служебное слово repeat, затем – тело цикла (здесь, в отличие от цикла while, если тело цикло состоит из нескольких операторов, то их не нужно обрамлять в операторные скобки), после чего записывается служебное слово until и условие. Теперь вернемся к нашей задаче и запишем цикл для нахождения искомой нами суммы натуральных чисел (показываю правильное оформление цикла в задаче). Давайте выполним трассировку нашего цикла для N = 5 (вызываю обучающегося к доске). |
Записывают условие задачи. Участвуют в обсуждении задачи, записывают решение в тетради. program loop1; var sum, n: integer; begin read(n); writeln; sum:=0; (Записи в тетрадях) Цикл с постусловием в языке Pascal. repeat until ; Продолжают запись задачи. repeat sum:=sum+n; n:=n-1; until n writeln(‘sum=’, sum); end. Один ученик у доски заполняет трассировочную таблицу, другие заполняют её в своих тетрадях. N до проверки условия | S | N | N | 5 | 5 | 4 | Л | 4 | 9 | 3 | Л | 3 | 12 | 2 | Л | 2 | 14 | 1 | Л | 1 | 15 | 0 | И | |
4. Закрепление изученного Рассмотрим следующую последовательность операторов: a:=1; b:=2; repeat a:=a+1; b:=b*2; until b8; s:=a+b; Корректно ли отработает цикл? Если да, то сколько раз будет повторен цикл и какими будут значения переменных a, b, s после выполнения этой последовательности операторов? Рассмотрим еще один фрагмент кода: repeat c:= a = b; until a Проанализируйте работу этого цикла. Как он будет выполняться в зависимости от истинности условия? А теперь пересаживайтесь за компьютеры и выполните следующие задания самостоятельно. 1) Составить программу для вычисления количества цифр натурального числа n. Число n вводить с клавиатуры. 2) Определить число n, при котором сумма квадратов ряда чисел 1, 2, …, n не превысит некоторого числа K, т.е. Определить число n, при котором сумма квадратов ряда чисел 1, 2, …, n не превысит некоторого целого числа K, т.е. . Число K вводить с клавиатуры. | (Отвечают на вопросы) Цикл отработает корректно и будет повторен 3 раза, на 3-й раз при проверке условия произойдет выход из цикла; a = 4, b = 16, s = 20. Данный цикл будет выполняться бесконечно в том случае, если при первоначальной проверке условия работы цикла оно окажется ложным, и выполнится только один раз в противном случае Самостоятельно оформляют решение задач на компьютере. Код программы к задаче 1: program nums; var k, n: integer; begin read(n); k:=0; writeln; repeat n:=n div 10; k:=k + 1; until n = 0; writeln(‘В числе ‘, k, ‘ цифр(-а, -ы)‘); end. Код программы к задаче 2: program loop2; var k, n, s: integer; begin read(k); writeln; s:=0; n:=1; repeat n:=n+1; s:=s+n*n; until s = k; writeln(n); end. |
5. Подведение итогов Итак, чему вы научились в течение сегодняшнего занятия? Какой особенностью обладает цикл с постусловием, отличающей его от цикла с предусловием? Как описывается цикл с постусловием на языке Pascal? |
Мы изучили синтаксис цикла с заданным условием окончания работы. Цикл с постусловием всегда выполнится хотя бы один раз. repeat (тело цикла) until (условие); |
6. Домашнее задание П. 3.5. Задачи: 1) Найти сумму ряда для произвольного натурального n. Результат выводить с точностью до тысячных. 2) Вывести на экран значение n-го (n 2) числа Фибоначчи. Примечание: числа Фибоначчи – числа, образующие последовательность . |
Записывают в дневниках д/з. |