Chương II Môôt sô vấn đề KTLT (6LT – 2BT) Last update 8-2010 SE-SoICT KTLT-2.1 Chương II Tổ chức chương trình Biến cục bôô/Biến toàn cục Cấu trúc dữ liêôu đôông Cấp phát tĩnh và cấp phát đôông Last update 8-2010 SE-SoICT KTLT-2.2 2.1 Tổ chức CT • Khi giai quyêêt BT, theo phương phap tiêêp cân câêu truc, BT đươc phân chia cac BT va cac CT se đam nhiêm Qua trinh phân cư tiêêp tuc đêên mưc đu chi tiêêt • Moi NNLT đêêu cung câêp phương tiên đê tô chưc chương trinh • Goi la CT đê phân biêt vơi CT m ưc ngoai (main) đươc goi thưc hiên bơi ND • CT co câêu truc giôê ng main song đươc goi va co thê goi cac CT khac Last update 8-2010 SE-SoICT KTLT-2.3 CT (tiếp) • CT thương gôê m loai theo cach sư dung: – CT Hàm – CT Thủ tục • CT Ham la CT dung đê thưc hiên tinh toan va tra vêê1 gia tri cua kiêu DL hơp lê qui đinh bơi NNLT đo • CT thu tuc thưc hiên nhiêm vu phưc tap (không nhâê t thiêêt la tinh toan) va không tra vêê1 kêê t qua nao • Trong C không phân biêt khai niêm Tuy nhiên vân đươc dung theo phong cach chung Last update 8-2010 SE-SoICT KTLT-2.4 Thí dụ CT (tiếp) • CT Ham C int GT(int n) { if ( n==0) return 1; else return n * GT(n-1); } • CT thu tuc C void nhapmang(Mang V, int n) {int i; for (i=0;i Cú pháp, ngữ nghĩa của Th/số thực!!! • TD: Minh họa số ví du • Truyền theo tên (macro) • Trong NN C chỉ có kiểu truyền là theo trị Tuy nhiên LTV vẫn có thể dùng thủ thuâât để truyền theo địa chỉ (xem phần sau) Last update 8-2010 SE-SoICT KTLT-2.9 Tham số truyền trị #include #include swap (int a, int b); { int temp = a; a = b; b= temp); } main() { int c = 5; int d = 7; clrscr(); swap (c,d); printf("\n c= %d d=%d",c,d); getch(); } Last update 8-2010 Kết quả in c=5 SE-SoICT d=7 KTLT-2.10 //Công hai ma trân void AddMatrix(int *A,int *B,int*C,int M,int N) { for(int I=0;I[...]... m[6] [2] = {{1,1},{1 ,2} , {2, 1}, {2, 2},{3,1},{3 ,2} }; char s1[6] ={‘H’,’a’,’n’,’o’,’i’,’\0’}; hoặc char s1[6] = “Hanoi”; char s1[] =“Dai hoc Bach Khoa Hanoi”; L =24 int m [][] ={{1 ,2, 3},{4,5,6}}; – Khai báo rồi gán giá trị cho từng phần tử của mảng Ví dụ : int m[4]; m[0] = 1; m[1] = 2; m [2] = 3; m[3] = 4; Last update 8 -20 10 SE-SoICT KTLT -2. 35 2 Con trỏ • Khai niêm : Gia tri cac biêê n đươc lưu trư trong. .. TD: minh họa qua C/ Pascal Last update 8 -20 10 SE-SoICT KTLT -2. 12 Chương II 1 2 3 4 Tổ chức chương trình Biến cục bôô/Biến toàn cục Cấu trúc dữ liêôu thay đổi Cấp phát tĩnh và cấp phát đôông Last update 8 -20 10 SE-SoICT KTLT -2. 13 2. 2 Biến cục bô ô (local) và toàn cục (global) • Khi 1 CT được gọi nó được nạp vào bộ nhớ và thường trú trong bộ nhớ đến khi kết thúc thực hiện... NULL); do { c = fgetc(fv); fputc(c,fr); } while (c != EOF); fclose(fv); fclose(fr); } Last update 8 -20 10 SE-SoICT KTLT -2. 24 Chương II 1 2 3 4 Tổ chức chương trình Biến cục bôô/Biến toàn cục Cấu trúc dữ liêôu thay đổi Cấp phát tĩnh và cấp phát đôông Last update 8 -20 10 SE-SoICT KTLT -2. 25 Cấu trúc bô ô nhớ cơ bản • Vùng nhớ tĩnh còn gọi là stack Vùng nhớ thấp dùng đê lưu... Lưu ý sử dụng biến toàn cục để liên kết với CT con!!! Last update 8 -20 10 SE-SoICT KTLT -2. 16 Chương II 1 2 3 4 Tổ chức chương trình Biến cục bôô/Biến toàn cục Cấu trúc dữ liêôu thay đổi Cấp phát tĩnh và cấp phát đôông Last update 8 -20 10 SE-SoICT KTLT -2. 17 2. 3 Cấu trúc dữ liê ôu thay đổi • Trong quá trinh lââp trình nhiều khi ta cần có kiểu dữ liêâu đáp ứng được tình... 8 -20 10 SE-SoICT KTLT -2. 31 Bài tâ âp 2 • Viêê t lai chương trinh nhân hai ma trân cua bai tâp trươc: ma trân đươc câêp phat đông theo 2 cach • Nôp listing CT kem theo kêê t qua (it nhâêt 3 kêê t qua) CT viêê t trên C hoặc C++ Chu y in ma trân cung vơi phân phôê i đia chi cac phâên tư • Đôê i sanh kêê t qua vơi bai tâp trươc Last update 8 -20 10 SE-SoICT KTLT -2. 32 Mô ôt sô kiến thức nâng cao trong C/ C++... update 8 -20 10 SE-SoICT KTLT -2. 33 1 Mảng • La môt day hưu han cac phâên tư liên tiêê p co cung kiêu va tên • Co thê la 1 hay nhiêê u chiêê u, C không giơi han sôêchiêê u cua mang • Khai bao theo cu phap sau : DataType ArrayName [size]; hooặc DataType ArrayN [Size1][Size2] ; Last update 8 -20 10 SE-SoICT KTLT -2. 34 • Khơi tao gia tri cho mang theo 2 cach: – Khi khai báo : float y[5]={3 .2, 1 .2, 4.5 ,6.0,... (tiếp) Typedef union { struct { long abscisse ; long ordonne; }cart; struct { float rho; float theta; }pol; coord p1,p2;// định nghĩa 2 điểm p1 và p2 => Truy nhââp tới thành phần của các điểm: P1.cart.abscisse, p2.pol.theta Last update 8 -20 10 SE-SoICT KTLT -2. 20 Tê ôp (file) 2- Trong CT đê lưu các thông tin lâu dài, người ta sử dụng các tê p ô • Có nhiều loại têôp khác nhau: têôp văn... Last update 8 -20 10 Kết quả in ra c=7 SE-SoICT d=5 KTLT -2. 11 Tổ chức CT con • Để tiện sử dụng CT con được tổ chức theo nhiều hình thức khác nhau: 1 Trong cùng 1 chương trình với CT chính 2 Ghép thành đơn vị CT 3 Ghép thành mô đun (đơn thể chương trình) • Cách tổ chức thứ 2 và 3 tiện dụng hơn vì tính tái sử dụng Các CT con của ND có thể chuyển vào Thư Viện chương trình... MAX * MAX,fp); Last update 8 -20 10 SE-SoICT KTLT -2. 22 TD đọc ghi tê ôp nhị phân if ((fp=fopen(filename,"r+"))==NULL) printf("\n Khong mo duoc tep!"); else { fread(&B,sizeof(int), MAX * MAX,fp); fclose(fp); }// ket thuc else printf("\n Mang doc ra tu tep:"); for (i = 0;i ... [Size1][Size2] ; Last update 8 -20 10 SE-SoICT KTLT -2. 34 • Khơi tao gia tri cho mang theo cach: – Khi khai báo : float y[5]={3 .2, 1 .2, 4.5 ,6.0, 3.6} int m[6] [2] = {{1,1},{1 ,2} , {2, 1}, {2, 2},{3,1},{3 ,2} };... p1,p2;// định nghĩa điểm p1 và p2 => Truy nhââp tới thành phần của các điểm: P1.cart.abscisse, p2.pol.theta Last update 8 -20 10 SE-SoICT KTLT -2. 20 Tê ôp (file) 2- Trong CT đê lưu các thông tin... 8 -20 10 SE-SoICT KTLT -2. 24 Chương II Tổ chức chương trình Biến cục bôô/Biến toàn cục Cấu trúc dữ liêôu thay đổi Cấp phát tĩnh và cấp phát đôông Last update 8 -20 10 SE-SoICT KTLT -2. 25