Professional Documents
Culture Documents
9 Ngon Ngu Lap Trinh
9 Ngon Ngu Lap Trinh
9 Ngon Ngu Lap Trinh
on chng trnh ny cng hai s nguyn hai byte trong cc a ch 1064 v 1066. Kt qu hai byte bt u t a ch 2B00. Ct u l dng lnh trong h 16, ct gia l dng lnh tng ng trong h nh phn (chnh l hnh nh thc s ca chng trnh trong b nh) v ct bn phi l gii thch. AX l tn mt thanh ghi 16 bt trong b vi x l 8086 . Qua v d trn, ta thy ngn ng my khng tht thch hp cho s ng ngi s dng my tnh v vit hoc hiu chng trnh, ngi ta phi nh rt my mc cc m s ca lnh m cc dng s ny khng c hm r rng. Mt khc do tp lnh ca cc b x l c th khc nhau nn khng th dng chng trnh vit trn b x l ny chy trn my tnh dng b x l khc loi. Hp ng (Assembly). khc phc nhc im trn ca ngn ng my, ngi ta xut mt ngn ng giao tip vi my mc hnh thc hn gi l hp ng. V c bn, hp ng c cc cu trc rt ging vi ngn ng my. iu khc l trong hp ng c
th vit lnh di dng m ch. M ch th hin m lnh hoc cc i tng trong lnh (trong ngn ng my n l m lnh v a ch ca i tng). M lnh dng ch thng chnh l nhng t trong ting Anh c ngha r rng, cn i tng do ta t t tn ph hp vi nim v i tng . V d nu on chng trnh trn dng cng chiu di v chiu rng ca hnh ch nht tnh na chu vi th trong hp ng ASM ta ch cn vit Bng 9.2. Chng trnh vit trn Assembly MOV AX CHIEU_DAI ADD AX CHIEU_RONG MOV NUA_CHU_VI AX T MOV c gc t t MOVE trong ting Anh, c ngha l chuyn, cn t ADD c ngha l cng. Lnh th nht c ngha l np s liu m ta t tn l CHIEU_DAI ln thanh ghi AX, lnh th hai c ngha l cng s trong thanh ghi AX vi s liu m ta t tn l CHIEU_RONG. Ta thy mc d cn cng knh v cn ph thuc vo mt loi my tnh c th, hp ng d dng hn rt nhiu so vi ngn ng my. mt chng trnh vit bng hp ng chy c trn my tnh, n cn phi c dch ra ngn ng my. R rng l, mi hp ng dng cho mt loi my no u cn c trnh dch ph hp. Khi dch, hai i tng CHIEU_DAI v CHIEU_RONG ni trn s c t ng thay bng hai a ch c th no khng nht thit l 1064 v 1066 nh v d trn. V vy ta cng khng cn phi quan tm n sp xp a ch c th sau khi dch xong v chy chng trnh. Chng trnh dch i vi hp ng c gi l hp dch (assembler). Ngn ng thut ton (cn gi l ngn ng thut ton) . Ta thy ngn ng my v c hp ng u ph thuc vo h thng lnh ca mt loi my c th. Chng cha tht thch hp cho ng o ngi s dng my tnh. Ngi ta mun th hin thut ton bng nhng lnh vi ngha thc t v c lp vi bt c loi my c th no. Chng hn trong v d trn ch cn vit NUA_CHU_VI = CHIEU_DAI + CHIEU_RONG l . T u nhng nm 50, ngi ta xy dng nhng ngn ng lp trnh vn nng c cc lnh gn vi ngn ng t nhin v ngn ng ton hc. Cc ngn ng lp trnh ny c gi l cc ngn ng lp trnh bc cao (high level programming language). V chng ch nhm vo th hin thut ton c lp vi cc my tnh c th nn ngi ta cn gi n l cc ngn ng thut ton (algorithmic language). Cng nh i vi hp ng, mi ngn ng lp trnh bc cao trn mt loi my c th u cn c chng trnh dch dch cc chng trnh sang sang ngn ng my ca my mi c th thc hin c. Ch rng mi lnh ca hp ng ni chung c dch thnh mt lnh trong ngn ng my cn mi lnh ca ngn ng bc cao thng tng ng vi nhiu lnh my. V d lnh NUA_CHU_VI = CHIEU_DAI + CHIEU_RONG s dch thnh 3 lnh my. C hai kiu dch: thng dch (Interpeter) l kiu dch tng lnh hiu cng vic phi lm v thc hin lun nhng khng nht thit phi to ra nhng on m tng ng trong ngn ng my. Nu mt lnh cn thc hin nhiu ln th cng phi dch nhiu ln.
Ngn ng BASIC thnh hnh vo nhng nm 80 thng i theo ch thng dch. Cn cc trnh bin dch (compiler) s dch ton b chng trnh ban u (gi l chng trnh ngun) thnh mt chng trnh tng ng trong ngn ng my (gi l chng trnh ch), sau np chng trnh ch vo my tnh thc hin. S d trong ting Vit chng ta gi hai kiu dch ny l "thng dch' v "bin dch" v tnh cht dch c phn no ging vi dch ting nc ngoi. Thng dch ging nh cng vic ca ngi phin dch (thng ngn), ni ti u dch ti . Cn bin dch l cng vic ca ngi bin dch, cn c trn ti liu y , ta vit ra mt ln bn dch y . Ngn ng bc cao u tin c xy dng vo nm 1957 l ngn ng FORTRAN (FORmula TRANslator - B dch cc cng thc). Ngy nay c rt nhiu cc ngn ng lp trnh bc cao nh PASCAL hay C. Sau y l mt on chng trnh gii phng trnh bc 2 vit trn PASCAL v FORTRAN. Bn c d cha c mt cht nim g v cc ngn ng ny cng c th hiu c cc on chng trnh sau ni g Bng 9.3. Chng trnh vit trn Pascal (*on chng trnh trn PASCAL*) DELTA := B*B - 4*A*C; IF DELTA > 0 THEN BEGIN X1 := (- B + SQRT(DELTA))/(2*A); X2 := (- B - SQRT(DELTA))/(2*A); WRITE (X1,X2); END ELSE WRITE('Vo nghiem'); ..... Sau y l on chng trnh vit trn ngn ng FORTRAN. Theo quy c, chng trnh FORTRAN c vit trn giy mu c 80 ct. T ct 1 n ct 5 dnh cho nhn cc ton t, t ct 7 n 72 dnh cho ton t. Cc lnh in phi i km vi thng tin v cch in (v d knh 3 ni my in v nhn ca mt ton t FORMAT gii thch cch in, v d F8.3 l in mt s thc 8 v tr trong dnh cho phn l sau du phy 3 v tr). Bng 9.4. Chng trnh vit trn FORTRAN IV
6 7 72
DELTA = B*B - 4* A*C IF DELTA < 0 GOTO 10 X1 = (- B + SQRT(DELTA))/(2*A)
73 80
20 10 40 30
FORMAT ('NGHIEM 1= ', F8.3, NGHIEM 2 = ', F8.3) GOTO 30 WRITE(3,40) FORMAT('VO NGHIEM') ...........................................
Qua cc v d trn ta thy ngn ng thut ton d s dng hn nhiu so vi hp ng v ngn ng my. Ngy nay rt t ngi phi s dng hp ng v ngn ng my pht trin phn mm.
mt cch c lp. Ngoi ra rt nhiu cng vic thng dng c lp trnh sn v c lu trong cc th vin di dng cc m un i tng. Ngi lp trnh ch cn vit yu cu s dng. V d trong PASCAL khi vit y := 3 + sin(x) th chnh on chng trnh tnh sin c lp sn t trc di dng mt m un i tng s c ghp vo chng trnh ch. Nh vy sau khi dch c mt chng trnh hon chnh cn phi lin kt cc cc m un i tng li vi nhau. Qu trnh ghp ni cc on chng trnh ca ngi s dng v cc on chng trnh khc c lp t trc gi l hp nht hoc lin kt (link). Qu trnh ny cng c th gp li v d khng tm thy cc on chng trnh c yu cu ni vo hoc cu trc kt ni khng ph hp, v d m un A thng bo chuyn cho m un B d liu l mt k t trong khi trong m un B li yu cu nhn mt s. Thc hin (run). Sau khi lin kt, ta c mt chng trnh c th sn sng thi hnh trn my. Trong qu trnh thi hnh trn my vn c th c li gi l li thi hnh (runtime error). Li thi hnh c th c nguyn nhn t thut ton , cng c th c nguyn nhn do ta khng th hin chnh xc ngha hoc khng kim sot c ng qu trnh sinh ra hoc bin i ca cc i tng. Cc li ny gi l li ng ngha (semantic). V d dng lnh trong ngn ng PASCAL a: = x/y ngha l a tnh bng thng ca x v y th khng sai c php nhng khi thc hin nu y l 0 th s gy li ng ngha. Li thi hnh cn c nguyn nhn l tnh trng x l c th ca my. V d chng trnh i in nhng my in khng bt in hoc ghi a nhng a b hng.
S thc hin mt cng vic s dng hp ng hoc ngn ng bc cao c minh ho trong hnh 9.1.
Ta thy rng cc b dch hay chng trnh lin kt chnh l mt loi phn mm pht trin
Son tho
Phn mm son tho
Dch
Chng trnh dch
Lin kt
Chng trnh lin kt
Thc hin
D liu
Cc m un i tng
Kt qu x l
Li c php
Li lin kt
Li thi hnh