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