Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения
 

Программирование на 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



ref.by 2006—2022
contextus@mail.ru