Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, полный углубленный курс, 4 часа в неделю)



Уроки 80 - 83
Процедуры и функции
§59. Процедуры. §60. Функции




Содержание урока

§59. Процедуры

Что такое процедура?

Процедура с параметрами

Изменяемые параметры

Вопросы и задания

Задачи

§60. Функции

§59. Процедуры


Изменяемые параметры


Напишем процедуру, которая меняет местами значения дву: переменных. Проще всего для этого использовать третью перемен ную (пока напишем программу только на Паскале):

После запуска этой программы обнаружится, что значения переменных х и у остались прежними: на экран будет выведено: 2   3. Дело в том, что эта процедура работает с копиями переданных ей параметров. Это значит, что процедура Swap создаёт в памяти временные локальные переменные с именами а и b и копирует в них переданные значения переменных х и у основной программы. Поэтому и все перестановки в нашей программе были сделаны именно с копиями, а значения переменных х и у не изменились. Такая передача параметров называется передачей по значению.

Чтобы решить проблему, нужно явно сказать, чтобы процедура работала с теми же ячейками памяти, что и основная программа. Для этого в Паскале в заголовке процедуры перед именем изменяемого параметра пишут ключевое слово var:

Теперь процедура решает поставленную задачу: на выходе мы увидим: 3   2, что и требовалось. В подобных случаях говорят, что параметры передаются по ссылке, а не по значению. Это означает, что фактически в процедуру передаётся адрес переменной и можно изменять значение этой переменной, записывая новые данные по этому адресу.

При вызове процедуре Swap можно передавать только переменные, но не константы (постоянные) и не арифметические выражения. Например, вызовы Swap (2, 3) и Swap(x, у+3) противоречат правилам языка программирования, и программа выполняться не будет.

В школьном алгоритмическом языке все параметры делятся на аргументы (исходные данные, обозначаются арг) и результаты (ключевое слово рез, эти значения процедура передаёт вызывающей программе). По умолчанию (если не указано иначе) все параметры считаются аргументами. Поэтому два следующих заголовка равносильны:

и

В нашем случае параметры процедуры одновременно являются и аргументами, и результатами, поэтому их нужно объявлять с помощью ключевого слова аргрез. Приведём полную программу:



Следующая страница Вопросы и задания



Cкачать материалы урока







Наверх