Chương 4 - Lập Trình

Chia sẻ: Pacific Ocean | Ngày: | Loại File: PDF | Số trang:17

0
77
lượt xem
42
download

Chương 4 - Lập Trình

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'chương 4 - lập trình', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Chương 4 - Lập Trình

  1. 14/9/2009 L p trình — T ng quan — Phương pháp l p trình Chương 4 — Ngôn ng l p trình L p trình — Phong cách l p trình — K thu t l p trình — L p trình hư ng hi u qu — T ng k t T ng quan L p trình – NNLT t t Ngôn ng l p trình t t — D d ch thi t k sang chương trình — T p trung vào nhu c u xác đ nh d án phát tri n c a — V lý thuy t, vi c sinh chương trình g c t m t đ c t ng ph n m m riêng. t chi ti t nên là tr c ti p. — Có th thi t l p đư c m t t p h p t ng quát nh ng — Tính d d ch thi t k sang chương trình s cho phép yêu c u như sau: m t ngôn ng cài đ t tr c ti p cho các k t c u có — D d ch thi t k sang chương trình c u trúc, các c u trúc d li u ph c t p, các vào/ra đ c bi t, kh năng thao tác bit và các đ i tư ng. — Có trình biên d ch hi u qu , — Làm cho vi c d ch t thi t k sang chương trình — Kh chuy n chương trình g c g c d hơn nhi u. — Có s n công c phát tri n — D b o trì 1
  2. 14/9/2009 L p trình – NNLT t t L p trình – NNLT t t — Có trình biên d ch hi u qu — Kh chuy n chương trình g c — M c d u nh ng ti n b nhanh chóng trong t c đ — Có th đư c chuy n t b x lý này sang b x lý x lý và m t đ nh đã b t đ u làm gi m nh nhu khác và t trình biên d ch n sang trình biên d ch c u chương trình siêu hi u qu , nhi u ng d ng v n kia v i r t ít ho c không ph i s a đ i gì. còn đòi h i các chương trình ch y nhanh, g n (yêu — Không thay đ i khi môi trư ng c a nó thay đ i c u b nh th p). (như vi c cài đ t b n m i c a h đi u hành). — Các ngôn ng v i trình biên d ch t i ưu có th là — Có th đư c tích h p vào trong các b trình ph n h p d n n u hi u năng ph n m m là yêu c u ch m m khác nhau v i ít hay không c n thay đ i gì vì ch t. các đ c trưng c a ngôn ng l p trình. L p trình – NNLT t t L p trình – NNLT t t — Có s n công c phát tri n — Vi c b o trì đư c ti n hành khi ngư i ta hi u đư c — Làm ng n b t th i gian c n đ sinh ra chương trình thi t k chi ti t ph n m m và cu i cùng chương g c và có th c i thi n ch t lư ng c a chương trình. trình g c v n ph i đư c đ c và s a đ i. — Trong th c t , khái ni m v môi trư ng phát tri n — Tính d d ch thi t k sang chương trình là m t y u ph n m m t t (bao hàm c các công c ) đã đư c t quan tr ng đ d b o trì chương trình g c. Bên th a nh n như nhân t đóng góp chính cho công c nh đó, các đ c trưng v c u t o c a ngôn ng ngh ph n m m thành công. (như chi u dài c a tên g i, đ nh d ng nhãn, đ nh — D b o trì nghĩa ki u, c u trúc d li u) có nh hư ng m nh — Có t m qu n tr ng ch ch t cho t t c các n l c đ n tính d b o trì. phát tri n ph n m m. 2
  3. 14/9/2009 Phương pháp l p trình L p trình – Phương pháp LT — L p trình tu n t (tuy n tính) L p trình tu n t (tuy n tính) — L p trình có c u trúc (th t c) — Không có/thi u các l nh có c u trúc (for, while, do — L p trình hư ng ch c năng while) — L p trình hư ng đ i tư ng — L m d ng các l nh GOTO — L p trình Logic — Thi u kh năng khai báo bi n c c b — L p trình hàm — Đ ghép n i cao — Do đó chương trình khó hi u, khó s a, d sinh l i — Vd: Fortran, Assembler, Basic,... L p trình – Phương pháp LT L p trình – Phương pháp LT — VD v chương trình Fortran L p trình c u trúc DIMENSION A(10) — S d ng các l nh có c u trúc (for, while, do while) …. — H n ch /c m dùng GOTO Max=A(1) — S d ng chương trình con, bi n c c b Do 101 I=2,10 — Do đó d hi u hơn, an toàn hơn If (Max .GT. A(I) GOTO 101 — VD: Pascal, C,… Max=A(I) 101 CONTINUE 3
  4. 14/9/2009 L p trình – Phương pháp LT L p trình – Phương pháp LT L p trình hư ng ch c năng L p trình hư ng đ i tư ng — D a trên nguyên t c ghép n i d li u — Che d u thông tin — trao đ i d li u b ng tham s và giá tr tr l i — Thao tác v i d li u qua các giao di n xác đ nh — lo i b hoàn toàn d li u dùng chung — K th a — Do đó lo i b các hi u ng ph khi s a đ i các — C c b hơn mođun chương trình — D tái s d ng hơn — Nâng cao tính tái s d ng — Thu n ti n cho các ng d ng l n — VD: Modula, .. — VD: SmallTalk, C++, Java, C# L p trình – Phương pháp LT L p trình – Phương pháp LT L p trình Logic — Ví d v prolog — Tách tri th c v bài toán kh i k thu t l p trình “Là ngư i thì ph i ch t, Scrate là ngư i nên ph i ch t” — Mô t tri th c PhaiChet(x):-Nguoi(x). — Các qui t c Nguoi(socrate) — Các s th c Nguoi(ba) — M c tiêu Nguoi(tu) Goal Phaichet(socrate) — H th ng t ch ng minh Yes — tìm đư ng đi đ n m c tiêu Goal PhaiChet(Ai) — Không có khái ni m v vùng nh , bi n Ai=socrate — Bi n là bi n như toán h c. Ai=ba — Ví d : Prolog Ai=tu 4
  5. 14/9/2009 L p trình – Phương pháp LT L p trình – Phương pháp LT L p trình Hàm — Ví d v lisp — S tr v v i toán h c (DEFUN LuyThua (M N) — Hàm ph i là m t hàm toán h c (COND ((EQ N 0) 1) — M i mođun chương trình là m t hàm (T(TIMES M (LuyThua M (DIEF N 1)))))) — K t h p nhi u hàm thành m t hàm l n hơn — Ví d : Lisp Ngôn ng l p trình L p trình – Ngôn ng l p trình — Đ c trưng c a ngôn ng Đ c trưng c a ngôn ng — Mi n ng d ng c a ngôn ng — Năng l c (ki u bi n, các c u trúc) — L a ch n ngôn ng — Tính kh chuy n — M c đ h tr c a các công c 5
  6. 14/9/2009 L p trình – Đ c trưng c a NN L p trình – Đ c trưng c a NN Năng l c c a ngôn ng Tính kh chuy n — Có c u trúc, câu l nh phong phú — Thay đ i ph n c ng — H tr nhi u ki u d li u — Thay đ i OS — H tr con tr , đ qui — Nh n xét: — H tr hư ng đ i tư ng — C kh chuy n mã ngu n gi a các h UNIX — Thư vi n phong phú — Java kh chuy n — Do đó nên ch n nn b c cao — Các ngôn ng thông d ch (script) kh chuy n L p trình – Đ c trưng c a NN L p trình – Đ c trưng c a NN H tr c a công c Mi n ng d ng — Trình biên d ch hi u qu — Ph n m m h th ng: — Biên d ch t c đ cao — Hi u qu , v n năng, d m r ng — Kh năng t i ưu cao — Vd: C — Khai thác các t p l nh, ki n trúc ph n c ng — H th i gian th c: C, C++, Ada, Assembler m i — Ph n m m nhúng: C++, Java — Các công c tr giúp hi u qu — Ph n m m khoa h c k thu t: — Editor, debugger, linker, make... — Tính toán chính xác, thư vi n toán h c m nh, — IDE (Integrated Develop Environment) — D dàng song song hóa — Fortran v n ph bi n, Matlab,.. 6
  7. 14/9/2009 L p trình – Đ c trưng c a NN L p trình – Đ c trưng c a NN — Ph n m m nghi p v : L a ch n ngôn ng — CSDL: Oracle, DB2, SQL Server, MySQL... — D a vào: — Ngôn ng : FoxPro, COBOL, VB, VC++ — Đ c trưng c a ngôn ng — Trí tu nhân t o: — Mi n ng d ng c a ngôn ng — Lisp, Prolog, OPS5,... — Năng l c, kinh nghi m c a nhóm phát tri n — L p trình Web/CGI: — Yêu c u c a khách hàng — Perl, ASP, PHP, Java, Java script, Python.. — M t s nh n xét — Phát tri n ph n m m h th ng : C — Th i gian th c Ada, C, Assembler — Phân m m nhúng Java L p trình – Đ c trưng c a NN L p trình – Đ c trưng c a NN — M t s nh n xét (tt) nh hư ng c a NNLT và CNPM — Khoa h c k thu t : Fortran, Algol — Thi t k ph n m m đư c thi t l p theo cách đ c — Kinh doanh : Cobol l p v i các đ c trưng ngôn ng l p trình — Trí tu nhân t o : Lisp, Prolog — Thu c tính ngôn ng đóng m t vai trò trong ch t — Ph n m m hư ng đ i tư ng : Smalltalk, lư ng c a thi t k đư c cài đ t và nh hư ng t i C++, Java, Eiffel, Object- PASCAL, Flavos cách thi t k đư c xác đ nh. và nhi u ngôn ng khác. — Thi t k d li u cũng có th b nh hư ng b i các — Web: ASP, JavaScript, PERL… đ c trưng ngôn ng . — Các đ c trưng c a ngôn ng cũng nh hư ng t i ki m th ph n m m 7
  8. 14/9/2009 Phong cách l p trình L p trình – Tài li u Phong cách l p trình t t — Tài li u bên trong chương trình — Tuân theo các chu n thông d ng — Ch n l a các tên g i đ nh danh — Chu n đư c ch p nh n r ng rãi hơn d hi u hơn — Tên g i có nghĩa cũng làm tăng tính d hi u — Chú gi i đ y đ m i khi không tuân theo chu n — Đ t tên bi n, tên hàm có nghĩa, g i nh Phong cách l p trình — S d ng các ký hi u, t có nghĩa làm cho d — Tài li u bên trong chương trình đ c. Ví d : dùng DateOfBirth ho c — Phương pháp khai báo d li u date_of_birth không vi t dateofbirth — Cách xây d ng câu l nh — Tránh đ t tên quá dài — Các kĩ thu t vào/ra — Th ng nh t cách dùng. Ví d I cho vòng l p, Tmp cho các giá tr t m th i... — X lý l i L p trình – Tài li u L p trình – Tài li u — Chú thích đ u chương trình — Các chú thích 1. M t phát bi u v m c đích ch rõ ch c năng mô đun. — Cung c p cho ngư i phát tri n m t ý nghĩa 2. Mô t giao di n bao g m: truy n thông v i các đ c gi khác v chương — M t m u cách g i trình g c — Mô t v d li u — Cung c p m t hư ng d n rõ r t đ hi u trong — Danh sách t t c các mô đun thu c c p pha cu i cùng c a công ngh ph n m m - b o 3. Th o lu n v d li u thích h p (nh- các bi n quan tr ng trì và nh ng h n ch , gi i h n v cách dùng chúng) và các thông tin quan tr ng khác. — Thư ng g m 2 lo i: 4. L ch s phát tri n bao g m: — Chú thích m đ u — Tên ngư i thi t k modul (tác gi ). — Chú thích ch c năng — Tên ngư i xét duy t và ngày tháng. — Ngày tháng s a đ i và mô t s a đ i. 8
  9. 14/9/2009 L p trình – Tài li u L p trình – Khai báo — T ch c chương trình — Phương pháp khai báo d li u — Chia thành nhi u mô đun — Th t khai báo d li u nên đư c chu n hóa — Không vi t mô đun quá dài — Các tên bi n ngoài vi c có nghĩa còn nên mang — Không quá 2 trang màn hình thông tin v ki u c a chúng — T o ra các mô đun th c p đ gi m đ dài t ng vd: strHoTen, intStt hàm — C n ph i chú gi i v m c đích đ i v i các bi n — Không dùng quá nhi u bi n c c b quan tr ng, đ c bi t là các bi n t ng th . — Không th theo dõi đ ng th i ho t đ ng c a nhi u — Các c u trúc d li u nên đư c chú gi i đ y đ v bi n c u trúc và ch c năng, và các đ c thù v s d ng. — (vd. không quá 7 bi n c c b ) L p trình – Câu l nh L p trình – Câu l nh — Xây d ng câu l nh — Tránh các c u trúc ph c t p — Các câu l nh ph i mô t c u trúc — Các l nh if l ng nhau T t l , d đ c, d hi u — — Đi u ki n ph đ nh if not — Làm đơn gi n các l nh — Dùnh d u ngo c đ làm sáng t bi u th c Logic — M i l nh trên m t dòng hay s h c — Tri n khai các bi u th c ph c t p — Ch dùng các tính năng chu n c a ngôn ng — Tránh các đi u ki n ph c t p — H n ch truy n tham s là k t qu c a hàm, bi u th c (vd : printf("%s", strcpy(des, src));) 9
  10. 14/9/2009 L p trình – Vào/ra L p trình – X lý l i — K thu t vào/ra c a các môđun: nên tuân th theo — Có th phát hi n l i trong khi th c hi n m t s hư ng d n sau: — L i chia 0 — Làm h p l m i cái vào. — L i input/output, … — Ki m tra s tin c y c a các t h p kho n m c vào — X lý l i quan tr ng. — Nh t quán trong x lý — Gi cho đ nh d ng cái vào đơn gi n. — Phân lo i l i; th ng nh t đ nh d ng thông báo,… — Dùng các ch báo cu i d li u thay vì yêu c u — Phân bi t output và thông báo l i ngư i dùng xác đ nh “s các kho n m c”. — Các hàm thư vi n nên tránh vi c t x lý t đưa ra — Gi cho đ nh d ng cái vào th ng nh t khi m t ngôn thông báo l i ng l p trình có các yêu c u đ nh d ng nghiêm ng t. L p trình – X lý l i L p trình – X lý l i — Phân bi t Output và thông báo l i — Hàm thư vi n tr l i tr ng thái l i, không t x lý — Output là d li u, còn đư c dùng đ làm input cho — Ngư i vi t và ngư i s d ng thư vi n là khác nhau ph n m m khác — Ngư i s d ng thư ng mu n có cách x lý riêng — Thông báo (l i) là các thông tin nh t th i, tr ng thái — Tr tr ng thái b ng giá tr tr l i h th ng, l i và cách kh c ph c — Tr tr ng thái b ng tham s — OS thư ng cung c p 3 lu ng d li u chu n — Tr l i b ng ném ngo i l (trong các OOL) — stdin (cin): input chu n (bàn phím) — stdout (cout): output chu n (màn hình) — stderr (cerr): lu ng thông báo l i chu n (không đ nh hư ng l i đư c) 10
  11. 14/9/2009 L p trình – X lý l i L p trình – X lý l i — X lý l i — Ví d : Ngo i l (ném ngo i l ) — Ngo i l : double MyDivide(double num, double denom) — Là cách th c x lý l i ti n ti n trong các ngôn { ng hư ng đ i tư ng if (denom == 0.0) { — môđun x lý ném ra m t ngo i l (đ i tư ng throw invalid_argument(”The denom cannot be ch a thông tin l i) 0.”); — môđun đi u khi n b t ngo i l (n u có) } — Tách ph n x lý l i kh i ph n cài đ t thu t toán else { thông thư ng, làm cho chương trình d đ c hơn return num / denom; — D dùng hơn, an toàn hơn }} L p trình – X lý l i L p trình tránh l i — Ví d : Ngo i l (b t ngo i l ) — M c tiêu: xây d ng h th ng tin c y try { — Tránh l i: Ph n m m đư c phát tri n theo cách đ result = MyDivide(x, y); nó không ch a l i } — Phòng th : Luôn gi đ nh r ng h th ng có l i. catch (invalid_argument& e) { Chương trình ch a mã đ phát hi n và có th quay tr v tr ng thái trư c khi có l i. cerr
  12. 14/9/2009 L p trình – L p trình tránh l i L p trình – L p trình tránh l i — K thu t l p trình t t d a trên các y u t : — Tránh các c u trúc nguy hi m — L p trình có c u trúc — S th c — Các phép toán đư c làm tròn, k t qu không chính xác — Dùng các l nh có c u trúc tuy t đ i — Mođun hóa — So sánh (b ng nhau) hai s th c là không kh thi — H n ch dùng các c u trúc nguy hi m — Con tr — Đóng gói/che d u thông tin — Khái ni m m c th p — Có kh năng gây l i nghiêm tr ng — Xây d ng ki u d li u tr u tư ng — D nh m — H n ch thao tác tr c ti p lên thu c tính double r; int* n = &r; L p trình – L p trình tránh l i L p trình – L p trình phòng th — Defensive programming — C p phát b nh đ ng — D đoán kh năng xu t hi n l i — Quên c p phát — Kh c ph c l i — Quên gi i phóng — Lưu tr ng thái an toàn — Ch nên dùng v i ngôn ng hư ng đ i tư ng — Quay l i tr ng thái an toàn g n nh t (C++) — Nhi u l nh có kh năng sinh l i — Đ qui — L nh vào/ra — Khó hi u — Các phép toán — D nh m đi u ki n d ng — Thao tác v i b nh — Truy n tham s sai ki u 12
  13. 14/9/2009 L p trình – L p trình phòng th L p trình – L p trình phòng th — L nh vào ra — Thao tác b nh — D li u không h p l — Quên c p phát, quên gi i phóng b nh — tràn b đ m (ki u ký t ) — Thi u b nh — l i thao tác file (sai tên, chưa đư c m ,…) — Sai đ a ch , tràn b nh — Các phép toán — L i chia 0 — Tràn s — So sánh s th c (b ng nhau) L p trình – Th l i L p trình – Th l i — N-Version — Th l i — S d ng nhi u nhóm l p trình — Fault tolerance programming — So sánh k t qu — Phát hi n l i — Cùng thu t toán thì có xu hư ng m c cùng l i — Đ nh ra m c đ thi t h i — H i ph c sau khi g p l i — Ch a l i 13
  14. 14/9/2009 L p trình – Th l i L p trình hư ng hi u qu — Recovery blocks L p trình hư ng hi u qu khi th c hi n chương trình — S d ng các thu t toán khác nhau — Tính hi u qu chương trình — Liên h tr c ti p v i tính hi u qu c a thu t toán đư c — Ki m tra tính h p l c a k t qu xác đ nh trong thi t k chi ti t. — Tuy nhiên, phong cách l p trình có th có m t tác đ ng đ n t c đ th c hi n và yêu c u b nh . — Các hư ng d n: — Đơn gi n hóa các bi u th c s h c và lôgic. — Tính c n th n t ng chu kì l ng nhau đ xác đ nh li u các câu l nh hay bi u th c có th đư c chuy n ra ngoài hay không L p trình - hi u qu L p trình - hi u qu — Khi có th , hãy tránh dùng m ng nhi u chi u — Hi u qu b nh — Khi có th hãy tránh vi c dùng con tr và danh — Tính hi u qu b nh ph i đư c tính vào đ c trưng sách ph c t p phân trang c a h đi u hành. Nói chung, tính c c — Dùng các phép toán s h c “nhanh” b c a chương trình hay vi c b o trì lĩnh v c ch c — Không tr n l n các ki u d li u, cho dù ngôn ng năng qua các k t c u có c u trúc là m t phương có cho phép đi u đó pháp tuy t v i làm gi m vi c phân trang và do đó làm tăng tính hi u qu . — Dùng các bi u th c s h c và logic b t kì khi nào có th đư c 14
  15. 14/9/2009 L p trình - hi u qu L p trình - hi u qu — Hi u qu b nh — Hi u qu vào/ra — S các yêu c u vào/ra nên gi m c t i thi u — H n ch b nh trong phát tri n ph n m m nhúng là m i quan tâm r t th c t , m c d u b nh giá — M i vi c vào/ra nên qua b đ m đ làm gi m phí th p, m t đ cao v n đang ti n hóa nhanh chóng. t n liên l c. — N u yêu c u h th ng c n t i b nh t i thi u (như — V i b nh ph (như đĩa) nên l a ch n và dùng s n ph m giá th p, kh i lư ng l n) thì trình biên phương pháp thâm nh p đơn gi n nh t ch p nh n d ch ngôn ng c p cao ph i đư c trù tính c n th n đư c. v i tính năng nén b nh , hay như m t phương k — Nên x p kh i vào/ra v i các thi t b b nh ph . cu i cùng, có th ph i dùng t i h p ng . — Vi c vào/ra v i thi t b cu i hay máy in nên nh n di n các tính năng c a thi t b có th c i ti n ch t lư ng hay t c đ . L p trình - hi u qu L p trình - hi u qu — Ví d : — C2 (hi u qu hơn) Tính 1!,2!,3!...n! S d ng tính ch t k!=(k-1)!*k. đ ph c t p ch còn — C1 (gi i thông thư ng) o(n) Vi t hàm Float GiaiThua(int k) GT=1 S d ng hàm n y trong vòng l p L p I=1,..,n L p I=1,,n GT=GT*I In GiaiThua(I) In GT Cu i l p Cu i L p Cách n y không hi u qu vì đ ph c t p o(n2) 15
  16. 14/9/2009 L p trình - hi u qu L p trình - hi u qu — Ví d 2: — Cách hi u qu hơn: TínhS(n,x)=1+x/1!+x2/2!+..+xn/n! xét ak=xk/k! ⇒ ak+1=ak*x/(k+1) — Cách thông thư ng: a0=x0/0!=1 Chia nh v n đ , cài đ t các hàm cho t ng công vi c S=1; a=1 ∀k=0,1,2,..,n L p I=2..,n tính xk a=a*x/(I+1) tính k! S=S+a Đ ph c t p là o(n2) Cu i L p đ ph c t p o(n) L p trình - hi u qu L p trình - hi u qu — Ví d 3 — Các c i ti n C0 C1 Ck Tính n, n,.., n khi bi t n — C1 (hi u qu ) Cách thông thư ng: — Dùng m ng n+1 ph n t - Vi t hàm tính giai th a k a[0],a[1],..,a[n] - Tính t h p Ckn=n!/(k!*(n-k))! đ tính và lưu a[i]=i! Đ ph c t p o(n2) S d ng vòng l p n tính Ckn Đ ph c t p o(αn) v i α h ng 16
  17. 14/9/2009 L p trình - hi u qu T ng k t — C2 (hi u qu hơn) — Bư c l p trình là m t ti n trình chuy n hóa thi t k Ck Ta có n=n!/(k!*(n-k)!) chi ti t thành chương trình Ck+1n=n!/((k+1)!*(n-k-1)!)=n!/(k!*(k+1)*(n-k+1)!) — Các đ c trưng c a ngôn ng l p trình có nh hư ng ⇒Ck+1n/Ckn= (n-k)/(k+1) ⇒Ck+1n=((n-k)/(k+1))*Ckn l n C0n=1 — Phong cách l p trình quy t đ nh tính d hi u c a chương trình g c S d ng vòng l p đ tính — L p trình c n hư ng t i hi u qu th c hi n Đ ph c t p o(n) và không hao b nh vì không dùng m ng 17

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản