Базовым языком программирования в Delphi служит язык Object Pascal — объектно–ориентированный Паскаль. Продуктивным ядрышком, из которого буйно разрослось ветвистое дерево Delphi, был старый и добрый (20 лет — это уже история!) язык программирования Turbo Pascal. Принципиальное различие систем программирования Delphi и Turbo Pascal (Turbo — торговая марка разработчика системы фирмы Borland International, Inc. (США)) состоит в использовании экранного режима монитора: Turbo Pascal ориентирован на текстовый режим операционной системы DOS, a Delphi, как и Windows, — на графический. Тем не менее программы, написанные на языке Turbo Pascal и не использующие графические средства, после небольшой настройки могут исполняться в среде Delphi. Изобразительные возможности Delphi позволяют увидеть на экране монитора, как в буквальном смысле "оживают" те или иные конструкции языка, а это немаловажно для его быстрого и эффективного усвоения (поистине: "лучше один раз увидеть, чем сто раз услышать").
Delphi — мощная современная система программирования, имеющая многочисленные приложения везде, где сегодня применяются компьютеры — от инженерных и научных расчетов до автоматизации управленческой деятельности. Прежде всего — это инструмент, инструмент довольно тонкий и универсальный, способный на многое в руках опытного мастера. Сегодня разнообразие приложений Delphi таково, что изучить все возможности этой системы, даже в рамках школьного факультатива, не представляется возможным. В этом смысле Delphi можно сравнить с горой, путь к вершине которой далек и долог. Но разве созерцание прекрасных цветов и порхающих диковинных бабочек на склонах этой горы не столь же увлекательное занятие, как и обозрение с недоступной пока вершины убегающего вдаль горизонта? Delphi — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль начиная с версии 5.5 добавил в Паскаль объектно-ориентированные свойства, а Delphi — объектно-ориентированный язык программирования с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, и воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию. Также отличительным свойством Дельфи от С++ является отсутствие возможности располагать объекты в стеке (объекты, унаследованные из Турбо Паскаля, располагаться в стеке могут) — все объекты попадают в динамически выделяемую область (кучу).
Де-факто Object Pascal, а затем и язык Delphi являются функциональными наращиваниями Turbo Pascal. Об этом говорят обозначения версий компилятора. Так, в Delphi 7 компилятор имеет номер версии 15.0 (Последняя версия Borland Pascal / Turbo Pascal обозначалась 7.0, в Delphi 1 компилятор имеет версию 8.0, в Delphi 2 — 9.0, и т. д. Номер версии 11.0 носит компилятор Pascal, входивший в состав среды C++Builder).
Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.
Версия 1 была предназначена для разработки под 16-ти разрядную платформу Win16;
Версии со второй компилируют программы под 32-х разрядную платформу Win32;
Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux;
Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);
Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET;
Delphi for .NET — среда разработки Delphi, а так же язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET.
Первая версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET. В настоящее время, в Delphi 2006, можно писать приложения для .NET используя стандартную библиотеку классов .NET, VCL для .NET. Среда также позволяет писать .NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием билиотек VCL и CLX. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0.
Файлы, составляющие приложение Delphi:
DPR — файл проекта. Содержит он основной код программы, ссылки на все окна (формы) проекта и относящиеся к ним модули. В нем также содержится код инициализации. Имеет одноименное название с проектом.
PAS — pascal файл. Он содержит текст, который вы видите в окне редактора кода так называемого модуля программы.
DFM — delphi form. Представляет собой файл с полными данными о проектировщике формы. Позиция, размер, расположенные компоненты и пр. Форма приложения является неотъемлемой частью модуля PAS и имеет то же название.
DCU — двоичный файл модуля. Имеет одноименное название с модулем.
RES — ресурсный файл. Содержит в себе иконки, значки указателя мыши, картинки, звуки.
DOF, DSK — содержат настройки проекта.
CFG — содержит настройки конфигурации проекта.
EXE — откомпилированная программа. Сохраняется автоматически при запуске проекта на выполнение. Обновляется в момент компиляции. Имеет одноименное название проекта. Полностью самостоятельное приложение.
По ходу работы в среде Delphi могут автоматически создаваться файлы, имеющие расширение, начинающееся символом ~ (тильда). Это резервные копии файлов, которые создаются при их повторном сохранении.
Рассмотрим, как выглядят тексты модулей. Ниже приведен текст модуля с пустой формой. Подробные комментарии в этом тексте поясняют, куда и что в этот код можно добавлять.
unit Unitl;
interface // Открытый интерфейс модуля
(Список подключаемых модулей)
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
{Объявление класса формы}
type
TForml = class(TForm)
private // Закрытый раздел класса
{ Private declarations }
{Сюда могут помещаться объявления переменных, функций и процедур, включаемых в класс формы, но не доступных для других модулей}
public // Открытый раздел класса
{ Public declarations }
{Сюда могут помещаться объявления переменных, функций и процедур, включаемых в класс формы и доступных для других модулей}
end;
var
Forml: TForml;
{Сюда могут помещаться объявления типов, констант, переменных, функций и процедур, к которым будет доступ из других модулей, но которые не включаются в класс формы}
implementation // Реализация модуля
($R * .DFM}
{Сюда могут помещаться предложения uses, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Тут же должны быть реализации всех объявленных в разделе interface функций и процедур, а также могут быть реализации любых дополнительных, не объявленных ранее функций и процедур.}
end.
Модуль начинается с ключевого слова unit, после которого пишется имя модуля. Оно совпадает с именем файла, в которым вы сохранили свой модуль. По умолчанию для первого модуля имя равно Unitl, для второго Unit2 — и т.д.
Текст модуля состоит из двух основных разделов: interface — открытый интерфейс модуля, и implementation — реализация модуля. Все, что помещается непосредственно в раздел interface (типы, переменные, константы, функции, процедуры), может быть использовано другими модулями программы. Все, что помещается в раздел implementation — внутреннее дело модуля. Внешние модули не могут видеть типы, переменные, константы, функции и процедуры, размещенные в разделе реализации.
В разделе interface после предложения uses, содержащего список подключаемых модулей, вы можете видеть заготовку объявления класса вашей формы, подготовленную Delphi. Имя класса вашей формы — TForml. Класс содержит два раздела: private — закрытый раздел класса, и public — открытый раздел класса. То, что вы или Delphi объявите в разделе public, будет доступно для других классов и модулей. То, что объявлено в разделе private, доступно только в пределах данного модуля.
После завершения объявления класса формы можно увидеть строки
var
Forml: TForml;
Это объявляется переменная Forml класса TForml, т.е. объявляется форма как объекта класса TForml.
Затем следует пока пустой раздел реализации implementation, в котором содержится только директива компилятора.
В модуль можно ввести еще два раздела, кроме interface и implementation: разделы initialization и finalization
2 Специальная часть
2.1 Постановка задачи
Поставленная задача заключается в следующем: необходимо создать программу, которая бы проводила тестирование с целью выявления типа темперамента. Программа должна помочь психологам в проведении тестирования студентов.
Обработка результатов производится следующим образом: имеется типизированный файл, с общим количеством утверждений, равным 56(см. Приложение А) и вариантами ответов "Да" или "Нет". Эти утверждения делятся на группы: от 1 до 14 – первая группа, описывающая холерика, от 15 до 28 - вторая группа, описывающая сангвиника, от 29 до 42 – третья группа, описывающая флегматика, от 43 до 56 - четвертая группа, описывающая меланхолика. Пользователю предоставляется возможность отвечать на них либо "Да", либо "Нет". Далее подсчитывается количество положительных ("Да") и количество отрицательных ("Нет") ответов в каждой группе утверждений. В той группе, где количество положительных ("Да") ответов больше всего, тот тип темперамента и преобладает, т.е. является ярко выраженным, он выводится в отдельное окно (см. рис.1).
В случае, если количество положительных ответов в группах утверждений окажется равным, то при прохождении первой группы утверждений, второй и последующих, выведется тот темперамент, который соответствует первой группе утверждений.
2.2 Схема алгоритма основной программы