![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Выражения и порядок вычислений
Выражения – это правило вычисления значений. В выражении участвуют операнды, объединенные знаками операций. Операндами выражения могут быть константы, переменные и вызовы функций. Операции выполняются в определенном порядке в соответствии с приоритетом. Для изменения порядка вычислений операций используются круглые скобки, уровень вложенности которых практически не ограничен. Если же скобок нет, то сначала исполняются операции с более высоким приоритетом, затем – с менее. Последовательность равноприоритетных операций выполняется " слева направо". Таблица 6 Приоритеты операций языка Object Pascal
Замечание: Вызов любой функции имеет более высокий приоритет, чем все внешние относительно этого вызова операции. Аргументы вызываемой функции вычисляются в момент вызова Приведение типов и функции преобразования типов Object Pascal является сильно типизированным языком. Это означает, что типы данных строго различаются, а при вычислении выражений строго выполняются определенные правила и ограничения на использование различных типов. Преимущество сильной типизации состоит в том, что транслятор получает возможность правильно обрабатывать данные и тщательно проверять исходный код, исключать ошибки в процессе выполнения программы. Чтобы понять принципы сильной типизации, выполните следующий фрагмент кода: Var myChar: Char; myByte: Byte; Begin myChar: = 'A'; myByte: = myChar; {Строка с синтаксической ошибкой! } End; Переменные обоих типов (Char и Byte) занимают по одному байту памяти. Компилятор генерирует сообщение об ошибке потому, что согласно правилам сильной типизации Object Pascal нельзя присваивать значение типа Char переменной типа Byte и наоборот. Однако иногда в программе необходимо выполнить операцию, запрещенную правилами типизации. Обойти правила типизации можно средствами приведения типов. Приведением типов называется преобразование типов в отношении промежуточных результатов вычислений. Обратите внимание: преобразуются только типы промежуточных результатов, типы объявленных переменных всегда остаются неизменными. Общий синтаксис приведения типов имеет вид: тип_данных (выражение); Например, оператор Integer('А') приводит тип символа А к целому. Значение любой переменной можно привести к любому типу при условии, что исходный и результирующий типы занимают одинаковый объем памяти и не смешиваются целые и вещественные числа. Теперь можно исправить наш предыдущий пример так: Var myChar: Char; myByte: Byte; Begin myChar: = 'A'; myByte: = Byte(myChar); {Синтаксическая ошибка исправлена! } End; Операция приведения типов не преобразует типы значений между вещественными и целыми числами. Однако это можно сделать с помощью встроенных процедур и функций преобразования типов Object Pascal, перечисленных в таблице 7. Таблица 7 Процедуры и функции преобразования типов
Выражения, в которых операнды имеют разные числовые типы данных, называются смешанными арифметическими выражениями. Их использование в Object Pascal допускается. Например, следующий фрагмент кода не содержит ошибки: Var numl, result: Real; num2: Integer; Begin numl: = 7.2; num2: = 3; result: = numl * num2; {Смешанное арифметическое выражение} End; В предыдущем коде num1 является вещественным числом, a num2 – целым. Таким образом, numl * num2 является смешанным арифметическим выражением. Из табл. 7 видно, что для явного преобразования целого типа в вещественный встроенных процедур нет. Неявное приведение типов данных можно отключить, если указать директиву компилятора {$R+}.
|