Здравствуйте, дорогие читатели нашего сайта! Сегодня, мы поговорим о логических переменных типа Boolean в Паскаль, логических операциях и решим пять задач.
Для чего нужна логика в Паскаль? Вы, я надеюсь, уже научились писать простейшие линейные программы, и сейчас, наверняка, задаетесь вопросом, как же написать нелинейную программу? Для того чтобы программа была нелинейной в Паскале, как и в других языках программирования, используют логические выражения, которые принимают значения true или false. То есть, на место любого отношения в Паскале ставится true или false. Например,
var A: integer; begin A := 5; write(A > 0); {Будет выведено True.} end.
Список операторов отношения:
- больше: >
- меньше: <
- больше либо равно: >=
- меньше либо равно: <=
- равно: =
- неравно: <>
Для того чтобы записать результат логического выражения, нам требуется специальная переменная. Эта переменная будет иметь тип boolean, она может принимать два значения — true или false. Как создавать простые условие вы уже поняли, но как создавать сложные условия? Для этого используются специальные логические операции: and, or, not и xor. Давайте разберем каждую операцию отдельно и составим таблицы истинности. Примем за 1 — true, а за 0 — false.
And, или конъюнкция.
Or, или дизъюнкция.
Истинно, если хотя бы одно простое высказывание истинно.
Xor, или строгая дизъюнкция.
Not, или инверсия.
Задачи Boolean.
Закрепим полученные знания, решив пару задачек.
Boolean1°. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».
program Boolean1; var a: integer; begin write('Введите число A: '); read(a); writeln('Число A является положительным - ', a > 0); {Простое высказывание.} end.
Boolean2. Дано целое число 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.
Boolean3. Дано целое число A. Проверить истинность высказывания: «Число A является четным».
Для того чтобы узнать является ли число нечетным, используем уже известную нам функцию, затем инвертируем результат.
program Boolean3; var a: integer; b : boolean; begin write('Введите число A: '); { 6 } read(a); b := Odd(a); { False } writeln('Число A является четным - ', not b); { True } end.
Boolean7°. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Число B находится между числами A и C».
program Boolean7; var a, b, c: integer; b1, b2: boolean; begin write('Введите число A, B, C: '); read(a, b, c); b1 := (B > A) and (B < C); b2 := (B > C) and (B < A); { Надо учитывать оба варианта } writeln('Число B находится между числами A и C - ', b1 or b2); end.
Boolean10°. Даны два целых числа: 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.
Boolean23. Дано четырехзначное число. Проверить истинность высказывания: «Данное число читается одинаково слева направо и справа налево».
Используем знания, полученные в этом уроке.
Итак, данная задача проверяет является ли введенное четырехзначное число палиндромом. Наверняка, самый известный палиндром — фраза Мальвины: «А роза упала на лапу Азора.» (Попробуйте прочитать это предложение справа налево)
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.
На сегодня все! Не забывайте периодически заходить к нам на сайт, подписывайтесь и кликайте по кнопочкам!
http://i1.wp.com/learnpascal.ru/wp-content/uploads/2014/01/Untitled_artwork-2.png Ошибочка вышла, третья и четвертая строка
спасибо. сейчас поправим.
Также бы хотелось задания для «самостоятельной работы», т.к . просто смотря на чужое решение — мало чего поймешь. Оставлять в конце каждого урока две-три задачи и решение под спойлер, пусть думают
так у нас же отдельная рубрика есть — решение задач.
А в решении задач не хватает комментирования кода, ибо для новичка, если он не смог решить задачу, важно не решение, а объяснение кода
не понятно, что комментировать. там же только ввод и вывод 🙂
Всяко непонятное новичку abs, подумает что тормозить собрались)
спасибо за совет
сначала решай сам, потом сверяй решение
Спасибо огромное!!! Учитель математики(совместительство-информатика! Для меня вы- находка!). В учебниках сложно, а у вас все понятно!
в планах. но планы слегка амбициозные. если интересно, то наши планы изложены в «о сайте»
«
Спасибо, следить буду за вашим сайтом, в амбициозных планах есть видеоуроки(лекции), к примеру?)
нет 🙂
В самом первом примере у вас ошибка.Где write(a>5); надо write(i>5);
write(A > 0); {Будет выведено True.}
Исправьте, пожалуйста «var
i: integer;
begin
i := 5;
write(А > 0); {Будет выведено True.}
end.», а то сразу вводит в ступор :p
Бля, про палиндромы пример, что это за цифры там, нахуй они там нужны.
В 10 задании в строке пропущена выводимая переменная с
writeln(‘Ровно одно из чисел A и B нечетное — ‘, );
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.
Зачем нужно вводить переменные Boolean?
Незачем. На скорую руку отредактированный старенький код. Обычное дело 🙂
var
a: integer;
b1: boolean;
begin
read(a);
b1 := (a div 1000 = a mod 10) and (a div 100 mod 10 = a mod 100 div 10);
writeln(b1);
end.
Переменных не многовато в примере?
a:=11 ?
Код должен быть понятным, а не в одну строчку
Нужно написать конъюНкция вместо конъюкция.
Что значит odd?
odd переводится с английского «нечётный».
b1, b2: boolean; — зачем это строка нужна,если значения b1 и b2 не используются?Подскажите пожалуйста)
var m,c,n:integer;
label 1; //Создаем метку для перехода.
begin
read(n); //Вводим нужное число
c:=0;
1:if n>0 then begin m:=n mod 10; c:=c*10+m; n:=n div 10; goto 1; end; //Создаем цикл с помощью Goto.
write(c); //получаем зеркальное отражение числа, которое мы ввели. И не важно значение числа!!!
end.
Здравствуйте, почему не работает данный код? Прочитал последнее задание и пытался решить сам. Всегда пишет FALSE
program Palindrome;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
number,result1,result2,result3,result4: integer;
logicresult:boolean;
procedure divmod(x: integer);
begin
result1 := x div 1000;
result2 := (x — result1*1000) div 100;
result3 := (x — result1*1000 -result2*100) div 10;
result4 := x mod 10
end;
procedure logic(answer:boolean);
begin
if ((result1=result4) and (result2=result3)) then
answer:= true
else
answer:= false
end;
begin
writeln(‘Checking numbers on being Palindrome’);
write(‘Enter your number: ‘);
readln(number);
divmod(number);
logic(logicresult);
writeln(‘Your numbers are: ‘,result1, ‘, ‘,result2, ‘, ‘, result3, ‘, ‘, result4);
writeln(‘Your number is palindrome? ‘, logicresult);
readln
end.
При попытке использовать функцию Odd пишет » Нет перегруженной подпрограммы с такими типами параметров» Что с этим делать?
Стесняюсь спросить, а где восьмой урок? Найти не могу)