русс | укр

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

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

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

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


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

Параметры подпрограмм


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


В Паскале существует 4 вида параметров: значение, константа, переменная и нетипизованное значение. Они характеризуются следующим:

1. Группа параметров без предшествующего ключевого слова и завершенная указанием типа является списком параметров-значений.

2. Группа параметров, предваренных словом const и завершенная определением типа, является списком параметров-констант.

3. Группа параметров, предваренная словом var и завершенная указанием типа, является списком параметров-переменных.

4. Группа параметров, предваренная словами var или CONST и не имеющая указания на тип, является списком нетипизованных значений.

Если значения формальных параметров 1-й группы будут изменены в подпрограмме, то новые значения не будут переданы обратно вызывающей программе.

Параметры-константы доступны только для чтения.

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

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

В остальных случаях запоминаются не значения, а адреса переданных параметров.

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

program РF;

var A,B: integer;

Ratio : real;

procedure GetData(var X,Y : integer);

begin

Write('Введите два числа: ');

Readln(X,Y);

end;

function GetRatio(I,J : integer) : real;

begin

GetRatio := I/J;

end;

begin

GetData(A,B);

Ratio := GetRatio(A,B);

Writeln('Отношение равно ',Ratio);

Readln;

end.

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

При компиляции и запуске программы первым в теле программы выполняется оператор GetData(A, В). Этот тип оператора называется вызовом процедуры. При обработке этого вызова программа выполняет операторы в GetData, заменяя Х и Y (формальные параметры) на A и В (фактические параметры). Ключевое слово var перед Х и Y в операторе вызова процедуры GetData указывает, что фактические параметры должны быть переменными, и что значения переменных могут быть изменены и переданы обратно вызывающей программе. Поэтому процедуре GetData нельзя передавать литералы, константы, выражения и так далее. При завершении выполнения GetData управление передается в основное тело программы оператору, следующему за вызовом GetData.



Этим следующим оператором является вызов функции GetRatio. Отметим здесь некоторые важные отличия. Во-первых, GetRatio возвращает значение, которое затем должно быть где-нибудь использовано. В данном случае это значение присваивается Ratio. Во-вторых, в основном теле функции значение присваивается GetRatio. Таким образом функция определяет, какое значение следует возвратить. В-третьих, перед формальными параметрами I и J здесь отсутствует ключевое слово var. Это означает, что фактические параметры могут быть любыми целочисленными выражениями, например, Ratio := GetRatio(A+В, 300), и что даже если значения формальных параметров в теле функции будут изменены, новые значения не будут переданы обратно вызывающей программе. Это, кстати, не является различием между процедурами и функциями. Вы можете использовать оба типа параметров с любым видом подпрограммы [8,9].

 

Вопросы:

1. Какие типы параметров могут передаваться в подпрограммы?

2. В чем их отличия?

 

 




<== предыдущая лекция | следующая лекция ==>
ПРОЦЕДУРЫ И ФУНКЦИИ | Процедуры модуля Graph


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


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

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

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


 


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

 
 

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

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