«аочное дистанционное образование с получением государственного диплома через Internet










ѕолучить информацию о поступлении
 
√лавна€ Ќовости  арта сайта ‘отоальбом √остева€ книга  онтакты

{LTS}

 

”пражнение 1

—оздайте приложение, которое строит пиксел€ми график функции y=3*Sin(x)*Cos(x/6).

 
—оздайте форму, свойству Caption которой присвойте значение Ђ√рафик функцииї. ¬ окне »нспектора объектов задайте дл€ свойства Forml.ClientHeight (высота окна формы) значение 300, дл€ свойства Forml.ClientWidht (ширина окна формы) задайте значение 500, дл€ свойства Forml.Color задайте значение clWhite (белый).

ƒл€ создани€ процедуры обработчика событи€ OnPaint (перерисовать изображение) выберите в окне »нспектора объектов объект Forml и на странице Events произведите двойной щелчок на пустом поле списка в событии OnPaint. ѕосле этого в окне –едактора кода будет сгенерирована заготовка процедуры обработчика событи€ procedure TForml.FormPaint(Sender: TObject); ¬ведите в текст процедуры вызов процедуры построени€ графика функции DrawGraph:

procedure TForml.FormPaint(Sender: TObject);
begin
DrawGraph; {вызов процедуры построени€ графика функции}
end:

“ак как при программировании процедуры построени€ графика функции нам придетс€ использовать дл€ рисовани€ Canvas (холст, канва), окрашива€ пикселы канвы, изучите справочную информацию о свойствах Canvas и Pixels. ѕоскольку перед построением графика придетс€ чертить пр€мые линии Ц оси координат и выводить текст на изображении, то следует также изучить справку Delphi о методах MoveTo, LineTo и TextOut.

¬ св€зи с тем, что при построении графика функции необходимо задавать целочисленные значени€ координат окрашиваемого пиксела, а результат вычислени€ функции €вл€етс€ вещественным числом, следует ознакомитьс€ со справочной информацией Delphi, касающейс€ функции Round, округл€ющей вещественные числа до ближайшего целого числа.

ќткройте окно –едактора кода и введите текст процедуры построени€ графика функции:

procedure DrawGraph: // ѕостроение графика функции
var
xl,x2: real; {границы изменени€ аргумента функции}
yl,y2: real; {границы изменени€ значени€ функции}
х : real; {аргумент функции}
у : real; {значение функции в точке х}
dx : real; {приращение аргумента}
l,b : integer; {левый нижний угол области вывода графика}
w,h: integer; {ширина и высота области вывода графика}
mx,my: real; {масштаб по ос€м X и Y}
хќ,уќ: integer; {точка - начало координат}
 
Function f(x:real):real; {функци€, график которой надо построить}
begin
f:= 3*Sin(x)*Cos(x/6);
end;
 
begin {область вывода графика на форме}
1:=10; {X - координата левого верхнего угла}
b:=Forml.—1ientHeight-20; (” - координата левого верхнего угла}
h:=Forml.ClientHeight-40; // высота
w:=Forml.Width-40; // ширина
х1:=0; // нижн€€ граница диапазона аргумента
х2:=25; // верхн€€ граница диапазона аргумента
dx:=0.01; // шаг аргумента
{определение максимального и минимального значений функции на отрезке [xl,x2] дл€ масштабировани€}
yl:=f(xl); {минимальное значение функции}
y2:=f(xl); {максимальное значение функции}
x:=xl;
{вычисл€ть значени€ функции дл€ значений х<=х2 и определить максимальное и минимальное значени€ дл€ масштабировани€}
repeat y:=f(x); if y
yl;=y; {если текущее значение у меньше минимального, то у1:=у}
if y>y2 then у2:=у; {если текущее значение у больше минимального, то у2:=у}
x:=x+dx; {перейти к следующему значению х}
until (x>=x2); {как только х>=х2. прекратить}
my:=h/abs(y2-yl); // масштаб по оси Y mx:=w/abs(x2-xl); // масштаб по оси X
{задать начало координат} х0:=1;
yO:=b-Abs(Round(yl*my));
with Forml.Canvas do {рисование графика}
begin
{начертить оси координат} MoveTo(I ,b);
LineTo(I,.b-h); {ось x} MoveTo(xO,yO);
LineTo(xO+w.yO); {ось у} Text0ut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
{вывести максимальное значение}
TextOut(xO+w,yO,'x'); // подписать ось х TextOut(1+5,b,FloatToStrF(yl,ffGeneral,6,3));
{вывести минимальное значение}
Text0ut(l-7,b-h-5,'у'); // подписать ось у
{построение графика} x:=xl:
repeat {повтор€ть рисовать точки}
y:=f(x); Forml. Canvas. Pixel s[xO+Round(x*mx),yO-Round(y*rny)]:=clRed;
{clRed - красный цвет рисовани€ графика}
x:=x+dx;
until (x>=x2); {прекратить, как только х>=х2}
end;
end;

»зучите текст процедуры построени€ графика функции DrawGraph. —охраните, откомпилируйте и запустите приложение на выполнение. ”бедитесь, что в окне приложени€ производитс€ построение графика заданной функции.

≈сли вы попытаетесь изменить размеры окна, то увидите, что график искажаетс€, так как он не перерисовываетс€ в соответствии с новыми размерами окна.

ƒл€ того чтобы перерисовывать изображение при изменении размеров формы, следует создать обработчик событи€ On Resize, определ€ющий новые параметры клиентской области и вызывающий процедуру построени€ графика функции DrawGraph. Ёта процедура может выгл€деть следующим образом:

procedure TForml.FormResizeCSender: TObject);
begin
with Forml do Canvas. FillRect (Rect (0,0, ClientWicith, ClientHeight)):
{заполнение пр€моугольника канвы, указанного параметром Rect, где ClientWidth.ClientHeight -ширина и высота клиентской области в пикселах}
DrawGraph; end;

—охраните измененное приложение, откомпилируйте его и проверьте его работу. ”бедитесь, что в окне приложени€ выполн€етс€ построение графика заданной функции, причем при изменении размеров окна происходит корректное перерисовывание графика в новом масштабе.


”знать как сэкономить в кризис моно на сайте ekonom-it.ru

ќписание типа "«апись" ”пражнение є1 дл€ работы с запис€ми ”пражнение є2 дл€ работы с запис€ми ”пражнение є2 дл€ обработки строк √рафика в Delphi ”пражнение 2 ”пражнение 3 ”пражнение 4 ”пражнение 5 ѕрограммы на Pascal 


 
     
   
 


ѕриглашаем прин€ть участие в круглом столе!
подробнее   >>>
 

»нститут ћенеджмента, Ёкономики и »нноваций начинает набор на курсы повышени€ квалификации!
подробнее   >>>
 

”важемые студенты јЌќ ¬ѕќ »ћЁи»!
подробнее   >>>
 

Ќачинаетс€ набор на курсы повышени€ квалификации!
подробнее   >>>
 

ѕриглашаем прин€ть участие в конференци€х!
подробнее   >>>
 


все новости...

 


–ассылки Subscribe.Ru
—овременное образование
ѕодписатьс€ письмом