- •1. Структура программы.
- •2. Раздел объявлений.
- •3. Раздел исполняемых операторов.
- •4. Решение вычислительных задач.
- •5. Структура графической программы.
- •6. Графические операторы.
- •7. Решение графических задач.
- •8. Блок операторов.
- •9. Оператор ветвления.
- •10. Решение задач на ветвления.
- •11. Оператор цикла с параметром.
- •12. Решение задач на цикл с параметром.
- •13. Двойные и тройные циклы.
- •14. Решение задач на двойные циклы.
- •15. Решение задач на циклы по окружности.
- •16. Использование генератора случайных чисел.
- •17. Операции над строками.
- •18. Решение задач на обработку строк.
- •19. Функции пользователя.
- •20. Построение графиков функций.
- •21. Решение задач на построение графиков функций.
- •22. Подпрограммы.
- •23. Решение задач на подпрограммы.
- •1. Написать программу для построения изображения:
- •2. Добавьте в вашу программу следующие элементы:
- •3. Дополнительно добавьте следующие элементы.
- •24. Задача «Звездный коврик».
- •25. Понятие массива.
- •26. Объявление массивов в программе.
- •27. Заполнение одномерных массивов данными.
- •28. Решение простых задач на массивы.
- •29. Решение задач средней сложности.
- •30. Сортировка элементов массива.
- •31. Решение задач на сортировку.
- •32. Заполнение двухмерных массивов данными
- •33. Решение задач на двухмерные массивы.
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 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
Новая система
координат 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
Оси Line(xm(xL),ym(0),xm(xR),ym(0)); Line(xm(0),ym(yU),xm(0),ym(yD)); S
Метки осей 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) 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. |
Обратите внимание на выделенные прямоугольниками части программы. Именно в этих местах нужно делать изменения при решении задач на построение графиков функций.