Программирование на Object Pascal в среде Delphi

Программирование на Object Pascal в среде Delphi

Лабораторная работа №1

Программирование линейных алгоритмов

Цель лабораторной работы: изучить основные элементы визуальной среды,

освоить использование простейших компонентов DELPHI для ввода/вывода

данных, и создать приложение, которое использует линейный алгоритм.

1.1.Визуальная среда DELPHI

При запуске DELPHI на экране появляется панель интерфейса,

показанная на рис. 1.1. Среда DELPHI визуально реализуется в виде

нескольких одновременно раскрытых на экране монитора окон. Количество,

расположение, размер и вид окон может изменяться программистом.

Главное окно всегда присутствует на экране и предназначено для

управления процессом создания приложения.

Главное меню содержит все необходимые средства для управления

проектом.

Пиктограммы главного меню облегчают доступ к наиболее часто

применяемым командам.

Палитра Компонентов обеспечивает доступ к набору библиотечных

программ среды DELPHI, которые описывают некоторый элемент (компонент),

помещенный программистом в окно Формы. Каждый компонент имеет определенный

набор свойств, которые программист может выбирать и изменять по своему

усмотрению. Например, заголовок окна, надпись на кнопке, размер, цвет и тип

шрифта и др. Свойства компонентов приведены в HELP.

Окно Инспектора Объектов предназначено для изменения свойств

выбранных компонентов и состоит из двух страниц. Страница Properties

(Свойства) предназначена для изменения необходимых свойств компонента.

Страница Events (События) – для определения реакции компонента на то или

иное событие (например, щелчок кнопки “мыши ”).

Окно Формы представляет собой интерфейс проектируемого Windows-

приложения. В это окно на этапе проектирования приложения помещаются

необходимые компоненты, которые разработчик берет из Палитры Компонентов.

Каждой Форме проекта соответствует модуль (Unit), текст которого на языке

Object Pascal размещается в окне Редактора Кода.

Окно Редактора Кода предназначено для просмотра, создания и

редактирования текстов модулей проекта. При первоначальной загрузке в окне

Редактора Кода находится текст модуля, содержащий минимальный набор

операторов для нормального функционирования пустой Формы в качестве Windows-

приложения. При размещении некоторого компонента в окне Формы, текст модуля

автоматически дополняется необходимыми операторами.

Обо всех происходящих в системе событиях, таких как создание Формы,

нажатие кнопки мыши или клавиатуры и т.д., ядро Windows информирует окна

путем посылки соответствующих сообщений. Среда DELPHI принимает и

обрабатывает сообщения с помощью обработчиков событий (например, щелчок

кнопки “мыши” – событие OnClick, создание Формы – OnCreate). Наиболее часто

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

|Таблица 1.1 |

|Событие |Описание события |

|OnActivate |Возникает при активизации Формы |

|OnCreate |Возникает при создании Формы. В обработчике данного события|

| |следует задавать действия, которые должны происходить в |

| |момент создания Формы, например установка начальных |

| |значений. |

|OnClick |Возникает при нажатии кнопки мыши в области компонента. |

|OnDblClick |Возникает при двойном нажатии кнопки мыши в области |

| |компонента |

|OnKeyPress |Возникает при нажатии клавиши на клавиатуре. Параметр Key |

| |имеет тип Char и содержит ASCII-код нажатой клавиши |

| |(клавиша Enter клавиатуры имеет код #13, клавиша Esc - #27 |

| |и т.д.). Обычно это событие используется в том случае, |

| |когда необходима реакция на нажатие одной из клавиш. |

|OnKeyDown |Возникает при нажатии клавиши на клавиатуре. Обработчик |

| |этого события получает информацию о нажатой клавише и |

| |состоянии клавиш Shift, Alt и Ctrl, а также о нажатой |

| |кнопке мыши. |

Для создания обработчика события программисту необходимо раскрыть

список компонентов в верхней части окна Инспектора Объектов и выбрать

необходимый компонент. Затем, на странице Events Инспектора Объектов,

нажатием левой клавиши мыши выбрать название обработчика и дважды щелкнуть

по его правой (белой) части. В ответ DELPHI активизирует окно Редактора

Кода модуля и покажет заготовку процедуры обработки выбранного события. Для

каждого обрабатываемого события в тексте модуля организуется процедура

(procedure), между ключевыми словами begin и end которой программист на

языке Object Pascal записывает требуемый алгоритм обработки события.

Переключение между окном Формы и окном Редактора Кода осуществляется

кнопкой главного меню с пиктограммой [pic] или клавишей F12.

1.2. Пример создания приложения

Задание: создать Windows-приложение для вычисления выражения

[pic] .

Численные значения данных x, y и z занести с клавиатуры в соответствующие

поля панели интерфейса. Один из возможных вариантов панели интерфейса

создаваемого приложения показан на рис. 1.2.

1.2.1. Сохранение проекта

В процессе проектирования приложения DELPHI создает несколько файлов

- проект. Каждый проект целесообразно хранить в отдельной, заранее

созданной папке. С помощью подходящего приложения Windows создадим папку и

назовем ее, например, LAB1.

Для сохранения проекта откройте в главном меню пункт File и щелкните

“мышью” на опции Save Project As…(Сохранить проект как…). Сначала DELPHI

откроет панель диалога Save Unit1 As (Сохранить модуль как) для сохранения

модуля проекта. В этой панели найдем созданную папку LAB1 и сохраним в ней

модуль под именем, например, UnLinAlg. Обратите внимание на то, что DELPHI

по умолчанию присвоит этому файлу тип Delphi unit c расширением *.pas.

Затем откроется панель диалога Save Project1 As . Назовем наш проект,

например, PrLinAlg и сохраним его в этой же папке. Здесь DELPHI даст файлу

тип Delphi project и расширение *.dpr. Убедитесь в том, что главное окно

DELPHI теперь называется PrLinAlg, окно главного файла проекта-

PrLinAlg.dpr, а окно модуля проекта- UnLinAlg.pas.

Старайтесь давать файлам осмысленные имена вместо однообразных Unit1

и Project1, предлагаемых DELPHI.

Чтобы избежать потери файлов проекта в аварийных ситуациях связанных,

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

периодически сохранять проект, используя пиктограмму [pic] главного меню

или опцию Save All в меню File.

1.2.2. Настройка окон

Чтобы работать с окном, необходимо сделать его активным, щелкнув

“мышью” в любом месте окна. У активного окна заголовок становится

выделенным, например, на рис. 1.1 активным является окно Редактора Кода.

Окна Формы и Редактора Кода модуля в правом верхнем углу имеют кнопки

управления, которые предназначены: [pic] -для свертывания окна в

пиктограмму, [pic] -для разворачивания окна на весь экран и возвращения к

исходному размеру [pic], [pic] -для закрытия окна.

С помощью “мыши”, захватывая одну из кромок окна или выделенную

строку заголовка, отрегулируете нужные размеры окон Формы, Редактора Кода,

Инспектора Объектов и их положение на экране.

1.2.3. Изменение заголовка Формы

Новая Форма имеет одинаковые имя (Name) и заголовок (Сaption) -

FORM1. Начинающим программистам имя Формы менять не рекомендуется, т.к. оно

используется в тексте модуля.

Для изменения заголовка активизируйте окно Инспектора Объектов и на

странице Properties в свойстве Caption замените заголовок Form1 на

Лаб. работа №1-Линейный алгоритм. Убедитесь, что одновременно

изменился заголовок окна Формы.

1.2.4. Размещение компонентов на Форме

Будем размещать компоненты на Форме так, чтобы они соответствовали

панели, показанной на рис 1.2.

[pic]

Для нанесения надписей на Форму используется компонент Label. Выберите в

Палитре Компонентов на странице Standard пиктограмму [pic] компонента Label

и щелкните на ней “мышью”. Затем в нужном месте Формы щелкните “мышью” -

появится надпись Label1. В свойстве Caption Инспектора Объектов замените

надпись Label1 на Введите значение X:. В свойстве Font подберите шрифт.

Аналогично нанесите на Форму остальные надписи. Щелкнув “мышью” на любом из

размещенных компонентов, отрегулируйте его местоположение на Форме и

размер.

Для ввода/вывода данных в простейших случаях используются компоненты

Edit и Memo. Компонент Edit применяется в тех случаях, когда данные

представляются одной строкой. Если данные представляют собой несколько

строк, то используется компонент Memo.

Для создания полей ввода численных значений переменных x, y и z

используем компонент Edit. Выберите в Палитре Компонентов на странице

Standard пиктограмму [pic] и разместите компонент Edit в нужных местах

Формы так же, как Вы это делали с компонентом Label.

Для вывода результатов используем компонент Memo. Выберите в Палитре

Компонентов на странице Standard пиктограмму [pic], поместите компонент

Memo на Форму и откорректируйте его местоположение и размеры.

1.2.5. Написание процедуры обработки события создания Формы (FormCreate)

Если программист желает, чтобы при появлении панели интерфейса на

экране в соответствующих полях находились начальные значения данных, он

должен учесть, что при запуске приложения возникает событие - создание

Формы (OnCreate). Создадим процедуру обработки этого события, которая

занесет начальные значения переменных x, y, z в поля Edit1, Edit2 и Edit3

соответственно, а в поле Memo1 поместит строку Лабораторная работа №1 –

Линейный алгоритм. Для этого дважды щелкните мышью на любом свободном месте

Формы. На экране появится текст модуля UnLinAlg, в котором DELPHI

автоматически создает заготовку процедуры-обработчика события создания

Формы: Procedure TForm1.FormCreate(Sender:TObject). Между операторами begin

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

действия (текст модуля приведен в п.1.2.7).

1.2.6. Написание процедуры обработки события нажатия кнопки Button1

(Button1Click)

Поместим на Форму кнопку, нажатие которой приведет к вычислению

выражения. Выберите в Палитре Компонентов на странице Standart пиктограмму

[pic] компонента Button. В свойстве Caption Инспектора Объектов замените

надпись на кнопке Button1 на Вычислить. В свойстве Font подберите шрифт.

Отрегулируйте положение и размер кнопки. Затем дважды щелкните “мышью” на

кнопке, после чего курсор установится в тексте процедуры-обработчика

события нажатия кнопки Button1 : Procedure

TForm1.Button1Click(Sender:TObject). Внимательно наберите операторы этой

процедуры, используя текст модуля UnLinAlg.

1.2.7. Текст модуля UnLinAlg

Unit UnLinAlg;

interface

uses

Windows, Messages, SysUtils,>

StdCtrls;

type

TForm1 =>

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Label4: TLabel;

Memo1: TMemo;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

// Процедура обработки события создания Формы:

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='0.4'; // начальное значение X

Edit2.Text:='8.75e-2'; // начальное значение Y

Edit3.Text:='-19.63'; // начальное значение Z

Memo1.Clear; // очистка Memo1

// Вывод строки в Memo1:

Memo1.Lines.Add('Лабораторная работа №1 - Линейный алгоритм');

end;

// Процедура обработки события нажатия кнопки Button1:

procedure TForm1.Button1Click(Sender: TObject);

var

x,y,z,a,b,c,u : extended; // объявление локальных переменных

begin

x:=StrToFloat(Edit1.Text); // X присваивается содержимое Edit1

y:=StrToFloat(Edit2.Text); // Y присваивается содержимое Edit2

z:=StrToFloat(Edit3.Text); // Z присваивается содержимое Edit3

// Вычисляется выражение

a:=sqrt(x)-y*y*y;

b:=sin(a)/cos(a);

c:=Exp(5*Ln(b));

u:=c+exp(y/z)*sin(z*z);

Memo1.Lines.Add('X = '+Edit1.Text+' Y = '+Edit2.Text+

' Z = '+Edit3.Text); // контрольный вывод X, Y, Z в Memo1

// Вывод результата в Memo1:

Memo1.Lines.Add(' U = '+FloatToStrF(u,ffFixed,8,3));

end;

end.

Данные, с которыми работают компоненты Edit и Memo, имеют тип String.

Поэтому в процедуре TForm1.Button1Click при присваивании содержимого полей

Edit1,Edit2,Edit3 переменным X,Y,Z c помощью функции StrToFloat

осуществляется преобразование данных типа String в действительные значения

с плавающей точкой типа Extended. Если необходимо работать с данными

целого типа, используется функция StrToInt.

При выводе данных в Memo1 используется метод Add свойства Lines,

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

управления формой представления выводимого результата используется функция

FloatToStrF.

1.2.8. Работа с приложением

Для запуска созданного приложения нажмите пиктограмму [pic] главного

меню или клавишу F9. При этом происходит компиляция модулей и, если нет

ошибок, компоновка проекта и создание выполняемого файла PrLinAlg.exe. На

экране появляется панель интерфейса приложения (рис.1.2).

Щелкните “мышью” на кнопке “Вычислить” и в поле Memo1 появляется

результат. Измените исходные значения x, y, z в полях Edit и снова нажмите

кнопку ”Вычислить”. Убедитесь, что в поле Memo1 отображаются новые

результаты. Завершить работу приложения можно нажатием кнопки [pic] в

правом верхнем углу панели интерфейса.

В случае нештатного функционирования приложения восстановить

первоначальный режим работы с проектом можно путем выбора в меню Run опции

ProgramReset или нажать клавиши Ctrl+F2.

1.3. Выполнение индивидуального задания

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

Уточните условие задания, количество и типы исходных данных. В соответствии

с этим оформите дизайн панели интерфейса проектируемого приложения,

установите необходимое количество полей Edit, тексты заголовков на Форме,

размеры шрифтов, а также типы переменных и функции преобразования при вводе

и выводе результатов.

Индивидуальные задания

1. [pic]

При x=14.26, y=-1.22, z=3.5([pic] t=0.564849.

2. [pic]

При x=-4.5, y=0.75([pic],z=0.845[pic] u=-55.6848.

3. [pic]

При x=3.74[pic], y=-0.825, z=0.16[pic] v=1.0553.

4. [pic]

При x=0.4[pic] ,y=-0.875, z=-0.475[pic] w=1.9873.

5. [pic]

При x=-15.246, y=4.642[pic], z=20.001[pic] [pic]=-182.036.

-----------------------

3

4

5

6

Рис.1.2

Label1

Label2

Label3

Рис.2.1

1- главное окно; 2 – главное меню, 3 – пиктограммы главного меню,

4 - окно Инспектора Объектов; 5 – окно Редактора Кода,

6- окно пустой Формы; 7 – Палитра Компонентов.

Label4

2

1

7

Edit1

Edit2

Edit3

Button1

Memo1