Bài giảng Tin học căn bản - Chương III: Giải quyết bài toán bằng máy tính
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học căn bản - Chương III: Giải quyết bài toán bằng máy tính", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_tin_hoc_can_ban_chuong_iii_giai_quyet_bai_toan_ban.ppt
Nội dung text: Bài giảng Tin học căn bản - Chương III: Giải quyết bài toán bằng máy tính
- CHƯƠNG III GIAÛI QUYEÁT BAØI TOAÙN BAÈNG MAÙY TÍNH 133
- CHƯƠNG III GIAÛI QUYEÁT BAØI TOAÙN BAÈNG MAÙY TÍNH 3.1 Kyõ thuaät laäp trình 3.2 Thuaät toaùn vaø Thuaät giaûi 3.3 Bieåu dieãn thuaät toaùn 3.4 Caùc böôùc giaûi quyeát baøi toaùn treân maùy 134
- 3.1 Kyõ thuaät laäp trình 135
- Khaùi quaùt • Kyõ thuaät xaây döïng phaàn meàm chính laø kyõ thuaät laäp trình. Laäp trình vöøa laø moät kyõ thuaät vöøa laø moät ngheä thuaät. • Laäp trình (Programming) thöïc chaát laø ñieàu khieån - baèng moät ngoân ngöõ laäp trình cuï theå - caùch xöû lyù thoâng tin treân maùy theo yeâu caàu cuûa baøi toaùn ñaët ra. • Ñeå laäp trình, phaûi bieát caùch toå chöùc döõ lieäu (nguyeân lieäu ñeå maùy xöû lyù) vaø caùch thöùc xöû lí döõ lieäu (thuaät giaûi) ñeå cho ra keát quaû mong muoán. 136
- PROGRAMMING = ALGORITHMS + DATA STRUCTURE 137
- • PHAÛI TOÅ CHÖÙC DÖÕ LIEÄU THEO CAÙCH TOÁT NHAÁT : Döõ lieäu trong tin hoïc phaûi ñöôïc phaân loaïi, xaùc ñònh moät caùch raïch roøi theo nhöõng quy ñònh chaët cheõ, chính xaùc ñeå maùy coù theå phaân bieät, nhaän bieát, löu tröõ vaø xöû lyù • PHAÛI TÌM ÑÖÔÏC THUAÄT TOAÙN TOÁT NHAÁT, TOÁI ÖU NHAÁT 138
- • 4 TIEÂU CHUAÅN ÑAÙNH GIAÙ MOÄT CHÖÔNG TRÌNH : ü Tính tin caäy ü Tính uyeån chuyeån ü Tính trong saùng ü Tính höõu hieäu 139
- LAÄP TRÌNH CAÁU TRUÙC ü Caáu truùc veà maët döõ lieäu ü Töø nhöõng leänh ñôn giaûn ñaõ coù hoaëc nhöõng leänh ñaõ coù caáu truùc, coù theå xaây döïng nhöõng leänh coù caáu truùc phöùc taïp hôn ü Caáu truùc veà maët chöông trình : Moät chöông trình lôùn coù theå chia thaønh nhieàu modun chöông trình con ñoäc laäp • Moãi chöông trình con laïi coù theå phaân chia thaønh caùc chöông trình con khaùc. PASCAL laø moät trong caùc ngoân ngöõ tieâu bieåu veà coù caáu truùc 140
- 3.2 Thuaät toaùn vaø Giaûi thuaät 141
- KHAÙI NIEÂM THUAÄT TOAÙN Lµ kh¸i niÖm c¬ së cña To¸n häc vµ Tin häc ThuËt to¸n (Algorithm) lµ mét hÖ thèng chÆt chÏ vµ râ rµng c¸c quy t¾c nh»m x¸c ®Þnh mét d·y c¸c thao t¸c trªn những ®èi tîng, sao cho sau mét sè hữu h¹n bícthùc hiÖn c¸c thao t¸c ta ®¹t ®îc môc tiªu ®Þnh tríc. 142
- Ngêi hoÆc m¸y thùc hiÖn mét thuËt to¸n ®îcgäi lµ mét bé xö lý. Nh vËy mét bé xö lý cña mét thuËt to¸n T nµo ®ã lµ mét c¬ chÕ cã khả năng thùc hiÖn c¸c thao t¸c trªn c¸c ®èi tîng theo mét trình tù do T quy ®Þnh. 143
- Cïng mét bµi to¸n cã thÓ cã nhiÒu thuËt to¸n kh¸c nhau. ThuËt to¸n ®¬n giaûn, dÔ hiÓu, cã ®é chÝnh x¸c cao, ®îc baûo ®aûm vÒ mÆt to¸n häc, dÔ triÓn khai trªn m¸y, thêi gian thao t¸c ng¾n, ®îcgäi lµ thuËt to¸n tèi u. 144
- Nghiªn cøu thuËt to¸n lµ mét trong nhöõng vÊn ®Ò quan träng nhÊt cña Tin häc. Lý thuyÕt vÒ thuËt to¸n phaûi giaûi quyÕt c¸c vÊn ®Ò sau : -Nhöõng bµi to¸n nµo giaûi ®îcb»ng thuËt to¸n; bµi to¸n nµo kh«ng giaûi ®îc b»ng thuËt to¸n -Tìm thuËt to¸n tèt nhÊt, tèi ucña mét bµi to¸n -TriÓn khai thuËt to¸n trªn m¸y tÝnh 145
- Vaøi ví duï ThuËt to¸n giaûi ph¬ng trình bËc hai : A X2 + BX + C = 0 (A 0) -Bíc 1 : TÝnhDELTA = B*B-4*A*C -Bíc 2 : So s¸nhDELTA víi sè 0 -Bíc 3 : RÏ lµm 3 trêng hîp : -Trêng hîpDELTA 0 :tÝnh hai nghiÖm ph©n biÖt: X1, X2 th«ng b¸o nghiÖm ; kÕt thóc thuËt to¸n. 146
- ThuËt to¸n Hoocne tÝnh gi¸ trÞ cña ®a thøc : n n-1 1 Cho Pn(X)=AnX + An-1X + +A1X +A0 TÝnh Pn(c) ? Pn(c)=( ((An.c +An-1).c + An-2 ) ).c + A0 - Bíc 1 : Cho i = n ; Q = An - Bíc 2 : Cho i nhËn gi¸ trÞ cò cña i trõ 1 : i = i - 1 So s¸nh i víi 0. - Bíc 3 : RÏ lµm 2 trêng hîp : 1-Trêng hîp i >= 0 : tÝnh Q b»ng gi¸ trÞ cò cña Q nh©n víi c céng víi Ai ; Quay trë l¹i bíc 2. 2-Trêng hîp i < 0 : th«ng b¸o kÕt quaû Q; KÕt thóc thuËt to¸n. 147
- ý nghÜa cña thuËt to¸n hoocne n n-1 1 Cho Pn(X)=AnX + An-1X + +A1X +A0 ViÕt ®a thøc díi d¹ng : Pn(c)=( ((An.c +An-1).c + An-2 ) ).c + A0 ChØ bao gåm c¸c phÐp nh©n, céng liªn tiÕp P2(c)=(A2.c +A1).c + A0 P3(c)=((A3.c +A2).c + A1).c + A0 148
- 6 TÍNH CHAÁT CUÛA THUAÄT TOAÙN 1-tÝnh dõng - kÕt thóc 2-tÝnh x¸c ®Þnh 3-tÝnh hµng lo¹t 4-tÝnh KHẢ THI 5-tÝnh ®Çy ®ñ-vÐt c¹n 6-tÝnh ®óng ®¾n 149
- TÍNH DÖØNG ThuËt to¸n phaûi kÕt thóc sau mét sè höõu haïn bíc. VÝ dô : ThuËt to¸n kh«ng dõng 1) Xo¸ bảng 2) ViÕt sè 9 3) Thùc hiÖn bíc 1 VÝ dô 7 : ThuËt to¸n kh«ng dõng Đäc c¸c sè tù nhiªn liªn tiÕp, b¾t ®Çu tõ 1 150
- TÍNH XAÙC ÑÒNH C¸c thao t¸c ë mçi bícph ải hÕt søc râ rµng vµ chØ ®îc hiÓu theo mét nghÜa duy nhÊt. Trong cïng mét ®iÒu kiÖn, hai bé xö lý kh¸c nhau hoÆc hai lÇn thao t¸c kh¸c nhau phải cho cïng mét kÕt quả khi thùc hiÖn cïng mét thuËt to¸n. C¸c ngêikh¸c nhau cïng sö dông mét thuËt to¸n, sÏ hµnh ®éng gièng nhau cho dï hä kh«ng hiÓu gì vÒ bản chÊt vµ ý nghÜa cña vÊn ®Ò. 151
- TÍNH HAØNG LOAÏT ThuËt to¸n cã hiÖu lùc nhnhau ®èi víi c¸c bµi to¸n cïng lo¹i, cã cïng miÒn ¸p dông thuËt to¸n. ThuËt to¸n Hooc-ne cã tÝnh hµng lo¹t trªn tËp số thực R v bÊt kì ®a thøc ®¹i sè bËc nµo. ThuËt to¸n Giải phương trình bậc 2 không cã tÝnh hµng lo¹t nÕu sè liÖu g¸n cho a, b,c nhËp tõ bµn phÝm. Ch¼ng h¹n khi nhËp a=0 hoÆc a kh«ng phải lµ sè . 152
- TÍNH KHAÛ THI ThuËt to¸n phải bao gåm những thao t¸c mµ m¸y cã thÓ thùc hiÖn ®îc. Máy tính chØ cã thÓ thùc hiÖn ®îc những phÐp to¸n sè häc, c¸c phÐp so s¸nh, c¸c phÐp logic, c¸c phÐp nhËp xuÊt th«ng tin tiªu chuÈn. ThuËt to¸n Hooc-ne cã tÝnh khả thi. ThuËt to¸n Giải phương trình bậc 2 kh«ng cã tÝnh khả thi trong trênghîp DELTA > 0 vì m¸y kh«ng thÓ thùc hiÖn phÐp tÝnh khai căn DELTA. 153
- TÍNH ÑAÀY ÑUÛ-VEÙT CAÏN ThuËt to¸n phải vÐt ®îchÕt c¸c tình huèng, c¸c khả năng cã thÓ xẩy ra, kh«ng bá sãt bÊt kỳ mét trênghîp nµo trong miÒn ¸p dông. ThuËt to¸n Hooc-ne v Giải phương trình bậc 2 kh«ng cã tÝnh ®Çy ®ñ nÕu dữ liÖu nhËp tõ bµn phÝm 154
- TÍNH ÑUÙNG ÑAÉN ThuËt to¸n phải cho kÕt quả ®óng cña bµi to¸n nghÜa lµ phải ®îc chøng minh vÒ mÆt to¸n häc . ThuËt to¸n tìm béi sè chung nhá nhÊt cña hai sè nguyªn d¬ng a,b ký hiÖu c=BSCNN(a,b) : -B1 : NÕu a = 1 thì c = b , dõng NÕu b = 1 thì c = a , dõng -B2 : NÕu a >1 vµ b >1 thì c = a*b , dõng Cã thÓ kiÓm tra 100 trênghîp cña a, b ®Òu cho kÕt qủa ®óng, nhng víi a = 4, b = 2 thì sai. ThuËt to¸n này kh«ng cã tÝnh ®óng ®¾n trªn N 155
- MOÄT THUAÄT TOAÙN PHAÛI THOAÛ MAÕN ÑOÀNG THÔØI CAÙC TÍNH CHAÁT TREÂN 156
- CAÁU TRUÙC CÔ BAÛN CUÛA THUAÄT TOAÙN 157
- CAÁU TRUÙC TUAÀN TÖÏ THAO TÁC 1 THAO TÁC 2 THAO TÁC 3 158
- CAÁU TRUÙC REÕ NHAÙNH ĐIỀU KIỆN THAO TÁC 1 THAO TÁC 2 159
- CAÁU TRUÙC VOØNG LAËP THAO TÁC ĐIỀU KIỆN THAO TÁC 160
- CAÙC PHÖÔNG PHAÙP BIEÅU DIEÃN THUAÄT TOAÙN 161
- 1) Dïng ng«n ngữ mẹ đẻ hoặc ngôn ngữ mã giả 2) Ng«n ngữ lu ®å 3) Ng«n ngữ lËp trình BiÓu diÔn thuËt to¸n b»ng ng«n ngữ lËp trình chÝnh lµ thảo ch¬ng, môc tiªu quan träng trong Tin häc. 162
- Ngoân ngöõ maõ giaû ThuËtTo¸nPh¬ngTrinhBËcHai; BiÕn A,B,C,DELTA,X1,X2 : SèThùc ; B¾tĐÇu NhËp A,B,C; DELTA:=B*B-4*A*C; NÕu DELTA <0 Thi XuÊt 'Ph¬ng trinh v« nghiÖm '; Dõng; NÕu DELTA =0 Thi X1:=(-B/2/A); X2:=X1; XuÊt 'NghiÖm kÐp X1,X2 '; Dõng; NÕu DELTA =0 Thi X1:=(-B-CanBËcHai(DELTA))/2/A; X2:=(-B+CanBËchH(DELTA))/2/A; XuÊt 'NghiÖm ph©n biÖt X1,X2 '; Dõng; KÕtThóc. 163
- BEGIN Löu ñoà NhËp A,B,C DELTA =B*B-4*A*C X1=X2=-B/2/A V¤ NGHI£M DELTA THùC ? X1= X2= IN KÕt QUa END 164
- Ngoân ngöõ laäp trình PASCAL PROGRAM Phuongtrinh BacHai; USES Crt; LABEL 20; VAR a, b, c : Real; Delta, X1, X2: Real; BEGIN 20 : Clrscr; GoTOXY(10,4); Writeln(' Giai phuong trinh bac hai'); GoTOXY(10,5); Writeln(' '); Write('Ban hay nhap vao gia tri cua A : '); Readln(a); IF a = 999999999 THEN Halt; IF a = 0 THEN BEGIN Writeln(' a khong hop le !'); Delay(500); GOTO 20; END; 165
- Write('Ban hay nhap vao gia tri cua B: '); Readln(b); Write('Ban hay nhap vao gia tri cua C: '); Readln(c); Delta := spr(b)- 4*a*c; IF Delta 0 THEN BEGIN Writeln('Phuong trinh coù 2 nghiem : '); X1 := (-b+sqrt(delta))/(2*a); X2 := (-b-sqrt(delta))/(2*a); Writeln(' X1 = ', X1: 9 : 2); Writeln(' X2 = ', X2: 9 : 2); END; Readln; END. 166
- THUËT GI¶I Kh¸i niÖm thuËt to¸n đã trình bày chÝnh lµ c¸nh cöa khÐp kÝn cho viÖc gỉai c¸c bµi to¸n vì: -NhiÒu bµi to¸n kh«ng tháa c¸c ®Æc trng c¬ bản cña thuËt to¸n. -Cã nhiều bµi to¸n cha ìmt ra thuËt to¸n hoÆc cha chøng minh ®îc lµ cã thuËt to¸n hay kh«ng. Cã những bµi to¸n cã thuËt to¸n nhng khã thùc hiÖn hoÆc kh«ng thùc hiÖn ®îc 167
- · Cã những bµi to¸n ®îcgi ải tuy vi ph¹m c¸c quy ®Þnh cña thuËt to¸n nhng lêi giải vÉn ®îc thùc tiÔn chÊp nhËn THUẬT GIẢI CŨNG LÀ THUẬT TOÁN NHƯNG MỞ RỘNG CHO CÁC ĐIỀU KIỆN 168
- NHỮNG MỞ RỘNG CHO CÁC ĐIỀU KIỆN · Më réng tÝnh x¸c ®Þnh TÝnh x¸c ®Þnh thùc chÊt lµ tÝnh ®¬n trÞ cña c¸ch giải cña mét thuËt to¸n vµ sù râ rµng tèi ®a. Trong thùc tÕ cã nhiÒu bµi to¸n vi ph¹m tÝnh x¸c ®Þnh mµ vÉn cho kÕt qủa. Nh vËy thay cho viÖc x©y dùng toµn bé qu¸ trình giải chØ cÇn chØ ra c¸ch chuyÓn tõ bíc i sang bíc i+1. C¸ch gỉai ngÉu nhiªn, ®Ö quy lµ më réng tÝnh x¸c ®Þnh 169
- Më réng tÝnh ®óng ®¾n TÝnh ®óng ®¾n ®îchiÓu lµ cho kÕt quả ®óng. Nhngtrong thùc tÕ thì sè gÇn ®óng lµ cã thÓ chÊp nhËn. Ngoµi ra dïng c¸ch gỉai heuristic ®¬n giản, ®éc ®¸o vÉn cã thÓ cho kÕt qủa mét c¸ch s¸ng t¹o. 170
- NAÊM BÖÔÙC GIAÛI BAØI TOAÙN TREÂN MAÙY TÍNH a) Bíc 1 Nghiªn cøu kÜ néi dung, yªu cÇu cña bµi to¸n vµ tìm ph¬ngph¸p, thuËt to¸n giải bµi to¸n Víi bµi to¸n lín, phøc t¹p viÖc tìm ph¬ng ph¸p vµ thuËt to¸n rÊt khã khăn. NhiÒu trênghîp phải cã sù céng t¸c, gióp ®ì cña c¸c chuyªn gia vÒ ph¬ng ph¸p tÝnh to¸n vµ thuËt to¸n . b) Bíc 2 DiÔn tả thuËt to¸n b»ng lu®å hoÆc b»ng ng«n ngữ Mô tả thuật toán. 171
- c) Bíc 3 DiÔn tả thuËt to¸n b»ng b»ng ng«n ngữ LËp trình Đ©y lµ c«ng viÖc chuyÓn lu®å hoÆc ng«n ngữ Mô tả thuật toán thµnh ng«n ngữ lËp trình. Qu¸ trình nµy gäi lµ thảo ch¬ng . d) Bíc 4 Ch¹y thö vµ söa lçi. Bícnµy cã thÓ thùc hiÖn xen kÏ trong bíc3 vµ thùc hiÖn nhiÒu lÇn víi nhiÒu ngêikh¸c nhau nh»m ph¸t hiÖn tèi ®a c¸c sai sãt . Phải söa hÕt tÊt cả c¸c lçi dï nhá nhÊt. 172
- e) Bíc 5 иnh gi¸ sù ®óng ®¾n vµ ®é tin cËy cña kÕt qña.ViÖc ®¸nh gi¸ nµy thêng dùa trªn : - ý nghÜa thùc tiÔn cña bµi to¸n - Kinh nghiÖm dù ®ãan kÕt qña cña ngêi giải - So s¸nh kÕt qña víi kÕt qña cña bµi to¸n ®· cã lêi giai ®óng - Giải bµi to¸n trong những trêng hîp ®Æc biÖt, trêng hîp thu gän dÔ thÊy kÕt qña lµ ®óng hay sai. NÕu kÕt quả sai phải rµ so¸t l¹i tõ bíc1 và cã thÓ sai tõ thuËt to¸n. C«ng viÖc tìm lçi sai vµ söa lçi cña thuËt to¸n rÊt khã NÕu kÕt qủa tìm ®îclµ ®óng ®¾n vµ tin cËy, ghi ch¬ngtrì nh lªn ®Üa ®Ó lu . 173
- CAÙC PHÖÔNG PHAÙP THOÂNG DUÏNG • PH¦¬ng ph¸p ®óng • Ph¬ng ph¸p gÇn ®óng - ph¬ng ph¸p tÝnh • Ph¬ng ph¸p ngÉu nhiªn • Ph¬ng ph¸p kinh nghiÖm HEURISTIC 174