Главная | Случайная
Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






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




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

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

По сути структура подпрограммы копирует структуру программы за исключением того, что в подпрограммах запрещено писать 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

 

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

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

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




Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2019 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных