Автор: Бронникова Анастасия, Житова Дарья, 10 класс
Руководитель: Захарченко Галина Юрьевна, учитель информатики
Тема: PASCAL в помощь математике.
Образовательное
учреждение:
МУНИЦИПАЛЬНОЕ
ОБЩЕОБРАЗОВТЕЛЬНОЕ
УЧРЕЖДЕНИЕ
СРЕДНЯЯ
ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА № 2
Используемые медиаресурсы: редакторы WORD, POWER POINT,
PUBLISHER, ресурсы сети Интернет
Цель проекта: помочь учащимся в построении графиков сложных
функций.
1) Актуальность темы
Проведя опрос среди учащихся 10 - 11 классов (в опросе участвовало 30 уч-ся),
какая тема из курса математики на ваш взгляд является самой, сложной мы
получили следующие результаты:
1. Задания с параметры – 17 уч-ся;
2. Построение графиков функций – 13 уч-ся.
И мы решили помощь нашим учащимся. И разработали программу в среде
программирования PASCAL 7.0.
Немного истории.
Pascal (Паскаль) - язык программирования общего назначения. Создан в 1970 году
специалистами Технического Университета в Цюрихе под руководством профессора
Никлауса Вирта.
Паскаль - именно тот язык программирования, с которого многие начинали свой
тернистый путь. Он относительно легок в изучении, прост в понимании и был
одним из первых языков программирования со строгой типизацией и наличием
средств процедурного программирования. Наше мнение - Pascal дисциплинирует
программиста и приучает его мыслить логически.
2) Проблема
Простройте график функции y= cosx  sinx x. Построение графика вызывает
серьезные затруднения, мы начинаем :
 вспоминать и применять различные формулы тригонометрии;
 начинаем выполнять расчеты по нахождению значений функций.
Построение графика достаточно сложное, а иногда и «муторное» дело, да и линии
иногда получаются кривоватые. Зато всех этих проблем лишен компьютер – он без
устали может наносить на экран точку за точкой, соединяя их ровной линией.
Правда, его нужно научить это делать, задав соответствующую программу
3) Гипотеза
Разработать программу в среде PASCAL для построения графиков функций не
только для построения графика, но и для самопроверки своих знаний и умений по
данной теме.
1
4) Пути решения
Необходимо решить следующее задачи:
1. Найти и изучить необходимую литературу.
2. Разработать подпрограмму PROCEDURE, которая позволяет
построить систему координат;
3. Воспользоваться подпрограммой FUNCTION.
4. Инициализировать графику.
5. Разработать план проекта.
6. Воплотить проект в жизнь.
Для этого мы воспользуемся подпрограммами: процедура(procedure) и
функция(function).
1. Процедуры служат для задания последовательности действий, и определения
новых значений переменных в программе. Вызов процедуры осуществляется
специальным оператором процедуры.
Процедура — это независимая именованная часть программ, которую после
однократного описания можно многократно вызывать по имени из программы для
выполнения определённых действий.
Структура процедуры аналогична структуре программы (программа в миниатюре) и
включает в себя:
1. заголовок — состоит из зарезервированного слово procedure, идентификатора
процедуры (имени), а также списка формальных параметров, который может быть
не обязателен, например использование процедуры без формальных параметров
(пример 1) и с их наличием в (пример 2, 3);
2. раздел описаний — может отсутствовать;
3. раздел операторов — начинается обязательным словом begin и заканчивается
словом end. В конце процедуры после слова end точка с запятой не ставится.
Формат процедуры
procedure <имя процедуры> (формальные параметры);
2. Функции нужны для вычисления единственного значения некоторого выражения.
Вызов функции должен быть операндом в выражении.
Структура функции включает в себя:
1. заголовок — состоит из зарезервированного слово function, идентификатора
процедуры (имени), а также списка формальных параметров, который может быть
не обязателен, тип возвращаемого функцией значения.
2. раздел описания,
3. тело процедуры — в конце процедуры после слова end точка с запятой не
ставится.
Формат функции
2
function <имя процедуры> (формальные параметры): тип результата;
3. Графический режим.
Для работы с графикой в Pascal необходимы два файла – модуль graph.tpu и драйвер
графического адаптера egavga.bgi. Найдите эти файлы и запишите их расположение.
Для определённости будем считать, что первый находится в каталоге D:\BP\UNITS,
а второй – в D:\BP\BGI.
Чтобы иметь возможность что-либо нарисовать, надо:
1. подключить модуль GRAPH;
2. указать расположение файла graph.tpu;
3. определить графический драйвер и режим;
4. инициализировать графику;
5. если инициализация прошла без ошибок, можно что-нибудь нарисовать;
6. закрыть графический режим.
А теперь реализуем эти действия в Pascal:
USES Graph,CRT;
{подключение модулей}
VAR gd,gm:integer;
{gd – гр. драйвер, gm – гр. режим}
BEGIN
gd:=0;
gm:=0;
{автоматическое определение гр. драйвера}
InitGraph(gd,gm,''); {инициализация графического режима}
-----------------------------------------------------------ReadKey;
{задержка до нажатия любой клавиши}
CloseGraph;
{закрытие графического режима}
END.
5. Основной проект
Единица на экране соответствует одному пикселю и для вывода графика это не
удобно, график при этом получается слишком мелкий. Поэтому при выводе графика
функции на экран применяются так называемые пользовательские координаты –
именно такие координаты мы используем, когда чертим график на бумаге.
Итак, мы делаем наш график крупнее. Пусть 1 пользовательская единица равна 50
экранным. Для этого мы:

Получаем экранную х - координату точки.

Преобразуем ее в пользовательскую (она будет в 50 раз меньше);

Находим для нее значение функции (пользовательская у – координата);

Преобразуем ее в экранную (увеличив в 50 раз).
Для перевода экранных координат в пользовательские и обратно создадим
отдельные функции х(р) и у(р). Чтобы график строился в более крупном масштабе,
объявим константу k, равную величине масштабной единицы.
Функция х(р).
3
Переводит экранные координаты в обычные пользовательские (экранные 1280 х
1024, пользовательские
1280 1024

).
k
k
Функция у(р).
Переводит пользовательские координаты в экранные.
А) Программа для создания одного графика функции в одной системе координат.
К=50 перевод экранных координат в пользовательские;
сх, су: начало координат;
F: исходная функция, график которой нужно построить;
Х: функция, которая переводит экранные координаты в пользовательские;
У: функция, которая переводит пользовательские координаты в экранные;
Sk: процедура, которая создает систему координат;
Setcolor: определяет цветовую гамму;
Line: оператор построения линии;
Moveto: перемещение графического указателя в точку (х,у);
Lineto: рисование линии от текущего указателя до точки (х,у), текущий указатель
при этом перемещается в точку (х,у).
Program grafik;
Uses crt, graph;
Const
K=50;
Cx=640;
Cy=512;
Var gd, gm, i: integer;
Function f (x: real): real;
Begin
F:=sin(x)*cos(x)*x;
End;
Function x (p: integer): real;
Begin
X:=(p-cx)/k;
End;
Function y(p: real): integer;
Begin
Y:=round (-p*k+cy);
End;
Procedure sk;
Begin
Setcolor (9);
Line (0, cy, 1280,cy);
Line (cx, 0, cx, 1024);
Setcolor (15);
4
Line (638,462,642,462);
Line (690,510,690,514);
End;
BEGIN
Clrscr;
Gd:=0;
Gm:=0;
Initgraph (gd, gm,’’);
Sk;
Setcolor (14);
Moveto (0, y(f(x(0))));
For i:=0 to 1280 do
Lineto (I, y(f(x(i))));
Readln;
Closegraph;
End.
Б) Программа для создания нескольких графиков функций в одной системе
координат.
Program grafik;
Uses crt, graph;
Const
K=50;
Cx=640;
Cy=512;
Var gd, gm, i: integer;
Function f (x: real): real;
Begin
F:=sin(x)*сos(x)*x;
End;
Function f 2(x:real):real;
Begin
F2:=2*sin(x)+cos((abs(x))-x;
End;
Function x (p: integer): real;
Begin
X:=(p-cx)/k;
End;
Function y(p: real): integer;
Begin
Y:=round (-p*k+cy);
End;
Procedure sk;
Begin
Setcolor (9);
5
Line (0, cy, 1280, cy);
Line (cx, 0, cx, 1024);
Setcolor (15);
Line (638,462,642,462);
Line (690,510,690,514);
End;
BEGIN
Clrscr;
Gd:=0;
Gm:=0;
Initgraph (gd, gm,’’);
Sk;
Setcolor (14);
Moveto (0, y(f(x(0))));
For i:=0 to 1280 do
Lineto (I, y(f(x(i))));
Setcolor (11);
Moveto (0,y(f2(x(0))));
For i:=0 to 1280 do
Lineto (I,y(f2(x(i))));
Readln;
Closegraph;
End.
В) Программа для создания двух графиков функций в двух разных системах
координат
Program grafik;
Uses crt, graph;
Const
K=50;
Cx=320;
Cy=512;
Сх2=970;
Var gd,gm,i:integer;
Function f (x:real):real;
Begin
F:=cos(x);
End;
Function f 2(x: real): real;
Begin
F2:=2*cos(2*x);
End;
Function x (p: nteger): real;
Begin
X:=(p-cx)/k;
6
End;
Function y(p: real):integer;
Begin
Y:=round (-p*k+cy);
End;
Function x2 (p: integer): real;
Begin
X2:=(p-cx2)/k;
End;
Procedure sk;
Begin
Setcolor (9);
Line (0, cy, 630, cy);
Line (cx, 0, cx, 1024);
Setcolor (15);
Line (640, cy, 1280, cy);
Line (cx2, 0, cx2, 1024);
End;
BEGIN
Clrscr;
Gd:=0;
Gm:=0;
Initgraph (gd, gm,’’);
Sk;
Setcolor (14);
Moveto (0, y(f(x(0))));
For i:=0 to 640 do
Lineto (I, y(f(x(i))));
Setcolor (11);
Moveto (640, y(f2(x(0))));
For i:=690 to 1280 do
Lineto (I, y(f2(x(i))));
Readln;
Closegraph;
End.
Г) Программа для создания двух графиков функций в двух разных системах
координат + построение сетки (имитация листка в клетку).
Xn, xk – начальные и конечные координаты вертикальных линий сетки
Yn, yk – начальные и конечные координаты горизонтальных линий сетки
Program grafik;
Uses crt, graph;
Const
7
K=50;
Cx=320;
Cy=512;
Сх2=970;
Var gd, gm, i:integer;
Function f (x: real): real;
Begin
F:=sin(x);
End;
Function f 2(x: real): real;
Begin
F2:=2*sin(x);
End;
Function x (p:integer):real;
Begin
X:=(p-cx)/k;
End;
Function y(p: real): integer;
Begin
Y:=round (-p*k+cy);
End;
Function x2 (p: integer): real;
Begin
X2:=(p-cx2)/k;
End;
Procedure sk;
Var I, xn, xk, yn, yk: integer;
Begin
Setlinestyle (3,1,1);
Xn:=cx div k;
Xk:= (1280 – cx) div k;
For i:=-xn to xk do
Line (cx+i*k,0,cx+i*k,1024);
yn:=cy div k;
yk:= (1024 – cy) div k;
For i:=-yk to yn do
Line (0,cy+i*k,1280,cy+i*k);
Setlinestyle (0,1,1);
Setcolor (9);
Line (0, cy, 630, cy);
Line (cx, 0, cx, 1024);
Setcolor (15);
Line (640, cy, 1280, cy);
Line (cx2, 0, cx2, 1024);
End;
BEGIN
8
Clrscr;
Gd:=0;
Gm:=0;
Initgraph (gd, gm,’’);
Sk;
Setcolor (14);
Moveto (0, y(f(x(0))));
For i:=0 to 640 do
Lineto (I, y(f(x(i))));
Setcolor (11);
Moveto (640, y(f2(x(0))));
For i:=690 to 1280 do
Lineto (I, y(f2(x(i))));
Readln;
Closegraph;
End.
9
8. Результаты программы
А
Б
10
В
Г
11
Список используемой литературы:
1. Алексеев У.З., Чеснокова О.В. «Турбо Паскаль 7.0», NT Press Москва, 2004
2. Татарникова Л.А. «Основы алгоритмизации и программированию на языке
Pascal» Томск, 2008
3. Фаронов В.В. «Турбо Паскаль 7.0 Начальный курс», ОМД Групп Москва, 2003
4. Ресурсы Интернета: www.pascal.dax.ru
www.pascaler.wsnet.ru
12
Скачать

Проведя опрос среди учащихся 10