Рефетека.ру / Информатика и програм-ие

Реферат: Программирование на 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, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)

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

Рефетека ру refoteka@gmail.com