Работа с Delphi. Выражения и операторы.

Автор: | 15.11.2017

Работа с Delphi. Выражения и операторы

Тип выражения

Тип выражения определяется типом операндов, входящих в выражение, и зависит от операций, выполняемых над ними. Например, если оба операнда, над которыми выполняется операция сложения, целые, то очевидно, что результат тоже является целым. А если хотя бы один из операндов дробный, то тип результата дробный, даже в том случае, если дробная часть значения выражения равна нулю.

Важно уметь определять тип выражения. При определении типа выражения следует иметь в виду, что тип константы определяется ее видом, а тип переменной задается в инструкции объявления. Например, константы о, 1 и -512 — целого типа (integer), а константы 1.0, 0.0 и 3.2Е-05 — вещественного типа (real).

Операторы Delphi

   Для создания приложений, реализующих сложную алгоритмическую логику, нужны средства управления ходом работы программы: изменения порядка выполнения операторов в зависимости от различных условий, и эффективной организации работы часто повторяющихся фрагментов. Математически доказано, что любой алгоритм можно закодировать с помощью

  • оператора присваивания
  • условного оператора
  • оператора цикла

С помощью условного оператора происходит проверка заданного условия и в зависимости от полученного результата происходит выбор одного из двух действий. Условный оператор представляет средство ветвления алгоритмического процесса.

Структура условного оператора представляет собой следующий вид:

if условие then список операторов 1 else список операторов 2 ;

где if, then, else — зарезервированные слова, по русски означающие — если, то, иначе.

Условие выбора — это логическое выражение (в основном используются операторы сравнения).

список операторов 1 и список операторов 2 — любые операторы языка Delphi.  В состав списка операторов может входить один  оператор или несколько, тогда это должен быть составной оператор. Один из выборов может отсутствовать, (быть пустым). Обычно это выбор действий расположенный после слова else. В такой ситуации, при условии равном FALSE, управление передается операторам следующим сразу за условным оператором.

Алгоритм работы условного оператора имеет следующий вид. Первоначально вычисляется выражение условие. Получаем результат логического типа. Если результат равен TRUE, то выполняются операторы входящие в список операторов 1, а список операторов 2 пропускается. Если результат равен FALSE,  то происходит обратное действие — выполняются операторы входящие в список операторов 2, а список операторов 1 пропускается.

Еще важный момент перед словом else  не ставиться точка c запятой.

Давайте расположим на форме кнопку Button и компонент Label. Для кнопки напишем такой обработчик события:

Изменяя значение переменной i с 1 на двойку мы увидим работу условного оператора в действии. Как результат будет выбор цвета формы и название заголовка компонента label.

Если условие сложное и само в себе включает несколько условий, то их необходимо объединить путем организации вложений условных операторов или используя логические операторы and, or, xor, not.

В сложных логических выражениях отдельные части-условия необходимо заключать в скобки:

if (i  > y) and (j = 55) then …

Запись без скобок будет ошибочной, так как компилятор воспримет его следущим образом:

if i > (y and j) = 55 then …

Список операторов 1 и список операторов 2 могут содержать любые операторы, в том числе содержать условные операторы. В свою очередь любой из вложенных может содержать в себе еще условные операторы. Бывает не у всех вложенных условных операторах имеется слово else. В этих случаях следует исходить из того, что else всегда ассоциируется с ближайшим к нему (сверху по тексту) словом if, которое еще не связано с else:

С помощью комментария можно показывать к какому if относиться else. Это подсказка себе на будущее для компилятора она не имеет никакого значения. Писать вложенных друг в друга составные операторы следует с особой тщательностью, аккуратно, не допуская ошибок и неточностей.

 

Операторами цикла называются операторы предназначенные для многократного выполнения определенной последовательности команд. У них всегда есть заголовок цикла, задающий число повторений, и тело цикла — набор повторяемых операторов.

Оператор цикла FOR имеет такую структуру:

for переменная-счетчик := начальное значение to конечное значение   do повторяемые операторы ;

for, to, do — являются зарезервированными словами (по русски — для, до, выполнить).

Переменная-счетчик — переменная типа Integer (может использоваться перечисляемый тип). Должна быть объявлена перед использованием. Начальное значение, конечное значение — начальное и конечное значение, того же типа (могут быть заданы операторами). Повторяемые операторы (тело цикла) — один или несколько произвольных операторов языка Delphi.

Первоначально, до выполнения цикла значение счетчика берется равным «начальное значение».  «Конечное значение» — определяет значение счетчика при котором тело цикла будет выполнено в последний раз.

Условие, управляющее работой оператора for, проверяется перед выполнением  тела цикла и если условие не выполняется в самом начале, то  «повторяемые операторы» не выполнятся ни разу.

Выполнив очередной раз тело цикла счетчик увеличивает свое значение на единицу. Затем происходит проверка, если счетчик не превышает конечного значения то цикл вычислений повторяется, в противном случае работа оператора цикла завершается. Если у нас в начальном или конечном значении находятся вычисляемые выражения, то вычисление происходит однократно при первом проходе.

Давайте вычислим сумму чисел от 1 до 100. Для этого, разместив на форме кнопку, создадим такой обработчик:

В языке  Delphi есть другая форма оператора цикла:

for переменная-счетчик := начальное значение downto конечное значение   do повторяемые операторы ;

Значение  счетчика в этом случае будет уменьшаться на единицу.

Оператор присваивания
Оператор присваивания (:=) вычисляет выражение, заданное в его правой части, и присваивает результат переменной, идентификатор которой расположен в левой части. Например:X := 4;
Y := 6;
Z := (X + Y) / 2;Во избежании ошибок присваивания необходимо следить, чтобы тип выражения был совместим с типом переменной. Под совместимостью типов данных понимается возможность автоматического преобразования значений одного типа данных в значения другого типа данных. Например, все целочисленные типы данных совместимы с вещественными (но не наоборот!).

В общем случае для числовых типов данных действует следующее правило: выражение с более узким диапазоном возможных значений можно присвоить переменной с более широким диапазоном значений. Например, выражение с типом данных Byte можно присвоить переменной с типом данных Integer, а выражение с типом данных Integer можно присвоить переменной с типом данных Real. В таких случаях преобразование данных из одного представления в другое выполняется автоматически:

Пример

Исключение составляет случай, когда выражение принадлежит 32-разрядному целочисленному типу данных (например, Integer), а переменная — 64-разрядному целочисленному типу данных Int64. Для того, чтобы на 32-разрядных процессорах семейства x86 вычисление выражения происходило правильно, необходимо выполнить явное преобразование одного из операндов выражения к типу данных Int64. Следующий пример поясняет сказанное:

Пример 2

 

Добавить комментарий