intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Ôn tập căn bản lập trình C

Chia sẻ: Bùi Việt Sơn | Ngày: | Loại File: PDF | Số trang:19

139
lượt xem
56
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'ôn tập căn bản lập trình c', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Ôn tập căn bản lập trình C

  1. «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 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
  2. C¸c hμm c¬ b¶n : (C¸c hμm kiÓm tra ®ù¬c khai b¸o trong ). • log(x): tÝnh ln(x). • fabs(x): lÊy gi¸ trÞ tuyÖt ®èi. • sin(x), cos(x), tan(x): lÊy sin, cos, tang • 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
  3. Nam 2001 la the ky 20 • NhËp: 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
  4. 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
  5. 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
  6. • XuÊt/ nhËp m¶ng: ta dïng 2 vßng lÆp for I:=1 to n do for j:=1 to m do... Chó ý lμ ta kh«ng thÓ dïng phÐp to¸n ®Þa chØ ®Ó nhËp c¸c phÇn tö cña m¶ng hai chiÒu (ngo¹i trõ m¶ng kiÓu int), mμ ph¶i th«ng qua mét biÕn t¹m trung gian. • Thao t¸c: (i: ®kh dßng, j: ®kh cét, n: sè dßng) +§−êng chÐo: +C¸c phÇn tö ®èi xøng: -Qua ®−êng chÐo chÝnh: a[i][j] vμ a[j][i]. -Qua ®−êng chÐo phô: a[i][j] vμ a[n-j-1][n-i-1]. -Qua t©m: a[i][j] vμ a[n-i-1][n-j-1]. • DuyÖt ma trËn: + N÷a trªn ®/c chÝnh: for (i=0; i
  7. Khai b¸o: + *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
  8. • 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
  9. • 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 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
  10. 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: biÕn_cÊu_tróc.biÕn_thμnh_phÇn; + §¬n gi¶n: biÕn_cÊu_tróc.biÕn_cÊu_tróc_2.biÕn_thμnh_phÇn; + Phøc t¹p: ®−î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
  11. + 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 *tªn_biÕn_con_trá; + 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_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
  12. 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 VD: qu¶, ng−îc l¹i trμ vÒ NULL. 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
  13. 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
  14. • 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 ♦ SI: 244 ♦ Rª: 146 ♦ FA: 172 ♦ LA: 216 §Ò ®−î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
  15. 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
  16. • 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
  17. 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
  18. • 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
  19. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2