Методический электронный образовательный центр Министерства образования Оренбургской области и Оренбургского государственного университета

Учителю
  • Быстрый поиск
  • Расширенный поиск
Тип материала:
Разделы:
Темы:

Процедура и функции (Ободова М. В.)

Текст урока

  • Конспект

     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

Презентация к уроку