![]() ТОР 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 и величины двух его углов α и β. Математические формулы, необходимые для решения задачи:
Этапы решение задачи: 1. Определение значений a, b (ввод величин a и b в память компьютера). 2. Расчет значений c, α и β по приведенным выше формулам. 3. Вывод значений c, α и β.
Блок-схема алгоритма Вид формы: Заголовки компонентов формы.
Двойной щелчок по кнопке «ВЫЧИСЛИТЬ» приведет к созданию процедуры: 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(сообщение, тип_сообщения, [список_кнопок], справка); где сообщение – текст, который будет отображен в окне сообщения; тип_сообщения – определяет внешний вид окна;
список_кнопок – константы (перечисляются через запятую), определяющие тип кнопок окна сообщения;
справка – номер окна справочной системы, которое будет выведено на экран, если нажать 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; Не нашли, что искали? Воспользуйтесь поиском:
|