Логічні вирази.  Тема: Логічний тип даних

Логічні вирази. Тема: Логічний тип даних

. хналежить відрізку;
x лежить поза відрізком;
x належить відрізку чи [-1,1];
x лежить поза відрізком або [-1,1].
3.
Пояснити структуру та правила виконання умовних операторів.
4.
Записати вказану дію у вигляді одного умовного оператора:
cos
2
x, при 0x у =
1-sin
2
x, інакше.
5.
z
int z=0, x=1, y=

1;

80 Програмування лінійних алгоритмів у системі C++Builder
if (x>0) if (y>0) z=1; else z = 2;
6.
Яке значення матиме змінна zпісля виконання операторів:
int z=0, x=

1, y=1;
if (x) (if (y>0) z=1;) else z=2;
7.
Яке значення матиме змінна zпісля виконання операторів:
int z=0, x=0, y=1;
if (x) (if (y>0) z=1;) else z=2;
8.
Яке значення матиме змінна zпісля виконання операторів:
int z=0, x=3, y=1;
if (x) (if (y) z = 1;) else z = 2;
9.
Вкажіть помилки у наступних операторах:
if (1
else x = 0; y+= 1;
10.
int z=0, x=0, y=1;
if (! x) ( if (! (y

1)) z = 1;) else z = 2;
11.
Яке значення матиме змінна z після виконання операторів:
int z=0, x=1, y=1;
if (! x) ( if (! (y

1)) z = 1;) else z = 2;
12.
Знайдіть помилки у фрагменті програми:
(int n, x; switch (k) case + : x:=x-4 break; case

-

,

*

x = 5;
}
Які правила порушені та як можна виправити помилки?


81
3.4
Індивідуальні завдання до розділу 3
Кожному студенту потрібно вирішити два завдання першого та другого рівнів складності.
Завдання першого рівня складності.
1.
Дано чотиризначне позитивне ціле число. Написати програму, яка друкує trueабо falseзалежно від того, виконується чи ні зазначена умова: сума 1 та 4 цифри дорівнює добутку 2 та 3 цифри.
2.
Дано дійсні числа x, y. Якщо x і y негативні, кожне значення замінити його модулем; якщо негативно лише одне їх, то обидва значення збільшити на 5.5; в інших випадках обидва значення зменшити у 10 разів.
3.
Дано дійсні числа x, y. Якщо x та y позитивні, то кожне значення зменшити в 5 разів; якщо обидва значення лежать у діапазоні [-3, 9], то обидва значення замінити на 0; в інших випадках x та y збільшити на 3.
4.
Дано дійсні числа x, y (xy). Найменше з цих двох чисел замінити їхньою напівсумою, а більше – їх подвоєним твором.
5.
Якщо сума трьох попарно різних дійсних чисел x, y, z менша за 1, то найменше з цих трьох чисел замінити напівсумою двох інших; в іншому випадку замінити менше з x і y напівсумою двох значень, що залишилися.
6.
Дано дійсні числа a, b, c, d. Якщо a b>c>d, то числа залишити без зміни; інакше всі числа замінити їх квадратами.
7.
Визначити, чи є шестизначне ціле число щасливим. (Число називається щасливим, якщо сума перших трьох цифр дорівнює сумі останніх трьох цифр.)
8.
trueабо falseзалежно від того, виконується чи ні зазначена умова: для довільних дійсних чисел a, b, c визначити, чи має рівняння ax
2
+bx+c=0 хоча б одне речове рішення.

82 Програмування лінійних алгоритмів у системі C++Builder
9.
Для вирішення наступного завдання написати програму, яка друкує trueабо falseзалежно від цього, виконується чи ні зазначена умова: визначити, чи дорівнює сума двох перших цифр заданого чотиризначного числа сумі двох останніх чисел.
10.
У деякому навчальному закладі діють такі правила прийому. Абітурієнти складають два іспити, які оцінюються за
100 балів кожен. Якщо абітурієнт набирає щонайменше 150 балів, це дає право вступати на денне відділення, від 100 до 149 – на вечірнє відділення ; нижче 100 балів означає відмову у прийомі навчання. Написати програму, яка, залежно від суми набраних балів, повідомляє абітурієнту його права на вступ.
11.
Написати програму з використанням оператора вибору , яка дозволяє отримати словесний опис позначок. (1 – «погано», 2 –
"незадовільно", 3 - "задовільно", 4 - "добре", 5 -
"відмінно".)
12.
Для вирішення наступного завдання написати програму, яка друкує trueабо falseзалежно від того, виконується чи ні зазначена умова: визначити, чи є серед цифр заданого тризначного числа однакові.
13.
Написати програму, яка друкує trueякщо дата d1, m1передує (в рамках року) даті d2, m2та значення falseв іншому випадку.
14.
Написати програму з використанням оператора вибору, яка за першою літерою імені виводить на екран ім'я повністю
(Іван, Петро, ​​Микола, Володимир, Георгій).
15.
Написати програму з використанням оператора вибору, яка за введеною цифрою 0≤ k≤ 5 друкує назву цієї цифри російською та англійською мовами.
16.
Дано ціле число k (1

k

365). Визначити, яким буде k-й день року – вихідним чи робітником, якщо 1 січня – понеділок.
17.
Дано дійсне число x. Обчислити f, якщо:











sin
,
1 0
,
0 5
2 11 2
випадках
решти
в
x
x
x
при
x
x
x
при
f

Програмування з використанням одновимірних масивів
83 18.
Дано дійсне число x. Написати програму для обчислення f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
випадках
решти
в
x
x
x
при
x
x
x
при
f
19.
Написати програму з використанням оператора вибору, яка за першою літерою назви міста виводить на екран назву міста повністю (Курськ, Москва, Тула, Новгород, Воронеж).
20.
Написати програму з використанням оператора вибору, яка за першою літерою прізвища виводить на екран прізвище повністю (Іванов, Петров, Сидоров, Мишкін, Шишкін).
21.
Дано координати центру та радіус кола. Визначити приналежність деякої точки, що має координати (x, y), довкілля.
22.
Написати програму з використанням оператора вибору, яка за введеною першою літерою назви тварини надрукує повністю назву тварини (собака, кішка, жираф, кінь, мавпа).
23.
Дано три різних числа a, b, c. Упорядкувати ці числа за зростанням таким чином, щоб aвідповідало найменше число, b- середнє число, c- Найбільше.
24.
Написати програму з використанням оператора вибору, яка за номером (від 1 до 7) виводить назву дня тижня.
25.
Написати програму з використанням оператора вибору, яка за номером (від 1 до 12) виводить назву місяця року.
26.
Написати програму з використанням оператора вибору, яка за введеною першою літерою назви сезону року друкує повністю назву сезону року.
27.
Дано п'ятизначне позитивне ціле число. Написати програму, яка друкує trueабо falseзалежно від того, виконується чи ні зазначена умова: сума 1, 3 та 5 цифри більша за добуток 2 та 4 цифри.
28.
Дано чотиризначне позитивне ціле число. Написати програму, яка друкує trueабо falseв залежності від того,

84 Програмування лінійних алгоритмів у системі C++Builder виконується чи ні вказана умова: середня арифметична 1 та
4 цифри більші за суму 2 і 3 цифри.
29.
Дано цифру та тризначне число в десятковій системі числення. Якщо цифра збігається із старшою цифрою числа, то обчислити суму цифр числа. Якщо цифра збігається із середньою цифрою числа, то обчислити добуток цифр числа. Якщо цифра збігається з молодшою ​​цифрою числа, то обчислити середнє арифметичне число. Якщо жодна з умов не виконується, то обчислити середню геометричну цифру числа.
30.
Дано цифру та тризначне число в десятковій системі числення. Якщо цифра збігається зі старшою цифрою числа, то обчислити середнє арифметичне число. Якщо цифра збігається із середньою цифрою числа, то обчислити середнє геометричне цифр числа. Якщо цифра збігається з меншою цифрою числа, то обчислити суму цифр числа. Якщо жодна з умов не виконується, то обчислити добуток цифр числа
Завдання другого рівня складності.
1.
Дано ціле двозначне позитивне число у трійковій системі числення. Написати програму, яка виводить назви цифр числа російською мовою, якщо старша цифра числа більш молодша, інакше
- англійською мовою.
2.
Дано ціле двозначне позитивне число в п'ятирічній системі числення. Написати програму, яка виводить назви цифр числа англійською мовою, якщо старша цифра числа молодша, інакше
- російською мовою.
3.
Дано ціле двозначне позитивне число в п'ятирічній системі числення. Написати програму, яка виводить назви цифр числа англійською мовою, якщо старша цифра числа більша за молодшу рівно в 2 рази, інакше
- російською мовою.
4.
Дано ціле двозначне позитивне число у трійковій системі числення. Написати програму, яка виводить назви цифр числа російською мовою, якщо старша цифра числа менша за молодшу, інакше
- англійською мовою.

Програмування з використанням одновимірних масивів
85 5.
Дано ціле двозначне позитивне число в п'ятирічній системі числення. Написати програму, яка виводить назви цифр числа російською мовою.
6.
Дано ціле двозначне позитивне число у восьмеричній системі числення. Написати програму, яка виводить назви цифр числа російською мовою.
7.
Дано ціле двозначне позитивне число у восьмеричній системі числення. Написати програму, яка виводить, якщо найстарша цифра менша за вдвічі молодшу цифру, назви цифр числа англійською мовою, а інакше

російською мовою.
8.
Дано ціле двозначне позитивне число в семеричній системі числення. Написати програму, яка виводить, якщо цифри розташовані за спаданням, назви цифр числа англійською мовою, а інакше

російською мовою.
9.
Дано дві цифри в десятковій системі числення. Написати програму, яка виводить назви англійською мовою цифр суми цих цифр.
10.
Дано дві цифри в десятковій системі числення. Написати програму, яка виводить назви російською мовою цифри вироблення цих цифр.
11.
Дано дві цифри в десятковій системі числення. Написати програму, яка виводить назву російською мовою цифри модуль різниці цих цифр.
12.
Дано дві цифри в десятковій системі числення. Написати програму, яка виводить назви цифр англійською мовою приватного та залишку цілого чисельного поділу цих чисел.
13.
Дано ціле двозначне позитивне число в дев'ятеричній системі числення. Написати програму, яка виводить, якщо старша цифра більша втричі молодшої цифри, назви цифр числа англійською мовою, а інакше

російською мовою.
14.
Дано ціле двозначне позитивне число в дев'ятеричній системі числення. Написати програму, яка виводить назву цифри числа, що має більше значення, англійською мовою, а назва цифри числа, що має менше значення,

російською мовою.

86 Програмування лінійних алгоритмів у системі C++Builder
15.
Дано ціле двозначне позитивне число у семеричній системі числення. Написати програму, яка виводить назву цифри числа, що має більше значення, англійською мовою, а назва цифри числа, що має менше значення,

російською мовою.
16.
Дано ціле двозначне позитивне число у шестеричній системі числення. Написати програму, яка виводить назви цифр числа англійською мовою.
17.
Дано два цілих двозначних позитивних чисел у трійковій системі числення. Написати програму, яка виводить назви цифр суми цих чисел російською мовою.
18.
Дано два цілих двозначних позитивних чисел у двійковій системі числення. Написати програму, яка виводить назви цифр суми цих чисел англійською мовою.
19.
Дано ціле двозначне позитивне число у п'ятирічній системі числення. Написати програму, яка виводить, якщо цифри розташовані за зростанням , назви цифр числа англійською мовою, а інакше

російською мовою.
20.
Дано ціле двозначне позитивне число у шестеричній системі числення. Написати програму, яка виводить, якщо старша цифра більша за п'ять разів молодшої цифри, назви цифр числа російською мовою, а інакше

англійською мовою.
21.
Дано дві цифри у восьмеричній системі числення. Написати програму, яка виводить назви російською мовою цифри модуль різниці цих цифр.
22.
Дано дві цифри у восьмеричній системі числення. Написати програму, яка виводить назви російською мовою цифр суми цих двох цифр.
23.
Дано ціле двозначне позитивне число у семеричній системі числення. Написати програму, яка виводить, якщо старша цифра більша втричі молодша, назви цифр числа російською мовою, а інакше

англійською мовою.
24.
Дано ціле двозначне позитивне число у вісімковій системі числення. Написати програму, яка виводить назву цифри числа, що має більше значення, російською мовою, а на-

Програмування з використанням одновимірних масивів
87 звання цифри числа, що має менше значення,

англійською мовою.
25.
Дано ціле двозначне позитивне число у семеричній системі числення. Написати програму, яка виводить назву цифр числа , що мають значення менше 4, російською мовою, а назва цифр числа, що мають значення більше або дорівнює 4,

англійською мовою.
26.
Дано ціле двозначне позитивне число у шестеричній системі числення. Написати програму, яка виводить назву цифр числа, що мають значення менше 3, російською мовою, а назва цифр числа, що мають значення більше або дорівнює 3,

англійською мовою.
27.
Дано дві перші літери (без урахування регістру, як малі, так і великі) назви місяця року. Написати програму, яка виводить повну назву місяця року російською мовою.
28.
Дано дві перші літери (без урахування регістру, як малі, так і великі) назви дня тижня. Написати програму, яка виводить повну назву дня тижня російською мовою.
29.
У старояпонському календарі було прийнято 60-річний цикл, що складався з п'яти 12-річних підциклів. Підцикли позначалися назвами кольору: зелений, червоний, жовтий, білий та чорний. Усередині кожного підциклу роки носили назви тварин: щури, корови, тигра, зайця, дракона, змії, коні, вівці, мавпи, курки, собаки та свині (1984 рік – рік зеленого щура – ​​був початком чергового циклу). Написати програму, яка вводить номер деякого року нашої ери і друкує його назву за старояпонським календарем.
30.
Дано ціле двозначне позитивне число в дев'ятеричній системі числення. Написати програму, яка виводить назву цифр числа, що мають значення більше 5, російською мовою, а назва цифр числа, що мають значення менше або дорівнює 5,

англійською мовою.

88 Програмування лінійних алгоритмів у системі C++Builder
4 ПРОГРАМУВАННЯ ЦИКЛІЧНИХ
АЛГОРИТМІВ У СИСТЕМІ C++BUILDER
У цьому розділі здійснюється вивчення операторів циклу мови
C++, набуття навичок програмування циклічних алгоритмів, в-
так, компіляції та налагодження програм.
4.1
Основні поняття
Мовою C++Builder існують три оператори циклу:
1.
Цикл із передумовою ( while);
2.
Цикл із постумовою ( do);
3.
Цикл із лічильником ( for).
Оператор циклу з передумовою while (Рисунок 4.1):
while(Умова) (тіло циклу)
Малюнок 4.1

Cхема алгоритму оператора циклу while
Якщо результат обчислення умови дорівнює true(правда), то тіло циклу виконується і знову здійснюється перехід до перевірки умови. Якщо результат обчислення умови дорівнює false(брехня), то відбувається вихід із циклу та перехід до оператора, що йде за циклічним оператором while.
Якщо перед першим виконанням циклу значення виразу було false, Тіло циклу взагалі не виконується і відбувається перехід на наступний оператор.
Умова
Тіло циклу
Так
Ні

Програмування з використанням одновимірних масивів
89
Приклад:
обчислити суму непарних чисел у інтервалі від 1 до 10.
( int k = 1, s = 0; while (k (s + = k; k + = 2;);
}
}
Оператор циклу з постумовою do (Рисунок 4.2):
do(тіло циклу) while(Умова); так ні умова
Тіло циклу
Малюнок 4.2

Схема алгоритму оператора циклу do…while
Умова є вираз логічного типу, тіло циклу – один простий чи складовий оператор.
Тіло циклу оператора

Виберіть із учителем завдання для виконання самостійної роботи з нижче запропонованих вправ.

1. Обчисліть значення виразу:

а) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

б) k mod 7 = k div5-1 при k = 15;

в) odd (trunc (10 * p)) при p = 0.182;

г) not odd(n) при n=0;

д) t and (p mod 3 = 0) при t = true, p = 101010;

е) (x*y<>0) and (y>x) при x=2, y=1;

ж) (x * y<>0) or (y>x) при x=2, y=1;

з) a or (not b) при a = False, b = True;

2. Записати на Паскалі відношення, істинне при виконанні зазначеної умови та хибне в іншому випадку:

а) ціле k поділяється на 7;

б) рівняння не має речових коренів;

в) точка (х, у) лежить поза коло радіусу R з центром у точці (1,0);

г) натуральне число є квадратом натурального числа;

е) x = max (x, y, z);

ж) (операцію не використовувати)

з) хоча б одна з логічних змінних а та b має значення True;

і) обидві логічні змінні а та b мають значення True.

3. Вказати порядок виконання операцій при обчисленні виразів:

а) a and b або not c and d;

б) (x> = 0) або не c і d.

4. Обчислити такі вирази при a=True, b=False:

а) a or b and not a;

б) (a або b) and not a;

в) not a and b;

г) not (a and b)

5. Записати на Паскалі вираз, істинне при виконанні зазначеної умови і хибне інакше:

а) х належить відрізку;

б) х лежить поза відрізком;

в)* х належить відрізку або [-1, 1];

г)* х лежить поза відрізками і [-1, 1];

д) кожне із чисел х, у, z позитивно;

ж) жодне з чисел х, у, z не є позитивним;

з) лише одне із чисел х, у, z позитивно;

і) логічна змінна а має значення True, логічна змінна b має значення False;

к)* рік із порядковим номером у є високосним (рік високосний, якщо його номер кратний 4, проте з кратних 100 високосними є лише кратні 400, наприклад, 1700, 1800 та 1900 – невисокосні роки, 2000 – високосний).

6. Намалювати на площині (х,у) область, в якій і тільки в якій зазначено вираз:

а)* (y>=x) and (y+x>=0) and (y<=1);

б) (sqr(x)+sqr(y)<1) or (y>0) and (abs(x)<=1);

в) (trunc (y) = 0 and (round (x) = 0);

г)* (abs(x)<=1)>(abs(y)>=1);

д) (sqr(x)+sqr(y)<=4)=(y<=x).

7) Є умовний оператор:

writeln ('ура!')

writeln ('погано...')

Чи можна замінити його наступними операторами:

а) якщо d=10 б) якщо не (d=10)

writeln ('ура!') writeln ('ура!')

writeln ('погано...'); writeln ('погано...');

в) якщо немає (d=10) г) якщо немає (d)<>10)

writeln ('погано...') writeln ('погано...')

writeln ('ура!'); writeln ('ура!');

8) Якими будуть значення змінних j, k після виконання умовного оператора:

якщо вихідні значення змінних дорівнюють:

Примітка. В результаті виконання оператора dec(k,2) значення змінної k зменшується на 2.

Змінні логічного типу описуються за допомогою ідентифікатора Boolean . Вони можуть набувати лише двох значень – False (брехня)і True (Істина). Описуються вони у розділі описи змінних. Var<имя>: Boolean;

До логічних виразів можуть входити:

n логічні величини,

n операції відносини (<- меньше, >- Більше,<=- меньше или равно, >=- більше або одно,<>- Не дорівнює, = - одно).

n логічні операції And, Or, Not

n разл. дії та функції


У мові Турбо Паскаль є логічні операції, що застосовуються до змінних логічного типу. Це операції not, and, or та хor.

Операція not(Не) має один операнд і утворює його логічне заперечення. Результат операції не є False, якщо операнд дійсний, і True, якщо операнд має брехню. Так, not True False (неправда є брехня) not False True (неправда є правда).

Результат операції and(і) є істина, тільки якщо обидва її операнди істинні, і брехня у всіх інших випадках (логічне множення).

Результат операції or(або) є істина, якщо будь-який з її операндів істинний, і складний тільки тоді, коли обидва операнда є хибними (логічне складання).

Логічні операції, операції відносини та арифметичні операції часто зустрічаються в одному виразі. При цьому відносини, що стоять ліворуч і праворуч від знака логічної операції, повинні бути укладені у дужки, оскільки логічні операції мають вищий пріоритет. Взагалі прийнято наступний пріоритет операцій:

2. and, *, /, div, mod

3. or, +, -

4. операції відносини (<- меньше, >- Більше,<=- меньше или равно, >=- більше або одно,<>- Не дорівнює, = - одно).

Крім того, порядок виконання операцій може змінюватись дужками. Наприклад, у логічному вираженні розставимо порядок дій:

AorBandnot(AorB)


Спочатку виконується укладена дужки операція or, та був операції not, and, or. Якщо підставити замість змінних А і значення True і False, то, використовуючи вже розглянутий порядок дій, отримаємо значення всього виразу рівне True.

Вправа 5: . Запишіть у зошит та обчисліть значення виразів

при a=10, b=20, c=true, d=false: а)(a>5) and (b>5) and (a<20) and (b<30);

b) not (a<15) or not (b<30);

c) c або d and (b=20).

Увага ! У Паскаль немає можливості введення логічних даних за допомогою оператора read. Однак передбачено виведення значень змінних логічного типу за допомогою оператора write. Наприклад, після виконання оператора write (5>2) на екран буде виведено True.

Домашні питання та завдання:

1. Як описується логічна змінна і які значення вона може набувати?

2. Що може входить до логічних виразів. Наведіть приклади найпростіших логічних виразів.

3. Розкажіть про логічні операції у мові Паскаль. Наведіть приклади складових логічних виразів.

4. Який пріоритет різних операцій у Паскалі. Наведіть приклад.


Завдання:

№19.

А. ціле k поділяється на 7;

В. Хоча б одне з цілих x, y парне;

Р. x=max(x,y,z), тобто x найбільше із трьох чисел x,y,z;

Д. (операцію не використовувати)

Е. хоча б одна з логічних змінних а та b має значення True;

Ж. обидві логічні змінні а та b мають значення True.

№20. Вказати порядок виконання операцій при обчисленні виразів:

а) a and b або not c and d; б) (x> = 0) або не c і d.

№21. Обчислити такі вирази при a=True, b=False:

а) a or b and not a; б)(a or b) and not a; в) not a and b; г) not (a and b)

№22. Скласти програму: На вступних іспитах абітурієнт складав фізику, інформатику, твір. Абітуріт надійде, якщо отримає 5 з інформатики та набере суму балів за три іспити не менше 13. Чи правда, що він вчинив (вивести True/False)?

§ 8. Розв'язання задач на тему «Лінійні програми. Логічні величини.

Упр. 7 . Обчисліть значення виразу:

а) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

б) k mod 7 = k div5-1 при k = 15;

в) odd (trunc (10 * p)) при p = 0.182;

г) not odd(n) при n=0;

д) t and (p mod 3 = 0) при t = true, p = 101010;

е) (x*y<>0) and (y>x) при x=2, y=1;

ж) (x * y<>0) or (y>x) при x=2, y=1;

з) a or (not b) при a = False, b = True;

Упр. 8. Записати на Паскалі вираз, дійсний при виконанні зазначеної умови і хибне інакше:

а) х належить відрізку;

б) х лежить поза відрізком;

в)* х належить відрізку або [-1, 1];

г)* х лежить поза відрізками і [-1, 1];

д) кожне із чисел х, у, z позитивно;

ж) жодне з чисел х, у, z не є позитивним;

з) лише одне із чисел х, у, z позитивно;

і) логічна змінна а має значення True, логічна змінна b має значення False;


к)* рік із порядковим номером у є високосним (рік високосний, якщо його номер кратний 4, проте з кратних 100 високосними є лише кратні 400, наприклад, 1700, 1800 та 1900 – невисокосні роки, 2000 – високосний).

Упр. 9 . Намалювати на площині (х,у) область, в якій і тільки в якій зазначено вираз:

а)* (y>=x) and (y+x>=0) and (y<=1);

б) (sqr(x)+sqr(y)<1) or (y>0) and (abs(x)<=1);

в) (trunc (y) = 0 and (round (x) = 0);

г)* (abs(x)<=1)>(abs(y)>=1);

д) (sqr(x)+sqr(y)<=4)=(y<=x).

Упр. 10 ..Книга коштує X рублів. У покупця є купюри номіналом 50, 10, 5, 1 рублів. Скільки та яких купюр треба взяти, щоб розплатитися за книгу мінімальною кількістю купюр?

Змінні логічного типу зазвичай набувають значення в результаті виконання операцій порівняння та математичних операцій (розглядалися у попередньому занятті), а також за допомогою специфічних булевих операцій.

У мові Турбо Паскаль є логічні операції, що застосовуються до змінних логічного типу. Це операції not, and, or та хor. У цій темі Ви розгляньте три логічні операції. Позначення та результати цих операцій наведено у таблиці. Розгляньте її.

Операція not(Не) має один операнд і утворює його логічне заперечення. Результат операції не є False, якщо операнд дійсний, і True, якщо операнд має брехню. Так,

not True False (неправда є брехня)

not False True (неправда є правда)

Результат операції and(і) є істина, тільки якщо обидва її операнди істинні, і брехня у всіх інших випадках.

Результат операції or(або) є істина, якщо будь-який з її операндів істинний, і складний тільки тоді, коли обидва операнда помилкові.

Завдання . Спробуйте визначити значення булевих операцій для висловлювань:

  1. Школяр на зимових канікулах залишається вдома або їде кудись відпочивати.
  2. Філіп Кіркоров є співаком та комбайнером.
  3. Школярами є хлопчики і дівчатка.

Логічні операції, операції відносини та арифметичні операції часто зустрічаються в одному виразі. При цьому відносини, що стоять ліворуч і праворуч від знака логічної операції, повинні бути укладені в дужки, оскільки логічні операції мають більший пріоритет. Взагалі прийнято наступний пріоритет операцій:

  • and, *, /, div, mod
  • or, +, -
  • операції відносини.

. Логічну операцію and ще називають логічним множенням, а логічну операцію or - логічним додаванням.

Крім того, порядок виконання операцій може змінюватись дужками. Наприклад, у логічному вираженні розставимо порядок дій.

A або B і не (A або B)

Спочатку виконується укладена дужки операція or, та був операції not, and, or. Якщо підставити замість змінних А і значення True і False, то, використовуючи вже розглянутий порядок дій, отримаємо значення всього виразу рівне True.

Завдання . Запишіть у зошит та обчисліть значення виразів при a=10, b=20, c=true, d=false:

  • (a>5) and (b>5) and (a<20) and (b<30);
  • not (a<15) or not (b<30);
  • c або d and (b=20);

Увага! У Паскаль немає можливості введення логічних даних за допомогою оператора read. Однак передбачено виведення значень змінних логічного типу за допомогою оператора write.

Наприклад, після виконання оператора write (5>2) на екран буде виведено True.

Самостійна робота

Виберіть із учителем завдання для виконання самостійної роботи з нижче запропонованих вправ.

  1. Обчисліть значення виразу:

    а) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

    б) k mod 7 = k div5-1 при k = 15;

    в) odd (trunc (10 * p)) при p = 0.182;

    г) not odd(n) при n=0;

    д) t and (p mod 3 = 0) при t = true, p = 101010;

    е) (x*y<>0) and (y>x) при x=2, y=1;

    ж) (x * y<>0) or (y>x) при x=2, y=1;

    з) a or (not b) при a = False, b = True;

  2. Записати на Паскалі відношення, дійсне при виконанні зазначеної умови та хибне в іншому випадку:

    а) ціле k поділяється на 7;

    б) точка (х, у) лежить поза коло радіусу R з центром у точці (1,0);

    в) натуральне число N є квадратом натурального числа;

    г) 0

    д) x = max (x, y, z);

    е) хоча б одна з логічних змінних а та b має значення True;

    ж) обидві логічні змінні а та b мають значення True.

  3. Вказати порядок виконання операцій при обчисленні виразів:

    а) a and b або not c and d;

    б) (x> = 0) або не c і d.

  4. Обчислити такі вирази при a=True, b=False:

    а) a or b and not a;

    б) (a або b) and not a;

    в) not a and b;

    г) not (a and b)

  5. Записати на Паскалі вираз, дійсний при виконанні зазначеної умови і хибне інакше:

    а) х належить відрізку;

    б) х лежить поза відрізком;

    в)* х належить відрізку або [-1, 1];

    г)* х лежить поза відрізками і [-1, 1];

    д) кожне із чисел х, у, z позитивно;

    ж) жодне з чисел х, у, z не є позитивним;

    з) лише одне із чисел х, у, z позитивно;

    і) логічна змінна а має значення True, логічна змінна b має значення False;

    к)* рік з порядковим номером у є високосним (рік високосний, якщо його номер кратний 4, проте з кратних 100 високосними є лише кратні 400, наприклад, 1700, 1800 та 1900 – невисокосні роки, 2000 – високосний).

  6. Намалювати на площині (х,у) область, в якій і тільки в якій зазначено вираз:

    а)* (y>=x) and (y+x>=0) and (y<=1);

    б) (sqr(x)+sqr(y)<1) or (y>0) and (abs(x)<=1);

    в) (trunc (y) = 0 and (round (x) = 0);

    г)* (abs(x)<=1)>(abs(y)>=1);

    д) (sqr(x)+sqr(y)<=4)=(y<=x).

  7. Є умовний оператор:
    if d<>10
    then
    writeln ('ура!')
    else
    writeln ('погано...');

    Чи можна замінити його наступними операторами:

  8. Якими будуть значення змінних j, k після виконання умовного оператора:
    if j>k
    then
    j:=k-2
    else
    dec(k,2);
    якщо вихідні значення змінних дорівнюють:
    а) j = 3, k = 5;
    b) j = 3, k = 3;
    c) j = 3, k = 2.

Примітка . В результаті виконання оператора dec(k,2) значення змінної k зменшується на 2.