bản pp này mình đã tổng hợp từ các nguồn tài liệu khác nhau.trong này có giải thích ý nghĩa của từng câu lệnh C và cách dùng và có chút đề bài và bài code mẫu cho các b tự làm silde giải thích rất rõ.
C s lp trỡnh C s lp trỡnh - Ti liu: 1- K thut lp trỡnh, Hong Kim Bng, Trng i hc M a cht, 2009 2- Ngụn ng lp trỡnh C, Hong Kim Bng, Trng i hc M - a cht, 2005 3- Nhp mụn ngụn ng lp trỡnh C, Nguyn Thanh Thy (ch biờn) 4- K thut lp trỡnh C c s v nõng cao, GS Phm Vn t - Mc ớch mụn hc: Nhm trang b nhng kin thc c bn v lp trỡnh bng ngụn ng C gm: nhng yu t c bn ca C, cỏc lnh iu khin, tr, hm, kiu d liu struct, ha, thao tỏc vo vi - Yờu cu: Nm c lý thuyt, cú kh nng lp trỡnh C gii cỏc bi toỏn n gin - Phn mm: TURBO C 3.0, C-Free - Cỏch hc: Vit cng nhiu chng trỡnh C cng tt (chỳ trng nõng cao k nng thc hnh trờn mỏy tớnh) Ngha l phi lm cỏc bi ti lp, cỏc bi cui mi chng, cỏc bi thc hnh CHNG 1: CC YU T C BN CA NGễN NG LP TRèNH C 1.1 Lch s hỡnh thnh v phỏt trin Ngụn ng C Brian W Kernighan v Dennis M Ritchie phỏt trin vo u nhng nm 70 1978, cun sỏch "The C programming langguage" ca hai tỏc gi trờn c ph bin rng rói 1983, Vin tiờu chun Quc gia M (ANSI) xut chun cho C 1988, chun ANSI C c ban hnh Hin cú cỏc chng trỡnh dch C nh: TURBO C, BORLAND C, C Free, VISUAL C 1.2 Cỏc tớnh cht ca C - C l ngụn ng nng c dựng vit cỏc h iu hnh, cỏc chng trỡnh ng dng nh qun lý bn, c s d liu - C cú mc thớch nghi cao, C c s dng rng rói - C cú cỏc cu trỳc iu khin nh: nhúm tun t cỏc cõu lnh; la chn quyt nh (if, switch); chu trỡnh (for, while, while) - C cung cp tr v kh nng nh a ch s hc - C cho phộp hm c gi quy - C tng i thoi mỏi chuyn i d liu - C khụng a cỏc phộp toỏn x lý trc tip cỏc i tng nh xõu ký t hoc mng 1.3 T vng 1.3.1 Tp ký t ca ngụn ng C 26 ch cỏi hoa: A, B, , X, Y, Z 26 ch cỏi thng: a, b, , x, y, z 10 ch s : 0, 1, 2, , Cỏc ký hiu toỏn hc: +, -, *, /, =, (, ) Ký t gch ni: _ (chỳ ý phõn bit vi du tr - ) Cỏc ký t c bit nh: [ ] { } , ; : & # % $ Du cỏch: l mt khong trng dựng tỏch cỏc t 1.3.2 T khúa L nhng t dnh riờng cho ngụn ng C, chỳng cú ý ngha xỏc nh v c s dng khai bỏo cỏc kiu d liu, vit cỏc toỏn t , cỏc cõu lnh Chỳ ý: - Khụng dựng t khúa t tờn cho cỏc hng, bin, mng, hm - T khúa phi c vit bng ch thng 1.3.3 Tờn L dóy ký t (ch cỏi, ch s, du gch ni), ký t u tiờn ca tờn phi l ch cỏi hoc du gch ni di cc i ca tờn mc nh l 32 Chỳ ý: Trong cỏc tờn, ch hoa v ch thng c xem l khỏc Vớ d: tờn AB l khỏc vi tờn ab Trong C, thng dựng ch hoa t tờn cho cỏc hng, dựng ch thng t tờn cho cỏc i lng khỏc nh bin, mng, hm, cu trỳc 1.3.4 Cỏc kiu d liu Tên kiểu ý nghĩa Phạm vi Kích thớc unsigned char Ký tự ữ 255 byte char Ký tự -128 ữ 127 byte unsigned int Số nguyên ữ 65535 byte int Số nguyên -32768 ữ 32767 byte unsigned long Số nguyên ữ 4294967295 byte long Số nguyên -2147483648 ữ 2147483647 byte float Số thực dấu chấm 3.4E-38 ữ 3.4E+38 động, độ xác đơn byte double Số thực dấu chấm 1.7E-308 ữ 1.7E+308 động, độ xác kép byte long double Số thực dấu chấm 3.4E-4932 ữ 1.1E+4932 động, độ xác lớn kép 10 byte Kiu void l kiu khụng giỏ tr dựng biu din kt qu ca hm hay ca tr 1.3.5 Hng Hng l i lng cú giỏ tr khụng i thc hin chng trỡnh Cú hai cỏch khai bỏo hng ngụn ng C: (1) Khai bỏo hng dựng t khúa const: Cỳ phỏp: const < tờn hng> = ; VD: const int MAX = 100 ; (2) Khai bỏo hng dựng túan t #define: Cỳ phỏp: #define VD: #define MAX 100 Cỏc loi hng: (1) Hng thc: Cỏch 1: Dng thp phõn (dng du chm tnh), VD: 1.23 Cỏch 2: Dng khoa hc (dng du chm ng), VD: 0.12E3, hoc 1.2E2, hoc 12.E1 v.v (2) Hng nguyờn kiu int: L s nguyờn cú giỏ tr khong t -32768 n 32767 (3) Hng nguyờn kiu long: c vit theo cỏch thờm L hoc l vo uụi, vớ d: -48935L, -48935l (4) Hng nguyờn h 8: c vit theo cỏch: 0c1c2c3 Bt u bng s 0, cũn ci l mt s nguyờn khong t n (5) Hng nguyờn h 16: c vit theo cỏch: 0xc1c2c3 hoc 0Xc1c2c3 Bt u bng s v ch x (hoc X), cũn ci l mt ch s h 16 (0,1, ,9,a,b,c,d,e,f) 6.6 Ct hỡnh, dỏn hỡnh v to hỡnh nh chuyn ng - Hm: imagesize ( int x1, int y1, int x2, int y2 ) ; tr v s byte cn thit lu tr nh phm vi hỡnh ch nht (x1,y1,x2,y2) - Hm: getimage (int x1,int y1,int x2,int y2,void *bitmap) ; s chộp cỏc im nh ca hỡnh ch nht (x1,y1,x2,y2) v cỏc thụng tin v b cao v b rng ca hỡnh ch nht vo vựng nh bitmap tr ti - Hm: putimage (int x, int y,void *bitmap, int copymode ) ; dựng nh lu tr vựng nh bitmap mn hỡnh ti v trớ (x,y) To nh chuyn ng: Nguyờn tc: - V mt hỡnh (trong chui hỡnh mụ t chyn ng) - Delay (tr) - Xúa hỡnh ú - V hỡnh k tip - Delay CHNG - THAO TC VO RA I VI TP (FILE) 7.1 Khỏi nim Ngụn ng C cú hai loi file: - File nh phõn: Thng dựng ghi cỏc cu trỳc - File bn (text): Dựng ghi d liu dng ký t 7.2 Cỏc hm thao tỏc vi 7.2.1 Khai bỏo file FILE * ; 7.2.2 M file FILE *fopen(, ); Trong ú: : L tờn c m (bao gm c ng dn, ngụn ng C phi chỳ ý du gach chộo phõn cỏch ng dn l hai gch \\ ) : L kiu truy nhp m file, nú c biu din bi mt xõu ký t cho bit kiu m nh l c, ghi, hay c hai Kiu truy nhp cú th l: Kiểu file Nhị phân Chế độ mở ý nghĩa Ghi rb Mở để đọc File đ có wb Mở để ghi Tạo file ab Mở để bổ sung File đ có tạo r+b w+b a+b File đ có Mở để đọc Tạo file ghi File đ có tạo Kiểu file Vn bn Chế độ mở ý nghĩa Ghi r hay rt Mở để đọc File đ có w hay wt Mở để ghi Tạo file a hay at Mở để bổ sung File đ có tạo r+ hay r+t w hay w+t a hay a+t File đ có Mở để đọc Tạo file ghi File đ có tạo Vớ d: FILE *t_vao, *t_ra; t_vao = fopen(dulieu.in, r); t_ra = fopen(ketqua.out, w) ; 7.2.3 úng file fclose (FILE *fp); 7.2.4 c file (a) c file theo kiu bn (theo khuụn dng): int fscanf(FILE *fp, ,); Trong ú: fp: tr : chui iu khin quy cỏch c : D/sỏch cỏc a ch bin cn nhp d liu t file Vớ d: fscanf(fp, %d%d%d, &ngay, &thang, &nam); (b) c mt ký t t file bn: int fgetc(FILE *fp); Trong ú: fp l tr Hm fgetc thc hin vic c mt ký t t tp, nu thnh cụng thỡ cho mó c c , nu gp cui hay cú li, hm cho EOF Vớ d: c = fgetc(fp); // c mt ký t t v lu vo bin c (c) c mt dóy ký t t bn: char *fgets (char *s, int maxchar, FILE *fp); Trong ú: fp l tr s: Con tr kiu char maxchar: L di cc i ca dóy ký t cn c Vớ d: fgets(xau, 80, fp); Thc hin vic c mt dóy ký t t fp vo vựng nh xau 7.2.5 Ghi file (a) Ghi file theo kiu bn (theo khuụn dng): int fprintf(FILE *fp, , ); Trong ú: fp: tr : L xõu iu khin ghi : Danh sỏch cỏc i s cn ghi lờn file Vớ d: fprintf(fp, So duoc ghi len tep la: %d\n, i); Ghi s i lờn fp (b) Ghi mt ký t lờn file bn: int fputc(int ch, FILE *fp); Trong ú: fp l tr ch l ký t c ghi lờn Hm fputc thc hin vic ghi lờn fp mt ký t cú mó bng ch % 256 vi ch l s nguyờn khụng du Vớ d: fputc(X, fp); // Ghi ký t X lờn fp (c) Ghi mt xõu ký t lờn bn: int fputs (, FILE *fp); Trong ú: fp l tr : L xõu ký t Hm fputs thc hin vic ghi lờn fp Vớ d: fputs(Vao du lieu, fp); // Ghi xõu Vao du lieu lờn file fp 7.2.6 Lm sch b m c/ghi file (a) Hm fflush: fflush ( FILE *fp); Trong ú fp l tr Hm fflush lm sch vựng m ca fp Nu thnh cụng hm cho giỏ tr 0, ngc li hm cho EOF (b) Hm fflushall: fflushall( ) ; Hm fflushall lm sch vựng m ca cỏc ang m Nu thnh cụng hm cho giỏ tr nguyờn bng s ang m, trỏi li hm cho EOF 7.2.7 Hm kim tra cui int feof (FILE *fp); Trong ú fp l tr Hm feof dựng kim tra cui fp, nu thnh cụng hm tr v giỏ tr khỏc 0, trỏi li tr v VD: Lp chng trỡnh nhp t bn phớm mt dóy s nguyờn khỏc v ghi vo bn Hin ni dung mn hỡnh, tớnh tng cỏc s #include #include void main() { FILE *fp; char tentep[15]; int tg, tong; printf("Nhap ten tep can luu: "); fflush(stdin); gets(tentep); fp = fopen(tentep, "w"); { printf("Nhap so nguyen (so de ket thuc): "); scanf("%d", &tg); if(tg != 0) fprintf(fp,"%d ", tg); } while (tg != 0); fclose(fp); fp = fopen(tentep , "r"); tong = 0; printf("\nDay so doc tu file:\n"); while (fscanf(fp, "%d", &tg) > 0) { printf("%6d", tg); tong += tg; } printf("\nTong = %d", tong); fclose(fp); getch(); } VD: c d liu t mt cú tờn l matran.vao vo mt ma trn m x n (0 < m,n < 50)v ghi cỏc phn t ca ma trn ny lờn mt mi cú tờn l matran.ra #include #include void main() { FILE *tepvao, *tepra; float a[50][50]; int m , n , i , j; float x; // Nhap ma tran tu tep matran.vao tepvao = fopen(matran.vao,"r"); fscanf(tepvao,"%d",&m); fscanf(tepvao,"%d",&n); for (i=0; i