Главная Учебники - Разные Лекции (разные) - часть 32
|
Лабораторная
работа №1 Цель
лабораторной
работы: изучить
основные элементы
визуальной
среды, освоить
использование
простейших
компонентов
DELPHI для ввода/вывода
данных,
и создать приложение,
которое использует
линейный алгоритм. При
запуске DELPHI на
экране появляется
панель интерфейса,
показанная
на рис. 1.1. Среда
DELPHI визуально
реализуется
в виде нескольких
одновременно
раскрытых на
экране монитора
окон. Количество,
расположение,
размер и вид
окон может
изменяться
программистом. Главное
меню содержит
все необходимые
средства для
управления
проектом.
Пиктограммы
главного меню
облегчают
доступ к наиболее
часто применяемым
командам.
Палитра
Компонентов
обеспечивает
доступ к набору
библиотечных
программ среды
DELPHI, которые описывают
некоторый
элемент (компонент),
помещенный
программистом
в окно Формы.
Каждый компонент
имеет определенный
набор свойств,
которые программист
может выбирать
и изменять по
своему усмотрению.
Например, заголовок
окна, надпись
на кнопке, размер,
цвет и тип шрифта
и др. Свойства
компонентов
приведены в
HELP. Окно
Инспектора
Объектов
предназначено
для изменения
свойств выбранных
компонентов
и состоит из
двух страниц.
Страница Properties
(Свойства)
предназначена
для изменения
необходимых
свойств компонента.
Страница Events
(События) – для
определения
реакции компонента
на то или иное
событие (например,
щелчок кнопки
“мыши ”). Окно
Формы представляет
собой интерфейс
проектируемого
Windows-приложения.
В это окно на
этапе проектирования
приложения
помещаются
необходимые
компоненты,
которые разработчик
берет из Палитры
Компонентов.
Каждой Форме
проекта соответствует
модуль (Unit),
текст которого
на языке Object Pascal
размещается
в окне Редактора
Кода. Окно
Редактора Кода
предназначено
для просмотра,
создания и
редактирования
текстов модулей
проекта. При
первоначальной
загрузке в окне
Редактора Кода
находится текст
модуля, содержащий
минимальный
набор операторов
для нормального
функционирования
пустой Формы
в качестве
Windows-приложения.
При размещении
некоторого
компонента
в окне Формы,
текст модуля
автоматически
дополняется
необходимыми
операторами.
Обо
всех происходящих
в системе событиях,
таких как создание
Формы, нажатие
кнопки мыши
или клавиатуры
и т.д., ядро Windows
информирует
окна путем
посылки соответствующих
сообщений.
Среда DELPHI
принимает и
обрабатывает
сообщения с
помощью обработчиков
событий (например,
щелчок кнопки
“мыши” – событие
OnClick, создание
Формы – OnCreate).
Наиболее часто
применяемые
события представлены
в табл. 1.1. Событие Описание
события OnCreate OnKeyPress Для
создания обработчика
события программисту
необходимо
раскрыть список
компонентов
в верхней части
окна Инспектора
Объектов и
выбрать необходимый
компонент.
Затем, на странице
Events Инспектора
Объектов, нажатием
левой клавиши
мыши выбрать
название обработчика
и дважды щелкнуть
по его правой
(белой) части.
В ответ DELPHI
активизирует
окно Редактора
Кода модуля
и покажет заготовку
процедуры
обработки
выбранного
события. Для
каждого обрабатываемого
события в тексте
модуля организуется
процедура
(procedure), между
ключевыми
словами begin
и end которой
программист
на языке Object Pascal
записывает
требуемый
алгоритм обработки
события.
Переключение
между окном
Формы и окном
Редактора Кода
осуществляется
кнопкой главного
меню с пиктограммой
Задание:
создать Windows-приложение
для вычисления
выражения
Численные
значения данных
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. Чтобы
избежать потери
файлов проекта
в аварийных
ситуациях
связанных,
например, с
выключениием
питания, зависании
системы и т.д.,
рекомендуется
периодически
сохранять
проект,
используя
пиктограмму
1.2.2. Настройка
окон Чтобы
работать с
окном, необходимо
сделать его
активным, щелкнув
“мышью”
в любом месте
окна. У активного
окна заголовок
становится
выделенным,
например, на
рис. 1.1 активным
является окно
Редактора Кода. Окна
Формы и Редактора
Кода модуля
в правом верхнем
углу имеют
кнопки управления,
которые предназначены:
С
помощью “мыши”,
захватывая
одну из кромок
окна или выделенную
строку заголовка,
отрегулируете
нужные размеры
окон Формы,
Редактора Кода,
Инспектора
Объектов и их
положение на
экране. Новая
Форма имеет
одинаковые
имя (Name) и заголовок
(Сaption) - FORM1. Начинающим
программистам
имя Формы менять
не рекомендуется,
т.к. оно используется
в тексте модуля. Для
изменения
заголовка
активизируйте
окно Инспектора
Объектов и на
странице Properties
в свойстве
Caption замените
заголовок Form1
на Лаб.
работа №1-Линейный
алгоритм.
Убедитесь, что
одновременно
изменился
заголовок окна
Формы. Будем
размещать
компоненты
на Форме так,
чтобы они
соответствовали
панели, показанной
на рис 1.2. Для
нанесения
надписей на
Форму используется
компонент
Label. Выберите
в Палитре Компонентов
на странице
Standard пиктограмму
Для
ввода/вывода
данных в простейших
случаях используются
компоненты
Edit и Memo. Компонент
Edit применяется
в тех случаях,
когда данные
представляются
одной строкой.
Если данные
представляют
собой несколько
строк, то используется
компонент Memo. Для
создания полей
ввода численных
значений переменных
x, y
и z используем
компонент
Edit. Выберите
в Палитре Компонентов
на странице
Standard пиктограмму
Для
вывода результатов
используем
компонент Memo.
Выберите в
Палитре Компонентов
на странице
Standard пиктограмму
Если
программист
желает, чтобы
при появлении
панели интерфейса
на экране в
соответствующих
полях находились
начальные
значения данных,
он должен учесть,
что при запуске
приложения
возникает
событие - создание
Формы (OnCreate). Создадим
процедуру
обработки этого
события, которая
занесет начальные
значения переменных
x, y, z в
поля Edit1, Edit2
и Edit3 соответственно,
а в поле Memo1
поместит строку
Лабораторная
работа №1 – Линейный
алгоритм. Для
этого дважды
щелкните мышью
на любом свободном
месте Формы.
На экране появится
текст модуля
UnLinAlg, в котором
DELPHI автоматически
создает заготовку
процедуры-обработчика
события создания
Формы:
Procedure TForm1.FormCreate(Sender:TObject).
Между операторами
begin и
end этой
процедуры
вставьте операторы,
которые выполняют
необходимые
действия
(текст модуля
приведен в
п.1.2.7). Поместим
на Форму кнопку,
нажатие которой
приведет к
вычислению
выражения.
Выберите в
Палитре Компонентов
на странице
Standart пиктограмму
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.
Для
запуска созданного
приложения
нажмите пиктограмму
Щелкните
“мышью”
на кнопке “Вычислить”
и в поле Memo1
появляется
результат.
Измените исходные
значения x,
y, z в полях
Edit и снова
нажмите кнопку
”Вычислить”.
Убедитесь, что
в поле Memo1
отображаются
новые результаты.
Завершить
работу приложения
можно нажатием
кнопки
В
случае нештатного
функционирования
приложения
восстановить
первоначальный
режим работы
с проектом
можно путем
выбора в меню
Run опции ProgramReset или
нажать клавиши
Ctrl+F2.
По
указанию
преподавателя
выберите свое
индивидуальное
задание. Уточните
условие задания,
количество
и типы исходных
данных. В соответствии
с этим оформите
дизайн панели
интерфейса
проектируемого
приложения,
установите
необходимое
количество
полей Edit,
тексты заголовков
на Форме, размеры
шрифтов, а также
типы переменных
и функции
преобразования
при вводе и
выводе результатов. 1.
При
x=14.26, y=-1.22, z=3.5
2.
При
x=-4.5,
y=0.75
3.
При
x=3.74 4.
При
x=0.4 5.
При
x=-15.246, y=4.642
Лабораторная
работа №2 Цель
лабораторной
работы: освоить
использование
простейших
компонентов-переключателей
и создать приложение,
которое использует
разветвляющийся
алгоритм. Задание:
создать Windows-приложение
для вычисления
выражения
Z= Один
из возможных
вариантов
панели интерфейса
создаваемого
приложения
показан на рис.
2.1. Будем
размещать
компоненты
на Форме так,
чтобы они
соответствовали
панели, показанной
на рис 2.1.
При
создании приложений
в DELPHI часто
используются
компоненты
в виде кнопок-переключателей.
Состояние такой
кнопки (включено
- выключено)
визуально
отражается
на Форме. На
панели (рис.
2.1) представлены
кнопки-переключатели
двух типов:
CheckBox и RadioGroup . Компонент
CheckBox организует
кнопку независимого
переключателя,
с помощью которой
пользователь
может указать
свое решение
типа “да/нет”. Компонент
RadioGroup
организует
группу кнопок
- зависимых
переключателей.
При нажатии
одной из кнопок
группы все
остальные
кнопки выключаются. Поместите
на Форму компоненты
Label, Edit и Memo
в соответствии
с рис.2.1. Выберите
в Палитре Компонентов
на странице
Standard пиктограмму
Выберите
в Палитре Компонентов
Standard пиктограмму
Технология
создания процедур
обработки
событий FormСreate и
Button1Сlick ничем
не отличается
от предыдущей
работы. Внимательно
наберите
операторы этих
процедур, используя
текст модуля
UnRazvAlg. Unit
UnRazvAlg; interface uses Windows,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
ExtCtrls; type TForm1
= class(TForm) Label1:
TLabel; Edit1:
TEdit; Label2:
TLabel; Edit2:
TEdit; Label4:
TLabel; Memo1:
TMemo; Button1:
TButton; RadioGroup1:
TRadioGroup; CheckBox1:
TCheckBox; 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.5';
// начальное
значение X Edit2.Text:='1.8';
//
начальное
значение Y Memo1.Clear;
//
очистка Memo1 //
Вывод строки
в Memo1:
Memo1.Lines.Add(‘Лабораторная
работа №2 - Разветвляющийся
алгоритм’); end; //
Процедура
обработки
события нажатия
кнопки
Button1: procedure
TForm1.Button1Click(Sender:
TObject); var x,y,z,fx
: extended; //
объявление
локальных
переменных begin
x:=StrToFloat(Edit1.Text);
//
X присваивается
содержимое
Edit1
y:=StrToFloat(Edit2.Text);
//
Y присваивается
содержимое
Edit2 fx:=sin(x);
//
fx присваивается
начальное
значение //
Выбор функции,
соответствующей
нажатой кнопке: case
RadioGroup1.ItemIndex of 0:fx:=sin(x); 1:fx:=cos(x); end; //
Вычисление
выражения: if
x z:=fx else z:=y; //
Проверка состояния
кнопки CheckBox1: if
CheckBox1.Checked then
Memo1.Lines.Add('X
= '+Edit1.Text+ '
Y = '+Edit2.Text);
//
контрольный
вывод X, Y в Memo1 //
Вывод результата
в Memo1: Memo1.Lines.Add('
Z = '+FloatToStrF(z,ffFixed,8,3)); end; end. Если
нажата первая
кнопка RadioGroup1,
в переменную
целого типа
RadioGroup1.ItemIndex заносится
нуль, если вторая
– единица. Если
кнопка CheckBox1 нажата,
логическая
переменная
| |||||||||||||||||||||