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

34 Функции и процедуры

Использование процедур и функций позволяет:

- сократить объем и улучшить структуру программы;

- уменьшить вероятность ошибок и облегчить процесс отладки программы;

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

Описание процедуры

Procedure <идентификатор процедуры>[<(список формальных параметров с объявлением типа)>];

[<раздел описаний>] {локальные данные}

begin {начало локального блока}

1 <раздел операторов>

end; {конец локального блока}

Допускается описание процедур без параметров.

Описание функции

Function <идентификатор функции>[<(список формальных параметров с объявлением типа)>]: <тип функции-результата>;

[<раздел описаний>] {локальные данные}

begin {начало локального блока}

<раздел операторов>

end; {конец локального блока}

В разделе операторов должен находиться оператор присваивания:

<идентификатор функции> : = <значение-ответ>;

2.4 Вызов процедур и функций

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

<идентификатор процедуры>[<(список фактических параметров)>];

Вызов функции осуществляется по имени функции аналогично обращению, например к математической функции sin x:

x:= 0.5;

a:=sin (x);

или

а:=sin (0.5);

Вызов sin x осуществляется оператором присваивания.

Между фактическими и формальными параметрами должно быть соответст-вие: по типу, количеству, порядку следования.

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

Формальные параметры могут быть заданы как:

- параметры-значения (передача параметров по значению);

- параметры-переменные (передача параметров по ссылке);

35. Разработка модулей

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

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

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

Фрагмент 1.

Структура модуля имеет вид:

Unit Name_M; { Name_M - имя модуля }

{-----------------------------------------------------------------------------------------------------------------}

Interface { Интерфейсная часть модуля}

{------------------------------------------------------------ раздел описания глобальных имен}

Type MM=array[1..10, 1..10] of real; {описание типа}

Var Max_F, Min_F: real; {описание глобальных переменных}

{------------------------------------------------------------------------------------------------------------------}

Procedure Name_P(p1: real; p2: MM);

{описание заголовков процедуры}

Function Name_f(p3,p4:real):real; { и функции}

{-----------------------------------------------------------------------------------------------------------------}

Implementation {Исполняемая часть модуля}

{--------------------------------------------------------------- раздел описания локальных имен}

Const C = 'Подключен модуль Name_M';

{ задание локальной константы}

Procedure Name_P; {Полное описание процедуры}

{ Раздел описания процедуры}

Begin { Раздел выполнения процедуры} End;

Function Name_f: real; {Полное описание функции}

{ Раздел описания функции}

Begin { Раздел выполнения функции} End;

{----------------------------------------------------------------------------------------------------------------- }

BEGIN { Инициирующая часть модуля}

Writeln(C); {операторы модуля}

END.

Модуль записывается в файл с именем модуля, например, Name_M. pas.

Затем файл компилируется, например, Name_M. tpu, и записывается в каталог, указанный в опции Options, Directories, EXE & TPU, иначе - в текущий каталог.

При запуске программы, использующей модуль, файл с расширением ". tpu" ищется в каталоге, указанном в опции Options, Directories, EXE & TPU или Unit Directories, либо в текущем каталоге.

36. Модуль СRT. Управление экраном в текстовом режиме

Наименование

процедуры

Параметры процедуры

Результат выполнения

процедуры

TextMode(N);

N=0

N - тип Word

(40x25)-CGA- ч. б.

Задание текстового режима работы монитора.

N=1

(40x25) -CGA,

Экран очищается, курсор устанавливается в позицию 1, 1.

Цвета исходные: белые символы на черном экране

Наибольшие значения координат

Хm:= Lo(WindMax)+1;

Ym:= Hi(WindMax)+1;

N=2

(80x25) -EGA, VGA,

N=3

(80x25) цветной

N=N+256

(80x43)-EGA цветной

Ym

(80x50)-VGA цветной

N=7

(80x25)-монохромный; (80 колонок х 25 строк );

Window(x1, y1, x2, y2);

x1, y1, x2, y2 - тип Byte

1 <= x1 < x2 <= Xm, 1 <= y1 < y2 <= Ym

в системе координат экрана.

Задание окна на экране. Курсор устанавливается в позицию (1, 1) в системе координат окна. Превышение координат экрана игнорируется.

TextBackGround(N);

N - тип Byte, 0 <=N<= 7

Назначение цвета фона. При N>7 N:= N mod 8

Clrscr;

Использование процедуры после TextBackGround(N); закрашивает активное окно

Очистка активного окна, экрана курсор устанавливается в позицию (1, 1). Закрашивание окна.

TextColor(N);

N - тип Byte 0 <=N<= 15 а также при N:= N + 128 вывод мерцающих символов -

Назначение цвета символов. При N>15, N:= N mod 16,

GotoXY(x, y);

x, y - тип Byte

Установка курсора в позицию ( x, y ) в системе координат активного окна, экрана.

InsLine;

Вставка пустой строки.

DelLine;

Удаление строки в позиции курсора.

ClrEol;

Стирание символов от позиции курсора до конца строки.

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

повышенная (HighVideo;),

пониженная (LowVideo;)

нормальная (NormVideo;)

Функции, возвращающие номер текущего столбца (WhereX;) и строки (WhereY;), типа - Byte.

В процедурах TextBackGround(N); и TextColor(N); параметр N назначает цвета

Мерцание символов можно получить, также задавая: N:= N + 128;

В процедурах TextBackGround(N); и TextColor(N); вместо N можно использовать наименование цвета, например:

N:=1; TextColor(N); { либо } TextColor(Blue);

37. Управление клавиатурой

В процессе работы программы, при нажатии на клавиши, соответствующие

этим клавишам коды помещаются в буфер клавиатуры, из которого они затем

считываются процедурами Read/Readln и функцией Readkey. Когда программа

стартует, буфер обычно пуст. Если вы нажимаете какие-либо клавиши, кроме

Shift, Ctrl, Alt, Caps Lock, Scroll Lock, Num Lock, F11, F12, Pause/Break, в буфер

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

от него произвести какие-либо действия, то, чтобы быть уверенным, что будет

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

есть хотя бы один символ, и False, если буфер пуст.

Очистить буфер или считать из него записанные коды клавиш можно с

помощью функции Readkey, которая возвращает своим результатом один символ

(значение типа Char).

KeyPressed; - возвращает значение True (тип Boolean) - если была нажата любая клавиша (кроме Ctrl, Alt, NumLock и т. п. ), иначе - False.

Repeat Writeln('Нажмите скорее любую клавишу') until KeyPressed;

Repeat Writeln('Нажмите клавишу "А"'); c:=ReadKey until c='А';

Для очистки буфера клавиатуры применяются операторы:

While KeyPressed Do c:=ReadKey;

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