ФГБОУ ВПО «Воронежский государственный технический университет»
Кафедра конструирования и производства радиоаппаратуры
570-2015
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторным работам № 5-6 по дисциплине «Информатика» для студентов направления подготовки
11.03.03 «Конструирование и технология электронных средств» (профиль «Проектирование и технология радиоэлектронных средств»)
ипо дисциплине «Спецглавы информатики»
12.03.01«Приборостроение» (профиль «Приборостроение») очной и заочной форм обучения
Воронеж 2015
Составитель |
д-р техн. наук М.А. Ромащенко |
УДК 004.4
Методические указания к лабораторным работам № 5-6 по дисциплине «Информатика» для студентов направления подготовки 11.03.03 «Конструирование и технология электронных средств» (профиль «Проектирование и технология радиоэлектронных средств») и по дисциплине «Спецглавы информатики» для студентов направления подготовки 12.03.01 «Приборостроение» (профиль «Приборостроение») очной и заочной форм обучения / ФГБОУ ВПО «Воронежский государственный технический университет»; сост. М.А. Ромащенко, 2015. 21 с.
Методические указания предназначены для выполнения лабораторных работ № 5 и 6 по дисциплине «Информатика» бакалаврами первого курса направления подготовки 11.03.03 «Конструирование и технология электронных средств» и по дисциплине «Спецглавы информатики» бакалаврами первого курса направления подготовки 12.03.01 «Приборостроение» очной и заочной форм обучения.
Методические указания подготовлены в электронном виде и содержатся в файле ЛР 5-6.pdf.
Ил. 2. Библиогр.: 4 назв.
Рецензент д-р техн. наук, проф. О.Ю. Макаров
Ответственный за выпуск |
зав. кафедрой |
|
д-р техн. наук, проф. А.В. Муратов |
Издается по решению редакционно-издательского совета Воронежского государственного технического университета
© ФГБОУ ВПО «Воронежский государственный технический университет», 2015
1.ЛАБОРАТОРНАЯ РАБОТА №5
ПОДПРОГРАММЫ. ПРОЦЕДУРЫ И ФУНКЦИИ. РЕКУРСИЯ.
Цель работы: изучить принципы работы с подпрограммами, ознакомиться с локализацией имен в процедурах и функциях, ознакомиться с формальными и фактическими параметрами, уяснить назначение параметровзначений, параметров-переменных и параметров-констант. Освоить методы работы с рекурсией.
Время работы: 8 часов.
1.1. Домашние задания и методические указания по их выполнению
Задание 1 – получить представление о подпрограммах. Уяснить различие между процедурой и функцией.
Процедуры и функции представляют собой относительно самостоятельные фрагменты программы, оформленные особым образом и снабженные именем. Упоминание этого имени в тексте программы называется вызовом процедуры (функции). Отличие процедуры от функции в том, что результатом выполнения функции является одно число, поэтому вызов функции можно производить непосредственно в выражениях с константами и переменными. Процедуры и функции обобщают понятием подпрограмма.
Подпрограммы представляют собой инструмент, с помощью которого любая программа может быть разбита на ряд независимых друг от друга частей. Такое разбиение необходимо, потому что:
-это средство экономии памяти, каждая подпрограмма существует в программе в единственном экземпляре, в то время как обращаться к ней можно многократно из разных точек программы. При вызове подпрограммы активизируется последовательность образующих ее операторов, а с помощью передаваемых в подпрограмму параметров нужным образом модифицируется реализуемый в ней алгоритм.
-возможна реализация методики нисходящего программирования. В этом случае алгоритм представляется в виде последовательности относительно крупных подпрограмм, реализующих более или менее самостоятельные смысловые части алгоритма. Подпрограммы в свою очередь могут разбиваться на менее крупные подпрограммы нижнего уровня и т.д. Последовательное структурирование программы продолжают до тех пор, пока реализуемые подпрограммами алгоритмы не станут достаточно простыми, чтобы их можно было легко запрограммировать.
Задание 2 – ознакомиться с локализацией имен в программе и подпрограммах.
Любое имя в программе должно быть обязательно описано перед тем, как оно появится среди исполняемых операторов. Точно также обстоят дела и с подпрограммами – все используемые процедуры и функции необходимо описать в разделе описания.
Описать подпрограмму это значит – указать ее заголовок и тело. В заголовке объявляются имя подпрограммы и формальные параметры, если они есть. Для функции, кроме того, указывается тип возвращаемого ею результата. За заголовком следует тело подпрограммы, которое, подобно программе состоит из своего раздела описания и раздела исполняемых операторов. В разделе описаний подпрограммы могут встретиться описания подпрограмм низшего уровня, в тех – описания других и т.д.
Пример структуры размещения подпрограмм в Паскале
Program Test; Procedure A;
Procedure A1;
{Раздел описаний ПРОЦЕДУРЫ А1}
begin
{Раздел исполняемых операторов ПРОЦЕДУРЫ А1}
end; Procedure A2;
{Раздел описаний ПРОЦЕДУРЫ А2}
begin
{Раздел исполняемых операторов ПРОЦЕДУРЫ А2}
end;
begin
{Раздел исполняемых операторов ПРОЦЕДУРЫ А}
end; Procedure B;
{Раздел описаний ПРОЦЕДУРЫ В}
begin
{Раздел исполняемых операторов ПРОЦЕДУРЫ В}
end;
begin
{Раздел исполняемых операторов ПРОГРАММЫ}
end.
2
Подпрограмма любого уровня обычно имеет множество имен констант, переменных, типов и вложенных в нее подпрограмм низшего уровня. Считается, что все имена, описанные внутри подпрограммы, локализуются в ней, т.е. они как бы «невидимы» за пределами подпрограммы. Т.о. со стороны операторов обращающихся к подпрограмме, они трактуются как «черный ящик», в котором реализуется тот или иной алгоритм. Все детали этой реализации скрыты от пользователя подпрограммы и поэтому недоступны ему. В структуре приведенной на рис. 1 из основной программы можно обратиться к процедурам А и В, но нельзя вызвать вложенные процедуры А1 и А2. Это относится не только к именам подпрограмм, но и к константам, переменным и меткам.
Программа
Подпрограмма А
Подпрограмма А1
Подпрограмма А2
Подпрограмма В
Рис. 1. Локализация имен в Паскале
При входе в подпрограмму низшего уровня становятся доступными объявленные в ней имена, но при этом сохраняется доступ ко всем именам верхнего уровня. Можно представить, что любая программа окружена тонированным стеклом – снаружи мы не видим ее внутренности, но, попав в подпрограмму, можем наблюдать все, что делается снаружи. Так например, из подпрограммы А2 мы можем вызвать подпрограмму А и А1, использовать переменные объявленные в основной программе и подпрограммах А и А1 и обращаться к ним.
При взаимодействии подпрограмм одного уровня вступает в силу основное правило ТурбоПаскаля (как впрочем, и многих других языков программирования): любая подпрограмма перед ее использованием должна быть описана. Поэтому из подпрограммы В можно вызвать подпрограмму А, но из А вызвать В невозможно. Продолжая образное сравнение, подпрограмму можно уподобить ящику с непрозрачными стенками и дном, но с тонированной
3