ТОР 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
Вообще говоря, под выражением можно понимать произвольную имеющую смысл цепочку операндов, соединенных знаками операций (математических, логических и других) и круглыми скобками. Под операндом будем понимать переменную простого типа, константу, элемент массива, поле записи, функцию и вообще любой объект, имеющий конкретное значение одного из простых типов. Каждое выражение тоже обязано иметь конкретное значение одного из типов. Тип выражения определяется типами входящих в него операндов и операциями над этими операндами. Каким образом – об этом в следующем параграфе. Не нашли, что искали? Воспользуйтесь поиском:
|