Циклы в языке программирования Pascal

реклама
Муниципальное образовательное учреждение
«Средняя общеобразовательная школа №12» г.Новочебоксарск
Методическая разработка
на тему
«Циклы в языке программирования Pascal»
Выполнила
учитель информатики
МОУ «СОШ №12»
Кошкина Юлия Егоровна
Научный руководитель
кандидат физико-математических наук
Сейфуллина Светлана Васильевна
Новочебоксарск, 2008
1
Введение
…информатика по праву входит в братский союз с математикой и лингвистикой, закладывая в школьное образование опорный треугольник развития главных проявлений человеческого интеллекта: способность к обучению, способность к рассуждению, и способность к действию.
А.П. Ершов.
Программирование — это стержень как базового, так и профильного курсов информатики.
Изучение основ программирования на языке Pascal — это не столько средство подготовки к будущей профессиональной деятельности, сколько формирование новых общеинтеллектуальных
умений и навыков: разделение задачи на этапы решения, построение алгоритма и др. Исключительно велика роль программирования для формирования мышления школьников, приёмов умственных действий, умения строить модели, самостоятельного нахождения и составления алгоритмов решения задач, умения чётко и лаконично реализовывать этапы решения задач. Использование этих возможностей для формирования общеинтеллектуальных и общеучебных умений
школьников активизирует процесс индивидуально-личностного становления учащихся.
Изучение программирования в курсе Основы информатики и вычислительной техники является самым сложным периодом обучения в данной науке. Для детей 13,14 лет научно изложенные
учебники редко привлекательны, только очень пытливые умы старательно разбирают непонятные
слова, а затем уже и суть основного материала. Задачей учителя в школе стоит разработка такой
методики, которая максимально упростит постижение способности программировать, что очень
важно для большинства людей в современном техническом мире
Целями создания методической разработки являются научить учащихся:
 понимать значение алгоритмизации как метода познания окружающего мира, принципы
структурной алгоритмизации;
 овладевать базовыми понятиями теории алгоритмов;
 разрабатывать эффективные алгоритмы и реализовывать их в виде программы, написанной
на языке программирования Pascal.
Задачи:
 сформировать у учащихся навыки выполнения технологической цепочки разработки программ средствами языка программирования Pascal;
 изучить циклические конструкции языка программирования Pascal, позволяющие работать
с простыми скалярными и составными типами данных;
 научиться применять подпрограммы при написании программ на языке программирования
Pascal;
 научиться отлаживать и тестировать программы, делать выводы о работе этих программ.
Методы обучения
Отбор методов обучения обусловлен необходимостью формировать у старшеклассников информационную и коммуникативную компетентности, реализовывать личностно-ориентированное
обучение, направлять их на самостоятельное решение разнообразных проблем, развивать исследовательские и творческие способности. Решение данных задач кроется в организации деятельностного подхода к обучению, в проблемном изложении материала учителем, в переходе от репродуктивного вида работ к самостоятельным, поисково-исследовательским видам деятельности. Поэтому
основным методом обучения на моих уроках является метод проектов, а основная методическая
установка — обучение старшеклассников навыкам самостоятельной творческой деятельности.
Формы организации учебных занятий
Организация учебного процесса с использованием учебно-методического комплекта предусматривает наличие двух взаимосвязанных и взаимодополняющих форм:
 урочная форма, когда учитель во время урока объясняет новый материал и консультирует
учащихся в процессе выполнения ими практических заданий на компьютере;
 внеурочная форма, когда учащийся вне уроков самостоятельно выполняет на компьютере
практические задания.
2
Планируемые результаты
Учащиеся овладевают следующими знаниями, умениями и способами деятельности:
 умеют составлять алгоритмы для решения задач;
 умеют реализовывать алгоритмы на компьютере в виде программ, написанных на языке
Pascal;
 владеют основными навыками программирования на языке Pascal;
 умеют отлаживать и тестировать программы, написанные на языке Pascal.
Способы оценивания уровня достижений учащихся
Предметом диагностики и контроля являются внешние образовательные продукты учащихся
(созданные блок-схемы, программы), а также их внутренние личностные качества (освоенные способы деятельности, знания, умения).
Педагогическая ценность контроля заключается в том, что он даёт всестороннюю информацию о способностях учащихся к анализу или синтезу, оценочным суждениям и позволяет оценить
эффективность учебного труда для каждого из них.
Диагностика и контроль — необходимые части учебного процесса, но увеличение их доли
неизбежно приводит к сокращению времени на изучение материала. Контроль и диагностика
должны быть действенными. Поэтому необходимо анализировать результаты проверки и принимать меры по коррекции образовательного процесса. От этого зависит, станут ли способы оценивания уровня достижений учащихся результативными.
Качество внешней образовательной продукции желательно оценивать по следующим параметрам:
 алгоритм должен быть оптимальным по скорости выполнения и максимально простым в
реализации на языке программирования;
 программа должна выполнять поставленные задачи;
 по степени «читаемости кода» (должны быть соблюдены отступы, обязательное наличие
комментариев к коду программы и т. д.).
Созданными внешними образовательными продуктами учащиеся могут пополнять собственные портфолио.
Проверка достигаемых учащимися результатов производится в следующих формах:
 текущий рефлексивный самоанализ, контроль и самооценка учащимися выполняемых заданий;
 текущая диагностика и оценка учителем деятельности школьников;
 публичная защита выполненных учащимися творческих работ (индивидуальных и групповых);
 итоговая оценка деятельности и образовательной продукции ученика в соответствии с его
индивидуальной образовательной программой освоения курса;
 итоговая качественная оценка индивидуальной деятельности школьников учителем в виде
отзыва или рекомендации.
Данная методическая разработка может быть применена на уроках информатики в 10-м
классе в рамках изучения темы «Операторы циклов».
Обоснование выбора темы методической разработки: цикл – это базовая структура в алгоритмизации. Практически ни одна серьезная задача не решается без этой конструкции. Очень
широк спектр ее применения. Это и игровые программы, и компьютерная графика, и обработка
текстов. Цикл используется во всех языках программирования. Кроме того, решение задач с использованием циклических структур, развивает мыслительную деятельность учащихся: анализ,
синтез, сравнения и т.д. Для учителя эта тема интересна тем, что она предполагает уроки различных типов: комбинированные, теоретические, лабораторно-практические.
Общепедагогическая направленность занятий — гармонизация индивидуальных и социальных аспектов обучения по отношению к информационным технологиям. Умение составлять алгоритмы решения и навыки программирования являются элементами информационной компетенции — одной из ключевых компетенций современной школы. Умение находить решение, составлять алгоритм решения и реализовать его с помощью языков программирования — необходимое
условие подготовки современных школьников. Особая роль отводится широко представленной системе рефлексивных заданий. Освоение рефлексии направлено на осознание учащимися того важ3
ного обстоятельства, что наряду с разрабатываемыми ими продуктами в виде программ на компьютере рождается основополагающий образовательный продукт: освоенный инструментарий. Именно
этот образовательный продукт станет базой для творческого самовыражения учащихся в форме различных программ.
Практическая часть
Тематический план курса
Наименование разделов и тем
1. Операторы цикла с условием
2. Оператор цикла с параметром
Контрольная работа
Итого
Количество
часов
Практические
Всего
занятия
10
5
5
3
1
16
8
Содержание курса «Циклы в языке программирования Pascal»
Тема 1. Операторы циклов с условием
Цели:
Обучающая:

Знакомство учащихся с базовыми алгоритмическими структурами;

Научить уч-ся организовывать циклы с предусловием и циклы с постусловием;

Использовать циклы при работе с программой.
Развивающая:

Формирование навыков работы при создании программ, отработать приемы вставки
в программу блоков цикла;

Формирование у учащихся приемов логического и алгоритмического мышления;

Развитие познавательного интереса;

Развитие умения планировать свою деятельность.
Воспитывающая:

Воспитывать необходимость связывать изучение нового материала с уже известными фактами;

Воспитывать ответственность за выполняемую работу;

Воспитывать аккуратность при выполнении вычислений.
Формы учебной работы учащихся: фронтальная, индивидуальная работа за ПК.
Учащиеся должны знать / понимать:
 циклы с условием и их виды;
 различие между циклами с предусловием и постусловием;
 правила записи циклов с предусловием и постусловием;
 примеры использования циклов различных типов.
Учащиеся должны уметь:
 определять вид цикла, наиболее удобный для решения поставленной задачи;
 использовать цикл с предусловием;
 использовать цикл с постусловием.
Понятие цикла. Тело цикла. Условия выполнения тела цикла. Циклы с условием и их виды.
Оператор цикла с предусловием, блок-схема оператора. Оператор цикла с постусловием. Отличия
циклов с предусловием от циклов с постусловием. Вложенные циклы. Бесконечные циклы.
Практическая работа: решение задач по теме «Оператор цикла с предусловием и с постусловием». Упражнения и задачи раздела «Операторы циклов».
4
Тема 2. Оператор цикла с параметром
Цели:
 познакомить с организацией цикла со счетчиком в Т-Р;
 развивать алгоритмическое мышление учащихся, умение видеть циклическую структуру в
задаче;
 развивать интерес к познавательной деятельности учащихся.
Задачи:
 научить использовать цикл с параметром FOR…TO, производить его запись, правильно
использовать и описывать входящие переменные;
 познакомить с двумя формами оператора FOR (TO, DOWNTO);
 ввести понятие табулирования функции;
 развивать умение проводить аналогию с организацией циклов;
 развивать ответственность за результат выполненной работы.
Учащиеся должны знать / понимать:
 назначение и особенности использования цикла с параметром;
 формат записи цикла с параметром;
 тип данных параметра цикла.
Учащиеся должны уметь:
 определять целесообразность применения цикла с параметром для решения поставленной
задачи;
 использовать цикл с параметром.
Оператор цикла с параметром. Правила записи параметра цикла. Вложенные циклы.
Практическая работа: решение задач по теме «Оператор цикла с параметром». Упражнения
и задачи раздела «Операторы циклов».
Контрольная работа.
Урок 1, 2. Циклические конструкции. Цикл с предусловием («пока»).
Изучение циклов демонстрирует учащимся главное преимущество компьютера перед человеком – выполнение большого числа действий за короткое время. Ведь даже весьма короткий циклический алгоритм, составить который не так уж долго, при исполнении может потребовать выполнения нескольких сотен действий, с которыми компьютер справится намного быстрее, чем человек.
Учащиеся должны уметь организовать цикл и верно определить тело цикла. Более того, при
конструировании алгоритмов важно использовать такую конструкцию цикла, которая окажется
оптимальной для решения поставленной задачи.
Объяснение нового материала.
На предыдущих занятиях мы познакомились с алгоритмами двух типов: линейными и ветвящимися. Легко заметить, что все алгоритмы, которые мы составляли, обладают одним общим
свойством: при их выполнении каждое действие совершается один раз или вообще не совершается. В жизни, однако, часто встречаются инструкции, в которых требуется один и тот же набор действий выполнять много раз подряд до достижения некоторой цели, например: "Иди, пока не придешь", "Закручивай гайку, пока не завернешь до отказа" и так далее. Используя только ветвление,
такие алгоритмы записать не удастся. Для решения подобных задач нужна новая форма организации действий – цикл.
Определение. Цикл – многократное повторение последовательности действий по некоторому условию.
Существуют три основных типа циклов – Пока, До и Для. Отличие первых двух циклов состоит в том, что в них количество повторений заранее неизвестно, а в цикле Для число повторений заранее определено. В первом случае, если препятствие никогда не встретится, движение бу5
дет продолжаться бесконечно долго. Такие явления при выполнении алгоритмов называются "зацикливанием".
Пример.
Пусть нужно описать способ передвижения в потемках. В общем случае он записывается в
форме цикла, который называется цикл Пока.
Правила движения:
1. Если нет препятствия, то шаг вперед.
2. Если есть препятствие, то остановиться.
В этом алгоритме движение происходит по шагам: если нет препятствий, то делается шаг
вперед, если опять нет препятствий, то делается еще один шаг, и так далее, пока не встретится
препятствие. По достижении же препятствия движение завершится. То есть два вышеприведенных
правила можно записать одной строкой:
ПОКА нет препятствия, повторять шаг вперед.
Другой способ реализации тех же самых действий заключается в проверке условия после
выполнения очередного шага:
Повторять шаг вперед ДО встречи препятствия.
Очевидно, что в этом случае первый шаг будет сделан в любом случае. Такой вариант цикла
носит название цикла До.
Если же расстояние до препятствия заранее известно, скажем, 100 шагов, то способ движения можно описать в форме цикла со счетчиком – цикла Для.
Правила движения:
100 раз выполнить шаг вперед.
Циклические алгоритмы строятся в соответствии с базовой алгоритмической структурой
Цикл. В циклических алгоритмах некоторая часть команд повторяется или заданное количество
раз, или число раз, необходимое для получения результата. По этому признаку они делятся на алгоритмы типа "Для" и алгоритмы типа "Пока / До". Первые также называют циклическими
алгоритмами с заранее известным числом повторений, циклами со счетчиком или регулярными
циклами. Вторые называют итерационными циклами. По месту проверки окончания итерационного цикла различают два вида циклических алгоритмов: цикл с предусловием (цикл ПОКА) и цикл
с постусловием (цикл ДО).
Рассмотрим более подробно блок-схему и работу цикла Пока.
Присваивание начальных
значений
Проверка условия окончания
цикла
Рабочий блок
Изменение значений аргументов
Словесно конструкция цикл Пока записывается так:
6
ПОКА условие ВЫПОЛНЯТЬ тело цикла
Телом цикла называются команды, многократно повторяющиеся в процессе его выполнения.
Перед выполнением цикла происходит присваивание начальных значений переменным,
меняющимся в ходе его выполнения. Собственно выполнение цикла Пока начинается с проверки
условия его окончания. Поэтому такую разновидность цикла называют еще циклом с предусловием. Переход к выполнению тела цикла, включающего в себя рабочий блок и изменение значений аргументов, осуществляется только в том случае, если условие выполняется. В противном
случае происходит выход из цикла. В частности, может оказаться, что тело цикла не будет выполнено ни разу (если с самого начала условие не выполняется). С другой стороны, для того чтобы
цикл не повторялся бесконечно, необходимо в теле цикла осуществлять действия, приводящие к
ситуации, когда условие перестанет быть истинным. Этой цели и служит блок изменения значений
аргументов.
Пример. Задан алгоритм:
а = –5.
b = –2.
Пока a + b<ab, повторять:
а = 2а.
b = b + 1.
Конец цикла.
Чему будут равны а и b после выполнения алгоритма? Сколько раз выполнится тело цикла?
Для решения таких задач удобно воспользоваться таблицей.
Количество
а
b
a+b
ab
a + b < ab
выполненных
циклов
–5
–2
–7
10
Да
0
–10
–1
–11
10
Да
1
–20
0
–20
0
Да
2
Нет
3
–40
1
–39
–40
Теперь вы легко выберете верный ответ
На языке Тurbo Pascal запись цикла с предусловием будет выглядеть так:
while <условие> do <оператор>;
Здесь while (пока), do (делать) – зарезервированные слова.
В качестве оператора может быть любой простой или составной оператор. Здесь <оператор>
выполняется только в том случае и до тех пор, пока истинно <условие>, которое проверяется каждый раз после выполнения оператора. Если с самого начала условие имеет значение false, оператор цикла не выполнится ни разу.
Блок-схема алгоритма работы этого оператора приведена на рисунке.
условие
нет
да
оператор
Задание. Сколько раз выполнится тело цикла и какое значение будет иметь переменная В?
7
1)
A:=10;
B:=1;
While (A>0) do
Begin
B:=B*2;
A:=A-1;
End;
Решение. Тело цикла будет выполняться, пока А будет принимать значения
10, 9, 8,…, 1, то есть 10 раз. При этом значение переменной B каждый раз удваивается и станет равным 210 = 1024.
2)
A:=4;
B:=1;
While (A>0) do
Begin
B:=B*3;
A:=A-1;
End;
Решение. Тело цикла будет выполняться, пока А будет принимать значения 4,
3, 2, 1, то есть 4 раза. При этом значение
переменной B каждый раз утраивается и
станет равным 34 = 81.
Если в операторе цикла <условие> всегда истинно, то такой цикл называется бесконечным.
Пример
t:=true;
while t do x:=x+5;
Такие операторы вызывают «зацикливание» программы и приходится прерывать их выполнение вручную. Поэтому нужно отслеживать и программировать циклы так, чтобы условие выхода
из цикла обязательно выполнилось. Практически это требование означает, что в теле оператора
цикла обязательно должен находиться оператор, изменяющий значение <условия> с true на false.
Прервать зацикливание можно только аварийным выходом из всей программы (Ctrl-Break).
Простейшие примеры “зацикливания”:
While True Do оператор;
Перед выполнением следующих заданий я предлагаю ученикам для оформления решения
страницу тетради разделить на две колонки: слева будет записываться текст программы с использованием цикла Пока, а справа они запишут позже решение этой же задачи, но с использованием
цикла До.
Задача 1. Вывести на экран квадраты натуральных чисел от введенного до1.
Решение.
Опишем переменную N, значение которой введет пользователь. Далее будем использовать
цикл с предусловием, зацикливающий такую последовательность действий: вывод на экран произведения N · N и уменьшение значения N на 1. Условием продолжения выполнения тела цикла будет N > 0
Решение с использованием цикла с предПри использовании цикла с постусловием
условием:
программа будет выглядеть так:
Program UW;
Uses crt;
Var N: Integer;
Begin
Write (‘Введите число’);
ReadLn (N);
While N > 0 do
Begin
WriteLn(N*N);
N: = N – 1;
End;
Readln;
Program UW;
Uses crt;
Var N: Integer;
Begin
Write (‘Введите число’);
ReadLn (N);
Repeat
Writeln(N*N);
N := N-1;
Until (N<=0);
Readln;
End.
End.
Решение задачи должно быть оформлено так (решение справа записывается после изучения
цикла с постусловием).
Задача 2. Вычислить сумму всех нечетных чисел в интервале [1;2k+1].
8
Program Sum;
Uses crt;
Var n, s, a, k: Integer;
Begin
n := 1; a := 1; s := 0;
Readln (k);
Repeat
s := s+a;
a := a+2;
n := n+1;
Until (n > k);
Writeln (s: 5);
Readln;
End.
Program sum;
Uses crt;
Var n, s, a,k: integer;
Begin
n: = 1; a: = 1; s: = 0;
Readln(k);
While (n <=k) do
Begin
a: = s+a;
a:= a+2;
n: = n+1;
End;
Writeln(s:5);
Readln;
End.
Домашнее задание.
1. Выучить теоретический материал конспекта.
2. Написать программы к следующим задачам.
1) Вычислить сумму натурального ряда чисел от 1 до N.
1 1 1
1
2) Вычислите сумму 1     ...  .
2 3 4
n
Урок 3. Решение задач по теме «Цикл с предусловием».
Проверка домашнего задания.
1-й ученик должен нарисовать блок-схему, соответствующую оператору цикла с предусловием.
2-й и 3-й ученики показывают на доске программы решения задач, заданных на прошлом
уроке.
Программы, записанные на доске, могут выглядеть так:
1. Вычислить сумму натурального ряда чисел
1 1 1
1
2. Вычислите сумму 1     ...  .
от 1 до N.
2 3 4
n
Program sum_natur;
Uses crt;
Var n, s, a: integer;
Begin
Write(‘n=’);readln(n);
a: = 1; s: = 0;
While (a <=n) do
Begin
a: = s+a;
a:= a+1;
End;
Writeln(s:5);
Readln;
End.
Program sum_2;
Uses crt;
Var i: integer; s:real;
Begin
Write(‘n=’);readln(n);
i: = 1; s: = 0;
While (i <=n) do
Begin
s: = s+1/i;
i:= i+1;
End;
Writeln(’сумма’,n,’элементов=’,s:5);
Readln;
End.
Остальные ученики отвечают на вопросы учителя с места.
Закончите фразу:
1.Оператор цикла с предусловием строится с использованием служебных
______________________.
2. Выберите правильное окончание предложения.
Выход из цикла с предусловием выполняется, если условие цикла ______________.
Решение задач.
9
слов
Данные задачи можно распечатать и выдать каждому ученику на отдельном листе.
1. Какое значение примет переменная х в результате выполнения следующих фрагментов
программ?
1) x:=1;
2) x:=1;
while x<10 do
x:=x+3;
x:=x+1;
while x<10 do
begin
x:=x+3;
x:=x+1;
end;
Ответ: ______.
3) x:=1;
Ответ: ______.
4) x:=1;
while x<100 do
begin
x:=x*2;
end;
while x<>1 do
begin
x:=x+3;
x:=x+1;
end;
Ответ: _____.
Ответ: ______.
2. Остановится ли когда-нибудь цикл, представленный в следующих фрагментах программы?
1) x:=1;
2) x:=10;
while x>1 do x:=x+1;
while x>1 do
x:=x+1;
Ответ: ______.
Ответ: ______.
3) x:=1; y:=1;
4) x:=1; y:=1;
while x<10 do
y:=y+1;
x:=x+1;
while x<10 do
begin
y:=y+1;
x:=x+1;
end;
Ответ: ______.
Ответ: ______.
3. В результате выполнения программы на экран должны быть выведены значения функции
y  x  2 x для значений х, лежащих в диапазоне 1;3 , с шагом 0, 2 . Выберите правильный вариант.
Ответ: ____.
3
а) Var x,y:real;
б) Var x,y:real;
Begin
x:=1;
while x<=3 do
begin
y:=sqr(x)*x+2*x;
writeln(y:4:2);
end;
End.
в) Var x,y:real;
Begin
x:=1;
while x<=3 do
begin
y:=sqr(x)*x+2*x;
writeln(y:4:2);
x:=x+0.2;
end;
End.
Begin
x:=1;
while x<=3 do
x:=x+0.2;
y:=sqr(x)*x+2*x;
writeln(y:4:2);
End.
г) Var x,y:real;
Begin
x:=1;
while x=3 do
begin
y:=sqr(x)*x+2*x;
writeln(y:4:2);
x:=x+0.2;
end;
End.
Задание под номером 3 мы обычно проверяем на компьютере, дополнив условие следующим: результаты представить в виде таблицы, первый столбец которой – значение аргумента, второй – соответствующее значение функции. Выполняя это задание, учащиеся вспоминают тему
«Формат оператора вывода».
Домашнее задание. По тексту программ определите поставленные задачи и сформулируйте
для них условия. Напишите, какое значение примет переменная а в результате выполнения программы.
1) Var a, n:integer;
Begin
n:=77; a:=2;
while n mod a<>0 do a:=a+1;
10
writeln(a);
End.
Условие задачи: _________________________________________
_____________________________________________________________
____________________________________________________________.
Ответ: a  ______.
2) Var n:integer;
a: real;
Begin
n:=2; a:=0;
while a <=1 do
a:=a+1/n;
n:=n+1;
writeln(a:3:1);
End.
Условие задачи: ________________________________________
________________________________________________________________________________________________
_________________________.
Ответ: a  ______.
Урок 4. Цикл с постусловием.
Проверка домашнего задания.
Коллективно обсуждаются ответы на упражнения из домашнего задания:
1) a  7. В задаче происходит поиск наименьшего делителя.
2) a  0.8. Вычисляется сумма ряда 1/n, где n=2.
Объяснение нового материала.
Разновидностью цикла с заранее неизвестным числом повторений (цикла без счетчика) является цикл До. Его конструкция записывается так:
ВЫПОЛНЯТЬ тело цикла ДО условие
Выполнение цикла До отличается от выполнения цикла Пока тем, что начинается с осуществления тела цикла. Таким образом, тело цикла обязательно будет реализовано хотя бы один
раз. После этого происходит проверка условия, поэтому такую разновидность цикла называют еще
циклом с постусловием. Аналогично циклу До изменение аргументов и здесь служит цели
предотвращения "зацикливания" (бесконечного повторения тела цикла).
Форма записи цикла с постусловием на языке Turbo Pascal:
Repeat
<оператор1>;
<оператор1>;
Until <условие>;
Здесь Repeat (повторять до тех пор), Until (пока не будет выполнено условие) – зарезервированные слова.
Блок-схема алгоритма работы оператора приведена на рисунке.
оператор
условие
нет
да
Последовательность операторов может состоять из одного или нескольких любых операторов. И ещё одно отличие от оператора цикла с предусловием — данный оператор выполняется,
пока <условие> ложно, иначе происходит выход из цикла. То есть если для цикла с предусловием
11
<условие> является условием входа в цикл, в данном случае <условие> является условием вы-
хода из цикла.
При использовании операторов While и Repeat необходимо учитывать следующее:

если логическое выражение в случае цикла с While вначале имеет значение False, операторы после do не будут выполняться вообще; цикл выполняется до тех пор, пока условие
истинно;

если логическое выражение в случае цикла с Repeat вначале имеет значение True, операторы тела цикла будут выполнены только один раз; цикл выполняется, пока условие ложно;

в цикле Repeat не требуется обрамление тела цикла с помощью операторных скобок
begin и end.
Решение задач.
Учащиеся должны записать тексты программ к задачам, рассмотренных на первых двух уроках, но уже с использованием цикла с постусловием.
Домашнее задание.
1. Выучить конспект.
2. Закончить запись программ в тетради.
Урок 5, 6. Решение задач по теме «Цикл с постусловием».
Проверка домашнего задания.
1-ученик. Рисует блок-схему, соответствующую оператору цикла с постусловием:
Остальные должны закончить фразу, начатую учителем:
1. Оператор цикла с постусловием строится с использованием служебных
___________________.
2. Выберите правильное окончание предложения.
Выход из цикла с постусловием выполняется, если условие цикла ____________.
слов
Решение задач.
Данные задачи можно распечатать и выдать каждому ученику на отдельном листе.
1. Сформулируйте для следующей программы условие задачи. Какое значение примет переменная а в результате выполнения программы?
Var a, n:integer;
Begin
n:=527; a:=0;
repeat
a:=a+(n mod 10);
n:=n div 10;
until n=0;
writeln(a);
End.
Условие: _________________________________________________
____________________________________________________________.
Ответ: a  ______.
2. Какое значение примет переменная х в результате выполнения следующих фрагментов
программ?
1) x:=1;
2) x:=1;
repeat
x:=x+1;
until x>10;
repeat
x:=x+3;
x:=x+1;
until x>10;
Ответ: ______.
Ответ: ______.
3. Остановится ли когда-нибудь цикл, представленный в следующих фрагментах программы?
12
1) x:=1; y:=1;
2) x:=10; y:=10;
repeat
y:=y+1;
x:=x+1;
until x=10;
repeat
y:=y+1;
x:=x+1;
until x=10;
Ответ: ______.
Ответ: ______.
4. Дано действительное число a. Требуется найти первое значение числа n, при котором сумма s  1  1/ 2  1/ 3  ...  1/ n превышает a. Какая из предложенных программ решает эту задачу? Ответ: ___.
а) Var n:integer;
б) Var n:integer;
а,s:real;
Begin
read(a);
s:=0; n:=1;
repeat
s:=s+1/n; n:=n+1;
until s>a;
writeln(n);
End.
в) Var n:integer;
а, s:real;
Begin
read(a);
s:=0; n:=1;
repeat
s:=s+1/n;n:=n+1;
until s<=a;
writeln(n);
End.
а,s:real;
Begin
read(a);
s:=1; n:=1;
repeat
s:=s+1/n;n:=n+1;
until s>a;
writeln(n);
End.
г) Var n:integer;
а, s:real;
Begin
read(a);
s:=0; n:=1;
repeat
s:=s+1/n;
until s>a;
writeln(n);
End.
Проверочная работа.
Каждому ученику предлагается индивидуальная карточка с двумя заданиями. Подобные задания рассматривались на предыдущих уроках, поэтому ученики не должны пользоваться рабочими тетрадями, а выполнять работу в тетради для самостоятельных работ. Написанная программа
проверяется на компьютере.
Варианты заданий.
№1. Составить программу вычисления значений функции F(x) на отрезке [a;b] с шагом h.
Результат представить в виде таблицы, первый столбец которой – значение аргумента, второй –
соответствующее значение функции:
1) F(x) = x-sin(x).
1
17) F(x) =sin   +2.
2) F(x) = 2cosx-1.
x
3) F(x) = ctgx+1.
18) F(x) =2sin 2 x+1.
4) F(x) = x∙sinx.
19) F(x) =sinx+tgx.
1
x
5) F(x) = x∙cos   +2.
20) F(x) =2tg +1.
x
2
6) F(x) = x  cos 2 x .
x 1
21) F(x) =ctg  sin x .
7) F(x) = cosx+ctgx.
3 2
x
22) F(x) =2cos x +0,5.
8) F(x) = tg +2cosx.
2
1
x
23) F(x) = ctg  4 .
1
x
9) F(x) = sin +1.
2
4
2
4
1
24) F(x) =7sin 2 x  cos x .
10) F(x) = x 2  sin 2 x  1 .
2
11) F(x) = sin 2 x  cos 2 x .
25) F(x) =tg2x-3.
12) F(x) = -cos2x.
x
26) F(x) =
.
13) F(x) = sinx+0,5cosx.
cos x
2
14) F(x) = sin x .
15) F(x) =tgx.
16) F(x) =sinx-cosx.
13
№2. Дано натуральное число n. Вычислить:
1 1 1
1
1) S=1-    ...  (1) n  n
2 4 8
2
2 4 6
2N
2) P=    ... 
3 5 7
2N  1
3) S=12+234+…+n(n+1)…2n.
1 
1 
1 

4) P= 1  2 1  2   ...1  2  , где n>2.
 2  3   n 
1 
 1  1  1  
5) P= 1  1  1    ...1   .
 2  4  6   2n 
6) S=1!+2!+3!+…+n! (n>1).
1
1
1
1
7) S= 2  2  2  ... 
.
3
5
7
2n  12
8) Y=135…(2n-1).
9) Y=246…(2n).
2 3 4
n 1
10) S=    ... 
.
1 2 3
n
11) Y=sin1+sin1,1+sin1,2+…sin2.
12) P=a(a+1) …(a+n-1), где а - действительное число.
13) P=a(a-n)(a-2n) …(a-n2), где а - действительное число.
1 1
1
1
14) S=  2  4  ...  2 n  2 , где а - действительное число.
a a
a
a
Домашнее задание.
По тексту программы определите поставленную задачу и сформулируйте для неё условия.
Напишите, какое значение примет переменная а в результате выполнения программы.
Var a, n:integer;
Begin
a:=2; n:=a;
repeat
n:=a+2;
a:=n-1;
until a=1245;
writeln(a);
End.
Условие задачи: _________________________________________
____________________________________________________________.
Ответ: a  _____ .
Урок 7, 8. Практическая работа «Задача «Угадайка»
Проверка домашнего задания.
В результате выполнения данной программы переменная a будет каждый раз увеличиваться на 1
и станет равна 1245.
Практическая работа.
Описание работы. Требуется написать программу для игры «Угадайка». По условиям игры
программа «загадывает» некоторое целое число Х. Игрок вводит с клавиатуры числа. После ввода
очередного числа (обозначим его Y) программа сообщает о том, что Х больше или меньше введённого числа. В зависимости от ответа программы игрок вводит следующее большее или меньшее
число. Если игрок угадывает число, то на экран выводится поздравление и количество сделанных
игроком попыток, после чего программа завершается.
Последовательность действий, выполняемых данной программой, очевидна:
1) программа «загадывает» число Х;
2) вводится число Y;
14
3) Y сравнивается с Х;
4) вводится число Y;
5) Y сравнивается с Х;
6) вводится число Y;
7) Y сравнивается с Х;
Если введённое число Y совпадает с Х, то программа завершается. Для построения циклического алгоритма, во-первых, необходимо выделить ту группу действий, которые повторяются. В
данном примере это действия «вводится число Y» и «Y сравнивается с Х». Такая группа действий
образует тело цикла. Во-вторых, необходимо каким-то образом остановить процесс повторения
выбранных нами действий. По условию задачи программа должна завершиться, как только игрок
угадает число. Это условие можно записать с помощью логического выражения X  Y . Итак, тело
цикла надо выполнять до тех пор, пока не выполнится условие X  Y .
Описание алгоритма словесным способом, при этом добавим вывод сообщения о том, что загаданное число больше (меньше) введённого игроком, и подсчёт числа попыток, выполненных игроком, которое обозначим через n:
1) программа «загадывает» число Х; n:=0;
2) вводится число Y;
3) n увеличивается на 1;
4) если X  Y , то вывести сообщение «больше», если X  Y , то вывести сообщение «меньше»;
5) если X  Y , то перейти к пункту 6, иначе перейти к пункту 2;
6) вывести сообщение «Вы угадали число за n попыток!».
Теперь в тело цикла входят действия 2, 3 и 4; 5-е действие соответствует проверке условия
завершения цикла.
На рисунке представлена схема данного алгоритма.
При написании программы необходимо выбрать оператор цикла, соответствующий описанному алгоритму. Выход из цикла происходит при истинности условия X  Y , причём условие
проверяется после выполнения тела цикла. Все признаки указывают на выбор оператора цикла с
постусловием.
В приведённой ниже программе для «загадывания» числа Х исначало
пользуется функция random(max), которая возвращает целое случайное
число, не превосходящее mах. Так, в результате выполнения оператора
«загадать» х
Х:=random(100) переменная Х может получить любое значение от 0 до
n := 0
99 .
ввод y
n := n +
1
да
x>y
нет
больше
да
x<y
нет
меньше
x=y
Program Ugadaika;
Var x,y,n:word;
Begin
randomize; {инициализация генератора случайных чисел}
x:=random(100);
n:=0;
repeat
writeln(‘Введите число’);
readln(y);
n:=n+1;
if x>y then writeln(‘больше’);
if x<y then writeln(‘меньше’);
until x=y;
writeln(‘Вы угадали число за ’,n,‘ попыток’);
End.
нет
да
вывод n
конец
Задания к выполненной работе:
15
1. Измените в программе для задачи «Угадайка» условие цикла так, чтобы игрок мог сделать
не более 10 попыток и в случае неудачи вывелось соответствующее сообщение.
…
repeat
…
until _______________;
_________writeln(‘Вы угадали число за’, n, ‘попыток’);
_________writeln(‘Вы не угадали число за 10 попыток’);
End.
2. Измените программу для задачи «Угадайка» так, чтобы можно было использовать цикл с
предусловием (для этого первое значение Y необходимо вводить до начала цикла).
…
x:=random(100);
n:=0;
__________________;
__________________;
while ___________ do
n:=n+1;
if x>y then writeln(‘больше’);
if x<y then writeln(‘меньше’);
writeln(‘Введите следующее число’);
read(y);
_____________;
writeln(‘Вы угадали число за’, n,‘попыток’);
End.
Урок 9, 10. Практическая работа «Задача вычисления наибольшего общего делителя»
Рассмотрим задачу вычисления наибольшего общего делителя (НОД) двух целых чисел.
Постановка задачи
Дано: целые числа a, b.
Требуется вычислить их наибольший общий делитель  НОД  a, b   .
Известны различные способы вычисления НОД, которые отличаются друг от друга как выполняемыми операциями, так и числом необходимых операций.
Первый способ поиска НОД  a, b  очевиден. Пусть a  b : будем последовательно пытаться делить число a на все целые числа, лежащие в промежутке от 2 до a / 2 . Если какое-то из чисел является делителем числа a, то проверим, является ли оно делителем числа b: если да, то сохраним его
в переменной D и продолжим поиск. Если будет найден ещё один общий делитель, то запишем его
на место старого в переменную D и т.д. В результате в переменной D окажется НОД  a, b  .
Второй способ поиска НОД  a, b  был придуман ещё до нашей эры древнегреческим математиком Евклидом (об этом упоминалось в первой главе), и заключается он в следующем. Большее
из заданных чисел заменяется на их разность, затем большее из полученных чисел опять заменяется на соответствующую разность. Процесс повторяется до тех пор, пока числа не примут одинаковое значение, — оно и будет наибольшим общим делителем. В таблице 4.1 представлен процесс
вычисления НОД  a, b  , где a  114 , b  48 , из последней строки получаем значение НОД 114;48  6 .
Шаг поиска
НОД
1
2
3
4
5
6
7
a
b
Разность
114
66
18
18
18
6
6
48
48
48
30
12
12
6
66
18
30
12
6
6
0
Для построения циклического алгоритма, как и в предыдущей задаче, выделим повторяющуюся последовательность действий, образующих тело цикла. На каждом шаге цикла выбирается
большее из двух чисел и из него вычитается второе число. Перед выполнением тела цикла каждый
раз проверяется условие a  b : если оно истинно, то тело цикла выполняется, в противном случае
16
цикл завершается и выводится результат. На рисунке представлена схема этого алгоритма, называемого алгоритмом Евклида с вычитанием.
Третий способ вычисления НОД, получивший название алгоритма Евклида с делением, отличается от предыдущего тем, что в качестве основной используется не операция вычитания, а
операция взятия остатка при делении. Большее из заданных чисел заменяется остатком от деления
на меньшее, затем большее из полученных чисел опять заменяется остатком от деления на меньшее. Процесс повторяется до тех пор, пока одно из чисел не обратится в нуль, второе число и будет
равно наибольшему общему делителю. В таблице 4.2 представлен процесс вычисления НОД  a, b  по
алгоритму Евклида с делением, где a  114 , b  48 , из последней строки получаем значение
НОД 114;48  6 .
начало
ввод a, b
да
да
a≠b
нет
a<b
нет
вывод a
конец
a:= a — b
b:= b — a
Рис. 4.19
Шаг поиска НОД
1
2
3
4
5
a
114
18
18
6
6
Остаток от деления
18
12
6
0
b
48
48
12
12
0
Тело цикла будет включать выбор большего из чисел и замену его на остаток от деления
(например, если a  b , то a : a mod b ). Перед выполнением тела цикла каждый раз проверяется составное условие a  0 и b  0 : если оно истинно, то тело цикла выполняется, в противном случае
цикл завершается. После выхода из цикла необходимо проверить, какое из чисел не равно нулю, и
вывести его как результат. Наверное, вы обратили внимание, что для вычисления НОД 114;48 по
этому алгоритму потребовалось на 2 шага меньше, чем в предыдущем случае. Действительно, алгоритм Евклида с делением вычисляет НОД за меньшее количество шагов, но платой за это является использование более сложной операции. В главе 7 рабочей тетради вам будет предложено
разработать алгоритм вычисления остатка от деления, который покажет сложность операции вычисления остатка от деления по сравнению с операцией вычитания.
Задачи вычисления наибольшего общего делителя
1. Напишите программу NOD_Euclid_1 для вычисления НОД по алгоритму Евклида с вычитанием.
2. Cоставьте схему алгоритма и напишите соответствующую программу My_mod для вычисления остатка от деления целого числа а на целое число b. В алгоритме из арифметических операций разрешается использовать только операцию вычитания.
Идею, лежащую в основе алгоритма, поможет понять следующий пример. Требуется разложить поровну по пяти тарелкам 28 апельсинов, оставшиеся апельсины убрать в холодильник. Как
это легче сделать? Возьмём вначале 5 апельсинов и положим по одному на каждую тарелку, останется 22 апельсина. Из оставшихся апельсинов опять возьмём 5 и разложим по тарелкам, останется
17 и т.д., пока не останется три апельсина. Так как их нельзя разложить по тарелкам, не нарушив ра17
венство, то спрячем их в холодильник. Итак, последовательно отнимая по 5 апельсинов, мы получим: остаток от деления 28 на 5 равен 3.
Операция вычитания делителя выполняется, пока её результат больше делителя, в противном
случае выполняется выход из цикла. Последний результат вычитания и есть искомый остаток.
3. Постройте схему алгоритма и напишите программу NOD_ Euclid_2 для вычисления НОД
по алгоритму Евклида с делением.
Урок 11, 12. Оператор цикла с параметром.
Объяснение нового материала. На прошлом занятии мы познакомились с видами циклов и
с особенностями использования итерационных циклов. Это занятие посвящено регулярным циклам.
В том случае, когда количество повторений заранее известно, используется цикл Для. Здесь
само условие выполнения цикла содержит информацию о том, сколько раз надо повторить его выполнение, например, в виде диапазона изменения цикловой переменной.
Цикл Для:
ПОВТОРЯТЬ n раз тело цикла
Цикл реализуется с помощью оператора For, позволяющего организовать цикл с предусловием. Решение о выполнении или невыполнении в очередной раз тела цикла принимается до начала
его прохождения, поэтому может случиться так, что тело цикла не будет выполнено ни разу.
В Турбо-Паскале имеются два оператора для организации регулярного цикла: прямой и обратный. Прямой пересчет идет от известного меньшего числа до известного большего, на каждом
шаге прибавляется единица (например, от 20 до 30: 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30).
Оператор прямого пересчета:
For i := n1 to n2 do оператор;
Обратный пересчет идет от известного большего числа до известного меньшего, на каждом
шаге единица вычитается (например, от 30 до 20: 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20).
Оператор обратного пересчета:
For i := n2 downto n1 do оператор;
Здесь i – параметр цикла (счетчик), эта переменная такого типа, значение которого известно
точно, например, целочисленная. При прямом пересчете всегда меняется от меньшего значения к
большему;
nl и n2 – выражения того же типа, что и параметр цикла, значения которых соответственно
равны начальному и конечному значению счетчика.
Выполняется цикл прямого пересчета так:
1) вычисляются значения выражений n1, n2;
2) параметру цикла присваивается значение n1;
3) если полученное значение счетчика больше n2, то выполнение цикла заканчивается;
4) выполняется тело цикла;
5) значение параметра цикла увеличивается на 1, осуществляется переход к пункту 3.
После заголовка (for i := n1 to n2 do) оператора должен стоять один оператор, который повторяется циклически (тело цикла). Тело цикла может не содержать операторов (пустой
цикл), а в общем случае содержит составной оператор (один и более операторов). При i = n1 цикл
выполняется первый раз (если значение n1 не превышает n2). Затем берется следующее значение
переменной i (для целочисленной переменной это i+1) и осуществляется проверка, не превысило
ли полученное значение величину n2. Если i+1 <= n2, то оператор выполняется, если нет, то происходит выход из цикла и выполнение следующего по порядку оператора программы.
Количество проходов цикла с заголовком for i := nl to n2 do можно вычислить по формуле
n2 – n1 + 1.
Количество выполнений тела цикла определяется до первого выполнения тела цикла, поэтому, если в выражении n2 используются переменные, которые изменяются в теле цикла, это никак
не повлияет на количество выполнений тела цикла. Например, в следующей последовательности
операторов:
n := 10;
For i := 1 to n do
18
Begin
Write (i);
n := 100;
End;
тело цикла будет выполняться 10 раз, хотя уже после первого выполнения тела цикла конечное
значение параметра цикла станет равным 100.
При использовании регулярных циклов следует соблюдать некоторые правила.
1) Значение счетчика цикла может использоваться в выражениях, входящих в операторы
тела цикла, но изменение значения счетчика цикла этими операторами недопустимо.
2) Запрещается вход в цикл, минуя оператор For, то есть передача извне управления на
операторы, составляющие тело цикла, недопустима. При такой передаче управления
значения выражений nl, n2 оказываются невычисленными. Извне возможна передача
управления только на заголовок цикла, то есть на оператор For.
3) Допускается выход из цикла в любое время, например, с помощью оператора Goto, но
не стоит этим пользоваться, гораздо лучше, чтобы оператор For имел одну точку входа и
одну точку выхода.
Пример. Сколько раз будет выполнено тело цикла с данным заголовком?
1) for i:=-10 to -4 do
2) for i:=6 to 2 do
3) for i:=3 to 3 do
Комментарий
Цикл под номером 1 будет выполняться для счетчика, последовательно принимающего значения –10, –9, –8, –7, –6, –5, –4,то есть 7 раз.
Цикл под номером 2 не будет выполняться ни разу, так как начальное значение счетчика больше конечного.
Цикл под номером 3 будет выполняться 1 раз для счетчика, равного 3.
Решение задач.
1. Найти значение n!  1 2  3   n .
Var i,n,p:integer;
Begin
read(n);
p:=1;
for i:=1 to n do
begin
p:=p*i;
writeln(p);
end;
End.
2. В результате выполнения программы значение переменной х должно стать равным 100.
Выберите правильный вариант из приведённых ниже программ. В остальных программах укажите
строки, в которых, по вашему мнению, содержится ошибка. Ответ: ____.
Var i,x:integer;
Begin
x:=0;
for i:=1 to 100 do
x:=x+1;
End.
3)
Var i,x:integer;
Begin
x:=0;
for i:=1 to 100 do
x:=x+100;
End.
1)
Var i,x:integer;
Begin
x:=0;
for i:=1 to 100 do
x:=x+i;
End.
4)
Var i,x:real;
Begin
x:=0;
for i:=1 to 100 do
x:=x+1;
End.
2)
3. В результате выполнения программы на экран должны быть выведены числа, полученные
умножением переменной х на числа от 1 до 10. Выберите правильный вариант из нижеприведённых
программ. В остальных программах укажите строки, в которых, по вашему мнению, содержится
ошибка. Ответ: ______.
1)
Begin
Var i,x:integer;
Var i,x,y:integer;
2)
Begin
19
read(x);
for i:=1 to 10 do
begin
x:=x*i;writeln(x);
end;
End.
3)
Var i,x:integer;
Begin
read(x);
for i:=1 to 10 do
writeln(x*i);
End.
read(x);
for i:=1 to 10 do
y:=x*i;
writeln(y);
Еnd.
Var i,x:integer;
Begin
read(x);
for i:=1 to 10 do
writeln(‘x*i’);
End.
4)
Домашнее задание.
1. Вводится n чисел. В результате выполнения программы на экран должно быть выведено
среднее арифметическое чётных чисел. Выберите правильный фрагмент программы из нижеприведённых. В остальных укажите строки, в которых, по вашему мнению, содержится ошибка. Ответ:____.
Var i,x,s:integer;
Begin
read(x);s:=0;
if x mod 2=0 then
begin
for i:=1 to 10 do
s:=s+x;
writeln(s/10:4:2);
end;
End.
3)
Var i,x,s,k:integer;
Begin
s:=0; k:=0;
for i:=1 to 10 do
begin
read(x);
if x mod 2=0 then
begin
s:=s+x;
k:=k+1;
end;
end;
if k=0 then writeln(s)
else writeln(s/k:4:2);
End.
1)
Var i,x,s:integer;
Begin
read(x);
s:=0;
for i:=1 to 10 do
if x mod 2=0 then
s:=s+x;
writeln(s/10:4:2);
End.
2)
Var i,x,s,k:integer;
Begin
s:=0; k:=0;
for i:=1 to 10 do
begin
read(x);
if x mod 2=0 then
s:=s+x;
k:=k+1;
end;
if k=0 then
writeln(s)
else writeln(s/k:4:2);
End.
4)
2. Вводится n целых чисел. В результате выполнения программы на экран надо вывести числа,
большие 100, и количество этих чисел. Выберите правильный фрагмент программы из нижеприведённых. В остальных укажите строки, в которых, по вашему мнению, содержится ошибка. Ответ:____.
Var i,x,p:integer;
Begin
p:=0;
for i:=1 to 10 do
begin
read(x);
if x>100 then p:=p+x;
writeln(x);
end;
writeln(p);
End.
1)
Var i,x,p:integer;
Begin
p:=0;
for i:=1 to 10 do
begin
read(x);
if x>100 then
begin
p:=p+1;
writeln(x);
3)
Var i,x,p:integer;
Begin
p:=0;
for i:=1 to 10 do
begin
read(x);
if x>100 then
p:=p+1;
writeln(x);
end;
writeln(p);
End.
4)
Var i,x,p:integer;
Begin
p:=0;
for i:=1 to 10 do
begin
read(x);
if x>100 then
begin
p:=p+1;
writeln(x);
2)
20
end;
end;
writeln(p);
End.
writeln(p);
end;
end;
End.
Урок 13. Решение задач по теме «Цикл с параметром»
Проверка домашнего задания.
Проверяются ответы на домашние упражнения.
Рассмотрим задачу вычисления 2n .
Постановка задачи
Дано целое натуральное n.
Требуется: вычислить 2 n .
Построение алгоритма
По определению 2n  2  2  ...2
n
Чтобы вычислить 2 , надо вначале 1 умножить на 2, затем полученный результат снова
умножить на 2 — получим 2 2 ; если ещё раз умножить на 2 — получим 2 3 и т.д. Таким образом,
если выполнить «умножение на 2» n раз, то получим 2 n . Пусть результатом вычисления 2 n будет
X. Тогда для:
n 1
X 2;
n2
X  2  2 {выполнение умножения 2 раза };
n3
X  2  2  2 {выполнение умножения 3 раза };
n4
X  2  2  2  2 {выполнение умножения 4 раза };
n5
X  2  2  2  2  2 {выполнение умножения 5 раз }.
В программе переменная k, параметр цикла, будет иметь роль счётчика числа перемножений.
Теперь посмотрим на решение задачи вычисления 2 n с другой позиции. Пусть результатом вычисления 2 n будет x и программа будет содержать цикл с использованием параметра k. Переменная x для различных k будет принимать значения:
x:=1 { начальное значение x }
k:=1; x:=x*2; { 21 };
k:=2; x:=x*2; { 2 2 };
k:=3; x:=x*2; { 23 };
.................
k:=n; x:=x*2; { 2 n }.
Параметр k играет роль счётчика числа повторений цикла (числа итераций). Для вычисления
очередного значения х берётся предыдущее значение х и
начало
умножается на 2, при этом начальное значение х полагается
равным 1.
Ввод n
На рисунке приведена схема алгоритма возведения числа 2 в степень n. На схеме штрих-пунктиром выделены те
блоки, которые включаются в конструкцию оператора for
x := 1
k:=1 to n do, хотя явно в виде отдельных операторов в программе не присутствуют.
k := 1
n
Построение программы
В программе stepen_2_n используются целочисленные переменные: А, n — переменные для входных данных,
Х — переменная для хранения результата; k — переменная,
показывающая степень уже полученного числа.
Program stepen_2_n;
Var n,x,k:word;
Begin
write(‘Введите n: ’);
readln(n);
x:=1;
for k:=1 to n do
да
x := x * 2
k := k + 1
21
k≤n
нет
Вывод х
конец
x:=x*2;
writeln(‘2 в степени ’, n,’ равно ’,x);
End.
Домашнее задание:
1. Как можно изменить программу stepen_2_n, чтобы тело цикла выполнялось не n, а ( n  1 )
раз?
2. Как можно изменить программу stepen_2_n, чтобы вычислить A n .
3. Внесите в таблицы значения переменной х, которые она принимает на k-м шаге цикла в
программе stepen_A_n при заданных значениях А и n:
1) A  2 , n  6
2) A  3 , n  5
3) A  10 , n  5
k
x
k
x
k
x
1
2
1
3
1
2
3
4
5
6
4. Переменные какого типа не могут выступать параметром цикла и почему?
5. Почему для реализации алгоритма решения задачи «Угадайка» нельзя использовать цикл с
параметром?
_____________________________________________________________
____________________________________________________________.
Урок 14. Самостоятельная работа.
Проверка домашнего задания
Тетради, с выполненным домашним заданием, собирает на проверку учитель.
Самостоятельная работа
На этом уроке учащимся предлагается принять участие в разработке алгоритма для решения задачи вычисления суммы A  A2  A3   An . Работа выполняется на отдельных листочках с
напечатанными заданиями. В конце урока листочки собираются учителем, проверяются, оценка
ставится в журнал.
Постановка задачи
Дано: целые положительные числа А, n.
Требуется найти: A  A2  A3   An .
Построение алгоритма
Из записи суммы видно, что операция сложения повторяется n раз (сумму можно записать
как 0  A  A2  A3   An ). Обозначим X  Ak , где k  1, 2,3, , n , а сумму A  A2  A3   Ak обозначим
S.
Рассмотрите значения переменных X и S для различных значений k:
k 1 — X  A, S  A;
k  2 — X  A2 , S  A  A2  S  A2  S  X ;
k  3 — X  __ , S  A  A2  A3  __  A3  __  __ ;
k  4 — X  __ , S  A  A2  A3  A4  __  A4  __  __ ;
...
k  n — X  An , S  A  A2   An1  An  S  An  S  X .
Начальное значение Х равно 1, а начальное значение S равно 0. На каждом k-м шаге цикла
необходимо: 1) получить очередное значение X  Ak , 2) увеличить предыдущее значение переменной S на Х и результат сохранить в S.
1) Заполните схему алгоритма.
22
Начало
–
+
Конец
Схема алгоритма
2) Какие операторы
входят в тело цикла?
Ответ: ___________________________________________________
____________________________________________________________.
3) Напишите программу Program Sum_A_n.
Program Sum_A_n;
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
4) Как надо изменить программу, чтобы на экран выводилось значение A k для k  1, 2,3, , n ?
Ответ: ___________________________________________________
____________________________________________________________.
5) Внесите в таблицы значения переменных х и s, которые они принимают на k-м шаге
цикла при заданных значениях а и n:
а) a=10, n=5
б) a=2, n=6
в) a=3, n=5
k x
s
k x
s
k x
s
1
1
1
23
6) В программах Sum1_A_n и Sum2_A_n вычисляются значения некоторых из нижеперечисленных выражений. Найдите вычисляемые ими выражения и напротив них напишите название программы (предполагается, что n — натуральное число):
A  A2  A3   An
_______________;
_______________;
A  2 A  3 A   nA
_______________;
2 A  4 A  6 A   2nA
_______________;
A  3A  5 A    2n 1 A
3
5
2 n 1
A A  A   A
_______________;
A2  A4  A6   A2n
_______________;
A  2 A2  3A3   nAn _______________.
Program Sum1_A_n;
Var A, n, x, k, s:word;
Begin
write(‘Введите А и n: ’);
read(A, n);
x:=1; s:=0;
for k:=1 to n do
begin
x:=x*A;
if k mod 2=0 then
s:=s+x;
end;
writeln(‘Результат:’,s);
End.
Program Sum2_A_n;
Var A, n, x, k, s:word;
Begin
write(‘Введите А и n:’);
read(A, n);
x:=1; s:=0;
for k:=1 to n do
begin
x:=x*A;
s:=s+k*x;
end;
writeln(‘Результат:’,s);
End.
Урок 15. Практическая работа на компьютерах.
Каждому ученику выдается карточка с заданием. Учащийся должен составить алгоритм,
нарисовать блок-схему и написать программу для решения поставленной задачи, используя любую циклическую конструкцию.
Задачи для самостоятельного выполнения.
1. Последовательно вводится N целых чисел. Найдите сумму всех введённых положительных
чисел.
2. Выведите на экран список квадратов чисел от 1 до 20 (1, 4, 9, 16,…).
3. Выведите на экран в три столбца список чисел от 1 до N, их квадратов и кубов. Число N
вводите с клавиатуры. Например, для N  5 на экране должно быть:
1
1
1
2
4
8
3
9
27
4
16
64
5
25
125
4. Вычислите сумму S и произведение P всех целых чисел от N1 до N 2 . Пример: для N1  3 ,
N 2  7 получим S  25 , P  2520 .
5. Напишите программу вычисления выражения
3  x  6  x 9  x     21  x  , где x — действительное число.
6. Напишите программу вычисления выражения
y y y
  
2 4 6

y
,
2n
где n — натуральное число.
7. Дано целое число N  0 . Вычислите произведение N сомножителей вида 1.11.2 1.3 1.4 
8. Напечатайте таблицу соответствия между весом в русских фунтах и весом в килограммах
для значений от 1 до 10 фунтов с шагом 1 фунт, если 1 фунт = 410 г.
9. Определите среднюю зарплату сотрудника фирмы за год, если известна его зарплата за
каждый месяц.
10. Последовательно вводится N целых чисел. Найдите минимальное и максимальное число из
введённых чисел.
11. Последовательно вводятся целые числа, конец ввода — введение числа 10000. Найдите
сумму всех положительных введённых чисел.
12. Вывести на экран все целые числа от 100 до 200, кратные трем.
24
13. Вывести на экран все целые числа от А до В, кратные некоторому числу С.
14. Найти сумму положительных нечетных чисел, меньших 50.
15. Найти сумму целых положительных чисел из промежутка от А до В, кратных четырем.
16. Составить программу поиска трехзначных чисел, которые при делении на 47 дают в остатке
43.
17. Составить программу поиска четырехзначных чисел, которые при делении на 133 дают в
остатке 125, а при делении на 134 дают в остатке 111.
18. Определить количество натуральных чисел из интервала от 100 до 500, сумма цифр которого равна 15.
19. Определите количество трехзначных натуральных чисел, сумма цифр которого равна целому числу n (0<n≤27).
20. Найти все двузначные числа, сумма квадратов цифр которых делится на 13.
21. Найти сумму целых положительных чисел, больших 30 и меньших 100, кратных трем и
оканчивающихся на 2, 4 или 8.
22. Напечатать все кратные тринадцати натуральные числа, меньшие 100.
23. Дано натуральное число. Найти сумму его делителей.
24. Дано натуральное число. Найти сумму его четных делителей.
25. Дано натуральное число. определить количество его нечетных делителей.
26. Составьте программу для вычисления значений функции z  sin x  cos y для x  1;10 ,
y   5;5 , изменяющихся с шагом 1.
27. Имеются монеты достоинством 1 коп. и 5 коп. Определить способы сбора 15 коп.
28. Найти 3 натуральных числа, удовлетворяющих условию: 15x  20 y  30z  270 .
29. Составьте программу, выводящую на экран таблицу умножения (от 1 до 10) на введённое
вещественное число.
Например: ввели число 2,6.
На экране:
2.6 1  2.6 ;
2.6  2  5.2 ;
2.6  3  7.8 ;
;
2.6 10  26.
Домашнее задание.
Учащимся предлагается заполнить кроссворд «Служебные слова»
1
15
14
3
2
13
4
5
6
7
8
16
9
10
17
11
12
18
13
25
Слова по горизонтали: 1. Служебное слово оператора цикла с предусловием. 2. Вещественный тип данных. 3. Операция, с помощью которой можно определить предыдущий по номеру
символ. 4. С помощью этой операции можно определить код символа. 5. Раздел описания переменных начинается со слова... 6. Операция, допустимая только для целых чисел. 7. С этого слова
начинается условный оператор. 8. Открывающая операторная скобка. 9. Символьные переменные
описываются с помощью этого слова. 10. Если логическое выражение истинно, то выполняется
группа операторов, стоящих после этого служебного слова. 11. Слово, являющееся частью оператора
для двух видов цикла. 12. Смысл этого слова — «повторять». 13. Тип данных, предназначенный
для чисел, не превосходящих по модулю значение 128.
Слова по вертикали: 1. Положительные 16-разрядные числа описывают с помощью этого
служебного слова. 3. С этого слова начинается текст программы. 9. Постоянные величины определяют после этого служебного слова. 14. Логическая операция. 15. Конец текста программы. 16.
Это слово присутствует только в полной форме условного оператора. 17. Отрицание. 18. for…do.
Урок 16. Контрольная работа по теме «Циклы»
Вариант 1
1. Какой оператор организует цикл с предусловием?
A. while условие until <оператор>;
B. while условие do <оператор>;
C. repeat <операторы > do условие;
D. repeat <операторы > until условие;
2. Какое значение будет принимать переменная Y после выполнения фрагментов программы?
1. Var Y, X: integer;
2. Var Y, X: integer;
Begin
Begin
Y: = 1; X: = 15;
Y: = 1;
While X>5 do
X: = 10;
Begin
Repeat
X: = X – 3; Y: = Y*X
Y: = X*X;
End;
X: = X – 2;
Writeln (‘Y = ‘,Y);
Until X<=0;
End.
Writeln (‘Y=’,Y);
End.
3. Напишите, что будет выведено на экран в ходе выполнения фрагмента программы:
1. y := 0;
2. y := 0;
FOR x := 1 TO 9 do
FOR x := 1 TO 9 do
y := y + 1;
y := y + x;
Writeln (y);
Writeln (y);
4. Укажите фрагменты программ, корректно вычисляющие сумму целых чисел от n до k включительно. Значения переменных n и k удовлетворяют условиям: k<20, k>n, n>-20. Результат заносится в переменную m.
1) i:=n;
2) i:=n;
3) i:=n;
m:=0;
m:=0;
m:=0;
repeat
while i<=k do begin
repeat
m:=m+sqr(i);
m:=m+i*i;
m:=m+sqr(i);
i:=i+1;
i:=i+1;
i:=i+1;
until i<k;
end;
until i>=k;
5. Какое значение примет переменная х в результате выполнения следующих фрагментов программ?
26
1) x:=1;
while x<10 do
x:=x+3;
x:=x+1;
Ответ: ______.
2) x:=1;
while x<10 do
begin
x:=x+3;
x:=x+1;
end;
Ответ: ______.
3) x:=1;
4) x:=1;
while x<>1 do
while x<100 do
begin
begin
x:=x+3;
x:=x*2;
x:=x+1;
end;
end;
Ответ: ______. Ответ: _____
6. Какие значения примут переменные с и d после выполнения следующего фрагмента программы:
c:=0; d:=100;
while (с<10) and (d>10) do
begin
c:=c+3;
d:=d div 2;
end;
7. Какое значение примет переменная А после выполнения следующего фрагмента программы.
А:=1; b:= 3;
repeat
b:=b*(-2);
if b>0 then A:=A+b else A:=A-b;
until (b>10);
8. Какое значение примет переменная А после выполнения следующего фрагмента программы:
A:=0; x:=0;
for i:=1 to 5 do
begin
x:=x+0.1;
А:=A*x;
end;
9. Написать программу нахождения всех двузначных чисел, удовлетворяющих условию: остаток от деления числа на 3 равен 2.
Вариант 2
1. Какие из приведенных операторов организуют цикл со счетчиком?
A. while условие do <оператор>;
B. for i = nl to n2 do оператор;
C. repeat <операторы > until условие;
D. For i := n1 downto n2 do оператор;
2. Какое значение будет принимать переменная Y после выполнения фрагментов программы?
1. Var Y, X: integer;
2. Var Y, X: integer;
Begin
Begin
Y: = 0;
Y: = 1;
X: = 10;
X: = 15;
While X > 0 do
Repeat
Begin
Y: = Y*X;
X: = x – 2;
X: = X – 3;
Y: = Y + X
Until X<5;
End;
Writeln (‘Y=’,Y);
Writeln (‘Y=’,Y);
End.
End.
3. Напишите, что будет выведено на экран в ходе выполнения фрагмента программы:
27
1. FOR k := 1 TO 4 do
Write(k);
2. y := 0;
FOR x := 1 TO 5 do
y := y * x;
Writeln (y);
4. Укажите фрагменты программ, корректно вычисляющие сумму целых чисел от n до k включительно. Значения переменных n и k удовлетворяют условиям: k<1000, k>n, n>0. Результат заносится в переменную m.
1) i:=n;
2) i:=n;
end;
m:=m+i;
m:=0;
m:=0;
3) i:=n;
until i>k;
repeat
while i<=k do
m:=0;
4) m:=0;
m:=m+i;
begin
while i<=k do
For i:=n to k do
until i>k;
m:=m+i;
begin
m:=m+i;
i:=i+1;
i:=i+1;
5. В результате выполнения фрагмента программы на экран должно быть выведено значение
n!  1 2  3   n . Выберите правильный фрагмент из приведённых ниже. В остальных программах
укажите строки, в которых, по вашему мнению, содержится ошибка. Ответ: ________.
1) var
2) var i,n,p:integer;
3) var i,n,p:integer;
4) var i,n,p:integer;
i,n:integer;
begin
begin
begin
begin
read(n);
read(n);
read(n);
read(n);
p:=1;
for i:=2 to n do
p:=1;
for i:=1 to 10 do
for i:=2 to n do
p:=p*i;
for i:=1 to n do
begin
p:=p*i;
writeln(p);
begin
n:=n*i;
writeln(p);
end.
p:=p*i;
writeln(n);
end.
writeln(p);
end;
end;
end.
6. Какие значения примут переменные с и d после выполнения следующего фрагмента программы:
c:=25; d:=50;
while c*d>0 do
begin
c:=c-5;
d:=d div 2;
end;
7. Какое значение примет переменная А после выполнения следующего фрагмента программы:
А:=1; b:= 3;
repeat
b:=b*2;
if b<10 then A:=A*b else A:=A-b;
until (A<0);
8. Какое значение примет переменная А после выполнения следующего фрагмента программы:
A:=0; x:=0;
for i:=1 to 10 do
begin
А:=A+3;
end;
9. Составить программу поиска трехзначных чисел, которые при делении на 47 дают в остатке
43.
28
Заключение
Данная методическая разработка проходила апробацию на протяжении десяти лет. За это
время она дополнялась новым материалом, из нее убирались задания, непонятные и неинтересные
для учеников. Здесь представлен последний вариант методической разработки, который я использую последние три года.
Надо сказать, что качество знаний учащихся по программированию за эти годы значительно
выросло.
2005/2006
2006/2007
2007/2008
Учебный год
74%
85%
81%
Качество знаний
Учащиеся стали занимать на городских олимпиадах по информатике места выше, чем в
предыдущие годы (на диаграмме представлены места, занимаемые учащимися нашей школы на
городской олимпиаде по информатике).
2007/2008
2006/2007
3
5
2005/2006
2004/2005
2003/2004
17
5
6
Интерес к программированию вырос настолько, что ученики стали создавать свои собственные программные продукты в виде небольших обучающих программ.
В кружке по информатике с учениками старших классов мы решаем много олимпиадных задач и задач повышенной сложности, в том числе и по теме «Циклы». Самые интересные задачи,
связанные с числами, мы решили оформить в отдельный проект и назвали его «Удивительные
числа». Этот проект выполнен мною в соавторстве с учениками 11А класса и размещен на школьном сайте: http://www.21205s11.edusite.ru/DswMedia/index2.html.
Велика поступаемость выпускников нашей школы в вузы по специальностям, связанным с
информатикой. Все они успешно сдают экзамены по информатике, не испытывая при этом трудностей с пониманием этого предмета. Я считаю, что неплохие результаты обученности учеников
связаны именно с методикой преподавания предмета в школе.
29
Список использованной литературы
1. Семакин И.Г. Информатика и ИКТ. Базовый курс: Учебник для 9 класса. – 3-е изд. – М.: БИНОМ. Лаборатория знаний, 2007.
2. Информатика. Задачник-практикум в 2т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Том 1. –
М.: Бином. Лаборатория Знаний, 2002.
3. Информатика: Учебное пособие для 10-11 кл. общеобразовательных учреждений/ Л.З. Шауцукова. – 3-е изд. – М.: Просвещение, 2003.
4. Г.Г. Рапаков, С.Ю. Ржеуцкая. Turbo Pascal для студентов и школьников. – СПб.: БХВПетербург, 2003.
5. Н.Е. Тимошевкая, Е.А. Перышкина. Основы алгоритмизации и программирование на языке
Pascal. Справочник: Учебное пособие. – Томск, 2005.
6. Н.Е. Тимошевкая, Е.А. Перышкина. Основы алгоритмизации и программирование на языке
Pascal. Рабочая тетрадь: Учебное пособие. – Томск, 2004.
7. Н.Б. Культин. Turbo Pascal в задачах и примерах. – СПб.: БХВ-Петербург, 2004.
Перечень используемых ЦОР.
№
п/п
1
2
3
Название ЦОР, автор, класс
ЦОР к учебнику «Информатика и ИКТ. Базовый курс. 8-9 классы».
Семакин И.Г., Залогова Л.А., Русаков С.В., Шестаков Л.В.
«Вычислительная математика и программирование» (в комплекте
2 CD)
Электронное издание по дисциплине «Информатика» (в комплекте
2 CD)
30
Фирма-разработчик
ООО «БИНОМ.
Лаборатория знаний»
ЗАО «1С»
АНО «ФИО»
Скачать