4623

Способы описания различных типов данных в программах на языке Delphi

Практическая работа

Информатика, кибернетика и программирование

Введение Любые данные, т.е. константы, переменные, значения функций или выражения, в Delphi характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций...

Русский

2012-11-23

477 KB

24 чел.

Введение

Любые данные, т.е. константы, переменные, значения функций или выражения, в Delphi характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти компьютера.

Delphi характеризуется разветвленной структурой типов данных: простые и структурированные, строки, указатели, процедурные и др.

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

Целью практического занятия является изучение основных способов описания различных типов данных в программах на языке Delphi.


1. ЗНАКОМСТВО С ИНТЕРФЕЙСОМ DELPHI

1.1. Начало работы в среде программирования Delphi

Среда программирования — это комплекс программ, разработанных для того, чтобы создать удобное окружение для реализации концепции быстрой разработки приложений RAD (Rapid Application Development). 

Delphi – это комбинация нескольких современных технологий программирования:

  •  высокопроизводительный компилятор в машинный код;
  •  объектно-ориентированная модель компонент;
  •  визуальное построение приложений из программных прототипов;
  •  масштабируемые средства для построения баз данных;
  •  интеграция в сетевые технологии.

Среда программирования Delphi включает:

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

Для того чтобы начать работу в среде Delphi, дважды щелкните кнопкой мыши на ее пиктограмме на рабочем столе Windows или выполните команды главного меню: Пуск Программы  Borland Delphi 7 Delphi 7.

Главный графический интерфейс Delphi (рис. 1) включает:

  1.  Главное окно, содержащее строку заголовка, меню команд, панели инструментов и палитры компонентов.
  2.  Окно формы (Form Designer).
  3.  Окно редактора кода (Editor Window).
  4.  Инспектор объектов (Object Inspector).
  5.  Окно просмотра дерева объектов (Object TreeView).

При запуске программы сразу создается новый проект с именем Form1 – полностью работающее приложение, но пока не имеющее никаких полезных функций. Все необходимые процедуры и функции нужно будет добавить в процессе разработки нового приложения.

Проект — это набор файлов, создаваемых программистом, используя которые впоследствии компилятор создаст исполняемый файл программы (ЕХЕ-файл). Проект включает:

  •  файл конфигурации проекта (CFG-файл).
  •  файл описания проекта (DOF-файл) (содержит опции проекта);
  •  файл главного модуля (DPR-файл) – это сам проект, в нем находится описание используемых в проекте модулей и описание инициализации программы;
  •  файл ресурсов проекта (RES-файл) (например, такие как иконки, курсоры и т.п.);
  •  файл описания формы (DFM-файл) (содержит визуальную информацию о форме);
  •  вспомогательный файл модуля (DDP-файл);
  •  файл откомпилированного модуля (DCU-файл);
  •  файл модуля формы, в котором находятся основной код приложения, в том числе функции обработки событий на компонентах формы (PAS-файл);

Так как любой проект представляет собой набор файлов, то рекомендуется для каждого проекта создавать отдельную папку стандартным для Windows образом.

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

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

Для открытия файла можно использовать команды меню File (Файл)  Open (Открыть) либо щелкнуть мышью на кнопке  панели Standart.

Для повторного открытия файла можно использовать команды меню File (Файл)  Reopen (Повторить открытие).

Команды сохранения результатов работы сосредоточены в меню File (Файл):

  •  Save (Сохранить) (кнопка ) – используется для сохранения файла из активного окна, находящегося на переднем плане;
  •  Save As (Сохранить как) – используется для сохранения файла из активного окна, находящегося на переднем плане, под новым именем;
  •  Save Project As (Сохранить проект как) – используется для сохранения проекта под новым именем;
  •  Save All (Сохранить все) (кнопка ) – используется для сохранения всех файлов проекта. Когда сохраняется проект, имя проекта сохраняется в файле с расширением .dpr и используется при компиляции программы.

Обратите внимание на то, имена файлов модуля (pas-файл) и проекта (dpr-файл) должны быть разными. Имя генерируемого компилятором исполняемого файла совпадает с именем проекта. Поэтому файлу проекта следует присвоить такое имя, которое, по вашему мнению, должен иметь исполняемый файл программы, а файлу модуля — какое-либо другое имя, например, полученное путем добавления к имени файла проекта порядкового номера модуля.

Панели инструментов, содержащие кнопки часто используемых команд, сгруппированы по функциональному признаку (рис. 2):

  •  Standart (Стандартная) – кнопки общих задач: открытие, сохранение и создание проектов Delphi, и ассоциированных с ними файлов;
  •  View (Вид) – кнопки, предназначенные для создания новых форм, просмотра форм и модулей кода, а также для переключения между формой и модулем кода;
  •  Debug (Отладка) – кнопки для интерактивного тестирования и отладки программ;
  •  Custom (Пользовательская) – по умолчанию содержит кнопку вызова справочной системы Delphi;
  •  Desktop (Рабочий стол) – содержит список имеющихся раскладок рабочего стола и кнопки сохранения текущего вида или установки параметров. С помощью этой панели программист может манипулировать раскладками рабочего стола, определяющими видимость, размеры, стыковку и расположение окон, а также состав инструментов Delphi;
  •  Internet (Интернет) – кнопки, помогающие создавать Веб-страницы и модули использования возможностей Интернета.

Для того чтобы убрать или отобразить какую-либо из панелей, выполните команды меню View (Вид)  Toolbars (Панели инструментов) или щелкните правой кнопкой мыши на любой кнопке. При этом появится ниспадающее меню, где перечислены все доступные панели. Для настройки панелей используется команда Customize (Настройка) этого меню. 

Палитра компонент (Component Palette) представляет собой панель с вкладками (страницами), обеспечивающими быстрый доступ к компонентам VCL (Visual Component Libraryбиблиотека визуальных компонентов) и CLX (Cross-platform Libraryкросс-платформенная библиотека).

Компоненты библиотек организованы в иерархическую структуру и служат «строительными блоками» графического пользовательского интерфейса любого приложения Delphi. Во время выполнения приложения компоненты VCL появляются на экране как элементы управления — кнопки, флажки, списки, поля ввода и т.д.

Палитра компонент позволяет выбрать нужные объекты для размещения в окне формы: первый раз щелкните мышью на одном из компонентов (выбор компонента), а второй раз – в окне формы (вставка компонента). Выбранный объект появится в проектируемом окне и им можно манипулировать с помощью мыши.

Набор и порядок компонент на каждой странице являются конфигурируемыми. Так, можно добавить к имеющимся компонентам новые, изменить их количество и порядок. Для этого следует щелкнуть правой кнопкой мыши по палитре компонент и выбрать в контекстном меню либо команду Tabs (Страницы) для выбора нужной страницы, либо команду Properties (Свойства) для настройки нужной страницы компонент.

На первой странице палитры Standard (Стандартная) размещены часто используемые в проектах компоненты: кнопки, списки, окна ввода и т.д. (рис. 3).

В окне формы программист размещает стандартные компоненты из библиотеки VCL или компоненты собственной разработки, составляющие внутреннее содержание выполняемой программы. Полный перечень имеющихся компонент отображается в диалоге Components (Компоненты) (рис. 4), открываемом командами меню View (Вид) Component List (Список компонентов). Для добавления компонента в форму его следует выбрать в списке и щелкнуть на кнопке Add to form (Добавить в форму).

Форма, собственно, и является тем пользовательским интерфейсом проекта, который будет отображаться на экране во время выполнения приложения. Форму можно ассоциировать с окном, которое по умолчанию называется Form1, и ее можно редактировать в процессе разработки, т.е. изменять размер, цвет, размещать на ней компоненты и удалять их из формы и т.д. Для внесения всех этих изменений существует связанный с формой Инспектор объектов (Object Inspector) (рис. 5).

Если окна формы не видно на экране, выберите команду View (Вид) Forms (Формы) или нажмите клавиши SHIFT+F12. В открывшемся окне View Form (Вид формы) выделите нужную форму и щелкните на кнопке ОК. Если в этом окне нет ни одной формы, значит, в текущем проекте форм нет. В этом случае при необходимости можно добавить в проект новую форму, выбрав для этого пункты меню File (Файл) New (Создать) Form (Форма).

Основными понятиями, используемыми программистом в процессе проектирования приложения, являются:

  •  Класс — законченный фрагмент программы, в котором объединены поля, определяющие состояние объекта, и методы, определяющие функциональные возможности объекта.
  •  Объектэто отдельный элемент программы, который может выполнять определенные задачи, и свойства которого можно изменять. По сути, это конкретный экземпляр класса.
  •  Свойства — это характеристики, определяющие вид, положение и поведение объектов. Изменять состояние объекта можно с помощью свойств.

Все используемые в Delphi компоненты являются объектами. С каждым объектом ассоциирован набор его свойств. Например, форма является объектом с такими свойствами, как Name (Имя), Caption (Заголовок), ClientHeight (Высота), ClientWidth (Ширина), Color (Цвет) и т.д., что отражено в Инспекторе объектов. При создании новой формы Delphi автоматически присваивает каждому свойству значение по умолчанию. В процессе разработки программы программист изменяет свойства компонентов с помощью окна Object Inspector (Инспектор объектов). Для этого нужно щелкнуть на нужном свойстве кнопкой мыши и заменить его текущее значение.

Если окна инспектора объектов на экране не видно, то для его вывода выполните команды меню View (Вид) Object Inspector (Инспектор объектов) или нажмите клавишу F11.

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

После того как выбран необходимый объект, можно не только изменять и настраивать все его свойства, но и создавать обработчики событий для данного объекта, которые будут определенным образом реагировать на такие события, как щелчок кнопки мыши, перемещение мыши, нажатие клавиш и т.п. Для этого на каждой страничке инспектора объектов существуют две вкладки: Properties (Свойства) и Events (События).

Окно Редактора кода (Editor Window) представляет собой полнофункциональный текстовый редактор, с помощью которого можно просматривать и редактировать исходный код программы. Кроме того, редактор кода содержит многочисленные средства, облегчающие создание исходного кода на языке Delphi.

В окне редактора кода каждый модуль выводится на отдельной вкладке. Чтобы открыть модуль в редакторе кода, выберите команду View (Вид) Units (Модуль), или нажмите клавиши CTRL+F12. Затем в окне View Unit (Вид модуля) выделите имя нужного модуля и щелкните на кнопке ОК. На рис. 6 показано окно редактора кода с двумя вкладками — Unit1 и Project1.

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

Чтобы открыть окно Навигатора кода (если его не видно), необходимо выполнить команды меню View (Вид) Code Explorer (Навигатор кода).

Редактор кода выделяет ключевые слова языка программирования (procedure, var, begin, end, if и др.) полужирным шрифтом, что делает текст программы более выразительным и облегчает восприятие структуры программы. Помимо ключевых слов редактор кода выделяет курсивом комментарии.

В процессе разработки программы часто возникает необходимость переключения между окном редактора кода и окном формы. Сделать это можно при помощи кнопки Toglle Form/Unit (Переключатель Форма/Модуль) , находящейся на панели инструментов View (Вид), или нажав клавишу F12. На этой же панели инструментов находятся кнопки View Unit (Вид модуля)  и View Form (Вид формы) , используя которые можно выбрать нужный модуль или форму в случае, если проект состоит из нескольких модулей или форм.

В процессе набора текста программы редактор кода выводит справочную информацию о параметрах процедур и функций, о свойствах и методах объектов.

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

Для объектов редактор кода выводит список свойств и методов. Как только программист наберет имя объекта (компонента) и точку, так сразу на экране появляется окно подсказки — список свойств и методов этого объекта (рис. 8). Перейти к нужному элементу списка можно при помощи клавиш перемещения курсора или набрав на клавиатуре несколько первых букв имени нужного свойства или метода. После того как будет выбран нужный элемент списка и нажата клавиша ENTER, выбранное свойство или метод будут вставлены в текст программы.

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

В процессе набора текста удобно использовать шаблоны кода (Code Templates). Шаблон кода — это инструкция программы, записанная в общем виде. Например, шаблон для инструкции case выглядит так:

case of :;

 :;

 else ;

end;

Редактор кода предоставляет программисту большой набор шаблонов: объявления массивов, классов, функций, процедур, инструкций выбора (if, case), циклов (for, while). Для некоторых инструкций, например if и while, есть несколько вариантов шаблонов.

Для того чтобы в процессе набора текста программы воспользоваться шаблоном кода и вставить его в текст программы, нужно нажать комбинацию клавиш CTRL+J и из появившегося списка выбрать нужный шаблон (рис. 9). Выбрать шаблон можно обычным образом, прокручивая список, или вводом первых букв имени шаблона (имена шаблонов в списке выделены полужирным). Выбрав в списке шаблон, нужно нажать ENTER, и шаблон будет вставлен в текст программы.

Окно Дерево объектов (Object TreeView), так же как и Инспектор объектов, необходимо использовать для повышения скорости работы и получения оперативной информации. Щелчок мыши на объекте в окне дерева объектов выделит этот объект в форме и в Инспекторе объектов. Для выделения нескольких объектов необходимо щелкнуть на нужных объектах при нажатой клавише SHIFT. В дереве объектов также можно группировать отдельные объекты, просто перемещая их при нажатой кнопке мыши.

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

Система Delphi содержит гипертекстовую справочную систему, с помощью которой программист может легко и быстро получить необходимую информацию о среде разработки Delphi и объектно-ориентированном языке Delphi. Для активизации справочной системы выполните команды меню Help (Справка) Delphi Help (Справка Delphi), или щелкните на кнопке  Help contents (Содержание справочной системы). При этом появится окно справочной системы Delphi.

Кроме того, в справочной системе есть информация об инструментах разработки Delphi (пункт меню Help Delphi Tools).

1.2. Особенности работы в консольном режиме

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

Для создания консольного приложения следует выполнить следующие действия:

  1.  Запустите приложение Delphi. При этом откроется главное окно программы Delphi 7.
  2.  Щелкните на кнопке New items  (Новые объекты), расположенной на панели инструментов Standart (Стандартная), либо выполните команды меню File (Файл) New (Создать) Other (Другие). Откроется диалоговое окно New Items (Новые объекты) (рис. 10).
  3.  Откройте вкладку New (Создать), а затем выполните двойной щелчок мышью на пиктограмме Console Application (Консольное приложение). При этом создается окно Редактора кодов со стандартным кодом по умолчанию (рис. 11).

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

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

Задание № 1. Пример работы в Консольном приложении

  1.  Запустите консольное приложение Delphi.
  2.  Введите следующую программу, выполняющую сложение двух целых чисел.

// Иллюстрация работы Консольного приложения

program Primer_1;              // Заголовок программы

{$APPTYPE CONSOLE}             // Директива компилятора

uses                           // Раздел описания подключаемых модулей

 SysUtils;

var                            // Раздел описания используемых переменных

 a, b: Integer;

begin                          // Начало операторного блока

 { TODO -oUser -cConsole Main : Insert code here }

 Write('Input a:  ');         // На экране приглашение на ввод значения a

 Readln(a);                   // Ввод с клавиатуры значения a

 Write('Input b:  ');         // На экране приглашение на ввод значения b

 Readln(b);                   // Ввод с клавиатуры значения b

 Writeln('Result:  ',a+b);    // Вывод на экран суммы

 Writeln('Press any key');    // На экране приглашение нажать любую клавишу,

 Readln                       // чтобы завершить работу

end.                           // Конец операторного блока (программы)

  1.  Когда текст программы будет набран полностью в окне Редактора кода, отправьте программу на компиляцию и выполнение: выполните команды меню Run (Выполнение)  Run (Выполнить), либо щелкните мышью на кнопке  панели Debug (Отладка), либо нажмите клавишу F9. При отсутствии ошибок на экране откроется окно командной строки (рис. 1.12), в котором отображаются результаты вычислений.
  2.  Сохраните проект программы в папке \Мои документы\ПЗ-02\Задание-01 под именем Project1.

Примечания:

  1.  После ключевого слова program вместо имени по умолчанию необходимо ввести собственное имя.
  2.  В шаблон программы в окне редактора кода необходимо добавить раздел описания используемых переменных: для этого следует ввести ключевое слово var, а затем объявить, что переменные а и b имеют тип Integer. Тип любой переменной всегда объявляется только таким образом, т.е. после имени переменной ставится двоеточие, а затем идет тип, который может быть как стандартным типом, так и созданным самим пользователем.
  3.  Когда говорится об объявлении переменной, то имеется в виду, что, встретив код объявления переменной, компилятор создает эту переменную, выделяя место в памяти в соответствии с присвоенным ей типом. Во многих случаях на это место записывается нулевое значение, но лучше всегда самому присвоить вновь созданной переменной необходимое значение.
  4.  Переменным а и b присваиваются значения путем их ввода с клавиатуры. Это делается в операторном блоке begin...end, где размещается разрабатываемая программа.
  5.  С помощью процедур Write (Записать) на экран выводятся приглашающие сообщения о необходимости ввода соответственно значений а и b.
  6.  Процедуры Readln (Считать) предписывают ввести с клавиатуры конкретные значения а и b. После ввода каждого значения надо нажимать клавишу ENTER.
  7.  Процедура Writeln('Result:  ',a+b); выводит на экран текст Result:, затем суммирует два введенных числа и результат выводит на экран.
  8.  Процедура Readln; заканчивает программу пользователя. Она необходима для того, чтобы оставить открытым консольное окно, в котором будет отображаться результат сложения. Без процедуры Readln консольное окно после вывода результата, моментально закроется, так как программа будет завершена, а наличие этой процедуры требует ввода какого-либо значения, что не позволит закончить программу. Нажатия любой клавиши будет достаточно для того, чтобы программа завершилась.

Если в программе есть ошибки, то в окне Редактора кода будет подсвечена строка, где обнаружена ошибка, а в нижней части окна будет указан тип ошибки (рис. 13).

После исправления ошибок следует вновь отправить программу на выполнение.

Замечание: в консольном режиме работы не поддерживается вывод на экран символов кириллицы, поэтому в выводимых строках надо использовать латинские буквы, например, вместо 'Ввод значения b:', следует записать 'Input b:' или 'Vvod znachenia b:' (в последнем случае используется транслитерация).

После того, как будут исправлены ошибки, проект следует сохранить, выполнив команды меню File (Файл)  Save Project As (Сохранить проект как). Если проект еще ни разу не был сохранен, то Delphi сначала предложит сохранить модуль (содержимое окна редактора кода), поэтому на экране появится окно Save Unitl As (Сохранить модуль как), в котором надо выбрать папку, предназначенную для файлов проекта, и ввести имя модуля. После нажатия кнопки Сохранить.

2. ОПИСАНИЕ ПРОСТЫХ ТИПОВ ДАННЫХ

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

2.1. Описание простых стандартных типов данных

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

Стандартные типы данных описываются в разделе var программы, имеющей следующий формат:

Var А1, А2, ..., Аn: стандартный_тип;

где А1, А2, ..., Аn – идентификаторы переменных, относящихся к одному стандартному типу;

 стандартный_тип – предопределенный идентификатор стандартного типа (например, Integer, Real, Boolean и т.п.).

Целочисленный тип представлен в Delphi девятью подтипами для описания переменных и констант, принимающих целочисленные значения. К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей точкой. Элементы булевских типов могут принимать лишь два логических значения: True (истина) и False (ложь). Переменные и константы символьного типа могут принимать значения из множества символов кода ASCII или UNICODE.

В табл. 1 приведены характеристики стандартных предопределенных типов данных.

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

Таблица 1. Стандартные предопределенные типы данных Delphi

Целочисленные типы

Диапазон представления чисел

Размер памяти

Integer

-2147483648 .. 2147483647

Знаковый, 4 байта

Cardinal

0 .. 4294967295

Беззнаковый, 4 байта

Shortint

-128 .. 127

Знаковый, 1 байт

Smallint

-32768 .. 32767

Знаковый, 2 байта

Longint

-2147483648 .. 2147483647

Знаковый, 4 байта

Int64

-263 .. 263-1

Знаковый, 8 байт

Byte

0 .. 255

Беззнаковый, 1 байт

Word

0 .. 65535

Беззнаковый, 2 байта

Longword

0 .. 4294967295

Беззнаковый, 4 байта

Вещественные типы

Диапазон представления чисел

Значащие цифры мантиссы

Размер памяти

Real

от 5.0*10-324 до 1.7*10308

15..16

8 байт

Real48

от 2.9*10-39 до 1.7*1038

11..12

6 байт

Single

от 1.5*10-45 до 3.4*1038

7..8

4 байта

Double

от 5.0*10-324 до 1.7*10308

15..16

8 байт

Extended

от 3.4*10-4951 до 1.1*104932

19..20

10 байт

Comp

от -263+1 до 263-1

19..20

8 байт

Currency

-922337203685477.5808 .. 922337203685477.5807

19-20

8 байт

Булевские типы

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

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

Размер памяти

Boolean

число 0

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

1 байт

ByteBool

число 0

1 байт

WordBool

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

2 байта

LongBool

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

4 байта

Символьные типы

Диапазон представления символов

Соответствие диапазону целых чисел

Размер памяти

Ansichar

Символы в кодировке ASCII

0 .. 255

1 байт

Widechar

Символы в кодировке UNICODE

0 .. 65535

2 байта

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

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

Символьные типы применяются при обработке текстов.

Целочисленные, булевские и символьные типы относятся к так называемым порядковым типам, которые характеризуются следующими свойствами:

  1.  Множество допустимых значений любого порядкового типа представляет собой упорядоченную последовательность, каждый элемент которой имеет свой порядковый номер – целое число. Первое значение любого порядкового типа имеет порядковый номер 0, следующее значение имеет порядковый номер 1 и т.д. Порядковым номером значения целочисленного типа является само это значение.
  2.  К любому значению порядкового типа можно применить стандартную функцию Ord, возвращающую порядковый номер этого значения.
  3.  К любому значению порядкового типа можно применить стандартную функцию Pred, возвращающую значение, предшествующее этому значению. Если эта функция применяется к первому допустимому значению любого порядкового типа, кроме булевских, то возвращается порядковый номер последнего значения.
  4.  К любому значению порядкового типа можно применить стандартную функцию Succ, возвращающую значение, следующее за указанным. Если эта функция применяется к последнему допустимому значению любого порядкового типа, кроме булевских, то возвращается порядковый номер первого значения.

Поскольку булев тип является порядковым, то имеют место следующие отношения:

False < True

Ord(False)  = 0

Ord(True)   = 1

Succ(False) = True

Pred(True)  = False

Значение кода требуемого символа можно получить при помощи функции Ord: например, Ord(Ch)(где Ch — значение символьного типа) возвращается порядковый номер Ch.

Любое значение символьного типа может быть получено с помощью стандартной функции Chr, например, процедура вывода Write(Chr(110)); отобразит на экран символ «n», а процедура Write(Ord('n')); отобразит значение 110.

Задание № 2. Свойства порядковых типов

  1.  Разработайте консольную программу, демонстрирующую свойства порядковых типов (целочисленных, булевских и символьных). Для этого:
    •  Введите целочисленные переменные i, si, li, bt, w и объявите их соответственно Integer, Shortint, Longint, Byte и Word.
    •  Введите символьные переменные ca, cw и объявите их соответственно Ansichar и Widechar.
    •  Введите булевские переменные wb, lb и объявите их соответственно Wordbool и Longbool.
    •  Присвойте переменным i, si, li, bt, w соответственно значения 10; 0; -30; 255; 0.
    •  Организуйте вывод на экран таблицы, отражающей название типа целочисленной переменной, ее предшествующее значение, текущее значение, следующее значение и порядковый номер.
    •  Присвойте символьным переменным ca, cw соответственно значения 'b'и 'W'.
    •  Организуйте вывод на экран таблицы, отражающей название типа символьной переменной, ее предшествующее значение, текущее значение, следующее значение и порядковый номер.
    •  Присвойте булевским переменным wb и lb соответственно значения False и True.
    •  Организуйте вывод на экран таблицы, отражающей название типа булевской переменной, ее предшествующее значение, текущее значение, следующее значение и порядковый номер.

Листинг программы должен иметь примерно следующий вид:

program TestStandardOrd;

{$APPTYPE CONSOLE}

uses

 SysUtils;

var

 i : Integer;  // Объявление переменных

 si: Shortint; // целого типа

 li: Longint;

 bt: Byte;

 w : Word;

 ca: Ansichar;  // Объявление переменных

 cw: Widechar;  // символьного типа

 wb: Wordbool;  // Объявление переменных

 lb: Longbool;  // булевского типа

begin

 { TODO -oUser -cConsole Main : Insert code here }

 i:=10;         // Присваивание целочисленным переменным

 si:=0;         // исходных значений

 li:=-30;

 bt:=255;

 w:=0;

 // Вывод на экран результатов

 Writeln('Integer:   ',Pred(i):5,i:5,Succ(i):5,Ord(i):5);

 Writeln('Shortint:  ',Pred(si):5,si:5,Succ(si):5,Ord(si):5);

 Writeln('Longint:   ',Pred(li):5,li:5,Succ(li):5,Ord(li):5);

 Writeln('Byte:      ',Pred(bt):5,bt:5,Succ(bt):5,Ord(bt):5);

 Writeln('Word:      ',Pred(w):5,w:5,Succ(w):5,Ord(w):5);

 Writeln;

{-----------------------------------------------------------}

 ca:='b';        // Присваивание символьным переменным

 cw:='W';        // исходных значений

 // Вывод на экран результатов

 Writeln('Ansichar:    ',Pred(ca):5,ca:5,Succ(ca):5,Ord(ca):5);

 Writeln('Widechar:    ',Pred(cw):5,cw:5,Succ(cw):5,Ord(cw):5);

 Writeln;

{-----------------------------------------------------------}

 wb:=False;       // Присваивание булевским переменным

 lb:=True;       // исходных значений

 // Вывод на экран результатов

 Writeln('Wordbool:  ',Pred(wb):9,wb:9,Succ(wb):9,Ord(wb):9);

 Writeln('Longbool:  ',Pred(lb):9,lb:9,Succ(lb):9,Ord(lb):9);

 Writeln;

 Readln

end.

  1.  Откомпилируйте и выполните программу, для чего выполните команды меню Run (Выполнение)  Run (Выполнить), либо щелкните мышью на кнопке  панели Debug (Отладка), либо нажмите клавишу F9.
  2.  При наличии ошибок, исправьте их и вновь выполните п. 2.
  3.  При отсутствии ошибок вы должны получить результат, представленный на рис. 14.
  4.  Сохраните проект программы в папке \Мои документы\ПЗ-02\Задание-02 под именем TestStandardOrd.

Задание № 3. Проверка точности представления мантиссы вещественных чисел

  1.  Разработайте консольную программу, проверяющую точность представления мантиссы вещественных чисел для разных типов вещественных данных. Для этого:
    •  Введите вещественные переменные r, s, d, e, c и объявите их соответственно Real, Single, Double, Extended и Comp.
    •  Присвойте этим переменным значение 1.2345678901234567890e-30.
    •  Организуйте вывод на экран таблицы, отражающей название типа вещественной переменной и ее значение.

Листинг программы должен иметь примерно следующий вид:

program TestRealTypes;

{$APPTYPE CONSOLE}

uses

 SysUtils;

var

  r: Real;         // Объявление вещественных переменных

  s: Single;

  d: Double;

  e: Extended;

  c: Comp;

begin

 { TODO -oUser -cConsole Main : Insert code here }

  s:=1.2345678901234567890e-30;  // Присвоение переменным

  r:=1.2345678901234567890e-30;  // начальных значений

  d:=1.2345678901234567890e-30;

  e:=1.2345678901234567890e-30;

  c:=1.2345678901234567890e-30;

{-------------------------------}

  Writeln('Single   : ',s:32);    // Вывод на экран результатов

  Writeln('Real     : ',r:32);

  Writeln('Double   : ',d:32);

  Writeln('Extended : ',e:32);

  Writeln('Comp     : ',c:32);

  Readln

end.

  1.  Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.
  2.  При отсутствии ошибок вы должны получить результат, представленный на рис. 15.
  3.  Сохраните проект программы в папке \Мои документы\ПЗ-02\Задание-03 под именем TestRealTypes.
  4.  Как видно из этих результатов, сначала нарушается корректность представления константы для переменной типа Single, затем для переменной типа Real и т.д. Переменная же типа Comp округляет дробное число до ближайшего целого.

2.2. Описание простых пользовательских типов данных

Object Pascal поддерживает простые типы данных, определяемые самим программистом. К ним относятся перечислимый и интервальный типы. Данные этих типов занимают в памяти один байт, поэтому любой пользовательский тип не может содержать более 256 элементов.

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

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

Формат объявления перечислимого типа следующий:

Type Имя_типа = (Зн1, Зн2, ..., Знn);

Var Ид1, Ид2, ..., Идm : Имя_типа;

где Имя_типа – идентификатор, определяющий вводимый пользовательский тип;

 Зн1, Зн2, ..., Знn – список уникальных идентификаторов, задающий значения вводимого типа;

 Ид1, Ид2, ..., Идm список переменных, которым присваивается введенный пользовательский тип.

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

Type

 Gaz = (C, O, N, F);  // Вводятся перечисляемые типы

 Metall = (Fe, Co, Na, Cu, Zn);

Var

  G1,G2,G3: Gaz;      // Вводятся переменные перечисляемых типов

 Met1,Met2: Metall;

    Season: (Spring,Summer,Autumn,Winter);

Здесь приведены два явно описанных пользовательских типа данных – Gaz и Metall с указанными в скобках значениями. Переменные G1,G2,G3 и Met1,Met2, объявленные как пользовательские, могут принимать только значения, указанные в соответствующих списках. Попытка присвоить им любое другое значение вызовет программное прерывание.

Идентификаторы C, O, N, F обозначают константы типа Gaz, а Fe, Co, Na, Cu, Zn - константы типа Metall.

Переменная Season имеет анонимный тип перечисления и задается перечислением своих значений (констант Spring, Summer, Autumn и Winter) непосредственно в разделе Var.

Здесь константы не являются строковыми константами и в кавычки не заключаются!!!

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

type

  WeekDay = (Mon,Tue,Wed,Thu,Fri,Sat,Sun);

  WorkDay = (Mon,Tue,Wed,Thu,Fri);

то при трансляции будет выдано сообщение об ошибке, так как одни и те же константы Mon, Tue, Wed, Thu, Fri описаны в двух разных типах.

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

type

 Digitals   = (0,1,2,3,4,5,6,7,8,9);     // константы числового типа

 DigSymbols = ('0','1','2','3');         // константы символьного типа

 WeekDay    = ('Mon','Tue','Wed','Thu'); // константы строкового типа

Перечислимые типы являются порядковыми. Упорядочение констант в типе выполняется в соответствии с последовательностью, в которой перечисляются значения-идентификаторы. Порядковый номер константы перечислимого типа определяется ее позицией в списке идентификаторов при объявлении. Первая константа в списке имеет порядковый номер 0, вторая — номер 1, и т.д.

Так же, как и к переменным других порядковых типов, к переменным перечислимого типа применимы встроенные функции Ord, Pred и Succ. Например, Ord(Summer)=1, Pred(Winter)=2, Succ(Spring)=1.

К значениям перечислимых типов не применимы ни арифметические операции, ни стандартные процедуры ввода-вывода Read, Readln, Write, Writeln.

Интервальный тип представляет собой диапазон (интервал) значений какого-либо порядкового типа, называемого базовым. При описании интервального типа указываются наименьшее и наибольшее значения диапазона значений, разрешенных для этого типа. Минимальное и максимальное значения интервала разделяются знаком двоеточия «..».

Примеры описания интервальных типов данных:

Const

 Min = 1; Max = 31;     // Описание констант целого типа

Type

 Dni = Min..Max;   // Введение пользовательского интервального типа

var

 RabDni, BolnDni: Dni;  // Описание пользовательских переменных

 x: 0..500;       // х может принимать значения 0,1,2,...,500

 y: -1..1;        // y может принимать значения -1,0,1

 Ch: 'A'..'Z';    // Ch может принимать значения символов от А до Z

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

Задание № 4. Использование перечисляемых и интервальных типов

  1.  Разработать программу, позволяющую по номеру месяца определить, к какому времени года принадлежит месяц, а также определять текущий, предшествующий и следующий номера сезонов. Для этого:
    •  Введите перечисляемый тип Season=(Spring,Summer,Autumn,Winter), определяющий времена года и опишите пользовательскую переменную Current этого типа.
    •  Введите интервальный тип Month = 1..12, определяющий номер месяца и опишите пользовательскую переменную M этого типа.
    •  Используя процедуру Readln(M), введите номер месяца.
    •  Используя оператор выбора Case M of ... else, выведите на экран название времени года.
    •  Присвойте переменной Current значение Summer.
    •  Организуйте вывод на экран таблицы, отражающей номера предшествующего, текущего и следующего времен года.

Листинг программы должен иметь примерно следующий вид:

program TestEnumeratedTypes;

{$APPTYPE CONSOLE}

uses

 SysUtils;

type              // Перечисляемый тип определяет сезон

 Season=(Spring,Summer,Autumn,Winter);

 Month = 1..12;  // Интервальный тип - номер месяца

var

 Current: Season;

 M: Month;

begin

 { TODO -oUser -cConsole Main : Insert code here }

 Writeln('Input number of month');

 Readln(M);  // Ввести номер месяца

 Case M of   // Проверка, какому сезону соответствует номер месяца

   3..5:   Writeln('Spring');

   6..8:   Writeln('Summer');

   9..11:  Writeln('Autumn');

   12,1,2: Writeln('Winter')

   else    Writeln('Error number of month') // Ошибка ввода

 end;

 Writeln;

 Current:=Summer;                           // Оператор присваивания

 Writeln('Result:');

 Writeln(Ord(Pred(Current)):3, Ord(Current):3, Ord(Succ(Current)):3);

 Readln

end.

  1.  Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.
  2.  При отсутствии ошибок вы должны получить результат, представленный на рис. 16.
  3.  Сохраните проект программы в папке \Мои документы\ПЗ-02\Задание-04 под именем TestEnumeratedTypes.

ВЫВОДЫ

  1.  Среда программирования Delphi — это комплекс программ, разработанных для того, чтобы создать удобное окружение для реализации концепции быстрой разработки приложений RAD (Rapid Application Development). Она включает главный графический интерфейс пользователя, который появляется сразу же после запуска Delphi; графический интерфейс справочной системы; набор необходимых компонентов.
  2.  Приложение Console Application (Консольное приложение), создаваемое в среде Delphi, позволяет работать в текстовом режиме, похожем на режим командной строки (DOS).
  3.  При описании любой переменной, используемой в программе, обязательно необходимо указать ее тип, определяющий, во-первых, набор значений, которые она может принимать, и, во-вторых, действия, которые над ней можно выполнять.
  4.  Простые стандартные типы данных определяют упорядоченные множества значений. К ним относятся: группа целых типов данных; группа вещественных типов данных; группа булевых типов данных; символьный тип данных.
  5.  Целочисленные, булевские и символьный типы относятся к порядковым типам – представляют собой упорядоченные последовательности, каждый элемент которых имеет свой порядковый номер – целое число.
  6.  Delphi поддерживает простые типы данных, определяемые самим программистом. К ним относятся перечислимый и интервальный типы. Перечислимый тип задается непосредственным перечислением всех значений (идентификаторов), которые может принимать переменная данного типа. Интервальный тип представляет собой диапазон (интервал) значений какого-либо порядкового типа, называемого базовым. При описании интервального типа указываются наименьшее и наибольшее значения диапазона значений, допустимых для этого типа.

Контрольные вопросы

  1.  Как создать консольное приложение в Delphi?
  2.  Для чего в программе необходимо описывать используемые переменные?
  3.  Какие типы данных относятся к стандартным простым типам?
  4.  Как описываются переменные целого типа?
  5.  Как описываются переменные вещественного типа?
  6.  Как описываются переменные булева типа?
  7.  Как описываются переменные символьного типа?
  8.  Какие типы данных относятся к порядковым типам? Каковы их свойства?
  9.  Как описываются переменные перечисляемого типа?
  10.  Как описываются переменные интервального типа?


1

2

3

4

5

Меню

Панели инструментов

Строка заголовка

Палитра компонентов

Рис. 1. Главный графический интерфейс программы Delphi

Рис. 2. Панели инструментов Delphi

Панель Standart (Стандартная)

Панель Custom (Пользовательская)

Панель View (Вид)

анель Debug (Отладка)

Панель Desktop (Рабочий стол)

Панель Internet (Интернет)

Рис. 3. Компоненты, расположенные на странице Standard

Рис. 4. Диалоговое окно списка компонентов

Добавленные в форму компоненты

Рис. 5. Окно Инспектора объектов

Рис. 6. Окно Редактора кода с двумя вкладками и состыкованным с ним окном Навигатора кода

Навигатор кода

Рис. 7. Пример подсказки

Рис. 8. Редактор кода автоматически выводит список свойств и методов объекта (компонента)

Рис. 9. Список шаблонов кода отображается в результате нажатия клавиш CTRL+J

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

Рис. 10. Диалоговое окно, в котором выбирается пиктограмма Console Application (Консольное приложение)

Рис. 11. Окно Редактора кодов для Консольного приложения

Рис. 12. Окно результатов вычислений

Рис. 13. Окно Редактора кода с сообщением об ошибке в программе

Здесь обнаружена ошибка

Описание ошибки

Рис. 14. Результаты работы программы, исследующей свойства порядковых типов данных

Рис. 15. Результаты работы программы, проверяющей точность представления мантиссы вещественных чисел

Рис. 16. Результаты работы программы, использующей перечисляемый и интервальный типы данных

  1.  

 

А также другие работы, которые могут Вас заинтересовать

14212. Музична педагогіка — галузь педагогічної науки 75 KB
  Музична педагогіка галузь педагогічної науки загальної педагогіки яка вивчає особливості освіти навчання та виховання особистості засобами музичного мистецтва. Музичну педагогіку слід відрізняти від окремих методик музичного навчанн...
14213. Історія музичної психології 57.5 KB
  Історія музичної психології ПЛАН: Предмет структура і методи музичної психології. Їх специфіка. Історія становлення музичної психології від найдавніших часів до сучасності. Етапи становлення музичної психології як науки. Напрямки музичної психолог...
14214. Музичне мистецтво 25.5 KB
  Музичне мистецтво Помітних успіхів досягла українська музична культура у X VIII ст. Осередком музичного життя стала Київська академія де вивчали нотну грамоту та були поширені хоровий спів гра на музичних інструментах. В академії існував симфонічний оркестр. Великий вне...
14215. Діяльність видатного угорського педагога, композитора та видатного громадського діяча Золтана Кодая 3.6 MB
  Зміст Вступ Розділ І. Теоретичні основи системи музичного виховання Золтана Кодая 1.1. Музично – педагогічні погляди Золтана Кодая на виховання дітей 1.2. Розвиток метро – ритмічного ладового відчуття у молодших школярів за системою Золтана Кодая Розділ ІІ. П
14216. Музично - ритмічні рухи 59 KB
  Музично ритмічні рухи: різновиди та прийоми використання на уроці. Характеристика діяльності. Через обмеженість часу й як правило відсутності спеціального приміщення рухам на уроках музики приділяється незначне місце використовуються лише їх окрем...
14217. Музичний мультфільм 57 KB
  Тема. Музичний мультфільм Навчальна мета: на прикладі поспівки Кицин дім закріпити поняття про довгі і короткі звуки провести розспівування; вчити уважно слухати музику; визначати настрій характер музики; дати поняття про мультфільм; закріпити пісню
14218. Музичний жанр 30 KB
  Музичний жанр Жанр це історично сформований різновид музичних творів який визначається за різноманітними ознаками: характером тематики засобами вираження складу виконавців. Загальноприйнятим є підрозділ музики на такі основні жанри як симфонічний оперний камер
14219. Композиторы Philippe de Vitry и Adam de la Halle 471.78 KB
  РЕФЕРАТ по предмету МУЗЫКА на тему: КОМПОЗИТОРЫ Philippe de Vitry И Adam de la Halle Москва 2012 г. СОДЕРЖАНИЕ Philippe de Vitry Adam de la Halle ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА Филипп де Витри фр. Philippe de Vitry также Филипп Витрийский 1291 1361 католический епископ епа...
14220. Музыка и театры во время блокады 24.13 KB
  Музыка и театры во время блокады И музыканты и артисты как и все жители осажденного города терпели лишения и муки голода и холода умирали. Однако голос искусства не умолк Кольцо блокады замкнулось 8 сентября 41го. В этот день в Театре музыкальной комедии пр...