Информационные объекты класса – подпрограммы


 

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

В языке Pascal:

· строго упорядоченная последовательность однотипных объектов обработки образует новый объект обработки класса ARRAY,

· строго упорядоченная последовательность символов (CHAR) порождает новый объект обработки класса STRING,

· упорядоченная последовательность разнотипных объектов обработки образует новый объект обработки класса RECORD.

Напомним: информационные объекты обработки в языках программирования выполняют роль существительных в естественных языках, а операции обработки этих объектов – аналоги глаголов в естественных языках.

В языке Pascal:

· последовательность из нескольких операций обработки, которые проводятся над некими объектами обработки, образует новую операцию обработки классов PROCEDURE или FUNCTION.

Пояснение: Для поиска корней квадратного уравнения необходимо выполнить известную последовательность арифметических и логических операций. Последовательность этих операций можно только один раз объяснить исполнителю и обозвать последовательность этих операцийуникальным именем - глаголом «решить КУ». В последующем, если возникает необходимость заставить исполнителя решить какое-то квадратное уравнение, достаточно скомандовать ему - «решить КУ» и дать конкретные значения коэффициентов входящих в уравнение.

 

Опр. Подпрограмма – последовательность операторов наделенная собственным именем.

Использование собственных подпрограмм требует от программиста выполнения двух, разнесенных в пространстве и времени, действий:

· описания подпрограммы (введения в язык Pascal нового понятия), которое выполняется в блоке операторов описаний,

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

Подпрограммы типа PROCEDURE

Синтаксис и структура операторов описывающих операцию:

Procedure ИмяP( P1; P2; …; Pn);

< <

блок описания переменных, используемых только внутри

самой подпрограммы, т.е. вспомогательных

или «рабочих» переменных подпрограммы.

> >

Begin

< <

Блок исполнимых операторов подпрограммы, т.е. описание

новой операции в форме упорядоченной последовательности

известных (стандартных или ранее описанных) операций.

> >

End;

Procedure – ключевое слово оператора,

ИмяP – название (идентификатор) новообразуемой

операции типа-процедура,

( P1; P2; …; Pn)– строго упорядоченный (через разделитель – точка с запятой) перечень описаний всех информационных объектов, которые являются «формальными переменными подпрограммы» и используются только для синтаксически-грамотного описания исполнимых операторов внутри самой подпрограммы. Сами же имена P1, P2,… «не видны головной программе», головная программа знает только о типах этих переменных.

При обращении к подпрограмме вместо этих «формальных параметров» указываются «фактические переменные головной программы», которые

· либо передают в подпрограмму данные для обработки «внутри подпрограммы», т.е. выполняют роль аргументов создаваемой программистом операции,

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

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

· если описание параметра Pi задается структурой

Var ИмяPi: ТипPi;

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

При обращении к подпрограмме, т.е. при вызове подпрограммы из головной программы, вместо этой рабочей переменной с именем ИмяPi будет использоваться та реальная переменная, которая будет создана (обязательно должна быть создана!) непосредственно в головной программе. Разумеется, эта реальная переменная должна быть того же типа, что и рабочий параметр, т.е. типа ТипPi.

Пояснение: в процессе трансляции текста подпрограммы, т.е. при переводе ее на внутренний язык ЭВМ, вместо адресов, описанных таким образом переменных, вносятся чистые нули. Эти нули автоматически заменяются на реальные адреса реальных переменных только в момент «вызова подпрограммы на выполнение».

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

· если описание параметра Pi задается структурой ИмяPi: ТипPi;

то, в процессе трансляции подпрограммы, для переменной-параметра с именемИмяPi выделяется необходимая оперативная память, т.е. эта переменная «почти автономна», а ее содержимое недоступно головной программе. Однако, при «вызове программы на выполнение» в эту переменную копируется содержимое из той переменной, имя которой будет указано программистом.

Пояснение: Описанные таким образом переменные-параметры позволяют только односторонне передавать информацию: из головной программы в подпрограмму. Достоинство таких параметров – операции выполняемые в подпрограмме не могут испортить информацию головной программы. Недостаток – заведомое дублирование информации, т.е. нерациональные затраты оперативной памяти.

· если описание параметра Pi задается структурой Var ИмяPi;

т.е. не указывается тип параметра-переменной, то в подпрограмму передается только адрес (местоположение в оперативной памяти) той реальной переменной, имя которой будет указано в операторе «вызова подпрограммы на выполнение». Как читать или изменять информацию по указанному адресу, какого она типа, структуры и размера, обычно сообщается через другие параметры этой подпрограммы.

В теле подпрограммы могут быть использованы все переменные, которые описаны в головной программе до (выше) подпрограммы – так называемые «глобальные переменные». Однако пользоваться этой возможностью не рекомендуется, т.к. для удобства (универсальности) использования, подпрограмма должна быть «максимально автономна», т.е. общение с подпрограммой должно осуществляться только через контролируемые ею и самим программистом предусмотренные в описании параметры.

 



Дата добавления: 2021-12-14; просмотров: 214;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.