Оператор присваивания. В Delphi оператор присваивания состоит из двух символов: двоеточия и знака равенства
В Delphi оператор присваивания состоит из двух символов: двоеточия и знака равенства. Эти символы всегда пишут слитно. Пробелы допускаются перед символом двоеточия и после символа равенства.
В общем случае оператор присваивания имеет вид:
имя_переменной:= значение;
где значение это выражение, переменная, константа или функция.
Выполняется оператор так. Сначала вычисляется значение выражения указанного в правой части оператора, а затем его результат записывается в область памяти, имя которой указано слева.
Например, запись a:=b означает, что переменной а присваивается значение b.
Типы переменных a и b должны совпадать или быть совместимыми для присваивания, то есть тип, к которому принадлежит переменная b, должен находиться в границах типа переменной а.
Оператор присваивания, как и любой другой оператор Delphi заканчивается точкой с запятой.
Например,
b:=3;
a:=b;
c:=a+2*b;
c:=c+1;
a:=a*3;
ЗАДАЧА. Пусть в переменной а хранится значение равное 3, а в переменную b записали число 5. Поменять местами значения переменных а и b.

Для решения задачи понадобится дополнительная переменная c. В ней временно сохраняется значение переменной а. Затем, значение переменной b записывается в переменную a, а значение переменной c в переменную b.
с:=a; // Шаг 1. с=3
a:=b; // Шаг 2. a=5
b:=c; // Шаг 3. b=3
ЗАДАЧА. Заданы длины двух катетов прямоугольного треугольника a, b. Вычислить длину гипотенузы c и величины двух его углов α и β.

Математические формулы, необходимые для решения задачи:
, , β=π/2-α.
Этапы решение задачи:
1. Определение значений a, b (ввод величин a и b в память компьютера).
2. Расчет значений c, α и β по приведенным выше формулам.
3. Вывод значений c, α и β.
Блок-схема алгоритма

Вид формы:

Заголовки компонентов формы.
Компонент
| Свойство Caption
| Form1
| Параметры треугольника
| Label1
| Катеты треугольника
| Label2
| a=
| Label3
| b=
| Label4
| Гипотенуза с=
| Label5
| Угол alfa=
| Label5
| Угол betta=
| Button1
| ВЫЧИСЛИТЬ
|
Двойной щелчок по кнопке «ВЫЧИСЛИТЬ» приведет к созданию процедуры:
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
и ее описанию в разделе interface.
Созданная процедура не содержит ни одной команды. Задача программиста заполнить шаблон описаниями и операторами. В нашем случае процедура будет иметь вид:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,alfa,betta: real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=sqrt(sqr(a)+sqr(b));
alfa:=arctan(a/b);
betta:=pi/2-alfa;
alfa:=alfa*180/pi;
betta:=betta*180/pi;
Label4.Caption:='Гипотенуза с='+FloatToStr(c);
Label5.Caption:='Угол alfa='+FloatToStr(alfa);
Label6.Caption:='Угол betta='+FloatToStr(betta);
end;
В результате весь программный код имеет вид:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,alfa,betta:real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=sqrt(sqr(a)+sqr(b));
alfa:=arctan(a/b);
betta:=pi/2-alfa;
alfa:=alfa*180/pi;
betta:=betta*180/pi;
Label4.Caption:='Гипотенуза с='+FloatToStr(c);
Label5.Caption:='Угол alfa='+FloatToStr(alfa);
Label6.Caption:='Угол betta='+FloatToStr(betta);
end;
end.
Результат работы программы

ЗАДАЧА. Зная a, b, c – длины сторон треугольника, вычислить площадь S и периметр P этого треугольника.
Входные данные: a, b, c.
Выходные данные: S, P.
Для вычисления площади применим формулу Герона:
,
где r – полупериметр.

Компонентам типа надпись Label5 и Label6, предназначенным для вывода результатов, определим свойство
Visible=false.
Компонентам, предназначенным для ввода данных Edit1, Edit2, Edit3,
определим свойство Text - пусто, чтобы пользователю было удобнее вводить исходные данные
По умолчанию свойство Text совпадает с именем компонента, и пользователю пришлось бы их удалять перед вводом исходных данных.
Разместим на форме две кнопки. Будет обрабатываться два события:
· щелчок по кнопке Button1 запускает расчет по формулам;
· щелчок по кнопке Button2 закрывает форму.
Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//кнопка ВЫЧИСЛИТЬ.
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,S,r:real;
begin
//Ввод исходных данных.
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=StrToFloat(Edit3.Text);
//Вычисление полупериметра.
r:=(a+b+c)/2;
//Вычисление площади.
S:=sqrt(r*(r-a)*(r-b)*(r-c));
//Визуализация компонента.
Label5.Visible:=true;
//Форматированный вывод.
Label5.Caption:= 'Периметр треугольника'+chr(13)
+FloatToStrF(2*r,ffFixed,5,2)+chr(13)+'Площадь треугольника'+chr(13)
+FloatToStrF(S,ffFixed,5,2);
end;
//Кнопка ЗАВЕРШЕНИЕ РАБОТЫ.
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
end.

Составной оператор
Составной оператор – группа операторов языка Pascal, отделенных друг от друга точкой с запятой, начинающихся со служебного слова begin и заканчивающихся словом end:
begin
оператор_1;
...
оператор_n
end;
Транслятор воспринимает составной оператор как один оператор.
Условные операторы
Алгоритмы разветвленной структуры применяются, когда в зависимости от некоторого условия необходимо выполнить либо одно, либо другое действие.
Условный оператор, соответствующий приведенной блок-схеме, имеет вид:
if условие then
оператор_1
else
оператор_2;
Работа условного оператора организована следующим образом. Сначала вычисляется выражение, записанное в условии. Если оно имеет значение истина (True), то выполняется оператор_1. В противном случае, когда выражение имеет значение ложь (False), оператор_1 игнорируется и управление передается оператору_2.
Если в задаче требуется, чтобы в зависимости от значения условия выполнялся не один оператор, а несколько, их необходимо заключать в операторные скобки как составной оператор:
if условие then
begin
оператор_1;
оператор_2;
…
end
else
begin
оператор_1;
оператор_2;
…
end;
Если в зависимости от условия выполняется действие, а в противном случае ничего не происходит, то алгоритм имет вид:

Условный оператор в этом случаеимет конструкцию:
if условие then оператор;
или
if условие then
begin
оператор_1;
оператор_2;
…
end;
В таком «усеченном» виде условный оператор работает так: оператор (группа операторов) либо выполняется, либо пропускается, в зависимости от значения выражения, представляющего условие.
Условные операторы могут быть вложены друг в друга. При вложениях условных операторов всегда действует правило: альтернатива else считается принадлежащей ближайшему if, имеющему ветвь else. Например, в записи
if условие_1 then
if условие_2 then
оператор_А
else оператор_Б;
оператор_Б относится к условию_2, а в конструкции
if условие_1 then
begin
if условие_2 then
оператор_А;
end
else оператор_Б;
он принадлежит оператору if с условием_1.
Для сравнения переменных в условных выражениях применяют операции отношения: =, <>, <, >, <=, >=. Условные выражения составляют с использованием логических операций and, or и not. В языке Pascal приоритет операций отношения меньше, чем у логических операций, поэтому составные части сложного логического выражения заключают в скобки.
Допустим, нужно проверить, принадлежит ли переменная х интервалу [a, b].
Условный оператор будет иметь вид:
if (x>=a) and (x<=b) then….
Запись
if x>=a and x<=b then…
не верна, так как фактически будет вычисляться значение выражения
x>= (a and x) <=b.
ЗАДАЧА 1. Дано вещественное число x. Для функции, график которой приведен ниже, вычислить y = f (x).

Аналитическая запись функции:

Словесный алгоритм:
1. Начало алгоритма.
2. Ввод числа x (аргумент функции).
3. Если значение x меньше либо равно -2, то переход к п. 4, иначе переход к п. 5.
4. Вычисление значения функции: y=4, переход к п. 8.
5. Если значение x больше либо равно 1, то переход к п. 6, иначе переход к п. 7.
6. Вычисление значения функции: y=1, переход к п. 8.
7. Вычисление значения функции: y=x2.
8. Вывод значений аргумента x и функции y.
9. Конец алгоритма.


Компонент TImage позволяет отобразить на форме графический файл с расширениями BMP, JPG, JPEG или WMF.
Некоторые свойства компонента Image1:
• AutoSize: – если значение свойства True, то размеры компонента настраиваются (увеличиваются или уменьшаются) по размерам загружаемого рисунка;
• Stretch: – если это свойство установлено в значение True, то будут изменяться размеры изображения, в этом случае оно как бы «натягивается» на клиентскую область;
• Center: – если это свойство установлено в значение True, изображение центрируется в пределах клиентской области, иначе оно располагается в ее верхнем левом углу.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
edt1: TEdit;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
lbl5: TLabel;
btn1: TButton;
btn2: TButton;
btn3: TButton;
img1: TImage;
procedure btn3Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//Открытие формы
procedure TForm1.FormCreate(Sender:
TObject);
begin
Img1.Stretch:=True;
Img1.Picture.LoadFromFile
('ris2.bmp');
end;
//Кнопка ОЧИСТИТЬ
procedure TForm1.btn3Click(Sender:
TObject);
begin
edt1.Text:='0,0';
lbl5.Caption:='';
end;
//Кнопка ЗАКРЫТЬ
procedure TForm1.btn2Click(Sender:
TObject);
begin
close;
end;
//Кнопка ВЫЧИСЛИТЬ
procedure TForm1.btn1Click(Sender:
TObject);
var x,y:Real;
begin
x:=strtofloat(Edt1.Text);
if x<=-2 then y:=4
else if x>=1 then y:=1
else y:=Sqr(x);
lbl5.Caption:=
floattostrF(y,ffFixed,5,2);
end;
end.
Уравнение прямой на плоскости


ЗАДАЧА 2. Дано вещественное число x. Для функции, график которой приведен ниже вычислить y = f (x).






Аналитическая запись функции:


//Кнопка ВЫЧИСЛИТЬ
procedure TForm1.btn1Click(Sender:
TObject);
var x,y:Real;
begin
x:=strtofloat(Edt1.Text);
if x<=0 then y:=x/2
else y:=2
lbl5.Caption:=4/3*x+1;
floattostrF(y,ffFixed,5,2);
end;
Вывод сообщений
Для вывода сообщений в отдельном окне применяют функцию:
MessageDlg(сообщение,
тип_сообщения,
[список_кнопок],
справка);
где
сообщение – текст, который будет отображен в окне сообщения;
тип_сообщения – определяет внешний вид окна;
Параметр
| Тип окна сообщения
| mtInformation
| информационное
| mtWarning
| предупредительное
| mtError
| сообщение об ошибке
| mtConfirmation
| запрос на подтверждение
| mtCustom
| обычное
| список_кнопок – константы (перечисляются через запятую), определяющие тип кнопок окна сообщения;
Константа
| Кнопка
| mbYes
| Да
| mbNo
| Нет
| mbOk
| Ок
| mbCancel
| Отмена
| mbAbort
| Прервать
| mbRetry
| Повторить
| mbIgnore
| Пропустить
| mbHelp
| Помощь
|
справка – номер окна справочной системы, которое будет выведено на экран, если нажать F1, параметр равен нулю, если использование справки не предусмотрено.
ЗАДАЧА 3. Даны вещественные числа x и y. Определить принадлежит ли точка с координатами (x; y) заштрихованной части плоскости.

Плоскость ограничена линиями
x =-1, x =3, y =-2 и y =4.
Значит точка с координатами (x; y) принадлежит этой плоскости, если будут выполняться следующие условия: x ³ -1, x£ 3, y ³ -2 и y £ 4.
Иначе точка лежит за пределами плоскости.


procedure TForm1.FormCreate(Sender:
TObject);
begin
Img1.Stretch:=True;
Img1.Picture.LoadFromFile('ris.bmp');
end;
procedure TForm1.btn2Click(Sender:
TObject);
begin
Close;
end;
procedure TForm1.btn3Click(Sender:
TObject);
begin
edt1.Text:='0,0';
edt2.Text:='0,0';
end;
procedure TForm1.btn1Click(Sender:
TObject);
var x,y:Real;
begin
x:=strtofloat(Edt1.Text);
y:=strtofloat(Edt2.Text);
if (x>=-1) and (x<=3) and (y>=-2) and (y<=4) then
MessageDlg('Точка
принадлежит плоскости',
mtInformation,[mbOk],0)
else
MessageDlg('Точка
не принадлежит плоскости',
mtInformation,[mbOk],0);
end;


Обработка ошибок
Для контроля вводимых данных, применяют процедуру
Val(S,X,Kod),
которая преобразовывает строку S в число X (целое или вещественное). Если преобразование прошло успешно, то параметр Kod=0, а результат преобразования записывается в переменную X. В противном случае Kod содержит номер позиции в строке S, где произошла ошибка и содержимое переменной X не меняется.
ЗАДАЧА 4. Даны вещественные числа x и y. Определить принадлежит ли точка с координатами (x; y) заштрихованной части плоскости.

Составим уравнения линий, ограничивающих заданные плоскости.

Треугольник в первой координатной области ограничен линиями, проходящими через точки:
1. (0, 1) — (4, 3);
2. (4, 3) — (5, 1);
3. (5, 1) — (0, 1).
Следовательно,
уравнение первой линии
,
уравнение второй линии

и уравнение третьей линии .
Линии, которые формируют треугольник во второй координатной области, проходят через точки:
4. (0, 1) — (-4, 3);
5. (-4, 3) — (-5, 1);
6. (-5, 1) — (0, 1);
Следовательно,
уравнение первой линии

уравнение второй линии

и уравнение третьей линии .
Условие попадания точки в заштрихованную часть плоскости:
или 
procedure TForm1.btn1Click(Sender:
TObject);
var x,y:Real;
kod1, kod2:integer;
begin
val(edt1.Text,x,kod1);
val(edt2.Text,y,kod2);
if (kod1=0) and (kod2=0) then
begin
if ((y<=1+0.5*x) and
(y<=-2*x+11) and
(y>=1)) or
((y<=1-0.5*x) and
(y<=2*x+11) and
(y>=1)) then
MessageDlg('Точка
принадлежит плоскости',
mtInformation,[mbOk],0)
else
MessageDlg('Точка не
принадлежит плоскости ',
mtInformation,[mbOk],0);
end
else
begin
MessageDlg('Введите число!',
mtWarning,[mbOk],0);
edt1.Text:='0.0';
edt2.Text:='0.0';
end;
end;

Не нашли, что искали? Воспользуйтесь поиском:
|