23-24 урок, 10 класс – теория
Учитель: Брух Т.В.
Дата: ___________
Тема «Процедуры. Изменяемые параметры в процедурах. Функции»
Цель урока: сформировать знания и умения учащихся по данной теме.
Задачи урока:
· сформировать у учащихся понятия процедура и функции ;
· способствовать развитию познавательной деятельности учащихся, алгоритмического мышления, навыков работы на компьютере
· воспитывать необходимость связывать изучение нового материала с уже известными фактами.
Ход урока:
Этапы |
Деятельность учителя |
Деятельность учащихся |
||||||||||||||||||
1. Организационный момент |
Приветствие. Проверка отсутствующих. Организация внимания всех учащихся. |
Подготовка учащихся к работе. |
||||||||||||||||||
2. Проверка выполнения домашнего задания |
1. Что такое цикл? 2. Операторы цикла? 3. Что означает выражение «цикл с предусловием»? 4. В каком случае цикл с предусловием не выполняется ни разу? 5. В каком случае цикл с переменной не выполняется ни разу? 6. Верно ли, что любой цикл с переменной можно заменить циклом 7. В каком случае можно заменить цикл с условием на цикл с переменной? |
Отвечают на вопросы устно.
. |
||||||||||||||||||
3. Подготовка к основному этапу занятий |
Предположим, что в нескольких местах программы требуется Это можно сделать, например, так: вывод "Ошибка программы" write('Ошибка программы'); Конечно, можно вставить этот оператор вывода везде, где нужно
вывести сообщение об ошибке. Но тут есть две сложности. И
второй вопрос, который мы должны рассмотреть - функция. Нам уже
знакомы, потому что наверняка применяли стандартные функции языка
программирования (например, Так, как тема нашего урока: Процедура и функция |
Записывают тему урока в тетрадь. |
||||||||||||||||||
4. Усвоение новых знаний и способов действий |
Рассмотрим два примера две программы:
В школьном алгоритмическом языке процедура оформляется точно так же, как и основной алгоритм, но размещается после основной программы. В Паскале процедура начинается с ключевого слова procedure, тело процедуры начинается с ключевого слова begin и заканчивается ключевым словом end с точкой с запятой. Процедура располагается после блока объявления переменных, но выше основной программы. Фактически мы ввели в язык программирования новую команду Error, которая была расшифрована прямо в теле программы. Для того чтобы процедура заработала, в основной программе (или в другой процедуре) необходимо ее вызвать по имени. Как мы видели, использование процедур сокращает код, если какие-то операции выполняются несколько раз в разных местах программы. Кроме того, иногда большую программу разбивают на несколько процедур для удобства, оформляя в виде процедур отдельные этапы сложного алгоритма. Такой подход делает всю программу более понятной. Процедура с параметрами Процедура Error при каждом вызове делает одно и то же. Более интересны процедуры, которым можно передавать параметры (аргументы) — дополнительные данные, которые изменяют выполняемые действия. Предположим, что в программе требуется многократно выводить на
экран запись целого числа (0..255) в 8-битном двоичном коде. Старшая цифра в
такой записи — это частное от деления числа на 128. Далее возьмём остаток от
этого деления и разделим
Писать такой цикл каждый раз, когда нужно вывести двоичное число, очень утомительно. Кроме того, легко сделать ошибку или опечатку, которую будет сложно найти. Поэтому лучше оформить этот вспомогательный алгоритм в виде процедуры. Но этой процедуре нужно передать значение параметра — число для перевода в двоичную систему. Программа получается такой:
Основная программа содержит всего одну команду — вызов процедуры
printBin для
значения 99. В заголовке процедуры в скобках записывают тип и внутреннее имя
параметра (т. е. имя, по которому к нему можно обращаться в процедуре).
Значение параметра, переданное из вызывающей программы в процедуру В процедуре объявлена локальная (внутренняя) переменная k — она известна только внутри этой процедуры. Обратите внимание, что в школьном алгоритмическом языке локальные переменные объявляются после ключевого слова нач, а в языке Паскаль — до слова begin. В школьном алгоритмическом языке запрещено изменять параметры процедуры внутри процедуры, поэтому мы назвали параметр n0, а в начале процедуры скопировали его значение в переменную л. Параметров может быть несколько, в этом случае они перечисляются
в заголовке процедуры через занятую (в школьном алгоритмическом языке) или
точку с запятой (в Паскале). Например, процедуру, которая выводит экран
среднее арифметическое
Если несколько параметров одного типа стоят в списке один за другим, их можно определить списком:
Изменяемые параметры Напишем процедуру, которая меняет местами значения двух переменных. Проще всего для этого использовать третью переменную (пока напишем программу только на Паскале):
После запуска этой программы обнаружится, что значения переменных х и у остались прежними: на экран будет выведено: 2 3. Дело в том, что эта процедура работает с копиями переданных ей параметров. Это значит, что процедура Swap создаёт в памяти временные локальные переменные с именами а и b и копирует в них переданные значения переменных х и у основной программы. Поэтому и все перестановки в нашей программе были сделаны именно с копиями, а значения переменных л менялись. Такая передача параметров называется передачей по значению. В Паскале в заголовке процедуры перед меняемого параметра пишут ключевое слово var: procedure Swap (var a, b: integer); Теперь процедура решает поставленную задачу: на выходе мы увидим: 3 2, что и требовалось. В подобных случаях говорят, что параметры передаются по ссылке, а не по значению. Это означает, что фактически в процедуру передаётся адрес переменной и можно изменять значение этой переменной, записывая новые данные по этому адресу. При вызове процедуре Swap можно передавать только переменные, но не константы (постоянные) и не арифметические выражения. Например, вызовы Swap (2, 3) и Swap (x, у+3) противоречат правилам языка программирования, и программа выполняться не будет. В школьном алгоритмическом языке все параметры делятся на аргументы (исходные данные, обозначаются арг) и результаты (ключевое слово реэ, эти значения процедура передаёт вызывающей программе). По умолчанию (если не указано иначе), все параметры считаются аргументами. Поэтому два следующих заголовка равносильны:
В нашем случае параметры процедуры одновременно являются и аргументами, и результатами, поэтому их нужно объявлять с помощью ключевого слова аргрез. Приведём полную программу:
Перейдем к второму вопросу. Функция, как и процедура, — это вспомогательный алгоритм, который может принимать параметры (аргументы). Но, в отличие от процедуры, функция всегда возвращает значение-результат. Результатом может быть число, символ, символьная строка или данные другого типа. Составим функцию, которая вычисляет сумму цифр числа. Составим функцию, которая вычисляет сумму цифр числа.
Обратим внимание на особенности записи: тип возвращаемого значения
указывается в заголовке функции (в школьном алгоритмическом языке — перед
именем функции, в Паскале — в конце Логические функции Достаточно часто применяют специальный тип функций, которые
возвращают логическое значение (да или нет. True или False). Иначе
говоря, такая логическая функция отвечает на вопрос «Да или нет?» и
возвращает 1 бит информации. Например, вывести
Предположим, что у нас уже есть логическая функция isPrime, которая определяет простоту переданного ей числа и возвращает да
(в Паскале — True), если
число простое, и нет (False) в
противном случае. Такую функцию можно использовать
Эта функция возвращает логическое значение, на это указывает ключевое слово лог (в Паскале — boolean). Значение функции определяется как знач:« (count=0) Это оператор присваивания. Слева от знака «:—• записана логическая переменная, а справа — логическое выражение (условие). Если это выражение истинно, то в переменную знач записывается значение да, иначе — значение нет. |
Слушают
Запись в тетрадь
Запись в тетрадь
|
||||||||||||||||||
5. Первичная проверка понимания |
Напишите функцию, которая вычисляет максимальное из трёх чисел.
|
Составляют программу на компьютере |
||||||||||||||||||
6. Подведение итогов урока. |
Делаем анализ полученного материал (на слайде ответ) и оцениваем нашу работу. |
Проверяют результаты |
||||||||||||||||||
7. Домашнее задание
|
Напишите функцию, которая вычисляет сразу максимальное и минимальное из трёх чисел. (Используйте изменяемые параметры.) |
|
© ООО «Знанио»
С вами с 2009 года.