Язык программирования Object Pascal 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Язык программирования Object Pascal



В предыдущей лабораторной работе мы уже познакомились с модулем формы. Модуль - это основная программная единица в Delphi.

Модуль состоит из нескольких разделов. Для разделения модуля на разделы используются служебные слова, такие как unit, interface, implementation и другие. Каждый раздел содержит последовательность инструкций, которые отделяются друг от друга точкой с запятой. Каждая инструкция имеет свои правила записи, определенные языком.

При написании инструкций модуля программист оперирует понятиями объект, переменная, константа, класс, тип, процедура, функция, операция и др.

2.1.1.1 Объекты, переменные и константы

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

Программные проекты обычно разрабатываются для обработки некоторых данных с целью получения других данных. Например, в проекте «Стипендия» исходными данными являются оценки студента и его статус, а выходными – размер стипендии и размер подоходного налога. Данные часто могут быть представлены как свойства некоторых объектов, но могут существовать и самостоятельно. В последнем случае, для представления данных используют понятия «переменная» и «константа». Разница между переменной и константой заключается только в том, что константа не может изменять свое значение во время работы программы. Каждой константе и переменной программист должен присвоить уникальное имя. Требования к именам переменных и констант такие же, как и к именам компонент. Напомним, что в качестве имени переменной можно использовать последовательность из букв латинского алфавита, цифр и некоторых специальных символов. Первым символом в имени переменной должна быть буква. Пробел в имени переменной использовать нельзя.

2.1.1.2 Классы и типы

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

Например, пусть в памяти компьютера записана последовательность нулей и единиц 0000 0011 0100 0010 0100 0011 0100 0100. Если рассматривать ее как данные типа Integer, то это будет целое число 546744, а если предположить, что это данные типа ShortString, то получим строку из трех символов - BCD.

Из приведенного примера следует, что тип данных определяет способ кодирования информации. Кроме того, для каждого типа определен свой набор допустимых операций над данными и способ их выполнения. Так, например, если для рассмотренной последовательности выполнить операцию «сложить сама с собой», то эта операция будет выполняться по разным правилам. Числа будут складываться по правилам арифметики, и полученный результат будет выглядеть так: 0000 0110 1000 0100 1000 0110 1000 1000. Строки же будут „склеиваться” и результат будет таким: 0000 0110 0100 0010 0100 0011 0100 0100 0100 0010 0100 0011 0100 0100.

Класс можно рассматривать как тип, который определяет набор свойств и поведения объектов.

Delphi и Object Pascal предоставляют программисту возможность использовать множество стандартных классов и типов. Примерами стандартных классов могут служить известные классы TForm, TEdit, TButton. К стандартным типам относятся типы Integer, String, Boolean. Существует также возможность создавать новые типы и классы. Создаваемый тип или класс описывается в специальном разделе модуля, который начинается служебным словом type. Пример описания нового класса для создаваемого интерфейса можно увидеть в модуле любой формы. Это описание автоматически корректируется по мере появления новых компонент проекта.

В Object Pascal тип каждого объекта или переменной должен быть обязательно указан при объявлении.

2.1.1.3 Объявление объектов и переменных

Объявление объекта или переменной – это инструкция, в которой определяется имя переменной и ее тип. В отличие от некоторых других языков, Object Pascal требует объявлять переменные, также как и типы, в специальных разделах. Признаком начала раздела объявления переменных и объектов служит служебное слово var.

В простейшем случае инструкция объявления переменной выглядит так;

Var

< имя >: < тип >;

где: < имя > - имя переменной;

< тип >- имя типа для объявляемой переменной.

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

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

Var

Form1: TForm;

а, b, y: Real; i: Integer;

Разделы описаний могут находиться в разделе модуля interface, в разделе модуля implementation, в разделе описаний каждой процедуры или функции.

2.1.1.4 Вещественный тип данных

Данные этого типа записываются в форме с плавающей точкой. При такой записи число представляется в виде мантиссы и порядка. Мантисса всегда имеет значение большее или равное 1, но меньшее 10. Порядок может быть положительным или отрицательным и показывает, на сколько порядков реальное число меньше или больше мантиссы. Преимущество такой формы записи состоит в том, что при записи чисел не приходится писать незначащие нули. Длина записи зависит только от количества значащих цифр и не зависит от значения числа. Например, числа 123450000 и 0.0000000012345 будут представлены как 1.2345е+8 и 1.2345е-9. Это удобно как при записи чисел на бумаге, так и при записи чисел в памяти компьютера.

В приведенной ниже таблице приведены характеристики основных вещественных типов, используемых в Object Pascal.


Таблица 2.1 – Характеристики основных вещественных типов

Тип Диапазон Количество десятичных цифр в мантиссе Длина в байтах
Single 1.5 x 10^-45.. 3.4 x 10^38 7-8  
Double 5.0 x 10^-324.. 1.7 x 10^308 15-16  
Extended 3.6 x 10^-4951.. 1.1 x 10^4932 19-20  

 

При программировании допускается использовать и тип Real, который часто использовался в языке Pascal. В последних версиях Delphi он эквивалентен типу Double.

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

2.1.1.5 Выражение

Выражение – это описание некоторой формулы на алгоритмическом языке. В языках высокого уровня выражение мало отличается от формулы. Основное отличие заключается в том, что выражение записывается в одну строку. В таблице 2.2 приведены примеры записи некоторых выражений.

Таблица 2.2 Примеры записи выражений

Формула Выражение
(a+b)/(a-b)/x
sqrt(sqr(sin(x))+b)
exp(2.5*x)
exp((1.5+b)*ln(a))

 

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

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

Основные арифметические операции, применимые для данных вещественного типа приведены в таблице 2.3.


 

Таблица 2.3- Арифметические операции для данных вещественного типа
+ Сложение
- Вычитание
* Умножение
/ Деление

 

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

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

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

2.1.1.6 Стандартные функции для данных вещественного типа

Object Pascal предоставляет программисту множество функций для обработки данных вещественного типа. Обращения к этим функциям используются при записи выражений и рассматриваются как операнды. Для вызова функции необходимо записать ее имя и далее в скобках, через запятую, перечислить необходимые параметры. Например, чтобы вычислить квадратный корень из переменной n, достаточно записать sqrt(n).

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

В таблице 2.4 приведены некоторые стандартные функции для работы с вещественными числами и имена модулей, где они описаны. Полный список функций можно найти в справочной системе Delphi.


 

Таблица 2.4 - стандартные функции для вещественных чисел
Пример обращения к функции Что вычисляет функция Модуль
Abs(X); Абсолютное значение System
Exp(X Экспонента System
Ln(X) Натуральный логарифм System
Sqrt(X) Квадратный корень System
Sqr(X) Возводит в квадрат System
Sin(X) Синус System
Cos(X) Косинус System
Tan(X) Тангенс System
Cot(X) Котангенс Math
Sinh(X) Гиперболический синус Math
   
ArcTan(X) Арктангенс System
ArcSin(X) Арксинус Math
ArcCos(X) Арккосинус Math
   
Round(X) Округление System
Trunc(X) Удаление дробной части System
Int(X) Целая часть System
Random Случайное число 0 <= r < 1 System
Frac(X) Дробная часть  

2.1.1.7 Инструкция присваивания

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

< переменная > := < выражение >;

где: < переменная > имя переменной, значение которой изменяется в результате выполнения инструкции присваивания;

:= символ присваивания.

<выражение> – выражение, значение которого присваивается переменной, имя которой указано слева от символа присваивания.

Инструкция присваивания выполняется следующим образом:

– сначала вычисляется значение выражения, которое находится справа от символа инструкции присваивания;

– затем полученное значение записывается в переменную, имя которой стоит слева от символа присваивания.

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

Во время компиляции выполняется проверка соответствия типа выражения типу переменной. Если тип выражения не соответствует типу переменной, то компилятор выводит сообщение об ошибке.

2.1.1.8 Форматирование результатов расчетов

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

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

format(<строка форматов>,<список объектов форматирования>)

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

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

Подробное описание функции можно найти в справочной системе Delphi. Здесь мы рассмотрим только несколько примеров.

Пусть значение переменной х обращение к функции формат

Таблица 2.5 – Примеры использования функции format()

Обращение к функции Значения объектов форматирования Возвращаемое значение
format(‘Результат = %1.3f’, [x]) X=23.45678 Результат =23.457
format(‘%1d+%1d=%1d’,[a, b, a+b] a=12. b=13 12+13=25
format(‘%1s= %1.3f’, [r, x]) r=’Результат’. x=23.4 Результат =23.400

В первом примере спецификатор имеет значение %1.3f и относится он к переменной х. Символ f указывает на то, что форматироваться будет вещественное число, но в форме с фиксированной точкой. Число 3 после точки указывает на то, что для дробной части числа выделяется три позиции. Поэтому результат был округлен до трех знаков после точки. Число 1 перед точкой указывает на то, что общее число позиций для вывода объекта равно 1. Это явно мало, поэтому функция выделяет столько позиций, сколько требуется. В данном случае требуется 6 позиций (две на целую часть, одна на точку, и три на дробную часть). Если бы перед точкой стояло число большее 6, например 9, то слева было бы добавлено три пробела.

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

В третьем примере одним из объектов форматирования является строка символов, поэтому в качестве символа для определения типа используется буква s.

2.2 Создание проекта «Расчет по формуле»

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

 

Таблица 2.6 – Задания для проекта
Вариант Формула
 
 
 
 
 
 
 
 
 
 

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

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

Рисунок 2.1- Интерфейс создаваемого приложения

Создание интерфейса

Откройте новый проект в Delphi. Установите значение свойства Name появившейся формы как frmFormula, а свойства Caption как «Расчет по формуле».

2.2.1.1 Компонент OLE-контейнер

Этот пункт не является обязательным.

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

Компонент OLE-контейнер расположен на закладке System, палитры компонентов. Расположите контейнер в том месте формы, где должна быть формула и растяните его до нужных размеров.

Для того чтобы вызвать список объектов, которые можно вставить в контейнер, сделайте двойной щелчок в поле контейнера, или вызовите из контекстного меню функцию Insert Object. В появившемся списке выберите построитель формул (Microsoft Equation 3.0) и нажмите ОК. В результате, нужный объект помещается в контейнер, хотя вид контейнера при этом может не измениться.

Если построитель формул не появился на экране, сделайте двойной щелчок в поле контейнера, или вызовите из контекстного меню функцию «Открыть». Далее, используя средства построителя, наберите формулу свою формулу и закройте построитель. Формула должна появиться в поле контейнера.

2.2.1.2 Компонент Group Box

Этот пункт не является обязательным.

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

Компонент Group Box находится на закладке Standard палитры компонентов.

Расположите на форме два объекта Group Box и запишите в свойстве Caption одного их них – «Исходные данные к расчету», а для другого – «Протокол выполненных расчетов».

Расположите в группе «Исходные данные к расчету» компоненты TEdit для ввода исходных данных Присвойте этим компонентам имена, которые будут соответствовать именам переменных в формуле. В нашем примере компонентам присвоены такие имена: edtA, edtX, edtN.

Над компонентами расположите надписи соответствующие именам переменных в формуле.

2.2.1.3 Компонент Memo

Компонент Memo можно использовать для работы с многострочным текстом. В нашем проекте в поле этого компонента будут регистрироваться результаты вычислений.

Компонент можно найти на закладке Standard палитры компонент.

Расположите компонент Memo на форме или внутри группы «Протокол выполненных расчетов», и присвойте ему имя memProtocol.

Присвойте свойству Scroll Bars значение ssVertical. В результате в поле должна появиться полоса вертикальной прокрутки.

Свойству Read Only присвойте значение True.

2.2.1.4 Завершение работы над интерфейсом

В завершение, расположите на форме две кнопки с надписями «Выполнить расчет» и «Очистить протокол». Присвойте этим кнопкам имена btnCalculate, btnClearProtocol.

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

Рисунок 2.2 – Разработанный интерфейс приложения



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 196; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.40.53 (0.044 с.)