- •Глава 4. Компоненты 30
- •Глава 5. Основы программирования 37
- •Часть I. Delphi и работа в Интегрированной Среде
- •Глава 1. Объектно-ориентированное программирование
- •1.1. Основные понятия и определения
- •1.2. Визуальное программирование интерфейса
- •1.3. Общие вопросы построения программ
- •Глава 2. Проекты Delphi
- •2.1.Файлы проекта
- •2.2.Структура файла головной программы
- •2.3. Окно Интегрированной Среды Разработки Delphi
- •2.4. Панель главного меню и всплывающие меню
- •2.5. Форма и компоненты
- •2.5.1.Окно формы
- •2.5.2. Окно Редактора Кода
- •2.5.3. Инспектор Объектов
- •2.6. Структура модуля приложения
- •Глава 3. Элементы языка Delphi
- •3.1.Типы данных
- •3.1.1. Целый тип
- •3.1.2.Вещественный тип
- •3.1.3. Символьный тип
- •3.1.4. Строковый тип
- •3.1.5. Логический тип
- •3.2. Переменная
- •3.3. Константы
- •3.3.1.Числовые константы
- •3.3.2. Строковые и символьные константы
- •3.3.3. Логические и именованные константы
- •3.4. Инструкция присваивания
- •3.5. Стандартные функции
- •3.5.1.Математические функции
- •Глава 4. Компоненты
- •4.1. Форма и компоненты на форме
- •4.2. Событие и процедура обработки событий
- •Глава 5. Основы программирования
- •5.1. Сохранение проекта, его повторное открывание
- •5.2. Стиль программирования
- •5.3. Порядок разработки проекта
- •5.4. Управляющие структуры языка Delphi
- •5.4.1. Инструкция if
- •5.4.2. Инструкция case
- •5.5. Циклы
- •5.5.1. Инструкция for
- •5.5.2. Инструкция while
- •5.5.3. Инструкция repeat
- •5.5.4. Инструкция goto
- •5.6. Процедуры и функции
- •5.6.1. Структура функции
- •5.6.2. Структура процедуры
- •5.6.3. Ввод и вывод данных в диалоговых окнах
- •5.6.4. Запись инструкций программы
- •5.6.5. Отладка программы
- •5.7. Операции со строками
- •5.7.1. Стандартные функции и процедуры работы со строками
- •5.7.2. Использование операций со строками
- •5.8. Массивы
- •5.8.1. Объявление массива
- •5.8.2. Операции с массивами
- •5.8.3. Стандартные функции обработки массивов
- •5.8.4. Многомерные массивы
3.4. Инструкция присваивания
Инструкция присваивания является основной вычислительной инструкцией. Если в программе надо выполнить вычисление, то нужно использовать инструкцию присваивания. В результате выполнения инструкции присваивания значение переменной меняется, ей присваивается значение.
В общем виде инструкция присваивания выглядит так:
Имя := Выражение;
где:
• имя – переменная, значение которой изменяется в результате выполнения инструкции присваивания;
• : = – символ инструкции присваивания.
• выражение – выражение, значение которого присваивается переменной, имя которой указано слева от символа инструкции присваивания.
Пример:
Summa := Сеnа * Kol;
Skidka := 10;
Found := False;
Выражение состоит из операндов и операторов. Операторы находятся между операндами и обозначают действия, которые выполняются над операндами (табл.3.4). В качестве операндов выражения можно использовать: переменную, константу, функцию или другое выражение.
Таблица 3.4
Алгебраические операторы
Оператор |
Действие |
+ |
Сложение |
- |
Вычитание |
* |
Умножение |
/ |
Деление |
DIV |
Деление нацело |
MOD |
Вычисление остатка от деления |
При записи выражений между операндом и оператором, за исключением операторов div и mod, пробел можно не ставить.
Результат применения операторов +, -, * и / очевиден. Оператор div позволяет получить целую часть результата деления одного числа на другое. Например, значение выражения 15 div 7 равно 2. Оператор mod, деление по модулю, позволяет получить остаток от деления одного числа на другое. Например, значение выражения 15 mod 7 равно 1.
В простейшем случае выражение может представлять собой константу или переменную. Примеры выражений:
123
0.001
i+1
А + В/С
Summa*0.75
(В1+В3+В3)/3
Cena MOD 100
При вычислении значений выражений следует учитывать, что операторы имеют разный приоритет. Так у операторов *, /, div, mod более высокий приоритет, чем у операторов + и -. Приоритет операторов влияет на порядок их выполнения. При вычислении значения выражения в первую очередь выполняются операторы с более высоким приоритетом. Если приоритет операторов в выражении одинаковый, то порядок вычисления слева – направо.
Для задания нужного порядка выполнения операций в выражении можно использовать скобки, например:
(r1+r2+rЗ)/(r1*r2*rЗ)
Выражение, заключенное в скобки, трактуется как один операнд. Это означает, что операции над операндами в скобках будут выполняться в обычном порядке, но раньше, чем операции над операндами, находящимися за скобками. При записи выражений, содержащих скобки, должна соблюдаться парность скобок (число открывающих скобок должно быть равно числу закрывающих скобок). Нарушение парности скобок – наиболее распространенная ошибка при записи выражений.
Тип выражения определяется типом операндов, входящих в выражение, и зависит от операций, выполняемых над ними. Например, если оба операнда, над которыми выполняется операция сложения, целые, то очевидно, что результат тоже является целым. А если хотя бы один из операндов дробный, то тип результата дробный, даже в том случае, если дробная часть значения выражения равна нулю.
Важно уметь определять тип выражения. При определении типа выражения следует иметь в виду, что тип константы определяется ее видом, а тип переменной задается в инструкции объявления. Например, константы 0,1 и -512 – целого типа (integer), а константы 1.0,0.0 и 3.2Е-05 – вещественного типа (real).
В табл. 3.5 приведены правила определения типа выражения в зависимости от типа операндов и вида оператора.
Таблица 3.5
Правила определения типа выражения
Оператор |
Тип операндов |
Тип выражения |
*, +, - |
Хотя бы один из операндов real |
real |
*, +, - |
Оба операнда integer |
integer |
/ |
real или integer |
Всегда real |
DIV, MOD |
Всегда integer |
Всегда integer |
Инструкция присваивания выполняется следующим образом:
1. Сначала вычисляется значение выражения, которое находится справа от символа инструкции присваивания.
2. Затем вычисленное значение записывается в переменную, имя которой стоит слева от символа инструкции присваивания.
Например, в результате выполнения инструкций:
• i:=o, – значение переменной i становится равным нулю;
• а:=b+с; – значением переменной а будет число, равное сумме значений переменных b и с;
• j:=j+i; – значение переменной j увеличивается на единицу.
Инструкция присваивания считается верной, если тип выражения соответствует или может быть приведен к типу переменной, получающей значение. Например, переменной типа real можно присвоить значение выражения, тип которого real или integer, а переменной типа integer можно присвоить значение выражения только типа integer.
Например, если переменные i и n имеют тип integer, а переменная d – тип real, to инструкции
i:=n/10;
i:=1.0;
неправильные, а инструкция
d:=i+l;
правильная .
Примеры.
Пример1. Запись значения в целочисленную переменную имеет вид:
var
i: Integer;
begin
i: = 10;
i: =$a;
end;
Здесь сначала переменной i присваивается число 10, а потом $a – шестнадцатеричное а, что тоже равно 10. Таким образом первая и вторая строка делают одно и то же, а значит и результат будет одинаковый.
Пример2. Объявление строковой переменной.
var
Str: AnsiString;
begin
Str:=‘Hello Word’;//Присвоение Str значение ‘Hello Word’
end;
Пример 3. Работа с логическими переменными.
var
b:Boolean;// Объявление логической переменной b
Str: AnsiString; ;// Объявление строковой переменной Str
begin
b:=true;
if b=true then
Str: = ‘истина’
Else
Str:=’Ложь’;//Присвоение Str значение ‘Hello Word’
end;
Во время компиляции выполняется проверка соответствия типа выражения типу переменной. Если тип выражения не соответствует типу переменной, то компилятор выводит сообщение об ошибке:
Incompatible types ... and ...
где вместо многоточий указывается тип выражения и переменной. Например, если переменная n целого типа, то инструкция n: = m/2 неверная, поэтому во время компиляции будет выведено сообщение :
Incompatible types 'Integer' and 'Extended'.