Применение языков программирования высокого уровня для реализации численных методов и прикладных программРефераты >> Программирование и компьютеры >> Применение языков программирования высокого уровня для реализации численных методов и прикладных программ
{koord3[l]=floor(koord2[l]*(1-t)+koord1[l]*t);}
setcolor(random( MaxColors - random(15) ) + random(15));
line(koord3[0],koord3[1],koord3[2],koord3[3]); //первая //четверть
line(getmaxx()-koord3[0],koord3[1],getmaxx()-koord3[2],koord3[3]);//вторая четверть
line(koord3[0],getmaxy()-koord3[1],koord3[2],getmaxy()-koord3[3]);//третья четверть
line(getmaxx()-koord3[0],getmaxy()-koord3[1],
getmaxx()-koord3[2],getmaxy()-koord3[3]);//четвертая четверть
}
for (int p=0;p<4;p++)//переприсвоение координат
{koord2[p]=koord1[p];}
//получение новых координат первой линии
koord1[0]=random(getmaxx()/2);
koord1[1]=random(getmaxy()/2);
koord1[2]=random(getmaxx()/2);
koord1[3]=random(getmaxy()/2);
}
while( !kbhit() ); // повторение пока не нажата клавиша
getch();
clearviewport();
}
//
//последняя страница
//
void endpage2(void)
{
MainWindow( "The end" );
StatusLine( "Press any key for exit to DOS" );
do
{
settextstyle(BOLD_FONT,0,2);
outtextxy(getmaxx()/2,getmaxy()/2,"The end ");
}
while( !kbhit() );
getch();
clearviewport();
}
//
//функция создания графического окна
//
void MainWindow( char *header )
{
int height;
xmax=getmaxx();
ymax=getmaxy();
cleardevice();//очистка экрана
setcolor( MaxColors - 2 );//установка текущего цвета //белым
setviewport( 0, 0, xmax, ymax, 1 );//открыть окно во //весь экран
height = textheight( "H" );//установить начальную высоту //текста
settextjustify( CENTER_TEXT, TOP_TEXT );
outtextxy( xmax/2, 2, header );
setviewport( 0, height+4, xmax, ymax-(height+4), 1 );
DrawBorder();
setviewport( 1, height+5, xmax-1, ymax-(height+5), 1 );
}
//
//функция создания строки статуса в нижней части экрана
//
void StatusLine( char *msg )
{
int height;
xmax=getmaxx();
ymax=getmaxy();
setviewport( 0, 0, xmax, ymax, 1 ); //открыть окно во //весь экран
setcolor( MaxColors - 1 ); //установка текущего цвета //черным
settextjustify( CENTER_TEXT, TOP_TEXT );
setlinestyle( SOLID_LINE, 0, NORM_WIDTH );
setfillstyle( EMPTY_FILL, 0 );
height = textheight( "H" );//установка текущей высоты //текста
bar( 0, ymax-(height+4), xmax, ymax );
rectangle( 0, ymax-(height+4), xmax, ymax );
outtextxy( xmax/2, ymax-(height+2), msg );
setviewport( 1, height+5, xmax-1, ymax-(height+5), 1 );
}
//
//функция, образующая границу графического окна
//
void DrawBorder(void)
{
// struct viewporttype vp;
setcolor( MaxColors - 1 );//установка текущего цвета //белым
setlinestyle( SOLID_LINE, 0, NORM_WIDTH );
// getviewsettings( &vp );
rectangle( 0, 0, getmaxx(), getmaxy() );
}
приложение 3
Program Notebook;
{программа обслуживает файлы данных "записной книжки".}
Uses App, Objects, Menus, Drivers, Views, StdDlg, DOS, Memory, Dialogs;
type
{объект TWorkWin создает рамочное окно с полосами прокрутки для
управления встроенным в него объектом TInterrior}
PWorkWin =^TWorkWin;
TWorkWin = object (TWindow)
Constructor Init(Bounds: Trect);
end;
{Объект TDlgWin создает диалоговое окно для выбора режима работы}
PDlgWin =^TDlgWin;
TDlgWin = object (TDialog)
Procedure HandleEvent (var Event: TEvent); Virtual;
end;
{Следующий объект обуславливает внутреннюю часть рамочного окна TWorkWin. Он
создает прокручиваемое окно с записями из архивного файла и с помощью диало-
гового окна TDlgWin управляет работой с этими записями}
PInterior =^Tinterior;
Tinterior = object (TScroller)
PS: PStringCollection;
Location: Word;
Constructor Init (var Bounds: TRect; HS, VS: PScrollBar);
Procedure Draw; Virtual;
Procedure ReadFile;
Destructor Done; Virtual;
Procedure HandleEvent (var Event: TEvent); Virtual;
end;
{объект-программа ТNotebook поддерживает работу с меню и строкой стстуса}
TNotebook = object (TApplication)
procedure InitStatusLine; virtual;
procedure InitMenuBar; virtual;
procedure HandleEvent (var Event: TEvent); virtual;
procedure FileSave;
procedure ChangeDir;
procedure DOSCall;
procedure FileOpen;
procedure Work;
end;
const
{Команды для обработчиков событий:}
cmChDir = 202;{сменить каталог}
cmWork = 203;{обработать данные}
cmDOS = 204;{временно выйти в дос}
cmCan = 205;{команда завершения работы}
cmDelete = 206;{уничтожить текущую запись}
cmSearch = 207;{искать нужную запись}
cmEdit = 208;{редактировать запись}
cmAdd = 209;{добавить запись}
{ножество временно недоступных команд:}
WinCom1: TCommandSet = [cmSave, cmWork];
WinCom2: TCommandSet = [cmOpen];
LName=25; {длина поля NAME}
LPhone=11; {---------- PHONE}
LAddr=40; {---------- ADDR}
LLIne=LName+LPhone+LAddr; {длина строки}
type
DataType = record {тип данных в файле}
Name : string [LName]; {имя}
Phone: string [LPhone];{телефон}
Addr : string [LAddr]; {адрес}
end;
var
DataFile: file of DataType; {файловая переменная}
OpFileF : Boolean; {флаг открытого файла}
{---------------------------------------------
реализация объекта TWorkWin
----------------------------------------------}
constructor TWorkWin.Init(Bounds: Trect);
{создание окна данных}
var
HS, VS: PScrollBar; {полосы-указатели}
Interior: PInterior; {указатель на управляемое текстовое окно}
begin
TWindow.Init(Bounds,'',0); {создание нового окна с рамкой}
GetClipRect(Bounds); {получение в BOUNDS кординаты минимальной перерисо-
вываемой части окна}
Bounds.Grow(-1,-1); {установка размеров окна с текстом}
{Включение стандартных по размеру и положению полос-уаказателей:}
VS:= StandardScrollBar(sbVertical+sbHandleKeyBoard);
HS:= StandardScrollBar(sbHorizontal+sbHandleKeyBoard);
{создание текстового окна:}
Interior :=New(Pinterior,Init(Bounds, HS, VS));
Insert(Interior) {включение его в основное окно}
end; {TWrkWin.Init}
{--------------------}
procedure TDlgWin.HandleEvent;
begin
inherited HandleEvent (Event);
if Event.What=evCommand then
EndModal(Event.Command)
end;
{--------------------}
procedure TNotebook.FileOpen;
{открывает файл данных}
var
PF: PFileDialog; {диалоговое окно выбора файла}
Control: Word;
s: PathStr;
begin
{создание экземпляра динамического объекта:}
New(PF, Init('*.dat','Выберите нужный файл:','Имя файла',fdOpenButton,0));
{с помощью следующего оператора окно выводится на экран и результат работы
пользователя с ним помещается в переменную Control:}
Control :=DeskTop^.ExecView(PF);
{анализ результата запроса:}