Bar(X1,Y1,X2,Y2:integer) - Рисует закрашенный прямоугольник, используя установку SetFillStyle;
Bar3D(X1,Y1,X2,Y2:integer;Depth:word;Top:Bolean) - Рисует закрашенный паpаллелипипед. Depth - глубина в Pixel (1/4 ширины). Если Тор=True, то рисуется верхняя грань пеpеллелипипеда;
Circle(X,Y:integer;R:word) - Рисует окружность радиуса R, используя X,Y как координаты центра;
Fillellipse(X,Y: integer; XR,YR: word) - Рисует защтpихованный эллипс, используя X,Y как центр и XR,YR как горизонтальный и вертикальный радиусы.
RestorCRTMode - Восстанавливает текстовый режим работы экрана;
OutText(Text: string) - Выводит текстовую строку на экран.
OutTextXY(X,Y: integer; Text: string) - Выводит текст в заданное место экрана.
Модуль CRT
Включает процедуры и функции, которые управляют текстовым режимом работы дисплея. С помощью подпрограмм модуля можно перемещать курсор по экрану дисплея, менять цвет выводимых символов и фона, создавать окна на экране, управлять звуком, работать с клавиатурой.
Функции управления клавиатурой:
KeyPressed: Boolean; - возвращает True, если в текущий момент на клавиатуре была нажата клавиша, иначе False. Не приостанавливает выполнение программы. Используется при организации работы циклов.
ReadKey: Char; - читает и возвращает в программу символ с клавиатуры (без отображения на экране). Приостанавливает исполнение программы до нажатия на любую клавишу символа. Используется в операторах IF для проверки символов.
WhereX: Byte; - возвращает горизонтальную координату текущей позиции курсора относительно окна.
WhereY: Byte; - возвращает вертикальную координату текущей позиции курсора относительно окна.
Процедуры управления дисплеем
ClrEol; - удаляет все символы справа от курсора до конца строки без перемещения курсора.
ClrScr; - очищает экран (окно на экране) и помещает курсор в верхний левый угол.
Delay(D: word); - приостанавливает работу программы на D миллисекунд.
GotoXY(X,Y: byte); - перемещает курсор в нужное место экрана (окна). Левый верхний угол экрана (окна) имеет координаты (1,1). Отсчет координат идет слева направо и сверху вниз. Количество символов в строке и самих строк зависит от типа дисплея (обычно 25 строк и 80 символов).
InsLine; - вставляет пустую строку в позицию курсора.
HighVideo; - устанавливает высокую яркость символов.
LowVideo; - устанавливает низкую яркость символов.
NormVideo; - устанавливает нормальную яркость символов.
Window(X1,Y1,X2,Y2:byte); - определяет размеры окна на экране для вывода текста. X1,Y1 - координаты левого верхнего угла, X2,Y2 - правого нижнего угла.
TextBackGround(Color: byte); - устанавливает цвет фона экрана (окна) от 0 (черный) до 15 (белый).
TextColor(Color: byte); - устанавливает цвет символа.
TextMode(Mode: word); - устанавливает нужный текстовый режим:0,1,2...
Управление звуковым генератором
Sound(F: word); - включает звук генератора, F - частота звука в герцах.
Delay(T: word); - устанавливает продолжительность звучания в миллисекундах.
NoSound; - выключает звук генератора.
5.3 Входные и выходные данные
Входными данными являются записи: номер продукции (n), переходящий остаток продукции на начало года (e1), приход продукции (e2), расход (e3), цена за 1 шт (e4). При завершении ввода данных и выборе соответствующего пункта меню программы, программа выдаст пользователю итоговые данные в виде таблицы.
Выходными данными, т.е. результатом программы является таблица которая содержит исходные записи и следующие переменные:
· Остаток на конец года (st);
· Итого (itog) ;
Файл с текстом программы (kurs.pas) имеет размер, равный 12,5 Kb;
Исполняемый файл (kurs.exe) имеет размер 33,3 Kb;
5.4 Описание переменных
В программе используются следующие переменные:
Bas – запись.
type
bas=record
n:integer;
e1,e2,e3:integer;
e4:real;
end;
Где:
n - номер продукции;
e1 - переходящий остаток продукции на начало года ;
e2 - приход продукции;
e3 – расход;
e4 - цена за 1 шт .
menu2 – метка, используется для работы с главным меню программы;
C:char, используется для работы оператора readkay (читает символ с клавиатуры без эхоповтора на экране);
O:real используется для редактирования записей.
ww, l, nn, q, i, gd, gm:integer;
ww-используется для вывода шапки таблицы (координата по Y).
l-используется для работы с меню и для удаления записи
nn, q- используется в программе для создание новых записей
i-счетчик
gd, gm - для графики:
gd – определяет тип графического драйвера,
gm – переменная, задающая режим работы графического адаптера;
pp,qq,n,mm:integer; - переменные для добавления новой записи;
f,f2:file of bas; - файлы
a,b:bas;
a,b - переменные, содержащие записи типа Bas.
Переменная b используется для удаления записей.
st:real;
st – для вычисления суммы в таблице
Процедуры:
procedure view(w:integer);
- процедура вывода таблицы, где w–координата по Х;
var
itog:real; -для вычисления итогового значения сумма в таблице;
Procedure menu;
- процедура вывода меню;
Procedure zast;
- процедура вывода графической заставки
var
xm,ym:integer;
xm,ym-координаты для вывода граф. объектов
size:integer; saucer:pointer;
k,kk:integer;
size,saucer,k,kk-для движения
Procedure error;
- процедура вывода сообщения об ошибке
Procedure exitt;
- процедура выхода из программы
5.5 Описание программы
При запуски программы идет подключение дополнительных модулей Crt и Graph:
uses crt, graph;
Описание переменных (см. пункт 5.4)
Описание процедур:
Процедура вывода таблицы на экран - view:
Установка текстового окна на экране для вывода шапки с координатами левого верхнего угла -1,1 и правого нижнего – 80,6
window(1,1,80,6);
Установка цвета фона и символов
textbackground(5);textcolor(15);
Печать названия таблицы
gotoxy(w,1);write('Реализация продукции за год');
textcolor(9);gotoxy(w-16,2);textbackground(0);
write('--------------------------------------------------------------');
Установка цвета символов и печать шапки таблицы
textcolor(15);
gotoxy(w-15,4);write('N');
gotoxy(w-13,3);write('Переходящий остаток');
gotoxy(w-10,4);write('продукции на ');
gotoxy(w-10,5);write('начало года');
gotoxy(w+9,3);write('Приход');
gotoxy(w+8,4);write('продукции');
gotoxy(w+11,5);write('шт');
gotoxy(w+18,4);write('Расход');
gotoxy(W+20,5);write('шт');
gotoxy(w+26,4);write('Цена за');
gotoxy(w+27,5);write('1 шт');
gotoxy(w+35,4);write('Остаток на');
gotoxy(w+35,5);writeln('конец года');
textcolor(9); gotoxy(w-16,6);
write('--------------------------------------------------------------');
Установка цвета символов и текстового экрана для вывода данных таблицы
textcolor(15);
window(1,7,80,25);
Подготовка файла к чтению
reset(f);
Установка координаты y, необходимой для вывода данных таблицы и обнуление итогового значения таблицы.
ww:=1; itog:=0;
Вывод основных данных таблицы
repeat
writeln; read(f,a);
st:=((a.e1+a.e2)-a.e3)*a.e4;
itog:=itog+st;
textcolor(13);
gotoxy(w-15,ww);write(a.n);
textcolor(15);
gotoxy(w-5,ww);write(a.e1);
gotoxy(w+11,ww);write(a.e2);
gotoxy(w+20,ww);write(a.e3);
gotoxy(w+29,ww);write(a.e4:4:2);
gotoxy(w+37,ww);write(st:4:2);
ww:=ww+1;
Проверка для вывода очередной строки на экран. Необходимо в том случае, когда число записей превышает число строк на мониторе.
if ww>=19 then
begin
if (ww=19) then
begin
writeln;
write('Для просмотра используйте клавишу ');
write(' Для продолжения -');
c:=readkey;
delline;
if c=#32 then ww:=ww-1 else break;
end;
end;
Вывод данных в таблицу пока не конец файла
until eof(f);
Установка цвета символа и вывод линии на экран
textcolor(9); gotoxy(w-16,ww);
write('--------------------------------------------------------------');
Вывод итогового значения
textcolor(9);gotoxy(w+7,ww);
write('¦'); textbackground(5);
textcolor(10);write('Итого:',itog:4:2);
textbackground(0); textcolor(9);
write('+'); writeln;
Завершение процедуры вывода таблицы
end;
Процедура вывода основного меню – menu:
Очистка экрана и установка стандартного текстового режима
clrscr; textmode(Co80);
Установка текстового окна на экране с координатами левого верхнего угла -13,3 и правого нижнего – 70,15
window(13,3,70,15);
Установка цвета фона и символов
textbackground(14);textcolor(15);
Перемещение указателя и печать сообщения
gotoxy(1,3); write('Для дальнейшей работы с программой выберите номерок:');
Установка цвета фона
textbackground(0);
Печать пунктов меню, устанавливая цвет для цифр меню и свой цвет для названия пункта меню
gotoxy(16,5); textcolor(10); write('1'); textcolor(7); write(' - Просмотр');
gotoxy(16,6); textcolor(10); write('2'); textcolor(7); write(' - Cоздать');
gotoxy(16,7); textcolor(10); write('3'); textcolor(7); write(' - Добавить');
gotoxy(16,8); textcolor(10); write('4'); textcolor(7); write(' - Удалить');
gotoxy(16,9); textcolor(10); write('5'); textcolor(7); write(' -Редактировать');
gotoxy(16,10);textcolor(10); write('6'); textcolor(7); write(' - Заставка');
gotoxy(16,11);textcolor(10); write('7'); textcolor(7); write(' - Выход');
gotoxy(16,13); write('Введите номер:');
Установка цвета символа и его мерцание
textcolor(10+128);
Ввод переменной l, необходимой для дальнейшей работы программы и установка стандартного текстового режима
readln(l); textmode(Co80);
Конец процедура вывода главного меню
end;
Процедура вывода заставки – zast:
Очистка экрана
clrscr;
Установка белого цвета символов
textcolor(white);
Вывод сообщения: «Показать заставку?»
Write(‘Показать заставку? (y/n)’);
Считывание нажатия клавиши.
c:=readkey
При нажатие клавиши - выполняется дальнейший ход процедуры:
Инициализация графики
initgraph(gd,gm,'bgi')
Установка координат xm, ym для вывода графических объектов
xm:=getmaxx div 4; ym:=getmaxy div 4;
Установка текущего шрифта, стиля и размера текста
settextstyle(2,0,5)
Вывод текста на экран, используя координаты x=xm+100,y=10
outtextxy(xm+100,10,'## Sergei Kovbasyuk ##');
Вычесление числа байт, необходимого для сохранения прямоугольной области экрана
size:=imagesize (xm+100,10,xm+275,10+20);
Создание динамической переменной
getmem(saucer,size);
Сохранение в переменной битовый образ указанной части экрана.
getimage(xm+100,10,xm+275,10+20,saucer^);
Вывод битового образа на экран
putimage(xm+100,10,saucer^,xorput);
Обнуление переменных, требуемых для вывода на экран битового изображения, используя при этом оператор цикла REPEAT…UNTIL и цикл FOR.
k:=0; kk:=0; i:=0; n:=0;
Цикла REPEAT…UNTIL
repeat
Установка текущего шрифта, стиля и размера текста