Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 19
Текст из файла (страница 19)
ниже в пункте«Знакомимся с типовой структурой модуля на языке Delphi».ПеременныеПеременными называются идентификаторы, которые связаны с изменяемымиобластями памяти, то есть с таким ее участками, содержимое которых будетменяться в ходе работы программы. Перед использованием переменных ониописываются в специальном разделе модуля. Раздел описания переменных начинается с зарезервированного слова var, за которым следует перечень переменных и их типов. В отличие от раздела описания констант тип переменнойнужно указывать явно, так как компилятор не сможет угадать, для хранения каких данных вы будете использовать ту или иную переменную и, соответственно, какой объем памяти необходимо выделить.
Ниже приведен пример раздела описания переменных:varх,у: integer;min_value: real;my_str: string;Как видите, имя переменной от типа при ее объявлении отделяетсядвоеточием (:). Кроме того, если планируется использовать в программенесколько переменных одного типа, то их имена можно указывать череззапятую. Подробнее о том, какие бывают типы, см. в разделе «Типыданных».i,j , k : integer;О месте раздела описания переменных в структуре модуля см.
ниже вразделе «Знакомимся с типовой структурой модуля на языке Delphi».Какие бывают типы данныхТеперь несколько слов скажу о том, как используются переменные. Сконстантами все понятно - их значения определены в разделе описания, и мыможем использовать их имена. Переменным же значения присваиваютсянепосредственно в разделе реализации (начинающемся со слова b e g i n ) .Чтобы присвоить значение переменной, необходимо указать ее имя, указатьоператор присваивания и затем указать присваиваемое переменной значение.В качестве оператора присваивания служит пара символов, состоящая из знакадвоеточия и равенства (:=).
В общем случае оператор присваивания можнозаписать следующим образом:<переменная>:=<выражение>;О том, какие бывают выражения, можно узнать в разделе «Выражения иоперации». В качестве выражения вполне может выступать простое число,строка текста и т.п. Пример присваивания значений переменным приведенниже:beginх:=0;у:=100;min_value:=0,5 + 1/256;гend;В первых двух случаях выражение представлено простыми числами, а вот впоследнем случае уже используется конструкция «классического» выражения операнды и операции.
Результат вычисления выражения и будет записан впеременную min__value.Какие бывают типы данныхТипы данных - специальные конструкции языка, которые рассматриваютсякомпилятором как образцы для создания других элементов программы, такихкак переменные, константы и функции. Любой тип определяет две вещи:>• объем памяти, выделяемый для размещения элемента (константы, переменной);>• набор допустимых действий над элементами данного типа.Первоначально типы как раз и предназначались для того, чтобы программист явно указывал, какого размера память нужна ему и что он с нейсобирается делать.ГЛАВА 3 • Язык программирования DelphiНапомню, что любой определяемый программистом идентификатор долженбыть описан в разделе описаний, то есть соответствовать какому-либо типуданных.
Далее будут рассмотрены основные типы данных языка Delphi.Строковый и символьный типыЗнакомство с типами данных мы начнем со строкового типа S t r i n g . Этот типопределяет участок памяти переменной длины, каждый байт которогосодержит один символ. Для символов в языке Delphi имеется тип Char.
Такимобразом, тип S t r i n g - это цепочка элементов типа Char. Каждый символ типаS t r i n g пронумерован, начиная с единицы. Соответственно, программистможет обращаться к любому элементу строки (символу) по его номеру в строке.Следующий фрагмент кода поясняет использование типа S t r i n g :varstroka:string;beginstroka:='Строка текста';end;Замечу, что программист обязан объявить любой идентификатор, которыйон вводит в разделе описаний (var). В нашем примере после объявления вразделе v a r идентификатора s t r o k a типа s t r i n g будет выделено необходимое количество памяти, и в дальнейшем Delphi будет контролироватьиспользование этого идентификатора.
Что значит - контролировать? Этозначит, что если мы допустим какую-либо ошибку при использовании этогоидентификатора, то нам будет выведено соответствующее сообщение.Например, если далее по тексту программы использовать выражениеl - 1 0 * S t r o k a , то будет выдано сообщение об ошибке, так как над строкаминедопустимо использование операции умножения (и других математическихопераций, за исключением сложения).
Соответственно, следующий фрагменткода демонстрирует использование операции сложения для строковых типов:varstrokal,strok2,stroka3:string;beginstrokal:='Строка ';strokal:='текста';stroka3:=strokal+stroka2;Какие бывают типы данныхend ;В данном случае операция сложения означает объединение строк, то естьдобавление строки s t r o k a 2 в конец строки s t r o k a l . В результате переменнойs t r o k a 3 будет присвоено значение ' строка т е к с т а ' .Кроме того, над строками допустимо использование операций отношения:>• = - равно;> о - не равно;>• > - больше;> < - меньше;>• >= - больше или равно;> <= - меньше или равно.Результатом применения операции отношения будет логический тип(описание см. ниже), который имеет два значения: True (Истина) и F a l s e(Ложь).Еще одним строковым типом данных является строка символов,ограниченная нулем, - PChar.
На самом деле тип PChar является указателем наобласть памяти, где последний байт содержит символ с номером 0 (напомню,что записывается такой символ с помощью комбинации #0).Для преобразования строки PChar в «паскалевскую» строку S t r i n gпредназначена специальная функция S t r P a s :function StrPas(const Str: PChar): string;Эта функция на входе принимает указатель на строку, ограниченную нулем,и возвращает строку s t r i n g , содержащую те же данные. Так же можноиспользовать синтаксис преобразования типов:vars: string,ps:pchar,begin// Конвертация строк с помощью функцииs:=StrPas(ps);// Конвертация строк с помощью преобразования типовs:=string(ps);end;Обратная конвертация выполняется с помощью преобразования типов:ps:=pchar(s);тптГЛАВА 3 т Язык программировании DelphiЦелые типыЦелые типы используются для хранения и преобразования целых чисел.
ЯзыкDelphi предусматривает использование нескольких целых типов, которыеотличаются друг от друга диапазоном используемых значений и, соответственно, занимаемым объемом памяти. •Диапазон возможных значений целых типов зависит от их внутреннегопредставления, которое может занимать один, два, четыре или восемь байтов.Ниже в табл. 3.3 приведены целые типы, используемые в языке Delphi.Таблица 3.3 т Целые типы, используемые в языке DelphiНазвание форматаДиапазон значенийРазмер в байтахByte0...2551Word0...655352LongWordShortlntIntegerLongintInt64Cardinal0...4294967295-128...127-2147483648..
.2147483647-2147483648...21474836474144263180...42949672954_2бзНад целыми типами допустимо применять следующие математическиеоперации:>• + - сложение;• - - вычитание;• * - умножение;>• d i v - целочисленное деление;>• mod - остаток от деления.Замечу, что при выполнении операции деления результат может бытьдробным, а для этого в языке Delphi используется вещественный тип.Соответственно, поэтому для целого типа приведенные операции делениявозвращают только целочисленный результат.
Использование операций d i v иmod можно пояснить на примере. Приведенный ниже фрагмент кодадемонстрирует пример использования этих операций.varх,у,z:integer;beginх:=11 div 3;// х содержит 3Какие бывают типы данныху:=11 mod 3;z:=x div у;II У содержит 2// z содержит 1end ;Смысл же остальных операций совпадает с общепринятым математическим.Единственное, о чем необходимо помнить, это то, что результат выполненияматематической операции не должен выходить за диапазон возможныхзначений типа (см.
табл. 3.3).Как и к строкам, к целым типам применимы операции отношения.Вещественный типВ отличие от рассмотренных выше целых типов, значения которых всегдаприравниваются к целым числам, значения вещественных типов (Real) всегдаопределяют число с некоторой точностью, которая зависит от внутреннегоформата вещественного числа (табл. 3.4).Таблица 3.4 т Вещественные типы языка DelphiФорматSingleRealDoubleExtendedДиапазонКоличество значащих цифрДлина в байтах1,5e-45...3,4e387-811-1215-1619-20488102,9е-39...1,7е385,0е-324...1,7е3083,4е-4932...1,1е4932Как видно из табл. 3.4, вещественное число в Delphi может занимать от 4 до10 байт.