- •27 Тема 2. Разветвляющиеся под. Информатика и программирование Тема 2. Разветвляющиеся под Новосибирск 13 ноября 2020 г.
- •Линия потока (линия передачи управления)
- •Процесс (функциональный узел)
- •Решение (предикатный узел)
- •Узел Модификация
- •Узел слияния
- •Узел Пуск - останов
- •Разветвляющийся процесс обработки данных
- •Тестирование программы.
- •Структурные операторы
- •Условные операторы
- •Условный оператор if
- •Структура ifthen
- •Структура ifthenelse
- •Синтаксическая диаграмма оператора if
- •Вложенные операторы if
- •Оператор варианта case
- •Структура case
- •Синтаксическая диаграмма оператора варианта case
- •Примеры приложений под Windows, реализующие разветвляющиеся процессы обработки данных, использующих операторы case, if.
- •Контрольные вопросы
- •Источники дополнительных сведений
Тестирование программы.
Под тестированием понимают процесс исполнения программы с целью обнаружения в ней логических ошибок. Под логической ошибкой понимают любое несоответствие программы заданной на неё спецификации.
Будем тестировать программу методом тестирования путей. Существуют только два пути выполнения разработанной программы (см. Рисунок 3). Необходимо подобрать исходные данные для выполнения программы по каждому из возможных путей. Однако, учитывая, что условие ветвление сложное: оно состоит из составных частей, каждое из которых может содержать ошибку, для левой ветви необходимо разработать шесть тестовых наборов, по одному для каждой из частей условия.
Набор тестов для тестирования разработанной программы представлен в таблице 2.
Таблица 2. Тестовый набор данных
Номер теста |
Исходные данные |
Ожидаемый результат |
Пояснения |
1 |
a = -3, b = 4, c = 5 |
'a,b,c - не стороны треугольника' |
Левая ветвь IFTHENELSE, a < 0 |
2 |
a = 3, b = -4, c = 5 |
'a,b,c - не стороны треугольника' |
Левая ветвь IFTHENELSE, b < 0 |
3 |
a = 3, b = 4, c = -5 |
'a,b,c - не стороны треугольника' |
Левая ветвь IFTHENELSE, c < 0 |
4 |
a = 1, b = 4, c = 5 |
'a,b,c - не стороны треугольника' |
Левая ветвь IFTHENELSE, c = b + a |
5 |
a = 1, b = 6, c = 4 |
'a,b,c - не стороны треугольника' |
Левая ветвь IFTHENELSE, b > a + c |
6 |
a = 1, b = 2, c = 5 |
'a,b,c - не стороны треугольника' |
Левая ветвь IFTHENELSE, c > b + a |
7 |
a = 3, b = 4, c = 5 |
s = 6 |
Правая ветвь IFTHENELSE |
Структурные операторы
Структурный оператор - оператор, в состав которого могут входить один или несколько операторов, порядок выполнения которых он определяет.
Структурные операторы подразделяются на:
Составной оператор
Условные операторы
Операторы цикла
Оператор над записями
Условные операторы
Условные операторы позволяют выбрать для выполнения один из нескольких операторов (или не выбрать ни одного).
Этот выбор осуществляется в зависимости от некоторого условия.
По типу условия выбора и по числу доступных для выбора операторов условные операторы делятся на:
Условный оператор if
Оператор варианта case
Условный оператор if
Условный оператор (if) имеет следующий синтаксис (см. также синтаксическую диаграмму):
if E then s1 else s2
и может так же использоваться в сокращённом виде
if E then s1
здесь E - выражение, s1 – оператор, и s2 – оператор. Выражение E называют условием выбора, оно должно быть выражением стандартного типа Boolean (мы будем также называть этот тип логическим или булевским); if, then и else – зарезервированные слова.
Полная форма оператора if предполагает выбор одного из двух операторов: S1, S2 в зависимости от условия выбора: если E = True, то выполняется оператор S1, иначе если E = False, то выполняется оператор S2.
Сокращенная форма оператора if предполагает выбор одного из двух операторов: S1 и пустого оператора в зависимости от условия выбора: если E = True, то выполняется оператор S1, иначе если E = False, то выполняется пустой оператор.
Синтаксическая неоднозначность, возникающая в конструкции:
if E1 then if E2 then S1 else S2
разрешается путем следующей интерпретации этой конструкции:
if E1 then begin if E2 then S1 else S2 end;
В общем случае, ключевое слово else связывается с ближайшим ключевым словом if, с которым еще не ассоциировано else.
Управляющая структура оператора if в сокращённой форме - это структура типа «ifthen», в которой if-тест соответствует выражению E, а then - часть - оператору S1.
Управляющая структура оператора if в полной форме - это структура типа «ifthenelse», в которой if-тест соответствует выражению E, then - часть - оператору S1, else - часть - оператору S2.
Пример оператора if
var
X, Y, Z: Integer;
begin
Readln(X, Y);
if X > Y then Z:= X else Z:= Y;{ Z = max(X,Y). В результате выполнения оператора if Z получает наибольшее из значений X и Y }
if X < 0 then X:= -X ;{ X = Abs(X). В результате выполнения оператора if X получает значение равное абсолютному значению X }
end.