русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Директивы FAR и NEAR


Дата добавления: 2013-12-23; просмотров: 1833; Нарушение авторских прав


Директива FORWARD

Директивы подпрограмм

Процедура EXIT

Как известно, оператор GOTO нельзя использовать для досрочного выхода из подпрограммы. В Tyrbo Pascal с этой целью используется процедура EXIT.

Пример. Функция, определяющая первое отрицательное число в массиве.

Function Minus(var Massiv ; N: Integer) : Real ;

{ Massiv - параметр без типа }

type

T = Array[1..1000] of Real;

var

i : integer ;

begin

Minus :=0 ;

for i := 1 to N do

if T(Massiv)[i] < 0 then { преобразование типа }

begin

Minus := T(Massiv)[i] ;

EXIT { досрочный выход из функции }

end

end.

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

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

При использовании директивы forward сначала записывается полный заголовок первой подпрограмммы. Тело этой подпрограммы заменяется директивой forward. Затем полностью описывается вторая подпрограмма, а уже после этого полностью описывается первая подпрограмма. При этом можно записать сокращенный заголовок подпрограммы, который включает слово procedure или function и ее имя. Список формальных параметров и тип подпрограммы (если это подпрограмма-функция) не указывается.

Пример. Процедура First вызывает процедуру Second, а та, в свою очередь, процедуру First.

Procedure First (A, B : Integer ) : forward ; { заголовок первой процедуры }

Procedure Second(C : Real ) ; { вторая процедура }

Var

X, Y : Integer ;

Begin

.

.

First

.

.

End ;

Procedure First ; { первая процедура }



Var

Z : Real ;

Begin

.

.

Second(Z) ;

.

.

End.

 

Директиву forward можно использовать и просто для более удобного размещения подпрограмм: сначала описать все заголовки, а затем ¾ сами подпрограммы.

Как правило, компилятор Turbo Pascal автоматически выбирает адресацию к подпрограмме. Например, если подпрограмма находится в одном файле с основной программой, то она компилируется с “ближним” (near) адресом входа и возврата, состоящим только из смещения в текущем сегменте, а если она находится в модуле, то формируется “дальний” (far) адрес, состоящий из адреса сегмента и смещения.

В некоторых случаях нужен нестандартный вариант компиляции. Так, например, если подпрограмма используется для переменных процедурного типа, она независимо от своего расположения должна компилироваться с получением “дальнего” адреса. В этом случае в подпрограмме можно использовать директиву far, которая сообщит компилятору, что нужно формировать именно такой адрес. Эта директива эквивалентна ключе компилятора {$F+}, однако в отличие от этого ключа действие директивы распространяется только на одну подпрограмму.

Реже используется директива near, которая сообщает компилятору, что подпрограмму следует компилировать с получением именно такого адреса. Эта директива эквивалентна ключу компилятора {$F-}, который выбирается по умолчанию. Действие директивы распространяется только на одну подпрограмму.



<== предыдущая лекция | следующая лекция ==>
Параметры-процедуры и параметры-функции. | Директива INLINE


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.