Программа на Delphi
причине поиск
ошибки в программе, особенно если она многомодульна и сложна, может надолго
затянуться.
Не следует также злоупотреблять многообъемными типами, т.к. это может
привести к излишнему перерасходу, а иногда и нехватке памяти, с одной
стороны, и замедлению работы программы – с другой.
Примеры:
Var
A, A_Par: Integer;
T1, T2, T3: LongInt;
CircleCounter: byte;
Значения целых типов изображаются в обычном десятичном или в
шестнадцатеричном видах. Они отличаются тем, что при изображении
шестнадцатеричных значений в его начале ставится символ $ и сами значения
формируются из шестнадцатеричных цифр 0 .. 9, A ... F.
Максимально допустимый диапазон значений определяется их типом.
Примеры:
0 9877 -56 $F1 ( то же, что 241)
Над целыми значениями можно выполнять четыре обыкновенных арифметических
действия: сложение (+), вычитание (-), умножение (*), деление (/) и два
дополнительных действия: деление нацело (div) и взятие остатка от деления
(mod). При выполнении деления результатом будет вещественное значение, во
всех остальных операциях – целое.
3.2. Вещественные типы
Эта группа типов охватывает вещественные значения.
Вещественные типы не могут быть использованы:
. в качестве индексов массивов;
. в операторах For и Case;
. в качестве базисного типа при определении множеств;
. при определении подтипов.
При описании вместо Real48 можно указывать Real.
Ниже в табл. 2 приведен список типов и их характеристики.
Таблица 2
|№ |Тип |Диапазон значений |Значащих цифр |Размер |
| | | |в мантиссе |памяти |
|1. |Real48 |2.9 x 10^–39 ... 1.7 x 10^38 |11 – 12 |6 байтов |
| |Single | |7 – 8 |4 байта |
|2. |Double |1.5 x 10^–45 ... 3.4 x 10^38 |15 – 16 |8 байтов |
|3. |Extended |5.0 x 10^–324 ... 1.7 x 10^30|19 – 20 |10 байтов|
|4. |Comp | |19 – 20 | |
|5. |Currency |3.6 x 10^–4951 ... 1.1 x |19 – 20 |8 байтов |
|6. | |10^4932 | |8 байтов |
| | |-2^63+1 ... 2^63 -1 | | |
| | |-922337203685477.5808 ... | | |
| | |922337203685477.5807 | | |
Примеры:
Var
rA, rA_Par: Real;
T: Integer;
Вещественные значения можно изобразить:
. в форме с фиксированной десятичной точкой;
. в форме с плавающей десятичной точкой.
Первая форма представления вещественного значения представляет привычное
число, в котором целая и дробная части разделены десятичной точкой,
например
12.455
-988.45
-8.0
Вторая форма предназначена для записи очень больших или очень маленьких по
абсолютной величине значений, когда их представление в форме с
фиксированной точкой затруднительно или невозможно. Такое значение
изображают в виде
<значение с фиксированной точкой > E <порядок>
Примеры:
-45.2E6 ( то же, что -45,2 106)
5.245E-12 ( то же, что 5,24 10-12)
Порядок таких чисел должен быть всегда целым числом.
3.3. Логический (булевский) тип
Логические переменные имеют тип boolean. Такая переменная занимает один
байт памяти и может иметь одно из двух возможных значений – True (истина)
или False (ложь).
Примеры:
Var
b : boolean;
b1, Ti : boolean;
3.4. Символьный тип
Типы AnsiChar и WideChar описывают множество отдельных символов языка,
включая буквы русского алфавита. AnsiChar описывает множество из 256 ASCII-
кодов и занимает один байт памяти, WideChar описывает мно-жество Unicode –
универсальное множество кодов и занимает два байта памя-ти. Тип AnsiChar
эквивалентен базовому типу Char прежних версий языка.
Примеры:
Var
Ch, k : AnsiChar;
Char_Massivr: array[1..100] of Char;
Символьное значение представляют в виде символа, заключенного с обеих
сторон в апострофы. Для изображения самого апострофа его удваивают
(последний пример), например:
'h' 'X' '#' '$' ''''
3.5. Строковые типы
Этот тип во многом схож с типом Array of Char, т. е. массивом символов.
Отличие состоит в том, что переменная этого типа может иметь динамическое
количество символов (от нуля до верхней границы), в то время как массив
символов всегда статичен и имеет одинаковое количество символов.
Таблица 3
|№ |Тип |Длина строки |Занимаемая память |
|1.|ShortString |0 – 256 символов |(Кол-во символов) х 1 байт |
| |AnsiString |0 – 2 Гб символов |(Кол-во символов) х 1 байт |
|2.|WideString |0 – 2 Гб символов |(Кол-во символов) х 2 байта|
| | | | |
|3.| | | |
Максимальная длина строковой переменной должна быть указана явно. Размер
строки на единицу больше ее объявленной длины, т. к. в ее нулевом байте
содержится фактическая длина строки. Длину в нулевом байте можно
принудительно менять.
Особо следует выделить тип String. Если длина String-строки не объявлена,
то при действии директивы компилятора {$H+} или без ее указания такое
объявление равносильно AnsiStrig. Если установлена директива {$H-}, то тип
String равносилен типу ShortString.
Строковое значение изображают в виде последовательности символов,
заключенной в апострофы. Пустую строку изображают двойным апострофом.
Примеры значений строковых типов:
'Иванов И.И.' '' 'Газета"ИЗВЕСТИЯ"' 'Строка символов'
Примеры описания переменных строковых типов:
Var
s1, s2 : ShortString [12];
st1, st2 : AnsiString [580];
ChMassiv: array [1..15] of String;
3.6. Строковый тип PChar
Для связи с функциями Windows в язык Object Pascal введен новый тип строк –
PChar-строки с завершающим нулем. В обычной и привычной для прежних версий
языка String-строке нулевой байт отведен для хранения реального количества
символов этой строки, а сами символы последовательно располагаются начиная
с первого байта. В PChar-строке, наоборот, символы располагаются начиная с
нулевого байта, а их последовательность заканчивается завершающим нулем.
Строки PChar можно объявлять как обычные символьные массивы. Например,
строку длины 3000 плюс один байт, зарезервированный под завершающий нуль,
можно определить следующим образом:
Var
s: array[1 .. 3000] of Char;
П р и м е ч а н и е. Без необходимости не используйте PChar-строки.
Строковые String-типы и функции для обработки таких строк хорошо отлажены,
они легче в использовании, и, как правило, надежнее PChar-строк.
3.7. Динамические PString-строки
Этот тип строк так же, как PChar, введен в язык для обращения к функциям
Windows. Подробнее PString-строки описаны далее.
3.8. Перечислимые типы
Этот тип переменных может быть сформирован самим пользователем. Он
создается простым перечислением возможных значений переменной.
Примеры перечислимых типов:
Type
MaleNames = (Ivan, Peter, Serge);
SwithOpts = (On, Off);
SostTypes = (Active, Passive, Waiting);
Sides = (Left, Right, Top, Down);
В первом примере переменная объявленного типа может принимать значение
одного из трех мужских имен. Во втором – одно из двух значений – On
(включено) или Off (выключено) и т. д.
Имена из списка перечислимого типа считаются константами соответствующего
перечислимого типа и в пределах блока не должны повторяться.
Например, описания вида
Type
Days1 = (Monday, Wednesday, Friday);
Days2 = (Tuesday, Wednesday, Saturday, Sunday);
содержат ошибку, т. к. константа Wednesday используется дважды.
3.9. Ограниченные типы
Этот тип формируется самим пользователем посредством сужения значений ранее
определенного или стандартного типов.
Примеры:
Type
Diapason = 1 .. 30;
Letters = 'a' .. 'v';
TList = (t1, t2, t3, t4, t5, t6,t7, t8, t9, t10);
TlistSmall = (t2 .. t8);
3.10. Вариантный тип (Variant)
Тип Variant – особый тип языка Object Pascal. Значение этого типа наперед
неизвестно, однако может быть определено через присваиваемое значение одним
из следующих типов: все целые, вещественные, строковые, символьные и
логические типы, за исключением Int64.
Следующие примеры демонстрируют использование типа Variant и механизм
конверсии типов при смешивании его с другими типами. Сопроводи-тельные
комментарии поясняют правила, при помощи которых операторы присваивания
меняют тип Variant-переменных в зависимости от принятого ими значения.
Var
V1, V2, V3, V4, V5
| | скачать работу |
Программа на Delphi |