Đăng ký Đăng nhập

Tài liệu Tóm tắt kiến thức c

.PDF
20
631
79

Mô tả:

Bách khoa Online: hutonline.net Bách Khoa Online: hutonline.net Tìm kiếm & download ebook: bookilook.com Bách khoa Online: hutonline.net «n tËp C¸C KIÕN THøC CB VÒ LËP TR×NH C [ ] A.C¸C PHÇN Tö C¬ B¶N: ‰ C¸c phÐp tÝnh: • PhÐp to¸n c¬ b¶n: + , - , * , / , %(lÊy phÇn d−). • PhÐp to¸n t¨ng gi¶m: x++ hay ++x ( x--,--x): t¨ng (gi¶m) x xuèng 1 ®¬n vÞ. • PhÐp to¸n trªn Bit: & (and), | (or), ^ (XOR), << (dÞch tr¸i), >> (dÞch ph¶i). • BiÓu thøc ®iÓu kiÖn: có ph¸p: BT1? BT2: BT3 (BT: BiÓu thøc). NÕu BT1 ®óng(<>0) th× BT ®iÒu kiÖn trªn = gi¸ trÞ cña BT2 ng−îc l¹i = gi¸ trÞ cña BT3 nÕu BT1 sai (=0). VD: printf(“Min of a & b: %d”,a). • fabs(x): lÊy gi¸ trÞ tuyÖt ®èi. • sin(x), cos(x), tan(x): lÊy sin, cos, tang • log(x): tÝnh ln(x). • log10(x): tÝnh lg(x). • pow(x,n): tÝnh x mò n (xn). cña x. • floor(x): LÊy phÇn nguyªn cña sè x. • M_PI: H»ng sè Pi. • exp(x): tÝnh e mò x (ex). • flushall(): xo¸ bé ®Öm bμn phÝm. • void calloc(unsigned n, unsigned size): cÊp ph¸t vïng nhí n*size byte, nÕu thμnh c«ng hμm tr¶ vÒ ®Þa ®Çu vïng nhí ®−îc cÊp, ng−îc l¹i tr¶ vÒ NULL. §Ó gi¶i phãng vïng nhí ®−îc cÊp ph¸t bëi malloc hay calloc do pt trá tíi ta dïng : void free(void *pt); • int getchar(void): nhËn mét ký tù tõ bμn phÝm (stdin), tr¶ vÒ ký tù nhËn ®−îc. • int random(int n): cho mét gi¸ trÞ ngÉu nhiªn tõ 0 ... n-1. • int tolower(int c): ®æi ký tù ch÷ hoa sang ch÷ thõ¬ng. • int toupper(int c): ®æi ký tù ch÷ th−êng sang ch÷ hoa. • int isalnum(int c): kiÓm tra c cã ph¶i lμ ký tù alphanumeric? (ch÷ c¸i hay sè). • int isalpha(intc): kiÓm tra c cã ph¶i lμ ch÷ c¸i kh«ng? • int isdigit(int c): kiÓm tra c cã ph¶i lμ ch÷ sè kh«ng? • Int ispunct(int c): kiÓm tra c cã ph¶i lμ ký tù chÊm c©u kh«ng? • int isxdigit(int c): kiÓm tra c cã ph¶i lμ ch÷ sè hÖ 16 kh«ng? • int isupper(int c): kiÓm tra c cã ph¶i lμ ch÷ hoa (tõ A ®Õn Z) kh«ng. Chi chó: C¸c hμm kiÓm tra nÕu tho¶ th× tr¶ vÒ gi¸ trÞ <>0, ng−îc l¹i tr¶ vÒ 0. Tªn biÕn = BiÓuthøc / biÕn; ‰ PhÐp g¸n: ‰ XuÊt nhËp d÷ liÖu: • XuÊt: printf(“ký tù ®iÒu khiÓn”,bt1,bt2,...); Trong ®ã danh s¸ch biÓu thøc cã thÓ bao gåm biÓu thøc, sè, hay “v¨n b¶n”, c¸c ®èi t−îng ph¶i c¸ch nhau bëi dÊu phÈy. Vd: printf( “Nam %d la the ky %d: ”, 1999+2, 40/ 2); HTD (TH0003) C Programming (Se) Page: 2 Bách khoa Online: hutonline.net Ö • NhËp: Nam 2001 la the ky 20 scanf(“c¸c ký tù ®Þnh d¹ng”,biÕn1, biÕn2,...). scanf(“%d%d”,&a,&b); b.CÊu tróc ®iÒu kiÖn, rÏ nh¸nh vμ vßng lÆp: ‰ if (bieuthuc) lÖnh1; hay if (bieuthuc) lÖnh1; else lÖnh2; Trong cÊu tróc thø 1, nÕu bieuthuc cho gi¸ trÞ kh¸c 0 th× thùc hiÖn lÖnh1 vμ =0 th× th«i, cßn trong cÊu tróc thø 2 nÕu bieuthuc cho gi¸ trÞ kh¸c 0 th× thùc hiÖn lÖnh1 vμ =0 th× thùc hiÖn lÖnh2. Chó ý lμ trong th©n if vμ else chØ lμ 1 c©u lÖnh ®¬n, nÕu cã nhiÒu lÖnh th× ph¶i lång vμo {...}; ‰ switch (biÓu thøc) { case x: lÖnh; break; .......... case n: lÖnh; break; default :lÖnh; break; } ý nghÜa: c©u lÖnh rÏ nh¸nh switch sÏ tÝnh gi¸ trÞ cña biÓu thøc vμ thùc hiÖn lÖnh t−¬ng øng trong case nμo cã gi¸ trÞ nμy. NÕu kh«ng cã gi¸ trÞ trong case nμo = gi¸ trÞ cña biÓu thøc th× thùc hiÖn lÖnh sau default. ‰ for (biÕn®kh[= gi¸ trÞ ®Çu]; ®iÒu kiÖn ; phÐp to¸n thay ®æi gi¸ trÞ biÕn ®kh ) lÖnh ; NÕu cã nhiÒu lÖnh th× ph¶i lång vμo {... }; ‰ while (biÓu thøc) lÖnh; NÕu cã nhiÒu lÖnh th× lång vμo{... }; ý nghÜa: Trong khi biÓu thøc <>0 th× thùc hiÖn lÖnh. ‰ do lÖnh while(biÓu thøc) ; NÕu cã nhiÒu lÖnh th× lång vμo {}. ý nghÜa: Thùc hiÖn lÖnh nhiÒu lÇn trong biÓu thøc <>0 . ‰ goto vμ nh·n: (Nh·n (handle) cã d¹ng nh− tªn biÕn, ®øng tr−íc dÊu 2 chÊm :) HTD (TH0003) C Programming (Se) Page: 3 Bách khoa Online: hutonline.net Có ph¸p: goto nh·n; Khi gÆp dßng nμy m¸y sÏ nh·y ®Õn c©u lÖnh cã nh·n viÕt sau tõ kho¸ goto. ™ CONTINUE, BREAK Vμ SIZEOF: o C©u lÖnh continue dïng ®Ó b¾t ®Çu mét vßng lÆp míi cña chu tr×nh bªn trong nhÊt chøa nã. Trong th©n for m¸y sÏ chuyÓn ®Õn b−íc khëi ®Çu kÕ tiÕp. Cßn trong while vμ do while m¸y sÏ chuyÓn ®Õn x¸c ®Þnh gi¸ trÞ biÓu thøc sau while vμ tiÕn hμnh kiÓm tra ®iÒu kiÖn kÕt thóc vßng lÆp, (continue kh«ng dïng cho switch). o C©u lÖnh break cho phÐp ta tho¸t khái for, while, do while vμ switch. Khi cã nhiÒu vßng lÆp lång nhau, break sÏ ®−a ra khái vßng lÆp hay switch bªn trong nhÊt. o To¸n tö sizeof cho kÝch th−íc (byte) cña mét kiÓu hay mét ®èi t−îng d÷ liÖu, có ph¸p: sizeof(kiÓud÷liÖu) hay sizeof(®èit−îngd÷liÖu). C¸c kiÓu d÷ liÖu nh− int, char, float, kiÓu tù ®Þnh nghÜa,... C¸c ®èi t−îng d÷ liÖu nh− m¶ng, cÊu tróc, biÕn,... Th−êng dïng ®Ó x¸c ®Þnh sè phÇn tö cña m¶ng khi ®−îc khëi ®Çu: int a[]={1,2,3,4,5,6}; int spt=sizeof(a)/sizeof(int); C. Hμm (FUNCTION): ‰ §Þnh nghÜa Hμm: TªnHμm (Danhs¸chthamsè) ; {Khai b¸o biÕn côc bé vμ th©n hμm}; ‰ Sö dông Hμm: Tªn hμm (Danhs¸chc¸cthamsèthùcnÕucã); ‰ TruyÒn tham sè: + TruyÒn b»ng trÞ: ®©y lμ chÕ ®é truyÒn tham sè mÆc ®Þnh cña C. Víi c¸ch truyÒn nμy gi¸ trÞ cña tham sè thùc sÏ kh«ng bÞ thay ®æi sau khi hμm thùc hiÖn. +TruyÒn b»ng biÕn: tøc muèn truyÒn c¶ néi dung lÉn ®Þa chØ cña biÕn. Khi ®ã ta ph¶i sö dông biÕn con trá. HTD (TH0003) C Programming (Se) Page: 4 Bách khoa Online: hutonline.net D. M¶ng (Array): ‰ M¶ng 1 chiÒu: • Khai b¸o t−êng minh: KiÓu tenmang[sè phÇn tö] ; • Khai b¸o kh«ng t−êng minh: KiÓu tenmang []; C¸ch khai b¸o nμy ®−îc sö dông trong c¸c tr−êng hîp: võa khai b¸o võa g¸n trÞ (vd: int a[]={1,2,3,7}; ), m¶ng lμ tham sè hμm (vd: int nhapmang(int a[],int n, int m) ;). • XuÊt/ nhËp m¶ng: ta dïng vßng lÆp for(vd for (i=1; i *Tªn_con_trá; Vd: int *pt,*x; + M¶ng con trá: *Tªn_con_trá[sèphÇntöm¶ng]; Vd: int *pt[10]; + Hμm con trá: *Tªn_hμm (Danh s¸ch c¸c tham sè)...; ‰ C¸c phÐp to¸n trªn con trá: + PhÐp g¸n: khi thùc hiÖn phÐp g¸n cho biÕn con trá th× biÓu thøc bªn ph¶i phÐp g¸n ph¶i cã gi¸ trÞ lμ ®Þa chØ cña mét biÕn hay m¶ng vμ ph¶i cïng kiÓu víi kiÓu con trá. Vd: int x,*pt; ... p=&a; + PhÐp to¸n lÊy néi dung cña biÕn do con trá chØ ®Õn(*): *tªn_biÕn_con_trá. VD: y=*x; + PhÐp to¸n t¨ng gi¶m: pt++,pt--; Chó ý trong phÐp to¸n nμy lμ mçi lÇn t¨ng (gi¶m) lμ t¨ng (gi¶m) kÝch th−íc cña kiÓu d÷ liÖu mμ nã trá ®Õn (chø kh«ng ph¶i lμ mét ®¬n vÞ). ‰ Con trá lμ tham sè Hμm: NÕu mét hμm cã tham sè lμ kiÓu con trá th× khi truyÒn tham sè nμy cho hμm ph¶i truyÒn ®Þa chØ cña biÕn cã kiÓu t−¬ng øng. Vd: ‰ void input (int a[], int*x); Gäi hμm: input (a,&x); Con trá vμ m¶ng: +M¶ng mét chiÒu: • §èi víi m¶ng mét chiÒu khi sö dông m¶ng nÕu chØ ghi tªn m¶ng mμ kh«ng ghi chØ sè th× cã nghÜa lμ ®Þa chØ cña phÇn tö thø zero cña m¶ng.( array <=> &array[0]). • Khi mét hμm cã tham sè lμ m¶ng th× khi gäi hμm ta chØ truyÒn tªn cña m¶ng, kh«ng ph¶i ghi chØ sè m¶ng. Vd: input (a , n); nhËp m¶ng A gåm n phÇn tö. +M¶ng nhiÒu chiÒu: • §èi víi m¶ng hai chiÒu khi sö dông m¶ng nÕu chØ ghi tªn m¶ng mμ kh«ng ghi chØ sè th× cã nghÜa lμ ®Þa chØ cña hμng ®Çu tiªn trong ma trËn. (a ≡ &a[0] ≡ (&a[0][0]). • Kh«ng thÓ dïng phÐp to¸n ®Þa chØ ®Ó nhËp cho m¶ng hai chiÒu (ngo¹i trõ kiÓu int). HTD (TH0003) C Programming (Se) Page: 7 Bách khoa Online: hutonline.net • Kh«ng thÓ dïng biÕn con trá ®Ó nhËp cho m¶ng hai chiÒu. Gi¶i ph¸p cho tr−êng hîp nμy lμ ta nhËp th«ng qua mét biÕn t¹m sau ®ã g¸n l¹i biÕn t¹m nμy cho cho phÇn tö t−¬ng øng cña m¶ng. F. CHUæI (string): ˆ Khai b¸o: t−¬ng tù nh− khai b¸o m¶ng ta còng cã hai c¸ch khai b¸o lμ khai b¸o t−êng minh vμ kh«ng t−êng minh: char tenchuoi [chiÒu dμi thùc+1]; char tenchuoi [ ]; ˆ C¸c thao t¸c trªn kiÓu chuæi: + NhËp: • LÖnh scanf(“%s”,tenchuoi); LÖnh nμy kh«ng thÓ nhËp vμo mét chuæi cã chøa ký tù kho¶ng tr¾ng, tab, enter, vμ ®Ó l¹i ký tù “\n” trong bé ®Öm bμn phÝm. • LÖnh gets(tenchuoi); §−îc khai b¸o trong “string.h”. LÖnh nμy cã thÓ nhËp ®−îc chuæi cã kho¶ng tr¾ng, kÕt thóc khi gÆp ký tù xuèng dßng(“\0”). + XuÊt: • LÖnh printf(“%s”,tenchuoi); • LÖnh puts(tenchuoi); XuÊt chuæi vμ xuèng dßng. + G¸n chuæi: Muèn sö dông phÐp g¸n chuæi ta ph¶i sö dông biÕn con trá vμ hμm calloc ®Ó cÊp ph¸t vïng nhí cho biÕn nμy. Vd: char *str; str=calloc(40,sizeof(char)); str=“MediaSpace Club”;... ˆ C¸c hμm th−êng dïng víi kiÓu chuæi, ký tù: (phÇn lín ®−îc khai b¸o trong “string.h”). • strcat( char*dest, char *scr): nèi chuæi dest víi chuæi scr; • strspn(*str, *str_con): cho ®é dμi ®o¹n ®Çu tiªn lín nhÊt cña str mμ mäi ký tù cña ®o¹n ®Òu cã mÆt trong chuçi str_con. • strlen(char *str): cho chiÒu dμi thùc cña chuæi str. • char *strupr(char *s): chuyÓn chuæi tõ ký tù th−êng sang HOA. HTD (TH0003) C Programming (Se) Page: 8 Bách khoa Online: hutonline.net • char *strlwr(char *s): chuyÓn chuæi tõ ký tù HOA sang th−êng. • char *strrev(char *s): ®¶o ng−îc c¶ chuæi trõ ký tù kÕt thóc(“\0”). • char *strcpy(char *dest, char *scr): sao chÐp toμn bé chuæi src sang chuæi dest. • char *strncpy(char *dest, char *scr,n): sao n ký tù ®Çu cña chuæi src sang chuæi dest. • char *strchr(char *str, int c): t×m sù xuÊt hiÖn ®Çu tiªn cña c trong str. NÕu t×m thÊy hμm tr¶ vÒ ®Þa chØ cña ký tù t×m ®−îc trong str, ng−îc l¹i tr¶ vÒ NULL. • char *strstr(char *str, char *str_con): t×m sù xuÊt hiÖn ®Çu tiªn cña str_con trong str. NÕu thÊy, hμm cho ®Þa chØ cña chuçi con (trïng víi str_con) trong str, ng−îc l¹i hμm tr¶ vÒ NULL. • char *strbrk(char *s1, char *s2): duyÖt trong s1 ®Ó t×m ký tù ®Çu tiªn khíp víi bÊt kú ký tù nμo cña s2. NÕu cã xuÊt hiÖn, hμm cho ®Þa chØ cña ký tù t×m thÊy trong s1, ngù¬c l¹i hμm tr¶ vÒ NULL. • int strcmp(char *s1, char *s2): so s¸nh 2 chuæi theo thø tù, hμm tr¶ vÒ < 0 nÕu chuçi s1 < chuçi s2 ; = 0 nÕu chuçi s1 = chuçi s2 ; >0 nÕu chuçi s1 lín h¬n chuçi s2. • int stricmp(char *s1, char *s2): gièng nh− strcmp nh−ng kh«ng ph©n biÖt ch÷ HOA, ch÷ th−êng khi so s¸nh. • int memcmp(char *s1, char *s2, unsighed n); So s¸nh chuæi s1 vμ s2 mét c¸ch chÝnh x¸c, ph©n biÖt HOA th−êng trong ph¹m vi n byte vμ tr¶ vÒ: <0 nÕu s1 nhá h¬n s2; = 0 nÕu s1 trïng s2 ; >0 nÕu s1 lín h¬n s2. • char * strncat(char *s,char *s1,int n): ghÐp n ký tù ®Çu tiªn cña s1 vμo s. • char *itoa(int x,char *s,int cs): ChuyÓn sè nguyªn x trong hÖ ®Õm c¬ sè cs (cs=10: hÖ 10, cs=8:hÖ 8, cs=16:hÖ 16) sang chuçi vμ l−u vμo vïng nhí s. Hμm tr¶ vÒ ®Þa chØ cña vïng s . (stdlib.h) • int atoi(char *s): chuyÓn chuçi s sang gi¸ trÞ int. • long atol(char *s): chuyÓn chuçi s sang gi¸ trÞ long. HTD (TH0003) C Programming (Se) Page: 9 Bách khoa Online: hutonline.net G. CÊU TRóC (STRUCTURE): ‰ §Þnh nghÜa kiÓu vμ khai b¸o biÕn t¸ch biÖt: + §Þnh nghÜa kiÓu: struct tªn_cÊu_tróc { kiÓu tªn_thμnh_phÇn 1; kiÓu tªn_thμnh_phÇn 2;... kiÓu tªn_thμnh_phÇn n; }; + Khai b¸o biÕn: struct tªn_cÊu_tróc biÕn_1, biÕn_2,...,biÕn_n; + M¶ng cÊu tróc: struct tªn_cÊu_tróc tªnm¶ng[spt]; chóng ta còng cã thÓ sö dông typedef tr−íc tõ kho¸ struct ®Ó ®Þnh nghÜa kiÓu cÊu tróc, khi ®ã muèn khai b¸o biÕn ta kh«ng cÇn ®Æt struct tr−íc tªn_cÊu_tróc. ‰ §Þnh nghÜa kiÓu vμ khai b¸o biÕn kÕt hîp: struct tªn_cÊu_tróc { c¸c thμnh phÇn cÊu tróc gièng nh− trªn; } biÕn_1,biÕn_2,...,biÕn_n; ‰ Truy xuÊt ®Õn c¸c thμnh phÇn cÊu tróc: + §¬n gi¶n: biÕn_cÊu_tróc.biÕn_thμnh_phÇn; + Phøc t¹p: biÕn_cÊu_tróc.biÕn_cÊu_tróc_2.biÕn_thμnh_phÇn; ®−îc sö dông khi biÕn cÊu tróc 2 lμ thμnh phÇn trùc tiÕp cña mét biÕn c©u tróc lín h¬n (CÊu tróc lång nhau). ‰ Mét sè phÐp to¸n c¬ b¶n trªn kiÓu cÊu tróc: c¸c thao t¸c trªn biÕn cÊu tróc ph¶i ®−îc thùc hiÖn th«ng qua c¸c thμnh phÇn cña nã (ngo¹i trõ phÐp g¸n). Thao t¸c trªn c¸c thμnh phÇn cña cÊu tróc còng nh− thao t¸c trªn c¸c biÕn cã kiÓu t−¬ng øng. Vd: + NhËp: scanf(“%s”,&nhanvien.ten); + XuÊt: printf(“\n Ten nhan vien la: %s.”,nhanvien.ten); + Céng: luong=nhanvien1.luong + nhanvien2.luong; HTD (TH0003) C Programming (Se) Page: 10 Bách khoa Online: hutonline.net + G¸n: ta cã thÓ g¸n hai biÕn cÊu tróc cho nhau; g¸n biÕn cho phÇn tö m¶ng; g¸n phÇn tö m¶ng cho biÕn; g¸n hai phÇn tö m¶ng cho nhau. §iÒu cÇn l−u ý lμ c¸c biÕn vμ c¸c phÇn tö m¶ng ph¶i cïng kiÓu. + Khëi t¹o gi¸ trÞ ®Çu cho cÊu tróc: ta khëi t¹o gi¸ trÞ b»ng c¸ch viÕt vμo sau khai b¸o cña chóng c¸c gi¸ trÞ cña c¸c thμnh phÇn. Vd: struct nhanvien2{“Nguyen Van A”, 1990, 500000}; ‰ Con trá kiÓu cÊu tróc: + Khai b¸o: kiÓu_cÊu_tróc + Truy xuÊt: cã 2 c¸ch truy xuÊt ®Õn thμnh phÇn cña biÕn con trá: *tªn_biÕn_con_trá; - Tªn_biÕn_con_trá -> tªn_thμnh_phÇn - (*Tªn_biÕn_con_trá).tªn_thμnh_phÇn 8. KIÓU TËp TIN (FILE): ‰ Khai b¸o: FILE *fp; // Khai b¸o biÕn con trá kiÓu File víi tªn fp ‰ M· chuyÓn dßng vμ kÕt thóc File: • M· chuyÓn dßng: §èi víi File më theo kiÓu nhÞ ph©n m· chuyÓn dßng lμ m· 10 (LF), cßn víi kiÓu v¨n b¶n sÏ lμ m· 13 vμ 10. • M· kÕt thóc: khi gÆp m· kÕt thóc hμm feof(fp) cho gi¸ trÞ <>0. Trong khi ®äc nÕu gÆp ký tù cã m· 26 hoÆc ký tù cuèi cïng trong File, ta sÏ nhËn ®−îc mμ kÕt thóc File EOF (sè -1). ‰ §ãng më File vμ ®äc ghi d÷ liÖu: • Më File: FILE *fopen(const char *tªnfile, const char*kiÓu); Hμm dïng ®Ó më mét File, nÕu thμnh c«ng tr¶ vÒ con trá kiÓu File øng víi File võa më, ng−îc l¹i tr¶ vÒ NULL. Trong ®ã ®èi sè kiÓu mang c¸c gi¸ trÞ sau: + KiÓu v¨n b¶n: “r”(read), “w”(write), “a”(append), “r+”, “w+” . “a+”. + KiÓu nhÞ ph©n: “rb”, “wb”, “ab”, “r+b”, “w+b”, “a+b”. (Ctrl+F1->detail). • §ãng File: int fclose(FILE *fp); Víi fp lμ con trá t−¬ng øng víi File cÇn ®ãng. §Ó ®ãng tÊt c¶ c¸c File ®ang më ta dïng hμm: int fcloseall(void); NÕu thμnh c«ng 2 hμm nμy cho gi¸ trÞ <> 0, ng−îc l¹i tr¶ vÒ EOF. • Ghi ký tù: int putc(int ch, FILE *fp); int fputc(int ch, FILE *fp); Víi ch lμ gi¸ trÞ nguyªn, fp lμ con trá File. Hμm nμy sÏ ghi vμo file mét ký tù cã m· = HTD (TH0003) C Programming (Se) Page: 11 Bách khoa Online: hutonline.net ch%256. NÕu thμnh c«ng tr· vÒ m· ký tù ®−îc ghi, ng−îc l¹i tr¶ vÒ EOF. Lμm viÖc víi Text&Binary. • §äc ký tù tõ File: int getc(FILE *fp); int fgetc(FILE *fp); Hμm ®äc mét ký tù tõ File fp, nÕu thμnh c«ng hμm cho m· ®äc ®−îc (0 ... 255), ng−îc l¹i tr¶ vÒ EOF. • Ghi d÷ liÖu theo khu«n d¹ng: int fprintf(FILE *fp, const char *control, ...); Víi fp lμ con trá File, control chøa ®Þa chØ cña chuæi ®iÒu khiÓn (gièng nh− trong hμm printf), ... lμ danh s¸ch c¸c ®èi mμ gi¸ trÞ cña chóng cÇn ghi vμo File. VD: fprintf(fp,”\n this year: %d”,iYear); • §äc d÷ liÖu theo khu«n d¹ng: int scanf(FILE *fp, const char *control,...); Víi fp lμ con trá File, control chøa ®Þa chØ cña chuæi ®iÒu khiÓn (gièng nh− trong hμm printf), ... lμ danh s¸ch c¸c ®èi chøa kÕt qu¶ ®äc ®−îc tõ File. VD: fscanf(fp,“%d%f”,&ia,&fa); • Ghi chuæi ký tù: int fputs(const char *s, FILE *fp); Víi s lμ con trá chØ tíi ®Þa chØ ®Çu cña mét chuæi ký tù kÕt thóc b»ng ‘\0’. Hμm sÏ ghi chuæi s lªn File fp, nÕu thμnh c«ng tr¶ vÒ ký tù cuèi cïng ®−îc ghi vμo File, ng−îc l¹i tr¶ vÒ EOF. • §äc chuæi (d·y) ký tù tõ File: char *fgets(char *s, int n, FILE *fp); Víi s lμ con trá kiÓu char trá tíi vïng nhí ®Ó chøa chuæi ®äc tõ File, n lμ sè nguyªn x¸c ®Þnh ®é dμi cùc ®¹i cña d·y cÇn ®äc, fp lμ con trá File. Hμm sÏ ®äc mét d·y ký tù tõ File fp vμo vïng nhí s, nÕu thμnh c«ng hμm tr¶ vÒ ®Þa chØ vïng nhËn kÕt qu¶, ng−îc l¹i trμ vÒ NULL. VD: while(!eof(fp)) fgets(s,256,fp); • Ghi mét sè nguyªn theo kiÓu nhÞ ph©n: int putw(int n, FILE *fp); Víi n lμ gi¸ trÞ nguyªn, fp lμ con trá File. NÕu thμnh c«ng hμm tr¶ vÒ sè nguyªn ®−îc ghi, ng−îc l¹i tr¶ vÒ EOF. • §äc mét sè nguyªn theo kiÓu nhÞ ph©n: int getw(FILE *fp); Víi fp lμ con trá File. Hμm ®äc mét sè nguyªn(2 byte), nÕu thμnh c«ng tr¶ vÒ sè nguyªn ®äc ®−îc, khi cã lçi hoÆc cuèi File hμm tr¶ vÒ EOF. • Ghi c¸c mÉu tin lªn File: int fwrite( void *pt, int size, int n, File *fp); Víi pt lμ con trá trá tíi vïng nhí chøa d÷ liÖu cÇn ghi, size lμ kÝch th−íc cña mÉu tin (byte), n lμ sè mÉu tin, fp lμ con trá File. Hμm sÏ ghi n mÉu tin kÝch th−íc size HTD (TH0003) C Programming (Se) Page: 12 Bách khoa Online: hutonline.net byte tõ vïng nhí pt lªn File fp. Hμm tr¶ vÒ mét gi¸ trÞ = sè mÉu tin thùc sù ®−îc ghi. • §äc c¸c mÉu tin tõ File: int fread( void *pt, int size, int n, File *fp); Víi pt lμ con trá trá tíi vïng nhí chøa d÷ liÖu ®äc ®−îc, size lμ kÝch th−íc cña mÉu tin (byte), n lμ sè mÉu tin cÇn ®äc, fp lμ con trá File. Hμm sÏ ®äc n mÉu tin kÝch th−íc size byte tõ File fp vμo vïng nhí pt. Hμm tr¶ vÒ mét gi¸ trÞ = sè mÉu tin thùc sù ®äc ®−îc. C¸c hμm fread, fwrite th−êng dïng ®Ó ®äc ghi c¸c ®èi t−îng cã cïng ®é lín nh− cÊu tróc, sè thùc,... ‰ Mét sè hμm kh¸c thao t¸c trªn FILE: (cÊp II) • int fflush(FILE *fp); lμm s¹ch vïng ®Öm File fp, thμnh c«ng ->0, ng−îc l¹i >EOF. • int fflushall(void); lμm s¹ch vïng ®Öm cña c¸c File ®ang më, nÕu thμnh c«ng hμm tr¶ vÒ gi¸ trÞ sè tÖp ®ang më, ng−îc l¹i tr¶ vÌ EOF. • int ferror(FILE *fp); dïng kiÓm tra lçi thao t¸c trªn File fp. Hμm tr¶ vÒ gi¸ trÞ <>0 nÕu cã lçi, ng−îc l¹i tr¶ vÒ 0. • void perror(const char *s); in chuæi s vμ th«ng bμo lçi hÖ thèng. • int unlink(const char *filename); xo¸ mét File trªn ®Üa, nÕu thμnh c«ng hμm cho gi¸ trÞ 0, ng−îc l¹i tr¶ vÒ EOF. • void rewind(FILE *fp); chuyÓn con trá chØ vÞ cña File fp vÒ ®Çu File. • int fseek(FILE *fp, long sb, int xp); di chuyÓn con trá chi vÞ cña File fp tõ vÞ trÝ x¸c ®Þnh xp qua |sb| byte. ChiÒu di chuyÓn lμ vÒ cuèi tÖp nÕu sb>0 vμ cuèi tÖp nÕu sb<0. Khi thμnh c«ng hμm tr¶ vÒ 0, ng−îc l¹i hμm tr¶ vÒ gi¸ trÞ <>0. Kh«ng nªn dïng trªn kiÓu v¨n b¶n v× sù chuyÓn vÞ sÏ thiÕu chÝnh x¸c. xp cho biÕt vÞ trÝ xuÊt ph¸t, cã thÓ nhËn c¸c gi¸ trÞ: 0 (xuÊt ph¸t tõ ®Çu tÖp), 1 (tõ vÞ trÝ hiÖn t¹i cña con trá chuyÓn vÞ), 2 (xuÊt ph¸t tõ cuèi tÖp). • long ftell(FILE *fp); tr¶ vÒ vÞ trÝ hiÖn t¹i cña con trá chØ vÞ (byte) ®−îc tÝnh tõ 0. NÕu cã lçi hμm tr¶ vÒ -1L. 9. mμn h×nh v¨n b¶n vμ ©m thanh: ‰ Mμn h×nh v¨n b¶n: HTD (TH0003) C Programming (Se) Page: 13 Bách khoa Online: hutonline.net • void textmode(int mode); chän mode mμn h×nh v¨n b¶n, mode bao gåm LASTMODE, BW40, C40, BW80, C80, MONO. (conio.h). C¸c gi¸ trÞ cña mode ®−îc m« t¶ trong help online víi index lμ text_modes. • void textbackground( int color); ®Æt mμu cho nÒn (cöa sæ). • void textcolor(int color); ®Æt mμu ch÷. Víi color mang gi¸ trÞ tõ 0-15 hay c¸c h»ng sè ®Þnh nghÜa s½n nh−: BLACK, WHILE, BLUE, RED, CYAN, YELLOW, BROWN,.. C¸c gi¸ trÞ cña color ®−îc tr×nh bμy trong help online víi index lμ COLORS. • void window(int xtr, int ytr,int xd,int yd); thiÕt lËp mét cöa sæ víi gãc trªn tr¸i (xt, yt) vμ d−íi ph¶i (xd, yd). Chó ý r»ng nªn dïng hμm cprintf vμ scanf thay cho printf vμ scanf sÏ cho mét mμn h×nh ®Ñp h¬n. • void clrscr(void); xo¸ cöa sæ hiÖn t¹i, ®−a con trá vÒ gãc trªn tr¸i cña cöa sæ. • void clreol(void); xo¸ ®Õn cuèi dßng trong cö sç. • void gotoxy(int x, int y); chuuÓn con trá ®Õn vÞ trÝ x,y trong cöa sæ • int wherex(void), wherey(void); cho biÕt vÞ trÝ ngang, däc cña con trá trong cöa sæ. ‰ ¢m thanh: • sound(n): Dïng loa CPU ph¸t ra mét ©m thanh víi tÇn sè n. • delay( m): KÐo dμi mét nèt nh¹c trong thêi gian lμ m mili gi©y. • nosound(): T¾t ©m thanh ®· ph¸t. Dïng c¸c hμm trªn chóng ta sÏ ph¸t ra c¸c ©m thanh lμ c¸c note nh¹c víi cao ®é lμ n vμ tr−êng ®é m. Sau ®©y lμ 7 tÇn sè t−¬ng øng víi 7 note nh¹c c¬ b¶n ê qu·ng t¸m thø I: ♦ §«: 132 ♦ MI: 164 ♦ SOL: 192 ♦ Rª: 146 ♦ FA: 172 ♦ LA: 216 ♦ SI: 244 §Ò ®−îc note th¨ng ta lÊy (note th−êng t−¬ng øng céng víi note cao h¬n kÕ tiÕp)/2, vμ note gi¸ng th× còng lÊy (note th−êng t−¬ng øng céng víi note thÊp h¬n kÕ tiÕp)/2.§èi víi c¸c note ë c¸c qu¶ng t¸m cao h¬n hay thÊp h¬n th× ta chØ viÖc nh©n hay chia ®«i c¸c note t−¬ng øng. C¸c note lÆng ta sÏ ph¸t mét note víi tÇn sè kho¶ng 30.000Hz (Siªu ©m). HTD (TH0003) C Programming (Se) Page: 14 Bách khoa Online: hutonline.net VD: Rª#=(Rª+Mi)/2; Rªb(Rª gi¸ng)=(Rª+§«)/2; §è=§«*2;... VÒ tr−êng ®é ta lÊy note §en lμm chuÈn, vμ qui ®Þnh tr−êng ®é cña c¸c note kh¸c (note mãc, nèt trßn, ®en chÊm, trßn chÊm,...) theo qui t¾c nh¹c lý vμ lÊy theo chuÈn cña note §en. Th«ng th−êng víi tiÕt tÊu trung b×nh th× note §en ®−îc qui ®Þnh kho¶ng tõ 300-400, tuú theo tiÕt tÊu nhanh hay chËm cña mçi bμi h¸t cô thÓ mμ ta qui ®Þnh cho hîp lý. 10. ®å ho¹: ‰ Khëi ®éng chÕ ®é §å ho¹: void initgraph(int *graphdriver, int *graphmode, char *driverpath); Víi driverpath lμ ®−êng dÉn chøa c¸c file ®iÒu khiÓn ®å ho¹ (thõ¬ng lμ “C:\\BorlandC\\Bgi”), graphdriver vμ graphmode dïng x¸c ®Þnh mμn h×nh vμ kiÓu ®å ho¹ sÏ sö dông. NÕu kh«ng biÕt kiÓu mμn h×nh ®ang sö ta sö dông DETECT cho graphdriver ®Ó ch−¬ng tr×nh tù nhËn d¹ng, C¸c gi¸ trÞ cña graphriver ®−îc tr×nh bμy trong help online víi index lμ graphics_rivers vμ graphics_modes. VD: #include ; #include ; #include ; main() { int gr_drive = DETECT, gr_mode; initgraph(&gr_drive, &gr_mode, "c:\\tc\\bgi"); outtext("Graphic example"); getch(); } ‰ C¸c hμm th−êng dïng: • Lçi ®å ho¹: ph¸t sinh khi khëi ®éng chÕ ®é då ho¹ vμ khi dïng c¸c hμm. Hμm int graphresult( void) tr¶ vÒ lçi khi ph¸t hiÖn, hμm char grapherrormsg(int errorcode) tr¶ vÒ th«ng bμo lçi do graphresult ph¸t hiÖn. C¸c m· lçi cña graphresult ®−îc tr×nh bμy trong help online víi index lμ graphics_errors. • Chän mμu nÒn: void setbkcolor(int color); • Chän mμu nÐt: void setcolor( int color); HTD (TH0003) C Programming (Se) Page: 15 Bách khoa Online: hutonline.net • Chän mÉu vμ mμu t«: void setfillstyle( int pattern, int color); C¸c gi¸ trÞ cña pattern(mÉu t«) ®−îc tr×nh bμy trong help online víi index lμ fill_parttens. • Chän mÉu cho nÐt: void setlinestyle(int linestyle, int pattern, int thickness); cho phÐp ta qui ®Þnh 3 yÕu tè lμ kiÓu linestyle(0[nÐt liÒn],1[nÐt chÊm], 2[nÐt chÊm g¹ch], 3[nÐt g¹ch], 4[mÉu tù t¹o]) bÒ dμy thickness(1[b×nh th−êng[, 3 [dμy gÊp ba] vμ mÉu tù t¹o patern (nÕu qui ®Þnh linestyle lμ 4). §Ó nhËn gi¸ trÞ hiÖn hμnh cua 3 yÕu tè trªn ta dïng hμm void getlinesettingstyle(struct linesettingtype, * linenifo); , C¸ch ®Þnh nghÜa mÉu tù t¹o vμ cÊu tróc cña linesettingtype ®−îc tr×nh bμy trong help online víi index lμ setlinestyle vμ linesettingstyle. • Thay ®æi gi¶i mμu mÆc ®Þnh: void setpalette(int colornum, incolor); • X¸c nhËn gi¶i mμu hiÖn hμnh: void palette(struct palettetype *palette); CÊu tróc cña palettetype ®−îc tr×nh bμy trong help online víi index lμ palettetype. • C¸c hμm getcolor(), getbkcolor() vμ getmaxcolor() tr¶ vÒ mμu ®· x¸c ®Þnh víi setcolor, setbkcolor, vμ sè l−îng mμu cùc ®¹i thô«c d·y mμu hiÖn hμnh. • VÏ cung trßn: void arc(int x, int y, int gocdau, int goccuoi, int bankinh); Gãc: ®é. • VÏ ®−êng trßn: void circle(int x, int y,int bankinh); • VÏ cung ellipse: void ellipse(intx, int y, int gocdau, int goccuoi, int xr, int yr); Víi xr lμ b¸n trôc ngang vμ yr lμ b¸n trôc ®øng. • VÏ vμ t« h×nh qu¹t: void pieslice(int x, int y, int gocdau, int goccuoi, int bankinh); • VÏ ®−êng gÊp khóc vμ ®a gi¸c: drawpoly(n,a); Víi n lμ sè ®iÓm, a lμ m¶ng kiÓu int chøa to¹ ®é cña c¸c ®iÓm( a[0]=x1, a[1]=y1, a[2]=x2, a[3]=y2,...). NÕu nÕu ®iÓm cuèi xn, yn trïng víi ®iÓm ®Çu x1, y1 ta sÏ ®−îc mét ®a gi¸c. • T« mμu ®a gi¸c: fillpoly(n,a); hμm nμy sÏ t« mμu 1 ®a gi¸c cã c¸c n ®Ønh. • VÏ ®−êng th¼ng: void line(int x1, int y1, int x2, int y2); VÏ ®−êng th¼ng nèi hai ®iÓm (x1,y1) vμ (x2,y2) nh−ng kh«ng lμm thay ®æi vÞ trÝ con trá. Hμm void lineto(int x, int y); VÏ ®−êng th¼ng tõ ®iÓm hiÖn t¹i tíi (x,y) vμ chuyÓn con trá ®Õn ®iÓm (x,y). Hμm void linerel(int dx, int dy); sÏ vÏ mét ®−êng th¼ng tõ vÞ trÝ hiÖn HTD (TH0003) C Programming (Se) Page: 16 Bách khoa Online: hutonline.net hμnh (x,y) cña con trá ®Õn ®iÓm (x+dx, y+dy), con trá ®−îc di chuyÓn ®Õn vÞ trÝ míi. • Di chuyÓn con trá tíi to¹ ®é (x,y): void moveto(intx, inty); • VÏ h×nh ch÷ nhËt. Hμm void rectangle(int x1, int y1, int x2, int y20; sÏ vÏ mét ®−êng ch÷ nhËt cã c¸c // c¸c c¹nh cña mμn h×nh, (x1,y1) lμ to¹ ®é ®Ønh trªn, (x2,y2) lμ to¹ ®é ®Ønh d−íi. Hμm void bar(intx1, int y1, int x2, int y2); sÏ vÏ vμ t« mμu mét h×nh CN. Hμm void bar3d(int x1, int y1, int x2, int y2, int depth, int top); vÏ vμ t« mét khèi hép ch÷ nhËt, depth qui ®Þnh sè ®iÓm ¶nh trªn chiÒu s©u cña khèi 3D, top cã thÓ nhËn c¸c gi¸ trÞ lμ 1(cã n¾p), 0(kh«ng n¾p). • ThiÕt lËp cöa sæ viewport: void setviewport(int x1, int y1, int x2, int y2, int clip); Víi 2 ®iÓm lμ 2 gãc trªn tr¸i vμ d−íi ph¶i cña cöa sæ, clip=1 kh«ng cho phÐp vÏ ra ngoμi viewport vμ clip=0 th× cho phÐp. §Ó nhËn viewport hiÖn hμnh ta dïng hμm void getviewsettings(struct viewporttype *vp). (Help online víi index lμ viewporttype). • Xo¸ viewport: void clearviewport(void); • Xo¸ mμn h×nh vμ ®−a con trá vÒ (0,0): void cleardevice(void); • T« vμ lÊy mμu t« §iÓm. T«: void putpixel(int x, inty, int color); Hμm getpixel(int x, int y); sÏ tr· vÒ gi¸ trÞ mμu t¹i ®iÓm (x,y), nÕu ®iÓm ch−a ®−îc t« hμm sÏ tr¶ vÒ 0. • T« miÒn: void floodfill(int x, int y, int border); border chøa gi¸ trÞ cña mét mμu. • HiÓn thÞ v¨n b¶n. Hμm void outtext (char *s); sÏ hiÖn thÞ chuæi do s trá tíi t¹i vÞ trÝ hiÖn t¹i cña con trá. Hμm outtextxy(int x, inty, char *s); sÏ hiÓn thÞ VB ë to¹ ®é (x,y). • Chän Font (.CHR): void settextstyle(int font, int direction, int charsize); Víi direction =0(ngang), =1(däc). Charsize cã gi¸ trÞ tõ 1(8*8pixel)->10(80*80pixel). font nhËn c¸c gi¸ trÞ 0(default), 1(triplex), 2(small), 3(sanserif), 4(gothic). • VÞ trÝ hiÓn thÞ Text: void settextjustify(int horiz, int vert); Víi horiz = 0(VB ë bªn ph¶i con trá), 1(t©m VB theo vÞ trÝ con trá), 2(bªn tr¸i con trá). Vert = 0(VB ë bªn ph¶i con trá), 1(t©m VB theo vtr cña con trá), 2(phÝa d−íi con trá). • LÊy chiÒu cao vμ réng cña Text: int textheight(char*s); int textwidth(char *s); HTD (TH0003) C Programming (Se) Page: 17 Bách khoa Online: hutonline.net • Hμm imagesize(int x1, int y1, int x2, int y2);tr¶ vÒ sè byte dïng l−u ¶nh trong 1 ph¹m vi. • Hμm void getimage( int x1, int y1, int x2, int y2, void *bitmap); dïng l−u c¸c ®iÓm ¶nh trong ph¹m vi HCN vμo vïng nhí do bitmap trá tíi. Vïng nhí vμ biÕn bitmap cho bëi hμm void *malloc(unsigned n); • Hμm putimage(int x, int y, void *bitmap, int copymode); dïng sao chÐp ¶nh trong vïng nhí bitmap ra mμn h×nh t¹i vÞ trÝ (x,y). Tham sè copymode =0(chÐp nguyªn xi), =1(c¸c ®iÓm ¶nh trong bitmap kÕt hîp víi c¸c ®iÓm trªn mμn h×nh = phÐp XOR), =2( ...”.... =phÐp or), =3(......”......”and), =4(....’’.....NOT). 11. kü thuËt söa lçi vμ rë rèi ch−¬ng tr×nh: + Ng−êi ta nghiªn cøu vμ cho r»ng kho¶ng 80% thêi gian cña c¸c lËp tr×nh viªn lμ dïng ®Ó kiÓm tra vμ söa ch÷a nh÷ng ch−¬ng tr×nh ®· cã. Th«ng th−êng cã 3 lo¹i lçi sau: lçi có ph¸p (syntax), lçi run-time (chia cho zero, g¸n sai kiÓu, sö dông biÕn kh«ng khai b¸o, ...), vμ lçi logic. Lçi logic lμ lçi khã söa nhÊt, v× ®©y lμ lçi sai trong thuËt gi¶i ch−¬ng tr×nh. + Ph−¬ng ph¸p duy nhÊt ®Ó s÷a c¸c lçi có ph¸p lμ b¹n ph¶i biÕt ch−¬ng tr×nh cña m×nh m¾c ph¶i lçi g×, ®iÒu nμy ®−îc Borland C++ th«ng b¸o trong cöa sæ Message, vμ tõ ®©y b¹n cã thÓ tra cøu c¸c ph−¬ng ph¸p s÷a ch÷a trong c¸c s¸ch tra cøu, ®Æt biÖt lμ trong help online cña Borland C++. + Khi gÆp c¸c lçi Logic lμm cho ch−¬ng tr×nh ch¹y kh«ng ®óng hay cho kÕt qu¶ sai ta cã thÓ sö dông c¸c chøc n¨ng Debug cña Borland C ®Ó tiÕn hμnh rë rèi: -Ch¹y tõng b−íc: dïng phÝm F7, víi mçi lÇn nhÊn F7 lμ dßng ®−îc lμm s¸ng sÏ ®−îc thùc hiÖn. Nhê ch¹y tõng b−íc nh− vËy ta sÏ dÔ dμng xö lý ®−îc c¸c lçi Logic trong ch−¬ng tr×nh. Cã thÓ thay phÝm F7 b»ng F8. Sù kh¸c nhau duy nhÊt gi÷a hai phÝm nμy lμ lμ F7 sÏ thùc hiÖn tõng dßng bªn trong hμm ®−îc gäi, cßn F8 th× sÏ thùc hiÖn hμm nμy vμ b−íc qua nã. -KÕt hîp víi ch¹y tõng dßng lμ ta sö dông cöa sæ EVALUATION (nhÊn Ctrl+F4), víi cöa sæ nμy ta HTD (TH0003) C Programming (Se) Page: 18 Bách khoa Online: hutonline.net cã thÓ quan s¸t gi¸ trÞ cña c¸c biÕn, m¶ng,... qua mçi dßng thùc ch−¬ng tr×nh (gâ vμo tªn biÕn, m¶ng,.. cÇn xem trong khung Evaluate vμ xem gi¸ trÞ trong khung result), hay lμm thay ®æi gi¸ trÞ c¸c biÕn, tÝnh to¸n c¸c biÓu thøc, c¸c hμm... -Dïng cöa sæ Watch (Window\Watch) ®Ó theo dâi sù thay ®æi gi¸ trÞ cña c¸c biÕn, m¶ng. §Ó xem c¸c biÕn trong cöa sæ Watch, ta chän Debug\Watch\Add Watch vμ gâ tªn biÕn cÇn xem vμo, nhÊn F7 hay F8 ®Ó ch¹y tõng b−íc ch−¬ng tr×nh vμ xem gÝa trÞ cña biÕn. Cã thÓ nhËp vμo nhiÒu biÕn, mçi lÇn chØ ®−îc nhËp mét biÕn. §Ó xo¸ mét biÕn ta chØ di chuyÓn ®Õn biÕn muèn xo¸ trong cöa sæ Watch vμ nhÊn Delete. NÕu kh«ng thÊy cöa sæ Watch khi ch¹y tõng b−íc ch−¬ng tr×nh, ta nhÊn F5. -Dïng cöa sæ User Screen ®Ó quan s¸t kÕt qu¶ thùc hiÖn cña ch−¬ng tr×nh: Window\ User Screen hay Alt+F5. Ngoμi ra cßn nhiÒu kü thuËt kh¸c nh− sö dông ®iÓm g·y, inspect, call stack,... ®Ó gë rèi c¸c hμm, ch−¬ng tr×nh. C¸c b¹n cã thÓ xem chi tiÕt trong c¸c s¸ch tham kh¶o vÒ LËp tr×nh C. L−u ý: HTD - TH0003 (5.2001). Se (9.2001). HTD (TH0003) C Programming (Se) Page: 19
- Xem thêm -

Tài liệu liên quan