Логические величины, операции, выражения
§ 18
Высказывание (суждение) – это повествовательное предложение, в котором что-либо утверждается или отрицается. Некоторое утверждение, которое может быть либо истинным, либо ложным.
Логическая величина – понятие, выражаемое словами:
истина, ложь (true, false).
Логическое выражение – простое или сложное высказывание, содержащие логические связки (операции).
Основные логические операции
Конъюнкция (логическое умножение) – И & ^
Дизъюнкция (логическое сложение) - ИЛИ ˅
Инверсия (отрицание) – НЕ ¬
Логические функции от числовых аргументов называют термином предикат .
Логические величины в Паскале :
true - истина, false – ложь.
Логические переменные: описываются с типом Boolean .
var a: integer;b : boolean;
Логические операции в языке Паскаль
Not – отрицание. (изменяет логическое значение операнда на противоположное)
And – конъюнкция И (равно true , если оба операнда true )
Or – дизъюнкция ИЛИ (равно false , если оба операнда false )
Xor – исключающее ИЛИ. (равно true, если операнды имеют разные значения)
Стандартные булевские функции
odd(x) = true, если x нечетный (x целый тип);
eoln(x) = true, если встретился конец строки текстового файла x;
eof(x) = true, если встретился конец файла x.
В остальных случаях эти функции принимают значение false.
Старшинство операций в логическом выражении на Паскаль
1. Арифметические операции:
- – (минус унарный)
- * , /
- + , -
2. Логические операции:
- Not
- And
- Or , xor
3. Операции отношения:
= , , , = ,
1. Дано целое число A. Проверить истинность высказывания: « Число A является нечетным».
Для того чтобы узнать, является ли данное число нечетным в Паскале предусмотрена специальная функция Odd, которая возвращает true , если число нечетное и false , если число четное.
program Boolean2;
var
a: integer;
b : boolean;
begin
write('Введите число A: ');
read(a);
b := Odd(a);
writeln('Число A является нечетным - ', b); { Можно обойтись и без b }
end.
Пусть ans - логическая переменная,
n - целая переменная.
В результате выполнения оператора присваивания
ans:=n mod 2=0
переменной ans будет присвоено значение true при любом чётном n и false в противном случае.
program n_6;
var n: integer; ans: boolean ;
begin
writeln ( 'Определение истинности высказывания о чётности числа ');
write ('Введите исходное число');
readln (n);
ans:=n mod 2=0;
writeln ('Число ', n,' является четным - ', ans)
end.
2. Даны два целых числа: A, B. Проверить истинность высказывания: « Ровно одно из чисел A и B нечетное».
Используем xor.
program Boolean10;
var
a,b: integer;
c :boolean;
begin
write('Введите число A, B: ');
read(a,b);
c := (Odd(a)) xor (Odd(b));
writeln('Ровно одно из чисел A и B нечетное - ', c);
end.
3.Составить программу, выводящую значение true, если указанное высказывание является истинным, и false – в противном случае.
Треугольник со сторонами a, b, c является равносторонним.
program proverka;
uses crt;
var a,b,c: real; d:boolean;
begin
clrscr;
write('введите A, B , C');
readln(a,b,c);
d:= (a=b) and (a=c) and (b=c);
write(d);
end.
program n_7;
var a, b, c: integer; ans: boolean ;
begin
writeln ('Определение истинности высказывания
о равнобедренном треугольнике');
write ('Введите значения a, b, c ');
readln (a, b, c);
ans:=(a=b) or (a=c) or (b=c);
writeln ('Треугольник с длинами сторон ', a, ',', b,
',', c, ' является равнобедренным - ', ans )
end.
4. Дано четырехзначное число. Проверить истинность высказывания: «Данное число читается одинаково слева направо и справа налево».
program Boolean23;
var
a, b, c, d, e, f: integer;
b1, b2: boolean;
begin
write('Введите четырехзначное число: ');
read(e);
a := e div 1000;
b := e mod 1000 div 100;
c := e mod 100 div 10;
d := e mod 100 mod 10;
f := d * 1000 + c * 100 + b * 10 + a;
writeln('Данное число является палиндромом - ', f=e);
end.
Повторение
1. Как записывается заголовок программы на Паскале? 2. Как записывается раздел описания переменных? 3. С какими типами числовых величин работает Паскаль? 4. Как записывается оператор присваивания? 5. Как записывается оператор ввода и вывода в Паскале?
Закончите предложения
- Высказывание (суждение) – это
- Логическая величина –
- Логическое выражение –
- Конъюнкция
- Дизъюнкция
- Инверсия
- Предикат
- Логические переменные описываются с типом…
Исследование функций round , int и frac
program n_3;
var x: real;
begin
writeln ( 'Исследование функций round, int, frac');
write (' Введите x');
readln (x);
writeln ( 'Округление - ', round(x));
writeln ( 'Целая часть - ', int(x));
writeln ( 'Дробная часть - ', frac(x))
end.
Выполните программу несколько раз для
x {10,2; 10,8; –10,2; –10,8}.
Какой будет тип результата каждой из этих функций?
?
Целочисленный тип данных
Операции над целыми числами в языке Паскаль:
Операция
Обозначение
Сложение
Тип результата
+
Вычитание
-
Умножение
integer
integer
*
Получение целого частного
div
integer
Получение целого остатка деления
integer
mod
Деление
/
integer
real
Операции div и mod
Трёхзначное число можно представить в виде следующей суммы: x = a ·100 + b ·10 + c , где а, b, с - цифры числа.
Программа нахождения суммы цифр вводимого с клавиатуры целого трёхзначного числа.
program n_4;
var x, a, b, c, s: integer;
begin
writeln ('Нахождение суммы цифр трёхзначного числа');
write ('Введите исходное число');
readln (x);
a:=x div 100;
b:=x mod 100 div 10;
c:=x mod 10;
s:=a+b+c ;
writeln ('s= ', s)
end.
Символьный и строковый типы данных
Символы – это все буквы и значки, которые есть на клавиатуре. Для ввода в программу символьных переменных необходимо указать для них символьный тип данных char .
Функция ord преобразовывает букву в её числовой код.
Функция chr преобразовывает числовой код символа в сам символ.
S
83
S
4
52
4
%
37
%
W
ord
87
chr
W
Значением строковой величины (тип string ) является произвольная последовательность символов, заключенная в апострофы.
var c: string
c:= chr(52)+chr(37)
с
4%
Символьный и строковый типы данных
program n_5;
var a: char; kod: integer; b: string;
begin
writeln ('Код и строка');
write ('Введите исходную букву');
readln ( a );
kod := ord ( a );
b:=chr(kod–1)+a+chr(kod+1);
writeln ( 'Код буквы ', a , '-', kod );
writeln ( 'Строка: ', b )
end.
Вывод на экран кода буквы введённой с клавиатуры
Вывод на экран строки из трёх букв.
Каких?