- •Лабораторная работа 3 Организация разветвляющихся вычислительных процессов Требования по выполнению лабораторной работы
- •Выполнить тестирование программы на подготовленных тестах.
- •Варианты заданий
- •Логический тип данных
- •Отношение
- •Логические выражения
- •Реализация разветвяляющихся процессов с использованием оператора if
- •Реализация разветвяляющихся процессов с использованием оператора Case
- •Контрольные вопросы
Реализация разветвяляющихся процессов с использованием оператора if
Для реализации алгоритмов разветвляющейся структуры в Delphi предусмотрены две формы оператора IF: полная и сокращенная.
Полная форма оператора IF предназна для реализации разветвляющегося процесса, алгоритм которого в графическом виде можно описать так, как представлено на рис.1.
Синтаксическая конструкция полной формы оператора IF, соответсвующая алгоритму, представленному на рис.1.
IF Условие THEN
Оператор 1
ELSE
Оператор 2;
Следующий оператор
Рис.1. Схема алгоритм полного разветвляющегося процесса
Сокращенная форма оператора IF предназначена для реализации разветвляющегося процесса, алгоритм которого представлен на рис.2.
Рис.2. Схема алгоритма выполнения оператора IF в сокращенной форме
Синтаксическая конструкция сокращенной формы оператора IF:
IF Условие THEN
Оператор 1;
Следующий оператор
Согласно синтаксической конструкции опеартора IF, после ключевых слов, then и else, можно писать только один оператор. Если же вычислительный процесс требует выполнения нескольких операторов по ветви then и/или else, то эти операторы надо заключить в оператор begin …. End.
Синтаксическая конструкция оператора IF, когда в ветвях разветвления требуется выполнения нескольких операторов:
IF Условие THEN
Begin
Оператор
Оператор
∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
Оператор
end
ELSE
Begin
Оператор
Оператор
∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
Оператор
End;
Следующий оператор
Операторами в ветвях разветвления оператора IF могут быть так же операторы IF, вторые операторы IF называют вложенными. Вложенные оператоы используются при реализации сильно ветвящихся вычислительных процессов.
Пример вложенной конструкции оператора IF.
IF Условие THEN
Begin
IF Условие THEN
Begin
Операторы
end
ELSE
Begin
Операторы
end;
Операторы
end
ELSE
Begin
Операторы
End;
Реализация разветвяляющихся процессов с использованием оператора Case
Оператор Case используется для более компактного представления в программе сильно ветвящихся вычислительных процессов. Он имеет более ограниченное применение по сравнению с оператором IF. Оператор Case называют оператором выбора.
Синтаксическая конструкция оператора
Case индикатор выбора of
Альтернатива 1;
Альтернатива 2;
∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
Альтернатива N
Else
Оператор
End;
Где:
Индикатор выбора – это выражение простого порядкового типа.
Альтернатива имеет следующую синтаксическую конструкцию (описание приведено в виде диаграммы Вирта):
В данной диаграмме Конст. – это константа выбора.
Пример использования оператора Case.
По введенному номеру дня недели, вывести одну из фраз: Этот день выходной; Этот день рабочий; Такого номера дня недели нет.
Program Ex_Case;
Var
Num:byte;
Begin
Write(‘Введите номер дня недели’);
Readln(Num);
Case Num of
1..5:writeln(‘Этот день недели рабочий’);
6,7 : writeln(‘Этот день недели выходной’);/
Else
writeln(‘Такого номера дня недели нет’);
End;
End.
Правила использования оператора Case.
Индикатор выбора – это выражение простого порядкового типа.
Константы выбора должны быть совместимы с типом индикатора.
В пределах одного оператора все константы должны быть уникальными.
Оператором в альтернативе может быть так же оператор Case.
Если требуется в альтернативе указать более одного оператора, то надо использовать оператор Begin ….End.
Алгоритм выполнения оператора.
Путем последовательного просмотра констант альтернатив, отыскивается альтернатива, константа которой равна значению индикатора.
Если такая альтернатива найдена, то выполняется оператор этой альтернативы и управление передается оператору, следующему за оператором Case.
Если альтернатива не найдена и оператор Case имеет ветвь Else, то выполняется оператор, следующий за Else.
Если альтернатива не найдена и оператор Case не имеет ветви Else, то управление передается оператору следующему за Case.
