Булевские (логические) операции
Контроль ввода данных
Цель работы
Цель работы - освоение приёмов ввода-вывода чисел, контроля синтаксиса вводимых числовых данных, преобразования строка-число и число-строка, форматного отображения чисел.
Задание
Разработайте программу для вычисления арифметического выражения. Обеспечьте контроль ввода данных и исключите возможность аварийного завершения программы при пустых значениях переменных.
Протестируйте Вашу программу.
Таблица 1
Варианты заданий
Теоретические сведения
Изложение материала иллюстрируется примерами, поясняющими работу программы решения простейшей арифметической задачи, рис. 1.
Рис. 1. Форма для решения задачи
При выполнении задания необходимо учитывать:.
· Все данные, вводимые в поля ввода (TEdit), получают тип String, поэтому требуется преобразовать введённую строку в число целого или вещественного типа.
· Если будет введён недопустимый для числового типа символ, то при преобразовании Строка-Число возникнет аварийное завершение программы.
· Для отображения чисел в текстовом поле необходимо произвести преобразование Число-Строка.
· Отображение чисел должно быть связано с каким-либо событием, чаще всего используют «Нажатие кнопки» (компонент TButton).
· Вычисления при пустых значениях полей ввода приведёт к аварийному завершению программы.
Для выполнения работы необходимо изучить:
· числовые типы данных;
· тип данных множество;
· оператор условного перехода;
· оператор выбора;
· преобразование Строка-Число и Число-Строка;
· свойства и события визуального компонента TButon;
· процедуру информационного сообщения ShowMessage.
Числовые типы
Арифметические выражения бывают целого или вещественного типов.
Таблица 1
Характеристики целых типов
Название типа | Идентификатор | Диапазон | Размер памяти, байт |
Короткое со знаком | Shortint | -128..127 | |
Целое | Smallint | -32768.. 32767 | |
Целое | Integer* | -2147483648..2147483647 | |
Длинное со знаком | Longint | -2147483648..2147483647 | |
Целое 64 бита | Int64 | -263.. 263-1 | |
Короткое без знака | Byte | 0..255 | |
Целое без знака | Word | 0..65535 | |
Кардинал | Cardinal* | 0..4294967295 | |
Длинное без знака | Longword | 0..4294967295 |
Таблица 2
Характеристики вещественных типов
Название типа | Идентификатор типа | Диапазон значений | Размер памяти, байт |
Одинарной точности | Single | 1,5·10-45..3,4·1038 | |
Вещественное | Real48 | 2,9·10-39..1,7·1038 | |
Вещественное | Real* | 5,0·10-324..1,7·10308 | |
Двойной точности | Double | 5,0·10-324..1,7·10308 | |
В формате вещественного | Comp | -263+1 .. 263-1 | |
Повышенной точности | Extended | 3,6·10-4932..1,1·104932 | |
Финансовый | Currency | -922337203685477.5808.. 922337203685477.5807 |
*Родовой тип для 32-bit основного центрального процессора и операционной системы. Дублирование диапазонов (Double) – наследие 16-bit процессоров.
Арифметические операции
+, -, *, / - эти операции дополнительных пояснений не требуют.
div - целочисленное деление - результатом операции будет значение целого типа.
mod – взятие остатка от целочисленного деления, результат – значение целого типа.
При выполнении арифметических операций следует следить за совместимостью типов. Так вещественной переменной можно присвоить значение целой переменной, наоборот – ошибочная операция. Тип результата операции с операндами различных типов всегда будет соответствовать типу охватывающего операнда. Тип результата операции деления (/) целых переменных будет вещественным.
Таблица 2
Тип результата операций
Операция | Типы операндов | Тип результата |
+ | Целый Вещественный | Целый Вещественный |
- | Целый Вещественный | Целый Вещественный |
* | Целый Вещественный | Целый Вещественный |
/ | Целый Вещественный | Вещественный Вещественный |
div | Целый | Целый |
mod | Целый | Целый |
Множества
Множества - это наборы однотипных логически связанных друг с другом объектов.
Свойства множества:
· количество элементов, входящих в множество, может меняться в пределах от 0 до 256;
· множество не может содержать одинаковых элементов;
· порядок следования элементов во множестве безразличен.
Описание множества
Type <Имя_типа> = set of <Базовый тип>;
Здесь <Имя_типа> - идентификатор;
set, of - зарезервированные слова (множество, из);
<Базовый тип> - базовый тип элементов множества, в качестве которого
может использоваться любой порядковый тип, кроме Word, Integer,
Longint, Int64.
Для задания множества используют конструктор множества: список спецификаций элементов множества, отделенных друг от друга запятыми; список обрамляется квадратными скобками. Спецификациями элементов могут быть константы или выражения базового типа, а также тип-диапазон того же базового типа.
Примеры определение и задание множеств
{Раздел описаний}
TypedigitChar = set of '0'..'9'; // Тип множество символов от ‘0’ до ‘9’
digit = set of 0. .9; //Тип множество чисел от 0 до 9
Var
sl, s2 : digitChar; //Переменные-множество
s4 : digit;
begin {Исполняемый блок}
s1 := ['1', '2', '3']; //присваивание значений переменной-множество
s2 := [ ]; //присвоено пустое множество
s4 := [0..3, 6]; //присвоены значения от 0 до 3 и 6
Над множествами определены следующие операции:
* пересечение множеств; результат содержит элементы, общие для обоих множеств;
+ объединение множеств; результат содержит элементы первого множества, дополненные недостающими элементами из второго множества;
- разность множеств; результат содержит элементы из первого множества, которые не принадлежат второму;
= проверка эквивалентности, возвращает True, если оба множества эквивалентны;
<> проверка неэквивалентности, возвращает True, если оба множества неэквивалентны;
<= проверка вхождения, возвращает True, если первое множество включено во второе;
>= проверка вхождения, возвращает True, если второе множество включено в первое;
in - проверка принадлежности, в этой бинарной операции первый элемент - выражение, а второй – множество; возвращает True, если выражение имеет значение, принадлежащее множеству.
Дополнительно к этим операциям можно использовать две процедуры.
include(S,I) - включает новый элемент во множество; s - множество элементов базового типа, I – элемент, который необходимо включить во множество.
exclude(S,I) - исключает элемент из множества.
Оператор условного перехода IF
Конструкции условного перехода строят с помощью операторов If и Case.
Таблица 3
Формы оператора IF
Полная форма | Неполная форма | |||||||||
If Условие then Оператор 1 else Оператор 2; | Если Условие = истина то – Оператор 1, иначе - Оператор 2 | IfУсловие then Оператор; | Если Условие = Истина то – Оператор | |||||||
|
| |||||||||
В описании оператора If приняты следующие обозначения и соглашения:
If, then, else- ключевые слова (если, то, иначе);
Условие- выражение логического типа, принимающее значение True или False;
Оператор -любой допустимый оператор, в том числе оператор If и составной оператор Begin ... end.
При использовании составного оператора Begin ... endалгоритмическиеконструкции примут вид:
If Условие then begin Оператор 1; . . . . . . . Оператор N end else Оператор; | If Условие then Оператор else begin Оператор 1; . . . . . . . Оператор N end; | IfУсловие then begin Оператор 1.1; . . . . . . . Оператор 1.N end else begin Оператор 2.1; . . . . . . . Оператор 2.M end; |
Логическое выражение, определяющее Условиев операторе If, в общем случае состоит из операндов и операций арифметических, отношения, булевских. Результат вычисления логического выражения - Trueили False.
Таблица 4
Операции отношения
Операция | = | <> | < | <= | > | >= |
Действие | Равно | Не равно | Меньше | М. или равно | Больше | Б. или равно |
Таблица 5
Булевские (логические) операции
Операнды | Операции | ||||
not A | A and B | A or B | A xor B | ||
A | B | Отрицание | И | ИЛИ | Исключающее ИЛИ |
True | True | False | True | True | False |
True | False | False | False | True | True |
False | True | True | False | True | True |
False | False | True | False | False | False |
Порядок вычисления логических выражений определяет приоритет операций. Первый (высший) приоритет у унарных операций: +, -, not; второй - *, /, div, mod, and; третий - +, -, or, xor; четвёртый (низший) - бинарные операции отношений.
Поливариантные условия и конструкции
Если выбор необходимого действия требует проверки нескольких условий, то такую задачу решают с помощью «вложенных» операторов If.
Условие 2 |
True |
Условие 1 |
False |
Оператор 1 |
Оператор 2 |
Оператор 3 |
True |
If Условие 1
then if Условие2
then Оператор 1
else Оператор 2
else Оператор 3;
False |
Оператор 2 |
Условие 2 |
Условие 1 |
Оператор 1 |
Оператор 3 |
False |
IfУсловие 1
then Оператор 1
else if Условие 2
then Оператор 2
elseОператор 3;