Thiết kế trang và lập trình - Tổng lượng tri thức cốt lõi và thực hành

261 380 0
Thiết kế trang và lập trình - Tổng lượng tri thức cốt lõi và thực hành

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Thiết kế trang và lập trình - Tổng lượng tri thức cốt lõi và thực hành

c Lc 1 Cu trúc d liu 1 1.1 Cu trúc d liu là gì? 2 1.2 Cu trúc d liu c s 3 1.2.1 Kiu d liu c s 3 1.2.2 Kiu có cu trúc 4 1.2.3 Kiu d liu tru tng 7 1.3 Cu trúc d liu hng vn  8 1.3.1 Cu trúc danh sách 8 1.3.2 Ngn xp 10 1.3.3 Hàng i 11 1.3.4 Cu trúc cây 12 1.3.5 Bm 17 2 Thut toán 23 2.1 C s v thut toán 24 2.1.1 Thut toán là gì? 24 2.1.2 Thut toán cu trúc d liu 26 2.2 Các thut toán 30 2.2.1 Thut toán duyt 30 2.2.2 Thut toán sp xp 34 2.2.3 Thut toán  qui 49 2.2.4 X lí xâu kí t 51 2.2.5 X lí tp 55 2.2.6 V hình 63 2.2.7  th 67 2.2.8 Tính toán s 71 2.2.9 Thut toán i sánh 78 2.2.10 Thut toán xp x xác sut 82 2.3 ánh giá thut toán 87 2.3.1 ánh giá theo  phc tp tính toán 87 2.3.2 ánh giá theo tính hp l 88 2.3.3 ánh giá theo biu din 88 2.4 Cách thit k thut toán 89 3 Thit k trong 95 3.1 Thit k trong là gì? 96 3.1.1 Mc ích ca thit k trong nhng m cn lu ý 96 3.1.2 Th tc thit k trong 97 3.2 Phân hoch cu trúc chc nng 101 3.2.1 Các n v ca vic phân hoch cu trúc chc nng 101 3.2.2 Các th tc phân hoch cu trúc chc nng 103 3.2.3 Phng pháp thit k có cu trúc 109 3.3 Thit k d liu vt lí 112 3.3.1 Th tc thit k d liu vt lí 112 3.3.2 T chc d liu vt lí 117 3.4 Thit k vào ra chi tit 120 3.4.1 Thit k d liu vào chi tit 120 3.4.2 Thit k màn hình 123 2 Chng 1 Cu trúc d liu 3.4.3 Thit k d liu a ra chi tit 132 3.5 To ra dùng li các b phn 136 3.5.1 Khái nim v to ra dùng li các b phn 136 3.5.2 Dùng gói phn mm 136 3.6 To ra tài liu thit k trong 137 3.6.1 T chc tài liu thit k trong 137 3.6.2 Các m cn lu ý khi to ra tài liu thit k trong 139 3.6.3 Kim m thit k 140 4 Thit k chng trình 140 4.1 Mc ích nhim v ca thit k chng trình 144 4.1.1 Mc ích ca thit k chng trình 144 4.1.2 Nhim v thit k chng trình 145 4.2 Thit k có cu trúc cho chng trình 148 4.2.1 Th tc thit k có cu trúc 148 4.2.2 Các k thut phân hoch mô un n hình 151 4.2.3 Tiêu chí cho vic phân hoch mô un 160 4.2.4 Phân hoch chng trình 171 4.3 To ra c t mô un c t kim th 173 4.3.1 To ra c t mô un 173 4.3.2 To ra c t kim th 175 4.4 To ra tài liu thit k chng trình 177 4.4.1 To ra tài liu thit k chng trình ni dung 177 4.4.2 Nhng m cn lu ý khi to ra tài liu thit k chng trình 179 4.4.3 Hp kim m thit k 179 5 Thc hin chng trình 183 5.1 Lp trình 184 5.1.1 Mô thc lp trình 184 5.1.2 Phong cách lp trình 185 5.1.3 Dùng b x lí ngôn ng 186 5.1.4 Môi trng lp trình 187 5.2 Kim th 189 5.2.1 Tng quan v kim th 189 5.2.2 Kim thn v 190 5.2.3 Kim th tích hp 190 5.2.4 Kim th h thng 195 5.2.5 Các kim th khác 197 5.2.6 K hoch nhim v kim th 197 6 Cp nht vn hành phát trin h thng 204 6.1 Thit k chng trình 205 6.1.1 Thit k chng trình hng i tng 205 1 u trúc d liu c ích ca chng Vic chn cu trúc d liu thích hp nht th tc mô  d liu là mu cht  to ra chng trình hiu qu,  hiu. Chng này mô t các cu trúc d liu a dng bn cn m c xem nh bc u tiên  hc lp trình. • Hiu cách phân loi các cu trúc d liu a dng ‚ Hiu các kiu d liu c s thông dng nht và ng d liu ƒ Hiu các c trng c ch ca cu trúc d liu ng vn c dùng  gii quyt các bài toán c bit, cng nh cách dùng cu trúc d liu c s cho vic cài t chng trình 2 Chng 1 Cu trúc d liu 1.1 u trúc d liu là gì? p các d liu cùng mt loi c máy tính x lí c gi là "kiu d liu." Trong giai n thit k chng trình, cách thc d liu nên c biu din lp trình trong máy tính phi c xem xét cn thn,  có th chn c kiu d liu thích hp nht. Mt kiu d liu c biu din lp trình c gi là "cu trúc d liu." Hình 1-1-1 ch ra phân lp v các cu trúc d liu. Hình 1-1-1 Phân lp v các cu trúc d liu u trúc d liu c s có thc biu din trong hu ht tt c các ngôn ng lp trình. Cu trúc d liu hng vn  là cu trúc d liu có thc dùng mt cách có hiu qu gii quyt nhng vn  chuyên dng. Có mt s cu trúc d liu hng vn  mà không th c biu din trong ngôn ng lp trình. Trong trng hp ó, cu trúc d liu c sc dùng. u trúc  liu u trúc d liu hng n  (To ra t u trúc d liu c s) u trúc danh sách Ngn xp Hàng i u trúc cây m Kiu d liu  s Kiu con tr Kiu n Kiu nguyên Kiu thc Kiu kí t Kiu logic Kiu lit kê Kiu b phn Kiu có u trúc Kiu mng Kiu bn ghi u trúc d liu c s Kiu d liu tru tng 1.2 Cu trúc d liu c s 3 1.2 u trúc d liu c s 1.2.1 Kiu d liu c s Kiu d liu c s là tp các d liu riêng l thng c dùng  to ra chng trình. Nó c phân loi thành các kiu n con tr. (1) Kiu n Kiu n là kiu d liu c s nht. Khi dùng kiu n cho lp trình, kiu d liu thng c khai báo theo qui tc cú pháp ca ngôn ng. • Kiu nguyên Kiu nguyên biu din cho s nguyên, c biu din bên trong máy tính nh s nh phân theo s du phy tnh, không có ch s có ngha sau du chm thp phân. Giá tr ti a hay ti thiu ca kiu nguyên là n v ca d liu mà máy tính có th x lí vào mt lúc, và nó c xác nh bi chiu dài t. ‚ Kiu s thc Kiu s thc biu din cho s thc. Nó c dùng  biu din cho s du phy tnh du phy ng. ƒ Kiu kí t Kiu kí t biu din cho ch cái, s các kí hiu nh các kí t. Mt mã kí tc biu din nh s nh phân trong máy tính. „ Kiu logic Kiu logic c dùng  thc hin các phép toán logic nh các phép toán AND, OR và NOT. … Kiu lit kê Kiu lit c nh ngha nh kiu d liu ra tt c các giá tr có th ca bin. Trong trng hp kiu lit kê, có th k tên kiu s nguyên. † Kiu b phn Kiu b phn c dùng  xác nh mt tp con các giá tr nguyên thu bng cách hn ch các kiu d liu hin có. Kiu d liu có các gii hn trên di nh các ràng buc c i là kiu min b phn. (2) Kiu con tr Kiu con tr có a chc cp trong n v b nh chính. Nó c dùng  tham chiu ti các bin, các bn ghi tp hay các hàm. Nó c dùng cho Pascal C nhng không dùng cho FORTRAN COBOL. 4 Chng 1 Cu trúc d liu Hình 1-2-1 Hình nh v kiu con tr 1.2.2 Kiu có cu trúc u trúc d liu có cha mt cu trúc d liu c s hay bt kì kiu d liu c xác nh nào nh phn t ca nó (d liu), c gi là kiu có cu trúc. Kiu có cu trúc c phân loi thành kiu mng kiu bn ghi. (1) Kiu mng ng c gi là bng. Kiu mng là d liu có cu trúc có cha d liu thuc cùng kiu và kích c. Tng d liu cá nhân c gi là mt phn t mng, phn t bng hay phn t. Cách ng c mô t hoc cách d liu c b trí có thay i tu theo ngôn ng lp trình c dùng. • Mng mt chiu ng mt chiu có cu trúc d liu mà d liu c sp thành mng theo mt hàng.  xác nh mt phn t trong mng này, trc ht a vào du ngoc tròn m ( hay du ngoc vuông [ sau tên ca mng, ri a vào ch s du ngoc tròn óng ) hay du ngoc vuông óng ]. Ch s ch ra s th t tính tnh ca mng, ni phn t xác nh ó c nh v. ng "A" có s phn tc kí hiu là "i" c biu din là A (i). Hình 1-2-2 Mng mt chiu Th 1 th 2 th 3 … th I … Phn t Phn t Phn t … Phn t … A(1) A(2) A(3) … A(I) … ‚ Mng hai chiu t cu trúc d liu trong ó d liu c sp hàng theo c hai chiu ngang ng c i là mng hai chiu. D liu theo chiu ng c gi là ct d liu theo chiu ngang c gi là hàng.  xác nh phn t nào ó trong mng này, hai ch s tr nên cn thit: t ch s th t theo chiu ng (trên hàng nào) ni phn t xác nh ó c nh v và ch s kia ch ra s th t nào theo chiu ngang (trong ct nào) mà nó c nh v. Chng n, mng "A" c nh v hàng "i" ct "j" có thc din t là A (i, j). a ch ca bin "b"  liu Bin kiu con tr Bin "b" 1.2 Cu trúc d liu c s 5 Hình 1-2-3 Mng hai chiu (vi ba hàng hai ct) t 1 Hàng 1 A(1, 1) A(1, 2) A(2, 1) A(2, 2) A(3, 1) A(3, 2) Khi mng hai chiu c lu gi trong n v b nh chính, nó ly dng ca mng mt chiu. ng hai chiu c v trong Hình 1-2-3 ly dng ca mng mt chiu có sáu phn t. Nh c v trong Hình 1-2-4, d liu c lu gi theo kiu tun t hoc theo chiu ca hàng hoc theo chiu ca ct. Chiu theo ó d liu c lu gi thay i tùy theo trình biên dch a ngôn ng lp trình c dùng. Nói chung, d liu c lu gi theo chiu ng khi Fortran c dùng theo chiu ngang khi COBOL c dùng. Hình 1-2-4 Cách d liu ca mng hai chiu c lu gi trong n v b nh chính A(1,1) A(1,2) A(2,1) A(2,2) A(3,1) A(3,2) ƒ Mng ba chiu ng ba chiu có cu trúc d liu nhiu hn mng hai chiu. Nó có cu trúc ba chiu cha các t phng, các hàng ct cng nh các phn t. Bng vic xây dng mng ba chiu trong ng hai chiu, có th x lí mng ba chiu theo cùng cách nh mng hai chiu. ng 2 chiu  nh chính A(1,1) A(1,2) A(2,1) A(2,2) A(3,1) A(3,2) A(1,1) A(2,1) A(3,1) A(1,2) A(2,2) A(3,2)  liu c D liu c u tr lu tr theo hàng theo ct 6 Chng 1 Cu trúc d liu Hình 1-2-5 Xây dng mng ba chiu thành mng hai chiu ng nhiu chiu nh các mng bn, nm hay nhiu chiu cng có thc nh ngha. Tuy nhiên, có th có nhng gii hn nào ó v s chiu, tùy theo kiu ca ngôn ng lp trình hay trình biên dch. ng có thc phân loi thành mng tnh mng ng theo phng pháp c dùng  sit cht mt min. - Mng tnh: Mng mà vùng c yêu cu do chng trình xác nh - Mng ng: Mng mà vùng c yêu cu sc xác nh ra sau khi ch sc dùng cho vic to mng c cung cp qua mt biu thc biu thc ó c tính trong khi thc hin chng trình (2) Kiu bn ghi c du d liu kiu có cu trúc là cao cp hn trong vic d tham chiu thc hin thao tác trên các phn t, nó cng có nhc m  ch nó ch có th gii quyt d liu thuc cùng mt kiu. Do ó, d liu có cha các d liu vi kiu khác nhau phi ly dng ca d liu kiu bn ghi. Kiu bn ghi này cng còn c gi là kiu cu trúc. Hình 1-2-6 Kiu bn ghi Hình 1-2-6 ch ra cu trúc d liu ca kiu bn ghi. Mt bn ghi cha s hiu sinh viên (kiu nguyên), tên (kiu kí t) m (kiu nguyên). Mt d liu kiu bn ghi cha mt tp các n ghi có cùng nh dng này. Mc du d liu kiu bn ghi mt chiu có thc gii quyt A(1,1,1) A(1,1,2) A(1,2,1) A(2,2,2) A(1,3,1) A(1,3,2) A(1,1,1) A(1,1,2) A(1,2,1) A(1,2,2) A(1,3,1) A(1,3,2) A(2,1,1) A(2,1,2) A(2,1,1) A(2,1,2) A(2,2,1) A(2,2,2) A(2,3,1) A(2,3,2) t t phng Hàng t phng th hai t phng th nht  Tên m S Tên m sinh viên sinh viên n ghi (d liu v sinh viên) Kiu nguyên Kiu kí t (kiu xâu chui) Kiu sp xp 1.2 Cu trúc d liu c s 7 theo cùng cách nh mng mt chiu, tng d liu vn phi c t tên  nhn din vì tng phn t cha nhiu d liu. 1.2.3 Kiu d liu tru tng  liu cha cu trúc d liu nào ó kiu ca các phép toán c gi là kiu d liu tru ng.  truy nhp vào kiu d liu này, bn không cn bit v cu trúc bên trong ca nó. Tt  các d liu u c che du ngoi tr d liu bn truy nhp  tham chiu, thêm vào hay xoá i. u này c gi là che giu thông tin. Che giu thông tin hoc che giu d liu  c  kiu d liu c gi là bao bc d liu. Hình 1-2-7 Kiu d liu tru tng (Các phép toán + u trúc d liu) Chng trình t qu  liu <Cu trúc d liu tru tng> 8 Chng 1 Cu trúc d liu 1.3 u trúc d liu hng vn  Các cu trúc d liu hng vn  khác nhau có thc trù tính bng vic dùng các kiu ng, kiu con tr các cu trúc d liu c s khác. 1.3.1 u trúc danh sách Không ging kiu d liu c s gii quyt cho tng d liu riêng l, cu trúc danh sách cho phép d liu c móc ni ln nhau gii quyt c mt cc. D liu c b trí theo cu trúc danh sách này c gi là mt danh sách. (1) Cu trúc danh sách các ô ng vic dùng ch s cho tng phn t trong mng, có th truy nhp nhanh chóng vào bt kì phn t nào. Tng t nh vy, vic thay i d liu có thc thc hin d dàng. Nu bn chèn mt d liu vào âu ó trong mng, bn phi dch chuyn toàn b tng d liu sau ó lùi i mt v trí. Nu bn xoá mt d liu trong mng, tng t, bn phi dch chuyn toàn b ng d liu sau d liu b xoá ó nhích lên mt v trí. Hình 1-3-1 Chèn thêm mt phn t mng Không ging nh cu trúc kiu mng, cu trúc danh sách cho phép phn t d liu ca cùng kiu c sp hàng tun t. Kim mng òi hi rng vic b trí logic cho các phn t là ging t nh vic b trí vt lí ca chúng trong b nh chính. Trong trng hp ca cu trúc danh sách, vic b trí logic không sánh ht nh vic b trí vt lí. Danh sách cha các ô mi ô bao gm nhng phn t sau: - Phn d liu cha phn t d liu - Phn con tr cha a ch Do ó, phn d liu ca ô có cùng cu trúc d liu nh cu trúc d liu ca d liu c lu gi phn con tr ca ô có cu trúc d liu kiu con tr. u này ngha là các ô biu din cho d liu (cu trúc) kiu bn ghi cha các phn t có cu trúc d liu khác nhau. Danh sách cha a ch ô trong phn con tr ô này c móc ni sang ô kia qua con tr. Arai Ueki Endou Okada  trí mng c chèn Trc khi chèn Sau khi chèn Arai Inoue Ueki Endou Okada i d liu c dch v phía sau Inoue u t c chèn [...]... TOUGETU-FILE RUISEKI-FILE OUTPUT N-RUISEKI-FILE INITIALIZE T-COUNT R-COUNT N-COUNT PERFORM T-YOMIKOMI PERFORM R-YOMIKOMI PERFORM UNTIL T-ENF AND R-ENDF IF T-HIZUKE < R-HIZUKE THEN WRITE N-REC FROM T-REC PERFORM T-YOMIKOMI ELSE WRITE N-REC FROM R-REC PERFORM R-YOMIKOMI END-IF COMPUTE N-COUNT = N-COUNT + 1 END-PERFORM DISPLAY T-COUNT R-COUNT N-COUNT CLOSE TOUGETU-FILE RUISEKI-FILE N-RUISEKI-FILE STOP RUN T-YOMIKOMI... th t c trình ch s v thu t toán 27 ng trình COBOL DATA DIVISION FILE SECTION FD TOUGETU-FILE 01 T-REC 02 T-HIZUKE PIC X(06) 88 T-ENDF VALUE HIGH-VALUE 02 FILLER PIC X(34) FD RUISEKI-FILE 01 R-REC 02 R-HIZUKE PIC X(06) 88 R-ENDF VALUE HIGH-VALUE 02 FILLER PIC X(34) 01 N-REC PIC X(40) WORKING-STORAGE SECTION 01 T-COUNT PIC 9(05) 01 R-COUNT PIC 9(05) 01 N-COUNT PIC 9(05) * PROCEDURE DIVISION HEIGOU-SYORI... Vi c thêm vào hay xoá i d li u b t u t lá Hình 1-3 -1 9 ch ra B-cây b n m v i các ph n t 7, 6, 10, 2, 5, 12, 4, 9, 8, 11, 1, 3 Hình 1-3 -1 9 B-cây b n m 3 4 1 6 9 7 5 8 10 2 11 12 b Xoá d li u Hình 1-3 -2 0 v ra tr ng h p d li u "4" b xoá kh i B-cây c v trong Hình 1-3 -1 9 u m t mình "4" b xoá i, thì s các ph n t b xoá c a m t nút tr thành m t các yêu c u c a B-cây không th c áp ng Hình 1-3 -2 0 B-cây sai... TOUGETU-FILE AT END MOVE HIGH-VALUE TO T-HIZUKE NOT AT END COMPUTE T-COUNT = T-COUNT + 1 END-READ R-YOMIKOMI READ RUISEKI-FILE AT END MOVE HIGH-VALUE TO R-HIZUKE NOT AT END COMPUTE R-COUNT = R-COUNT + 1 END-READ 28 Ch ng 2 Thu t toán (2) Quan h gi a thu t toán c u trúc d li u i quan h gi a thu t toán c u trúc d li u có th c mô t nh sau: • X lí m ng y thu t toán duy t tuy n tính (chi ti t Hình 2-1 -2 ... c - L p trình hàm - L p trình logic - L p trình h ng i t ng Ki u l p trình thích h p nh t ph i c ch n có xem xét t i các c tr ng c a bài toán • L p trình th t c p trình th t c là ki u l p trình th ng c dùng nh t Lo i l p trình này bao g m các ngôn ng l p trình sau, FORTRAN, COBOL, PL/I, Pascal, C, v.v c tr ng - Ch ng trình c chia thành các mô un làm cho ch ng trình ph c t p, l n thành hi u Vi c vi... p trình là hai m t c a cùng ng ti n L p trình là vi c mô t d li u thu t toán trong các ngôn ng l p trình sao cho máy tính có th th c hi n các nhi m v c giao 2.1 C s v thu t toán 25 a nó Nói chung, ch ng trình bao g m các thu t toán d li u còn thu t toán bao g m logic u khi n p trình có th c phân lo i thành b n ki u khác nhau t ng ng v i cách thu t toán c xem xét: - L p trình th t c - L p trình. .. cân b ng i di n là B-cây ng (heap) • B-cây B-cây là phiên b n c phát tri n thêm n a c a cây nh phân: - Lá cu i b b i m i nút u có s các nút c xác nh là "m." - M i nút u có s t i a d li u c xác nh là "m-1." - T t c các lá u trên cùng m t m c - D li u c ch a trong t ng nút c b trí trong hàng i i vì nh ng c tr ng trên có th làm t ng b nh tính hi u qu tính toán, nên tên "B-cây" ngh a là cây cân... dàng - M c gi ng v i x lí song song là cao - Ti n trình tính toán hay th t c không c n c xét t i ƒ L p trình logic Tân t (thu c tính)d a trên s ki n suy di n là c s c a l p trình logic Prolog là m t ví v ngôn ng l p trình logic c tr ng - B i vì các s ki n c mô t d a trên logic tân t , nên ti n trình l p trình này c th c hi n d dàng - Suy di n tính toán logic có th c th c hi n d dàng „ L p trình. .. 1-3 -8 Trò ch i ném vòng Trò ch i ném vòng c ch i b ng cách ném các vòng m u theo th t , l c, vàng lam a vào d li u) Chúng c l y ra t ng cái m t ( a ra d li u) theo th t o l i vi c ném vào, t c là lam, vàng, l c T c là vòng lam c ném vào cu i cùng s c l y ra u tiên Ki u c u trúc d li u này mà có th c so sánh v i trò ch i ném vòng c g i là ng n x p th ng này còn có thu t ng là h th ng vào-sau-ra-tr... ki m l i Hình 1-3 -1 6 xem cách d li u c duy t b ng vi c dùng t ng ph ng pháp Hình 1-3 -1 6 Cách th c hi n duy t d li u cây nh phân - Th t g c tr c (Pre-order): V i g c là m b t u, nút bên trái c a m i nút c duy t qua theo cách tu n t - Th t g c gi a (Mid-order): V i lá t i áy bên trái làm m b t u, r i duy t qua nút cha nó ti p ó duy t qua ph n còn l i c a nút ó theo cách tu n t - Th t g c sau . 1, 3. Hình 1-3 -1 9 B-cây b nm b. Xoá d liu Hình 1-3 -2 0 v ra trng hp d liu "4" b xoá khi B-cây c v trong Hình 1-3 -1 9. u mt. cân bng i din là B-cây và ng (heap). • B-cây B-cây là phiên bn c phát tri n thêm na ca cây nh phân: - Lá cui b bi và mi nút u có s

Ngày đăng: 13/02/2014, 23:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan