Задача 18 Урок 9
Primary tabs
Была программа:
// Вариант 1: var a: integer; begin writeln('Введите а:'); readln(a); if (a > 5) then writeln('a') else writeln(5); readln(); end.Ее переписали так:
// Вариант 2:var a: integer; begin writeln('Введите а:'); readln(a); if (a > 5) then writeln('a') else if (a < 5) writeln(5); readln(); end.Вопрос: изменилось ли что-то в поведении программы, если да, то почему? Объясните письменно, можно прокомментировать код, если изменения в логике есть.
Ответ:
в первом случае если а больше 5 идет вывод строки 'a',
а если меньше то литерала 5
во втором случае если первое условие дает false, то в ветке else
дается второе условие
Второе условие имеет смысл только в случае если a=5 , при таком значении
в первом случае вывод будет 'a'(т.к. условие даст false), а во втором ничего не выведет,
т.к. оба условия ложны.
ПС:второй вариант кода из задания не работает если в конце 7 строки нет then.
UPD:
Неточность здесь :
в первом случае если а больше 5 идет вывод строки 'a',
а если меньше то литерала 5
не нашел.
Могу только добавить что не "если", а "иначе если".
Разница будет если вводить 5, в первом случае получим ту же 5ку, во втором не получим ничего.
- Log in to post comments
- 393 reads
vedro-compota
Sun, 01/29/2023 - 13:43
Permalink
в первом случае если а больше
-- тут не все точно
2) При каких значения входных данных поведение программ отличается?
_____________
матфак вгу и остальная классика =)