Program PlotGraf;
uses crt; const Xmin=-pi; { Начальное и } Xmax= pi; { конечное значения аргумента} xGmin=5; { Начальное и } xGmax=75; {конечное значение координат экрана по оси X} Ymin=-1; { Минимальное и } Ymax=1; {максимальное значения функции (предполагаемое)} yGmin=5; { Начальное и } yGmax=45; {конечное значение координат экрана по оси Y} kgl=11; { Количество проводимых горизонтальных и } kvl=11; { вертикальных линий } kix=xGmax-xGmin; { Количество интервалов по оси X }
var x, y, { Текущие значения X и Y } mx, my, { Масштабы по X и Y } hx, hy: real; { Шаги по X и Y } xg, yg: integer; {Значения графических координат X и Y}
Function myFunc(x: real): real; begin myFunc: =sin(x); { Функция для построения графика } end; { myFunc }
Procedure ver_Line(x, yn, yk: integer; sim: char); { Строит вертикальную линию, проходящую через X } { от yn до yk, используя символ sim } var y: integer; Begin For y: = yn to yk do begin GoToXY(x, y); Write(sim); end; End; { ver_line }
Procedure Gor_Line(y, xn, xk: integer; sim: char); { Строит горизонтальную линию, проходящую через Y } { от xn до xk, используя символ sim } var x: integer; Begin GoToXY(xn, y); For x: = xn to xk do Write(sim); End; { Gor_line }
begin TextMode(c80+256); { Цветной режим с 50 строками } TextBackGround(White); ClrScr; { Фон - белый }
mx: =(xgmax-xgmin)/(xmax-xmin); { Масштаб по X } my: =(ygmax-ygmin)/(ymax-ymin); { Масштаб по Y }
{ Проведение горизонтальных линий } y: =ymin; hy: =(ymax-ymin)/(kgl-1); { Шаг между линиями } TextColor(Yellow); {Желтый цвет горизонтальных линий } while y< =ymax+0.1*hy do begin yg: =ygmin+Round((ymax-y)*my); {Графическая координата по Y} Gor_Line(yg, xgmin, xgmax, ’-’); GoToXY(xgmin-4, yg); { Курсор в нужное место и } write(y: 4: 2); { вывод значения около линии } y: =y+hy; { Очередное значение Y } end;
{ Проведение оси X (на ней y=0) } yg: =ygmin+Round(ymax*my); {Графическая координата по Y} TextColor(Blue); Gor_Line(yg, xgmin, xgmax, '-'); Write(’-> X’); { Вывод обозначения оси X }
{ Проведение вертикальных линий } x: =xmin; hx: =(xmax-xmin)/(kvl-1); { Шаг между линиями } TextColor(Red); { Зеленый цвет горизонтальных линий } while x< =xmax+0.1*hx do begin xg: =xgmin+Round((x-xmin)*mx); Ver_Line(xg, ygmin, ygmax, ’: ’); GoToXY(xg-2, ygmin-2); {Курсор в нужное место и } write(x: 4: 2); {вывод значения около линии } x: =x+hx; { Очередное значение Y } end;
{ Проведение оси Y (на ней x=0) } xg: =xgmin-Round(xmin*mx); {Графическая координата по X} TextColor(Blue); Ver_Line(xg, ygmin, ygmax, ’! ’); GoToXY(xg, ygmin-1); { Курсор в нужное место и } Write(’^Y’); { вывод обозначения оси Y }
{ Построение графика } x: =xmin; hx: =(xmax-xmin)/kix; { Шаг по X } while x< =xmax+0.1*hy do begin xg: =xgmin+Round((x-xmin)*mx); {Графическая координата по X} y: =myFunc(x); { Вычисление y } yg: =ygmin+Round((ymax-y)*my); {Графическая координата по Y} GoToXY(xg, yg); { Курсор в нужное место } TextColor(Black); Write(’*’); { Вывод точки графика } x: =x+hx; end; GoToXy(10, 48); Write(’Нажмите любую клавишу...’); Repeat Until KeyPressed; end.
Процедуры задания цвета фона и текста широко используются для представления различных меню. Рассмотрим пример программы, которая реализует меню с использованием средств модуля Crt.
23.1.5. Алгоритм и программа представления меню Реализация меню предполагает выполнение следующих операций: 1) вывод пунктов меню основной парой цветов (фона и текста); 2) вывод выбранного пункта меню другой парой цветов (более яркой); 3) передвижение по меню с помощью традиционных управляющих клавиш; 4) выбор пункта меню для выполнения соответствующей операции; 5) выход из меню. Три последние операции выполняются с использованием управляющих клавиш, которые имеют следующие коды: #13 – Enter; #27 – Esc; #77 – перемещение курсора влево; #75 – перемещение курсора вправо; #72 – перемещение курсора вверх; #80 – перемещение курсора вниз.
Первым двум кодам соответствует один байт (символ), а остальным – два, причем первый байт у них имеет нулевой код. Рассмотрим алгоритм и программу на примере горизонтального меню, содержащего не более 5 пунктов. Выбор пункта осуществляется нажатием клавиши Enter, а выход из него и из программы – нажатием клавиши Esc. После выбора пункта для простоты выдается сообщение о том, что он выполняется. Названия пунктов соответствуют названиям операций.
|