Ветвление в алгоритмах и программах
Для решения большинства задач линейных алгоритмов недостаточно.
В проектах, которые реализуют другие виды алгоритмов, например алгоритмы с разветвлением, используют логические выражения.
Как сравнивают значения величин в программах?
- Простые высказывания в языках программирования можно записать в виде логических выражений с использованием операций сравнения. (Логическая переменная - это переменная, которая может принимать только значение true или false)
- Результатом выполнения операции сравнения значений двух величин есть величина логического типа, которая может принимать одного из двух значений: true, false.
- Для описания логических величин в языке программирования Object Pascal - тип boolean
Сравнение значений величин различных типов имеет определенные особенности: 1. Числовые величины сравниваются по правилам математики. 3. Для логических величин: |
4. Кроме операций сравнения над логическими величинами во всех языках программирования для записи составленных высказываний используют логические операции:
- отрицание;
- конъюнкция;
- дизъюнкция.
Результаты выполнения этих операций над переменными А и В логического типа, принимают значения True (1) и False (0) приведены в таблице истинности
- Чтобы определить значения составного логического выражения, содержащего несколько логических операций, используют таблицу истинности и учитывают приоритет выполнения операций: not, and, or.
- Как и для числовых выражений, для изменения порядка выполнения логических операций используют скобки.
Ветвление в языке программирования Object Pascal
Простые и составные логические выражения, значениями которых являются True или False, используют в описании алгоритмической структуры ветвления, с помощью которой исполнитель алгоритма может выбрать один из сценариев дальнейших действий в зависимости от выполнения определенного условия.
Для описания алгоритмической структуры ветвления на языке программирования используют:
1. Оператор полного ветвления: if <логическое выражение> then <команда 1> else <команда 2>; | |
Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End. |
If условие then |
2. Оператор неполного ветвления: if <логическое выражение> then <команда>; Команда или блок команд в операторе неполного ветвления будет выполняться только в случае, когда логическое выражение принимает значение True. |
|
В операторе неполного ветвления на языке программирования Object Pascal после служебного слова then можно записать только одну команду или блок команд, которые ограничены операторных скобками begin, end. |
begin |
Замечания.
- Перед ключевым словом else (иначе) точка с запятой не ставится, она ставится после всего оператора If.
- Условие является логическим выражением.
- Простые условия записываются в виде равенств или неравенств.
- В сложных условиях несколько простых условий объединяются с помощью логических операций or, and ... В этом случае простые условия заключаются в круглые скобки
3. Если есть необходимость учесть значения нескольких логических выражений, то используют вложенные ветвления. if <логическое выражение 1> then <команда 1> |
В описанных вложенных разветвлениях: |
Обращаем ваше внимание:
-
если после ключевых слов Then и Else следуют только по одной команде, то операторные скобки begin и end можно не ставить;
-
перед Else , Elseif ставить точку с запятой нельзя.
Задание. Разработайте проект в среде Lazarus, в котором по введенным значением температуры воды будет определяться ее агрегатное состояние.
Алгоритм проекта
1. Откройте среду Lazarus, создайте новый проект и сохраните его составляющие в папке проекта.
2. Измените свойства объекта Form1, разместите на форме нужные объекты и предоставьте значений их свойствам, чтобы получить форму например, как на рисунке.
Примите во внимание, что для всех объектов используется свойство шрифта - ArialUnicode MS, размер - 16. Стиль шрифта определите по рисунку.
3. Создайте процедуру обработки события нажатия кнопки Пуск. В окне редактора кода введите код.
procedure TForm1.Button1Click(Sender: TObject);
var t: integer;
begin
t := strtoint(edit1.text);
if t<0 then label2.Caption := 'агрегатное состояние - лед'
elseif t>100 then label2.Caption := 'агрегатное состояние - пар'
else label2.Caption := 'агрегатное состояние - жидкость';
end;
Примеры.Алгоритмы с ветвлением