Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТPascal Сборник конспектов.doc
Скачиваний:
24
Добавлен:
10.11.2018
Размер:
924.67 Кб
Скачать

19. Функции пользователя.

Формат:

Function Имя(аргументы:Тип):Тип функции;

Раздел объявления собственных переменных

Begin

Раздел вычисления значения функции

Имя:=Значение;

End;

Объявлять функцию следует в разделе объявлений основной программы.

Пример 1:

Для известных a и b найти

В паскале нет функции tg(x), поэтому мы ее объявим:

Program Formula;

Var a,b,y: Real;

Function Tg(x:Real):Real;

Begin

Tg:=Sin(x)/Cos(x);

End;

Begin

Write(‘a b=’);ReadLn(a,b);

y:=(Tg(a)+Tg(b))/(1+Tg(a)*Tg(b));

WriteLn(‘y=’,y:8:4);

ReadLn;

End.

Объявление функции Tg, аргумент х – вещественный, значение Tg - вещественное

Правила вычисления Tg

Ввод данных

Вычисление y через функцию Tg

Вывод результата

Пример 2:

Имеется N разных предметов. Сколько разных сочетаний по K предметов можно сформировать? (K<=N);

Например из 4х букв С, Т, О, Л можно получить 6 сочетаний по две буквы СТ, СО, СЛ, ТО, ТЛ, ОЛ.

Общая формула: С=N!/(K!*(N-K)!)

Где N!=1*2*3*4…..*N – называется факториалом числа N.

Для решения этой задачи объявим функцию вычисления факториала:

Program Sochet;

Var N,K,C: Integer;

Function Fact(n:Integer):LongInt;

Var k: Integer;f: LongInt;

Begin

f:=1;

For k:=1 To n Do f:=f*k;

Fact:=f;

End;

Begin

Write(‘N K=’);ReadLn(N,K);

C:=Fact(N)/(Fact(K)*Fact(N-K));

WriteLn(‘C=’,C);

ReadLn;

End.

Объявляем функции факториал

Вводим вспомогательные переменные

Вычисляем значение факториала, как произведение всех чисел от 1 до n

Задаем значение функции Fact

Пользуемся новой функцией

20. Построение графиков функций.

Построить график функции y=sin(x) в следующем виде

Проблема 1. Смена системы координат.

Переход к машинной системе координат можно осуществить следующими формулами:

xm=((x-xL)/(xR-xL))*639

ym=((y-yU)/(yD-yU))*479

Проверьте эти формулы.

При x=xL получим xm=0, а при x=xR получим xm=639.

При y=yU получим ym=0, а при y=yD получим ym=479.

Проблема 2. Округление до целого.

В математической системе координат x и y являются вещественными числами типа Real, а координаты точки в машинной системе xm и ym должны быть целыми числами типа Integer, поэтому в наших формулах требуется еще и округление до целого числа.

xm:=Round(((x-xL)/(xR-xL))*639);

ym:=Round(((y-yU)/(yD-yU))*479);

Для удобства работы с программой мы объявим две функции, которые будут пересчитывать координаты точек из математической системы координат в машинную. Это будут xm(x) и ym(y).

Теперь если нам нужно будет изобразить на экране точку, которая имеет координаты x,y в математической системе, мы будем писать команду:

PutPixel(xm(x),ym(y),цвет);

Например, PutPixel(xm(0.3567),ym(1.8723),цвет);

Если нужно изобразить отрезок с координатами (x1,y1,x2,y2) в математической системе координат, то будем писать Line(xm(x1),ym(y1),xm(x2),ym(y2));

Программа для построения графиков функций.

P

Объявление функций для смены системы координат

Сетка

График y=sqr(x)-2

График y=1/x

rogram
gr_fun;

Uses Graph;

Var x,y:Real;

gd,gm,xL,xR,yU,yD,n:Integer;

s: String;

Function xm(x:Real):Integer;

Begin

xm:=Round((x-xL)*639/(xR-xL));

End;

Function ym(y:Real):Integer;

Begin

ym:=Round((y-yU)*479/(yD-yU));

End;

B

Новая система координат

egin

gd:=Detect;InitGraph(gd,gm,'');

xL:=-4;xR:=4;yU:=3;yD:=-3;

Setcolor(8);

For n:=xL to xR do line(xm(n),ym(yU),xm(n),ym(yD));

For n:=yD to yU do line(xm(xL),ym(n),xm(xR),ym(n));

S

Оси

etColor(15);

Line(xm(xL),ym(0),xm(xR),ym(0));

Line(xm(0),ym(yU),xm(0),ym(yD));

S

Метки осей

etTextStyle(2,0,6);

For n:=xL To xR Do Begin Str(n,s);OutTextXY(xm(n)-10,ym(0),s);End;

For n:=yD To yU Do Begin Str(n,s);OutTextXY(xm(0)-10,ym(n),s);End;

For n:=1 To 5000 Do Begin

График y=sin(x)

x:=xL+n*((xR-xL)/5000);

y:=Sin(x);PutPixel(xm(x),ym(y),14);

SetColor(14);OutTextXY(10,10,'y=Sin(x)');

y:=Sqr(x)-2;PutPixel(xm(x),ym(y),2);

SetColor(2);OutTextXY(10,40,'y=Sqr(x)-2');

if x<>0 Then Begin y:=1/x;PutPixel(xm(x),ym(y),1);End;

SetColor(1);OutTextXY(10,70,'y=1/x');

End;

ReadLn;

CloseGraph;

End.

Обратите внимание на выделенные прямоугольниками части программы. Именно в этих местах нужно делать изменения при решении задач на построение графиков функций.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]