metod_15.03.04_atppp_oaip_ump_2016 (1016599), страница 31
Текст из файла (страница 31)
Все метки локальны внутри данного блока операторов. На Паскалене допускается переход:1) внутрь сложного оператора (составного, условного, варианта, цикла);2) в процедуру или функцию и из процедуры или функции в вызвавшую ихпрограмму.Условныеоператоры Условный оператор IF.Схема полной формы условного оператора:ДаS1НетS2Формат оператора:IF B THEN S1 ELSE S2;{если выполняется B, то S1, иначе S2}где B – логическое выражение;S1и S2 – один выполняемый оператор (простой или составной).140При выполнении условного оператора полной формы сначала вычисляетсяусловие B, затем анализируется его результат: если B истинно, то выполняетсяоператор S1, а оператор S2 пропускается, а если B ложно, то выполняется операторS2, а оператор S1 пропускается.Условные операторы могут быть сокращенными:Формат сокращенного условного оператора:IF B THEN S;S – это простой или составной оператор.
Составной применяется тогда, когданеобходимо выполнить более одного оператора.Условный оператор может быть вложенным. Если S1или S2 также являютсяусловными операторами, их называют вложенными условными операторами.ДаBSНетОператор CASE.Оператор CASE является обобщением оператора IF на несколько (N) вариантовальтернативных действий.ДаНетSBСписок меток 1S1………..Список меток NSNФормат оператора CASE:CASE B OFСписок меток 1-ый : S1;Список меток 2-ой : S2;…………….Список меток N-ый : SN;ELSE S;END;141где B – выражение, определяющее значение ключа (селектора);S1÷ SN, S – один выполняемый оператор, простой или составной.Список меток – это одна или более меток, разделенных запятыми.
Меткипредназначены для выбора одного из вариантов действий оператора CASE, т.е. длявыбора одного из его операторов - S1÷ SN, S. Метки оператора CASE не надо вообщеобъявлять. Тип результата выражения B и тип меток должны быть идентичны. Вкачестве значений результата выражения B и меток могут быть любые ординальныетипы значений: целые, логические, символьные, перечисляемые или диапазонные.Ветвь ELSE S является необязательной, т.е. данный оператор может иметьсокращенную форму.Правила выполнения оператора CASE:Определяется значение B;Оно сравнивается со значениями каждой метки, стоящей перед операторами выбораи выполняется тот из них, чья метка совпала с результатом выражения B, или оператор,для которого значение B входит в диапазон значений его меток.После выполнения одного из S1÷ SN операторов управление передается операторуследующему за оператором CASE.При несовпадении результата выражения B с одной из меток выполняется:При сокращенной форме – оператор следующий за оператором CASE;При полной форме - оператор после слова ELSE;все метки вариантов оператора CASE должны быть различны, т.е.
каждая из нихдолжна быть в списке только один раз;на метку варианта оператора CASE нельзя переходить с помощью оператора GOTO.Пример. Пусть необходимо преобразовать целое число N в зависимости от величиныостатка от его деления на 17 следующим образом:если N MOD 17 = 0, то N = 0;если N MOD 17 = 1 или 6, то N = - N;если N MOD 17 = 2, 3 или 5, то N = 2* N;если N MOD 17 = 4, то N = 3* N;во всех прочих случаях N = 5* N.Алгоритм решения данной задачиN MOD 17 =НетНетN MOD 17 =02,3,51,6ДаN MOD 17 =ДаДаN := 0N := - NN := 2*NN := 3*NENDN MOD 17 = 4N := 5*NНет142ДаНетОператоры циклаОператор цикла с параметром (FOR)Циклы используют в случае, если некоторые действия надо выполнить многократно,но каждый раз с новыми данными.
Операторы цикла определяют действия, которыенеобходимо выполнять многократно и количество их повторений. Вход в циклы можетбыть только через операторы заголовка цикла. Завершение цикла может быть всоответствии с условиями, определенными заголовком цикла, или по операторуперехода на оператор вне тела цикла.В состав любого оператора цикла входит заголовок и тело. Чаще всего в теле циклавыполняется несколько операторов различных типов.
Поэтому возникаетнеобходимость использовать составной оператор (открывающие и закрывающиескобки):BEGIN…….Тело циклаEND;Оператор FOR ( для ) – это оператор цикла с параметром (с шагом). Он используется,если количество повторений тела цикла известно до начала выполнения оператора.{Для параметра цикла I начиная со значения IN с шагом 1 пока параметр циклане примет значения IK выполнять S }.Алгоритм оператора:I := INI := I + 1Функции, реализуемые операторомзаголовка цикла FORНетI≤ IKДаSФорма оператора FOR:FOR I := IN (IK ) TO (или DOWNTO)Тело циклаIK ( IN ) DO S;Заголовок циклаI – параметр цикла;TO ( до ) – определяет шаг увеличения параметра цикла I: = I + DI;143DOWNTO – определяет шаг уменьшения параметра цикла I := I +DI. В операторе FOR шаг цикла всегда равен 1.Правила формирования и выполнения цикла FOR:6) I, IN, IK могут быть любого порядкового (ординального) типа, в том числецелыми, логическими, перечисляемыми и диапазонными;2) I, IN, IK должны быть совместимого типа;3) Значение I не должно изменяться операторами в теле цикла;4) Так как анализ конца цикла производится до выполнения тела цикла, то при IN >IK для TO (и при IN < IK для DOWNTO) тело цикла не выполняется ни разу;5) После завершения цикла FOR параметр цикла имеет значение:a) При нормальном завершении - I := IK;b) При завершении по безусловному переходу параметр цикла соответствуетвыполненному при исполнении оператора GOTO;6) Значения IN и IK определяются только раз в начале выполнения оператора FOR исохраняются все циклы работы;7) Шаг цикла определяет для I (параметра цикла) целого типа приращение егозначения, а для параметра цикла перечисляемого типа – приращение номеразначения I;8) Для каждого I тело цикла выполняется только один раз;9) После каждого выполнения цикла к параметру цикла I добавляется (убавляется)его приращение DI = 1;Оператор цикла WHILE с предусловием{ Пока выполняется условие делать …}Схема оператора WHILE:X := XNB (X)Нет– условие завершения циклаДаS– тело циклаВ данном операторе (пока выполнять) анализ конца цикла производится довыполнения операторов тела цикла.
Он используется, когда количество повторенийоператоров тела цикла заранее неизвестно и определяется в процессе выполненияцикла. Операторы тела цикла при определенных условиях не должны выполняться ниразу.Форма оператора цикла : WHILE B (X) DO S;Заголовок цикла144B (X) - логическое выражение – условие завершения цикла;S – простой или составной оператор – тело цикла – в нем должны быть операндыизменения операндов логического выражения B (X).Тело цикла WHILE выполняется только в том случае, если результат выраженияB(X) истинный. Если он ложный, тело цикла не выполняется. {Если результатвыражения B (X) ложный до начала первого выполнения тела цикла, то тело цикла невыполняется ни разу}.Оператор цикла REPEAT с постусловием{ Повторять до тех пор, пока не будет выполнено условие }.Алгоритм оператора REPEAT:X := XNS– начало цикла– тело циклаНетB (X)– условие завершения циклаДаНачало цикла оператора определяется ключевым словом REPEAT, котороеоткрывает составной или простой оператор тела цикла, и выполняется пока условие B (X ) не выполняется (False).
Окончание выполнения оператора происходит в момент,когда условие B ( X ) становится истинным ( True).Таким образом, анализ конца цикла оператора производится после выполнения телацикла. Он используется, когда количество повторений операторов тела цикла заранеенеизвестно и определяется в процессе выполнения цикла. Операторы тела цикладолжны выполняться хотя бы один раз.Форма оператора цикла REPEAT:REPEAT S (простой или составной операторы) UNTIL B(X) (условие завершенияцикла);где B(X) – логическое выражение;В S должно быть предусмотрено изменение операндов выражения B(X).REPEAT и UNTIL B(X) определяют начало и условие завершения цикла.
Телоцикла выполняется хотя бы один раз. После каждого выполнения тела циклаанализируется значение результата выражения B(X): если оно ложно (FALSE),выполнение тела цикла повторяется, если истинно (TRUE) – цикл завершается.В цикле REPEAT … UNTIL… операторные скобки тела оператора Begin ... Endмогут быть опущены.Оператор REPEAT очень удобен для организации многократной работы программыбез повторных ее загрузок. Для этого:1451. Объявить переменную типа Char (например CH );2. За ключевым словом Begin в начале программы вставить строку с операторомREPEAT;3.
В конце программы перед ключевым словом End вставить три следующиестроки:Writeln ( ‘Продолжить работу - Y, иначе нажать любую клавишу ‘ ) ;Read ( CH ) ;UNTIL UPCASE ( CH ) < > ‘ Y ‘ ;Дополнительные операторы для цикловЯзык Паскаль имеет две стандартные процедуры: BREAK, CONTINUE. Они могутиспользоваться в циклах всех видов: FOR, WHILE, REPEAT.














