ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 266
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
ЛР 1. Операторы и выражения Delphi
Управление жизненным циклом объекта
Ограничение видимости членов класса
Особенности объявления методов
Принадлежность к родительскому контейнеру
Размещение и размеры элемента управления
Видимость и активность элемента управления
ЛР5. Обработка клавиатурных событий и событий мышки
Языки программирования
ЛР 1. Операторы и выражения Delphi
После знакомства с основами объявления переменных и констант и построения простейших структур нам предстоит перейти на очередной уровень освоения языка — научиться использовать в программах операторы и выражения Delphi.
В терминах программирования под выражением понимается логически законченный фрагмент исходного кода программы, предоставляющий способ получения (вычисления) некоторого значения. Простейшим примером выражения может стать строка кода X:=Y+Z, возвращающая результат суммирования двух значений. Предложенное выражение содержит три операнда (X, Y и Z) и два оператора: := и +.
Перечень операторов входящих в состав языка Delphi весьма обширен, при классификации операторов можно выделить следующие группы:
-
оператор присваивания; -
арифметические операторы; -
оператор конкатенации строк; -
логические операторы; -
операторы поразрядного сдвига; -
операторы отношения; -
операторы множеств; -
строковые операторы; -
составной оператор; -
условные операторы.
Оператор присваивания
Едва ли не самый популярный среди всех операторов Delphi — оператор присваивания нам уже хорошо знаком. Комбинация символов ":=" уже неоднократно встречалась на предыдущих страницах книги, с ее помощью мы передавали значения в переменные. Например,
X:=10; //присвоить переменной X значение 10
Благодаря оператору := в переменной X окажется новое значение.
Арифметические операторы
Как и следует из названия, арифметические операторы необходимы для осуществления математических действий с целыми и вещественными типами данных. Помимо известных еще из курса начальной школы операторов сложения
, вычитания, умножения и деления, Delphi обладает еще двумя операторами целочисленного деления (табл. 1.1).
Таблица1.1.АрифметическиеоператорыDelphi
Операто р | Операция | Входные значения | Результат операции | Пример | Результ ат |
+ | Сложение | integer, double | integer, double | X:=3+4; | 7 |
- | Вычитание | integer, double | integer, double | X:=10-3.1; | 8.9 |
* | Умножение | integer, double | integer, double | X:=2*3.2; | 4.4; |
/ | Деление | integer, double | double | X:=5/2; | 3.5; |
div | Целочисленно е деление | integer | integer | X:=5 div 2; | 2 |
mod | Остаток от деления | integer | integer | X:=5 mod 2; | 1 |
При объявлении участвующих в расчетах переменных следует учитывать тип данных, возвращаемый в результате выполнения того или иного оператора. Допустим, нам следует разделить число 4 на 2 (листинг 1.1).
Листинг 1.1. Операция деления возвращает вещественное число
var {X:integer; - неподходящий тип данных} X:extended;{- правильно}
begin
X:=4/2; //результат должен быть передан в переменную вещественного типа WriteLn(X);
end.
Даже ученик начальной школы знает, что 4/2=2, другими словами в результате деления мы получим целое число. Однако Delphi обязательно забракует код, если мы попытаемся поместить результат операции деления в целочисленную переменную, и уведомит об этом программиста сообщением, о несовместимости типов.
Примечание
Операторы + и – могут применяться не только для сложения и вычитания, но и для определения знака значения. Например: X:=-5.
Оператор конкатенации строк
Оператор конкатенации строк позволяет объединять две текстовые строки в одну. Для простоты запоминания еще со времен языка Pascal в качестве объединяющего оператора используется тот же самый символ, что и для сложения двух числовых величин — символ плюса + (листинг 1.2).
Листинг 1.2. Конкатенация строк
const S1='Hello';
var S:String='World'; CH:Char='!';
begin
S:=S1+', '+S+CH;
WriteLn(S); //'Hello, World!' ReadLn;
end.
Обратите внимание, что оператор конкатенации может быть применен не только для типа данных
String, но и к символьному типу Char.
Логические операторы
В табл. 1.2 представлены четыре логических (булевых) оператора, осуществляющих операции логического отрицания, логического "И", логического "ИЛИ" и исключающего "ИЛИ". В результате выполнения любой из логических операций мы можем ожидать только одно значение из двух возможных: истина (true) или ложь (false).
Таблица1.2.ЛогическиеоператорыDelphi
Оператор | Операция | Пример | Результат |
NOT | Логическое отрицание | var x: boolean = NOT true; | false |
x:= NOT false; | true | ||
AND | Логическое умножение (конъюнкция, логическое "И") для двух выражений | x:=true AND true; | true |
x:=true and false; | false | ||
x:=false AND true; | false | ||
x:=false AND false; | false | ||
OR | Выполняет операцию логического "ИЛИ" (сложения) для двух выражений | x:=true OR true; | true |
x:=true OR false; | false | ||
x:=false OR true; | true | ||
x:=false OR false; | false | ||
XOR | Выполняет операцию исключающего "ИЛИ" для двух выражений | x:=true XOR true; | false |
x:=true XOR false; | true | ||
x:=false XOR true; | true | ||
x:=false XOR false; | false |
Логические операции разрешено проводить с целыми числами. Если вы не забыли порядок перевода чисел из десятичной системы счисления в двоичную и наоборот, то вам наверняка покажется интересным листинг 1.3.
Листинг 1.3. Логические операции с целыми числами
var X,Y,Z : byte;
begin
{******* логическое умножение *******} X:=5; //в бинарном виде 0101
Y:=3; //в бинарном виде 0011
Z:=X AND Y; // 0101 AND 0011 = 0001 {десятичное 1} WriteLn(X,' AND ',Y,'=',Z);
{******* логическое сложение *******} X:=1; //в бинарном виде 0001 Y:=2; //в бинарном виде 0010
Z:=X OR Y; // 0001 OR 0010 = 0011 {десятичное 3} WriteLn(X,' OR ',Y,'=',Z);
{******* исключение или *******} X:=5; //в бинарном виде 0101
Y:=3; //в бинарном виде 0011
Z:=X XOR Y; // 0101 XOR 0011 = 0110 {десятичное 6} WriteLn(X,' XOR ',Y,'=',Z);
{******* отрицание *******}
X:=1; //в бинарном виде 00000001
Z:=NOT X; // NOT 00000001 = 11111110 {десятичное 254} WriteLn('NOT ',X,'=',Z);
ReadLn;
end.