Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorny_praktikum_k_izdaniyu.doc
Скачиваний:
43
Добавлен:
17.03.2015
Размер:
522.75 Кб
Скачать

4.Методические указания по выполнению

задания

4.1 Перед выполнением лабораторной работы обучающийся должен получить индивидуальное задание.

4.2 Изучить теоретический лекционный материал и ознакомиться с описанием лабораторной работы.

4.3 Изучить комбинированный тип данныхTurbo Pascal.

4.4 Проанализировать задание для выполнения лабораторной работы.

4.5 Выполнить постановку задачи

4.6 Выполнить формализацию задачи.

4.7 Составить алгоритм решения задачи в графической форме.

4.8 Составить программу решения задачи на языке Turbo Pascal.

4.9 С помощью системы программирования Turbo Pascal создать текст программы и выполнить ее.

4.10 Проверить правильность составления программы с помощью контрольного примера.

    1. Оформить отчет по лабораторной работе.

5.Контрольные вопросы

  1. Что понимают под комбинированным типом данных?

  2. Как объявить тип запись?

  3. Как объявить переменную типа запись?

  4. Как объявить массив записей?

  5. Как обратиться к полю записи?

  6. Объясните для чего и как используют оператор над записями?

  7. В чем сходство и в чем различие массива и записи?

ЛАБОРАТОРНАЯ РАБОТА № 5

Внутренние и внешние процедуры и функции

1.Цель работы:

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

2.Краткая теория:

При программировании часто возникают ситуации когда группа операторов повторяется. Эту проблему в ряде случаев можно упростить, за счет использования циклов, но иногда использование циклов невозможно или не целесообразно. Кроме того, для эффективного использования принципов структурного программирования на которые ориентирован ТУРБО ПАСКАЛЬ и прозрачности программы лучше использовать подпрограммы.

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

Паскаль позволяет использовать два вида подпрограмм: процедуры и функции.

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

Процедуры и функции в Турбо Паскале могут быть внутренними и внешними.

Внутренние процедуры описываются в разделе описания процедур и функций основной программы.

Внешние процедуры оформляются в виде автономно компилируемых модулей.

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

PROCEDURE <имя проц> (список форм. парам);

Разделы описания

BEGIN

Раздел операторов

END.

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

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

Список формальных параметров – перечень параметров используемых в процедуре.

Формат вызова процедуры:

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

Вызов процедуры осуществляется по ее имени.

Список фактических параметров – это перечень величин передаваемых в процедуру для обработки.

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

Пример 1: Пусть необходимо вывести на экран, в виде таблицы 10 значений X и f(X) при X=1,05 с шагом h=0,1

f(X)=(X-5)(X-2)X

  1. программа без использования процедуры:

PROGRAM PROG1;

VAR X, Y: REAL;

I: BYTE;

BEGIN

WRITELN(‘-------------------------------’);

WRITELN(‘! X ! f(X) !’);

WRITELN(‘-------------------------------’);

X:=1,05; h:=0,1;

FOR I:=1 TO 10 DO

BEGIN

F:=(X-5)*(X-2)*X;

WRITELN(‘!’,X:4:2,’!’,F:6:2,’!’);

X:=X+h;

END;

WRITELN(‘-------------------------------’);

END.

  1. программа и использованием процедуры

PROGRAM PROG2;

VAR X, Y: REAL;

I: BYTE;

PROCEDURE RASCET;

BEGIN

F:=(X-5)*(X-2)*X;

WRITELN(‘!’,X:4:2,’!’,F:6:2,’!’);

X:=X+h;

END;

PROCEDURE SHAPKA;

BEGIN

WRITELN(‘-------------------------------’);

WRITELN(‘! X ! f(X) !’);

WRITELN(‘-------------------------------’);

END;

BEGIN

SHAPKA;

X:=1,05; h:=0,1;

FOR I:=1 TO 10 DO

RASZET(X,h);

WRITELN(‘-------------------------------’);

END.

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

FUNCTION имя функ. ( список форм. параметров);

Разделы описания

BEGIN

Раздел операторов

END.

Имя функции – любое имя задаваемой программистом, обычно соответствующим назначению процедуры, состоящее из латинских букв и цифр 0-9.

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

Список формальных параметров – перечень параметров используемых в функции.

Формат вызова функции:

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

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

Пример 2: Для рассмотренного выше примера составим программы с использованием функции:

PROGRAM PROG1;

VAR X: REAL;

I: BYTE;

FUNCTION F(X:REAL):REAL;

BEGIN

F:=(X-5)*(X-2)*X;

END;

BEGIN

WRITELN(‘-------------------------------’);

WRITELN(‘! X ! f(X) !’);

WRITELN(‘-------------------------------’);

X:=1,05; h:=0,1;

FOR I:=1 TO 10 DO

BEGIN

WRITELN(‘!’,X:4:2,’!’,F(X):6:2,’!’);

X:=X+h;

END;

WRITELN(‘-------------------------------’);

END.

В подпрограммах используются параметры которые могут быть параметрами-значениями и параметрами-переменными.

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

Параметры-переменные: при вызове подпрограммы передаются как ячейки памяти, то есть непосредственно в подпрограмму, поэтому такие параметры в процессе выполнения подпрограммы могут изменяться.

Если переменные описаны в программе, то они могут использоваться в пределах этой программы. Такие переменные являются глобальными для всех подпрограмм, вызываемых в этой программе.

Если переменные описаны в некоторой подпрограмме, то они могут использоваться только в пределах этой подпрограммы. Для основной программы они не доступны. Такие переменные называются локальными.

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

Модуль – автономно компилируемая программная единица. С их помощью можно разрабатывать библиотеки прикладных программ.

Общая структура модулей:

UNIT имя модуля;

INTERFACE

Интерфейсная часть

IMPLEMENTATION

Исполняемая часть

BEGIN

Инициализирующая часть

END.

Интерфейсная часть содержит объявления всех глобальных объектов модуля (типов, переменных, констант, подпрограмм), которые должны стать доступными в других модулях или в основной программе.

Для процедур и функций указывается только заголовок.

Исполняемая часть содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты(типы, переменные, метки и т.д.), если они используются в модуле.

Для подпрограмм заголовок должен указываться без списка формальных параметров.

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

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

USES имя модуля;

Пример 3: Составим модуль того же примера, что и в предыдущем примере:

UNIT MODUL1;

INTERFACE

VAR X:REAL;

PROCEDURE SHAPCA;

FUNCTION F(X:REAL):REAL;

IMPLEMENTATION

PROCEDURE SHAPKA;

BEGIN

WRITELN(‘-------------------------------’);

WRITELN(‘! X ! f(X) !’);

WRITELN(‘-------------------------------’);

END;

FUNCTION F;

F:=(X-5)*(X-2)*X;

END;

При этом текст основной программы выглядит :

PROGRAM PROG1;

USES MODUL1;

VAR X: REAL;

I: BYTE;

BEGIN

SHAPKA;

X:=1,05; h:=0,1;

FOR I:=1 TO 10 DO

BEGIN

WRITELN(‘!’,X:4:2,’!’,F(X):6:2,’!’);

X:=X+h;

END;

WRITELN(‘-------------------------------’);

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]