Типы данных языка программирования TP 7.0 . Логический тип
Оценка 5
Рабочие тетради
doc
информатика +1
10 кл—11 кл +1
25.04.2017
Занятие строится таким образом, что после прослушивания теоретического материала (10 –15 мин.), учащимся предлагается практическое задание, которое выполняется ими за 20 - 30 мин. и корректируется в процессе изучения материала в более сложную задачу по изучаемой теме.
Автор сознательно избегал сложных примеров, будучи убежденными, в том, что гораздо важнее для учащихся понимание алгоритмов предлагаемых задач, приобретение навыков разработки алгоритмов, их программирования и выполнения на компьютере в течение одного занятия. Такой подход к изучению языка программирования позволяет сосредоточить внимание на самом процессе программирования, который в данном случае более важен для изучения языка, чем решение сложной задачи, наверняка трудной большинству учащихся. Такие задачи, по мнению авторов, неоправданно занимают большое количество учебного времени, превращая учителя из инициатора процесса обучения в диктатора.
Занятие 3ч1.doc
Типы данных языка программирования TP 7.0 . Логический тип
Занятие 3
1. Урок 1. Логический (булевский) тип данных. Условный оператор.
2. Урок 2. Оператор выбора. Исследование по логическим операциям.
3. Урок 3. Логические операции над целыми числами.
4. Контрольные вопросы и упражнения.
Урок 1. Типы данных языка программирования Turbo Pascal 7.0
1.1. Логический (булевский) тип данных. Определение логического выражения.
1.2. Условный оператор if … then … else
1.3. Практический пример.
1.1. Логический (булевский) тип данных. Определение логического выражения
Переменные типа boolean, ByteBool, WordBool и LongBool являются логическими переменными и могут
принимать только два значения True (истина) и False (ложь). Логические переменные используются для хранения
результатов логических выражений. Для переменных имеют место операции отношений, и логические операции,
указанные в таблицах 1 и 2, результатом которых являются булевские переменные. Эти переменные неявно
используются в условных операторах if … then … else и case.
Наименование
Таблица 1
Операции
отношения
=
<>
>
>=
<
<=
Равно
Неравно
Больше
Больше или равно
Меньше
Меньше или равно
Логические
операции
Наименование
NOT
AND
OR
XOR
Логическое НЕ (инверсия или отрицание)
Логическое И (логическое умножение, конъюнкция)
Логическое ИЛИ (логическое сложение, дизъюнкция)
Логическое исключающее ИЛИ (неравнозначность)
Таблица 2
Приоритет выполнения
логических операций
1
2
3
4
Логические операции в таблице 2 указаны в порядке уменьшения приоритета их выполнения в Pascal
программе.
Операции отношения и логические операции (или те и другие вместе) над переменными могут быть записаны в
Pascalпрограмме в виде логического условия или логического выражения.
Логическим условием назовем запись, состоящую из одного или двух операндов и знака операции отношения
или логической операции.
Например: a > b; a or b; c and d; k <> d; (a + c) = (b * d); not Second и т.д.
Логическим выражением назовем запись, состоящую из логических условий и логических операций,
производимым над ними.
Например: (a + b ) and (a + c ) and (c + b); (a + b > c) and (a + c >= b) or (c + b <> a) и т.д.
Результатом выполнения логического условия или выражения являются значения True (истина) или False
(ложь). Далее происходит передача управления для выполнения соответствующих этим условиям операторов.
Аргументы (операнды) логических операций должны иметь один тип.
Приведенная ниже программа позволяет получить результат логической операции and (и) для логических
операндов p_true и p_false и сохранить его в логической переменной result.
Program V1L04P1; {Булевская операция and (и)}
Uses Crt;
{Вызов библиотечного модуля для работы с экраном дисплея}
{Блок описания констант и переменных}
Const p_true=true;
p_false=false;
{Блок операторов}
begin
{Постоянные логические значения}
19 Логический (булевский) тип данных. Оператор выбора. Исследование по логическим операциям. Логические операции над целыми числами
ClrScr;
WriteLn('TRUE and FALSE = ', p_true and p_false);
ReadKey;
end.
{Очистить экран}
{Результат логической операции}
{Ожидание нажатия любой клавиши}
Результат работы программы
TRUE and FALSE = FALSE
2. Условный оператор
Наименование оператора говорит само за себя потому, что в него входит логическое условие или логическое
выражение. Условный оператор может быть полным (альтернативным) и неполным (без альтернативы) и имеет
следующий формат:
if <Логическое условие (выражение)> then <Оператор 1> else <Оператор 2>
или
if <Логическое условие (выражение)> then <Оператор 1>
<Логическое условие (выражение)> логическое условие или выражение, которое может быть записано в
где
операторе явно или вычислено в программе и присвоено логической переменной;
<Оператор 1>, <Оператор 2> простые или составные операторы. В случае составного оператора (группы
операторов) следует применять операторные скобки begin и end.
Алгоритм работы условного оператора if … then … else следующий.
Если (if) <Логическое условие (выражение)> принимает значение True (истина), то (then) выполняется
<Оператор 1> и далее следует выполнение операторов программы, иначе (else) выполняется <Оператор 2> и далее
следует выполнение операторов программы.
ложного (False) значения <Логическое условие
(выражение)> не выполняет <Оператор 1>, а переходит к выполнению операторов программ, следующих за
условным оператором.
Неполный формат условного оператора в случае
Ниже приводится практический пример, в котором присутствуют операции отношения и логические операции.
Определить существует ли треугольник, стороны которого заданы целыми значениями a, b, c.
Program V1L04P2; {Определение возможности существования треугольника}
Uses Crt;
Var a,b,c :integer;
{}
begin
ClrScr;
Write('Введи значения сторон треугольника через пробел : ');
ReadLn(a,b,c);
{Ввод числовых значений с клавиатуры}
{Логическое условие с альтернативой}
if (a+b>c)and(a+c>b)and(b+c>a) then WriteLn('Треугольник существует')
else WriteLn('Треугольник не существует');
{}
ReadKey;
end.
Логические операторы могут быть вложены друг в друга. Такая конструкция показана ниже.
Program V1L04P3; {Определение возможности существования треугольника}
Uses Crt;
Label 100,200;
Var a,b,c :integer;
{}
begin
ClrScr;
Write('Введи значения сторон треугольника через пробел: ');
ReadLn(a,b,c);
{Вложенные логические операторы}
if a+b7) then
WriteLn('Номер дня недели введен неверно !');
{}
ReadKey
end.
{Условие правильности введения дня недели}
{Ожидание нажатия любой клавиши}
Из текста программы видно, что для решения поставленной задачи потребовалось восемь условных
операторов, с помощью которых осуществляется выбор названия дня недели по равенству введенного значения номера
дня недели с записанными данными в логических условиях. В TP 7.0 подобные задачи решаются с помощью оператора
выбора case … of.
2.1. Оператор выбора case … of
Оператор выбора case … of
является обобщением условного оператора if … then … else. Он дает
возможность выполнить одно из нескольких действий в зависимости от значения переключателя и имеет следующий
полный (альтернативный) формат:
case <Переключатель> of
<Список констант 1>: <Оператор 1>;
<Список констант 2>: <Оператор 2>;
21 Логический (булевский) тип данных. Оператор выбора. Исследование по логическим операциям. Логические операции над целыми числами
. . .
<Список констант N >: <Оператор N>
или (неполный формат)
else <Оператор A>
end;
case <Переключатель> of
<Список констант 1>: <Оператор 1>;
<Список констант 2>: <Оператор 2>;
. . .
<Список констант N >: <Оператор N>
где:
вычислена в программе;
end;
<Переключатель> переменная типа integer, boolean, char, record, которая может быть записана явно или
<Список констант …> список констант через запятую, который должен иметь тот же тип, что и
<Переключатель> (например, 100, 10. 2:);
<Оператор …> оператор или группа операторов;
<Оператор A> альтернативный оператор или группа операторов.
Алгоритм работы условного оператора case … of следующий. Вычисленное или заданное явно значение
<Переключатель> определяет, какой из операторов должен быть выполнен, при этом значение <Переключатель>
должно совпадать с одной из констант <Список констант …>. В противном случае выполняется <Оператор A>.
В случае неполного формата оператора выбора case … of и несовпадения переключателя ни с одним значением
списков констант выполняется следующий за end; оператор.
Примером использования оператора выбора case … of может служить приведенная ниже программа.
Program V1L04P5; {Печать названия дня недели по его номеру}
Uses Crt;
Var n :integer;
{}
begin
ClrScr;
Write('Введи номер дня недели: ');ReadLn(n);
{}
case n of
1: WriteLn(n,' ый день недели понедельник и самый тяжелый');
2: WriteLn(n,' ой день недели вторник');
3: WriteLn(n,' ий день недели среда');
4: WriteLn(n,' ый день недели четверг');
5: WriteLn(n,' ый день недели пятница');
6: WriteLn(n,' ой день недели суббота');
7: WriteLn(n,' ой день недели воскресенье');
else WriteLn('Номер дня недели введен неверно!');
end;
{}
ReadKey
end.
Результаты работы программ
Вариант 1
Введи номер дня недели: 3
3 ий день недели среда
Вариант 2
Введи номер дня недели: 10
Номер дня недели введен неверно
При сравнении программ vv8 и vv9 можно заметить, что vv9 имеет меньшее количество ключевых слов языка
программирования.
2.2. Исследование по логическим операциям (практическая работа)
Используя приведенную выше программу vv5, составить таблицу булевских операций (таблицу истинности)
для различных значений операндов в виде:
Операнды
a
b
22
NOT a
(инверсия)
a AND b
(конъюнкция)
a OR b
(дизъюнкция)
a XOR b
(исключающее ИЛИ, неравнозначность)
Результат
Таблица 3 False
True
False
False
True
True
False
True
False
True
True
False
False
False
Операнды и операции изменять коррекцией в соответствующих строках программы или продолжить
записывать строки программы с различными операндами и операциями.
Преподавателю показать на доске часть таблицы с операндами, а учащиеся, при выполнении задания, должны
получить результат для соответствующих операндов и операций и заполнить пустые столбцы таблицы.
Аналогично заполнить таблицу 4, которая представляет собой таблицу истинности следующих логических
операций: импликация (условие: если … то), эквивалентность (равнозначность), штрих Шеффера (отрицание
конъюнкции) и стрелка Пирса (отрицание дизъюнкции).
a b
NOT a OR b
(импликация)
False
Результат
a b
a
b
a b
(a AND b) OR ((NOT a) AND (NOT b))
(эквивалентность, если … то)
NOT (a AND b)
(штрих Шеффера)
NOT (a OR b)
(Стрелка Пирса)
True
False
True
Таблица 4
Операнды
a
b
False
False
True
True
False
True
False
True
Урок 3. Логические операции над целыми числами
Логические операции могут выполняться не только над логическими операндами, но и над целыми числами. В
этом случае выполняются соответствующие побитовые операции с учетом двоичного двухбайтового представления
операндов.
Алгоритм выполнения операций над целыми числами следующий:
осуществляется перевод пары целых десятичных чисел в двоичную систему счисления. Двоичные
числа записываются в двухбайтовом формате.
затем выполняется указанная логическая операция с каждой соответствующей парой цифр
двоичных чисел. При этом отрицательные двоичные числа записываются в дополнительном
коде;
полученный результат в виде двоичного числа переводится в исходную систему счисления.
Если результатом является отрицательное двоичное число (знаковый разряд =1), то значит, что это число
записано в дополнительном коде. Для перевода дополнительного кода в число заданной системы счисления
выполняются следующие операции:
инвертируются значащие разряды двоичного числа;
прибавляется 1 к младшему разряду;
переводится полученный результат в исходную систему счисления и заменяется 1 знакового
разряда на знак " ".
При выполнении операций отношения, пара операндов должна быть одного и того же типа (например,
integer). Допускается лишь одно исключение один из операндов может иметь вещественный тип (real).
Пример программы выполнения логических операций над целыми числами, указанных в табл. 2 приведен ниже.
Program V1L04P6; {Выполнение логических операций над целыми числами}
Uses Crt;
Var a,b,c :integer;
{}
begin
ClrScr;
Write('Введи первый операнд '); Read(a);
Write('Введи второй операнд '); Read(b);
{}
{Инверсия}
WriteLn;
23 Логический (булевский) тип данных. Оператор выбора. Исследование по логическим операциям. Логические операции над целыми числами
WriteLn('Инверсия');
c:=not a;
WriteLn(' not', a,' = ',c:4);
c:=not b;
WriteLn(' not', b,' = ',c:4);
{}
{Конъюнкция}
WriteLn;
WriteLn('Конъюнкция');
c:=a and b;
WriteLn(' ',a,' and ',b,' = ',c:4);
{Dizjnkcij}
WriteLn;
WriteLn('Дизъюнкция');
c:=a or b;
WriteLn(' ',a,' or ',b,' = ',c:4);
{}
{Исключающее ИЛИ}
WriteLn;
WriteLn('Исключающее ИЛИ');
c:=a xor b;
WriteLn(' 'a,' xor ',b,' = ',c:4);
{}
ReadKey
end.
Результаты работы программы
Вариант 2
Введи первый операнд 13
Введи второй операнд +11
Вариант 1
Введи первый операнд 12
Введи второй операнд 10
Инверсия
not a = 13
not b = 11
Вариант 3
Введи первый операнд 14
Введи второй операнд 12
Инверсия
not a = 12
not b = 12
Инверсия
not a = 13
not b = 11
Конъюнкция
12 and 10 = 8
Конъюнкция
13 and 11 = 3
Конъюнкция
14 and 12 = 16
Дизъюнкция
12 or 10 = 14 13 or 11 = 5
Дизъюнкция
Исключающее ИЛИ
12 xor 10 = 6 13 xor 11 = 8
Исключающее ИЛИ
Дизъюнкция
14 or 12 = 10
Исключающее ИЛИ
14 xor 12 = 6
Анализируя полученные результаты с логической операцией NOT, имеем некую закономерность, которая
выражается формулой:
где x целое положительное или отрицательное число.
NOT (x) = (x + 1),
Примеры выполнение алгоритма побитовых операций над целыми числами с исходными данными программы
V1L04P6, указанной выше. В двоичных числах жирным шрифтом указаны знаковые разряды.
Инверсия
not 1210 = (12 + 1)10 = 13
not 1010 = (11 + 1)10 = 11
not 1310 = (13 + 1)10 = 12
not 1110 = ( 11 + 1)10 = 12
not 1410 = (14 + 1)10 = 13
not 1210 = (12 + 1)10 = 11
Вариант 1
Вариант 2
Вариант 3
24 Вариант 1
Конъюнкция
12 and 10
and
Вариант 2
13 and 11
1210
1010
810
and
0 0000000000011002
0 0000000000010102
0 0000000000010002
Вариант 3
14 and 12
1310 прямой код
дополнительный код
1 0000000000011012
1 1111111111100102
+
обратный код
1110
310
and
0 0000000000000012
1 1111111111100112
0 0000000000010112
0 0000000000000112
1410 прямой код
дополнительнй код
1 0000000000011102
1 1111111111100012
+
0 0000000000000012
обратный код 1 1111111111100102
1210 прямой код
дополнительный код
1 0000000000011002
1 1111111111100112
+
обратный код
and
обратный код результата
его инверсия
162
+
0 0000000000000012
1 1111111111101002
1 1111111111100102
1 1111111111100002
1 0000000000011112
0 0000000000000012
1 0000000000100002
→
→
and
1210
1410
Расчет остальных логических операций производится аналогично.
Контрольные вопросы и упражнения
1. Сколько значений может принимать логическая переменная, назовите их?
2. Какие действия производятся над логическими переменными?
3. Как работает полный (альтернативный) условный оператор?
4. Как работает неполный условный оператор?
5. Как работает полный и неполный оператор выбора?
6. Что называется логическим условием?
7. Что называется логическим выражением?
8. Определить существует ли треугольник, стороны которого заданы целыми значениями a, b, c. Если
существует, то какой треугольник:
произвольной формы;
равносторонний;
равнобедренный;
прямоугольный.
Пояснение. Использовать для решения задачи свойства перечисленных треугольников
25 Логический (булевский) тип данных. Оператор выбора. Исследование по логическим операциям. Логические операции над целыми числами
9. Определить существует ли треугольник, стороны которого заданы целыми значениями a, b, c. Если
существует, то какой треугольник:
остроугольный;
тупоугольный.
Пояснение. Использовать для решения задачи теорему косинусов: c 2 = a 2 + b 2 2ab * Cos по
знаку косинуса определить форму треугольника (+ трк остроугольный, тупоугольный ).
Для решения задач использовать программу vv6, приведенную выше в качестве примера.
10. Напишите программу вычисления логических операций : импликация, эквивалентность штрих Шеффера и
стрелка Пирса для целых чисел (см. табл. 4).
Пояснение. Использовать для решения задачи программу vv10.
Для заметок, вопросов и ответов
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
26
Типы данных языка программирования TP 7.0 . Логический тип
Типы данных языка программирования TP 7.0 . Логический тип
Типы данных языка программирования TP 7.0 . Логический тип
Типы данных языка программирования TP 7.0 . Логический тип
Типы данных языка программирования TP 7.0 . Логический тип
Типы данных языка программирования TP 7.0 . Логический тип
Типы данных языка программирования TP 7.0 . Логический тип
Типы данных языка программирования TP 7.0 . Логический тип
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.