TRNG I HC S PHM HÀ NI TRUNG TÂM GIÁO DC T XA NGUYN V QUC HNG NGUYN QUNH DIP MT S PHNG PHỄP C BN TRONG THIT K GII THUT VÀ ỄNH GIỄ PHC TP THUT TOÁN HÀ NI ậ 2012 Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip 1 CHNG 1 DN NHP 1.1 Algorithm? T algorithm đc đt ra t th k th 9 bi nhà toán hc Bat (Iran) Abu Ja’fa Mohammed ibn Khowarizmi đc hiu đn gin là tp các quy tc cha đng các phép tính toán đc thc hin bng tay hoc máy móc, trong tài liu này ta luôn hiu là gii thut đc xây dng cho máy tính. Algorthmics là thut ng đ ch s nghiên cu v gii thut. Khi ta gii quyt vn đ vic đu tiên quan trng là quyt đnh la chn mt gii thut có kh nng đ s dng. Tu thuc vào yêu cu ca bài toán và gii hn kh nng ca thit b, chúng ta cn chn đc gii thut thc hin vi thi gian ít nht hoc vi không gian lu tr nh nht hoc d lp chng trình nht, tho mãn nhng nhân t này, ngoài kh nng v tc đ và không gian lu tr ca thit b đc dùng cn phi đ ý thit k gii thut. Algorthmics là khoa hc nghiên cu v cách xác đnh hiu qu ca nhng nhân t bin đi bên ngoài, cho phép la chn mt gii pháp tt nht cho nhng tình hung đc bit; đó chính là khoa hc cho chúng ta bit phi làm nh th nào đ xây dng mt gii thut mi cho nhng tác v riêng bit. Ta ly s hc s cp làm ví d. Gi s, ta phi nhân hai s nguyên dng ch s dng bút và giy. Nu thc hin theo kiu Bc M, chúng ta ln lt thc hin phép nhân vi các s t phi qua trái, mi kt qu đc vit trên mt dòng vi s cui cùng bên phi đc trt trái mt v trí so vi kt qu dòng trên và cui cùng cng tt c các dòng s đc kt qu mong mun. Nu thc hin theo kiu đc dy trong nhà trng Anh thì ta li bt đu t bên trái qua phi. Phép nhân 981 và 1234 đc ch ra theo Hình 1.1. Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip 2 981 981 1234 1234 3924 981 2943_ 1962 1962__ _2943 981___ __3924 1210554 1210554 Hình 1.1. Nhân 2 s nguyên ln Ta nhn thy rng, hai gii thut này là tng đng, thuc loi phân lp, mt gii thut th ba khác hn đc gi là nhân theo kiu Nga đc trình bày nh sau: 981 1234 1234 490 2468 245 4936 4936 122 9872 61 19744 19744 30 39488 15 78976 7896 7 157952 157952 3 315904 315904 Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip 3 1 631808 631808 1210554 Hình 1.2. Nhân theo kiu Nga Gii thut này rt thích hp vi các mch tính nh phân. Mt khác, vi ngi tính toán không cn hc thuc mt bng nhân nào. Cái ngi ta cn bit ch là phép cng và nhân chia cho 2. Còn mt gii thut khác đc trình bày nh Hình 1.3 và 1.4 di đây. Gii thut này cn làm cho hai s hng tham gia vào phép nhân có đ dài bng nhau (s dng s 0 cho thêm vào đu), đ dài là mt ly tha ca 2 (1, 2, 4, 6, 8, …). nhân 0981 vi 1234 , đu tiên ta nhân tng na ca ca các toán hng vi nhau: na bên trái ca toán hng nhân (09) đc nhân vi ln lt na bên trái ca toán hng kia (12 và 34), ri tip tc na bên phi ca nó cng đc nhân nh vy. Ta có 4 phép nhân, kt qu đc sp xp và cng li xem Hình 1.3. Toán hng nhân Trt Kt qu i) 09 12 4 108 ii) 09 34 2 306 iii) 81 12 2 972 iv) 81 34 0 2754 1210554 Hình 1.3. Phép nhân kiu chia đ tr Cng vi cách thc nh vy, chúng ta li áp dng đi vi các phép nhân 09 x 12, 09 x 34, 81 x 12 và 81 x 34. Chng hn, phép nhân 09 x 12 đc thc hin nh sau: Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip 4 Toán hng nhân Trt Kt qu i) 0 1 2 0 ii) 0 2 1 0. iii) 9 1 1 9. iv) 9 2 0 18 108 Hình 1.4. Phép nhân kiu chia đ tr Phép nhân đc tin hành nh vy đc gi là thc hin theo gii thut chia đ tr (divide and conquer), đ nhân hai s nguyên ln ta đã chia nh ra, cui cùng ch thc hin phép nhân hai s có mt ch s và các phép cng. 1.2. Biu din gii thut. Chúng ta có th s dng ngôn ng t nhiên đ trình bày mt gii thut, nhng ngôn ng t nhiên có nhc đim v tính chính xác. Trong giáo trình này chúng ta s dng ngôn ng phng trình, mt ngôn ng vn đc dùng trong các nhà trng, gn ging vi ngôn ng Pascal. * Ký t và biu thc: Bng ch cái và du phép toán theo bng mã ASCII Giá tr logic: true, false Phép toán logic: and, or, not Bin ch s: a[i], a[i,j], a[i, j, k], Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip 5 * Các cu trúc d liu: Integer, Real, Char, Logical, String. Khi cn chúng ta có th b xung thêm cu trúc d liu. * Phép gán: <tên bin> <biu thc> hoc <tên bin> := <biu thc> * Phép ghép lnh: begin <các câu lnh> end * Câu lnh thc hin theo điu kin: if B then S if B then S 1 else S 2 Trong đó: B là mt biu thc logic. S, S 1 , S 2 là các câu lnh * Câu lnh tuyn: case B1 : S1; B2 : S2; Bn : Sn else Sn+1 end case Chng 1. Dn nhp Nguyn V Quc Hng-Nguyn Qunh Dip 6 * Câu lnh lp: for <tên bin> := m to n do S for <tên bin> := m downto n do S While B do S Repeat <các câu lnh> until B Trong đó: S là câu lnh, B là biu thc logic, m và n (các giá tr đm đc) là các giá tr khi đu và kt thúc. * Vào, ra: read (<danh sách bin>) write (<danh sách bin>) * M đu và Kt thúc chng trình: begin end. * Chng trình con hàm: function <tên hàm> (<danh sách tham s>) : kiu d liu; <chng trình> return * Chng trình con th tc: procedure <tên th tc> (<danh sách tham s>); <chng trình> return . vn đc dùng trong các nhà trng, gn ging vi ngôn ng Pascal. * Ký t và biu thc: Bng ch cái và du phép toán theo bng mã ASCII Giá tr logic: true, false Phép toán logic: and,. Repeat <các câu lnh> until B Trong đó: S là câu lnh, B là biu thc logic, m và n (các giá tr đm đc) là các giá tr khi đu và kt thúc. * Vào, ra: read (<danh sách bin>). PHM HÀ NI TRUNG TÂM GIÁO DC T XA NGUYN V QUC HNG NGUYN QUNH DIP MT S PHNG PHỄP C BN TRONG THIT K GII THUT VÀ ỄNH GIỄ PHC TP THUT TOÁN HÀ