Булевские (логические) операции

Контроль ввода данных

Цель работы

Цель работы - освоение приёмов ввода-вывода чисел, контроля синтаксиса вводимых числовых данных, преобразования строка-число и число-строка, форматного отображения чисел.

Задание

Разработайте программу для вычисления арифметического выражения. Обеспечьте контроль ввода данных и исключите возможность аварийного завершения программы при пустых значениях переменных.

Протестируйте Вашу программу.

Таблица 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 Оператор; Если Условие = Истина то – Оператор
Условие
Оператор 2
Оператор 1
True
False

 

 

Оператор
False
True
Условие

       

 


В описании оператора 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;