«Процедуры и функции в Паскале»
(урок 10 класс)
Овсеенко
Е.Г.
учитель
информатики
Тема: “Процедуры и функции в
Паскале”.
Продолжительность: 1 урок, 40 мин.
Вид урока: комбинированный (урок-практикум,
тренировочный урок).
Цели урока:
•
закрепить
теоретические знания;
•
правила
записи и вызова подпрограмм;
•
понятия
локальных и глобальных величин;
•
формальных
и фактических параметров;
•
рассмотреть
отличия между процедурами и функциями,
•
составить
программы с использованием подпрограмм;
•
ответить
на тест по теме: «Процедуры и функции»
Задачи
Образовательные |
Воспитательные |
Развивающие |
Закрепление
приобретённых знаний и умений, приобретение
навыков при решении задач на компьютере, систематизация
полученных знаний |
Развитие
познавательного интереса, воспитание самостоятельности
при выполнении заданий, выработка
умения работать в коллективе |
развитие логического мышления, памяти,
алгоритмической культуры учащихся; знаний и умений при составлении
подпрограмм на языке Паскаль |
Учащиеся
должны
знать |
уметь |
назначение
подпрограмм в языке Паскаль; правила записи, механизм вызова
и исполнения функций и процедур пользователя; понятия локальных
и глобальных величин, формальных и фактических параметров; отличия
между процедурами и функциями |
применять
принцип модульности при решении
задач средствами языка программирования Паскаль; выделять
вспомогательные алгоритмы в несложных задачах; формировать процедуры и
функции; правильно строить обращения к процедурам и функциям |
Оборудование:
-
Компьютеры,
мультимедийный проектор, экран.
-
ПО
MS Windows XP: среда программирования Turbo Pascal 7.0 и Паскаль АВС.
-
Раздаточный
материал.
Межпредметные связи: математика, физика.
Этапы урока:
Организационный момент
Приветствие
класса. Контроль отсутствующих. Формулировка темы и цели урока.
Ход урока.
Актуализация
опорных знаний.
Повторить структуру Паскаль программы:
PROGRAM имя;
раздел описаний
BEGIN
раздел операторов
END.
Раздел описаний:
USES - подключение библиотеки
VAR - подраздел переменных
PROCEDURE, FUNCTION - подраздел процедур и функций.
Контроль знаний учащихся по теме: «Процедуры и функции».
УСТНЫЙ ОПРОС.
Вступление
Иногда говорят, «за деревьями не видно леса».
Почему, и какова связь с темой урока?
Часто бывает, что за операторами не видно программы. Внешний вид и
лёгкость чтения программы улучшаются, если придать программе хорошую структуру.
Получается очень разборчиво. Пример(рис1)
Что такое подпрограмма?
Процедуры и функции аналогичны программам в миниатюре и имеют общее название -
подпрограммы.
Подпрограмма - это часть
программы, описывающая некоторый алгоритм, который можно многократно
использовать, обращаясь к нему из различных точек программы.
Подпрограмма это разделение
сложной задачи на подзадачи
Зачем нужны
подпрограммы?
Можно
единожды описать действия в подпрограмме, а затем лишь только вызывать ее.
Такой
принцип дефрагментации программы называется …?
Нисходящим
программированием и
соответствует принципам структурного программирования. Повышается надёжность
программы. Использование подпрограмм сокращает текст программы,
существенно уменьшает время исполнения.
Где
располагаются подпрограммы в программе?
В программе описание процедур и функций между разделами переменных и
операторов.
Как оформляется подпрограмма?
Подпрограмма оформляется подобно основной программе, т.е. состоит из заголовка,
раздела описаний, раздела операторов.
Различие глобальных и локальных
переменных?
Все имена, представленные в разделе описаний основной программы, называются
глобальными. Они действуют как в разделе операторов основной программы, так и в
любой подпрограмме. Имена, представленные в разделе описаний подпрограммы,
называют локальными. Они действуют только в рамках подпрограммы и недоступны
операторам основной программы.
Какие виды подпрограмм вы знаете?
В Паскале используются
подпрограммы двух видов: процедуры
(PROCEDURE) и функции (FUNCTION).
Встроенные (стандартные) процедуры и
функции являются частью языка
и могут вызываться по имени без предварительного описания. Например,
abs, sqrt, ln, sin…- функции (возвращают
результат), readln, write…
– процедуры (не возвращают результат). Их наличие существенно облегчает
разработку прикладных программ. Однако в большинстве случаев некоторые специфичные
для данной программы действия не находят прямых аналогов в библиотеках Turbo Pascal, и тогда
программисту приходится разрабатывать свои нестандартные процедуры и
функции. Например, вычисление функции Эйри, Лежандра,
Бесселя и др.
Оформление процедур.
PROCEDURE имя (формальные параметры);
раздел описаний
BEGIN
раздел операторов
END;
Вызывается процедура по имени:
имя (фактические параметры);
Фактические и формальные
параметры.
С помощью
фактических и формальных параметров данные передаются из программы в процедуру
и из процедуры в программу. В качестве формальных параметров могут быть только
переменные с указанием типа, а в качестве фактических параметров могут быть
константы, переменные, выражения без указания их типа.
Рассмотрим пример программы с
процедурой.
В программе risunok
не используются дополнительные переменные, поэтому после первой строки с
указанием имени программы сразу следует описание заголовка процедуры. Что
появится на экране после реализации следующей программы?
program
risunok; procedure kwadrat; begin writeln('*
* *'); writeln('* *'); writeln('*
* *'); end; begin kwadrat; writeln; writeln; kwadrat; writeln; writeln; kwadrat; end. |
Ученики: Output * *
* * * * *
* * *
* * * * *
* * *
* * * * *
* |
Как называется первая строка? Показать
тело процедуры. Какова структура процедуры? Как называются переменные, описанные в программе?
Первая строка процедуры обычно называется заголовком процедуры, и все последующие
операторы по END включительно называются телом процедуры.
Процедура
имеет такую же структуру, как и программа, но с двумя отличиями:
· Заголовок процедуры имеет другой синтаксис и включает
служебное слово Procedure;
· Описание процедуры
заканчивается точкой с запятой (а не точкой).
Все имена, описанные в программе до процедуры, действуют во всей
программе и в любой её подпрограмме ( если они там не
описаны заново). Они называются глобальными, в отличии
от локальных имён, описанных в процедуре и действующих лишь в ней.
Оформление функций.
Функция - это подпрограмма, результат выполнения которой есть
единственное скалярное значение, присваемое имени
этой функции.
FUNCTION ИМЯ(список
формальных параметров: тип): тип;
раздел описаний
BEGIN
раздел операторов;
END;
Вызывается функция по ее имени с указанием фактических параметров. При этом
вызов функции можно делать непосредственно внутри выражения, подобно тому, как
используются стандартные встроенные функции, например SIN(X).
В чём состоит отличие процедуры от
функции при вызове?
Отличие процедуры от функции состоит в том,
что при вызове функция через свое имя возвращает в вызывающий блок значение,
полученное в процессе ее выполнения, а процедура такого значения не возвращает.
Имя процедуре требуется только для ее вызова, а имя функции необходимо как для
ее вызова, так и для возвращения результата работы подпрограммы-функции.
Далее используем диск с КУРСАМИ по теме:
«Подпрограммы» слайд 7,8,9 и 10,11
По способу взаимодействия вызывающей и вызываемой подпрограмм параметры подразделяются
на
Для обеспечения такого взаимодействия
используются
КОМПЬЮТЕРНЫЙ ПРАКТИКУМ
Раздаются ученикам карточки с заданиями
· Задание на использование процедуры
с параметрами-переменными.
Осуществить обмен двух переменных.
·
Задание на использование процедуры без параметров, необходимо
вывести 135 звёздочек в строку.
· Задание - составление
программы, демонстрирующей различия между процедурами и функциями на примере
сложения двух целых чисел.
·
Задание*
на составление подпрограммы-функции вычисления общего сопротивления для двух
параллельно соединенных проводников.
ТЕСТОВЫЕ ЗАДАНИЯ
Используя электронное
учебное пособие для изучения программирования «Образовательные комплексы –
вычислительная математика и программирование», входящее в систему программ 1С:Образование 3.0 информационно-технологического профиля
(Б-углубленного изучение языка программирования Turbo Pascal) предлагается
ученикам пройти два варианта теста на центральном компьютере проецируя
изображение на доску по теме: «Подпрограммы».
Фактические параметры используются
при... |
|
Списки параметров нужны для... |
|
|
|||||||
Тело подпрограммы в Турбо-Паскале
должно находиться: |
|
Глобальные и локальные имена
занимают... |
|
Изобретение подпрограмм сравнивают
с... |
|
|||||||||
Параметры делятся на... |
|||||||||
|
|||||||||
Способы взаимодействия фактических
и формальных параметров определяются... |
|||||||||
|
Анализ результатов
Проверка
правильности выполнения индивидуальных заданий выполненных на ПК. Корректировка
умений и практических навыков учащихся. Сдаются программы
написанные на языке Паскаль учащимися группы.
Демонстрация
программ с использованием проектора.
Первое задание на использование
процедуры с параметрами-переменными
program
Zerkalo; var A,B:integer;
procedure
obmen (var x,y:integer ); var Help:
integer; begin Help:=x; x:=y;y:=Help; end; begin a:=1; b:=2;writeln(A,' ',B); obmen(a,b);writeln(A,' ',B); obmen(a,b);writeln(A,' ',B); end. |
Output 1 2 2 1 1 2 |
Второе задание на использование процедуры без
параметров, необходимо вывести 135 звёздочек в строку.
program StarLine;
procedure StarLine;
var i: integer;
begin
for i:=1 to 135 do
write('*');
end;
begin
StarLine;
end.
Output
**************************************************************
Третье
задание - программа, которая
демонстрирует различия между процедурами и функциями на примере сложения двух
целых чисел. Рассмотреть различия между этими двумя подходами.
program procedure_and_function;
var a,b,sum_numbers:integer;
procedure summing_up(var sum:integer; a,b:integer);
begin
sum:= a + b;
end;
function
sum(a,b:integer):integer;
begin
sum:= a + b;
end;
begin
a := 12; {Установка начальных
значений}
b := 15; {переменных "а"
и "b"}
{Суммирование чисел с использованием
процедуры}
summing_up(sum_numbers,a,b);
writeln('Cyмма чисел равна:',sum_numbers);
{Суммирование чисел с использованием
функции}
sum_numbers:=sum(a,b);
writeln('Cyммa чисел равна:',sum_numbers);
{При обращение к функции можно непосредственно использовать
оператор вывода writeln или write}
writeln('Cyммa чисел равна: ',sum(a,b));
end.
Вызов процедуры summing_up
производится по ее имени. Наряду с параметрами-значениями а и b, которые подлежат сложению, в списке параметров
процедуры присутствует параметр – переменная sum,
который содержит возвращаемое процедурой значение – сумму.
Четвёртое задание* - Составить
подпрограмму-функцию вычисления общего сопротивления для двух параллельно
соединенных проводников.
Описание функции на Паскале:
Function Par(X, Y: real):real;
begin
Par:=X
* Y
/ (X + Y);
end;
Внимание:
-
Не
забудьте про то, что знаменатель дроби не должен быть равен 0, а также про тип
данных. Исходные данные для тестирования программы задать самостоятельно.
Задание. Найти
общее сопротивление проводников, соединённых по схеме:
Решение.
program sopr;
uses crt;
Function Par(X, Y: real):real;
begin
Par:=X * Y / (X + Y);
end;
var RO, r1, r2,r3,r4,r5,r6:real;
begin
clrscr;
writeln;
write('r1=');read(r1);write('r2=');read(r2);write('r3=');read(r3);
write('r4=');read(r4);write('r5=');read(r5); write('r6=');read(r6);
RO := Par (R1,
R2) + Par (R3, Par (R4, R5)) + R6;
writeln('RO=',RO:5:2);
end.
Проверка:
Если r1=r2=r3=r4=r5=r6=1, тогда RO=1,83
Использование
функции пользователя в программе:
RO := Par (R1,
R2) + Par (R3, Par (R4, R5)) + R6;
Здесь
трижды вызывается функция Par. При третьем обращении
к функции Par (X, Y) в качестве фактических
параметров используются: для X – переменная R3,
для Y – функция Par (R4, R5).
R1, R2, R3,
R4, R5, R6, RO – глобальные переменные вещественного типа.
Домашнее задание
·
Читать
стр.243-252
·
Подготовить
ответ на контрольный вопрос №1 стр.252
·
Индивидуальные
карточки с многовариантными заданиями.
Подведение
итогов
·
В
каких случаях целесообразно использовать подпрограмму как функцию, в каких как
процедуру?
Оформлять
подпрограмму как функцию целесообразно только в том случае, если ожидается
результат работы подпрограммы. Если же последовательность команд ориентирована
на выполнение некоторого действия (выдача информации на экран и т.п.),
целесообразно оформлять ее как процедуру.
Процедура –
подпрограмма, не возвращающая ничего
Функция –
подпрограмма, возвращающая значение.
Функции являются частным случаем
процедур.
·
Что можно сказать о количестве, типе и
порядке следования фактических и формальных параметров?
Количество, тип и порядок следования
фактических и формальных параметров должны совпадать.
·
Обобщение деятельности учащихся на
уроке. Выставление оценок.
Приложение 2
Вариант 1 |
Вариант 2 |
Вариант 3 |
Вариант 4 |
Ответы -
операторы присваивания для вариантов заданий по карточкам
вариант
1 RO := R1 + Par(R2, R3 + R4) +
R5;
вариант
2 RO := Par (R1, R2) +
R3 + Par (Par (R4, R5), R6);
вариант 3 RO := Par (Par (R1 + R2 + R3, R4), R5 + R6) + Par(R7, R8);
вариант 4 RO := Par (R1, Par(R2 +
R3, R4)) + Par (Par (R5, R6), R7 + R8);
где RO – общее сопротивление на
участке цепи,
R1, R2, R3, R4, R5, R6, R7, R8 –
исходные данные.
program sopr;
uses crt;
Function Par(X, Y: real):real;
begin
Par:=X * Y / (X + Y);
end;
var RO, r1, r2,r3,r4,r5,r6,r7,r8:real;
begin
clrscr;writeln;
write('r1=');read(r1);write('r2=');read(r2);write('r3=');read(r3);
write('r4=');read(r4);
write('r5=');read(r5); write('r6=');read(r6); write('r7=');read(r7);
write('r8=');read(r8);
RO:= R1 + Par(R2, R3 +
R4)+R5;
{RO := Par (R1, R2) + R3 +
Par (Par (R4, R5), R6);
RO := Par (Par (R1 + R2 + R3,
R4), R5 + R6) + Par(R7, R8);
RO := Par (R1, Par(R2 + R3,
R4)) + Par (Par (R5, R6), R7 + R8); }
writeln('RO=',RO:5:2);
end.
program sopr; {Вычисляет сопротивление
электрической цепи}
uses crt;
function Sopr(r1,r2:real;t:integer):real;
begin
if t=1 then Sopr:=r1+r2 else
if t=2 then Sopr:=r1*r2/(r1+r2) else Sopr:=-1;
end;
var f, r1, r2:real; t:integer;
begin
clrscr;
writeln;
write('r1=');read(r1);
write('r2=');read(r2);
write('Тип соединения
(1-последовательное, 2-параллельное) - ');read(t);
f:=Sopr(r1,r2,t);
writeln('Sopr=',f:5:2);
end.
Приложение 1
Карточки с условиями задач разной сложности для
компьютерного практикума
Задание №1 |
Процедуры с
параметрами-переменными. Осуществить
обмен двух переменных. |
Задание №2 |
Процедуры без параметров. Вывести 135
звёздочек в строку. |
Задание №3 |
Демонстрация
различий между процедурами и функциями. Сложение двух целых чисел. |
Задание №4 |
а) Составить подпрограмму-функцию
вычисления общего сопротивления для двух параллельно соединенных проводников. Описание функции на Паскале: Function Par(X, Y: real):real; begin Par:=X * Y
/ (X + Y); end; Внимание: -
Не забудьте про то, что знаменатель дроби не должен быть равен 0, а также
про тип данных. Исходные данные для тестирования
программ готовьте самостоятельно б) Вычислить общее сопротивление
соединенных по схеме проводников, используя подпрограмму вызова функции. |