Процедуры. Изменяемые параметры в процедурах. Функции
Оценка 4.9

Процедуры. Изменяемые параметры в процедурах. Функции

Оценка 4.9
Разработки уроков
doc
информатика
10 кл
22.01.2023
Процедуры. Изменяемые параметры в процедурах. Функции
Тема «Процедуры. Изменяемые параметры в процедурах. Функции» Цель урока: сформировать знания и умения учащихся по данной теме. Задачи урока: • сформировать у учащихся понятия процедура и функции ; • способствовать развитию познавательной деятельности учащихся, алгоритмического мышления, навыков работы на компьютере • воспитывать необходимость связывать изучение нового материала с уже известными фактами. Ход урока: Этапы Деятельность учителя Деятельность учащихся 1. Организационный момент Приветствие. Проверка отсутствующих. Организация внимания всех учащихся. Подготовка учащихся к работе. 2. Проверка выполнения домашнего задания 1. Что такое цикл? 2. Операторы цикла? 3. Что означает выражение «цикл с предусловием»? 4. В каком случае цикл с предусловием не выполняется ни разу? 5. В каком случае цикл с переменной не выполняется ни разу? 6. Верно ли, что любой цикл с переменной можно заменить циклом с условием? Верно ли обратное утверждение? 7. В каком случае можно заменить цикл с условием на цикл с переменной? Отвечают на вопросы устно. . 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) Это оператор присваивания. Слева от знака «:—• записана логическая переменная, а справа — логическое выражение (условие). Если это выражение истинно, то в переменную знач записывается значение да, иначе — значение нет. Слушают Запись в тетрадь Запись в тетрадь
Процедуры. Изменяемые параметры в процедурах. Функции.doc

23-24 урок, 10 класс – теория

Учитель: Брух Т.В.

Дата: ___________

Тема «Процедуры. Изменяемые параметры в процедурах. Функции»

Цель урока: сформировать знания и умения учащихся по данной теме.

Задачи урока:

·                сформировать у учащихся понятия  процедура и функции ;

·              способствовать развитию познавательной деятельности учащихся,     алгоритмического мышления,  навыков работы на компьютере

·              воспитывать необходимость связывать изучение нового материала с уже известными фактами.

Ход урока:

Этапы

Деятельность учителя

Деятельность учащихся

1. Организационный момент

Приветствие. Проверка отсутствующих. Организация внимания всех учащихся.

Подготовка учащихся к работе.

2. Проверка выполнения домашнего задания

1. Что такое цикл?

2. Операторы цикла?

3. Что означает выражение «цикл с предусловием»?

4. В каком случае цикл с предусловием не выполняется ни разу?

5. В каком случае цикл с переменной не выполняется ни разу?

6. Верно ли, что любой цикл с переменной можно заменить циклом
с условием? Верно ли обратное утверждение?

7. В каком случае можно заменить цикл с условием на цикл с переменной?

 

 

 

 

Отвечают на вопросы устно.

 

.

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. Домашнее задание

 

 

Напишите функцию, которая вычисляет сразу максимальное и минимальное из трёх чисел. (Используйте изменяемые параметры.)

 


 

 


Учитель: Брух Т.В. Дата: ___________

Учитель: Брух Т.В. Дата: ___________

Функция, как и процедура, — это вспомогательный алгоритм, который может принимать параметры (аргументы)

Функция, как и процедура, — это вспомогательный алгоритм, который может принимать параметры (аргументы)

Писать такой цикл каждый раз, когда нужно вывести двоичное число, очень утомительно

Писать такой цикл каждый раз, когда нужно вывести двоичное число, очень утомительно

Изменяемые параметры Напишем процедуру, которая меняет местами значения двух переменных

Изменяемые параметры Напишем процедуру, которая меняет местами значения двух переменных

Приведём полную программу:

Приведём полную программу:

Усвоение новых знаний и способов действий

Усвоение новых знаний и способов действий
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
22.01.2023