Tải bản đầy đủ (.pdf) (11 trang)

Bài giảng tin học đại cương C++ (chương 2)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (284.72 KB, 11 trang )

CHNG2:BÀNPHÍMVÀCURSOR

§1.CÁCMÃPHÍMMRNG
 Chúngtađãthybànphímtocácmãthôngthngchocácchcái,
cácsvàduchmcâu.CácphímnàyđutomãASCIIdài1byte.Tuy
nhiêncónhIuphím
vàthpphímkhôngđcbiudinbngbkít
dàimtbytenàyvídnhcácphímchcnăngtF1đnF10haycácphím
điukhincursor.Cácphímnàyđcmôtbng
mtmãdài2byte.Byte
đutiêncótrslà0vàbytethhailàtrsmãcaphímnày.

1.Nhnbitcácmãmrng:Mtmãmrngphicó2bytevàbyteđ
u
tiênlà0nênchngtrìnhcnphiđc2bytenày.Sauđâylàđonchng
trìnhnhnbitcácmãmrng:

Chngtrình21:
#include<string.h>
main()
{
charkey,key1;
clrscr();
while((key=getche())!=x
)
if(key==0)
{
 key1=getch();
printf(%3d%3d,key,key1);
}
else


printf(%3d,key);
}

 Chng trình này s hinthcác mãcacácphímđc gõ cho dù
chúnglàmãmtbytehay2byte.Tadùnghàmgetch()đkhông
hinthkí
tvagõlênmànhình.Trongbiuthckimtracawhilechngtrình
đcmãđutiên.Numãnàylà0,chngtrìnhbitđólàmãmrngvà
đcti
pphnthhaicamãbnghàmgetch().Sauđónóhinthchai
phn.Nuphnđukháckhôngchngtrìnhschorngđâykhôngphi
làmãmrngvàhinthmãnày.



16
2.Đoánnhnmãmrng:Mtcáchđoánnhnmãmrnglàdùngphát
biuswitchnhtrongchngtrìnhsau:

Chngtrình22:
main()
{
intkey,key1;
clrscr();
while((key=getche())!=X)
if(key==0)

{
key1=getch();
switch(key1)

{
 case59:printf(PhimF1duocnhan\n);
break;
 case60:printf(PhimF2duocnhan\n);
break;
 case75:printf(Phimleftarrowduocnhan\n);
break;
 default:printf(Phimmorongkhacduocnhan\n);

break;
}
}
else
printf(%3d,key);
getch();
}

§2.ĐIUKINCURSORVÀANSI
1. Khái nim chung: Tp tin ansi.sys cung cp tpđã chun hoá các mã
điukhincursor.ANSIAmerica
NationalStandardsInstitut.Đbođm
scàiđtcatptinansi.systrongtptinconfig.systađtdònglnh:
 device=ansi.sys

2.Điu khin cursor bng ansi.sys:Ansi.sys dùng dãy escapeđđiu
khinconnháy.Chuiescape
gmnhiukítđcbit.Ansi.systìmchui
escapenàyquathànhphncachuitronghàmprinft()vàgiimãcáclnh
theosaunó.Chuiescapeluônluôngingnhau,gmkítkhônginđ
c


17
“\x1B”(làmãcakítescape)sauđólàdu[.Sauchuiescapecóthcó
mthaynhiukít.Nhchuinàyconnháycóthđilên,xung,sangtrái
,phihayđnhvtim
tvtrínàođó.Vídđdichuynconnháyxung
ditadùngchui“\x1B[B”

Chngtrình23:Vitchngtrìnhinmtchuitheođngchéo:
main()
{
clrscr();
printf(Chomotchuoitancung
bangdau.:);
while(getche()!=.)
printf(\x1B[B);
getch();
}

3.Dùng#definevàchuiescape:Chui“\x1B[B”đcmãhoávàrtkhó
đc. Khi dùng cácchng trìnhphctpnên ghi chú rõ ràngbng
 cách
dùngdnhng#define.

Chngtrình24:
#definec_down\x1B[B
main()
{
while(getche()!=.)
printf(c_down);

getch();
}
Tómttcáclnhđiukhinconnháy

Mã Côngdng
“[2J” Xoámànhìnhvàđaconnháyvhome
“[K” Xoáđncuidòng
“[A”Đaconnháylênmtdòng
“[B”Đaconnháyxungmtdòng
“[C”Đaconnháysangphimtct
“[D”Đaconnháysangtráimtct
“[%d;%dfĐaconnháyđnvtrínàođó
“[s” Ctgivtríconnháy
“[u” Khôiphcvtríconnháy

18
“[%dA”Đaconnháylênmtsdòng
“[%dB”Đaconnháyxungmtsdòng
“[%dC”Đaconnháysangphimtsct
“[%dD”Đa con nháy sang trái mt dòng và
nhiuct

4.Điukhinconnháytbànphím:Sauđâylàchngtrìnhchophépbn
vcáchìnhđngintrênmànhình

Chngtrình25:
#defineclear\x1B[2J
#definec_left\x1B[D
#definec_right\x1B[C
#definec_up\x1B[A

#definec_down\x1B[B

#definel_arrow75
#definer_arrow77
#defineu_arrow72
#defined_arrow80
#defineacross205
#defineupdown186
main()
{
intkey;
printf(clear);
while((key=getch())==0)
{
key=getche();
switch(key)
{
casel_arrow:printf(c_left);
putch(across);
break;
caser_arrow:printf(c_right);
putch(across);
break;
case
u_arrow:printf(c_up);
putch(updown);
break;

19
cased_arrow:printf(c_down);

putch(updown);
break;
}
printf(c_left);
}
getch();
}

5.Đaconnháyđnvtríbtkì:Chuiescapedngsausđaconnháy
đnvtríbtkìtrênmànhình
Shex1Bca
kítescape
Ngocvuông
Shiudòng
Shiuct
Chcáif
“\x1B[10;40f”

Sauđâylàmtchngtrìnhvídvcáchdùngchuiđó

Chngtrình2
6:
#definetrue1
#defineclear\x1B[2J
#defineerase\x1B[K
main()
{
introw=1,col=1;
printf(clear);
while(true)

{
printf(\x1B[23;1f);
printf(erase);
printf(Nhapvaosodongvasocotdang(20,40));
scanf(%d%d,&row,&col);
printf(\x1B[%d;%df,row,col);
 printf(*(%d,%d),row,col);
}
}
§6.
TRÌNHBÀYTICHBTKÌTRÊNMÀNHÌNH

20
 Sauđây là chng trình dùng chuiđnh v cursor. Chng trình
cungcphaimenuđnhvdctheomànhình.

Chngtrình27:
#definesize15
#definesize24
#defineclear\x1B[2J
main()
{
staticchar*menu1[]=
{
   
Open,
   Close
   Save
   Print
   Quit

};
staticchar*menu2[]=
{
   Cut,
   Copy,
   Paste,
   Reformat
};
voiddisplay(char*[],int,int);

printf(clear);
display(menu1,size1,20);
display(menu2,size2,20);
getch();
}
voiddisplay(char*arr[],intsize,inthpos)
{
intj;
for(j=0;j<size;j++)
{

printf(\x1B[%d,j+1,hpos);
 printf(%s\n,*(arr+j));
}
}

21
 Cácmcchotngmenuđcctgitrongmngcáccontrtrti
chui.Sauđóchngtrìnhdùnghàmđhinthmenu.Hàmđnhvcon
nháynhdãyđnhvANSI.SYS,lyshiudòngt

shiucamctrên
menuvàshiuctđcchngtrìnhchínhtruynsang.

§7.CÁCTHUCTÍNHCAKÍT
 Mikíthinthtrênmànhìnhđcctgitronghaibyteb
nh.
Mtbytelàmãthôngthngcakítvàbytekialàthuctínhcanó.Byte
thuctínhnđnhdinmocakítnhchpnháy,đm,gchdi,đo
màu.Ta
cóthdùngchuiescapecaANSIđnđnhthuctínhcakít.
Theosauchuikítescapevàngocvuônglàconsvàchm.Sauđâylà
danhsáchcácstohiungtrênmànhình:

 2,3,6màuti
 0 ttthuctính,thnglàmàutrngtrênnnđen
 1đm
 4 gchdi
 5 chpnháy
 7đomàu
 8 khôngthyđc
Chuiescapecódngnhsau:

Shex1Bcakítescape
Schobitkiuthuctính



“\x1B[10m”
Chuinàyđcgitrongtintrìnhhinth.Mikhibtmtthuc
tính,tt

ccáckítshinththeothuctínhmichođnkhinóttđi.Sauđâylà
chngtrìnhbiudincácthuctínhcakít:

Chngtrình28:
#defineNORMAL
 \x1B[Om
#defineBOLD\x1B[1m
#defineUNDER\x1B[4m
#defineBLINK\x1B[5m
#defineREVERSE\x1B[7m
main()
{
printf(normal%sblink%snormal\n\n,BLINK,NORMAL);
printf(normal%sbold%snormal\n\n,BOLD,NORMAL);

22
printf(normal%sunderline%snormal\n\n,UNDER,NORMAL);
printf(normal%sreversed%snormal\n\n,REVERSE,NORMAL);
printf(%s%sreversedandblink%s\n\n,BLINK,REVERSE,NORMAL);
}
§8.MENU
 Ta xây dng mt chng trình gm 5 mc menu là Open , Close,
Save,Print,Quit.Các
phímmũitênlênxungsdichuynvtsángđncác
mccnchn.PhímINSđchnvàthchincôngvictngng.Mc
Quitsktthúcchngtrình.

Chngtrình2
9
#definetrue 1

#definenum 5
#defineclear\x1B[2J
#defineerase\x1B[K
#definenormal\x1B[Om
#define reverse\x1B[7m
#definehome\x1B[1;1f
#definebottom\x1B[20:1f
#define u_arro 72
#definecolor\x1B[4m
/*#definel_arro 75
#definer_arro 77*/
#defined_arro80
#defineinsert 83
main()
{
staticchar*item[num]=
{

   Open,
   Close,
   Save,
   Print,
   Quit
};
intcurpos;
intcode;
voiddisplay(char*[],int,int);
intgetcode(void);
voidaction(int);


23
printf(clear);
curpos=0;
while(true)
{
 display(item,num,curpos);
 code=getcode();
 switch(code)
{
 caseu_arro:if(curpos>0)
   curpos;
break;
 cased_arro:if(curpos<num1)
++curpos;
break;
 caseinsert:action(curpos);
break;
}
}
}

voiddisplay(char*arr[],intsize,intpos)
{
intj;
printf(home);
for(j=0;j<size;j++)
{

if(j==pos)
printf(reverse);

 printf(%s\n,*(arr+1));
 printf(%s%5s,color,*(arr+j));
 printf(normal);
 printf(%s,);
 printf(home);
}
}

intgetcode()
{
intkey;
while(getch()!=0)

24
;
return(getch());
}

voidaction(intpos)
{
switch(pos)
{
 case0:printf(Open);
break;
 case1:printf(Close);
break;
 case2:printf(Save);
break;
 case3:printf(Print);
break;

 case4:exit();
}
}

§9.GÁNPHÍM
CHCNĂNGBNGANSI
 Nhgánchuivàophímchcnăngtacóthcuhìnhlibànphím
đamgdùng.Dngthccachuigánphímchcnăngnhsau:
mãescapegm
1xB[
bytethnhtcamãmrngchophímchcnăng
du;
bytethhaicamãmrngchophímchcnăng
du;
chuicngán
xungdòng



\
x1B[0;68;“s”;13p
Chngtrình210:
main()
{
charstr[81];
intkey;
clrscr();

25
printf(Nhapvaomotsocuaphimchucnang:);

gets(str);
key=atoi(str);
printf(Nhapvaomotchuoideganphimnay:);
gets(str);
printf(\x1B[0;%d;\%s\;13p,key+58,str);
}

26

×