Смекни!
smekni.com

Разработка программного обеспечения (стр. 4 из 8)

Размещение надписей (TLabel)

На форме имеются четыре пояснительные надписи. Для нанесения таких надписей на форму используется компонент TLabel. Выберите в меню компонентов Standard пиктограмму

, щелкните на ней мышью. После этого в нужном месте формы щелкните мышью, появится надпись Label1. Проделайте это для четырех надписей. Для каждой надписи, щелкнув на ней мышью, отрегулируйте размер и, изменив свойство Caption инспектора Объектов, введите строку, например "Введите значение X:", а также выберите размер символов (свойства Font).

Обратите внимание, что в тексте программы автоматически появились четыре новых переменных типа .TLabel. В них хранятся пояснительные строки, которые можно изменять в процессе работы программы.

Размещение многострочного окна вывода (ТМето)

Для вывода результатов работы программы обычно используется текстовое окно, которое представлено компонентом (ТMemo). Выберите в меню компонентов пиктограмму

и поместите компонент ТМеmо на форму. С помощью мыши отрегулируйте его размеры и местоположение. После установки с помощью инспектора свойства ScrollBars - SSBoth в окне появятся вертикальная и горизонтальная полосы прокрутки.

В тексте программы появилась переменная Memo1 типа ТMemo. Информация, которая отображается построчно в окно типа ТMemo, находится в массиве строк Memo1.Lines. Каждая строка имеет тип String.

Для чистки окна используется метод Memo1.Сlеаr. Для того чтобы добавить новую строку в окно, используется метод Memo1.Lines.Add (переменная типа String).

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

Например, если переменная u:=100 целого типа, то метод Memo1.Line.Add сделает это и в окне появится строка "Значение u=100". Если переменная u:=-256,38666 действительная, то при использовании метода Meno1.Lines.Add('Значение u='+FloatToStrF(u.ffFixed,8,2)) будет выведена строка "Значение u= -256.39". При этом под все число отводится восемь позиций, из которых две позиции занимает его дробная часть.

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

Написание программы обработки события нажатия кнопки(ButtonClick)

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

. С помощью инспектора объектов измените заголовок (Caption) - Button1 на слово "Выполнить" или другое по вашему желанию. Отрегулируйте положение и размер кнопки.

После этого два раза щелкните мышью на кнопке, появится текст программы, дополненной заголовком процедуры обработчика события - нажатия кнопки (Procedure TForm1.ButtonClick(Sender : TObject);).

Наберите текст этой процедуры, приведенный в примере.

Запуск и работа с программой

Запустить программу можно нажав Run в главном меню Run, или клавишу F9, или пиктограмму

. При этом происходит трансляция и, если нет ошибок, компоновка программы и создание единого загружаемого файла с расширением .exe. На экране появляется активная форма программы.

Работа с программой происходит следующим образом. Нажмите (щелкните мышью) кнопку "Выполнить". В окне Memo1 появляется результат. Измените исходные значения х, у, z в окнах Edit и снова нажмите кнопку "Выполнить" - появятся новые результаты. Завершить работу программы можно нажав или в главном меню Run, или кнопку {}на форме.

Текстпрограммы:

unit tema1;

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;

Buttonl : TButfon;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Implementation

{$R*.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var

x, y, z, a, b, c, u : extended;

begin

x:=StrToFloat(Edit1.Text); // Считываетсязначение X

Memo1.Lines.Add('X = '+Edit1.Text); // Вывод X вокно Memo1

y:=StrToFloat(Edit2.Text); // Считывается значение Y

Memo1.Lines.Add('Y = '+Edit2.Text); // Вывод Y вокно Memo1

z:=StrToFloat(Edit3.Text); // Ситывается значение Z

Memo1.Lines.Add('Z = '+Edit3.Text); // Вывод Z вокно Memo1

// Вычисляем арифметическое выражение

a:=Sqr(Sin(x+y)/Cos(x+y));

b:=Exp(y-z);

c:=Sqrt(Cos(Sqr(x))+Sin(Sqr(z)));

u:=a-b*c;

// Выводим результат в окно Memo1

Memo1.Lines.Add('РезультатU = '+FloatToStrF(u,ffFixed,8,3));

end;

end.

Кнопки-переключатели в DELPHI

При создании программ и DELPHI дня организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально отражается на форме.

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

Компонент TRadioGroup организует группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,..), который анализируется с помощью оператора case.

Пример написания программы разветвляющегося алгоритма

Задание: ввести три числа - х, у, z. Вычислить по усмотрению u=sin(x) или

u=cos(x), или u=tg(х). Найти по желанию максимальное из трех чисел: max(x, у, z), или min (|x|, |у|, |z|).

Создать форму и написать соответствующую программу.

Создание формы

Создайте форму, такую же как в первом задании, скорректировав текст надписей и положение окон TEdit.

Работа с компонентом TCheckBox

Выберите в меню компонентов Standard пиктограмму {} и поместите ее в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на "maabs". В тексте программы появилась переменная CheckBox типа TCheckBox. Теперь в зависимости от того, нажата или нет кнопка, булевская переменная CheckBox.Checked будет принимать значения True или False.

Работа с компонентом TRadioGroup

Выберите в меню компонентов Standard пиктограмму {} и поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1. Замените заголовок (Caption) на U(х). Длятого чтобы разместить на компоненте кнопки, необходимо свойство Columns установить равным единице (кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три строки с именами: в первой строке sin(x), во второй - cos(х), в третьей - tg(х), нажмите ОК.

После этого на форме внутри окаймления появится три кнопки-переключателя с введенными надписями.

Обратите внимание на то, что в тексте программы появилась переменная RadioGroup типа TRadioGroup. Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroup1.ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.

Создание обработчиков событий FormCreate и Botton1Click

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

Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно.

Текст программы приведен ниже.

unit tema2;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

CheckBox1: TCheckBox;

RadioGroup1: TRadioGroup;

Memo1: TMemo;

Button1:TButton;

Edit1:TEdit;

Label1: TLabel;

Label2: TLabel;

Edit2:TEdit;

Label3: TLabel:

Edi3: TEdlt;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{Private declarations}

public

{public declarations}

var

Form1: TForm1;

implementation

{$R.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='0,1';

Edit3.Ttext:='0,356';

Memo1.Clear;

Memo1.Lines.Add('Рез-ты ст.гр. 9383 Валента А.А.');

end;

procedure TForm1.Button1Click(Sender: TObject);

var x, y, z, u, ma : extended;

begin

// Ввод исходных данных и их вывод в окно Memo1

x:=StrToFloat(Edit1.Text);

Memo1.Lines.Add('x='+Edit1.Text);

y:=StrToFloat(Edlt2.Text);

Memo1.Lines.Add('y='+Edit2.Text);

z:=StrToFloat(Edtt3.Text);

Memo1.Lines.Add('z='+Edit3.Text);

// Проверка номера нажатой кнопки и выбор соответствующей ей функции

case RadioGroup.ltemlndex of

0: u:=cos(x);

1: u:=sin(x);

2: u:=sin(x)/cos(x);

end:

// ПроверкасостояниякнопкиСheckBox1

if CheckBox1.Checked then

begin

u:=abs(u);

y:=abs(y);

z:=abs(z)

end;

// Нахождение максимального из трех чисел

if u>y then ma:=u else ma: =y;

if z>ma then ma:=z;

if CheckBox1.Checked then

Memo1.Lines.Add(' maxabs='+FloatToStrF(ma,ffFixed,8,2))

else

Memo1.Lines.Add('max='+FtoatToStrF(ma,ffGeneral,8,2));

end;

end.

Пример написания программы циклического алгоритма

Задание: написать и отладить программу, которая выводит таблицу значений функции S(х) для х изменяющихся в интервале от XI до Х2 с шагом h.

Текст программы приведен ниже.

unit tema3;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

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';

Edit2.Text :='2';

Edit3.Text :='5';

Edit4.Text :='0.25';

Memo1.Clear;

Memo.Lines.Add('Результатыст. гр. 9383 ВалетаА.В.');

end;

procedure TForm1.Button1Cllck(Sender: TObject);

var x1, x2, x, h, a, s : extended;

N, k, c : integer;

begin

x1:=StrToFloat(Edit1.Text);

Memo1.Lines.Add('x1='+Edit1.Text);

x2:=StrToFloat(Edit2.Text);