Логические выражения. Тема: Логический тип данных

Логические выражения. Тема: Логический тип данных

. х принадлежит отрезку ;
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. Если ab>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);

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

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

ж) (операцию not не использовать)ж

з) хотя бы одна из логических переменных а и b имеет значение True;

и) обе логические переменные а и b имеют значение True.

3. Указать порядок выполнения операций при вычислении выражений:

а) a and b or not c and d;

б) (x>=0) or not c and d.

4. Вычислить следующие выражения при a=True, b=False:

а) a or b and not a;

б) (a or 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 (‘плохо...’)

Можно ли заменить его следующими операторами:

а) if d=10 б) if not (d=10)

writeln (‘ура!’) writeln (‘ура!’)

writeln (‘плохо...’); writeln (‘плохо...’);

в) if not (d=10) г) if not (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 (не) имеет один операнд и образует его логическое отрицание. Результат операции 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 or 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;

Д. (операцию not не использовать)

Е. хотя бы одна из логических переменных а и b имеет значение True;

Ж. обе логические переменные а и b имеют значение True.

№20. Указать порядок выполнения операций при вычислении выражений:

а) a and b or not c and d; б ) (x>=0) or not c and 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 (не) имеет один операнд и образует его логическое отрицание. Результат операции not есть False, если операнд истинен, и True, если операнд имеет значение ложь. Так,

not True False (неправда есть ложь)

not False True (неложь есть правда)

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

Результат операции or (или) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.

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

  1. Школьник на зимних каникулах остается дома или уезжает куда-либо отдыхать.
  2. Филипп Киркоров является певцом и комбайнером.
  3. Школьниками являются мальчики и девочки..

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

  • and, *, /, div, mod
  • or, +, -
  • операции отношения..

. Логическую операцию and еще называют логическим умножением, а логическую операцию or - логическим сложением.

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

A or B and not (A or 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 or 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 or not c and d;

    б) (x>=0) or not c and d.

  4. Вычислить следующие выражения при a=True, b=False:

    а) a or b and not a;

    б) (a or 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.