Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Procedure Р; S;)
В программе может содержаться несколько описаний различных процедур, все они, одно за другим, располагаются после совокупности описаний переменных. Напишем первый вариант программы вычисления площади четырехугольника:
Program F1(input, output); var АВ, ВС, CD, DA, AC, s1, s, a, b, c, p: real; Procedure str1; Begin p: =(a+b+c)/2; s: = sqrt(p*(p - a)*(p - b)*(p-c)) End; Begin Read(AB, ВС, CD, DA, AC); a: = AB; b: = ВС; c: = AC; str1; s1: = s; a: = DA; b: = AC; c: =CD; str1; s1: =s1+s; Write(s1) End. В программе - два обращения к процедуре str1. Непосредственно перед каждым обращением идет группе операторов присваивания, задающих значения переменных а, b и с; каждое обращение влечет выполнение процедуры; после обращения к процедуре переменная s имеет значение, равное площади соответствующего треугольника. Итак, связь процедуры str1 с остальными операторами программы осуществляется через переменные а, b, с, s; в программе имеется еще переменная р, которая является вспомогательной внутри процедуры. Можно избежать совпадения вспомогательных переменных с переменными основной программы. Паскалем разрешается включать в описание процедуры совокупность описаний переменных: Procedure str2; var р: real; Begin p: =(a + b+c)/2; s: = sqrt(p*(p -a)*(p - b)*(p - c)) End; Переменная, описанная в процедуре, называется локальной по отношению к процедуре. Слово «локальная» означает местная, имеющая местное назначение. Если переменная локальная по отношению к некоторой процедуре, то при выполнении этой процедуры работа с переменной р никак не будет влиять на значение переменной р, описанной в программе вне процедуры (если такая переменная имеется). Как только процедура будет выполнена значение локальной переменной р забудется. Аналогично, в процедуре могут описываться и использоваться локальные метки. Типы и процедуры тоже могут быть локальными по отношению к процедуре (мы этой возможностью пользоваться не будем). Введение локальных меток, переменных и т. д. делает оформление процедуры похожим на оформление программы. Если в программе F1 использовать вместо процедуры str1 процедуру str2, то можно из описания переменных программы удалить переменную р. Но можно и оставить описание прежним. Продемонстрированный способ использования процедур неудобен из-за большого числа операторов присваивания, которые до обращения к процедуре определяют значения переменных a, b и с. Есть и другой способ - описать процедуру с параметрами (аргументами), что позволит обращаться к процедуре, например, так:
|