Root /ArchiveAbout
()

Является ли число положительным, нечетным, четным?

Является ли число положительным, нечетным, четным?

На этой странице дано решение и разбор первых трех из группы Boolean задач (boolean1-3) задачника Абрамяна. Выясним, как на паскале записать, является ли число положительным, нечетным или четным. Это простейшие примеры, которые могут встретиться на использование логического типа данных boolean.

Boolean1. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».

Допустим, мы имеем высказывание, которое может быть как истинным, так и ложным в зависимости от некоторых условий. Назовем это высказывание V. Если f – логическая переменная (принимающая только два значения: True – истина и False – ложь), то присваивание f := V будет означать, что f будет истинно, когда истинно V, и ложно в противном случае. Пусть высказывание V состоит в том, что число A больше нуля. Тогда, чтобы вывести результат проверки на истинность высказывания V, достаточно в операторе вывода записать значение переменной f: write(f). В результате мы получим True, если A > 0, и False при A ≤ 0. В связи с этим имеем код на Pascal решения задачи Boolean1:

var
  A: real; { <-- Число вещественного типа }
  f: boolean; { <-- Переменная логического типа }

begin
  write('A = ');
  readln(A);
  writeln;
  { Высказывание: «Число A является положительным» на
  языке Pascal записывается как присваивание логической
  переменной f математического эквивалента (A > 0): }
  f := (A > 0); { <== «Число A является положительным» }
  { Если в результате мы получим True, то число положительное,
  если False - отрицательное или 0: }
  writeln('Число A является положительным: ', f);
  readln
end.

**type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 **type** boolean;: Представляет логическое значение. Но можно и не вводить дополнительную логическую переменную f – достаточно в операторе вывода записать само условие A > 0, и если оно выполняется — то есть, если A действительно положительно, — мы получим True, и False — в противном случае. Имеем второй вариант решения:

var
  A: real;

begin
  write('A = ');
  readln(A);
  writeln;
  { Если A > 0, то результат 
  будет True, иначе - False: }
  writeln('Число A является положительным: ', A > 0);
  readln
end.

**type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 Boolean2. Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».

Чтобы проверить число A на четность-нечетность, достаточно разделить его на два: если остаток равен 0, значит число четное, если 1 - нечетное. Здесь используется деление по модулю - A mod B (остаток от деления A на B). В программном коде можно записать так:

Но мы делать этого не будем, поскольку в Паскале есть функция odd(A) - проверка числа A на нечетность. Если A нечетно, то odd(A ) возвращает True, в противном случае – False:

var
  A: integer;

begin
  write('A = ');
  readln(A);
  writeln;
  { Проверка числа A на нечетность в Паскале осуществляется с
  помощью логической функции odd(A), которая возвращает true
  при нечетном A, и false - при четном: }
  writeln('Число A является нечетным: ', odd(A));
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 **function** Odd(i: integer): boolean;: Возвращает True, если i нечетно Boolean3. Дано целое число A. Проверить истинность высказывания: «Число A является четным».

В этой задаче надо проверить число A на четность, поэтому используем функцию odd(A + 1). Если A четно, то A + 1 – нечетно. Поэтому odd(A + 1) возвращает True при четном A, и False – при нечетном:

var
  A: integer;

begin
  write('A = ');
  readln(A);
  writeln;
  { Если A четно, то A + 1 - нечетно. В 
  этом случае odd(A + 1)возвращает true 
  при четном A, и false - при нечетном: }
  writeln('Число A является четным: ', odd(A + 1));
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 **function** Odd(i: integer): boolean;: Возвращает True, если i нечетно Вместо вычисления odd(A+1) с тем же результатом можно вычислять значение **not** odd(A) – противоположное по значению odd(A).