
2. Опис додаткових алгоритмів програми та їх параметрів
Назва об’єкту |
Опис |
Procedure RS |
Встановлює стандартні налаштування. |
Procedure Welcome |
Зчитує з файлу та виводить на екран текст – привітання |
Procedure Information |
Виводить довідкову iнформацію (інструкцію) з файлу. |
Procedure Run |
Головна процедура програми (початок). |
3. Опис змінних
Назва змінної |
Опис |
r |
Описана в описі процедури Welcome. Має тим String[60]. (Для виведення інформації з файлу на екран.) |
k,h,line |
Описані в процедурі Information. Мають тип String. (Для зчитування інформації з файлу) |
I |
Описаний в процедурі Information. Має тип Byte (Змінна, яка відповідає за номер поточної інформації) |
Головний алгоритм складається з набору процедур, які знаходяться в модулі MakeMenu, а також процедур Run, Information, Welcome та Error.
На початку алгоритму процедура Tabl, з модуля MakeMenu.tpu, малює рамку за допомогою процедури GoWr з того ж модуля. Викликається процедура Welcome, яка виводить з текстового файлу інформацію щодо програми. Потім викликається процедура Menu, яка складає список меню, та процедура Explorer, що показує поточне положення в програмі.
Процедура Run керує вибором одного з пункту меню. Керування здійснюється за допомогою клавіш вверх та вниз. При кожному натискані клавіші викликається процедура PickOut, яка виділяє заданий пункт меню, та процедура Error, яка подає сигнал, якщо він ввімкнутий в налаштуваннях. У разі якщо користувач вибрав потрібний пункт меню та натиснув клавішу «Enter» викликається відповідна процедура.
3.3 Опис модулів та їх структурних елементів
Програма розбита на декілька модулів. Кожен модуль відповідає за окремий розділ програми. Назви та опис процедур та функцій всіх модулів подано нижче.
UpCaseUA |
|
Назва функції або процедури |
Опис |
CaseUp |
Повертає підійманий регістр для заданого символу |
CaseDw |
Повертає опущений регістр для заданого символу |
Підіймає та понижує регістр символу з російського або українського алфавіту. |
MakeMenu |
|
Назва функції або процедури |
Опис |
Explorer |
Зверху програми виводить поточне положення в програмі |
GoWr |
Малює лінію з заданим початковим, кінцевим та проміжним символами. В залежності від значення boo, малює як горизонтальну так і вертикальну лінію. |
PickOut |
Виділяє пунк меню рамкой. |
Tabl |
Набір процедур GoWr для малювання рамки. |
Menu |
Виділяє текст пункту меню головним кольором. |
Ця процедура відповідає за головне оформлення программи (рамка, виділення пунктів меню, інформація про поточне положення в програмі). |
Settting |
|
Назва функції або процедури |
Опис |
ReSett |
Виведення параметрів налаштувань |
AppSet |
Прийняття налаштувань |
Settin |
Меню налаштування |
Sett_save |
Збереженя налаштувань в файл |
Группа процедур, які відповідають за налаштування програмою (2 кольори, швидкість анімації, наявність звуку). |
Gene |
|
Назва функції або процедури |
Опис |
FileGene |
Генерує файл з термінами з файлу Rbook.boo (схема в додатку В (рисунок В.1)) |
Psound |
|
Назва функції або процедури |
Опис |
Play |
Програвання звуку. |
ReedSett |
|
Назва функції або процедури |
Опис |
ReedColor |
Зчитують налаштування з файлу
|
ReedColor2 |
|
ReedSpeed |
|
ReedSound |
|
Всі функції в модулі видимі |
|
|
|
Rbook |
|
Назва функції або процедури |
Опис |
RBook_Search |
Пошук по ключу та занесеня до масиву найдених термінів |
RBook_Variant |
Вивід найдених термінів з масиву для вибору потрібного.
|
RBook_Title |
Головне вікно. |
RBook_Start |
Вивід вибраного терміну на екран. |
Группа процедур, які відповідаються за роботу довідника. Видима частина мадуля – це процедура RBook_Title. |
Test |
|
Назва функції або процедури |
Опис |
Test_Stat |
Вивід на екран статистики поточного тестування |
Test_SeeInfo |
Перегляд всіх результатів тестування |
Test_Variant |
Виділення пункту при виборі теми тестування |
Test_Found |
Пошук в файлі потрібного номера тесту |
Test_Save |
Збереження пройденого тесту в файл для подальшого перегляду |
Test_Start |
Початок тесту |
Test_Title |
Вибір теми тестування |
Повний набір процедур для роботи тестування. Видима частина модуля - Test_Title. |
3.4 Опис довідки для користувача
Програма є інтуітивно зрозумілою та має вбудовану довідку для користувача, що дає можливість переглянути інструкцію для керування програмою. Спочатку треба прочитати вбудовану довідку для освоєння методу керування програмою.
Для запуску програми треба запустити файл Run.bat. В цілому керування програмою здійснюється за допомогою стрілок. Для підтвердження вибору слугує клавіша «Enter». Якщо можливо вибрати один із підпунктів, виберіть потрібний пункт за допомогою стрілок, для підтверждення вибору нажміть «Enter».
Для вибору правельної відповіді при проходжені тесту, користувач повинен натистути клавішу, відповідну до правильного варіанту відповіді. Вихід з програми або перехід в меню здійснюється за допомогою клавіші «Esc».
Для перегляду іншої теми довідки треба натиснути клавішу «Вниз».
В головному вікні довідника треба ввести початкові символи потрібного терміну. Якщо результат пошуку задовільняє треба натиснути клавішу «Enter» та вибрати за допомогою стрілок потрібний термін і натиснути «Enter». Для продовження пошуку – «Enter», для виходу в головне меню – «Esc».
3.5 Аналіз методів вдосконалення програми
Довыдник є програмою, яка часто використовується, тому вона повина буди як найбільш зрозумілою та корисною. Є безліч методів для удосконалення, щоб отримати програму, яка буде задовільняти користувача. В наступній версії програми планується зробити адмінпанель для викладача, щоб він міг редактувати, добавляти та видаляти потрібний тест або один з термінів довідника, це дає можливість найбільш добре налаштувати програму для користувачів. Планується зробити добавляння або видаленя однієї або декількох тем тесту, в залежності від наявность файлу тестування в робочій папці. Розробити алгоритм для визначення коректності файлу з тестуванням для занесеня його в список. Для удосконалення тесту планується зробити обмеження по часу, щоб тестування було найбільш точним.
Висновок
При виконані цієї роботи, була досягнена ціль, а саме створення автоматизованоо довідника з тестуванням по темам. Для роботи програми було створено декілька модулів, деякі з них можливо використовувати для інших цілей. При роботі використовуються бази данних довідника та тестування, також програма використовує додаткові файли, що робить її більш функціональною.
Розроблено алгоритми для вибору випадкового номеру питання, та алгоритми для зручного користування довідником. Після пройдення тестування користувач має можливість переглянути як поточний результат тесту, так і всі результати тестування пройдені раніше.
В программі використовується модуль UpCaseUA, який служить для повищення та пониження регістру. Даний алгоритм є універсальний для будь-якої програми, створеної с турбо середовищі.
В ході виконання роботи мали можливість розглянути методи створення та керування базами даних. Провели порівняльний аналіз всіх методів та виявили найбіьш оптимальний для поставленої задачі.
Данна програма має такі властивості, як: простота, модифікація, зрозімілість в користувані. Программа має зручний та інтуїтивно зрозумілий інтерфейс, має підтримку кирилиці та декілька налаштувань. Затрати на користування програмої мінімальний, це дає можливість використовувати програму практично на будь-якому комп’ютері1 з любою конфігурацією.
Використовувати дану програму рекомендується в учбових закладах, перш за все для розвитку навичок роботи з комп’ютером. За допомогою даної програми можна проводити тестування для учнів та студентів для визначення рівня знань.
___________
2 – Комп’ютер повинен мати підтримку режиму DOS або сеансу DOS
Використана література
1. http://uk.wikipedia.org/wiki/Iнформатика
2. http://9class.inf.ua/ (тесты)
3. А.Ю. Гаевский Iнформатика (7-11 клас), 2006. – 189с.
4. Костерин В.В. Камаев В.А. Технологии программирования: Учебник для
вузов. Высшая школа, 2005, 360 с.
5. Й.Я. Ривкiнд Т.I. Лисенко Iнформатика (9 клас), 2009. – 356 с.
6. http://skyglobe.ru/referat/referat/24047/ (Тести)
7. http://osnet.narod.ru/Test_Int/test.htm (Тести)
8. Вагнер Г. Основы иследования операций М:Мир, 1972. – 1973 с.
9. Аболрус С.А. Программирование на Pascal. Изд. 3-е, обновл. Символ-Плюс, 2003, 328 с.
Додаток 2. Лістинг програми
Додаток А
Головна програма
Program kyrs;
Uses dos, crt, UpCaseUa, MakeMenu, gene, setting, reedsett, rbook, test,
psound;
var Color,color2:1..15;
c:char;
Speed:byte;
soundon:boolean;
text1:text;
Const
Down=#80;
Up=#72;
Right=#77;
left=#75;
AllAsk=15;
Bs=#08;
Esc=#27;
Enter=#13;
procedure run ; forward;
Procedure Welcome; {Сторінка привітання}
Var r:string[60];
Begin
Window(19,4,79,23);
Assign(text1,'data\welcome.wl');
Reset(text1);
textcolor(color2);
while not EOF(text1) do
Begin
delay(10000-speed*70);
readln(text1,r);
writeln(r);
End;
window(1,1,80,25);
Gotoxy(1,25);
Close(text1);
End;
Procedure Information; {Довідка для користувача}
label beg;
var i:byte; line:String;
Begin
i:=1;
explorer(3,2,color,color2,'');
window(19,4,78,23);
clrscr;
assign(text1,'data\inform\test.dov');
Beg:
reset(text1);
Textcolor(color);
while not EOF(text1) do Begin readln(text1,line); Writeln(line); End;
Repeat
c:=readkey; play;
case c of
down:begin close(text1); clrscr;
case i of
1:begin assign(text1,'data\inform\rbook.dov'); i:=2; end;
2:begin assign(text1,'data\inform\setting.dov'); i:=3; end;
3:begin assign(text1,'data\inform\test.dov'); i:=1; end;
End; Goto beg; end;
esc,left:begin close(text1); run; exit; end;
End;
Until (c=esc) or (c=left);
End;
Procedure Run; {Початок роботи алгоритму}
Begin color2:=reedcolor2;
color:=reedcolor;
speed:=reedspeed;
soundon:=reedsound;
window(1,1,80,25);
clrscr;
Tabl(Color);
Explorer(0,1,color,color2,'');
Index:=1;
menu(index,color,color2);
PickOut(1,7,1,10,2,color);
welcome;
Repeat
C:=readkey;
play;
Case c of
Down:Case index of
1:Begin index:=2; Menu(index,color,color2); PickOut(1,9,2,8,3,color); End;
2:Begin index:=3; Menu(index,color,color2); PickOut(1,11,3,7,3,color); End;
3:Begin index:=4; Menu(index,color,color2); PickOut(1,13,2,9,2,color); End;
4:Begin index:=5; Menu(index,color,color2); PickOut(1,15,4,5,4,color); end;
5:Begin index:=1; Menu(index,color,color2); PickOut(1,7,1,10,2,color); End;
End;
Up:Case index of
1:Begin index:=5; Menu(index,color,color2); PickOut(1,15,4,5,4,color); End;
2:Begin index:=1; Menu(index,color,color2); PickOut(1,7,1,10,2,color); End;
3:Begin index:=2; Menu(index,color,color2); PickOut(1,9,2,8,3,color); End;
4:Begin index:=3; Menu(index,color,color2); Pickout(1,11,3,7,3,color); End;
5:Begin index:=4; Menu(index,color,color2); PickOut(1,13,2,9,2,color); End;
End;
Esc:halt;
End;
Until (c=Enter) or (c=right);
Case index of
1:Test_title;
2:Rbook_title;
3:Information;
4:Settin;
5:Halt;
End;
End;
Begin
c1:=7;
clrscr;
While not false do run;
End.
Модулі
Додаток Б
Модуль Gene
Unit Gene;
INTERFACE
Var file1,file2:text;
tex,key:string;
q,ms1,me1:integer;
Const ms='['; me=']';
Procedure FileGene;
IMPLEMENTATION
Procedure FileGene;
Begin
Assign(file1,'data\Rbook\RBook.boo');
assign(file2,'data\Rbook\List.rb');
ReWrite(file2);
Reset(file1);
While not EOF(file1) do
Begin
readln(file1,tex);
for q:=1 to length(tex) do
Case tex[q] of
ms:ms1:=q;
me:me1:=q;
end;
For q:=ms1+1 to me1-1 do key:=key+tex[q];
Writeln(file2,key);
key:='';
End;
close(file1);
Close(file2);
End;
End.
Модуль MakeMenu
Unit MakeMenu;
INTERFACE
Uses crt,upcaseua;
var i:integer;
Procedure GoWr(x,y,long,cNam,cNum2,cNum3,tColor:byte; boo:boolean);
Procedure PickOut(x,y,LineBegin,long,LineEnd,color:byte);
Procedure Tabl(tColor:byte);
Procedure Menu(n,color,color2:byte);
Procedure explorer(m,m1,color,color2:byte; ma:string);
IMPLEMENTATION
Procedure explorer(m,m1,color,color2:byte; ma:string); {Поточне
положення в програмі}
var i:byte; r1,r2:string[20];
Begin
window(1,1,80,25);
gowr(17,3,63,196,195,180,Color,true);
textcolor(color);
Gotoxy(20,2);
for i:=1 to 59 do write(' ');
Gotoxy(74,2);
write(#179);
textcolor(color2);
write(' Esc ');
textcolor(color);
Gotoxy(74,1);
write(#209);
Gotoxy(74,3);
write(#193);
Gotoxy(20,2);
Case m of
0:r1:='Головне меню ';
1:r1:='Тестування';
2:r1:='Довідник';
3:r1:='Допомого';
4:r1:='Установки';
End;
Case m1 of
0:r2:='Живий пошук';
1:r2:='Вибір пункту меню';
2:r2:='Перегляд інструкції';
5:r2:='Віруси';
7:r2:=' Excel ';
9:r2:=' Word ';
11:r2:=' Інтернет';
13:r2:=' Загальне';
15:r2:=' Перегляд результатів ';
Else r2:='';
End;
textcolor(color2);
Write(r1,#26,r2);
if ma<>'' then
begin
write(#26,' ',ma);
Gotoxy(20+length(r1)+3+length(r2),2);
write(CaseUp(ma[1]));
End;
End;
Procedure Menu(n,color,color2:byte); {Вивід меню та виділення
оброного пункту меню }
Var i,j:integer;
Begin
window(2,6,16,20);
clrscr;
For i:=7 to 13 do
Begin
window(1,1,80,25);
Gotoxy(1,25);
Gotoxy(1,i);
Write(chr(179));
Gotoxy(17,i);
write(chr(179));
End;
Gotoxy(7,3);
TextColor(color2);
Write('ЊҐо');
Gotoxy(4,7);
if n=1 then Textcolor(color2) else textcolor(color);
Write('’Ґбвгў п');
Gotoxy(5,9);
if n=2 then Textcolor(color2) else textcolor(color);
Write('„®ўi¤ЁЄ');
Gotoxy(6,11);
if n=3 then Textcolor(color2) else textcolor(color);
Write('„®ўi¤Є ');
Gotoxy(5,13);
if n=4 then Textcolor(color2) else textcolor(color);
Write('“бв ®ўЄЁ');
Gotoxy(6,15);
if n=5 then Textcolor(color2) else textcolor(color);
Write(' ‚Ёеi¤');
End;
Procedure GoWr(x,y,long,cNam,cNum2,cNum3,tColor:byte; boo:boolean); {Малювання лінії заданим символом в текстовому
режимі}
Begin
TextColor(TColor);
Gotoxy(x,y);
write(chr(cnum2));
For i:= 1 to long do
Begin
Write(chr(cNam));
If boo then inc(x)
Else inc(y);
Gotoxy(x,y);
End;
Write(chr(cNum3));
End;
Procedure PickOut(x,y,LineBegin,long,LineEnd,color:byte); {Виділення
рамкою вибраного пункту меню}
Begin
textcolor(color);
For i:=7 to 15 do
begin
gotoxy(1,i);
write(#179);
end;
For i:=7 to 15 do
begin
gotoxy(17,i);
write(#179);
end;
Gotoxy(x,y);
write(chr(195));
For i:=1 to lineBegin do write(chr(196));
write(chr(180));
x:=Linebegin+2;
Gotoxy(x,y+1);
write(chr(192));
Gotoxy(x,y-1);
write(chr(218));
Gotoxy(x+1,y+1);
For i:=1 to long do write(chr(196));
x:=x+1;
y:=y-1;
Gotoxy(x,y);
For i:=1 to long do write(chr(196));
x:=x+long;
y:=y+1;
write(chr(191));
Gotoxy(x,y);
Write(chr(195));
Gotoxy(x,y+1);
write(chr(217));
Gotoxy(x+1,y);
For i:=1 to lineEnd do write(chr(196));
write(chr(180));
Gotoxy(1,25);
End;
Procedure Tabl(tColor:byte); {Набір процедур для створення рамки}
Begin
gowr(1,1,79,205,213,184,tColor,true);
gowr(1,24,79,205,212,190,tColor,true);
gowr(1,2,21,179,179,179,tColor,false);
gowr(80,2,21,179,179,179,tColor,false);
Gotoxy(2,2); write(' ');
gowr(17,1,23,179,209,207,tColor,false);
Gotoxy(18,1); Write(chr(205));
gowr(1,5,16,196,195,180,tColor,true);
End;
End.
Модуль PSound
Unit PSound;
INTERFACE
uses crt;
Procedure Play;
IMPLEMENTATION
Procedure Play; {Програвання звуку}
Begin
Sound(520);
delay(5000);
Nosound;
End;
End.
Модуль Rbook
Unit RBook;
INTERFACE
Uses crt,MakeMenu,reedsett,PSound,UpCaseUA;
Var SeText{ў аi вЁ вҐа¬i.}:array [1..27] of string[30];
strg,TeSe:string;
color,color2,speed:byte;
soundon:boolean;
Const
Down=#80;
Up=#72;
Right=#77;
left=#75;
AllAsk=15;
Bs=#08;
Esc=#27;
Enter=#13;
Procedure RBook_title;
IMPLEMENTATION
Procedure RBook_Search (WrLine:string); {Пошук ключа в файлі}
Label continue;
Var text1:text; line,tex:string; i,u,n,k:byte; WrArr:array [1..255] of string[1];
Begin
for i:=1 to 27 do
for u:=1 to 30 do SeText[i][u]:=' ';
Assign(text1,'data\rbook\list.rb');
reset(text1);
k:=1;
if wrline<>'' then
While not EOF(text1) do
begin
Readln(text1,line);
for i:=1 to length(Wrline) do
If wrline[i]=line[i] then inc(n);
If n=length(WrLine) then
Begin
If length(line)>30 then
Begin
tex:=line;
line:='';
For i:=1 to 30 do
line:=line+tex[i];
Setext[k]:=line;
inc(k);
End
Else
Begin
Tex:=line;
if k<28 then SeText[k]:=tex;
inc(k);
End;
End;
n:=0;
End
Else
Begin
window(18,6,79,23);
clrscr;
end;
Close(text1);
End;
Procedure RBook_Variant; {Вибір терміну для перегляду}
Var ind:byte; col,n,x,y,i,du:byte; c:char; tex:string[15];
const ri=#26;
begin
Window(18,6,79,23);
n:=0;
x:=2;
col:=8;
ind:=1;
y:=1;
for i:=1 to 27 do
if SeText[i]<>' ' then inc(n);
Repeat
du:=0;
c:=readkey;
tex:='';
play;
Case c of
up:begin
if (ind<=n) and (ind>1) then dec(ind);
du:=1;
End;
down:Begin
if (ind<n) and (setext[ind+1][1]<>' ') then
inc(ind);
du:=2;
End;
Esc,left:RBook_title;
Else du:=3; End;
if (ind <10) and (ind>0) then
begin
x:=2;
y:=ind*2-1;
end;
if (ind>9) and (ind<19) then
begin
x:=22;
y:=(ind-9)*2-1;
End;
If ind>18 then
Begin
x:=42;
y:=(ind-18)*2-1;
End;
Case du of
1:If ind<>0 then
Begin
For i:=1 to 15 do tex:=tex+SeText[ind+1][i];
if col=7 then col:=8 else col:=7; Textcolor(col);
Gotoxy(x,y+2);
Write(' ',tex); tex:='';
For i:=1 to 15 do tex:=tex+SeText[ind][i];
TextColor(color2);
GotoXY(x,y);
Write(ri,' ',tex);
GotoXY(x,y);
End;
2:If ind<>n+1 then
Begin
if ind<>1 then
begin
For i:=1 to 15 do tex:=tex+SeText[ind-1][i];
if col=8 then col:=7
else
col:=8;
Textcolor(col);
Gotoxy(x,y-2);
Write(' ',tex);
tex:='';
End;
For i:=1 to 15 do tex:=tex+SeText[ind][i];
TextColor(color2);
GotoXY(x,y);
Writeln(ri,' ',tex);
write(' ');
GotoXY(x,y);
End;
End;
until c=Enter;
TeSe:=SeText[ind];
explorer(2,0,color,color2,tese);
textcolor(color);
gotoxy(50,3);
write(#194);
gotoxy(68,3);
write(#194);
RBook_start(setext[ind]);
exit;
end;
Procedure RBook_title; {Початок роботи довідника (головне вікно
довідника)}
Label beg2;
var i,k,t1,t2,r:integer; c:char; tex,tex2:string[30]; tex3:string[15];
Begin
tex:='';
window(18,2,79,23);
clrscr;
window(1,1,80,25);
Explorer(2,0,color,color2,'');
k:=3;
r:=195;
textcolor(color);
For i:=1 to 2 do
Begin
gowr(17,k,63,196,r,180,color,true);
r:=197;
k:=5;
end;
textcolor(color);
Gotoxy(21,4);
write('‚ўҐ¤iвм Є«оз®ўҐ б«®ў® ...');
textcolor(color);
gotoxy(50,3);
write(#194);
gotoxy(50,5);
write(#193);
gotoxy(68,3);
write(#194);
gotoxy(68,5);
write(#193);
gotoxy(50,4);
write(#179);
GoToXY(68,4);
write(#179);
Gotoxy(74,3);
write(#193);
Gotoxy(52,4);
textcolor(7);
Repeat
Beg2:
c:=readkey;
play;
window(18,6,79,23);
if c<>enter then clrscr;
window (1,1,80,25);
gotoxy(52+length(tex),7);
r:=1;
t2:=6;
t1:=21;
case c of
Bs:begin
tex2:=tex; tex:='';
If length(tex2)>1 then
Begin
For i:=1 to length(tex2)-1 do tex:=tex+tex2[i];
gotoxy(52,4);
write(tex);
End
else
tex:='';
End;
Esc,left: exit;
Else if (c in [' '..'п']) or (c in ['A'..'Z']) or (c in ['Ђ'..'џ']) or
(c in ['a'..'z']) or (c=' ') or (c='.') then
if length(tex)<15then tex:=tex+c;
End;
Gotoxy(52,4);
write(' ');
if (tex<>'') and (c<>enter) then
begin
Gotoxy(52,4);
write(tex);
RBook_search(tex);
end;
If (setext[1][1]<>' ') and (c<>enter) and (tex<>'') then
Begin
Repeat
if t2=24 then
begin
t2:=6;
t1:=t1+20;
end;
Gotoxy(t1,t2);
if textattr=8 then textcolor(7)
else textcolor(8);
tex3:='';
For i:=1 to 15 do tex3:=tex3+setext[r][i];
write(tex3);
inc(t2,2);
inc(r);
delay(65000-speed*640);
Until (r=28) or (SeText[r][1]=' ');
End
Else
if (c<>bs) and (c<>enter) then
begin
Gotoxy(70,4);
textcolor(lightred);
write('ЌҐ ўiа®!');
Gotoxy(52+length(tex),4);
for I:=1 to 2 do delay(65000-speed*325);
Gotoxy(70,4); write(' ');
gotoxy(52,4);
textcolor(7);
write(tex);
end;
Gotoxy(52,4);
write(tex);
until c=Enter;
Case c of Enter:if (tex<>'') and (SeText[1][1]<>' ') then
begin
RBook_variant;
exit;
end
Else Goto Beg2;
Esc,left:exit;
End;
End;
Procedure RBook_start(VarSe:string); {Вивід терміну на екран}
Var inf:array [1..3] of string;
text1:text;
i,k:byte;
t,t2,line1,line2,line3:string;
boo:boolean; e:char;
Begin
Window(18,6,79,23); clrscr; window(19,7,78,22);
Assign(text1,'data\Rbook\rbook.boo');
Reset(text1);
Repeat
readln(text1,line1,line2,line3);
t:='';
For i:=1 to length(line1) do
Begin
if line1[i]='[' then boo:=true;
If line1[i]=']' then boo:=false;
If (boo=true) and (line1[i]<>'[') and (line1[i]<>']') then t:=t+line1[i];
End;
If length(t)>30 then
begin
t2:=t;
t:='';
for k:=1 to 30 do t:=t+t2[k];
End;
Until (t=VarSe) or (EOF(text1));
For i:=1 to 3 do inf[i]:='';
If t=VarSe then
Begin
For k:=length(t)+3 to length(line1) do inf[1]:=inf[1]+line1[k];
if length(line1)=255 then
Begin
Inf[2]:=inf[1];
inf[1]:='';
For k:=1 to length(line2) do inf[1]:=inf[1]+line2[k];
End;
If length(line2)=255 then
Begin
Inf[3]:=inf[2];
inf[2]:=inf[1];
inf[1]:='';
For k:=1 to length(line3) do inf[1]:=inf[1]+line3[k];
End;
TextColor(color2);
Write(T);
Gotoxy(1,1);
write(CaseUp(t[1]));
Gotoxy(length(t)+1,1);
TextColor(color);
Write(inf[3],inf[2],inf[1]);
End;
close(text1);
e:=readkey;
Case e of
esc,left:exit;
enter:begin
rbook_title;
exit;
end;
end;
End;
Begin
Color:=reedcolor;
Color2:=reedcolor2;
Speed:=reedspeed;
soundon:=reedsound;
End.
Модуль ReedSett
Unit ReedSett;
INTERFACE
type TRec=record
color,color2,speed:byte;
soundon:boolean;
End;
TPrec=^Trec;
Var txt:text;
strg:string;
w,code:integer;
Function reedcolor:byte;
Function reedcolor2:byte;
Function reedSpeed:byte;
Function reedSound:boolean;
IMPLEMENTATION
Function reedcolor2:byte; {Зчитування з файлу номеру другорядного кольору}
Var i:byte;
Begin
assign(txt,'data\Setting.stg');
reset(txt);
readln(txt,strg);
val(strg,w,code);
reedColor2:=w;
close(txt);
End;
Function reedSpeed:byte; {Зчитування з файлу швидкості розгортки}
Var i:byte;
Begin
assign(txt,'data\Setting.stg');
reset(txt);
readln(txt);
readln(txt);
readln(txt,strg);
val(strg,w,code);
ReedSpeed:=w;
close(txt);
End;
Function reedcolor:byte; {Зчитування з файлу номеру головного кольору}
Var i:byte;
Begin
assign(txt,'data\Setting.stg');
reset(txt);
readln(txt);
readln(txt,strg);
val(strg,w,code);
reedColor:=w;
close(txt);
End;
Function reedSound:boolean; {Зчитування з файлу помітки}
Var i:byte;
Begin
assign(txt,’data\Setting.stg’);
reset(txt);
For i:=1 to 3 do readln(txt);
readln(txt,strg);
val(strg,w,code);
if w=1 then reedsound:=true else reedsound:=false;
close(txt);
End;
End.
Модуль Setting
Unit Setting;
INTERFACE
Uses crt,makeMenu,gene,ReedSett,psound;
Var speed,color,color2:byte; soundon:boolean;
Const
Down=#80;
Up=#72;
Right=#77;
left=#75;
Bs=#08;
Esc=#27;
Enter=#13;
const men:array [1..5] of string = (' Головний колір ----- ',' Другорядний колір -- ',' Швидкість розгортки ', ' Сигнал ------------- ',' Генерація термінів ');
Procedure ReSett(x,y,z:byte);
Procedure Settin;
Procedure AppSet(g:byte);
IMPLEMENTATION
Procedure Sett_SAVE; {Збереження налаштувань}
var text1:text;
BEGIN
Assign(text1,'data\Setting.stg');
rewrite(text1);
writeln(text1,color2);
writeln(text1,color);
writeln(text1,speed);
if soundon=true then Writeln(text1,'1') else writeln(text1,'2');
close(text1);
End;
Procedure ReSett(x,y,z:byte); {Вивід параметрів налаштувань на екран}
begin
Gotoxy(x,y);
textcolor(color2);
if z<>101 then
begin
write(' ');
gotoxy(x,y);
write(z);
end
else
if soundon=true then
begin
write(' ');
gotoxy(x,y);
write('on')
end
else
begin
write(' ');
gotoxy(x,y);
write('off');
end;
end;
Procedure AppSet(g:byte); {Застосовування налаштунків}
var i,n:byte;
begin
window(1,1,80,25);
tabl(color);
PickOut(1,13,1,10,2,color);
Menu(4,color,color2);
explorer(4,20,color,color2,'');
window(18,2,79,23);
n:=4;
for i:=1 to 5 do
begin
If i=g then textcolor(color2) else textcolor(color);
Gotoxy(5,n);
WRite(men[i]);
textcolor(color2);
case i of
1:writeln(color2);
2:writeln(color);
3:writeln(speed);
4:if soundon=true then write('on') else write('off');
end;
Textcolor(color);
inc(n,2);
End;
sett_save;
End;
Procedure Settin; {Головна процедура }
var PRec:TPRec; c:char;i,ix:byte;w,code:integer; text1:text; line:string;
Begin
color:=reedcolor;
color2:=reedcolor2;
speed:=reedspeed;
soundon:=reedsound;
textcolor(color);
window(18,2,79,23);
clrscr;
ix:=1;
textcolor(color2);
Gotoxy(5,4);
WRite(men[1]);
textcolor(color2);
writeln(color2);
textcolor(color);
Gotoxy(5,6);
WRite(men[2]);
textcolor(color2);
writeln(color);
textcolor(color);
Gotoxy(5,8);
WRite(men[3]);
textcolor(color2);
writeln(speed);
textcolor(color);
Gotoxy(5,10);
WRite(men[4]);
textcolor(color2);
if soundon=true then write('on') else write('off');
textcolor(color);
Gotoxy(5,12);
WRite(men[5]);
textcolor(color);
Gotoxy(5,4);
explorer(4,20,color,color2,'');
window(18,2,79,23);
Repeat
c:=readkey;
soun(soundon);
Case c of
up: Case ix of
1:begin
textcolor(color);
Gotoxy(5,4);
Write(men[1]);
textcolor(color2);
Gotoxy(5,12);
Write(men[5]);
textcolor(color);
textcolor(color2);
write(' ');
ix:=5;
End;
2:begin
textcolor(color);
Gotoxy(5,6);
Write(men[2]);
textcolor(color2);
Gotoxy(5,4);
Write(men[1]);
textcolor(color2);
write(' ');
gotoxy(5+length(men[1]),4);
write(color2); ix:=1;
End;
3:begin
textcolor(color);
Gotoxy(5,8);
Write(men[3]);
textcolor(color2);
Gotoxy(5,6);
Write(men[2]);
textcolor(color);
write(color);
textcolor(color2);
write(' ');
gotoxy(5+length(men[2]),6);
write(color); ix:=2;
End;
4:begin
textcolor(color);
Gotoxy(5,10);
Write(men[4]);
textcolor(color2);
Gotoxy(5,8);
Write(men[3]);
textcolor(color);
write(color);
textcolor(color2);
write(' ');
gotoxy(5+length(men[3]),8);
write(speed);ix:=3;
End;
5:begin
textcolor(color);
Gotoxy(5,12);
Write(men[5]);
textcolor(color2);
Gotoxy(5,10);
Write(men[4]);
textcolor(color);
write(color);
textcolor(color2);
write(' ');
gotoxy(5+length(men[4]),10);
if soundon=true then write('on') else write('off');ix:=4;
End;
End;
down:Case ix of
1:begin
textcolor(color);
Gotoxy(5,4);
Write(men[1]);
textcolor(color2);
Gotoxy(5,6);
Write(men[2]);
textcolor(color);
write(color);
textcolor(color2);
write(' ');
gotoxy(5+length(men[2]),6);
write(color);
ix:=2;
End;
2:begin
textcolor(color);
Gotoxy(5,6);
Write(men[2]);
textcolor(color2);
Gotoxy(5,8);
Write(men[3]);
textcolor(color);
write(speed);
textcolor(color2);
write(' ');
gotoxy(5+length(men[3]),8);
write(speed); ix:=3;
End;
3:begin
textcolor(color);
Gotoxy(5,8);
Write(men[3]);
textcolor(color2);
Gotoxy(5,10);
Write(men[4]);
textcolor(color2);
write(color2);
textcolor(color2);
write(' ');
gotoxy(5+length(men[4]),10);
if soundon=true then write('on') else write('off');
ix:=4;
End;
4:begin
textcolor(color);
Gotoxy(5,10);
Write(men[4]);
textcolor(color2);
Gotoxy(5,12);
Write(men[5]);
ix:=5;
End;
5:begin
textcolor(color);
Gotoxy(5,12);
Write(men[5]);
textcolor(color2);
Gotoxy(5,4);
Write(men[1]);
textcolor(color);
textcolor(color2);
write(' ');
gotoxy(5+length(men[1]),4);
write(color2);
ix:=1;
End;
End;
left:Case ix of
1:begin
if color2>1 then dec(color2);
appset(ix);
Resett(5+length(men[1]),4,color2);
end;
2:begin
if color>1 then dec(color);
appset(ix);
Resett(5+length(men[2]),6,color);
end;
3:begin
If speed>20 then dec(speed,10);
appset(ix);
Resett(5+length(men[3]),8,speed);
end;
4:Begin
if soundon=true then soundon:=false else soundon:=true;
Resett(5+length(men[4]),10,101);
End;
End;
Right:Case ix of
1:begin
if color2<15 then inc(color2);
appset(ix);
Resett(5+length(men[1]),4,color2);
end;
2:begin
if color<15 then inc(color);
appset(ix);
Resett(5+length(men[2]),6,color);
end;
3:Begin
If speed<100 then inc(speed,10);
appset(ix);
Resett(5+length(men[3]),8,speed);
end;
4:Begin
if soundon=true then soundon:=false else soundon:=true;
Resett(5+length(men[4]),10,101);
End;
End;
Enter:If ix=5 then
Begin
sett_save;
gene.filegene;
Gotoxy(5+length(men[5]),12);
write(' ok');
delay(65000);
exit;
end;
End;
Until c=esc;
sett_save;
End;
End.
Модуль Test
Unit Test;
INTERFACE
Uses psound,dos,crt,makemenu,reedsett;
var c1,index,color,color2,speed:byte; w,good,bad,code,i,fouN:integer;
c:char; soundon:boolean;
Const
Down=#80;
Up=#72;
Right=#77;
left=#75;
AllAsk=15;
Bs=#08;
Esc=#27;
Enter=#13;
i13:array [5..15] of string = ('1. Вірус’,'2. Excel','','3. Word','','4. Інтернет','','5. Загальне','', '6.Перегляд результатів’);
Procedure Test_title;
IMPLEMENTATION
Procedure Test_Stat(G,B,u:byte);{Статистика тесту}
var o:integer;
Begin
Window(1,1,80,25);
Gotoxy(20,22);
for o:=1 to 9 do write(' ');
If g=1 then
Begin
Gotoxy(22,22);
good:=good+1;
Gotoxy(21,22);
textcolor(10);
write('Вірно!');
End
else
Begin
bad:=bad+1;
Gotoxy(20,22);
textcolor(12);
write('Не вірно!');
End;
Gotoxy(36,22);
textcolor(color2);
Write(u);
textcolor(lightgreen);
Gotoxy(47,22);
write(Good);
textcolor(lightred);
Gotoxy(58,22);
write(Bad);
textcolor(color2);
Gotoxy(72,22);
write(' ');
Gotoxy(72,22);
write(u-(good+bad)-1);
window(19,3,79,15);
End;
Procedure Test_SeeInfo; {Перегляд всіх результатів}
var c:char; i:integer; text1:text; line:string;
Begin
explorer(1,15,color,color2,'');
window(18,4,79,23);
clrscr;
Gotoxy(1,6);
textcolor(color);
assign(text1,'data\tests\test.stt');
reset(text1);
Gotoxy(1,1);
Readln(text1,line);
gotoxy(1,4);
write('---------------- ');
textcolor(color2);
write(line:27);
textcolor(color);
writeln(' -----------------');
textcolor(color2);
For i:=1 to 5 do
Begin
readln(text1,line);
writeln(' ',line);
End;
textcolor(color);
Gotoxy(1,12);
write('--------------------------------------------------------------');
While not EOF(text1) do
Begin
c:=readkey;
play;
If c=down then
Begin
readln(text1,line);
window(18,4,79,23);
Gotoxy(1,4);
write('---------------- ');
textcolor(color2);
write(line:27);
textcolor(color);
write(' -----------------');
window(18,9,78,14);
textcolor(color2);
clrscr;
For i:=1 to 5 do
Begin
readln(text1,line);
writeln(' ',line);
End;
textcolor(color);
End
Else
if (c=esc) or (c=left) then
begin
close(text1);
exit;
end;
End;
window(18,4,79,23);
Gotoxy(1,13);
write('----------------- ');
textcolor(color2);
write(Немає більше результатів!! ');
textcolor(color);
write('-------------------------------------------------------------------------------');
repeat c:=readkey;
until (c=esc) or (c=enter) or (c=left)
End;
Procedure Test_variant(y,index,UD:integer); {Вибір однієї з тем тестування}
var g:integer;
Begin
Gotoxy(21,y+2); Write(' ');
Gotoxy(1,25);
Case ud of
1:Begin If index=15 then
Begin
Gotoxy(23,7);
textcolor(color);
Write(i13[5]);
Gotoxy(21,17);
textcolor(color2);
write(chr(26),' ',i13[15]);
End
Else
Begin
Gotoxy(23,index+4);
Textcolor(color);
Write(i13[index+2]);
Gotoxy(21,index+2);
textcolor(color2);
write(chr(26),' ',i13[index]);
End;
End;
2:Begin if index=5 then
Begin
Gotoxy(23,17);
textcolor(color);
Write(i13[15]);
Gotoxy(21,7);
textcolor(color2);
write(chr(26),' ',i13[5]);
End
Else
Begin
Gotoxy(23,index);
Textcolor(color);
Write(i13[index-2]);
Gotoxy(21,index+2);
textcolor(color2);
write(chr(26),' ',i13[index]);
End;
end;
End;
End;
function Test_Found(s1,s2,s3:string):string; {Пошук номеру питання}
var text1:text; line:string;
begin
foun:=0;
Case index of
5:assign(text1,'data\tests\virus.ts');
7:assign(text1,'data\tests\excel.ts');
9:assign(text1,'data\tests\word.ts');
11:assign(text1,'data\tests\internet.ts');
13:assign(text1,'data\tests\other.ts')
End;
Reset(text1);
While not EOF(text1) do
Begin
readln(text1,line);
fouN:=foun+1;
If (line[1]=s1) and (line[2]=s2) and (line[3]=s3) then
begin
Test_Found:=line;
close(text1);
exit;
end;
End;
close(text1);
End;
Procedure Test_save(test,g:byte); {Збереження тесту}
var text1:text; days,test1,h:string[10]; mark:real; y,i:byte; year,mon,day,week,ho,min,sec,cosec:word;
Begin
window(1,1,80,25);
tabl(color);
Getdate(year,mon,day,week);
Gettime(ho,min,sec,cosec);
Case week of
0:days:='Неділя';
1:days:='Понедулок';
2:days:='Вівторок';
3:days:='Середа';
4:days:='Четвер';
5:days:='П"ятниця';
6:days:='Субота';
end;
h:=i13[test];
test1:='';
y:=good+bad;
mark:=(good/(bad+good))*5;
for i:=3 to length(h) do test1:=test1+h[i];
Window(18,2,79,23);
clrscr;
Explorer(1,test,color,color2,'Результат');
window(18,7,78,18);
textcolor(color);
Writeln('|------------------ Результати тестування ------------------|');
Gotoxy(1,2);
writeln('|');
write('| пройдений тест -------');
textcolor(color2);
writeln(test1);
textcolor(color);
Write('| Оцінка --------------- ');
textcolor(color2);
writeln(mark:1:0);
textcolor(color);
Write('| вірні відповіді ------ ');
textcolor(color2);
writeln(good);
textcolor(color);
Write('| Не вірні відповіді --- ');
textcolor(color2);
writeln(bad);
textcolor(color);
Write('| Кількість питань ----- ');
textcolor(color2);
writeln(bad+good);
textcolor(color);
writeln('|');
write('|-----------------------------------------------------------|');
for i:=1 to 9 do begin gotoxy(61,i); write('|'); end;
Assign(text1,'data\tests\test.stt');
append(text1);
Writeln(text1,year,'.',mon,'.',day,' (',days,') ', ho,':',min);
writeln(text1,'Пройдений тест-------',test1);
writeln(text1,'Оцінка--------------- ',mark:1:0);
writeln(text1,'Вірні відповіді ----- ',good);
Writeln(text1,'Не вірні відповіді -- ',bad);
Writeln(text1,'Кількість питань----- ',bad+good);
close(text1);
readkey;
play;
exit;
End;
Procedure Test_start(index:Byte); {Початок тесту}
label gg;
Var otvet:char; text1:text; ans:char;
y,uu,namber,num,nAll,u,i,ok,tt:integer; all:set of byte;
o:string[2]; ask,variastr,line:string; g,f,lk,h:string[2]; op:boolean;
Begin
good:=0; bad:=0;
gowr(17,18,63,196,195,180,color,true);
gowr(17,20,63,196,195,180,color,true);
gowr(30,18,2,179,194,197,color,false);
Gotoxy(31,18); write(chr(196));
gowr(42,18,2,179,194,197,color,false);
Gotoxy(43,18); write(chr(196));
gowr(52,18,2,179,194,197,color,false);
Gotoxy(53,18); write(chr(196));
gowr(65,18,2,179,194,197,color,false);
Gotoxy(66,18); write(chr(196));
gowr(30,20,4,179,197,207,color,false);
Gotoxy(31,20); write(chr(196));
gowr(42,20,4,179,197,207,color,false);
Gotoxy(43,20); write(chr(196));
gowr(52,20,4,179,197,207,color,false);
Gotoxy(53,20); write(chr(196));
gowr(65,20,4,179,197,207,color,false);
Gotoxy(66,20); write(chr(196));
Textcolor(color2);
Gotoxy(20,19);
write('Відповідб');
Textcolor(color2);
Gotoxy(33,19);
write('Всього ');
Textcolor(LightGreen);
Gotoxy(45,19);
write('Вірно');
Textcolor(LightRed);
Gotoxy(55,19);
write(‘Не вірно');
Textcolor(color2);
Gotoxy(68,19);
write('Залишилось');
Randomize;
Window(19,5,79,17);
clrscr;
Case index of
5:Begin uu:=8; assign(text1,'data\tests\virus.ts');End;
7:Begin uu:=15; assign(text1,'data\tests\Excel.ts'); End;
9:begin uu:=21; assign(text1,'data\tests\word.ts'); end;
11:Begin uu:=18; assign(text1,'data\tests\internet.ts'); End;
13:Begin uu:=20; assign(text1,'data\tests\Other.ts'); End;
15:begin Test_SeeInfo; exit; end;
End;
for i:=1 to uu do all:=all+[i];
tt:=0;
repeat
num:=random(uu+1);
If (num in all) and (num<>0) then
Begin
str(tt+1,o);
explorer(1,index,color,color2,o);
Window(19,5,79,17);
clrscr;
all:=all-[num];
inc(tt);
str(num,f);
textcolor(color2);
if num>=10 then
Begin
writeln(Test_Found(f[1],f[2],'.'),' ');
Gotoxy(1,1);
write(' ',tt);
gotoxy(1,3);
end
else
Begin
write(Test_Found(f,'.',' '),' ');
gotoxy(1,1);
write(tt);
gotoxy(1,3);
end;
reset(text1);
textcolor(color2);
For i:=1 to foun+1 do readln(text1,line);
writeln;
for i:=1 to 4 do
begin
if line[length(line)]='*' then
Begin
if c1=8 then
begin
textcolor(7);
c1:=7;
end
else
begin
textcolor(8);
c1:=8;
end;
ok:=i;
for u:=1 to length(line)-1 do
begin
delay(10000-speed*70);
write(line[u]);
end;
readln(text1,line);
End
Else
Begin
if c1=8 then
begin
textcolor(7);
c1:=7;
end
else
begin
textcolor(8);
c1:=8;
end;
for u:=1 to length(line) do
Begin
delay(10000-speed*70);
write(line[u]);
End;
readln(text1,line);
End;
Writeln;
End;
Str(ok,g);
window(1,1,80,25);
Gotoxy(24,22);
Repeat
ans:=readkey;
play;
if (ans<>'1') and (ans<>'2') and (ans<>'3') and (ans<>'4') then
Begin
if (ans=esc) or (ans=left) then exit
else
begin
gotoxy(45,17);
textcolor(lightred);
write(Такого варіанта відповіді немає!!!');
window(1,1,80,25);
Gotoxy(24,22);
for u:=1 to 3 do delay(65000);
Gotoxy(45,17);
write(' ');
textcolor(color);
end;
End
Else
Begin
if ans=g then Test_Stat(1,0,uu) else Test_Stat(0,1,uu);
ok:=0;
End;
Until ans in ['1','2','3','4'];
End;
Clrscr;
Until tt>=uu;
Test_save(index,5);
exit;
End;
Procedure Test_title; {Головне вікно тесту}
Var fileInfo:text;
filename:string;
varia,i,n:integer;
Begin
Color:=reedcolor;
Color2:=reedcolor2;
Speed:=reedspeed;
soundon:=reedsound;
window(19,3,78,23);
clrscr;
window(1,1,80,25);
writeln;
explorer(1,10,color,color2,'');
Gotoxy(20,5);
textcolor(color2);
Write('Виберіть тему: ');
textcolor(color);
i:=9;
n:=1;
Gotoxy(21,7);
Writeln(chr(26),' 1. ‚iагбЁ');
writeln;
index:=5;
test_variant(5,index,1);
textcolor(color);
While i<=17 do
Begin
Gotoxy(23,i);
write(i13[i-2]);
inc(i,2);
end;
Repeat
c:=readkey;
play;
Case c of
down:Case index of
5:Begin index:=7; Test_variant(5,index,2); End;
7:Begin index:=9; Test_variant(7,index,2); End;
9:Begin index:=11; Test_variant(9,index,2); End;
11:Begin index:=13; Test_variant(11,index,2); End;
13:begin index:=15; test_variant(13,index,2); End;
15:begin index:=5; test_variant(15,index,2); End;
End;
Up: Case index of
5:Begin index:=15; Test_variant(5,index,1); End;
7:Begin index:=5; Test_variant(7,index,1); End;
9:Begin index:=7; Test_variant(9,index,1); End;
11:Begin index:=9; Test_variant(11,index,1); End;
13:begin index:=11; test_variant(13,index,1); end;
15:begin index:=13; test_variant(15,index,1); end;
End;
Esc,left:exit;
End;
Until c=Enter;
if index<14 then
begin
Test_start(index);
exit;
end
else
begin
Test_SeeInfo;
exit;
end;
End;
End.
Модуль UpCaseUA
Unit UpCaseUa;
INTERFACE
Var i:byte; UpRu,DwRu:String[35];
Function CaseUp(c:char):char;
Function CaseDw(c:char):char;
IMPLEMENTATION
Function CaseUp(c:char):char; {Підіймання регістру}
Begin
For i:=1 to 33 do if c=DwRu[i] then c:=UpRu[i];
CaseUp:=c;
End;
Function CaseDw(c:char):char; {Пониження регістру}
Begin
For i:=1 to 33 do if c=UpRu[i] then c:=DwRu[i];
CaseDw:=c;
End;
Begin
UpRu:=('ЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄЯЧСМИТЬБЮЁ');
DwRu:=('йцукенгшщзхїфівапролджєячсмитьбюё');
End.
Додатки
Додаток Б
Протокол виконання роботи
1. При запуску програми з’являється меню та короткі відопості про програму.
Мал.3 Початок програми (головне меню)
2. При виборі пункту «тестування», з’являється підменю для вибору однієї з тем тестування.
Мал.4 (Меню тестування (вибыр теми тестування))
1.3 Після вибору теми тестування починається тестування. Знизу екрана ведеться статистика поточного тесту для інформування користувача. Тест продовжується доки користувач не відповість на всі питання або не вийде з тесту за допомогою клавіші «Esc».
Мал.5 Процес тестування
1.4 Довідка служить для подання інструкції керування програмою. Для переходу до наступної теми довідки слід нажати клавішу «вниз», та для виходу з довідки клавішу «Esc» відповідно.
Мал.6 Довідка для користувача
1.4 Цей пункт меню призначений для налаштування програми. Зміна налаштування виконується за допомогою клавіш «вліво» та «вправо».
Мал.7 Налаштування програми
1.5 Голвне вікно довідника. Про кожному поповненю ключового слова, программа поступово виводить на екран всі знайдені терміни. Якщо результат пошуку задовільняє то можа вибрати потрібний термін для перегляду.
Мал.8 Головне вікно довідника
1.6 Після вибору терміну, він виводиться на екран для вивчення.
Мал 8. Перегляд терміну.
Додаток В
Рисунок В.1 Алгоритм роботи процедури Gene
Inc(i)
i<33
Якщо с = DwRu \ UpRu
Inc(i)
с привласнюється символ DwRu \ UpRu [i]
Так
Ні
Початок
Кінець
Визначаемо UpRu та DwRu як перелік символів. I:=1;
Функції привласнюється символ с
Рисунок В.2 Алгоритм роботи функцій DwRu \ UpRu
Рисунок В.3 Загальний вигляд роботи алгоритму процедури Rbook_title
Рисунок В.4 Загальний алгоритм роботи процедури AppSetting
Рисунок В.5 Загальний алгоритм роботи процедури Test_start