Notes Tin håc cì sð Ch÷ìng 02: Cì b£n vợi ngổn ngỳ lêp trẳnh C Biản soÔn: PhÔm Vôn Sỹ Bở mổn Xỷ lỵ tẵn hiằu v TruyÃn thổng Khoa Kÿ thuªt i»n tû I Håc vi»n Cỉng ngh» Bữu chẵnh Viạn thổng ver.18a Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a / 64 Notes PhƯn 01: Kiu dỳ liằu, bián, biu thực v cĂc php toĂn Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dỳ liằu cỡ bÊn C Mởt chữỡng trẳnh mĂy tẵnh l quĂ trẳnh: Thỹc hiằn xỷ lỵ dỳ liằu vo theo mởt trẳnh tỹ/cĂch thực xĂc nh Ôt ữủc mởt kát quÊ Ưu mong muốn Chữỡng trẳnh = CĐu trúc dỳ liằu + GiÊi thuêt Dỳ liằu lữu trỳ mĂy tẵnh: Bẵt Kỵ tỹ Tr÷íng (field) → B£n ghi (record) → File → Cì s dỳ liằu Kỵ tỹ l tờ hủp cĂc bẵt ữủc quy nh theo bÊng mÂ: ASCII, Unicode Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú li»u cì b£n C Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ sð ver.18a / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú li»u cì b£n C - V½ dư // Chuong trinh C don gian // Vi du so 01: Thu cac kieu du lieu cua C # include < stdio h > # include < limits h > // Ham main int main ( void ) { // === Thu nghiem lon bieu dien cua du lieu printf (" type \t \t size \t \ t\t max \ n"); /* first row of table */ 10 printf (" char \t \t % i\t % i\t\t %i\n " , sizeof ( char ) , CHAR_MIN , CHAR_MAX ); /* row for char */ 11 printf (" signed char \t % i\t %i\t\t %i\ n" , sizeof ( signed char ) , SCHAR_MIN , SCHAR_MAX ); /* row for signed char */ 12 printf (" unsigned char \t %i\t %i\t \t % i\n" , sizeof ( unsigned char ) , 0, UCHAR_MAX ); /* row for unsigned char */ 13 printf (" short int \ t %i\ t %i \t\t %i\n" , sizeof ( short ) , SHRT_MIN , SHRT_MAX ); /* row for short int */ 14 printf (" unsigned short \t %i\ t %i\ t\t %i\n" , sizeof ( unsigned short ) , 0, USHRT_MAX ); /* row for unsigned short int */ 15 printf (" int \t\ t %i \t %i \t % i\n" , sizeof ( int ) , INT_MIN , INT_MAX ) ; /* row for int */ 16 printf (" unsigned int \t Tin%i\t %i\t\ t %u \n" , sizeof ( unsigned Biản soÔn: PhÔm Vôn Sỹ (PTIT) håc cì sð ver.18a / 64 int ) , 0, UINT_MAX ); /* row for unsigned int */ 17 printf (" long int \t %i\t %i\ t % ld \n" , sizeof ( long int ) , LONG_MIN , LONG_MAX ); /* row for long int */ 18 printf (" unsigned long \t %i\t %i\t \t % lu \n" , sizeof ( unsigned long int ) , , ULONG_MAX ); /* row for unsigned long int */ cì b£n 19 Kiºu dú li»u return 0; C - V½ dư 20 } Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n 10 11 12 13 14 // Chuong trinh C don gian // Vi du so 01: Thu cac kieu du lieu cua C # include < stdio h > # include < float h > // Ham main int main ( void ) { // === Thu nghiem lon bieu dien cua du lieu printf (" type \t \t size \t \ t\t max \ n"); /* first row of table */ printf (" float \ t\t %i\t %e\t %e\n" , sizeof ( float ) , - FLT_MAX , FLT_MAX ) ; /* row for float */ printf (" double \t\t %i\t %e\t %e\n " , sizeof ( double ) , DBL_MAX , DBL_MAX ); /* row for double */ printf (" long double \t % i\t % Le \t % Le \ n" , sizeof ( long double ) , - LDBL_MAX , LDBL_MAX ) ; /* row for long double */ return 0; } Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a / 64 Notes Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiu dỳ liằu cỡ bÊn C: nh dÔng hin th kiu dỳ liằu vợi printf() Biản soÔn: PhÔm V«n Sü (PTIT) Tin håc cì sð ver.18a / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú li»u cì b£n C: nh dÔng hin th kiu dỳ liằu vợi printf() - Chú ỵ Khi lm viằc vợi số nguyản: I I I %d v %i tữỡng tỹ Vợi long long int: %lld; Vỵi unsigned long long int: %llu Hiºn số dÔng octal (cỡ số 8): %o; Hin th số dÔng hexa (cỡ số 16): %x hoc %X Khi lm viằc vợi số thỹc: I %F khổng ữủc hộ trủ bi nhiÃu trẳnh biản dch (vẵ dử Microsoft Visual C++, Tiny C Compiler, ) Biản soÔn: PhÔm Vôn Sü (PTIT) Tin håc cì sð ver.18a / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú li»u cì b£n C: ành dÔng hin th kiu dỳ liằu vợi printf() - Vẵ dö 10 11 12 13 14 15 16 17 18 19 // Chuong trinh C don gian // Vi du so 03: Su dung dinh dang hien thi so nguyen # include < stdio h > // Ham main int main ( void ) { printf (" So nguyen %d\n" ,231) ; printf (" So nguyen %i\n" ,231) ; // % i tuong tu % d printf (" So nguyen %d\n" ,+231) ; // dau + khong duoc in printf (" So nguyen %d\n" , -231) ; // dau - duoc in printf (" So nguyen % hd \n " ,32010) ; printf (" So nguyen % ld \n " ,2000000000 L); printf (" So nguyen %u\n" ,231) ; printf (" So nguyen %u\n" , -231) ; printf (" So nguyen %o\n" ,231) ; printf (" So nguyen %x\n" ,231) ; printf (" So nguyen %X\n" ,231) ; return 0; } Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cì sð ver.18a / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú liằu cỡ bÊn C: nh dÔng hin th kiu dỳ liằu vợi printf() - Vẵ dử 10 11 12 13 14 15 16 // Chuong trinh C don gian // Vi du so 03: Su dung dinh dang hien thi so thuc # include < stdio h > // Ham main int main ( void ) { printf (" So thuc % e\n" ,1234567.89) ; printf (" So thuc % e\n" ,+1234567.89) ; // dau + khong duoc in printf (" So thuc % e\n" , -1234567.89) ; // dau - duoc in printf (" So thuc % E\n" ,1234567.89) ; printf (" So thuc % f\n" ,1234567.89) ; // printf (" So thuc % F \ n " ,1234567.89) ; // Visual C ++ khong ho tro printf (" So thuc % g\n" ,1234567.89) ; printf (" So thuc % G\n" ,1234567.89) ; return 0; } Bi¶n soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a 10 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú li»u cì b£n C: Hin th vợi ở chẵnh xĂc v ở rëng x¡c ành Có ph¡p: %M[.N]B int i =457; double f = 123.94536; printf (" In du lieu voi rong va chinh xac \ n "); printf (" So nguyen :\ n"); printf (" \t %.4 d \n\t %.9 d\n \n" ,i , i); printf (" So thuc :\ n "); printf (" \t %.3 f \n\t %.3 e\n \t %.3 g \n\n" ,f ,f ,f ); printf (" Ket hop cho so thuc \n"); printf (" \t %9.3 f\n" ,f); printf (" Do rong va chinh xac la tham so \n "); printf (" \t %*.* f\n" ,9 ,4 , f ); 10 11 12 13 14 15 16 17 18 19 20 Biản soÔn: PhÔm V«n Sü (PTIT) Tin håc cì sð ver.18a 11 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú li»u cì b£n C: printf() vợi cớ nh dÔng Cú phĂp: %HB I 10 11 12 13 14 15 16 17 18 19 20 H : −, +, ' ' (d§u c¡ch), #, (sè 0) printf (" Su dung co dinh dang voi printf () \n"); printf (" Can phai - Can trai :\ n") ; printf (" \t %10 d \t %10 c\t %10 f\n\n " ,5, 'A ' ,1.23) ; printf (" \t % -10 d\t % -10 c\t % -10 f\ n\n" ,5, 'A ' ,1.23) ; printf (" In dau :\ n" ); printf (" \t%d\t %d\n\ n" ,241 , -241) ; printf (" \t %+ d\ t %+ d\ n\n" ,241 , -241) ; printf (" Dau cach :\ n"); printf (" \t% d \n\t% d\n" ,241 , -241) ; printf (" Them tien to so octal hoac hexa :\ n"); printf (" \t %# o\ t %# x\ n" ,1427 ,1427) ; printf (" \t%g\t %# g\n " ,1427.0 ,1427.0) ; printf (" Ket hop nhieu co :\ n "); printf (" \t %+09 d\t %09 d\n" ,452 ,452) ; Biản soÔn: PhÔm Vôn Sü (PTIT) Tin håc cì sð ver.18a 12 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p toĂn Notes Kiu dỳ liằu, bián v hơng C: Khai bĂo bián Tản bián C l bĐt cự nh danh no hủp lằ I I I Ch gỗm d¢y c¡c c¡i (A-Z v a-z), c¡c sè (0-9), dĐu gÔch dữợi (_) KHặNG ữủc bưt Ưu bơng chỳ số KHặNG trũng vợi cĂc tứ khõa cừa C F F I I auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while, Mët sè tø khâa mð rëng: ada, asm, entry, far, fortran, huge, near, pascal, v mởt số tứ khõa khĂc KHặNG NN trũng vợi tản cĂc hm thữ viằn chuân cừa C NN t tản bián cõ ỵ nghắa, hiu, ngưn gồn NhiÃu bián kiu cõ th khai bĂo trản mởt cƠu lằnh: danh sĂch cĂc bián cĂch bi dĐu phây (,) Chú ỵ: C phƠn biằt chỳ thữớng vợi chỳ hoa Bưt buởc phÊi khai bĂo bián trữợc sỷ dửng Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cì sð ver.18a 13 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú liằu, bián v hơng C: Khai bĂo bián - V½ dư Khai b¡o ìn gi£n: 10 char x; char y , Y; int nSo1 , nSo2 , nSo3 ; float nRate ; Khai b¡o v khði tÔo: 10 11 char x =65; char y= 'A ', Y =65; int nAge = x44 ; // Chap nhan khoi tao so he hexa int nSo1 = -100 , nSo2 =10 , nSo3 ; float nRate = 1.2; Khai bĂo v tÔo phực tÔp: 10 11 char x= 'A ', X=x +1; // Su dung phep + , X = 66 ( vi 'A ' = 65) int nAge = x44 ; // Chap nhan khoi tao so he hexa int nSo1 =x , nSo2 = nSo1 +2 , nSo3 = nSo1 * nSo2 ; // Phep nhan * double nReal1 = 12.3; float nRate = 1023.4/ nReal1 ; Bi¶n soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ s ver.18a 14 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Kiºu dú li»u, bi¸n v hơng C: Khai bĂo hơng Thảm tứ khõa (const) trữợc khai bĂo const char x= 'A '; char y= 'A '; y=x +1; // OK printf (" y = %c\n" ,y); x=y ; // NOT OK x=y +1; // NOT OK 10 11 12 const char x; // Mac dinh bang x= 'A '; // NOT OK HOC dòng ch¿ ti·n xû lỵ #define # define MPI 3.14 Biản soÔn: PhÔm V«n Sü (PTIT) Tin håc cì sð ver.18a 15 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c php toĂn Notes Bián v hơng C: ồc vo giĂ tr cho bián vợi scanf() & l toĂn tỷ a ch, ựng trữợc tản bián ch án v trẵ bở nhợ m bián ữủc lữu Và cỡ bÊn chuội iÃu khin nh dÔng tữỡng tỹ nhữ vợi printf() I 10 11 12 10 11 12 %d v %i ch¿ dú liằu vo l số nguyản cõ dĐu; %i cho php nhêp vo dỳ liằu dÔng octal (bưt Ưu bơng 0) hoc hexa (bưt Ưu bơng 0x) int a , b , c , d , e , f , g; float m , n , p ; printf (" Nhap vao so nguyen :\ n" ); scanf ("%d%i %i%i% o%u%x" , &a , &b , &c , &d , &e , &f , &g); printf (" Da nhap vao :\ n" ); printf (" %d\t%i \t%i\ t%i\t %o\t%u \t%x\ n" , a , b , c , d , e , f , g) ; double a , b , c; printf (" Nhap vao so thuc :\ n"); scanf ("% lf % le % lg " , &a , &b , &c) ; printf (" Da nhap vao :\ n" ); printf (" % lf \t% le \t% lg \n" , a , b , c ); printf (" %f\t%f \t%f\ n" , a , b , c); Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cỡ sð ver.18a 16 / 64 Kiºu dú li»u, bi¸n, biu thực v cĂc php toĂn Notes Bián v hơng C: ồc vo giĂ tr cho bián vợi scanf() Sỷ dửng têp kỵ tỹ tẳm kiám: 10 char b [10]; printf (" Nhap vao mot day nguyen am :\ n"); scanf (" %8[ aeiou ] " , b) ; printf (" Da nhap vao nguyen am % s\n" ,b); Sỷ dửng têp kỵ tỹ loÔi trứ: 10 char b [10]; printf (" Nhap vao mot day khong phai nguyen am :\ n"); scanf (" %8[^ aeiou ]" , b ); printf (" Da nhap vao nguyen am % s\n" ,b); Cho ph²p x¡c nh ở rởng (số lữủng kỵ tỹ) cừa trữớng ồc v o: 10 int x , y; printf (" Hay nhap mot so chu so : "); scanf (" %2 d% d" , &x , & y); printf (" Tuong ung cac so % d va %d \n" ,x , y); Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a 17 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes Bián v hơng C: ồc vo giĂ tr cho bián vợi scanf() Cho php bọ qua mởt số kỵ tü: 10 10 int nMonth , nDate , nYear ; printf (" Nhap thang (mm -dd - yyyy ): "); scanf ("%d -%d -% d" , & nMonth , & nDate , & nYear ); printf (" Hom % d thang % d nam %d\ n" , nDate , nMonth , nYear ) ; int nMonth , nDate , nYear ; printf (" Nhap thang : ") ; scanf ("%d %* c%d %* c%d" , & nMonth , & nDate , & nYear ) ; printf (" Hom % d thang % d nam %d\ n" , nDate , nMonth , nYear ) ; scanf() khæng kiºm tra tẵnh hủp lằ cừa dỳ liằu ngữới sỷ dửng nhêp v o scanf() câ thº sû dưng dú li»u ¢ câ buffer Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin hồc cì sð ver.18a 18 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes C¡c ph²p to¡n sè håc C¡c ph²p to¡n sè håc hai ngæi: ∗, /, %, +, − I C¡c ph²p to¡n sè hồc (trứ php tẵnh ỗng %) cõ th Ăp dưng cho t§t c£ c¡c kiºu dú li»u cì b£n F Php tẵnh ỗng ch Ăp dửng cho số nguyản Thự tỹ ữu tiản thỹc hiằn: NhƠn chia trữợc, cëng trø sau ((),∗, /, %, +, −, =) I I Náu mực ở ữu tiản thỹc hiằn, s thỹc hiằn tứ trĂi sang phÊi Nản kát hủp vợi dĐu ngoc () tông tẵnh ró rng Cõ th kát hủp vợi php gĂn (=): + =, =, ∗ =, / =, % = C¡c to¡n tû t«ng gi£m: + + (), () + +, − − (), () Php chia cĂc số nguyản cho kát quÊ l mởt số nguyản Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a 19 / 64 Kiºu dú li»u, bi¸n, biºu thùc v c¡c ph²p to¡n Notes C¡c ph²p to¡n sè håc: V½ dư 10 11 12 13 14 15 16 17 10 11 12 13 14 15 int x , y =10 , z , t , n , m ; x = y + 10; printf (" y= %d \ nx = %d\n" ,y ,x) ; z = 2* x ; printf (" z= %d \n" ,z ); t=z -5; printf (" t= %d \n" ,t ); n=z /2; printf (" n= %d \n" ,n ); m= t % 4; printf (" m= %d \n" ,m ); float x , y =232.5 , z , t , n; x = y + 10.21; printf (" y= %f \ nx = %f\n" ,y ,x) ; z = y +2.5*( x -102.4) ; printf (" z= %f \n" ,z ); t =( x +5.12) /2.15+27.2; printf (" t= %f \n" ,t ); n =( z +1.25) /2.3+39.16; printf (" n= %f \n" ,n ); Biản soÔn: PhÔm Vôn Sỹ (PTIT) Tin håc cì sð ver.18a 20 / 64 C¡c c§u tróc l»nh i·u khiºn Notes C¡c l»nh l°p: goto 10 11 12 13 14 15 int i =0 , a =0; start : if (i ==0) goto finish ; a +=2; finish : i ++; if (a