Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
І позначення ^ * ? гігііігіДата добавления: 2015-10-19; просмотров: 1644
Ниже рассмотрены примеры применения условного оператора. Пример1. (Применение полной формы условного оператора). Пусть требуется вычислить функциюY, принимающую значение –3(Х+2) при Х<0 и значение 5X при Х>=0. Такое вычисление можно выполнить с помощью одного условного оператора: IF X<=0 THEN Y:= -3*(X+2) ELSE Y:= 5*X; Пример2. (Применение составного оператора). Пусть требуется вычислить площадь круга S и длину окружности L по заданному радиусу R при выполнении некоторого условия А > D: IF A>D THEN {далее – составной оператор, включающий два простых оператора:} Begin S:=pi*R*R; L:=2*pi*R End; Примечание. Этот оператор записан синтаксически правильно, так как в языке Паскаль допускается произвольное расположение операторов по строкам. Однако в соответствии с принципами структурирования программ (см. главу 4) для наглядности лучше записать так: IF A>D THEN Begin S:=pi*R*R; L:=2*pi*R {перед End знак «точка с запятой» в Паскале можно не cтавить} End; Очевидно, что для корректного вычисления S и L необходимо провести проверку еще одного условия “R>=0” и в случае невыполнения его выдать на монитор соответствующее сообщение. Ниже приводится два варианта программирования этой задачи: {Вариант первый: два условия объединены в однологической операцией And(И), которая означает «одновременно, и то и другое»:} IF (A>D) and (R>=0) THEN Begin S:=pi*R*R; L:=2*pi*R End ELSE write(‘Вычисления невозможны, так как условие ложно’);{объединение двух условий в одно не позволяет выявить точную причину невозможности вычисления, так как результатом логического умножения будет значение False при получении значения False любым из сомножителей, то есть при нарушении любого из отдельных условий, входящих в логическое произведение, или при нарушении обоих условий одновременно } { Вариант второй: условия разделеныи проверяются разными условными операторами:} IF (A>D) THEN BEGIN If (R>0) then Begin S:=pi*R*R; L:=2*pi*R End Else write(‘Вычисления невозможны, так как радиус R<=0’) END ELSE write(‘Вычисления невозможны, так как условие A>D не выполнено’); ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА(по метке) –имеет структуру GOTO metka; и служит для безусловного (обязательного) изменения направления последовательности выполнения операторов программы. Здесь metka – код (целое без знака) или слово, указывающие на оператор, который будет выполняться после оператора GOTO metka. Примечание. Согласно принципам структурного программирования оператор безусловного перехода использовать не рекомендуется. ОПЕРАТОР ВЫБОРА CASE
ОПЕРАТОР ВЫБОРА CASE–позволяет выбрать одно из нескольких направлений дальнейшего выполнения программы. Структура оператора: CASE kv OF Знач1: оператор1; Знач2: оператор2; … Значk: операторk [ ELSE оператор] END; Здесь kv – ключ выбора или выражение для вычисления значения ключа. Примечание. Тип ключа выбора – любой порядковый тип (целый, символьный, логический, перечислимый). Знач1, Знач2,…, Значk – значения, которые может принимать ключ kv (константы того же типа, что и ключ kv). Работа оператора Case состоит в следующем: значение ключа kv последовательно сравнивается с каждой из констант и при их равенстве выполняется соответствующий этой константе оператор. После выполнения выбранного оператора действие Case завершается. Если значение kv не равно ни одной из перечисленных констант, то выполняется оператор, записанный после ELSE. В частности, раздел ELSE может быть опущен и в этом случае оператор выбора эквивалентен пустому оператору.
Пример1. По заданному номеру месяца программа выдает число дней в месяце. Program long_m; Var n_m:byte; Begin write(‘Введи номер месяца:’);readln(n_m); Case n_m of {ключ n_m – целое число без знака, которое согласно типу byte может принимать значения из диапазона (0,255)} 1,3,5,7,8,10,12: writeln(‘В этом месяце 31 день’); 4,6,9,11: writeln(‘В этом месяце 30 дней’); 2: begin writeln(‘в феврале невисокосного года 28 дней, ’); writeln(‘ а в феврале високосного года 29 дней’) end else writeln(‘номер месяца задан неверно’) end{Case}; writeln(‘Для завершения работы нажми enter’);readln end.
Пример 2. Для заданного значения температуры по Цельсию определяется температура по шкале Фаренгейта, Кельвина или Ренкина. Program Scale_T; Var tc:real; S:char; Begin writeln(‘Соответствие между температурными шкалами ’); Writeln(‘Цельсия, Фаренгейта, Кельвина и Ренкина: ’); Write(‘Задайте значение температуры по Цельсию Tc= ’); Readln(tc); If tc >= -273 then Begin Writeln(‘Температура по какой шкале Вас интересует? – ‘); Write(‘Фаренгейта – нажать F, Кельвина – K, Ренкина – R;‘); Readln(S); Case S of {ключ – символьное значение} ‘F’,’f’: writeln(‘По Фаренгейту температура равна ’, (1.8*tc+32) ); ‘K’,’k’: writeln(‘По Кельвину температура равна ’, (tc+273.15) ); ‘R’,’r’: writeln(‘По Ренкину температура равна ’, (1.8*tc+492) ) Else writeln(‘Программа не знает такой шкалы’); End Else writeln(‘Некорректно: заданная Tc ниже температуры абсо- лютного нуля’); writeln(‘Для завершения работы нажми enter’);readln end.
|