Главная страница
Навигация по странице:

  • 4.17. Логические типы данных Boolean. В Турбо Паскале логический тип данных

  • Значению True соответствует Размер памяти для логического типа данных

  • Логические переменные

  • Характеристики символьных типов Название типа Идентификатор

  • Размер в байтах Символ кода ANSI AnsiChar

  • Unicode WideChar

  • 4.19. Строковые типы для длинных строк: AnsiString = String, WideString.

  • 4.20. Строковые типы для коротких строк: ShortString, String[N].

  • 4.21. Совместимость типов при присвоениях.

  • 4.22. Тип Variant и его использование.

  • Структура программы и типы в языке FreePascal


    Скачать 0.55 Mb.
    НазваниеСтруктура программы и типы в языке FreePascal
    Дата20.12.2022
    Размер0.55 Mb.
    Формат файлаdocx
    Имя файла3lab.docx
    ТипЛабораторная работа
    #855493
    страница5 из 5
    1   2   3   4   5

    4.16. Тип TDateTime и его использование.

    Тип дата-время определяется стандартным идентификатором TDateTime и предназначен для одновременного хранения и даты, и времени. Во внутреннем представлении он занимает 8 байт и подобно currency представляет собой вещественное число с фиксированной дробной частью: в целой части числа хранится дата, в дробной - время. Дата определяется как количество суток, прошедших с 30 декабря 1899 года, а время - как часть суток, прошедших с 0 часов, так что значение 36444,837 соответствует дате 11.10.1999 и времени 20:05. Количество суток может быть и отрицательным, однако значения меньшие -693594 (соответствует дате 00.00.0000 от Рождества Христова) игнорируются функциями преобразования даты к строковому типу.

    Над данными типа TDateTime определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов.

    Поскольку тип TDateTime совместим с форматом вещественных чисел, можно без труда определить дату, отстоящую от заданной на сколько-то дней вперед или назад: для этого достаточно соответственно прибавить к заданной дате или отнять от нее нужное целое число.

    4.17. Логические типы данных Boolean.

    В Турбо Паскале логический тип данных носит название BOOLEAN. Значением логического типа может быть одна из двух констант FALSE (ложь) или TRUE (истина). Для них справедливы правила:

    Ord(false)=0
    Ord(true)=1
    FalseSucc(false)=true
    Pred(true)=false

    Название логического типа данных

    Значению False соответствует

    Значению True соответствует

    Размер памяти для логического типа данных

    Boolean

    Число 0

    1

    1 байт

    ByteBool

    Число 0

    Любое число, отличное от 0

    1 байт

    WordBool

    Число 0 в обоих байтах

    2 байта

    LongBool

    Число 0 во всех байтах

    4 байта

    Логические переменные должны быть описаны предложением:

    Var <имя_переменной>: boolean;

    4.18. Символьные типы: AnsiChar = Char, WideChar.

    Символьный тип данных Char — тип данных, значениями которого являются одиночные символы. Данный тип может содержать всего один любой символ (Например: «*», «/», «.», «!» и другие). Каждый такой символ занимает 8 бит памяти, всего существует 256 восьмибитовых символов. Все символы, используемые символьным типом Char записаны в таблице символов ASCII (American Standart Code for Information Interchange) или Американский стандарт кода для обмена информацией.
    Символьные константы заключаются в апострофы, например '.', '*', '7', 's'. Также символьную константу можно записать с помощью символа — «решетки», например #185 — выведет символ под номером 185 из таблицы ASCII (это символ '№'). 

    Таблица 1. Характеристики символьных типов

    Название типа

    Идентификатор

    Размер в байтах

    Символ кода ANSI

    AnsiChar

    1 байт

    Символ кода Unicode

    WideChar

    2 байта

    Родовой символьный тип

    Char

    1 байт

     Типы AnsiChar и WideChar имеют постоянное представление в памяти, которое не будет изменяться в различных реализациях Object Pascal. Родовой символьный тип Char в данной реализации соответствует типу AnsiChar. Заметим, что первые 256 символов кода Unicode совпадают с кодом ANSI.

    4.19. Строковые типы для длинных строк: AnsiString = String, WideString.

    Строки AnsiString, называемые также длинными строками (long string), наиболее предпочтительны для большинства применений. Строковые типы могут смешиваться в операторах присваивания и выражениях. При этом компилятор автоматически выполняет требуемые преобразования. Однако при передаче в качестве var и outпараметров подпрограмм они должны иметь соответствующий тип. Длинные строки AnsiString являются динамически размещаемыми строками, максимальная длина которых ограничена только имеющейся памятью. Так как переменные AnsiString являются указателями, то на одну строку может ссылаться более одного указателя, что учитывается компилятором для экономии памяти. Когда переменная уничтожается или ей присваивается новое значение, то число указателей на старую строку уменьшается на 1 (reference-counting). Когда оно становится равным нулю, память автоматически освобождается. 


    Тип

    Число символов

    Объем занимаемой памяти

    Назначение

    ShortString

    255

    от 2 до 256 байт

    для обратной совместимости

    AnsiString

    около 231

    от 4 байт до 2ГБ

    8-битовые символы ANSI

    WideString

    около 230

    от 4 байт до 2ГБ

    символы Unicode; параметры методов интерфейсов в СОМ технологиях

    4.20. Строковые типы для коротких строк: ShortString, String[N].

    Короткие строки ShortString. Предназначены только для обратной совместимости, отчасти потому, что занимают в памяти всегда 256 байт независимо от фактического числа символов (если строка описана без задания максимального числа символов). Функция High возвращает максимальный размер строки, а Low – нуль.

    4.21. Совместимость типов при присвоениях.

    Одним из требований в языке программирования Pascal является следующее: в выражениях (в том числе при сравнении) должны использоваться операнды с совместимыми типами. Типы совместимы, если выполняется хотя бы одно из условий.

    • Оба типа эквивалентны.

    • Оба типа целые.

    • Оба типа вещественные.

    • Один из типов имеет интервальный тип, а другой тип является для него базовым:

    type

    tp1 = integer;

    tp2 = -1..1000;

    • Оба типа являются диапазонами одного и того же базового типа

    • Один тип строковый, а второй — либо строковый, либо символьный, либо упакованный символьный массив.

    • Оба типа — упакованные символьные массивы с одинаковым числом элементов.

    • Оба типа являются множествами с совместимыми базовыми типами

    • Один тип является ссылочным, а второй — либо ссылочный, либо бестиповый указатель.

    • Оба типа — это процедурные типы с одним и тем же числом параметров, причем типы параметров должны быть эквивалентными (в соответствии с их порядком следования), а для функциональных типов также должны быть эквивалентными типы результатов.

    4.22. Тип Variant и его использование.

    Компилятором FPC поддерживается тип variant. Для того чтобы включить поддержку вариантного типа, необходимо упомянуть в предложении uses модуль variants во всех модулях, в которых используется тип variant. Более того, компилятор должен быть в режимах Delphi или Objfpc.

    Предназначен для использования в том случае, когда на этапе компиляции тип данных не известен, или может уточняться при выполнении программы. Введен для поддержки технологии OLE (Object Linking and Embedding – Связывание и внедрение объектов). Занимает в памяти дополнительно 2 байта для информации о фактическом типе данных. Эта информация позволяет компилятору создать код, осуществляющий при исполнении программы необходимые преобразования данных. С переменной  типа Variant совместимы (могут быть  в нее помещены) типы:

    • целые или вещественные (кроме Int64),

    • логические,

    • строки,

    • время и/или дата,

    • OLE-объект (объект, переносимый системой из других приложений через буфер),

    • массив произвольной размерности и длины, содержащий элементы перечисленных типов.
    1   2   3   4   5


    написать администратору сайта