1. Trang chủ
  2. » Công Nghệ Thông Tin

Kỹ Thuật Lập Trình

156 105 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 156
Dung lượng 1,1 MB

Nội dung

Kỹ thuật lập trình .

HC VIN CÔNG NGH BU CHÍNH VIN THÔNG BÀI GING K THUT LP TRÌNH Biên son : Ths. NGUYN DUY PHNG Gii thiu môn hc GII THIU MÔN HC I. GII THIU CHUNG S phát trin công ngh thông tin trong nhng nm va qua đã làm thay đi b mt kinh t xã hi toàn cu, trong đó công ngh phn mm tr thành mt ngành công nghip quan trng đy tim nng. Vi s hi t ca công ngh vin thông và công ngh thông rin, t trng v giá tr phn mm chim rt cao trong các h thng vin thông cng nh các thit b đu cu i. Chính vì lý do đó, vic nghiên cu, tìm hiu, tin ti phát trin cng nh làm ch các h thng phn mm ca các k s đin t vin thông là rt cn thit. Tài liu ging dy “K thut lp trình” cho h đào to t xa đc xây dng da trên giáo trình “K thut lp trình” đã đc ging dy ti hc vi n trong nhng nm qua vi mc đích cung cp cho sinh viên nhng kin thc c bn nht, có tính h thng liên quan ti lp trình. Thông qua cun tài liu này, chúng tôi mun gii thiu vi các bn đc v k nng lp trình cu trúc và mt s thut toán quan trng, bao gm: i cng v lp trình cu trúc; Duyt và đ qui; Ngn xp, hàng đi và danh sách móc ni; Cây;  th và cu i cùng là Sp xp và tìm kim. II. MC ÍCH Môn hc cung cp cho sinh viên k nng lp trình trên các cu trúc d liu quan trng nh: stack, queue mlink, tree & graph cùng vi phng pháp phân tích, thit k, đánh giá thut toán. Sau khi hc xong môn hc này, sinh viên có kh nng vit đc chng trình gii quyt nhng bài toán trong thc t. III. PHM VI NGHIÊN CU Nghiên cu các thut toán c bn đc s dng trong thc t nh các thut toán tìm kim, các thut toán liên quan đn đ th. Các gii thut lp trình da trên danh sách, cây… Nghiên cu cách cài đt các thut toán trên máy tính. Tìm hiu các lnh vc ng dng ca các thut toán, phng pháp trong thc t. IV. PHNG PHÁP NGHIÊN CU  hc tt môn hc này, sinh viên cn lu ý nhng vn đ sau: 1. Kin thc cn trc Li nói đu 2 - Sinh viên phi có kin thc c bn v toán hc cao cp. - Thành tho ít nht mt ngôn ng lp trình. c bit trong cun sách này đã s dng ngôn ng lp trình C đ mô t thut toán, vì vy sinh viên phi nm đc ngôn ng lp trình C. 2. Các tài liu cn có: Sách hng dn hc tp K thut lp trình. Ths. Nguyn Duy Phng, Hc vin Công ngh Bu chính Vin thông, 2006. N u cn sinh viên nên tham kho thêm: - Giáo trình K thut lp trình. Ts. Lê Hu Lp, Ths. Nguyn Duy Phng, Hc vin Công ngh Bu chính Vin thông, 2002. - Bài ging đin t môn hc: “K thut lp trình” ca Hc vin Công ngh Bu chính Vin thông. 3. t ra mc tiêu, thi hn cho bn thân t ra các mc tiêu tm thi và thi hn cho bn thân và c gng thc hin chúng Xây d ng mc tiêu trong chng trình nghiên cu. 4 Nghiên cu và nm nhng kin thc ct lõi Sinh viên nên đc qua sách hng dn hc tp trc khi nghiên cu bài ging môn hc và các tài liu tham kho khác. 5. Tham gia đy đ các bui hng dn hc tp Thông qua các bui hng dn hc tp, ging viên s giúp sinh viên nm đc ni dung tng th ca môn hc và gii đáp thc mc, đng th i sinh viên cng có th trao đi, tho lun vi nhng sinh viên khác v ni dung bài hc. 6. Ch đng liên h vi bn hc và ging viên Cách đn gin nht là tham d các din dàn hc tp trên mng Internet, qua đó có th trao đi trc tip các vn đ vng mc vi ging viên hoc các bn hc khác đang online. 7. T ghi chép li nhng ý chính Vic ghi chép li nhng ý chính là mt ho t đng tái hin kin thc, kinh nghim cho thy nó giúp ích rt nhiu cho vic hình thành thói quen t hc và t duy nghiên cu. 8. Hc đi đôi vi hành Hc lý thuyt đn đâu thc hành làm bài tp và thc hành ngay đn đó đ hiu và nm chc lý thuyt. Sinh viên cn cài đt trên máy tính các thut toán trong bài hc bng các ngôn ng lp trình đ t đó có th hiu và nm chc hn t  tng và ni dung ca thut toán. Hà Ni, ngày 20 tháng 02 nm 2006 Ths. Nguyn Duy Phng Chng 1: i cng v k thut lp trình cu trúc 3 CHNG 1: I CNG V K THUT LP TRÌNH CU TRÚC Ni dung chính ca chng này tp chung làm sáng t nhng nguyên lý c bn ca lp trình cu trúc. Nhng nguyên lý này đc coi nh nn tng t tng ca phng pháp lp trình cu trúc đã đc tích hp trong các ngôn ng lp trình. Nm vng các nguyên lý ca lp trình cu trúc không ch giúp ngi hc có cách tip cn ngôn ng lp trình nhanh chóng mà con giúp h cách t duy trong khi xây dng các h thng ng dng. Các nguyên lý c b n đc gii thiu trong chng này bao gm: X Nguyên lý lnh - lnh có cu trúc - cu trúc d liu. X Nguyên lý ti thiu. X Nguyên lý đa phng. X Nguyên lý an toàn. X Nguyên lý nht quán. X Nguyên lý Top-Down . X Nguyên lý Botton-Up. Bn đc có th tìm đc nhng chi tit sâu hn và rng hn trong tài liu [1] & [6]. 1.1. S LC V LCH S LP TRÌNH CU TRÚC Lp trình là mt trong nhng công vic nng nhc nht ca khoa hc máy tính. Có th nói, nng sut xây dng các sn phm phn mm là rt thp so vi các hot đng trí tu khác. Mt sn phm phn mm có th đc thit k và cài đt trong vòng 6 tháng vi 3 lao đng chính. Nhng đ kim tra tìm li và tip tc hoàn thin sn phm đó phi mt thêm chng 3 n m. ây là hin tng ph bin trong tin hc ca nhng nm 1960 khi xây dng các sn phm phn mm bng k thut lp trình tuyn tính.  khc phc tình trng li ca sn phm, ngi ta che chn nó bi mt mành che mang tính cht thng mi đc gi là Version. Thc cht, Version là vic thay th sn phm c bng cách sa đi nó ri công b d i dng mt Version mi, ging nh: MS-DOS 4.0 ch tn ti trong thi gian vài tháng ri thay đi thành MS-DOS 5.0, MS-DOS 5.5, MS-DOS 6.0 . . . ây không phi là mt sn phm mi nh ta tng mà trong nó còn tn ti nhng li không th b qua đc, vì ngay MS-DOS 6.0 cng ch là s khc phc hn ch ca MS-DOS 3.3 ban đu. Trong thi k đu ca tin hc, các lp trình viên xây dng chng trình bng các ngôn ng lp trình bc th p, quá trình np và theo dõi hot đng ca chng trình mt cách trc tip trong ch đ trc tuyn (on-line). Vic tìm và sa li (debbugging) nh ngày nay là không th thc hin đc. Do vy, trc nhng nm 1960, ngi ta coi vic lp trình Chng 1: i cng v k thut lp trình cu trúc 4 ging nh nhng hot đng ngh thut nhum màu sc cá nhân hn là khoa hc. Mt s ngi nm đc mt vài ngôn ng lp trình, cùng mt s mo vt tn dng cu hình vt lý c th ca h thng máy tính, to nên mt s sn phm l ca phn mm đc coi là mt chuyên gia nm bt đc nhng bí  n ca ngh thut lp trình. Các h thng máy tính trong giai đon này có cu hình yu, b nh nh, tc đ các thit b vào ra thp làm chm quá trình np và thc hin chng trình. Chng trình đc xây dng bng k thut lp trình tuyn tính mà ni bt nht là ngôn ng lp trình Assembler và Fortran. Vi phng pháp lp trình tuyn tính, lp trình viên ch đc phép th hin chng trình ca mình trên hai c u trúc lnh, đó là cu trúc lnh tun t (sequential) và nhy không điu kin (goto). H thng th vin vào ra nghèo nàn làm cho vic lp trình tr nên khó khn, chi phí cho các sn phm phn mm quá ln, đ tin cy ca các sn phm phn mm không cao dn ti hàng lot các d án tin hc b tht bi, đc bit là các h thng tin hc có tm c ln. Nm 1973, Hoare khng đnh, nguyên nhân tht bi mà ngi M gp phi khi phóng v tinh nhân to v phía sao V n (Sao Kim) là do li ca chng trình điu khin vit bng Fortran. Thay vì vit: DO 50 I = 12, 523 (Thc hin s 50 vi I là 12, 13, , 523) Lp trình viên (hoc thao tác viên đc bìa) vit thành: DO 50 I = 12.523 (Du phy đã thay bng du chm) Gp câu lnh này, chng trình dch ca Fortran đã hiu là gán giá tr thc 12.523 cho bin DO 50 I làm cho kt qu chng trình sai.  gii quyt nhng vng mc trong k thut lp trình, các nhà tin hc lý thuyt đã đi sâu vào nghiên cu tìm hiu bn cht ca ngôn ng, thut toán và hot đng lp trình, nâng ni dung ca k thut lp trình lên thành các nguyên lý khoa hc ngày nay. Kt qu ni bt nht trong giai đon này là Knuth xut bn b 3 tp sách mang tên “Ngh thut lp trình” gii thiu ht sc t m c s lý thuyt đm bo toán hc và các thut toán c bn x lý d liu na s, sp xp và tìm kim. Nm 1968, Dijkstra công b lá th “V s nguy hi ca toán t goto”. Trong công trình này, Dijkstra khng đnh, có mt s li do goto gây nên không th xác đnh đc đim bt đu ca li. Dijkstra còn khng đnh thêm: “Tay ngh ca mt lp trình viên t l ngh ch vi s lng toán t goto mà anh ta s dng trong chng trình”, đng thi kêu gi hu b trit đ toán t goto trong mi ngôn ng lp trình ngoi tr ngôn ng lp trình bc thp. Dijkstra còn đa ra khng đnh, đng thái ca chng trình có th đc đánh giá tng minh qua các cu trúc lp, r nhánh, gi đ qui là c s ca lp trình cu trúc ngày nay. Nhng kt qu đc Dijikstra công b đã to nên mt cuc cách mng trong k thut lp trình, Knuth lit kê mt s trng hp có li ca goto nh vòng lp kt thúc gia chng, bt li . . ., Dijkstra, Hoare, Knuth tip tc phát trin t tng coi chng trình máy tính cùng vi lp trình viên là đi tng nghiên cu ca k thut lp trình và phng pháp Chng 1: i cng v k thut lp trình cu trúc 5 làm ch s phc tp ca các hot đng lp trình. Nm 1969, Hoare đã phát biu các tiên đ phc v cho vic chng minh tính đúng đn ca chng trình, phát hin tính bt bin ca vòng lp bng cách coi chng trình va là bn mã hoá thut toán đng thi là bn chng minh tính đúng đn ca chng trình. Sau đó Dahl, Hoare, Dijiksta đã phát trin thành ngôn ng lp trình cu trúc.  trin khai các nguyên lý lp trình c u trúc, L. Wirth đã thit k và cài đt ngôn ng ALGOL W là mt bin th ca ALGOL 60. Sau này, L. Wirth tip tc hoàn thin đ tr thành ngôn ng lp trình Pascal. ây là ngôn ng lp trình gin d, sáng sa v cú pháp, d minh ha nhng vn đ phc tp ca lp trình hin đi và đc coi là mt chun mc trong ging dy lp trình. Nm 1978, Brian Barninghan cùng Denit Ritche thit k ngôn ng lp trình C vi t i thiu các cu trúc lnh và hàm khá phù hp vi t duy và tâm lý ca ca ngi lp trình. ng thi, hai tác gi đã phát hành phiên bn h điu hành UNIX vit ch yu bng ngôn ng C, khng đnh thêm uy th ca C trong lp trình h thng. 1.2. CU TRÚC LNH, LNH CÓ CU TRÚC, CU TRÚC D LIU 1.2.1. Cu trúc lnh (cu trúc điu khin) Mi chng trình máy tính v bn cht là mt bn mã hoá thut toán. Thut toán đc coi là dãy hu hn các thao tác s cp trên tp đi tng vào (Input) nhm thu đc kt qu ra (output). Các thao tác trong mt ngôn ng lp trình c th đc điu khin bi các lnh hay các cu trúc điu khin, còn các đi tng chu thao tác thì đc mô t và biu di n thông qua các cu trúc d liu. Trong các ngôn ng lp trình cu trúc, nhng cu trúc lnh sau đc s dng đ xây dng chng trình. D nhiên, chúng ta s không bàn ti cu trúc nhy không điu kin goto mc dù ngôn ng lp trình cu trúc nào cng trang b cu trúc lnh goto. câu lnh GOTO. Hình 1.1: Cu trúc tun t và cu trúc r nhánh dng đy đ Cu trúc tun t A; B; Sau khi thc hin lnh A thì thc hin lnh B A B Cu trúc r nhánh dng đy đ If (E) A; S Else B;  Nu biu thc E có giá tr đúng (khác 0) thì th chinA;NuEsaith ìth chinB; A B Chng 1: i cng v k thut lp trình cu trúc 6 Hình 1.2. Các cu trúc lp A, B : ký hiu cho các câu lnh đn hoc lnh hp thành. Mi lnh đn l đc gi là mt lnh đn, lnh hp thành là lnh hay cu trúc lnh đc ghép li vi nhau theo qui đnh ca ngôn ng, trong Pascal là tp lnh hay cu trúc lnh đc bao trong thân ca begin . . . end; trong C là tp các lnh hay cu trúc lnh đc bao trong hai ký hiu { }. E, E1, E2, E3 là các biu thc s hc hoc logic. Mt s ngôn ng lp trình coi giá tr  ca biu thc logic hoc đúng (TRUE) hoc sai (FALSE), mt s ngôn ng lp trình khác nh C coi giá tr ca biu thc logic là đúng nu nó có giá tr khác 0, ngc li biu thc logic có giá tr sai. Cn lu ý rng, mt chng trình đc th hin bng các cu trúc điu khin lnh : tun t, tuyn chn if else, switch . . case default, lp vi đi u kin trc while , lp vi điu kin sau do . . while, vòng lp for bao gi cng chuyn đc v mt chng trình, ch s dng ti thiu hai cu trúc lnh là tun t và lp vi điu kin trc while. Phng pháp lp trình này còn đc gi là phng pháp lp trình hn ch. Cu trúc lp vi điu kin sau do A; S  while (E); Thc hin A cho ti khi nào E vn còn đúng; Cu trúc lp FOR For (E1; E2;E3) A; S  Cu trúc lp vi điu kin trc While (E) A; S  Trong khi biu thc E còn có giá tr đúng thì thc hin A; E A A E E1 E2 E 3 A Chng 1: i cng v k thut lp trình cu trúc 7 1.2.2. Lnh có cu trúc Lnh có cu trúc là lnh cho phép cha các cu trúc điu khin trong nó. Khi tìm hiu mt cu trúc điu khin cn xác đnh rõ v trí đc phép đt mt cu trúc điu khin trong nó, cng nh nó là mt phn ca cu trúc điu khin nào. iu này tng nh rt tm thng nhng có ý ngha ht sc quan trng trong khi xây d ng và kim tra li có th xy ra trong chng trình. Nguyên tc vit chng trình theo cu trúc: Cu trúc con phi đc vit lt trong cu trúc cha, đim vào và đim ra ca mi cu trúc phi nm trên cùng mt hàng dc. Ví d sau s minh ha cho nguyên tc vit chng trình: if (E) while (E1) A; else do B; while(E2); Trong ví d trên, while (E1) A; là cu trúc con nm trong thân ca cu trúc cha là if (E) ; còn do B while(E2); là cu trúc con trong thân ca else. Do vy, câu lnh while(E1); do . . . while(E2) có cùng cp vi nhau nên nó phi nm trên cùng mt ct, tng t nh vy vi A, B và if vi else. 1.2.3. Cu trúc d liu Các ngôn ng lp trình cu trúc nói chung đu ging nhau v cu trúc lnh và cu trúc d liu. im khác nhau duy nht gia các ngôn ng  lp trình cu trúc là phng pháp đt tên, cách khai báo, cú pháp câu lnh và tp các phép toán đc phép thc hin trên các cu trúc d liu c th. Nm bt đc nguyên tc này, chúng ta s d dàng chuyn đi cách th hin chng trình t ngôn ng lp trình này sang ngôn ng lp trình khác mt cánh nhanh chóng mà không tn quá nhiu thi gian cho vic hc tp ngôn ng lp trình. Thông thng, các cu trúc d liu đc phân thành hai loi: cu trúc d li u có kiu c bn (Base type) và cu trúc d liu có kiu do ngi dùng đnh ngha (User type) hay còn gi là kiu d liu có cu trúc. Kiu d liu c bn bao gm: Kiu kí t (char), kiu s nguyên có du (signed int), kiu s nguyên không du (unsigned int), kiu s nguyên dài có du (signed long), kiu s nguyên dài không du (unsigned long ), kiu s thc (float) và kiu s thc có đ chính xác gp đôi (double). Kiu d liu do ngi dùng đnh ngha bao gm kiu xâu kí t (string), kiu mng (array), kiu tp hp (union), kiu cu trúc (struct), kiu file, kiu con tr (pointer) và các kiu d liu đc đnh ngha mi hoàn toàn nh kiu danh sách móc ni (link list), kiu cây (tree) . . . Kích c ca kiu c bn đ ng ngha vi min xác đnh ca kiu vi biu din nh phân ca nó, và ph thuc vào tng h thng máy tính c th.  xác đnh kích c ca kiu nên dùng toán t sizeof( type). Chng trình sau s lit kê kích c ca các kiu c bn. Chng 1: i cng v k thut lp trình cu trúc 8 Ví d 1.1. Kim tra kích c ca kiu. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <io.h> void main(void) { printf(“\n Kích c kiu kí t:%d”, sizeof(char)); printf(“\n Kích c kiu kí t không du:%d”, sizeof(unsigned char)); printf(“\n Kích c kiu s nguyên không du:%d”, sizeof(unsigned int)); printf(“\n Kích c kiu s nguyên có du:%d”, sizeof(signed int)); printf(“\n Kích c kiu s nguyên dài không du:%d”, sizeof(unsigned long )); printf(“\n Kích c kiu s nguyên dài có du:%d”, sizeof(signed long )); printf(“\n Kích c kiu s thc có đ chính xác đn:%d”, sizeof(float )); printf(“\n Kích c kiu s thc có đ chính xác kép:%d”, sizeof(double )); getch(); } Kích c ca các kiu d liu do ngi dùng đnh ngha là tng kích c ca mi kiu thành viên trong nó. Chúng ta cng vn dùng toán t sizeof(tên kiu) đ xác đnh đ ln tính theo byte ca các kiu d liu này. Mt đim đc bit chú ý trong khi lp trình trên các cu trúc d liu là cu trúc d liu nào thì phi kèm theo phép toán đó, vì mt bin đc gi là thuc kiu d liu nào đó nu nh nó nhn mt giá tr t min xác đnh ca kiu và các phép toán trên kiu d liu đó. 1.3. NGUYÊN LÝ TI THIU Hãy bt đu t mt tp nguyên tc và ti thiu các phng tin là các cu trúc lnh, kiu d liu cùng các phép toán trên nó và thc hin vit chng trình. Sau khi nm chc nhng công c vòng đu mi đt vn đ m rng sang h thng th vin tin ích ca ngôn ng. Khi làm quen vi mt ngôn ng lp trình nào đó, không nht thit phi l thuc quá nhiu vào h  thng th vin hàm ca ngôn ng, mà điu quan trng hn là trc mt bài toán c th, chúng ta s dng ngôn ng đ gii quyt nó th nào, và phng án tt nht là lp trình bng chính h thng th vin hàm ca riêng mình. Do vy, đi vi các ngôn ng lp trình, chúng ta ch cn nm vng mt s các công c ti thiu nh sau: 1.3.1. Tp các phép toán Tp các phép toán s  hc: + (cng); - (tr); * (nhân); % (ly phn d); / (chia). Tp các phép toán s hc m rng: ++a ú a = a +1; // tng giá tr bin nguyên a lên mt đn v; a ú a = a-1; //gim giá tr bin nguyên a mt đn v; a+= n ú a = a+n; // tng giá tr bin nguyên a lên n đn v; Chng 1: i cng v k thut lp trình cu trúc 9 a-=n ú a = a - n; // gim giá tr bin nguyên a n đn v); a%=n ú a = a%n; // ly giá tr bin a modul vi n; a/=n ú a=a/n;// ly giá tr bin a chia cho n; a*=n ú a = a*n; // ly giá tr bin a nhân vi n; Tp các phép toán so sánh: >, <, >=, <=, ==, != ( ln hn, nh hn, ln hn hoc bng, nh hn hoc bng, đúng bng, khác). Qui tc vit đc th hin nh sau: if ( a>b) { . . } // nu a ln hn b if ( a<b) { . . } // nu a nh  hn b if ( a>=b) { . . } // nu a ln hn hoc bng b if ( a<=b) { . . } // nu a nh hn hoc bng b if ( a==b) { . . } // nu a đúng bng b if ( a!=b) { . . } // nu a khác b Tp các phép toán logic: &&, ||, ! (và, hoc, ph đnh) &&: Phép và logic ch cho giá tr đúng khi hai biu thc tham gia đu có giá tr đúng (giá tr đúng ca mt biu thc trong C đc hiu là biu thc có giá tr khác 0). ||: Phép hoc logic ch cho giá tr sai khi c hai biu thc tham gia đu có giá tr  sai. !: Phép ph đnh cho giá tr đúng nu biu thc có giá tr sai và ngc li cho giá tr sai khi biu thc có giá tr đúng. Ng ngha ca các phép toán đc minh ha thông qua các câu lnh sau: int a =3, b =5; if ( (a !=0) && (b!=0) ) // nu a khác 0 và b khác 0 if ((a!=0) || (b!=0)) // nu a khác 0 hoc b khác 0 if ( !a ) // ph đnh a khác 0 if (a==b) // nu a đúng bng b Các toán t thao tác bít (không s dng cho float và double) & : Phép hi các bít. | : Phép tuyn các bít. ^ : Phép tuyn các bít có loi tr. << : Phép dch trái (dch sang trái n bít giá tr 0) >> : Phép dch ph i (dch sang phi n bít có giá tr 0) ~ : Phép ly phn bù. [...]... cho quá trình phân tích và thi t h th ng, thì th ng t trên xu ng, ph ng pháp Bottom- Up th ng c s d ng cho quá trình cài t h th ng Trong ví d trên, chúng ta s không th xây d ng c ch ng trình m t cách hoàn ch nh n u nh ta ch a xây d ng c các hàm Binary(a), Addition(a,b), Subtraction(a,b), Multial(a,b), Division(a,b), Modulation(a,b), USCLN(a,b) Ch ng trình sau th hi n quá trình cài t ch ng trình theo... while(key!='0'); } 25 Ch ng 1: ic ng v k thu t l p trình c u trúc NH NG N I DUNG C N GHI NH X M t ngôn ng l p trình b t k u d a trên t p các c u trúc l nh i u khi n (tu n t , tuy n ch n & l p), các c u trúc d li u (d li u ki u c b n & d li u có c u trúc) cùng v i các phép toán trên nó X Khi m i b t u h c l p trình, hãy l p trình t t p t i thi u các công c mà ngôn ng l p trình trang b (Nguyên lý t i thi u) X Khi... m i m c cài l n thành nh ng v n t c a ch ng trình nh h n là n i dung chính c a X Cách cài t m t v n c th c hi n t m c n v ch ng trình (hàm, th t c) n m c l p ghép các n v ch ng trình thành h th ng hoàn thi n là n i dung chính c a nguyên lý Botton-Up 26 Ch ng 1: ic ng v k thu t l p trình c u trúc BÀI T P CH Bài 1 Tìm các nghi m nguyên d ng c a h ph NG 1 ng trình: X + Y + Z = 100 5X + 3Y + Z/3 = 100 Bài... c cho t i khi nh n c i v i các h th ng l n, quá trình còn m c n v ch ng trình Trong ví d n gi n này, m c n v ch ng trình xu t hi n ngay t i m c 1 nên chúng ta không c n phân rã ti p n a mà d ng l i cài t h th ng 1.8 PH NG PHÁP BOTTOM-UP ̇ i t cái riêng t i cái chung, t các i t ng thành ph n m c cao t i các i t ng thành ph n m c th p, t m c n v ch ng trình t i m c t ng th , t nh ng n v ã bi t l p t... nh nh t c ng ph i c phát hi n m t b c nào ó c a ch ng trình Quá trình ki m tra và phát hi n l i ph i c th c hi n tr c khi l i ó hoành hành Các lo i l i th ng x y ra trong khi vi t ch thi t k ) và ng trình có th m c th p nh t th c t ng k t l i nh sau: L i c thông báo b i t khoá error (l i cú pháp): lo i l i này th ng x y ra trong khi so n th o ch ng trình, chúng ta có th vi t sai các t khoá ví d thay... ra khi ta khai báo bi n trong ch ng trình nh ng l i không s d ng t i chúng, ho c l i trong các bi u th c ki m tra khi bi n c ki m tra không xác nh c giá tr c a nó, ho c l i do th t u tiên các phép toán trong bi u th c Hai lo i l i error và warning c thông báo ngay khi d ch ch ng trình thành file *.OBJ Quá trình liên k t (linker) các file *.OBJ t o nên file ch ng trình mã máy *.EXE ch c ti p t c khi... v k thu t l p trình c u trúc Lo i l i cu i cùng mà các compiler không th phát hi n n i ó là l i do chính l p trình viên gây nên trong khi thi t k ch ng trình và x lý d li u Nh ng l i này không c compiler thông báo mà nó ph i tr giá b ng quá trình t test ho c ch ng minh c tính úng n c a ch ng trình L i có th n m chính ý thi t k , ho c l i do không l ng tr c c tính ch t c a m i lo i thông tin vào Ví d... pháp bi n i mã c a các kí t t [a z], [A Z] thành m t kí t m i mà mã c a nó c ng thêm v i m t h ng s k cho tr c Quá trình gi i mã c th c hi n ng c l i Hãy vi t ch ng trình mô t ph ng pháp mã hoá và gi i mã tuy n tính File d li u TEXT.TXT Quá trình mã hoá c ghi l i trong File MAHOA.TXT, quá trình gi i mã ghi l i trong File GIAIMA.TXT Bài 19 Cho File d li u TEXT.TXT c t ch c thành t ng dòng, dài t i a c... Z] Trong ó, n u kí t có s các bít 1 là l ta b xung thêm m t bít có giá tr m t vào bít s 7 c a kí t kí t tr thành ch n Quá trình gi i mã c th c hi n ng c l i Hãy vi t ch ng trình mô t k thu t mã hoá ch n l File d li u TEXT.TXT Quá trình mã hoá c ghi l i trong File MAHOA.TXT, quá trình gi i mã ghi l i trong File GIAIMA.TXT 28 Ch CH ng 2: Duy t và qui NG 2: DUY T VÀ QUI Duy t toàn b là ph ng pháp ph d... i này ã c Compiler c a các ngôn ng l p trình phát hi n c kh c ph c các l i lo i này, chúng ta ch c n ph i c và hi u c nh ng thông báo l i th ng c vi t b ng ti ng Anh C ng c n ph i l u ý r ng, do m c ph c t p c a ch ng trình d ch nên không ph i l i nào c ng c ch ra m t cách t ng minh và chính xác hoàn toàn t i n i xu t hi n l i 16 Ch ng 1: ic ng v k thu t l p trình c u trúc Lo i l i cu i cùng mà các

Ngày đăng: 04/11/2014, 14:14

w