Логические выражения и операции.
Результатом выполнениялогического (булевского) выраженияявляется логическое значение True или False. Операндами служат данные только булевского типа. Простейшими видами логических выражений являются следующие: логическая константа; логическая переменная; элемент массива логического типа; логическая функция; выражение отношения.
Другие логические выражения строятся из вышеперечисленных путем применения логических операций и круглых скобок, список логических операций приведен в таблице.
Логические операции
Операция | Действие | Выражение | А | В | Результат |
Not | Логическое отрицание | Not A | True | False | |
And | Логическое И | A and B | True | True | True |
True | False | False | |||
False | True | False | |||
False | False | False | |||
Or | Логическое ИЛИ | A or B | True | True | True |
True | False | True | |||
False | True | True | |||
False | False | False | |||
Xor | Исключающее ИЛИ | A xor B | True | True | False |
True | False | True | |||
False | True | True | |||
False | False | False |
Приоритет операций.
Выполнение каждой операции происходит с учетом ее приоритета:
1. @, not Первый (высший)
2. *, /, div, nod, and, shi, shr Второй
3. +, -, or, xor Третий
4. =, о, <, >, . <=, >=, in Четвертый (низший)
Для определении старшинства операций имеются четыре основных правила:
1.Операнд, находящийся между двумя операциями с различными приоритетами, связывается с операцией, имеющей более высокий приоритет.
2.Операция, находящаяся между двумя операциями с равными приоритетами, связывается с той операцией, которая находится слева.
3.Выражение, заключенное в скобки,перед выполнением вычисляется, как отдельный операнд.
4.Операции с равным приоритетомпроизводятся слева направо свозможным регулированием порядкавыполнения скобками.
Ввод и вывод информации на экран.
Стандарные функции
Для выполнения часто встречающихся вычислений и преобразований данных в Object Pascal существуют стандартные функции.
Арифметические функции
Арифметические функции позволяют выполнять различные вычисления. Например, функция sqrt вычисляет значение квадратного корня. Подробнее об арифметических функциях будет изложено в лабораторной работе 3.
3.2.1.2. Функции преобразования типов
Функции преобразования типов наиболее часто используются в инструкциях, обеспечивающих ввод и вывод информации. Например, для того чтобы вывести в поле вывода диалогового окна значение переменной типа real, необходимо сначала получить изображение числа, являющегося значением данной переменной. Это можно сделать при помощи функции FloatToStr, которая возвращает строковое представление выражения действительного типа, указанного при вызове функции.В таблице перечислены наиболее часто используемые функции преобразования типов.
Функции преобразования типов
Функция Значение |
Chr (n) Символ ANSI с номером n |
IntToStr (n) Преобразование целого n в строку. |
FloatToStr(n) Преобразование вещественного n в строку. |
FloatToStrF(n,f,l,m) Преобразование вещественного n в строку по формату. При вызове функции указываются: f — формат (способ изображения); l —точность (нужное общее количество цифр); m — количество цифр после десятичной точки |
StrToInt (s) Преобразование строки s в целое число. |
StrToFloat (s) Преобразование строки s в вещественное число. |
Round (n) Целое, ближайшее к n |
Trunc(n) Целая часть от n |
Frac(n) Дробная часть вещественного n |
Int (n) Целая часть вещественного n |
Ввод данных
Программа может получить исходные данные из окна ввода, поля ввода диалогового окна или из файла.
Ввод из окна ввода
Ввод данных из окна ввода осуществляется вызовом функции InputBox, возвращаемым значением которой является строка, введенная пользователем. В общем виде инструкция для ввода данных с использованием функции InputBox выглядит так:
Переменная := InputBox(Заголовок, Подсказка, Значение);
где
Переменная — имя переменной строкового типа, значение которой должно быть получено из окна ввода;
Заголовок —текст заголовка окна ввода;
Подсказка — текст поясняющего сообщения;
Значение — текст, находящийся в поле ввода в момент появления окна ввода на экране.
Например, в программе пересчета веса из фунтов в килограммы инструкция ввода количества фунтов может выглядеть так:
s:=InputBox('Фунты-килограммы','Введите вес в фунтах','');
Выполняется эта инструкция следующим образом:
1. На экран монитора выводится окно ввода.
2. В поле ввода вводится (набирается на клавиатуре) число.
3. Затем необходимо нажать одну из командных кнопок окна ввода:
• Щелчок на кнопкеОК присваивает переменной s значение, соответствующее введенной строке
• Щелчок на кнопкеCancel присваивает переменной s предопределенное значение, указанное при вызове функции inputBox в качестве ее аргумента (в данном примере переменной s будет присвоено '', т. е. пустая строка)
Следует еще раз обратить внимание на то, что значение функции InputBox строкового (string) типа. Поэтому, если программе надо получить значение числового типа, то введенная строка (изображение числа) должна быть преобразована в число при помощи соответствующей функции преобразования.
s:=InputBox('Фунты-килограммы','Введите вес в фунтах','');
funt:=StrToFloat(s);
3.2.2.2. Ввод из поля диалогового окна
Ввод данных из поля ввода диалогового окна осуществляется обращением к свойству Text этого поля. Если Edit1 — имя поля, предназначенного для ввода коэффициента при второй степени неизвестного, тогда инструкция ввода значения коэффициента, для представления которого в программе используется переменная а типа real, будет иметь вид:
a:=StrToFloat(Edit1.Text);
В приведенной инструкции параметр Text — это имя внутренней переменной (свойства) поля ввода, которая содержит текст, находящийся в поле.
Вывод данных
Программа может вывести результат в окно сообщения, в поле вывода диалогового окна, в файл или на принтер.
Вывод в окно сообщения
Вывод в окно сообщения осуществляется вызовом процедуры ShowMessage или функции MessageDlg.
Процедура ShowMessage выводит на экран простое диалоговое окно с текстом и одной командной кнопкойОК.В общем виде инструкция вызова процедуры ShowMessage выглядит так:
ShowMessage(Сообщение);
где Сообщение — выражение строкового типа. Заголовок окна сообщения, выводимого процедурой ShowMessage, совпадает с именем исполняемого файла приложения.
Функция MessageDlg более гибкая. Она позволяет снабдить сообщение одним из стандартных значков Windows, например, значком "Внимание", а также задать количество и тип командных кнопок. Пример выполнения инструкции:
r:=MessageDlg('Дискриминант меньше нуля'+#13+'Уравнение не имеет действительных корней.', mtInformation, [nabOK], 0);
Функция MessageDlg возвращает результат — число, проверив значение которого можно определить, выбором какой командной кнопки был завершен диалог.
В общем виде обращение к функции MessageDlg выглядит так:
Выбор:= MessageDlg(Сообщение,Тип,Кнопки,КонтекстСправки)
где
Сообщение — это текст выводимого сообщения;
Тип— это тип сообщения. Сообщение может быть информационным, предупреждающим или сообщающим об ошибке. Каждому типу сообщения соответствует определенный значок. Задается тип сообщения именованной константой. В таблице приведены именованные константы, определяющие тип сообщения, выводимого функцией MessageDlg.
Именованные константы, определяющие тип сообщения
Константа Тип сообщения |
mtWarningВнимание |
MtErrorОшибка |
MtlnformationИнформация |
MtConfirmationЗапрос подтверждения |
MtCustomОбычное сообщение |
Кнопки — список, определяющий число и вид кнопок, отображаемых в окне сообщения. Список может состоять из нескольких разделенных запятыми именованных констант. Весь список заключается в квадратные скобки. Константы и соответствующий им текст на кнопках приведены в таблице:
Список именованных констант
Константа Текст на кнопке |
mbУesYes |
mbNoNo |
mbOK OK |
mbCancelCancel |
mbHelpHelp |
mbAbortAbort |
mbRetryRetry |
mbIgnoreIgnore |
mbAllAll |
Например, для того чтобы в окне сообщения появились кнопкиОК и Cancel, список кнопки должен состоять из следующих двух констант:
[mbOK, mbCancel ]
Кроме констант, приведенных в таблице, можно использовать константы:
mbOkCancel, mbYesNoCancel и mbAbortRetryIgnore. Эти константы определяют наиболее часто используемые в диалоговых окнах комбинации командных кнопок.
Контекст Справки— параметр, определяющий номер экрана справочной системы, который появляется при нажатии клавиши <F1> в тот момент, когда окно сообщения находится на экране. Если использование справочной системы не предусмотрено, то при вызове функции MessageDlg в качестве параметра контекстСправки должен быть указан ноль.
Значение возвращаемое функцией MessageDlg, позволяет определить, какая из командных кнопок была нажата. В таблице приведен список констант, идентифицирующих нажатую кнопку.
Именованные константы, идентифицирующие нажатую кнопку
Константа Диалог завершен нажатием кнопки |
mrAbortAbort |
mrYesYes |
mrOkOk |
mrRetryRetry |
mrNo No |
mrCancel Cancel |
mrIgnore Ignore |
mrAll Аll |