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

  • 2.1. Алфавит 2.1.1. Буквы

  • 2.1.3. Слова-идентификаторы

  • 2.2. Данные 2.2.1. Понятие типа данных

  • 2.3. Простые типы данных 2.3.1. Целочисленные типы данных

  • Учебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1


    Скачать 2.61 Mb.
    НазваниеУчебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1
    Дата15.01.2023
    Размер2.61 Mb.
    Формат файлаdoc
    Имя файлаlab_OOTP.doc
    ТипУчебное пособие
    #886736
    страница3 из 33
    1   2   3   4   5   6   7   8   9   ...   33
    Глава 2. Основы языка Delphi

    В основе среды Delphi лежит одноименный язык программирования — Delphi, ранее известный как Object Pascal. При разработке программы среда Delphi выполняет свою часть работы — создает пользовательский интерфейс согласно вашему дизайну, а вы выполняете свою часть — пишите обработчики событий на языке Delphi. Объем вашей работы зависит от программы: чем сложнее алгоритм, тем тяжелее ваш труд. Необходимо заранее усвоить, что невозможно заставить средство разработки делать всю работу за вас. Некоторые задачи среда Delphi действительно полностью берет на себя, например создание простейшей программы для просмотра базы данных. Однако большинство задач не вписываются в стандартные схемы — вам могут понадобиться специализированные компоненты, которых нет в палитре компонентов, или для задачи может не оказаться готового решения, и вы вынуждены будете решать ее старым дедовским способом — с помощью операторов языка Delphi. Поэтому мы настоятельно рекомендуем вам не игнорировать эту главу, поскольку на практике вы не избежите программирования. Мы решили изложить язык в одной главе, не размазывая его по всей книге, чтобы дать вам фундаментальные знания и обеспечить быстрый доступ к нужной информации при использовании книги в качестве справочника.

    2.1. Алфавит

    2.1.1. Буквы

    Изучая в школе родной язык, вы начинали с букв, слов и простейших правил синтаксиса. Для постижения основ языка Delphi мы предлагаем вам сделать то же самое.

    Текст программы на языке Delphi формируется с помощью букв, цифр и специальных символов.

    Буквы — это прописные и строчные символы латинского алфавита и символ подчеркивания:

    a b c d e f g h i j k l m n o p q r s t u v w x y z

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _

    Цифры представлены стандартной арабской формой записи:

    0 1 2 3 4 5 6 7 8 9

    Специальные символы

    + - * / = < > [ ] , . : ; ' ( ) { } @ # $ & ^

    применяются в основном в качестве знаков арифметических операций, разделителей, ограничителей и т.д. Из специальных символов формируются составные символы:

    <> <= >= .. (. .) (* *) // :=

    Они служат, в частности, для обозначения операций типа "не равно", "больше или равно", указания диапазонов значений, комментирования программы, т.д.

    Все перечисленные знаки отражены на клавиатуре и при нажатии соответствующих клавиш появляются на экране. Как вы видите, среди них нет русских букв, хотя на клавиатуре вашего компьютера они наверняка присутствуют. Дело в том, что такие буквы в языке Delphi несут чисто информационную нагрузку и используются только в качестве данных или при написании комментария к программе.

    2.1.2. Числа

    Одно и то же число можно записать самыми разными способами, например:

    15 { целое }

    15.0 { вещественное с фиксированной точкой }

    1.5E01 { вещественное с плавающей точкой }

    $F { шестнадцатиричное }

    В языке Delphi имеется возможность применять все способы записи, но чаще всего используют целые и вещественные числа.

    Целые числа состоят только из цифр и знака + или . Если знак опущен и число не равно 0, то оно рассматривается как положительное, например:

    0 { 0 интерпретируется как целое число }

    17 { положительное целое число }

    -39 { отрицательное целое число }

    Вещественные числа содержат целую и дробную части, разделенные точкой:

    0.0 { 0 интерпретируется как вещественное число }

    133.5 { положительное вещественное число }

    -0.7 { отрицательное вещественное число }

    Вещественные числа могут быть представлены в двух формах: с фиксированной и плавающей точкой.

    Форма с фиксированной точкой совпадает с обычной записью чисел, например:

    27800 { точка в конце числа опущена }

    0.017

    3.14

    Форма с плавающей точкой используется при работе с очень большими или очень малыми числами. В этой форме число, стоящее перед буквой E, умножается на 10 в степени, указанной после буквы E:

    7.13E+14 { 7.13 x 1014 }

    1.7E-5 { 1.7 x 10-5 }

    3.14E00 { 3.14 x 100 = 3.14}

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

    В этой книге мы чаще будем использовать форму с фиксированной точкой, так как она воспринимается лучше второй формы и совпадает с привычной математической записью чисел.

    2.1.3. Слова-идентификаторы

    Неделимые последовательности символов алфавита образуют слова (идентификаторы). Идентификатор начинается с буквы и не должен содержать пробелов. После первого символа допускаются буквы и цифры. Напоминаем, что символ подчеркивания считается буквой.

    При написании идентификаторов могут использоваться как прописные, так и строчные буквы (между ними не делается различий). Длина идентификатора может быть любой, но значимы только первые 255 символов (вполне достаточный предел, не так ли). Примеры написания идентификаторов приведены ниже:

    Правильно

    Неправильно

    RightName

    Wrong Name

    E_mail

    E–mail

    _5inches

    5inches

    Все идентификаторы подразделяются на зарезервированные слова, стандартные директивы, стандартные идентификаторы и идентификаторы программиста.

    Зарезервированные (ключевые) слова составляют основу языка Delphi, любое их искажение вызовет ошибку компиляции. Вот полный перечень зарезервированных слов:

    and

    as

    asm

    array

    begin

    case

    class

    const

    constructor

    destructor

    dispinterface

    div

    do

    downto

    else

    end

    except

    exports

    file

    finally

    finalization

    for

    function

    goto

    if

    implementation

    in

    inherited

    inline

    initialization

    interface

    is

    label

    library

    mod

    nil

    not

    object

    of

    or

    out

    packed

    procedure

    program

    property

    raise

    record

    repeat

    resourcestring

    set

    shl

    shr

    string

    then

    threadvar

    to

    try

    type

    unit

    until

    uses

    var

    while

    with

    xor

    Стандартные директивы интерпретируются либо как зарезервированные слова, либо как идентификаторы программиста в зависимости от контекста, в котором используются. Вот они:

    absolute

    abstract

    assembler

    at

    automated

    cdecl

    default

    dispid

    dynamic

    export

    external

    far

    forward

    index

    message

    name

    near

    nodefault

    on

    overload

    override

    pascal

    private

    protected

    public

    published

    read

    register

    reintroduce

    resident

    stdcall

    stored

    virtual

    write

    Стандартные идентификаторы — это имена стандартных подпрограмм, типов данных языка Delphi, т.д. В качестве примера приведем имена подпрограмм ввода и вывода данных и нескольких математических функций. Вы, без сомнения, сами угадаете их назначение:

    Read Write Sin Cos Exp Ln

    Идентификаторы программиста определяются программистом, т.е вами, и носят произвольный характер. Если идентификатор состоит из двух или более смысловых частей, то для удобства их лучше выделять заглавной буквой или разделять символом подчеркивания:

    LowProfit AverageProfit HighProfit

    Price_One Price_Two Price_Sum

    Имя идентификатора обязательно должно нести смысловую нагрузку, тогда вы сможете читать программу как книгу и не потратите время на расшифровку непонятных обозначений.

    2.1.4. Комментарии

    С помощью комментариев вы можете пояснить логику работы своей программы. Комментарий пропускается компилятором и может находиться в любом месте программы. Комментарием является:

    { Любой текст в фигурных скобках }

    (* Любой текст в круглых скобках со звездочками *)

    // Любой текст от двойной наклонной черты до конца строки

    Если за символами { или (* сразу идет знак доллара $, то текст в скобках считается не комментарием, а директивой компилятора. Большинство директив компилятора являются переключателями, которые включают или выключают те или иные режимы компиляции, оптимизацию, контроль выхода значений из допустимого диапазона, переполнение, т.д. Примеры таких директив:

    {$OPTIMIZATION ON}

    {$WARNINGS ON}

    {$RANGECHECKS OFF}

    2.2. Данные

    2.2.1. Понятие типа данных

    Программа в процессе выполнения всегда обрабатывает какие-либо данные. Данные могут представлять собой целые и дробные числа, символы, строки, массивы, множества и др. Так как компьютер всего лишь машина, для которой данные — это последовательность нулей и единиц, он должен абсолютно точно "знать", как их интерпретировать. По этой причине все данные в языке Delphi подразделены на типы. Для описания каждого типа данных существует свой стандартный идентификатор: для целых — Integer, для дробных — Real, для строк — string и т.д. Программист может образовывать собственные типы данных и давать им произвольные имена (о том, как это делается, мы поговорим чуть позже).

    Тип данных показывает, какие значения принимают данные и какие операции можно с ними выполнять. Каждому типу данных соответствует определенный объем памяти, который требуется для размещения данных. Например, в языке Delphi существует тип данных Byte. Данные этого типа принимают значения в целочисленном диапазоне от 0 до 255, могут участвовать в операциях сложения, вычитания, умножения, деления, и занимают 1 байт памяти.

    Все типы данных в языке Delphi можно расклассифицировать следующим образом:

    • простые типы данных. Они в свою очередь подразделяются на порядковые и вещественные типы данных. К порядковым типам относятся целочисленные, символьные, булевские, перечисляемые и интервальные типы данных;

    • временной тип данных. Служит для представления значений даты и времени;

    • строковые типы данных. Служат для представления последовательностей из символов, например текста;

    • составные типы данных (в некоторых источниках — структурированные типы данных). Формируются на основе всех остальных типов. К ним относятся массивы, множества, записи, файлы, классы и ссылки на классы;

    • процедурные типы данных. Позволяют манипулировать процедурами и функциями как данными программы;

    • указательные типы данных. Данные этих типов хранят адреса других данных, с их помощью организуются различные динамические структуры: списки, деревья и т.д.;

    • тип данных с непостоянным типом значений. Служит для представления значений, тип которых заранее неизвестен; с его помощью легко организуется работа со списком разнотипных значений;

    Некоторые предопределенные типы данных делятся на фундаментальные и обобщенные типы. Данные фундаментальных типов имеют неизменный диапазон значений и объем занимаемой памяти на всех моделях компьютеров. Данные обобщенных типов на различных моделях компьютеров могут иметь разный диапазон значений и занимать разный объем памяти. Деление на фундаментальные и обобщенные типы характерно для целых, символьных и строковых типов данных.

    По ходу изложения материала мы рассмотрим все перечисленные типы данных и более подробно объясним их смысл и назначение в программе.

    2.2.2. Константы

    Данные, независимо от типа, имеют некоторое значение и в программе предстают как константы или переменные. Данные, которые получили значение в начале программы и по своей природе изменяться не могут, называются константами. Константами, например, являются скорость света в вакууме и соотношение единиц измерения (метр, сантиметр, ярд, фут, дюйм), которые имеют научно обоснованные или традиционно принятые постоянные значения. Константы описываются с помощью зарезервированного слова const. За ним идет список имен констант, каждому из которых с помощью знака равенства присваивается значение. Одно присваивание отделяется от другого с помощью точки с запятой. Тип константы распознается компилятором автоматически, поэтому его не надо указывать при описании. Примеры констант:

    const

    DelphiLanguage = 'Object Pascal';

    KylixLanguage = DelphiLanguage;

    Yard = 914.4;

    Foot = 304.8;

    После такого описания для обращения к нужному значению достаточно указать лишь имя соответствующей константы.

    Значение константы можно задавать и выражением. Эту возможность удобно использовать для комплексного представления какого-либо понятия. Например, временной промежуток, равный одному месяцу, можно задать так:

    const

    SecondsInMinute = 60;

    SecondsInHour = SecondsInMinute * 60;

    SecondsInDay = SecondsInHour * 24;

    Очевидно, что, изменив базовую константу SecondsInMinute, можно изменить значение константы SecondsInDay.

    При объявлении константы можно указать ее тип:

    const

    Percent: Double = 0.15;

    FileName: string = 'HELP.TXT';

    Такие константы называются типизированными; их основное назначение — объявление константных значений составных типов данных.

    2.2.3. Переменные

    Переменные в отличие от констант могут неограниченное число раз менять свое значение в процессе работы программы. Если в начале программы некоторая переменная X имела значение 0, то в конце программы X может принять значение 10000. Так бывает, например, при суммировании введенных с клавиатуры чисел.

    Переменные описываются с помощью зарезервированного слова var. За ним перечисляются идентификаторы переменных, и через двоеточие указывается их тип. Каждая группа переменных отделяется от другой группы точкой с запятой. Например:

    var

    Index: Integer; // переменная целого типа данных

    FileName: string; // переменная строкового типа данных

    Sum, Profit: Double; // группа переменных вещественного типа данных

    В теле программы переменной можно присвоить значение. Для этого используется составной символ :=, например:

    Sum := 5000.0; // переменной Sum присваивается 5000

    Percent := 0.15; // переменной Percent присваивается 0.15

    Profit := Sum * Percent; // вычисляется произведение двух переменных

    // и его результат присваивается переменной

    // Profit

    Вы можете присвоить значение переменной непосредственно при объявлении:

    var

    Index: Integer = 1;

    Delimiter: Char = ';';

    Объявленные таким образом переменные называются инициализированными. На инициализированные переменные накладывается ограничение: они не могут объявляться в подпрограммах (процедурах и функциях). Если переменная не инициализируется при объявлении, то по умолчанию она заполняется нулем.

    Каждый используемый в программе элемент данных должен быть описан в разделе const или var. Исключение составляют данные, заданные непосредственно значением, например:

    Write(100, 200); // 100 и 200 - данные, заданные значением

    2.3. Простые типы данных

    2.3.1. Целочисленные типы данных

    Целочисленные типы данных применяются для описания целочисленных данных. Для решения различных задач могут потребоваться различные целые числа. В одних задачах счет идет на десятки, в других — на миллионы. Соответственно в языке Delphi имеется несколько целочисленных типов данных, среди которых вы можете выбрать наиболее подходящий для своей задачи (таблица 2.1).

    Тип данных

    Диапазон значений

    Объем памяти (байт)

    Фундаментальные типы данных

    Byte

    0..255

    1

    Word

    0..65535

    2

    Shortint

    –128..127

    1

    Smallint

    –32768..32767

    2

    Longint

    –2147483648..2147483647

    4

    Longword

    0.. 4294967295

    4

    Int64

    –2^63..2^63–1

    8

    Обобщенные типы данных

    Cardinal

    0.. 4294967295

    4*

    Integer

    –2147483648..2147483647

    4*

    Таблица 2.1. Целочисленные типы данных

    * Примечание: количество байт памяти, требуемых для хранения переменных обобщенных типов данных, приведено для 32-разрядных процессоров семейства x86.

    Пример описания целочисленных данных:

    var

    X, Y: Integer;

    TextLength: Cardinal;

    FileSize: Longint;

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

    1   2   3   4   5   6   7   8   9   ...   33


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