29. Процедуры и функции
Название предмета Информатика
Класс 10
УМК
Поляков К. Ю, Еремин , Е.А. Информатика и ИКТ. Углубленный уровень: учебник для 10 класса: в 2 частях. Ч. 2 / К.Ю. Поляков, Е.А. Еремин, – Москва: Бином. Лаборатория знаний, 2013, - 304 с.: ил.
Уровень обучения (Углубленный уровень)
Тема урока Процедура и функции
Общее количество часов, отведенное на изучение темы 1 час
Место урока в системе уроков по теме 1 урок
Цель урока: сформировать знания и умения учащихся по данной теме.
Задачи урока:
сформировать у учащихся понятия процедура и функции ;
способствовать развитию познавательной деятельности учащихся, алгоритмического мышления, навыков работы на компьютере
воспитывать необходимость связывать изучение нового материала с уже известными фактами.
Учащиеся должны знать:
- структуру программ на Паскале;
- процедуру и функции.
Учащиеся должны уметь:
- составлять программы с процедурой и функцией.
Техническое обеспечение урока: персональный компьютер, проектор, презентация,
Содержание урока
Этапы
Деятельность учителя
Деятельность учащихся
1. Организационный момент
Приветствие. Проверка отсутствующих. Организация внимания всех учащихся.
Подготовка учащихся к работе.
2. Проверка выполнения домашнего задания
1.Задача
Определить количество трёхзначных натуральных чисел, сумма цифр которых равна заданному числу N.
2. п. 59. Вопросы
1 . Что такое цикл?
2. Сравните цикл с переменной и цикл с условием. Какие преимущества и недостатки есть у каждого из них?
3. Что означает выражение «цикл с предусловием»?
4. В каком случае цикл с предусловием не выполняется ни разу?
5. В каком случае программа, содержащая цикл с условием, может зациклиться? Приведите пример такой программы.
6. В каком случае цикл с переменной не выполняется ни разу?
7. Верно ли, что любой цикл с переменной можно заменить циклом
с условием? Верно ли обратное утверждение? Ответ обоснуйте.
8. В каком случае можно заменить цикл с условием на цикл с переменной?
Работают на ПК
Отвечают на вопросы устно.
В это время все остальные решают
задание на компьютере.
3. Подготовка к основному этапу занятий
Предположим, что в нескольких местах программы требуется
выводить на экран сообщение об ошибке: Ошибка программы.
Это можно сделать, например, так:
вывод
"Ошибка программы"
write('Ошибка программы');
Конечно, можно вставить этот оператор вывода везде, где
нужно вывести сообщение об ошибке. Но тут есть две сложности.
Во-первых, при этом строка-сообщение будет храниться в памяти
много раз. Во-вторых, если мы задумаем поменять текст сообщения, нужно будет искать эти операторы вывода по всей программе. Для таких случаев в языках программирования предусмотрены процедуры — вспомогательные алгоритмы, которые выполняют некоторые действия.
И второй вопрос, который мы должны рассмотреть - функция. Нам уже знакомы, потому что наверняка применяли стандартные функции языка программирования (например,
abs, sin, cos). Функция, как и процедура, — это вспомогательный алгоритм, который может принимать параметры (аргументы). Но, в отличие от процедуры, функция всегда возвращает
значение-результат. Результатом может быть число, символ, символьная строка или данные другого типа.
Так, как тема нашего урока:
Процедура и функция
Записывают тему урока в тетрадь.
4. Усвоение новых знаний и способов действий
Рассмотрим два примера две программы:
В школьном алгоритмическом языке процедура оформляется точно так же, как и основной алгоритм, но размещается после
основной программы.
В Паскале процедура начинается с ключевого слова
procedure, тело процедуры начинается с ключевого слова begin
и заканчивается ключевым словом end с точкой с запятой. Процедура располагается после блока объявления переменных, но
выше основной программы.
Фактически мы ввели в язык программирования новую команду Error, которая была расшифрована прямо в теле программы. Для того чтобы процедура заработала, в основной программе
(или в другой процедуре) необходимо ее вызвать по имени.
Как мы видели, использование процедур сокращает код, если
какие-то операции выполняются несколько раз в разных местах
программы. Кроме того, иногда большую программу разбивают на
несколько процедур для удобства, оформляя в виде процедур от-
дельные этапы сложного алгоритма. Такой подход делает всю
программу более понятной.
Процедура с параметрами
Процедура Error при каждом вызове делает одно и то же. Более интересны процедуры, которым можно передавать параметры
(аргументы) — дополнительные данные, которые изменяют выполняемые действия.
Предположим, что в программе требуется многократно выводить на экран запись целого числа (0..255) в 8-битном двоичном коде. Старшая цифра в такой записи — это частное от деления
числа на 128. Далее возьмём остаток от этого деления и разделим
на 64 — получается вторая цифра и т. д. Алгоритм, решающий
эту задачу для переменной n, можно записать так:
Писать такой цикл каждый раз, когда нужно вывести двоичное число, очень утомительно. Кроме того, легко сделать ошибку или опечатку, которую будет сложно найти. Поэтому лучше оформить этот вспомогательный алгоритм в виде процедуры. Но этой процедуре нужно передать значение параметра — число для пере-
вода в двоичную систему. Программа получается такой:
Основная программа содержит всего одну команду — вызов
процедуры printBin для значения 99. В заголовке процедуры в
скобках записывают тип и внутреннее имя параметра (т. е. имя,
по которому к нему можно обращаться в процедуре). Значение параметра, переданное из вызывающей программы в процедуру
(в этом примере — число 99), обычно называют аргументом.
В процедуре объявлена локальная (внутренняя) переменная
k — она известна только внутри этой процедуры. Обратите внимание, что в школьном алгоритмическом языке локальные переменные объявляются после ключевого слова нач, а в языке Паскаль — до слова begin.
В школьном алгоритмическом языке запрещено изменять параметры процедуры внутри процедуры, поэтому мы назвали параметр n0, а в начале процедуры скопировали его значение в переменную л.
Параметров может быть несколько, в этом случае они перечисляются в заголовке процедуры через занятую (в школьном алгоритмическом языке) или точку с запятой (в Паскале). Напри-
мер, процедуру, которая выводит экран среднее арифметическое
двух целых чисел, можно записать так:
Если несколько параметров одного типа стоят в списке один
за другим, их можно определить списком:
Изменяемые параметры
Напишем процедуру, которая меняет местами значения двух
переменных. Проще всего для этого использовать третью переменную (пока напишем программу только на Паскале):
После запуска этой программы обнаружится, что значения пе-
ременных х и у остались прежними: на экран будет выведено:
2 3. Дело в том, что эта процедура работает с копиями переданных ей параметров. Это значит, что процедура Swap создаёт в памяти временные локальные переменные с именами а и b и копирует в них переданные значения переменных х и у основной про-
граммы. Поэтому и все перестановки в нашей программе были сделаны именно с копиями, а значения переменных л
менялись. Такая передача параметров называется передачей по значению. в Паскале в заголовке процедуры перед
меняемого параметра пишут ключевое слово var:
procedure Swap (var a, b: integer);
Теперь процедура решает поставленную задачу: на выходе мы
увидим: 3 2, что и требовалось. В подобных случаях говорят, что
параметры передаются по ссылке, а не по значению. Это означает, что фактически в процедуру передаётся адрес переменной и
можно изменять значение этой переменной, записывая новые данные по этому адресу.
При вызове процедуре Swap можно передавать только переменные, но не константы (постоянные) и не арифметические выражения. Например, вызовы Swap (2, 3) и Swap (x, у+3) противоречат правилам языка программирования, и программа выполняться не будет.
В школьном алгоритмическом языке все параметры делятся
на аргументы (исходные данные, обозначаются арг) и результаты
(ключевое слово реэ, эти значения процедура передаёт вызывающей программе). По умолчанию (если не указано иначе) все параметры считаются аргументами. Поэтому два следующих заголовка равносильны:
В нашем случае параметры процедуры одновременно являются и аргументами, и результатами, поэтому их нужно объявлять с помощью ключевого слова аргрез. Приведём полную
программу:
Перейдем к второму вопросу. Функция, как и процедура, — это вспомогатель-
ный алгоритм, который может принимать параметры (аргумен-
ты). Но, в отличие от процедуры, функция всегда возвращает
значение-результат. Результатом может быть число, символ, символьная строка или данные другого типа.
Составим функцию, которая вычисляет сумму цифр числа.
Будем использовать следующий алгоритм (предполагается, что
число записано в переменной n):
Составим функцию, которая вычисляет сумму цифр числа.
Будем использовать следующий алгоритм (предполагается, что
число записано в переменной n):
Обратим внимание на особенности записи: тип возвращаемого
значения указывается в заголовке функции (в школьном алгоритмическом языке — перед именем функции, в Паскале — в конце
заголовка через двоеточие). Так же как и в процедурах, в фунциях можно объявлять и использовать локальные переменные.
Они входят ы «зону видимости» только этой функции, для всех
остальных функций и процедур они недоступны.
Логические функции
Достаточно часто применяют специальный тип функций, ко-
торые возвращают логическое значение (да или нет. True или
False). Иначе говоря, такая логическая функция отвечает на во-
прос «Да или нет?» и возвращает 1 бит информации. Например, вывести
на экран все простые числа в диапазоне от 2 до 1000.
Предположим, что у нас уже есть логическая функция
isPrime, которая определяет простоту переданного ей числа и
возвращает да (в Паскале — True), если число простое, и нет
(False) в противном случае. Такую функцию можно использовать
вместо выделенного блока алгоритма:
Эта функция возвращает логическое значение, на это указы-
вает ключевое слово лог (в Паскале — boolean). Значение функции определяется как
знач:« (count=0)
Это оператор присваивания. Слева от знака «:—• записана логическая переменная, а справа — логическое выражение (условие). Если это выражение истинно, то в переменную знач записывается значение да, иначе — значение нет.
Слушают
Запись в тетрадь
Запись в тетрадь
5. Первичная проверка понимания
Напишите функцию, которая вычисляет максимальное из трёх чисел.
Составляют программу на компьютере
6. Подведение итогов урока.
Делаем анализ полученного материал ( на слайде ответ) и оцениваем нашу работу.
Проверяют результаты
7. Домашнее задание
8.Рефлексия
§59, № 2. Напишите функцию, которая вычисляет сразу максимальное и минимальное из трёх чисел. (Используйте изменяемые параметры.)
Смотрите на каждое препятствие как на часть платы, которую мы вносим за наш будущий успех. Используйте трудности для укрепления своего характера, а не для ослабления его.
Колин Тернер
Ответьте на вопросы
Какие трудности одолевали Вас во время урока?
Чтобы Вы хотели повторить на следующем уроке?
Автор(ы): Ободова М. В.
Скачать: Информатика 10кл - Конспект.docxАвтор(ы): Ободова М. В.
Скачать: Информатика 10кл - Презентация к уроку.ppt