Ôn tp ngôn ng C Mc tiêu Ôn tp v các khaí nim cơ bn v lp trình Ôn tp cú pháp C. Ôn tp k thut vit chương trình C. Ôn tp k thut vit hàm C. Ôn tp k thut phân tích chương trình có hàm. Ôn tp v mng 1 chiu Ôn tp v ma trn Ôn tp v chui ký t. Ôn tp v cu trúc
Ni dung 1- Các khái nim cơ bn v lp trình. 2- Cú pháp ngôn ng C 3- K thut gii bài toán đơn gin. 4- K thut xây dng hàm C. 5- K thut phân tích chương trình có hàm. 6- Pointer 7- Mng mt chiu. 8- Ma trn. 9- Chui ký t. 10- Cu trúc.
1- Các khái nim cơ bn v lp trình Chương trình máy tính: Tp các lnh nh phân có th t nhm gii mt bài toàn trên máy tính. Ngôn ng lp trình:Mt tp các đnh nghĩa v cú pháp cho phép ngưi s dng to ra các chương trình máy tính. Mt chương trình s đưc to ra t mt chui các phát biu đúng cú pháp. Dch chương trình:Quá trình chuyn 1 chương trình trong 1 ngôn ng lp trình thành chương trình nh phân (mã máy). Như vy chương trình có 2 dng: chương trình trong ngôn ng lp trính và chương trình mã máy.
Các khái nim cơ bn v lp trình Phn mm ngôn ng: Mt phn mm máy tính hin thc cú pháp ca 1 ngôn ng lp trình, cung cp cho ngưi s dng các mt s tin ích như : Môi trưng son tho chương trình (editor), dch chương trình + kim li cú pháp chương trình (compile), chy c/ tng bưc chương trình, kim tra tr các bin (debug, View)
Các khái nim cơ bn v lp trình Gii thut: Phương pháp / cách tip cn đ gii mt bài toán. Đc đim ca gii thut: (1) Có duy nht 1 đim bt đu + duy nht 1 đim kt thúc. (2) Gii thut phi dng. (3) Kt qa phi đúng. Mô t 1 gii thut (1) Mt trt t hu hn các bưc gii theo ngôn ng. (chương trình máy tính là mt gii thut cho 1 bài toán c th) (2) Lưu đ.
Các khái nim cơ bn v lp trình Các bưc lp trình Yes Bài toán Phân tích D liu Gii thut Dùng Editor NNLT Chương trình ngôn ng Dch Chy Li No Yes Li cú pháp Kq đúng Start End Chương trình mã máy No gii thut sai
2- Cú pháp ngôn ng C 2.1- T khóa và cách đt t mi T khóa: T cơ bn ca ngôn ng. Cách đt 1 t: Ký t đu là ch hay gch ni, các ký t sau là ch+s+gch ni. Không đt t trùng vi t khóa, không s dng các ký hiu toán t, không dùng ký t khong trng. Mi khái nim đưc đt 1 t riêng.
2.2- Toán t cơ bn Toán t s hc: + - * / % Toán t so sánh: = > != : tr v tr 0 (sai) 1 (đúng). Toán t lun lý: ! && || : tr v tr 0 (sai) 1 (đúng). Toán t trên bit : & | ^ ( and, or, xor) Toán t dch: >> << Toán t điu kin : Cond ? true_val : false_val Toán t gán: = += -= *= /=...
Đ ưu tiên toán t (TT) cơ bn (1) Ngoc t trong ra ngoài. (2) TT S hc (nhân chia trưc cng tr sau, kt hp trái phi). (3) TT So sánh (trái phi). (4) TT lun lý ( NOT -> AND -> OR) Cui cùng là toán t gán. (Xem thên trong help vi t khóa precedence)
2.3- Kiu d liu-Hng- Bin Datatype: Khái nim đc t kích thưc b nh khi lưu tr các loi d liu khác nhau. Các kiu d liu cơ bn: char, int, long, float, double. Kiu d liu dn xut (derived): Kiu d liu đưc dn ra t các kiu cơ bn, thí d: mng, chui ký t, cu trúc. Hng (constant) : D liu không đi theo thi gian. Khai báo hng: Cách 1: #define PI // dùng macro Cách 2: const int MaxN = 100 ;
Kiu d liu-Hng- Bin Bin (variable) : Mt vùng nh s lưu tr d liu có liên quan đn bài toán và có th thay đi theo thi gian. Bin phi thuc 1 kiu d liu. Khai báo bin: DataType varName [ = TrKhiTo]; Thí d char c1, c2 =A, c3=c2; int n = 7, m = n, d ;
2.4- Phát biu C Phát biu đơn (simple statement): Mt tác v hoc 1 biu thc. Phát biu khi (compound statement): Mt nhóm tác v đưc bao li bng { }. Thưng dùng trong các tình hung đc bit mun coi 1 nhóm phát biu đơn là 1 phát biu. Thí d: if (x<10) y= 7 ; // phát biu đơn else { y=6; // phát biu khi gm 2 phát biu đơn x= 1; }
Phát biu Chn – Select statements Phát biu chn 1/2 (if..else statement): if (condition) Statement_1; else Statement_2; Phát biu chn 1/n (switch statement): switch (int_or_char_expression) { case Constant1: Statements ; break; case Constant2: Statements ; break; case Constant3: Statements ; break;..... default : Statements; }
Phát biu lp - Loops Phát biu lp for for ( Init statements ; Condition ; Statement2) Statement1; Chú ý 2 du chm phy Phát biu lp whilePhát biu lp do..whileInit; while (Condition) do Statemnent; Statement; while (Condition);
Mt thí d v phát biu lp Tính S= n Làm nhiu phép cng Lp. Khi to (phía trái) : S=0, i=1 Điu kin: (phía phi) : i<=n Vic làm : if (i%5!=0) S += i; i++; Ghép các phn li theo đúng cú pháp lp cu C.
Mt thí d v phát biu lp Dùng for S = 0; for ( i=1; i<=n; i++) if (i%5!=0) S+=i; Dùng while Dùng do..while S= 0; i=1; S= 0; i=1; while (i<=n) do { if (i%5 !=0) S+=i ; { if (i%5 !=0) S+=i ; i++; i++; } } while (i<=n);
Phát biu chuyn điu khin break; Ngưng ngay phát biu switch hoc lp hin hành. continue ; B qua tình hung lp hin hành và lp tip tc return [ BiuThc]; Ngưng ngay tác v ca 1 hàm. exit (int n); // trong thư vic stdlib.h Ngưng ngay chương trình đang chy, tr điu khin v cho h điu hành.
3- K thut gii bài toán đơn gin Bài toán Nht các danh t Bin a, b, c (chn kiu ln) Ct câu theo đng t, Sp xp li cho hp lý Bt đu Đ. t 1 bin a; Đ. t 2 bin b;... Ngưng. #include // Xut-nhp #include // ngưng void main() { int a, b, c; getch(); } ( gii thut )
Thí d: Gii mt s bài tp Bài 1: S = 1+ 1/2 + 1/3 + 1/4 + 1/ /n Bài 2: S = 0, n <=0 S= n, n>0 và n l S= n, n>0 và n chn Bài 3: Xut ra hình chóp rng vi chiu cao đưc nhp t bàn phím.
4- Hàm C – Đnh nghĩa Mt tác v cn cho vic gii bài toán. Mt nhóm phát biu đưc đt tên. Con ngưi thưng din đt 1 yêu cn bng Đng t + Các túc t. Khi thc hin vic này có khi rt vt v và phc tp.
Hàm C – Các thành phn ca hàm Tên hàm: tên gi ca tác v theo quy ưc đt t, thưng là đng t như trong ngôn ng t nhiên. Tham s : D liu đ hàm tác đng. Tham s có 2 loi: tham tr, tham bin. Kiu kt qa: Có khi 1 tác v sau khi thc thi xong có mt d liu mô t kt qa ca tác v Cn nơi cha d liu kt qa phù hp (datatype). Ni dung : nhóm phát biu ch đnh th t thc thi chi tit ca tác v. Hin thc 1 hàm là hin thc c 4 thành phn ca hàm
K thut hin thc hàm int | long |... void Phát biu tác v tht rõ ràng: Đng t + các danh t TênHàm ( Kiu ThamTr, Kiu & ThamBin ) { return [ BiuThc]; } Đng t: Tìm, tính, đm, kim tra, ly Đng t khác Cho tham s mang tr c th; Làm bng tay; Vit ra cách làm; Dch sang C;
5- Phân tích chương trình thành hàm Bài toán Nht các danh t Bin a, b, c (chn kiu ln) Ct câu theo đng t, Sp xp li cho hp lý Bt đu Đ. t 1 bin a; // phc tp Đ. t 2 bin b; // phc tp Đ. t 3 bin c; // Đơn gin... Ngưng. #include // Xut-nhp #include // ngưng void Hàm1 ( Type a) { } int Hàm2(Type b) { return 3*b; } void main() { int a, b, c; Hàm1(a); // gi hàm printf(%d\n, Hàm2(b) ); getch(); } ( gii thut ) Vic đơn gin: Nhp/xut vài bin đơn
6- Pointer Pointer= Bin mang tr là đa ch ca mt vùng nh. Cung cp phương tin gián tip đ truy cp 1 d liu ( bit đa ch s đn đa ch đó truy cp đưc d liu). Cú pháp khai báo pointer: DataType * p; pointer=NULL; mang ý nghĩa pointer này không ch đn d liu nào c int* p int * p1 100 int n đưc gi là bin không tên bin có tên
Toán t thao tác trên pointer & : Ly đa ch ca 1 bin. * : Truy cp tr ti 1 đa ch. new : cp phát mi 1 vùng nh, tr v 1 pointer. delete pointer : Tr vùng nh đã cp phát đng. ++ : Ly đa ch phn t sau. -- : Ly đa ch phn t trưc đó. = : Gán 2 pointer vi nhau. So sánh 2 pointer cho bit v trí trưc sau ca 2 d liu. Đơn v thay đi tr ca pointer khi cng tr là kích thưc ca kiu d liu mà pointer này ch đn
Toán t thao tác trên pointer & : Ly đa ch ca 1 bin. * : Truy cp tr ti 1 đa ch. new : cp phát mi 1 vùng nh, tr v 1 pointer. delete pointer : Tr vùng nh đã cp phát đng. ++ : Ly đa ch phn t sau. -- : Ly đa ch phn t trưc đó. = : Gán 2 pointer vi nhau. So sánh 2 pointer cho bit v trí trưc sau ca 2 d liu. Đơn v thay đi tr ca pointer khi cng tr là kích thưc ca kiu d liu mà pointer này ch đn
Toán t thao tác trên pointer p3 p2 p1 100 n 4 10 p3 p2 200 p1 100 n 3 p3 p2 p1 100 n 3 int n =4; *p1=3; p2= new int; p3= new int [n]; int *p1 = &n; *p2= 10; p3[0]= 30; p3[1]=6; int *p2, *p3; p3[2]=-7; p3 400 p2 200 p1 100 n
Toán t thao tác trên pointer p3 400 p2 0 p1 100 n p3 400 p2 400 p1 100 n p3 400 p2 100 p1 100 n 5 delete p2; p2= p1; p2= p3; delete [] p3; p2 = NULL;*p2=5; *p2= 11; p3= p2= NULL; *(p2+1) = -100; p3 0 p2 0 p1 100 n
Bài tp Chy code sau: int m=3, n=6; int* p1= &m, *p2=&n ; int* p3 = new int [3], *p4=p3; p3[0]= *p1 + * p2; p3[1] = (*p1) * (*p2); p3[2]= (*p1) - (*p2); p4++; *p4 -=5; for (int i = 0; i<3; ++i) *p1 += p3[i]; *p2 -= *p1 + (p3[0]) * (*p4); Hi cui cùng m =?, n=?
7- Mng 1 chiu Mng= Nhóm tr cùng kiu có chung tên, mi phn t đưc qun lý bng ch s đi t 0. Kích thưc ca mng = s phn t mà mng có th cha Khai báo và qun lý mng tĩnh: Mng tĩnh sau khi khai báo đã có sn vùng nh vì đã n đnh kích thưc ca mng. Kiu a [100] ; // ti đa 100 phn t int n; // s phn t hin có, ch s đi t 0 đn n-1 Khai báo và qun lý mng đng: Dùng pointer. Khi khai báo chưa có vùng nh cho các phn t, ch có vùng nh cha các phn t sau khi xin cp phát đng b nh. Kiu* a ; int n; // s phn t hin có, ch s đi t 0 đn n-1
Mng 1 chiu a[i] hoc *(a+i) là tr phn t v trí i ca mng- Thưng là 1 tr ĐƠN. &a[i] hoc (a+i) là đa ch ca phn t th i Tham s mng trong hàm void Nhp (int*&a, int &n) void Nhp ( int a[], int &n) long Tng (int *a, int n) int Max ( int a[], int n).....
8- Mng 2 chiu – Ma trn Ma trn= Nhóm tr cùng kiu có chung tên, các phn t đưc b trí thành các hàng các ct. Mi phn t là 1 tr ĐƠN Kích thưc ca ma trn = s hàng * s ct Khai báo và qun lý ma trn tĩnh: Kiu m [10][20] ; // ti đa 10 hàng 20 ct int h, c; // s hàng ct hin có Truy xut phn t : m[i][j]
Ma trn đng- qun lý như mng 1 chiu Kiu* m; int h,c; Cp phát b nh: m= new Kiu [h*c]; Đa ch phn t hàng i ct j : m+i*c+j Tr ca phn t hàng i ct j : *(m+i*c+j)
Ma trn đng- có n đnh s hàng ti đa, s ct tùy ý Khai báo và qun lý ma trn đng: Dùng pointer. Kiu* m[10] ; // ti đa 10 hàng int h,c ; Đa ch phn t hàng i ct j : & m[i][j] Tr ca phn t hàng i ct j : m[i][j] Cp phát b nh cho hàng i: m[i] = new Kiu[c];
Ma trn đng- có s hàng, s ct tùy ý Khai báo và qun lý ma trn đng: Dùng pointer. Kiu** m ; int h,c ; Cp b nh: m= new Kiu* [h]; for (int i=0; i<h; ++i) m[i]= new Kiu[c]; Đa ch phn t hàng i ct j : & m[i][j] Tr ca phn t hàng i ct j : m[i][j]
9- Chui ký t trong C Hoahong\0 100 char S[30]=Hoa hong; Chui ký t tương t mng các ký t. Có 1 điu khác là byte cui cùng mang tr NULL (0) mang ý nghĩa byte đánh du kt thúc chui. S[i] là ký t th i trong chui. Rt nhiu hàm thao tác chui đưc khai báo trong string.h Hàm scanf(%s, S) ch nhp đưc chui không có khong trng. Nhp chui có khong trng bng : gets(S); Trưc khi nhp ký t, chui, nên x b đm bàn phím bng fflush(stdin); // stdio.h
10- Cu trúc Cu trúc = Kt qa khái quát hóa nhiu d liu đơn thành mt th thng nht. Cú pháp struct EMPLOYEE { char Code[10]; char Name [31]; double Salary; } ; Bin cu trúc EMPLOYEE e1 = { E00001, Bill Gate,18000}; EMPLOYEE e2, e3; EMPLOYEE * List; int n; // mng cu trúc vi C chun, có typedef đng trưc vi C chun, không có typedef khi khai báo struct thì phi có t khóa struct đng trưc
Thao tác trên cu trúc Truy xut thành phn: strcpy(e2.Code, e1.Code); // gán thành phn chui e2.Salary = e1. Salary; Gán cu trúc e3 = e1; So sánh 2 cu trúc: Thưng da trên 1 vài thành phn ca 2 cu trúc. if (e1.Salary < e2.Salary) {... } if (strcmp (e1.Name, e2.Name) <0) {... }