Вопрос по Урок 9 Задача12

Всем привет.

Урок 9 Задача 12 (на всякий случай ссылка на урок http://fkn.ktu10.com/?q=node/8539)

Вопрос по вот этой задаче. Сначала сама задача:

Изучите код:

var s, t:integer;
    f, b:boolean;
begin
  f := true;
  b := false;
 
  if (f=true) then
    t:=1
  else
    t:=2;
 
  if (b=false) then
    s:=3
  else
    s:=4;
end. 

-- блоки условий можно переписать более кратко, без использования сравнения = true или = false, с сохранением той же логики работы программы.

Подсказки:

оператор if итак неявно сравнивает значение логического выражения в скобках с true (и принимает решение, какую именно ветку then или else выполнить)
для второго if в коде выше потребуется использование оператора Not.

Вопрос: Понятно, что блоки по заданию надо переписать более кратко. Но какое именно условие и задание для этого?

а) Переписать, чтобы в самом начале не задавались переменные:

 f := true;
  b := false;
без использования сравнения = true или = false

- то есть удалить их и написать без них?

б) Переменные f и b могут меняться? Если они заданы и они не меняются, то может надо переписать с учетом того, что значения f и b в самом начале уже заданы:

 f := true;
  b := false;

и соответственно, можно уже не писать условие для if:

  if (f=true) then
    t:=1
  else
    t:=2;

, а сразу писать так, что

 t:=1, 

ведь нам с самого начала известно, что

 f := true;

в) Или может имелось что-то вообще другое? Пока не понятно. Прошу уточнить, если кто-то в курсе, в чем именно суть задания.

vedro-compota's picture

в данной задаче мы переписываем только проверки в условиях:


if (f=true) then
// --------
if (b=false) then

эти проверки можно записать короче

_____________
матфак вгу и остальная классика =)

Я правильно понял, по поводу сокращения записи проверки условий, что мы по сути можем проверять только одно из условий (true/false), считая другое условие базовым? Речь об этом? То есть вот так могу записать спокойно:

program Hello;
var s, t:integer;
    f, b:boolean;
begin
  f := true;
  b := false;
    t:=1;
    s:=3;
 
  if (f=false) then
    t:=2;
 
  if (b=true) then
    s:=4;
end.

То есть мы можем один вариант иметь ввиду как базовый, например true, и менять значение, только в случае false. Как итог - более короткая запись и отсутствие необходимости обеих проверок.

Об этом речь в задании?

vedro-compota's picture

Я правильно понял, по поводу сокращения записи проверки условий, что мы по сути можем проверять только одно из условий (true/false), считая другое условие базовым?

нет, речь идет о том как переписать содержимое скобок:
(f=false) и (b=true) короче, используя в т.ч. оператор Not

_____________
матфак вгу и остальная классика =)