Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Оператор присваивания. В 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, 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;






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

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных