Мегаобучалка Главная | О нас | Обратная связь


Описание основных операторов, процедур, функций и методов



2019-12-29 151 Обсуждений (0)
Описание основных операторов, процедур, функций и методов 0.00 из 5.00 0 оценок




 

При написании программного кода задачи 1 использовался условный оператор. Он позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор - это средство ветвления вычислительного процесса.

Структура условного оператора имеет следующий вид [1]:

if <условие> then <оператор1> else <оператор2>,

где: if/ then/ else - зарезервированные слова (если, то, иначе);

<условие> - произвольное выражение логического типа;

<оператор1>, <оператор2> - любые операторы языка Object Pascal.

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть True (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть False (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>. Условными называются выражения, имеющие одно из двух возможных значений: истина или ложь. Такие выражения чаще всего получаются при сравнении переменных с помощью операций отношения =, <>, >, >=, <, <=. Сложные логические выражения составляются с использованием логических операций and (логическое И), or (логическое ИЛИ) и not (логическое НЕ).

В процессе создания программного приложения задачи1 использовались следующие функции:

функция преобразования типа

StrToFloat (const S: string): Extended;

преобразует строку S в вещественное число [4]. Строка должна содержать знак, цифры и десятичный разделитель в порядке, характерном для записи десятичных дробей. Также строка может содержать мантиссу, состоящую из знака, буквы Е и целого числа. Пробелы в начале и в конце строки игнорируются. Если S имеет другой формат, функция возвращает сообщение об ошибке;

функция обратного преобразования типа

FloatToStr (Value: Extended): String;

преобразует вещественное число в строку, возвращаемый результат типа string [4]. Строка, параметр использовать необязательно. При указании параметра задается формат отображения;

математическая функция

Abs (n);

абсолютное значение n [1] ;

математическая функция

Sqrt (n);

квадратный корень из n [1] (n ≥ 0);

математическая функция

Sqr (n);

возведение в квадрат n [1].

В приложении задачи 1 использованы методы обработки событий, происходящих на форме, код которых создан во время работы приложения:

procedure Button1Click (Sender: TObject); - нажатие на кнопку Button1;

procedure Button2Click (Sender: TObject); - нажатие на кнопку Button2;

procedure Button3Click (Sender: TObject); - нажатие на кнопку Button3.

Для определения расстояния до ближайшей стороны в задаче 1 была написана пользовательская функция function Rj (k, x, n, y, m: real): real;.

В процессе создания программного приложения задачи 2 использовались следующие функции:

функция преобразования типа

StrToInt (const S: string): Integer;

преобразует строку S, в которую записано целое число, в целочисленный тип [4] ;

функция преобразования типа

Round (x: real): integer;

преобразует вещественное число в целое [1] ;

математическая функция Sin (a); - синус угла а, заданного в радианах [1] ;

математическая функция Cos (a); - косинус угла а, заданного в радианах [1].

В приложении задачи 2 использованы методы обработки событий, происходящих на форме, код которых создан во время работы приложения:

procedure Button1Click (Sender: TObject); - нажатие на кнопку Button1;

procedure SpinEdit1Change (Sender: TObject); - изменение содержимого SpinEdit.

Методы объекта Canvas, обеспечивающие рисование на элементах формы:

MoveTo (x,y) - перемещает в указанную позицию (x,y) карандаш, не вычерчивает никаких графических примитивов;

LineTo (x,y) - рисует линию, рисование осуществляется из текущей позиции карандаша в позицию (х, у);

Rectangle (x1,y1,x2,y2) - рисует прямоугольник, параметры x1, y1, x2, y2 - координаты находящихся на одной диагонали углов прямоугольника;

Ellipse (x1,y1,x2,y2) - рисует эллипс, параметры x1, y1, x2, y2 - координаты диагональных углов области, внутри которой вычерчивается эллипс;

TextOut (x,y, <Текст>); - выводит текст на графическую поверхность, параметры (х, у) задают положение текста на экране, параметр <Текст> содержит строку текста, которую необходимо отобразить [1].

При рисовании графических примитивов использовался объект "карандаш" (Canvas. Pen), с помощью него прорисовка линий осуществлялась с различной толщиной и с различным стилем [1]:

Pen. Style: =<const>; - определяет вид линии (задается специальными константами: psSolid - сплошная линия, psDot - пунктирная линия с короткими штрихами, psDash - пунктирная линия с длинными штрихами);

Pen. Width: =<числовое значение в пикселях>; - задает толщину выводимой линии в пикселях.


Текст приложений

 

Программный код разработанного приложения к задаче 1.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls,Math;

type

TForm1 = class (TForm)

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label8: TLabel;

Button3: TButton;

Label9: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

procedure TForm1. Button2Click (Sender: TObject);

begin

close;

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

Label15. Caption: = ('');

end;

procedure TForm1. Button1Click (Sender: TObject);

var

x1,x2,x3,x0,y1,y2,y3,y0: real;

a,b,c,a1,b1,c1,a2,b2,c2,a3,b3,c3,t1,t2,t3: real;

d1,d2,d3,d: real;

h,g,w: real;

 // подпрограмма определения расстояния до ближайшей стороны

function Rj (k,x,n,y,m: real): real;

var

d0: real;

begin

d0: =abs (k*x+n*y+m) / (sqrt (sqr (k) +sqr (n)));

Rj: =d0;

end;

begin

 // ввод координат вершин треугольника

x1: =strtofloat (edit1. text);

y2: =strtofloat (edit2. text);

x2: =strtofloat (edit3. text);

y2: =strtofloat (edit4. text);

x3: =strtofloat (edit5. text);

y3: =strtofloat (edit6. text);

 // ввод координат точки

x0: =strtofloat (edit7. text);

y0: =strtofloat (edit8. text);

 // вычисление длин сторон треугольника

a: =sqrt (sqr (x2-x1) +sqr (y2-y1));

b: =sqrt (sqr (x3-x2) +sqr (y3-y2));

c: =sqrt (sqr (x1-x3) +sqr (y1-y3));

 // проверка условий существования треугольника

h: = a+b; g: =b+c; w: =a+c;

if ( (a>=g) or (b>=w) or (c>=h)) then Label15. Caption: ='Нет решения'

else begin

 // вычисление параметров уравнений сторон треугольника

a1: =y2-y1; b1: =x1-x2; c1: = (-x1) * (y2-y1) +y1* (x2-x1);

a2: =y3-y2; b2: =x2-x3; c2: = (-x2) * (y3-y2) +y2* (x3-x2);

a3: =y1-y3; b1: =x3-x1; c3: = (-x3) * (y1-y3) +y3* (x1-x3);

t1: =sqrt (sqr (a1) +sqr (b1));

t2: =sqrt (sqr (a2) +sqr (b2));

t3: =sqrt (sqr (a3) +sqr (b3));

 // проверка условия существования формулы для нахождения кратчайшего расстояния

if ( (t1=0) or (t2=0) or (t3=0)) then Label15. Caption: ='Нет решения'

else begin

 // вычисление кратчайшего расстояния с помощью подпрограммы к трем сторонам треугольника

d1: =Rj (a1,x0,b1,y0,c1);

d2: =Rj (a2,x0,b2,y0,c2);

d3: =Rj (a3,x0,b3,y0,c3);

 // нахождение наименьшего значения

if ( (d1<=d2) and (d1<=d3)) then d: =d1 else

if ( (d2<=d1) and (d2<=d3)) then d: =d2 else d: =d3;

end;

Label15. Caption: ='d='+floattostr (d) +'см';

end; end;

end.

Программный код разработанного приложения к задаче2.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Spin, Math;

type

TForm1 = class (TForm)

Panel1: TPanel;

Label1: TLabel;

Label3: TLabel;

Button1: TButton;

Panel2: TPanel;

Image1: TImage;

SpinEdit1: TSpinEdit;

Label2: TLabel;

Edit1: TEdit;

procedure Button1Click (Sender: TObject);

procedure SpinEdit1Change (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

procedure TForm1. Button1Click (Sender: TObject);

begin

close;

end;

procedure TForm1. SpinEdit1Change (Sender: TObject);

var

 // координаты основных точек определяющих положение механизма

xd,xb,xa,xc,x0,yd,yb,ya,yc,y0,o1,o2,o3,o4: integer;

 // значения радиуса барабана и срержней

od,dc,ab,ob,R: integer;

 // углы

w,w1: real;

begin

 // ввод значения радиуса барабана

R: =StrToInt (Edit1. Text);

od: =round (R);

ob: =round (od);

 // задание размеров стержней

dc: =90;

ab: =70;

 // определение значения угла W

W: =spinedit1. value*pi/180;

 // задание точки определяющей начало координат

x0: =round (form1. image1. width/2);

y0: =round (form1. image1. height/2);

 // вычисление значения угла W1

w1: =pi-pi/2-w;

 // вычисление координат точек определяющих положение механизма

xd: =x0+round (od*cos (w));

yd: =y0-round (od*sin (w));

xb: =x0-round (ob*cos (w1));

yb: =y0-round (ob*sin (w1));

xc: =x0+round (dc*cos (w));

yc: =y0+round (dc);

xa: =x0-round (ab);

ya: =y0+round (ab*cos (w1));

o1: =round (x0-od);

o2: =round (y0-od);

o3: =round (x0+od);

o4: =round (y0+od);

 // рисование элементов системы на экране и подписи основных точек механизма

form1. image1. picture: =nil;

with form1. image1. canvas do

begin

ellipse (o1,o2,o3,o4);

ellipse (xd-3, yd-3, xd+3, yd+3);

ellipse (xb-3, yb-3, xb+3, yb+3);

moveto (x0,y0);

Pen. Style: =psDot;

lineto (xd,yd);

moveto (x0,y0);

lineto (xb,yb);

Pen. Style: =psSolid;

moveto (xc,yc);

Rectangle (xc+10,yc+8,xc-10,yc-8);

Lineto (xc+400,yc);

lineto (xc-400,yc);

moveto (xc,yc+10);

Pen. Width: =2;

lineto (400,yc+10);

lineto (150,yc+10);

moveto (xc,yc-10);

lineto (400,yc-10);

lineto (150,yc-10);

moveto (xd,yd);

Pen. Width: =1;

lineto (xc,yc);

ellipse (xc-3, yc-3, xc+3, yc+3);

moveto (xb,yb);

lineto (xa,ya);

ellipse (xa-3, ya-3, xa+3, ya+3);

moveto (xa,ya);

Pen. Width: =2;

lineto (xa,ya+400);

lineto (xa,ya-400);

Pen. Width: =1;

moveto (xd+5,yd-8);

Textout (xd+5,yd-8,'D');

moveto (xb-5,yb-15);

Textout (xb-5,yb-15,'B');

moveto (xa-15,ya-8);

Textout (xa-15,ya-8,'A');

moveto (xc+10,yc-25);

Textout (xc+10,yc-25,'C');

moveto (x0+1,y0+1);

Textout (x0+1,y0+1,'O');

moveto (x0,y0+R);

Textout (x0,y0+R+3,'P');

Pen. Width: =2;

Lineto (x0+20,y0+R);

Lineto (x0-20,y0+R);

end;

end;

end.


Формы приложений

 

Одним из основных элементов приложения является форма, из которой пользователь управляет событиями, происходящими во время работы приложения.

Форма, на которой размещаются компоненты, является основой большинства приложений Delphi. Она представляет собой окно создаваемого приложения, определяет интерфейс приложения для общения с пользователем и непосредственно дает возможность редактировать взаимное расположение и свойства (цвет, размер) элементов интерфейса для придания ему большей эргономичности [4].

Для решения задачи 1 в Delphi было разработано приложение. Вид окна приложения до выполнения вычислений представлен на рисунке 5 (Исходная форма приложения задачи 1).

 

Рисунок 5 - Исходная форма приложения задачи 1

 

На рисунке 6 (Форма приложения с результатами вычислений задачи 1) представлена форма приложения с результатами вычислений. Различные варианты работы алгоритма приложения к задаче 1 отображены на рисунке А.9 (Форма приложения с результатами вычислений задачи 1), где треугольник не существует и на рисунке В.10 (Форма приложения с результатами вычислений задачи 1), где точка располагается на одной из вершин треугольника.

 

Рисунок 6 - Форма приложения с результатами вычислений задачи 1

 

На форме расположены следующие компоненты:

Label - компоненты для вывода текста (13 шт.);

Edit - поля редактирования (8 шт.);

Button - кнопки (3 шт.).

Для решения задачи 2 в Delphi было разработано приложение работы кинематической схемы. Исходный вид окна приложения представлен на рисунке 7 (Исходная форма приложения задачи 2), а на рисунке 8 (Форма приложения кинематической схемы) представлена форма приложения с изображением кинематической схемы, если радиус барабана R=30. Другие варианты работы алгоритма приложения кинематической схемы представлены на рисунке С.11 (Форма приложения кинематической схемы), где радиус барабана R= 40 и на рисунке D.12 (Форма приложения кинематической схемы), где радиус барабана R= 20.

 

Рисунок 7 - Исходная форма приложения задачи 2

 

Рисунок 8 - Форма приложения кинематической схемы

 

На форме размещены следующие компоненты:

Panel1, Panel2 - это контейнер для других компонентов и позволяет легко управлять компонентами, которые находятся на панели (компоненты, находящиеся на панели, наследуют свойства компонента Panel);

Button1 - командная кнопка для закрытия приложения;

Edit1 - поле редактирования, содержащее значение вводимой величины;

SpiEdit1 - строка, содержащая числовое значение переменной W;

Label1, Label2, Label3 - компоненты для вывода текста, содержащие текст и несущие информацию о назначении других компонентов;

Image1 - место для рисования схемы.


Заключение

 

При выполнении курсовой работы были закреплены навыки программирования. Изучены способы применения их на практике для решения вычислительных задач в визуальной среде Delphi на языке программирования Object Pascal.

В ходе выполнения работы были написаны приложения для двух задач разного типа.

Решение первой задачи основывается на организации вычислительного процесса для нахождения расстояния от заданной точки лежащей внутри заданного треугольника до ближайшей стороны этого треугольника. При решении используется программирование алгоритмов разветвляющейся структуры, реализующихся с помощью оператора условного перехода IF, который служит для изменения порядка выполнения операторов в зависимости от какого-то условия.

В первой задаче поставлены два условия:

система ограничений, формулы (1.8), проверки существования треугольника;

система ограничений, формулы (1.7), существования формулы (1.5) для расчета наименьшего расстояния до сторон треугольника.

Решение второй задачи предполагает использовать более широкий спектр базовых компонент при программировании:

Panel;

Button;

Edit;

SpiEdit;

Label;

Image.

Реализация заданной кинематической схемы позволяет изучить основы работы с графикой в визуальной среде Delphi.

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

MoveTo (x,y);

LineTo (x,y);

Rectangle (x1,y1,x2,y2);

Ellipse (x1,y1,x2,y2)).

Метод вывода текста на графическую поверхность - TextOut (x,y,<Текст>). Изучены свойства основного инструмента, позволяющего рисовать на графической поверхности - карандаш (Pen).

Задачами курсовой работы являлось:

изучить основы работы в среде Delphi;

изучить основные этапы решения задач на ЭВМ;

разработать математические модели решения задач;

изучить методы составления алгоритмов решения задач;

проанализировать результаты работы программ на ЭВМ.

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




2019-12-29 151 Обсуждений (0)
Описание основных операторов, процедур, функций и методов 0.00 из 5.00 0 оценок









Обсуждение в статье: Описание основных операторов, процедур, функций и методов

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (151)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)