«Процедуры и функции в Паскале»

(урок 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, а также про тип данных.

Исходные данные для тестирования программ готовьте самостоятельно

 

 

 

 

 

б) Вычислить общее сопротивление соединенных по схеме проводников, используя подпрограмму вызова функции.

 

 

Hosted by uCoz