русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задание 2


Дата добавления: 2015-06-12; просмотров: 488; Нарушение авторских прав


Построить график функции в графическом режиме.

Решение

 

Program GraficFun;

{КР2 Задание2 выполнено учащимся № группы ФИО № варианта}

Uses

Crt,Graph; {подключаем стандартные библиотеки}

Type

TFunction=function(x:real):real; {тип "Функция вида f(x)"}

Var

f:TFunction; {объявляем переменную-функцию}

grDriver, {переменная: тип видеоадаптера}

grMode, {переменная: номер видеорежима}

grError:integer; {переменная: результат инициализации}

 

{процедура прорисовки осей графика}

procedure DrawGrid(a,b:real);

Var

s:string[4];

max:real;

Begin

Line(0,GetMaxY div 2,GetMaxX,GetMaxY div 2);

Line(GetMaxX div 2,0,GetMaxX div 2,GetMaxY);

if a>b then

max:=a

Else

max:=b;

Str(-max:4:1,s);

OutTextXY(0,(GetMaxY div 2)+10,s);

end;

 

{процедура инициализации графического видеорежима}

procedure InitMyGraph;

Begin

{автоматическое определение типа драйвера}

grDriver:=Detect;

InitGraph(grDriver,grMode,''); {ИНИЦИАЛИЗАЦИЯ}

grError:=GraphResult; {результат инициализации}

if grError<>grOk then{если возникла ошибка}

Begin

writeln('Ошибкаинициализации графики');

{вывод текста конкретной ошибки}

writeln(GraphErrorMsg(grError));

Halt(1); {завершение программы, код возврата 1}

end;

end;

 

{выход из графического режима}

procedure CloseMyGraph;

Begin

CloseGraph; {выход из графического режима в текстовый}

end;

 

{процедура построения графика функции;

а, b – границы отрезка, n – количество промежутков}

procedure DrawFunction(var f:TFunction;a,b:real;n:integer);

Var

i:integer; {счетчик циклов}

x,y:real; {x – аргумент, y – значение функции}

dx:real; {dx – приращение аргумента}



sDx,sDy:real; {приращение x и y на пиксель}

y0,x0:integer; {экранные координаты: (x0,y0) – старые}

yi,xi:integer; {(xi,yi) – новые}

fmin,fmax:real; {макс./мин. значения f(x) на отрезке}

maxy,maxx:real; {макс. абсолютные значения на X и Y }

Begin

SetColor(Cyan); {цвет рисования – бирюзовый}

DrawGrid(a,b); {рисование осей системы координат}

SetColor(Yellow); {цвет рисования – желтый}

{считаем, что dx<>0, т.е. отрезок не вырожден (или а<>b)}

dx:=(b-a)/n;

{нахождение макс./мин. значений f(x) на отрезке}

x:=a; {начальное значение х}

fmin:=f(x); {начальное значение fmin}

:=f(x); {начальное значение fmax}

for i:=0 to n do{поиск действительных значений fmin/fmax}

Begin

x:=x+dx;

if f(x)>fmax then

fmax:=f(x);

if f(x)<fmin then

fmin:=f(x);

end;

if abs(fmax)>abs(fmin) then{если функция – константа}

maxy:=abs(fmax)

Else

maxy:=abs(fmin);

if abs(a)>abs(b) then

maxx:=abs(a)

Else

maxx:=abs(b);

{вывод графика на экране}

x:=a; {начальные значения}

y:=f(a);

{расчет относительного приращения координат}

sDy:=2*maxy/(GetMaxY);

sDx:=2*maxx/(GetMaxX);

x0:=(GetMaxX div 2)+Trunc(a/sDx);

{расчет "старой" точки}

y0:=(GetMaxY div 2)-Trunc(y/sDy);

for i:=1 to n do{цикл рисования графика}

Begin

x:=x+dx; {увеличить х}

y:=f(x); {новое значение y }

xi:=(GetMaxX div 2)+Trunc(x/sDx); {расчет "новой" точки}

yi:=(GetMaxY div 2)-Trunc(y/sDy);

Line(x0,y0,xi,yi); {рисуем линию }

x0:=xi; {"новые" значения стали "старыми"}

y0:=yi;

end;

{вывод пояснительного текста текущим цветом (желтым)}

OutTextXY(330,15,'Graficmashtabirovan');

OutTextXY(330,30,'pomax abs znacheniam X i Y');

end;

 

{$F+}

 

function MyFunc(t:real):real;

Begin

MyFunc:=exp(-t)*sin(2*t);

end;

 

Begin

f:=MyFunc;

InitMyGraph; {инициализация графики}

DrawFunction(f,-Pi,Pi,50); {рисуем функцию}

Repeat

until KeyPressed;

ReadKey;

CloseMyGraph; {выходим из графического режима}

end.



<== предыдущая лекция | следующая лекция ==>
Методические указания по выполнению | Задание 3


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.771 сек.