Pascal: Занятие № 4. Логический тип данных Boolean, поиск максимума и минимума в Паскале

На занятии происходит знакомство с логическим типом Boolean в Паскале. Рассматривается алгоритм того, как находится минимальное и максимальное число в Паскале

Сайт labs-org.ru предоставляет лабораторные задания по теме для закрепления теоретического материала и получения практических навыков программирования на Паскале. Краткие теоретические сведения позволят получить необходимый для этого минимум знаний. Решенные наглядные примеры и лабораторные задания изложены по мере увеличения их сложности, что позволит с легкостью изучить материал с нуля. Желаем удачи!

Логический тип данных Boolean в Паскале

Мы уже научились писать программы, основанные на линейных алгоритмах, в Паскале. И даже уже составляем нелинейные алгоритмы — с ветвлением — в которых используются логические выражения, которые принимают значения true или false.

Значения логического типа:

TRUE

FALSE

В примере ниже, на экран выводится результат логического выражения:

1
2
3
4
5
6
var 
  A: integer;
begin
  A := 5;
  write(A > 0); {Будет выведено True}
end.

Для записи результата логического выражения используется специальная логическая переменная, которая имеет в Паскале тип boolean и может также принимать одно из двух значений — true или false.

Посмотрим, как работает та же самая задача с логической переменной:

1
2
3
4
5
6
7
8
var 
  A: integer;
  b: boolean;
begin
  A := 5;
  b:=A > 0; 
  write(b);{Будет выведено True}
end.
Пример: Рассмотрим пример работы с типом boolean в pascal:
1
2
3
4
5
6
var a:boolean;
begin
a:=true;
if a=true then writeln ('истина')
  else writeln('ложь');
end.

Для создания сложных условий используются специальные логические операции: and, or, not и xor.

Задача Boolean 1. Дано целое положительное число. Проверить истинность высказывания: «оно является четным»

[Название файла: task_bool1.pas]

Рассмотрим пример с использованием логической операции XOR:

Пример: Запросить два целых: X, Y. Проверить истинность высказывания: «Только одно из чисел X и Y является нечетным»
1
2
3
4
5
6
7
8
9
10
11
program Boolean;
var
  x,y: integer;
  c :boolean;
 
begin
  write('Введите X, Y: ');
  read(x,y);
  c := (Odd(x)) xor (Odd(y)); 
  writeln('Только одна из переменных X и Y имеет нечетное значение - ', c); 
  end.

Рассмотрим еще одно решение задачи в Паскале с использованием логической переменной:

Задача Boolean 2. Даны три целых числа: A, B, C. Проверить истинность высказывания: «B находится между числами A и C».

[Название файла: task_bool2.pas]

Рассмотрим решение более сложной задачи с переменной логического типа:

Пример: Дано трехзначное число. Проверить истинность высказывания: «Все цифры данного числа различны».
Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
const a=348;
var
   d_n, s_n, e_n: integer;
   flag:boolean;
begin
flag:=false;
s_n:=a div 100;
d_n:=((a mod 100)div 10);
e_n:=a mod 10;
if (s_n<>d_n) and (d_n<>e_n) and (e_n<>s_n) then 
   flag:=true;
writeln(flag);
end.

Здесь каждый разряд получается путем использования операций деления нацело и взятия остатка от деления: s_n — это цифра сотого разряда, d_n — цифра десятого разряда, e_n — единицы.

Задача Boolean 3. Дано целое N > 0. С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE, если нет — вывести FALSE.

[Название файла: task_bool3.pas]

Задача Boolean 4. Дано целое положительное. Проверить истинность высказывания: «Данное число является нечетным трехзначным».

Минимальное и максимальное число в Паскале.

[Название файла: task_bool4.pas]

При организации поиска минимального или максимального числа среди ряда чисел всегда на помощь приходит старенький «бабушкин» алгоритм:

  • Представим ситуацию, что мы жарим пирожки, и уже нажарили целую большую горку; теперь надо выбрать из них самый большой, т.е. в нашем случае максимальный.
  • Берем верхний пирожок, т.е. первый, и говорим, что он пока самый большой и откладываем его в сторону.
  • Затем берем второй и сравниваем с самым большим, если этот второй пирожок оказывается больше — откладываем его на место «бывшего самого большого» и говорим, что теперь он самый большой.
  • Берем следующий и повторяем действия. Так осуществляем данную процедуру со всеми пирожками.

Иногда в качестве первоначального максимума назначается самое малое возможное число (в зависимости от контекста задачи). А в качестве минимума — напротив, самое большое возможное число. Например, если сказано, что необходимо найти максимальное / минимальное среди положительных чисел, меньших 1000, то:

max:=0;
min:=1000;

или

max:=integer.MinValue;; // минимальное среди типа Integer
min:=integer.MaxValue;; // максимальное среди типа Integer
PascalABC.NET:

Можно использовать стандартные функции max() и min():

print(max(2,8)); // 8
print(min(2,8)); // 2

Рассмотрим теперь решение задачи на Паскале нахождения максимального числа:

Пример: В компьютер вводятся 10 чисел. Выводить максимальное из введенных чисел.
Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
var i, chislo, max:integer;
begin
// первое введенное число 
//сразу определяем как максимальное:
readln(max); 
for i:=2 to 10 do
begin
  readln (chislo);
  if chislo > max then 
    max:= chislo
end;
writeln(max)
end.
1
2
3
4
5
6
7
8
9
10
11
12
begin
// первое введенное число 
//сразу определяем как максимальное:
var maximum:=readInteger(); 
for var i:=2 to 10 do
begin
  var chislo:=readInteger();
  // используем стандартную функцию max():
  maximum := max(chislo,maximum); 
end;
writeln(maximum)
end.

Аналогично осуществляется поиск минимального из чисел.

Для лучшего понимания темы поиска максимального или минимального значения предлагаем посмотреть видео урок:
youTube

Задача Max 1. В танцевальном клубе участвуют 10 представительниц женского пола. Определите, может ли самая старшая из них быть матерью самой младшей (в таком случае разница в возрасте может составлять не менее 17 лет).

[Название файла: task_max1.pas]

Задача Max 2. Найти минимальное и максимальное из 10 введенных чисел и вывести сумму их порядковых номеров.

[Название файла: task_max2.pas]

Задача Max 3. Средняя продолжительность жизни лабораторной мыши – 10 лет. Найдите максимальный показатель продолжительности жизни у пяти белых мышей и у пяти мышей-альбиносов. У каких мышей показатель уровня жизни выше?

[Название файла: task_max3.pas]

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя

2 комментария для “Pascal: Занятие № 4. Логический тип данных Boolean, поиск максимума и минимума в Паскале”

  1. В задача номер два ошибка в объявлении переменных. Они не совпадают использующимся.

Обсуждение закрыто.