бесплатно рефераты
 

Обработка экономической информации средствами языка Pascal

текста и т.д.).

Для запуска программы с использованием модуля GRAPH необходимо,

чтобы в рабочем каталоге находились графические драйверы с расширением

*.BGI, также должен быть доступен компилятору модуль GRAPH.TPU.

В начале программы модуль GRAPH должен быть подключен

USES GRAPH;

InitGraph(driver,mode,’путь к BGI’);

driver – определяет тип графического драйвера,

mode – переменная, задающая режим работы графического адаптера;

Процедуры и функции модуля GRAPH

ClearDevice - Очищает экран и помещает курсор в точку (0,0);

SetViewPort(x1,y1,x2,y2:integer; Clip: boolean) - Устанавливает текущее

окно для графического вывода. X1,y1 – координата верхнего левого угла;

x2,y2 - координата нижнего правого угла. Если Clip=true, то все изображения

отсекаются на границах вывода;

Closegraph – закрывает графический режим

ClearViewPort - Очищает текущее окно;

GetMaxX: integer - возвращает максимальную горизонтальную координату

графического экрана;

GetMaxY :integer - возвращает максимальную вертикальную координату

графического экрана;

GetX: integer - возвращает координату Х текущего указателя в окне;

GetY: integer - возвращает координату Y курсора в окне;

SetLineStyle(Line, Pattern, Thickness: word) - Устанавливает стиль (0..4),

шаблон штриховки (0..12) и толщину (1-ноpм, 3-утpоенная);

SetFillStyle(Pattern, Color: word) - Устанавливает образец штриховки и цвет

(0..15 и 128-меpцание);

SetGraphMode(Mode: integer) - Устанавливает новый графический режим и

очищает экран;

SetColor(Color: word) - Устанавливает основной цвет, которым выполняется

рисование (0..15);

SetBkColor(Color: word) - Установка цвета фона.

PutPixel(X,Y: integer; Color: word) - Выводит точку цветом Color с

координатой X,Y;

LineTO(X, Y: integer) - Рисует линию от текущего указателя к точке с

координатой Х,У;

LineRel(DX, DY: integer) - Рисует линию от текущего указателя к точке,

заданной приращением координат;

Line(X1,Y1,X2,Y2:integer) - Рисует линию от точки (X1,Y1) к точке с

координатой Х2,У2;

MoveTO(X, Y: integer) - Смещает текущий указатель к точке с координатой

Х,У;

MoveRel(DX, DY: integer) - Смещает текущий указатель к точке, заданной

приращением координат;

Rectangle(X1,Y1,X2,Y2:integer) - Рисует прямоугольник, используя текущий

цвет и тип линии по верхней левой и нижней правой точкам;

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

Установка текущего шрифта, стиля и размера текста

settextstyle(10,0,5);

Установка текущего цвета шрифта

setcolor(i+1);

Вывод текста на экран

outtextxy((getmaxx div 5),(getmaxy div 4),'"Sorge pro"');

Установка текущего шрифта, стиля, размера текста.

settextstyle(5,0,5); setcolor(15);

Вывод текста на экран

outtextxy((getmaxx-200),(getmaxy-250),'present');

Установка текущего шрифта, стиля, размера текста.

settextstyle(3,0,1);

Вывод текста на экран

outtextxy(40,(getmaxy-50),'http://sorgepro.agava.ru');

outtextxy(290,(getmaxy-50),'e-mail: office@sorgepro.agava.ru');

Установка текущего шрифта, стиля, размера текста.

settextstyle(2,0,5);

Вывод текста на экран

outtextxy(getmaxx-150,getmaxy-20,'Press ');

outtextxy(20,getmaxy-20,'(c)2000. All rights don''t reserved.');

Наращивание переменных для вывода на экран битового изображения и для

смены текущего цвета

k:=k+5;i:=i+1;

Вывод битового образа на экран

putimage(k,10,saucer^,xorput);

Задержка программы

delay(50);

Наращивание переменной для вывода на экран битового изображения

kk:=kk+5;

Вывод битового образа на экран

putimage(kk,10,saucer^,xorput);

Если битовое изображение достигло заданных границ экрана, то идет обнуление

координат вывода этого изображения на экран

if k>getmaxx-100 then begin k:=0; kk:=0 end;

Выполнение этого цикла, пока не нажата какая-нибудь клавиша

until keypressed;

Вывод на экран трех окружностей, меняющих свой размер с помощью наращивания

переменной .

{-----------krugi------------}

for i:=0 to 399 do

begin

setcolor(red);

circle(200,100,i);

setcolor(green);

circle(400,100,i);

setcolor(yellow);

circle(300,300,i);

delay(10);

end;

Вывод на экран окружности, уменьшающей свой радиус.

for i:=399 downto 0 do

begin

setcolor(i);

сircle(322,250,i);

delay(10);

end;

{----------end_krugi---------}

Закрытие граф. режима

closegraph;

Завершение составного оператора begin…end

end;

Завершение процедуры вывода заставки

end;

Процедура вывода сообщения об ошибке – error:

begin

Обнуление счетчика

i:=0;

Цикл вывода сообщения об ошибке, пока i не равно 5

repeat

textmode(Co80);

clrscr;

gotoxy(24,8);textcolor(15);

write('ВЫ ВВЕЛИ НЕПРАВИЛЬНЫЙ НОМЕР');

звук, при выводе сообщения

sound(185);delay(100);nosound;

clrscr;

gotoxy(24,8);textcolor(7);

write('ВЫ ВВЕЛИ НЕПРАВИЛЬНЫЙ НОМЕР');

sound(174);delay(100);nosound;

наращивание счетчика

i:=i+1;

until i=5;

Отключение звука

nosound;

Возврат в главное меню

menu;

Завершение процедуры вывода сообщения об ошибке

end;

Процедура выхода из программы – exitt:

Очитстка экрана

clrscr;

Инициализация графики

initgraph(gd,gm,'bgi');

Вывод текста на экран пока не нажата какая-нибудь клавиша

repeat

settextstyle(7,0,4);setcolor(15);

outtextxy(90,getmaxy div 4, 'Technical support by e-mail:');

settextstyle(1,0,4);setcolor(10);

outtextxy(120,(getmaxy div 4)+50, 'support@sorgepro.agava.ru');

settextstyle(7,0,4);setcolor(15);

outtextxy(140,(getmaxy div 4)+100, 'or visited our web site:');

settextstyle(1,0,4);setcolor(10);

outtextxy(120,(getmaxy div 4)+150, 'http://sorgepro.agava.ru');

settextstyle(2,0,5);setcolor(15);

outtextxy(getmaxx div 4,getmaxy-30,'(c)2000."Sorge pro".All rights

don''t reserved.');

until keypressed;

Закрытие граф. режима

closegraph;

Выход из программы

exit;

Завершение процедуры

end;

{==========================Proga===========================}

Идет выполнение процедуры Zast:

при нажатие какой-либо другой клавиши – устанавливается связь с файлом

assign (f,’'путь к файлу ’)

Установка стандартного текстового режима

textmode(Co80);

Печать главного меню, используя процедуру menu

Установка метки

menu2:

Если l=1, то выполняется печать таблицы

if l=1 then

begin

Печать таблицы с помощью процедуры view, где w=27;

Вывод сообщения для пользователя после вывода таблицы

textcolor(15);

gotoxy(7, ww+1);

writeln('Для выхода нажмите или -возврат в главное

меню. ');

Считывание нажатия клавиши с клавиатуры

c:=readkey;

Установка стандартного текстового режима

textmode(Co80);

Если нажата клавиша происходит возврат в главное меню: выполнение

процедуры menu и переход к метки menu2

if c=#27 then begin menu; goto menu2 end

Иначе выполняется процедура выхода – exitt

else begin exitt;

Завершение составного оператора begin…end

end

Если l не равно 1, а равно 2 то выполняется алгоритм создания записей

Страницы: 1, 2, 3


ИНТЕРЕСНОЕ



© 2009 Все права защищены.