Изучение механизма передачи данных в подпрограммы Цель работы: - приобретение навыков в ручной трассировке (отладке) сложных программ; - приобретение навыков в определении (анализе) области видимости объектов (переменных и параметров) в программе; - приобретение навыков в организации обмена данными между программой и вызываемыми подпрограммами. 1. Теоретическая часть Перед началом выполнения данной работы необходимо изучить раздел 18 «Вспомогательные алгоритмы (подпрограммы)» конспекта лекций по дисциплине «Языки программирования». 2. Практическая часть Требования к выполнению заданий В каждом варианте необходимо проанализировать программу, состоящую из основного блока и четырех подпрограмм (процедур) – p1, p2, p3 и p4. И в основном блоке, и в вызываемых из него процедурах используются одноименные переменные, в разных вариантах это: а) a, b, c; б) u, v, w; в) p, q, r; г) x, y, z. Названные переменные в разных местах программы (в основном блоке программы, в подпрограммах) могут быть: - глобальной переменной; - локальной переменной процедуры; - формальным параметром процедуры. Целью анализа программы в каждом варианте являются определение (с учетом области видимости) в ручном режиме (без запуска программы, а только по ее тексту) и фиксация (на бумаге) текущих значений всех переменных в следующие моменты: - сразу после вызова подпрограммы (на момент входа в нее, т.е. до начала выполнения действий в ней); - после выполнения каждого оператора в основном блоке программы; - после выполнения каждого оператора в каждой из процедур. При выполнении анализа особое внимание необходимо уделить следующим вопросам: - побочному эффекту при использовании подпрограмм; - соотношению областей видимости глобальной переменной и одноименной локальной; - особенностям передачи в подпрограммы объектов по адресу, т.е. как параметров-переменных. 2.2. Порядок выполнения работы 1. Получить у преподавателя: а) файл с вариантом (вариантами) программы; б) распечатку варианта программы для анализа. 2. Выполнить анализ программы по ее распечатке и заполнить пустые таблицы справа от текста программы. Заполнение необходимо производить строго в порядке выполнения программы и вызовов из нее подпрограмм. Каждая строка таблицы (кроме первой) должна заполняться только после выполнения действия, расположенного в распечатке слева от данной строки. Первая строка каждой таблицы (справа от конструкции begin) должна заполняться теми значениями, которые переменные или параметры получили (имеют) на момент входа в подпрограммы (после ее вызова из программы). Заполнять таблицу желательно не авторучкой, а карандашом для облегчения последующих исправлений ошибок анализа. 3. Показать результаты анализа преподавателю и исправить обнаруженные им ошибки анализа. 4. Запустить вариант программы на выполнение в отладочном режиме и убедиться в правильности проведенного анализа. 2.3. Требования к содержанию отчета Отчет о лабораторной работе должен включать: 1. Конспект теоретической части. 2. Заполненные таблицы в распечатке варианта программы. 3. Копии экранов с результатами выполнения варианта программы в отладочном режиме. 4. Выводы о полученных результатах. 2.4. Контрольные вопросы 1. Какие известны способы записи повторяющихся действий в программе? 2. Что понимается под блочной структурой программы и в чем состоит особенность использования блоков в языке Паскаль? 3. Что такое область видимости и время жизни переменной программы? 4. Каковы особенности (инициализация, время жизни, место хранения) локальных и глобальных объектов подпрограммы? 5. Какие существуют механизмы (способы) передачи данных в подпрограммы на языке Паскаль? В чем состоят особенности этих механизмов? 6. В чем состоят особенности передачи в подпрограммы переменных структурированных типов? 7. В чем состоят особенности описания и вызова подпрограмм-процедур? 8. В чем состоят особенности описания и вызова подпрограмм-функций? 9. В чем состоит побочный эффект при использовании подпрограмм? 10. Что такое опережающее описание подпрограмм и зачем оно нужно? Лабораторная работа № 16 |