Для облегчения восприятия программы не рекомендуется использовать многократно вложенные друг в друга условные операторы. Если в зависимости от какого-либо выражения необходимо производить несколько различных групп операций (более двух), то используется оператор выбора:
CASE <выражение> OF
k1,k2... : <оператор1>;
...
l1,l2... : <операторn>
[ Else
<операторm> ]
End;
Часть Else является расширением Турбо-Паскаля.
Здесь выражение может быть любого дискретного типа, то есть вещественный результат не допускается.
ki, ..., li – константы выбора. Они должны быть различными и принимать значения выражения. Можно использовать одну или несколько констант, а так же диапазоны.
Если после вычисления выражения результат совпадает с одной из констант выбора, то выполняется соответствующий оператор. Если же соответствующая константа отсутствует, то выполняется оператор по ветви Else.
Рассмотрим пример. В промышленности для измерения высоких температур широко используются термопары из соединений различных сплавов. С них снимают напряжение, являющееся функцией температуры, но значение напряжения существенно нелинейно и его приходится линеаризировать. Напряжение преобразуется в цифровой код с помощью АЦП, то есть входное значение является целой величиной.
У разных термопар характеристики различаются очень сильно. Рассмотрим термопару, позволяющую измерять температуру до 1500 градусов. Допустим, ее график как принятый с 12-разрядного АЦП код от температуры (212 = 4096 отсчетов) выглядит в соответствии с рис. 4.1.
Рис. 4.1. Зависимость кода, принятого с АЦП, от температуры, измеряемой термопарой
Кривая заменяется отрезками прямых с координатами и углами наклона, которые определяются заранее. В зависимости от диапазона кода, принятого с АЦП, используются данные соответствующей прямой.
Хотя обычно данные читаются в цикле из файла, но в данной программе для простоты осуществляется ввод одной точки с клавиатуры.
Program Linear;
Var n:word;
t:real;
Begin
WriteLn ('Введите значение кода');
Read(n);
Case n of
0..950: t:=n*0.43;
951..1500: t:=400+n*0.85;
1501..2100: t:=600+n*0.38;
2101..3100: t:=1100+n*0.79;
3101..4095: t:=1250+n*0.53
end;
WriteLn ('Значение температуры =',t:8:2)
end.
Последний оператор With для обслуживания записей рассматривается при описании соответствующей структуры данных.
-
Поясните понятие «выражение».
-
Какая операция обладает высшим приоритетом?
-
Какие операции обладают вторым после высшего приоритетом?
-
Какие операции обладают третьим после высшего приоритетом?
-
Какие операции обладают четвертым после высшего приоритетом?
-
Какие операции обладают низшим приоритетом?
-
С какой целью часть выражения заключается в круглые скобки?
-
Как записываются аргументы у стандартных (и нестандартных) функций?
-
Каков общий вид оператора присваивания?
-
Для чего предназначен оператор присваивания?
-
Какое исключение допускается по совпадению типов имени и выражения в операторе присваивания?
-
Каков общий вид операторов ввода?
-
Чем отличается оператор Read от ReadLn?
-
Каков общий вид операторов вывода?
-
Чем отличается оператор Write от WriteLn?
-
Чем отличается список параметров ввода от списка параметров вывода?
-
Что происходит с выполнением программы, когда встречается оператор Read или ReadLn?
-
Что содержит список параметров ввода?
-
Что содержит список параметров вывода?
-
Как можно отформатировать вывод для любого типа данных
-
Как можно отформатировать вывод для вещественного типа данных
-
Каков общий вид составного оператора?
-
Где используется составной оператор?
-
Как выглядит пустой оператор?
-
В каких случаях применяется пустой оператор?
-
Как выглядит безусловный оператор перехода?
-
Почему не рекомендуется использовать оператор безусловного перехода?
-
В какие области программы запрещены переходы?
-
Каков общий вид полной формы условного оператора?
-
Как работает условный оператор в полной форме записи?
-
Каков общий вид сокращенной формы условного оператора?
-
Что произойдет, если при использовании сокращенной формы условного оператора логическое выражение примет ложное значение?
-
В каких случаях используют оператор цикла FOR?
-
Какова общая форма записи оператора цикла FOR?
-
Что является параметром цикла в операторе FOR?
-
Как происходит изменение параметра цикла в операторе FOR?
-
Что является начальным и конечным значениями параметра цикла в операторе FOR?
-
Могут ли изменятся параметр цикла, начальное или конечное его значения внутри цикла в операторе FOR?
-
Каково минимальное количество выполнений оператора внутри цикла FOR?
-
Какова общая форма записи оператора цикла WHILE?
-
При каком условии будет выполняться внутренний оператор в операторе цикла WHILE?
-
Что необходимо предпринять, чтобы внутри цикла WHILE выполнялось несколько операторов?
-
При наличии параметра цикла, как он должен изменяться в операторе WHILE?
-
Каково минимальное количество выполнений оператора внутри цикла WHILE?
-
Какова общая форма записи оператора цикла REPEAT?
-
Что необходимо предпринять, чтобы внутри цикла REPEAT выполнялось несколько операторов?
-
При каком условии будет выполняться внутренний оператор в операторе цикла REPEAT?
-
При наличии параметра цикла, как он должен изменяться в операторе REPEAT?
-
Каково минимальное количество выполнений оператора внутри цикла REPEAT?
-
В каком случае используется оператор выбора CASE?
-
Какова общая форма записи оператора выбора CASE?
-
Какая часть оператора выбора CASE добавлена в Турбо-Паскале?
-
Что такое «константы выбора» в операторе CASE?
-
Каким образом работает оператор выбора CASE?
-
Каково должно быть соответствие между выражением и константами выбора в операторе CASE?
Достарыңызбен бөлісу: |