Работа с Delphi. Константы и переменные.
Константы — это параметры (объекты) программы, которые не могут изменять своё значение в ходе выполнения программы.
Как мы уже знаем, все числа являются числовыми константами. Из чисел, знаков операций, идентификаторов некоторых стандартных функций и круглых скобок можно составлять константные выражения:
123 ’ Z ’
Cos(3.14)
’stringl ’
Chr(255)
Точно так же из любых символов мы можем составить символьные (один любой символ) и строковые константы (любое количество любых символов, в том числе и ни одного). Такие константы заключаются в одинарные (не двойные!) кавычки:
’G’ ’R’ ’7’ ’Ж’ ’Э’ — символьные константы
’’ — пустая строка, в которой нет ни одного символа
’Delphi’ ’G’ ’Constant’ ’Строковая константа’ — строковые константы
Строковые и символьные константы можно соединять знаком +:
’Delphi’ + ’ — ’ + ’ это наш выбор! ’
Значением этого выражения будет строка «Delphi- это наш выбор!»
’205’ ’14.007’ ’2 + 2’ — тоже строковые константы! Их значениями являются именно строки, а не числа, поэтому значение выражение ‘2 + 2’ вовсе не 4!
Если в строковой константе имеется одиночная кавычка, то её следует повторить дважды.
Кроме того, существуют логические константы True(соответствует значению истина), False(ложь), а также константа nil (0, используется как значение указателей).
Такие явные константы и константные выражения можно использовать в любых операторах и для этого их не нужно объявлять.
Переменные — это параметры (объекты) программы, которые могут изменять своё значение в ходе выполнения программы.
Физически переменная представляет собой область памяти (её размер зависит от типа переменной; в этих ячейках памяти хранится значение переменной), связанную с её идентификатором.
Как и все другие объекты программы, до первого использования переменные должны быть объявлены. Переменные описываются в разделе объявления переменных модуля или подпрограммы. Он начинается зарезервированным словом var(от слова variable— переменная), за которым следуют объявления переменных.
При объявлении переменной указывается её имя, которое отделяется двоеточием от типа. Каждое объявление завершается точкой с запятой:
1 2 3 4 5 6 7 |
<span lang="EN-US">Var</span> <span lang="EN-US">I,i,n: integer;</span> <span lang="EN-US">Flag: boolean:</span> <span lang="EN-US">Ch: char;</span> <span lang="EN-US">X,y,z: single;</span> |
Переменные одного типа можно перечислять через запятую с последующим указанием их общего типа.
Типом переменной может быть:
- стандартный тип Delphi (integer, single, char…);
- ранее определённый пользователем тип:
1 2 3 4 5 6 |
<span lang="EN-US">Type</span> <span lang="EN-US">TNumber= 0..10;</span> <span lang="EN-US">Var</span> <span lang="EN-US">Num: TNumber;</span> |
- непосредственно вводимый при объявлении тип:
1 2 3 4 5 |
Var 0..10; Num: |
Хорошенько запомните: после объявления переменной её значение не определено. При выполнении программы для каждой переменной выделяется память, но в этих ячейках может оказаться всё что угодно, поэтому значение переменной будет меняться от одного запуска программы к другому. Это может привести к ошибкам: в некоторых случаях программа будет работать правильно, в других нет. Это значит, что все переменные должны быть инициализированы, то есть им должно быть присвоено какое-либо значение (конечно, не при объявлении):
1 2 3 4 |
<span lang="EN-US">var </span><span lang="EN-US">s: single; begin</span> <span lang="EN-US">s:= 3.1415926;</span> |
Никогда не используйте неинициализированные переменные!
Впрочем, Delphi следит за вами! После отладочного запуска программы проверяйте содержимое окна сообщений
В третьей строке компилятор предупреждает (такое легкомысленное отношение к переменным ошибкой не считается, но использовать её не следует!), что вы забыли задать значение переменной s.
Глобальные переменные инициализируются автоматически значением по умолчанию. Для числовых переменных — нуль, для строковых — пустая строка. Инициализация локальных переменных целиком лежит на совести программиста.
Два других сообщения — подсказки: вы объявили переменные, то не использовали их. Возможно, они лишние и их следует удалить.
1 |
1 |
1 2 3 4 5 |
<span lang="EN-US">var </span><span lang="EN-US">s: single;</span> <span lang="EN-US">begin</span> <span lang="EN-US">s:= num; s:= pi; s:= flag;</span> |
Не забывайте также о совместимости типов переменных и присваиваемых им значений. В данном примере действительной переменной sможно присвоить значение целого или действительного типа, но никак не логического или строкового! В этом случае компилятор огорчит вас сообщением об ошибке и наотрез откажется запускать «дефективную» программу.