Мустахкамлаш учун саволлар
1. SYSTEM модулининг асосий вазифаси нима.
2. SYSTEM модулининг асосий процедуралари.
3. SYSTEM модулига мисол келтиринг.
Таянч тушунчалар: exit, halt, chr, ord, round, trunc, dec, inc
Адабиётлар [1],[2],[3],[6].
20мавзу
CRT модули
Режа:
1. Экран операциялари.
2. Ранг бериш.
3. CRT модулига оид мисоллар.
СRT модулига қуйидаги процедура ва функциялар киради:
Clreol-курсор турган жойдан сатр охиригача бўлган матн ўчирилади.
Бичими: ClrEol;
Сlrscr-экранни тозалаш учун ишлатилади.
Бичими: ClrScr;
Delay- N миллисекундга дастур бажарилишини тўхтатади.
Бичими: Delay(N:word);
Delline- курсор турган сатр ўчирилади.
Бичими: DelLine;
Gotoxy- -курсорни X,Y координатага кўчиради.
Бичими: GotoXY(X,Y:byte);
Keypressed-клавиш босилса рост, босилмаса ёлгон қиймат қабул қилади.
Бичими: KeyPressed:boolean;
Nosound- динамик ишини тугатади.
Бичими: nosound;
Sound- динамикни ишга солиб, H герц частота билан товуш чиқаради.
Бичими: sound(H:word);
Readkey- клавишда кўрсатилган белгининг кодини беради.
Бичими: ReadKey:char;
Textbackground-фонга r га мос келган ранг беради.
Бичими: TextBackGround(r:byte);
Textcolor- ёзувга г ранг беради.
Бичими: TextColor(r:byte);
Textmode-m матн режимини ўрнатади.
Бичими: TextMode(m:integer);
Wherex-курсор турган нуқтанинг сатр номерини аниқлайди.
Бичими: WhereX:byte;
Wherey-курсор турган нуқтанинг устун номерини аниқлайди.
Бичими: WhereY:byte;
Window- кўрсатилган координатали ойна ҳосил қилади.
Бичими: window(X1,Y1,X2,Y2:byte)
Маълумки, хозирги пайтда халқ хўжалигининг барча тармоқларида менюли дастурлар кенг қўлланилмокда. Бу дастурлар фойдаланувчиларга анча қулайликлар яратади. Шунинг учун қуйида CRT модулининг имкониятларидан фойдаланувчи MENU дастурсини тавсия этамиз:
program MENU;
uses dos,crt;
const
nmenu=6;
var
ch:char;
functionkey:boolean;
width,textкcolor,backкcolor,selectкtextкcolor,
selectкbackкcolor,menuкbackкcolor,screenкbackкcolor,
borderкbackкcolor,borderкcolor,wx,wy,dy,i,crm:integer;
butкstatus,xкcoord,yкcoord:integer;
leftкbutton,middleкbutton,rightкbutton:boolean;
strmenu:array[0..nmenu-1] of string [40];
procedure hideкcursor;
var
regs:registers;
begin
regs.ah:=1;
regs.ch:=$20;
regs.cl:=0;
regs.bh:=0;
intr($10,regs);
end;
procedure box(x1,y1,x2,y2:integer);
var i,j:integer;
begin
gotoxy(x1,y1);
for i:=x1 to x2-1 do write(#196);
gotoxy(x1,y2);
for i:=x1 to x2-1 do write(#196);
for i:=y1 to y2-1 do
begin
gotoxy(x1,i);
write(#179);
end;
for i:=y1 to y2-1 do
begin
gotoxy(x2,i);
write(#179);
end;
gotoxy(x1,y1);
write(#218);
gotoxy(x2,y1);
write(#191);
gotoxy(x2,y2);
write(#217);
gotoxy(x1,y2);
write(#192);
end;
procedure init;
begin
text_color:=black;
back_color:=3;
select_text_color:=white;
select_back_color:=lightred;
menu_back_color:=blue;
screen_back_color:=lightgray;
border_back_color:=blue;
border_color:=white;
dy:=2;
wx:=15;
wy:=5;
width:=25;
crm:=0;
strmenu[0]:=‘ Математика ‘;
strmenu[1]:=‘ Физика ‘;
strmenu[2]:=‘ Киме ‘;
strmenu[3]:=‘ Биология ‘;
strmenu[4]:=‘ Тарих ‘;
strmenu[5]:=‘ Филология ‘;
end;
procedure draw_menu;
var
i,j:integer;
begin
textbackground(screen_back_color);
clrscr;
hide_cursor;
textcolor(border_color);
textbackground(border_back_color);
box(wx-2,wy-2,wxwidth,wy(nmenu-1)*dy2);
textbackground(menu_back_color);
i:=wx-1;
for j:=wy-1 to wy(nmenu-1)*dy1 do
for i:=wx-1 to wxwidth-1 do;
begin
gotoxy(i,j);
write(‘‘);
end;
for i:=0 to nmenu-1 do
begin
if iкcrm then
begin
textbackground(select_back_color);
textcolor(select_text_color);
end
else
begin
textbackground(back_color);
textcolor(text_color);
end;
gotoxy(wx,wyi*dy);
write(strmenu[i]);
end;
end;
procedure New_Menu(old,sel:integer);
begin
textbackground(select_back_color);
textcolor(select_text_color);
gotoxy(wx,wysel*dy);
write(strmenu[sel]);
textbackground(back_color);
textcolor(text_color);
gotoxy(wx,wyold*dy);
write(strmenu[old]);
end;
procedure up;
var
old:integer;
begin
old:=crm;
crm:=crm-1;
if crmк-1 then crm:=nmenu-1;
new_menu(old,crm);
end;
procedure down;
var
old:integer;
begin
old:=crm;
crm:=crmК1;
if crm_nmenu then crm:=0;
new_menu(old,crm);
end;
procedure do_select(n:integer);
begin
if crm=0 then sound(100);delay(300);nosound;
end;
procedure do_command(key:char;functionkey:boolean);
begin
if (not functionkey) and (upcase(key)к#13)
then do_select(crm);
if functionkey then
case upcase(key) of
#72:up;
#80:down;
end;
end;
begin
init;
drawmenu;
{Асосий цикл}
repeat
if keypressed then begin
ch:=readkey;
if chк#0 then
begin
functionkey:=true;
ch:=readkey;
end
else
functionkey:=False;
docommand(ch,functionkey);
end;
until (chк#27);
end.
Do'stlaringiz bilan baham: |