Урок-исследование. Введение понятия "подпрограмма"

Разделы: Информатика


Цели занятия:

  • Дать понятие вспомогательного алгоритма - подпрограммы.
  • Рассмотреть описание подпрограммы-функции и подпрограммы-процедуры на языке программирования Pascal.
  • Через совместное решение поставленных задач способствовать развитию у учащихся навыков коллективной работы и умения брать на себя ответственность за принятое решение.

Материалы и оборудование: ПК, мультимедийный проектор, готовая деревянная рамка, деревянный брусок (2шт), ножовка(2шт), молоток(2шт), гвозди, рулетка (линейка)(2шт), верстак (стол), бейджики с учеными званиями.

Ход занятия

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

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

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

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

Объявление темы занятия. Учащиеся садятся на места, записывают тему занятия (тема занятия проецируется на экран). Чтобы быстрее добраться из одного населенного пункта в другой, человек изобрел поезда, автомобили, самолеты. Чтобы быстрее выполнить ту или иную работу, человек придумал разные хитроумные устройства. Чтобы быстрее решать задачи, человек создал компьютер. Борьба за экономию времени пронизывает всю историю человеческой деятельности. Для этого придумывались самые разнообразные вспомогательные средства. Есть такое средство и у программистов. Это вспомогательные программы, которые экономят время и уменьшают количество ошибок при написании программ.

Изучение нового материала.

Подпрограмма - это программа, которая реализует вспомогательный алгоритм. Основная программа реализует основной алгоритм решения поставленной задачи и содержит в себе обращения к подпрограммам.

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

Для использования вспомогательного алгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Pascal в разделе описания подпрограмм. В дальнейшем, при необходимости вызвать его в программе, делают вызов вспомогательного алгоритма упоминанием в нужном месте имени соответствующей подпрограммы со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.

В языке программирования Pascal существуют два типа подпрограмм: подпрограммы-функции и подпрограммы-процедуры. Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.

Структура описания процедур и функций похожа на структуру программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, переменных. Исполняемая часть содержит собственно операторы процедур.

Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры);

раздел описаний процедуры

begin

исполняемая часть процедуры

end;

Формат описания функции:

function имя функции (формальные параметры):тип результата;

раздел описаний функции

begin

исполняемая часть функции

end;

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры(список фактических параметров);

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

Вызов функции может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д. Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:

имя функции := результат;

При вызове процедур и функций необходимо соблюдать следующие правила:

  • количество фактических параметров должно совпадать с количеством формальных;
  • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

Рассмотрим использование процедуры на примере программы поиска наибольшего из двух целых чисел (код программы проецируется на экране).

var x,y,m: integer;

procedure MaxNum(a,b: integer; var max: integer);

begin

if a>b then max:=a else max:=b;

end;

begin

writeln('Введите x,y ');

readln(x,y);

MaxNum(x,y,m);

writeln('Наибольшее число: ',m);

end.

Эту же задачу решим с использованием функции (код программы проецируется на экране):

var x,y,m: integer;

function MaxNum(a,b: integer): integer;

var max: integer;

begin

if a>b then max:=a else max:=b;

MaxNum:= max;

end;

begin

writeln('Введите x,y ');

readln(x,y);

m := MaxNum (x,y);

writeln('Наибольшее число: ',m);

end.

Самостоятельная работа команд. Каждая команда решает поставленную перед ней задачу (аналогичную разобранной выше) и реализует ее на ПК.

Подведение итогов. Обобщение изученного на уроке материала. Домашнее задание. Вручение дипломов за успехи в исследовательской работе.