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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 . 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: 

Ngày đăng: 17/06/2015, 14:09

Tài liệu cùng người dùng

Tài liệu liên quan