К. Йенсен, Н. Вирт - Паскаль - Руководство для пользователя (1109480), страница 26
Текст из файла (страница 26)
Рдо Описание яника Значение выражения должно быть совместимо по присваиванию (см. равд. 6.5) с типом переменной или типом имени функции. Порядок обращения к переменной или рсзультату и вычисления выражения зависит от реализации. Обращение к переменной формирует ссылку на переменную, которая существует до тех пор, пока не пройдет присваивание значения. Примеры операторов присваивания: Х:= У + ОгауВса1е[31! Р:= (1 «и 1) апе (1 « 100) 1:= 5ЦГ(К) (1 3) Ние2 := [В!ие, еисс(С)! 9.1.2. Операторы процедуры.
Опсоатор процедуры предназначен для активации процедуры, обозначенной именем процедуры. Оператор пооцедуры может содсржать список фактических параметров, которые подставляются вместо формальных параметров, определенных в описании процедуры (см. равд. !1.1).
Оиерптор прттцедурм = Имя процедура [Список фактикесгитх пираметрон( Список парометрон емеода!. Если имя процедуры именует стандартную процедуру ттгг!!е или Фг!!е[п, то фактические параметры должны следовать синтаксису, указанному для конструкции Список параметров вывода. Если жс имя процедуры именует любую другую поедописанную нро((едуру, то фактические параметры должны удовлствооять правилам, приведенным в равд.
11«4 и !2. При»геры операторов процедур: кекс ТгепеРоее(А,Л,Л) В(5есС((сг, -1.0, +1.О, Х) Иг)ге1п(Оисри(, ' 1111е' ) 9.1.3. Операторы перехода. Оператор перехода предназначен для указания, что процесс выполнения должен продолжаться с другого «места» програь)мьц а именно с «точки» программы (ргодгагппьро!п1), обозначенной меткой (см.
раза. 10.! н 10.3). Оператор перехода = Во)о" Метка. Оператор, перед которым стоит некоторая метка, и любой оператор перехода, ссылающийся на эту метку, должны удовлетворять одному нз двух следующих правил: а) оператс[р либо должен содержать оператор перехода, либо 9. Операторы !И должен быть одним из операторов в последовательности операторов (см. разд. 9.2), содсржашей оператор перехода; б) оператор должен быть одним из операторов в последовательности операторов нз составного оператора, входяшсго в раздел операторов того блока, где описана метка.
Оператор жс перехода должен находиться в разделе описания процедур и функций указанного блока (см. разд. 10.1). Смысл этих правил в том, что они запрегцают операторы перехода, псредаюШие управление извне в сложный оператор и в процедуру или функцию. Первое правило к тому же запрещает передачу управления между «ветнями» условного оператора. Если оператор перехода и соответствующая «точка» программы не находятся в одном разделе операторов, то каждая активация, не удовлетворяющая какому-либо из двух следующих условий, заканчивается (см. равд.
10.3): а) точка программы входит в данную активацию; б) активация содержит «точку» активации другой активации, которая нй заканчивается (т. е. удовлетворяет одному из этих двук условий) . зон СЛОЖНЫЕ ОПЕРАТОРЫ Сложные операторы — это конструкции, состоящие нз других операторов, причем эти операторы либо выполняются последовательно (составные операторы), либо — в зависимости от условия (выбираюгцие операторы), либо повторяются (циклические операторы), либо выполняются в некоторой расширенной области действия (зсоре) (операторы присоединения) . Сложггый оператор = Составной оператор ) Выаириющгггг оператор ! Банди«есной оггерагар ) Оператор присоединенин. Последовательность операторов представляет собою перечисление операторов, которые 'должны ныполпяться в порядке написания, если только оператор перехода не предпишет что-то другое.
Последовате геноссе операторов — Оператор 1";" Оператор1 Последовательность операторов используется в составных операторах (см. равд. 9.2.1) и циклических операторах (см. равд. 9.2.3.2). 9.2.1. Составные операторы. Составной оператор задает выполнение последовательности операторов.
Слова Ье91п и епб выполняют роль операторных скобок. Составной оггератор = ' Ьеягп" Последователышсть операторов "епд". ГЕ2 Описание леьиса Примеры составных операторов: Ьей!и епй Ьее!п И := Х; Х := т; т := и еаза 9.2.2. Выбирающие операторы. Выбираюгций оператор назначает для выполнения один из составляющих его операторов. Вийираннний оператор = Услоеный оператор! Оператор еирииюа.
9.2.2.1. Условные операторы. Условный оператор указывает, что следу1ощий за словом !Ьеп оператор должен быть выполнен только в том случае, если логическое выражение дает значение «истина». Если же оио дает значение «ложь», то выполняется оператор, следующий за словом с!зс, если он вообще есть. Мслоеный оператор = '*и" Лоеииеснос еиражение "!Ьеп' Оператор !"сыт" Оасритор!. Ф Замечание. Синтаксическая двусмысленность конструкции: В е1 1Ьсп !1 е2 !Ьеп з1 е!зе з2 разрешается такой ее интерпретацией: считается„что она эквива- лентна конструкции: !! е1 Ььеп Ьек!и !! е2 ЬЬеп »1 е1»е »2 еаза Примеры условных операторов: !! Х < 1.5 Ьпеп И:= Х + У е1зе и:= 1.5 !! Р! > и!1 Ььеп Р1:= Р1!.Гетйет 9.2.2.2. Операторы варианта.
Оператор варианта содержит ордииальное выражение (индекс варианта) и спясок операторов, перед каждым из которых стоит одна или несколько констант, относящихся к типу индекса варианта. Оператор указывает, что необходимо выполнить оператор, перед которым стоит значение индекса варианта.
Если ни перед одним рператором не стоит константа, равная атому значению, то это ошибка. Каждому значению должна соответстновать, самое большое, одна константа варианта. У. Операторы (УЗ Оператор варипнта — "саве" Индекс варианта "оГ Вариант (";"Вариант) Г';"1 "епд". Индекс варианта = Ординальное виратсение. Вариант = Константа (",*' Константа) ":" Оператор. Примеры операторов варианта: сазе ОрегаСог о( Р1оа. И = Х + У; И1поа: И '= Х вЂ” У; Ттпеа.
И = Х ' т' епд свае ! о) 1: У:= асп(Х); 2: Т := соа(Х), зп Т := ехр(Х), 4 У := 1п(Х) епд сазе Р11 5сасоа о( Магг1ед: Р1:= Р11.31зп11(сапСВСаег, Соор1ед. Р2 := Р11.51вп111сапСОСОег; 31пз1е: епа 9.2.3. Циклические операторы. Циклические операторы указывают, что выполнение некоторых операторов необходимо повторять. Если число повторений известно зараиес, т. е. до начала повторений, то в этом случас наиболее подходясцей конструкцией будет цикл с шагом. В противном жс случае следует использовать циклы с предусловием (со словом ЮЫ!е) или с постусловием (со словом )2ереа1).
Цинеинеские оператора = Цикл с предусловием (Цикл с постусловиеи( Цикл с ииггои. 9.2.3.1. Цикл с предусловием (со словом ЮЫ!е). Цикл с предусловиеи = '*юь(1е" Логинеское виранение "до" Оператор. Оператор повторно выполняется до тех пор, пока выражение не даст значение «ложь». Если уже в самом начале получено такое значение, то оператор не выполняется вовсе.
Цикл с предусловием туЫ!е В с(о Ь И4 Оыгсиние наьгки если только 3 не содержит какого-либо помеченного оператора, эквивалентен такой последовательности: 11 В (Ьеп Ьси[п 3; чиЬ[1е В бо 5 еп(1 Примеры циклов с предусловиемг иьг)е Огаузса1е[1)' < Х ап 1:= аисс(1) иьг)е 1 о О дп Ьехгп 11 еад(1) ЬЬеп у:= у ' Х; 1 = 1 д(у 2, Х ."= 5ЦГ(Х) епд иЬ(1е па( ео((Е) до Ьеагп РГЕ 1); Се((Е) епд 9.2.3.2.
Циклы с постусловием (со словом )2ерсаг). Цикл с ностуглооием = "тереа(" Последоеительность оперитороа "ипп!" Логическое ег дат«ение. Последовательность оператороа повторно выполняется до тех пор, пока выражение не даст значение «истина» (по крайней мере один раз оно выполняется). Оператор цикла с постусловием гереа( 3 пп61 В если 5 не содержит какого-либо помеченного оператора, эквивалентен такой последова гельности: Ьерп 3; 11 по1 В (Ьеп гереа1 3 ппбй В епс[ Примеры циклов с посгусловием: гереаЬ К:= 1 аеб г: 1:= г; г '= К ипЬ(1 г = О терез( Р(ЕЕ); Ое((Е) ипЬ|1 ее((Е) 9.2.3.3. Циклы с шагом (со словом рог). Цикл с шагом указывает, что необходимо повторять выполнение оператора и одновременно присваивать переменной, называемой управляющей переменной цикла, последовательно возрастающие значения.
9. Операторы Ид Цикл с юнгом = тот" Управляющая перел~енная ":=" Начальное значение ('Чо" Г'доипТо") Конечное значение "до" Оперитор. Управляющая переменкая = Имя переменнод Иачальное значение = Ординильное выражение. Конечное значение = Ординальное вираже>ите. 1 Управляющая переменная должна быть локализована в том блоке (см. равд. 10.2), в разделе операторов которого находится данный оператор цикла с шагом. Эта переменная должна относиться к ординальному типу, совместимому с типами начального и конечного значений.
Будем говорить, что оператор 3 затрагивает (потенциально) переменную у, если выполняется одно из следующих условий: а) о — оператор присваивания, присваиваюший значение перцменной Ч; б) переменная чт встречается в Б в качестве фактического параметра-перемснной (см.
равд. 11.3.2.2); в) Я вЂ” оператор процедуры, активирующий предописанныс процедуры 1(еаг) или Кеаг(1п, причем Ч один из фактических параметров; г) 8 — цикл с шагом, а Ч вЂ” его параметр цикла (управляющая переменная) . Никакой оператор внутри цикла с шагом не должен затрагирать параметр цикла. Более того, никакая процедура или функция, описанная как локальная в том жс блоке, где описан параметр цикла, не должна содержать оператор, затрагиваюгций этот параметр цикла. Все эти правила означают, что повторяющийся оператор не должен изменять значение параметра цикла.
Если ввести новые переменные Т1 и Т2, относящиеся к тому же типу„что и переменная Ч, и больше нигде не употребляемые, и еще одну переменную Р, относящуюся к логическому типу, то справедлива следующая эквивалентность (с исключениями, отмеченными в комментариях): (ог Ч: = е1 1о е2 с(о Я эквивалентно Ьекго Т1:= е1; Т2:= е2; 11 Т1 >= Т2 ЬЬеп Ьех)п ( 12 должен быть совместим по присваиванию с типом Ч ) У:= Т1; Р:= 1а1ее; пуе Оиигокие языка гереаа 3; !! Ч = Т2 Ьбеп Р:= Сгие е1ее Ч:= ргее(Ч) ипог1 Р епд [ Ч не определено ] епд А оператор [ог тг:= е! с]ступ!о е2 с[о о эквивалентен Ьер! и Т!:= е1; 12:= е2; !1 Т1 <= Т2 Ьпеп серго [ Т2 должен быть совместим по присваиванию с типом Ч[ Ч:= Т1; Р:= Та!ее; гереаа 5; !! Ч = Т2 СЬеп Р := Сгие е1ее Ч := ьисс(Ч) ипсг1 Р еаза [ Чнеопределено[ епа Примеры операторов цикла: Тог 1:= 1 йа 63 ао !! СгауБса1е[Ц > 0.5 Сиеп ьт!Се ('"') е1ее нг!Ье (' ') Тог 1:= 1 Со п да Тог 3 := 1 $о п до Ьер]и Х:= 0; !ог К := 1 Са п Оо Х := Х а А[1,К] ' В[К,)]; С[1 а] := Х епд (ог [!ЫЬС := йеа Ьа ргеа([!КЬЬ) аа !! 'с!ИЬЬ !и Ние2 ЬЬеп (]([!ВЬС) к Операторы тат 9.2А.