Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Структура процедур и функций

Использование пробела | Одномерные массивы | Какие бывают массивы | Действия над порядковыми типами | Символьный тип Char. Работа с символами | Строковый тип String. Работа со строками | Расположение информации в оперативной памяти. Адреса | Глава 13. Процедуры и функции с параметрами | Подпрограммы. Локальные и глобальные переменные | Массивы как параметры |


Читайте также:
  1. a. Дисметаболические и токсико-метаболические нарушения функций ЦНС
  2. BITMAPFILEHEADER – эта структура содержит информацию о типе, размере и представлении данных в файле. Размер 14 байт.
  3. II. Порядок выплаты ежемесячной компенсации на оплату проезда до места проведения процедуры гемодиализа инвалидам, находящимся на постоянном диализном лечении.
  4. II. Структура 12-річної школи
  5. II.СТРУКТУРА ОТЧЕТА ПО ПРАКТИКЕ
  6. III. Структура «минус»-пространства, его семантика, его трансформации
  7. IV. Состав и структура.

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

Каждая из пяти подпрограмм большого проекта может иметь большой объем и руководитель этой подпрограммы должен обладать всем набором средств Паскаля. Поэтому каждая подпрограмма может иметь и свои внутренние типы, метки, переменные, константы, процедуры и функции. Все эти объекты описываются внутри данной подпрограммы, являются локальными в ней и не видны снаружи.

По сути структура подпрограммы копирует структуру программы за исключением того, что в подпрограммах запрещено писать USES.

Приведу пример записи программы с вложенными подпрограммами:

PROGRAM Hard;

Uses...

Label...

Const...

Type...

Var...

Procedure a1;

Const...

Var...

Procedure a11;

Label...

Type...

Var...

begin

...

end;

Function f11

Var...

begin

...

end;

begin

...

end;

Function f2;

Procedure a21;

begin

...

end;

begin

...

end;

begin

...

end.

Здесь в программу Hard входят процедура a1 и функция f2. В процедуру a1 вложены процедура a11 и функция f11. В функцию f2 вложена процедура a21.

Из f2 видна a1, но не видны a11 и f11. Точно так же из a21 видны a1 и f2, но не видны a11 и f11. Это значит, что в теле процедуры a21может содержаться вызов a1и f2, но не может содержаться вызов a11и f11.

Выражения

Понятие «выражение» я уже употреблял раньше без особых пояснений. Выражение – это то, что мы привыкли видеть в правой части оператора присваивания и в других местах. Например:

a:= b+1 - здесь выражение - b+1

if c-6>f then … - здесь выражение - c-6>f

WriteLn (a+5) - здесь выражение - a+5

 

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

Арифметические выражения(то есть имеющие значением число):

· 0

· 2+5

· Sqrt(b+1) - Sqr(a[4,i]+r) + 1

· a[4,i] + vovka.ves

· ((w+b)/19)*(2/(w+1)+5)

 

Строковые выражения(то есть имеющие значением строку символов):

· ‘Весна’

· Copy(s,a,b)

· Copy(s,a,b)+ ‘Весна’

 

Логические выражения(то есть имеющие значением true или false):

· a>0

· (a+c)/(d+8)<=b+1

· c>’Ю’

· stroka=‘Весна’

· Copy(s,a,b)+ ‘Весна’ <> s1

· a in b

 

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

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

Каждое выражение тоже обязано иметь конкретное значение одного из типов. Тип выражения определяется типами входящих в него операндов и операциями над этими операндами. Каким образом – об этом в следующем параграфе.


Дата добавления: 2015-11-14; просмотров: 40 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Индукция. Рекурсия. Стек| Совместимость типов

mybiblioteka.su - 2015-2024 год. (0.006 сек.)