- •Структурное 1
- •Этапы разработки программ
- •Этапы разработки программ
- •Этапы разработки программ
- •Методы проектирования программ
- •Проектирование «снизу вверх»
- •Проектирование «сверху вниз»
- •Структурное программирование
- •Структурное программирование
- •Модуль
- •Оформление текста программы
- •Оформление текста программы
- •Оформление текста программы
- •Проект «Графики функций»
- •Структура программы
- •Разбивка программы на этапы
- •Функции, заданные в неявном виде
- •Полярные координаты
- •Полярные координаты
- •Описание в параметрической форме
- •Системы координат
- •Структура программы
- •Перевод в экранные координаты
- •Оси координат
- •Разметка оси X («черточки»)
- •Разметка оси X (числа)
- •Оси с разметкой (полностью)
- •Задания
- •Построение графика по точкам
- •Вывод точки с проверкой
- •Описание функций
- •Области определения
- •Вывод графика функции
- •Общее расположение
- •Задания
- •Точки пересечения
- •Методы решения уравнений
- •Численные методы
- •Метод прямого («тупого») перебора
- •Есть ли решение на [a, b]?
- •Метод дихотомии (деление пополам)
- •Метод дихотомии (деления пополам)
- •Метод дихотомии (в программе)
- •Метод дихотомии (в программе)
- •Штриховка (две функции)
- •Штриховка (составная нижняя граница)
- •Штриховка (общий случай)
- •Метод (левых) прямоугольников
- •Метод (правых) прямоугольников
- •Метод (средних) прямоугольников
- •Метод трапеций
- •Метод Монте-Карло
- •Метод Монте-Карло
- •Случайное число в заданном интервале
- •Проверка точки (внутри или нет?)
- •Метод Монте-Карло (реализация)
- •Титульный лист
- •Графики функций
- •Как получить копию экрана?
- •Структура программы
- •Текст программы
- •Как включить программу в отчет?
- •Конец фильма
Функции, заданные в неявном виде |
|
|
|
21 |
|||||||||||
|
|
|
|
||||||||||||
f (x, y) = 0 пример: уравнение эллипса |
|
|
|
|
|
|
|||||||||
(x x0 )2 |
|
( y y0 )2 |
1 |
(x x0 )2 |
|
( y y0 )2 |
1 0 |
||||||||
a2 |
|
b2 |
|
a2 |
|
|
|
|
|
b2 |
|
|
|
|
|
|
|
|
|
( y y |
)2 |
1 |
(x x )2 |
|
|
|
|||||
|
y |
|
|
0 |
|
|
|
0 |
|
|
|
|
|||
|
|
a |
b2 |
|
|
|
|
|
|
a2 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
(x |
x0 ) |
|
|||
|
|
|
|
( y y0 ) |
2 |
|
2 |
|
|||||||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
b |
1 |
a |
2 |
|
|
|
||||
|
y0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b |
|
|
|
y y0 b |
1 |
(x x )2 |
|
||||||||
|
|
|
|
|
0 |
|
|
|
|||||||
|
|
|
|
a2 |
|
|
|
||||||||
|
|
x0 |
x |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
(x x )2 |
|
|
|
|
||||
|
|
|
|
y y0 b |
1 |
|
|
|
|
||||||
|
|
|
|
|
|
0 |
|
|
|
|
|||||
|
|
|
|
|
|
a2 |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Полярные координаты |
22 |
|
|
|
|
|
|
|
- полярный |
А( , ) |
|
|
||
радиус |
|
|
O |
- полярный угол |
|
|
полярный луч |
|
полюс |
|
= f ( )
Описание фигур, полученных при вращении объектов.
Примеры: |
|
|
|
= R |
= a ∙ |
|
= a∙sin(2 /3) |
|
R |
|
|
O |
O |
|
O |
окружность |
спираль Архимеда |
«роза» |
Полярные координаты |
23 |
|
Переход к декартовым координатам
А( , )
y |
|
|
|
||
|
||
|
||
|
||
|
|
|
|
|
|
|
|
|
|
|
|
y |
|
tg x |
|
|
O |
|
x
x cos( ) y sin( )
x2 y2
arctg xy
Описание в параметрической форме |
24 |
|||
|
||||
x |
= f1 (t) |
t – независимый параметр («время») |
|
|
y |
= f2 (t) |
Описание фигур, полученных при |
|
|
сложном движении объектов. |
|
|||
y |
|
x v0 cos( ) t |
|
|
|
v0 |
|
||
|
y v |
sin( ) t gt |
2 |
|
|
|
|
||
|
|
0 |
2 |
|
0 |
x |
|
||
|
|
|
||
Циклоида – траектория точки на ободе колеса при вращении |
|
y |
R |
x R (t sin t) |
|
||
|
|
|
|
|
y R (1 cos t) |
0 |
|
x |
Системы координат |
|
|
25 |
|||
|
|
|
||||
Математическая |
|
|
Экранная |
|
||
|
|
|
(0,0) |
640 |
|
(639,0) |
Y |
|
|
xЭ |
yЭ |
|
XЭ |
x |
|
|
|
y0 |
||
(x, y) |
|
(xЭ, yЭ) |
||||
|
480 |
|||||
|
|
|
||||
|
y |
|
|
(x0, y0) |
|
|
0 |
|
X |
x0 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
||
|
|
(0,479) |
|
|
(639,479) |
|
|
|
|
YЭ |
|
|
|
Преобразование координат: |
|
|
|
|||
|
|
|
|
|||
x0, y0 – экранные координаты |
xЭ x0 |
k x |
? |
Почему |
||
точки (0,0) |
|
|
||||
k – масштаб (во сколько раз |
yЭ y0 |
k y |
«минус»? |
|||
растягивается единичный |
|
|
|
|
||
отрезок) |
|
|
|
|
|
|
Структура программы |
26 |
||
|
|
||
|
|
|
|
#include<graphics.h> |
|
|
|
#include<stdio.h> |
|
|
|
#include<conio.h> |
|
|
|
#include<math.h> |
|
|
|
const x0 = 100, y0 = 400, // координаты точки (0,0) |
|
|
|
k = 80; |
// масштаб |
|
|
глобальные переменные
процедуры и функции
void main()
{
int d = DETECT, m;
initgraph(&d, &m, "c:\\borlandc\\bgi");
основная часть
getch();
closegraph();
}
Перевод в экранные координаты |
27 |
|
|
|
|
|
|
|
//----------------------------------------- |
|
|
//SCREENX – перевод X в координаты экрана //-----------------------------------------
int ScreenX (float x)
{
return x0+k*x;
}
//-----------------------------------------
//SCREENY – перевод Y в координаты экрана //-----------------------------------------
int ScreenY (float y)
{
return y0-k*y;
}
?Откуда берутся x0, y0 и k?
Оси координат |
28 |
|
|
|
|
|
|
|
(0,0) |
(639,0) |
|
y0
|
(x0, y0) |
|
x0 |
(0,479) |
(639,479) |
|
void Axes()
{
line ( x0, 0, x0, 479 ); line ( 0, y0, 639, y0 );
}
Разметка оси X («черточки») |
|
29 |
||||
|
|
|||||
xЭ |
|
|
|
Число меток на [0, xmax]: |
||
|
(x |
, y −2) |
y0 |
длина 640 – x0 |
|
|
|
Э |
0 |
|
единичный отрезок k |
||
|
|
|
|
|||
|
|
|
|
N |
640 |
x0 |
(xЭ, y0+2) |
|
|
|
k |
|
|
|
|
|
|
|
||
x |
640 − x0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
void Axes() |
|
|
|
|
|
|
{ |
|
|
|
|
|
|
int i, xe;
...
for (i = 1; i <= (640 xe = ScreenX(i);
line ( xe, y0-2, xe, y0+2 );
}
}
переходим к экранным координатам
Разметка оси X (числа) |
|
30 |
||
|
|
|||
|
xЭ |
|
Вывод символьной строки |
|
|
|
(xЭ, y0+2) |
в графическом режиме: |
|
|
(xЭ-4, y0+3) |
|
outtextxy(x, y, s); |
|
|
|
8 на 8 |
координаты |
строка: |
|
|
левого |
||
|
|
1 |
||
|
|
верхнего угла |
char s[5]; |
|
void Axes() |
с |
|
|
|
{ |
|
|
|
|
|
запасом… |
|
|
|
|
char s[5]; |
|
|
|
|
|
|
|
|
|
... |
|
перевести целое |
|
|
for (i = 1; i <= (640-x0)/k; |
|||
|
число i в строку s |
|||
|
... |
|
||
|
|
|
|
|
|
sprintf ( s, "%d", i ); |
|
|
|
|
outtextxy ( xe-4, y0+3, s ); |
вывести строку |
||
} |
} |
|
s на экран |
|
|
|
|
|