Условный оператор в Паскале.




 

Условные операторы предназначены для выбора к исполнению одного из возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, т.е. отсутствовать) В качестве условий выбора используется значение логического выражения. В Турбо Паскале имеются два вида условных операторов: if иcase.

Оператор условиа if. Оператор условия if является одним из самых популярных средств, имеющих естественный порядок выполнения операторов программы. Синтаксическая диаграмма оператора if выглядит таким образом:

 

 

 

Операторы условия if выполняются следующим образом. Сначала выражается выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение выражения есть true (истина), выполняется <оператор 1>, указанный после слова Then (то). Если результат вычисления выражений в условии естьFalse (ложь), то выполняется <оператор 2>. Во втором – если результат выражения true, то выполняется <оператор>, если false – оператор, следующий сразу за оператором if. Операторы if могут быть вложенными.

Read (Ch);

If Ch=’N’ then parol:= True

Else Parol:= False;

Read (x);

If Parol = True then

If x = 100 then Writeln (‘пароль и код правельны’)

Else begin

Writeln (‘Ошибка в коде’);

End;

 

В данном примере с клавиатуры считывается значение переменной символьного типа Ch. Затем проверяется условие Ch=’N’. Если оно выполняется, то переменной Parol булевского типа присваеватся значение True, если условие не выполняется, False. Затем с клавиатуры считывается значение кода Х. Далее оператор проверяет условие Parol = True. Если оно имеет значение True, то выполняется проверка введённого пароля оператором if X=100. Если условие Х=100 имеет значение True, то выводится сообщение “Пароль и код правельны”, и управление в программе передаётся на оператор, следующий за словом end, если оно имеет значение False, выполняется соствной оператор, стоящий после слова else, который выводит на экран видеомонитора сообщение “ошибка в коде”, и вызывает стандартную процедуру Halt(1) для остановки программы.

 

2.3.1 Составной оператор (оператор варианта).

 

Условный оператор позволяет осуществить ветвление программы только по двум направлениям, одно из которых соответствует выполнению проверяемого условия. Если для переменной необходимо осуществить ряд действий, зависящих от других условий, то надо записывать либо вложенные условные операторы, либо несколько операторов подряд. Для такой операции удобно использовать оператор варианта.

Вход в структуру содержит вычисление или ранее полученное значение переменной (индекса варианта). Это значение может совпасть с меткой, стоящей перед оператором на одной из ветвей переключаются. В таком случае выполняется оператор, помеченный этой меткой, и происходит выход из структуры. Оператор бывает простым или составным, ограниченым операторными скобками begin … end; Если значение индекса варианта не совпало ни с одной из меток, то выполняется оператор с номером n + 1 из строки else. Если оператор варианта содержит строку else, то это - полная форма оператора, если такой строки нет, то используется сокращённая форма оператора варианта.

Метки оператора варианта могут быть константами любого типа. Их тип должен совпадать с переменной индекса варианта. Возможно, чтобы индекс варианта должен был как именем переменной, так и выражением соответствующего типа.

В рассмотренных до сих пор алгоритмах и программах все команды (операторы) выполнялись последовательно одна за другой в том порядке, в котором они были записаны. Однако таким образом может быть построен алгоритм для решения далеко не всякой задачи.

В практике хорошо известны задачи, дальнейший ход решения которых зависит от выполнения какого либо условия.

Рассмотрим простой пример задачи из курса алгебры. Требуется построить алгоритм вычисления значений функции у = |х|. Она задаётся соотношением:

 

Y =

 

На языке Паскаль оператор варианта имеет вид:

 

Case индекс варианта of

Метка 1: оператор 1;

Метка 2: оператор 2;

Метка n: оператор n;

Else оператор n + 1

End;

Пример:

Составить программу-решатель.

Дано: молярная масса вещества М, плотность данного вещества Р, масса R или объём V. Требуется найти число молекул К: 1) в единице массы вещества; 2) в теле заданной массой: 3) в единице объёма вещества; 4) в теле заданным объёмом. Для решения задачм воспользуемся формулой:

K = (NА/M)R,

Где NA = 6,022 * 10²³г/моль – число Авогадро.

 

На основании этой формулы получаем расчётные формулы для программы:

1)K=NA/M; 2)K=NAR; 3)K=NAPV/M 4)K=NAP/M.

 

Программа имеет вид:

Program E20;

Const NA = 6.022 E20;

Var N: integer; M, R, P, V, K: real;

Begin

Writeln (‘зная постоянную Авогадро, Плотность P данного вещества’);

Writeln (‘и его молярную массу М, можно найти число молекул в’);

Writeln (‘1. в единице массы вещества’);

Writeln (‘2. в теле массой R’);

Writeln (‘3. в единице объёма’);

Writeln (‘4. в теле объёмом V’);

Write (‘введите номер решающей задачи’);

Readln (N);

Write (‘введите исходные данные: М =’);

Readln (M);

Case N of

1: K: = NA / M;

2: begin

Write (‘R = ‘);

Readln (R);

K: = NA *R/M;

End;

3: begin

write (‘плотность вещества Р = ’);

Readln (P);

Write (‘V = ‘);

Readln (V);

K: = NA * P *V/M;

End;

4: begin write (‘плотность вещества P = ’);

Readln (P);

K: = NA *P/V

End;

End;

Write (‘число молекул K = ’, K’);

End.

 

Вложенные условия.

 

Существуют задачи в которых по одной из ветки ветвления нужно рассмотреть ещё одно условие.

Рассмотрим задачу: сравнить 3 целых числа и вывести на печать максимальное.

Program chisla;

Var a, b, c: integer;

Begin

Writeln (‘Введите три числа’);

Read (a, b, c);

If a<b then

If a>c then writeln (‘ максимально число ’, a)

Else if b>c then writeln (b максимально число’, b)

Else writeln (‘c максимальное число’, c);

End.

 

Вот блок – схема данной задачи:

 

 

           
   
 
   
 
 

 


Логические выражения.

Алгоритм решения квадратного уравнения содержит проверку условия D<0. Два значения, D и 0, связаны отношением < - меньше. Если условие выполняется то говорят что соответствующее выражение истинно, если не выполняется то ложь.

Речь идёт о логическом выражении. Примером логических выражений могут служить математические отношения связанные знаками >, <, =, логические выражения имеют два значения True(истина) и False (ложно). Логические выражения такие могут иметь логические операции: отрицания (NOT), конъюнкций (OR) и дизъюнкции (AND).

 

Логические операции имеют следующую таблицу истинности:

 

A B Not (A) (A) AND (B) (A) OR (B)
True True False True True
True False False False True
False True True False True
False False True False False

 

Пусть требуется определить, принадлежит ли точка с координатой x отрезку [a; b]. Если записать это условие двойным неравенством, то читать его надо так: x меньше либо равен b и больше либо равен a (a<x<b). Отношение “меньше или равно” в Паскале записывается двумя знаками. Аналогично записывается и “больше либо равно”. Однако в Паскле нельзя записывать двойное неравенство. Используя логическую операцию and (и), запишем:

(x>=a) and (x<= b).

Отношения, между которыми стоит логическая операция, заключаются в круглые скобки.

Имеется прямоугольное отверстие со сторонами a и b и кирпичь с рёбрами x, y z. Требуется составить условие прохождения кирпича в отверстие.

Кирпич пройдёт в прямоугольное отверстие, если выполняется сложное условие:

(a>=x) and (b>=y) or

(a>=y) and (b>=x) or

(a>=x) and (b>=z) or

(a>=z) and (b>=x) or

(a>=y) and (b>=z) or

(a>=z) and (b>=y)

Для трёх граней шесть условий получается потому, что можно каждую грань повернуть на 90 и проверить для каждой грани два случая.

 

Определить принадлёжность точки фигуре. Пусть фигура задана ограничивающими её прямыми.

Для каждой прямой определим полу плоскость, в которой находится фигура- треугольник АВС. Полуплоскость задаётся неравенством.

Полуплоскость, находящаяся выше от оси х определяется неравенством y>0.

Полуплоскость, находящаяся справа от прямой, соединяющей точки (-1,0) и (0,2), задаётся неравенством y-2x-2<0.

Полуплоскость, находящаяся слева от прямой, соединяющей точки (1,0) и (0,2), задаётся неравенством y+2x-2<0.

Условие принадлежности точки (x,y) фигуре:

(y>0) and (y-2*x-2<0) and (y+2*x-2<0).

Приведём пример программы определяющая существования треугольника со сторонами a, b и c. Условие существования треугольника известно из геометрии: сумма двух любых сторон должна быть больше третьей. Следовательно, для всех сторон условие “сумма двух больше третьей” должно выполняться.

 

Program e4;

Var a, b, c: real;

Begin

Writeln (‘дите длины трёх сторон треугольника’);

Readln (a, b, С);

Write (‘треугольник со сторонами ’, a, b, c);

If (a+b>c) and (b+c>a) and (a+c>b)

Then writeln (‘существуют’)

Else writeln (‘не существуюет’);

Readln

End.

 

Ш. Технологический пакет к урокам информатики по теме “Ветвление в Паскале”



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-07-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: