где minx, maxx – минимальное и максимальное значение координаты х в декартовой системе координат;
miny, maxy – минимальное и максимальное значение координаты y в декартовой системе координат
grminx, grmaxx – минимальное и максимальное значение координаты х в графической системе координат;
grminy, grmaxy– минимальное и максимальное значение координаты y в графической системе координат
Пример. Написать программу для построения графика функции y(x)=a*sin(x). Построение графика осуществлять в заданной области экрана. Нарисовать оси координат.
{Программа выполняет построение графика функции y=a*sin(x).}
uses crt,graph;
grminx,grminy, { графические границы области }
grmaxx,grmaxy : integer; { построения графика }
a, { число в уравнении функции }
stepx, { шаг изменения x}
minx,miny, { физические границы области }
maxx,maxy : real; { построения графика }
s : string; { для ввода чисел с клавиатуры}
ercode : integer; { код ошибки при преобразовании строки в число}
{Процедура инициализации графического режима. Возвращает true - графический режим инициализирован; при возникновении ошибки - false}
minx,maxx - физические значения минимума и максимума х}
var
first : boolean; {признак рисования первой точки на графике}
grx,gry : integer; {графич. координаты (x,y) (в пикселах)}
x,y : real; {физические координаты точки (x,y)}
begin
{Задание цвета графика функции}
setcolor(LightBlue);
first:=true;
x:=minx;
{Цикл рисования графика функции}
repeat
y:=f(a,x);
{получение граф. координат точки (x,y)}
grx:=getgrx(x);
gry:=getgry(y);
if first then
begin {рисование первой точки на графике}
moveto(grx,gry);
putpixel(grx,gry,getcolor);
first:=false;
end {рисование линии о текущей точки к точке (grx,gry)}
else lineto(grx,gry);
x:=x+stepx; {переход к следующей точки на графике}
until x>maxx;
end;
clrscr;
repeat
repeat
writeln('Введите минимальное значение х (в радианах) -> ');
readln(s);
val(s,minx,ercode);
if (ercode <> 0) then
writeln('Ошибка при вводе минимального значения х!');
until (ercode=0);
repeat
writeln('Введите максимальное значение х (в радианах) -> ');
readln(s);
val(s,maxx,ercode);
if (ercode <> 0) then
writeln('Ошибка при вводе максимального значения х!');
until (ercode=0);
if (minx>=maxx) then
writeln('Минимальное значение х должно быть меньше максимального!');
until (minx<maxx);
repeat
writeln('Введите значение коэффициента а -> ');
readln(s);
val(s,a,ercode);
if (ercode <> 0) then
writeln('Ошибка при вводе коэффициента а!');
until (ercode=0);
if (grinit) then {вызов процедуры инициализации графического режима}
begin
grminx:=48; {задание минимального х для окна графика}
grmaxx:=getmaxx-48; {задание максимального х для окна графика}
grminy:=getmaxy-48; {задание минимального у для окна графика}
grmaxy:=24; {задание максимального у для окна графика}
stepx:=(maxx-minx)/150; {шаг изменения аргумента x}
GetMaxMinY(miny,maxy); {вычисление минимального и максимального y}
DrawAxes; {рисование осей графика}
DrawGraphic; {рисование графика функции}
readkey;
closegraph; {закрытие графического режима}
end;
Мы не будем подробно описывать методику тестирования кабельной системы сети. Несмотря на важность этой проблемы, ее решение тривиально и однозначно: полноценно кабельная система может быть протестирована только специальным прибором - кабельным сканером. Другого способа не существует. Нет смысла заниматься трудоемкой процедурой выявления дефектов сети, если их можно локализовать одним нажатием клавиши AUTOTEST на кабельном сканере. При этом прибор выполнит полный комплекс тестов на соответствие кабельной системы сети выбранному стандарту.
Хотелось бы обратить ваше внимание на два момента, тем более что о них часто забывают при тестировании кабельной системы сети с помощью сканера.
Режим AUTOTEST не позволяет проверить уровень шума создаваемого внешним источником в кабеле. Это может быть шум от люминесцентной лампы, силовой электропроводки, сотового телефона, мощного копировального аппарата и др. Для определения уровня шума кабельные сканеры имеют, как правило, специальную функцию. Поскольку кабельная система сети полностью проверяется только на этапе ее инсталляции, а шум в кабеле может возникать непредсказуемо, нет полной гарантии того, что шум проявится именно в период полномасштабной проверки сети на этапе ее инсталляции.
При проверке сети кабельным сканером вместо активного оборудования к кабелю подключаются с одного конца - сканер, с другого - инжектор. После проверки кабеля сканер и инжектор отключаются, и подключается активное оборудование: сетевые платы, концентраторы, коммутаторы. При этом нет полной гарантии того, что контакт между активным оборудованием и кабелем будет столь же хорош, как между оборудованием сканера и кабелем. Мы неоднократно встречались со случаями, когда незначительный дефект вилки RJ-45 не проявлялся при тестировании кабельной системы сканером, но обнаруживался при диагностике сети анализатором протоколов.
В рамках предлагаемой методики мы не будем рассматривать ставшую хрестоматийной методику упреждающей диагностики сети (см. врезку "Методика упреждающей диагностики сети"). Не подвергая сомнению важность упреждающей диагностики, заметим только, что на практике она используется редко. Чаще всего (хоть это и неправильно) сеть анализируется только в периоды ее неудовлетворительной работы. В таких случаях локализовать и исправить имеющиеся дефекты сети требуется быстро. Предлагаемую нами методику следует рассматривать как частный случай методики упреждающей диагностики сети.