Размещение надписей (TLabel)
На форме имеются четыре пояснительные надписи. Для нанесения таких надписей на форму используется компонент TLabel. Выберите в меню компонентов Standard пиктограмму
Обратите внимание, что в тексте программы автоматически появились четыре новых переменных типа .TLabel. В них хранятся пояснительные строки, которые можно изменять в процессе работы программы.
Размещение многострочного окна вывода (ТМето)
Для вывода результатов работы программы обычно используется текстовое окно, которое представлено компонентом (ТMemo). Выберите в меню компонентов пиктограмму
В тексте программы появилась переменная 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 пиктограмму
После этого два раза щелкните мышью на кнопке, появится текст программы, дополненной заголовком процедуры обработчика события - нажатия кнопки (Procedure TForm1.ButtonClick(Sender : TObject);).
Наберите текст этой процедуры, приведенный в примере.
Запуск и работа с программой
Запустить программу можно нажав Run в главном меню Run, или клавишу F9, или пиктограмму
Работа с программой происходит следующим образом. Нажмите (щелкните мышью) кнопку "Выполнить". В окне 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);