Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
384,45 KB
Nội dung
Nguy n Xuân My Tr i hu n luy n IOICamp.net NGÔN NG L CV L P TRÌNH PASCAL 1.1 Nh ng nét chung c a ngôn ng l p trình Nh ta ã nói n ch ng 1, mu n trao cho máy tính th c hi n m t công vi c ó hay nói cách khác gi i m t toán ó, thu t toán gi i toán ph i c di n t thành m t ch ng trình vi t b ng m t ngôn ng l p trình Có r t nhi u lo i ngôn ng l p trình b c cao (v n n ng) Tuy nhiên chúng u có m t nét chung nh sau: Quy nh m t s ký t dùng vi t ch ng trình, T p ký t cg i ng ch c a ngôn ng Quy nh m t s t c bi t v i hàm ý c th g i khoá Quy nh cách vi t tên i l ng mà ch ng trình c p n Quy nh u trúc chung c a m t ch ng trình quy nh vi t t ng ph n a ch ng trình ch c m t th vi n ch ng trình chu n h tr ng i vi t ch ng trình Khi dùng m t ngôn ng ó vi t ch ng trình, ch ng trình ó c g i ch ng trình ngu n (SourceProgram) có th th c hi n c, ch ng trình ó c n c d ch sang ngôn ng máy Công vi c ó IDE m nhi m IDE vi t t t a ba ch ti ng Anh Integrated Development Envirement (Môi tr ng phát tri n tích h p) V c b n máy tính không th "hi u" th c hi n ch ng trình ngu n không vi t b ng ngôn ng máy (Xem ph n i c ng v Tin h c) IDE cho phép ta ch ch ng trình vi t b ng ngôn ng l p trình sang ngôn ng máy t o thêm ti n nghi cho vi c vi t th c hi n ch ng trình c s ngôn ng l p trình C n ý r ng m t ngôn ng l p trình, có nhi u IDE khác Ví d ngôn ng l p trình Pascal có hai IDE ang c dùng ph bi n: Turbo Pascal Free Pascal Tuy nhiên Free Pascal s IDE c dùng lâu dài có th ch y c môi tr ng Windows Linux Trong ph n l n tr ng th gi i, d y ngôn ng l p trình u tiên, ng i ta th ng ch n ngôn ng Pascal M t nh ng lý Pascal m t ngôn ng chu n m c th hi n thu t toán ki u d li u liên quan; thông qua trình h c ngôn ng này, h c sinh có th hi u c nh ng ý t ng c b n c a t ngôn ng l p trình b c cao Trong ch ng này, s gi i thi u nh ng ki n th c c b n v ngôn ng v i m c tiêu vi t ch ng trình gi i toán thông th ng c s IDE Turbo Trong cu i ch ng này, s có m t ph l c IDE Free-Pascal Ta c n ý th c r ng Pascal m t ph ng ti n giao ti p gi a ng i máy tính B n thân máy tính m t thi t b v t lý, "giao vi c" cho máy thông qua m t ch ng trình, c n ph i tuân th úng nh ng quy nh r t nghiêm ng t c a l c v ngôn ng l p trình Pascal Nguy n Xuân My Tr i hu n luy n IOICamp.net ngôn ng ch nh v y, ch ng trình m i có th d ch c sang ngôn ng máy ó máy m i có th "hi u" th c hi n c 1.2 B ch vi t l nh, Pascal ch n m t s ký t b ng mã ASCII dùng làm b ch a B ch g m: - Các ch th ng hoa c a ti ng Anh: A Z, a z - Các ch s th p phân - D u g ch chân (th ng dùng n i ch ) _ (có mã ASCII th p phân b ng 95) - Ký t tr ng (mã ASCII th p phân b ng 32) gõ b ng phím dài Space - Các ký t v i mã ASCII th p phân t n 31 (các mã u n) - Các ký t c bi t + ( ) * : / ; = ^ < @ > { [ } ] $ # , ' - Các c p ký t vi t li n dùng nh m t ký t = Gán := (* *) ( .) i v i ký t khác c a b ng mã ASCII, Pascal không th c dùng làm ch c a Tuy nhiên, có th x lý thích ho c dòng thông báo, ta có th dùng c ký t n ý r ng, khác v i cách vi t Toán h c, c p d u ngo c (, ), {, }, [, ] dùng Pascal có ý ngh a khác nhau: (, ) dùng phân bi t s h ng bi u th c {, } dùng ghi thích ch ng trình gi i thích m t ph n ch ng trình ó, ta có th vi t thích cho ph n ó ph n thích ph i t gi a { } [, ] dùng cho ki u d li u xâu, m ng t p h p (Xem ph n sau) 1.3 Khái ni m tên Pascal có m t s t c bi t g i khoá (Keyword) g m 52 t sau: l ABSOLUTE EXTERNAL MOD SHR AND FILE NIL STRING ARRAY FOR NOT THEN BEGIN FORWARD OBJECT TO CASE FUNCTION OF TYPE CONST GOTO OR UNIT CONSTRUCTOR IF PACKED UNTIL c v ngôn ng l p trình Pascal Nguy n Xuân My Tr i hu n luy n IOICamp.net DESTRUCTOR IMPLEMENTATION PROCEDURE USES DIV IN PROGRAM VAR DO INLINE RECORD VIRTUAL DOWNTO INTERFACE REPEAT WHILE ELSE INTERRUPT SET WITH END LABEL SHL XOR Khi s d ng Pascal gi i toán (theo ngh a nêu ch ng tr c), phát bi u c a toán trình gi i toán, có i l ng ho c ã cho ho c c n tính toán Khi vi t ch ng trình, ta c n khai báo tên i l ng kèm theo ki u d li u t ng ng Tên t ph i tuân theo quy nh sau: Ch g m ch cái, ch s ho c d u g ch chân không b t u b ng ch , ó ch hoa hay th ng u c hi u nh Không c trùng v i t khoá nêu i v i ng i Vi t Nam, u không gây nên khó kh n m t s t khoá n gi n th ng c dùng nhi u ch ng trìntr, t khoá r c r i ch c không dùng t tên dài có th tu ý nh ng Pascal ch quan tâm n không 63 ký t u Nói chung, t tên i l ng c n tính toán ch ng trình, ta nên dùng tên t t g i nh ý ngh a c a Trong m c ti p theo, ta s l n l t gi i thi u v ki u d li u mà Pascal cho phép dùng th hi n i l ng khác th ng g p toán cách khai báo v chúng 1.4 C u trúc chung c a m t ch ng trình Pascal t ch ng trình Pascal t ng quát g m ph n sau: Ph n khai báo, Ph n ch ng trình con, Ph n ch ng trình Ph n ch ng trình nh t thi t ph i có, hai ph n khác tu theo yêu c u c th c a ng i vi t ch ng trình, không nh t thi t ph i có 1.4.1 Ph n khai báo Ph n khai báo g m m c sau: a) Tên ch ng trình (m c có th không c n có nh ng n u vi t, ph i vi t úng) Cách vi t Program tên ch ng trình; ó tên ch ng trình c n t theo úng quy nh v tên b) Các h ng d n biên d ch (s c gi i thi u d n c n) c) Khai báo n v (unit) ch ng trình c n dùng File TURBO.TPL file *.TPU bao g m m t s unit nh CRT, DOS, SYSTEM, GRAPH ó th vi n th t c hàm chu n c a Pascal cho phép ng i vi t trình c s d ng l c v ngôn ng l p trình Pascal Nguy n Xuân My Tr i hu n luy n IOICamp.net th t c hàm chu n ã có s n Ngoài ra, ng i vi t ch ng trình c ng có th t o l p unit c a riêng theo quy nh c a Pascal Cách vi t USES danh sách unit; Trong danh sách này, hai unit liên ti p cách m t d u ph y d) M c Label Li t kê tên m c c a ch ng trình Cách t tên m c gi ng nh cách t tên ngo i tr u ki n b t u b ng ch Nói chung không ng vi c vi t ch ng trình có khai báo che d u tính c u trúc c a ch ng trình Cách vi t Label danh sách m c; Trong danh sách này, hai m c liên ti p cách m t d u ph y e) M c Const Khai báo h ng (các i l ng không i) Cách vi t Const danh sách tên h ng Trong danh sách này, hai tên h ng liên ti p cách m t d u ch m ph y Cách vi t m i h ng Tên h ng=giá tr ; g) M c Type Khai báo ki u d li u Cách vi t Type danh sách ki u Cách vi t m i ki u Tên ki u = Mô t ki u; h) M c Var Khai báo i l ng (các bi n) dùng ch ng trình Cách vi t Var danh sách bi n Cách vi t m i bi n Tên bi n:tên ki u c a bi n; u m t s bi n có ki u, ta có th khai báo chung ki u, ó hai bi n liên ti p khai báo chung ki u cách m t d u ph y 1.4.2 Các ch ng trình u trúc m i ch ng trình hoàn toàn t ng t nh m t ch ng trình Pascal ngo i tr vi c ch ng trình ph i k t thúc b ng END; Ta s có m t m c riêng gi i thi u chi ti t h n v ch ng trình 1.4.3 Ph n ch ng trình Ph n b t u b ng t khoá Begin ti p theo l nh k t thúc b ng END ây t khoá end nh t ch ng trình có d u ch m kèm theo sau ánh u k t thúc c a ch ng trình 1.4.4 M t lo i ch ng trình n gi n: vi t thông báo hình l c v ngôn ng l p trình Pascal Nguy n Xuân My Tr i hu n luy n IOICamp.net minh ho cho khái ni m v m t ch ng trình Pascal ng th i gi i thi u l nh vi t hình nh ng thông báo c n thi t gi i thích cho l nh ph c t p sau này, ta a m t vài ví d v nh ng ch ng trình n gi n nh t Ví d Gi s ta mu n vi t hình thông báo Day la lop 10 Tin hoc, ch ng trình sau th c hi n công vi c Begin Writeln('Day la lop 10 Tin hoc'); End Ví d Gi s ta mu n vi t hình thông báo Day la lop 10 Tin hoc dòng ti p theo thông báo 'M i b n làm quen v i Turbo-Pascal', ch ng trình sau th c hi n công vi c Begin Writeln('Day la lop 10 Tin hoc, '); Writeln('Moi ban lam quen voi Turbo-Pascal'); End u ch ng trình c s a thành Begin Write('Day la lop 10 Tin hoc, '); Writeln('Moi ban lam quen voi Turbo-Pascal'); End Hãy th c hi n c hai th y s khác gi a hai l nh Write Writeln Qua hai ví d trên, mu n vi t m t dòng thông báo ó hình, ta có th dùng l nh Write ho c Writeln, dòng thông báo c vi t gi a m t c p d u nháy ' t gi a m t c p ngo c tròn t nh n xét r t b ích cho sau dòng l nh c a Pascal ph n l n u k t thúc b ng d u ; 1.5 Môi tr ng Pascal Nói m t cách t ng quát, Tin h c, s d ng m t ph n m m ó, ti n nghi mà ph n m m ó cung c p cho ng i s d ng c g i môi tr ng c a ph n m ó Ví d ng i ta th ng nói n môi tr ng DOS, môi tr ng WINDOWS, môi tr ng Linux Khi làm vi c v i Pascal v i t cách nh m t ph n m m, ta có môi tr ng Pascal làm vi c v i Pascal, máy tính c n có file ch ng trình c n thi t N u mu n cài t y , hi n có hai b ch ng trình TP7.0 dùng cho môi tr ng DOS BP dùng cho môi tr ng WINDOWS Tuy nhiên, có th h c nh ng ph n p n giáo trình này, ta ch c n hai file TURBO.EXE, TURBO.TPL b t u làm vi c v i Pascal, n u môi tr ng DOS, ta vào th m c ch a file gõ TURBO r i gõ phím ENTER, môi tr ng WINDOWS, ta m kép chu t vào bi u t ng c a Pascal hay BP Sau ó s xu t hi n hình so n th o ch ng trình Pascal nh hình v d i ây Ta c ng g i hình nàylà m t c a File l Edit Search Run c v ngôn ng l p trình Pascal Compile Debug Tools Options Windows Help Nguy n Xuân My Tr i hu n luy n IOICamp.net -NONAME00.PAS _ 1:1 -F1 Help F2 Save F3 Open Alt+F9 Compile F9 Make Alt+F10 LocalMenu Hai dòng d i c g i Menu, m i m c Menu t ng ng v i m t lo i vi c ta có th l a ch n, hai s dòng cu i ng n cách b ng d u hai ch m (:) cho ta bi t v trí c a tr so n th o ang dòng (s tr c) c t (s sau) c a ch ng trình ang so n Vi c gi i thi u chi ti t v Menu s c c p n d n qua t ng m c Sau ây ta ch gi i thi u m t s m c c n thi t nh t giai n ban u so n th o ch y m t ch ng trình vi t b ng Pascal ây ta có th làm vi c sau: So n m i m t ch ng trình: Các b c l n l t ti n hành Gõ ch ng trình Các thao tác so n th o v c b n gi ng nh m t h so n th o v n b n Ghi file ch ng trình vào a: gõ phím ch c n ng F2, gõ ph n tên c b n c a file r i gõ phím Enter Biên d ch ch ng trình: gõ ng th i hai phím Alt+F9 N u ch ng trình có i, s có m t v t thông báo màu , gõ phím Enter ho c Esc, v t s bi n t v trí tr n m sát ch sai u tiên c a ch ng trình Sau a sai n u có, c n ghi l i ti n hành biên d ch l i cho t i ch ng trình không l i Ch y ch ng trình: gõ ng th i hai phím Ctrl+F9 Sau dùng xong ch ng trình, ta có th óng c a s c a ch ng trình ó ng cách gõ ng th i hai phím Alt+F3 N u mu n so n m t ch ng trình m i khác, ta có th l n l t gõ phím F10, F, N, ta s c m t c a s m i có th b t u m t vòng làm vi c nh Khi làm vi c v i Pascal, ta có th m nhi u c a s , m i c a s ng v i m t ch ng trình ho c m t file d li u Th ng c a s x p ch ng lên nhau, b ng cách gõ phím F6, ta có th chuy n c a s cu i lên N u mu n m m t file m t c a s , ta gõ phím F3 r i gõ tên file c n m sau ó gõ phím Enter kh i Pascal, ta gõ ng th i hai phím Alt+X D LI U KI U N GI N Khi vi t ch ng trình Pascal, i i l ng xu t hi n ch ng trình c n ph i c khai báo tên ki u c a m c Var Tu theo toán c th , i l ng ó có th i l ng cho tr c, i l ng c n tính nh ng i l ng phát sinh l c v ngôn ng l p trình Pascal Nguy n Xuân My Tr i hu n luy n IOICamp.net trình tính toán Tu theo ý ngh a th c t c a chúng, ta c n ch n ki u d li u khai báo i dung c a m c nh m gi i thi u ki u d li u n gi n Lý c a vi c ch n thu t ng n gi n không ch nói chung chúng n gi n mà ti n dùng sau ph n ch ng trình 2.1 D li u ki u s nguyên 2.1.1 Cách khai báo bi n ki u s nguyên Khi có m t bi n ki u s nguyên, m c Var, ta có th ch n m t n m cách khai báo sau ây Tên bi n:Shortint; i khai báo này, bi n s nh n giá tr mi n -128 127 m i bi n c n byte b nh Tên bi n:Byte; i khai báo này, bi n s nh n giá tr mi n 255 m i bi n c n byte b nh Tên bi n:Integer; i khai báo này, bi n s nh n giá tr mi n -215 215-1 m i bi n c n byte nh Tên bi n:Word; i khai báo này, bi n s nh n giá tr mi n 216-1 m i bi n c n byte b nh Tên bi n:Longint; i khai báo này, bi n s nh n giá tr mi n -231 231-1 m i bi n c n byte nh Pascal cho phép ta dùng hai h ng chu n: m t h ng ký hi u MaxInt có giá tr b ng giá tr l n nh t c a bi n ki u Integer (= 215-1), m t h ng ký hi u MaxLongInt có giá tr b ng giá tr l n nh t c a bi n ki u LongInt (= 231-1) Khi mu n vi t u ki n so sánh gi a bi n ki u s , ≤, ≥, ≠, =, ch ng trình ta vi t t ng ng nh sau: , =, , = 2.1.2 Các hàm th t c chu n Khi vi t bi u th c s h c, phép tính c ký hi u nh sau: C ng + Tr Nhân * X Mod Y: Ph n d c a phép chia X cho Y X Div Y: Th ng c a phép chia X cho Y Chú ý r ng hàm X Mod Y X Div Y ch xác nh v i Y ≠ ng nh toán h c, phân bi t s h ng m t bi u th c, ta có th dùng d u ngo c Tuy nhiên, c n ý r ng m c dù Toán h c, ta c phép l c v ngôn ng l p trình Pascal Nguy n Xuân My Tr i hu n luy n IOICamp.net dùng lo i d u ngo c khác nhau, nh ng Pascal, vi t bi u th c, ta ch c dùng m t lo i d u ngo c nh t d u m óng ngo c tròn (, ) u không dùng d u ngo c, th t u tiên th c hi n phép toán s là: Div Mod, nhân, c ng tr Ví d , a*(b+c) bi u th c c vi t úng nh ng n u vi t a*[b+c] sai, không c hi u a nhân v i t ng c a b c N u vi t a*b+c bi u th c s có giá tr b ng (a*b)+c i v i bi n ki u s nguyên, Pascal có s n m t s hàm chu n m t s th t c chu n ph c v tính toán ph bi n nh t Hàm (Function) chu n hàm có s n c a Pascal Hàm có th có ho c bi n Giá tr c a hàm ch có th dùng tính toán, so sánh ho c gán cho m t bi n khác ki u Khi dùng hàm, c n bi t rõ bi n (n u có) c a ph i có ki u ki u li u c a hàm ki u Sau ây m t s hàm chu n Hàm Sqr(X): Hàm có bi n X ki u s nguyên giá tr b ng bình ph ng c a X Hàm Pred(X): Hàm có bi n X ki u s nguyên có giá tr b ng X-1 Hàm Succ(X): Hàm có bi n X ki u s nguyên có giá tr b ng X+1 Hàm Random(X): Hàm có bi n X ki u Word có giá tr m t s nguyên ng u nhiên ph m vi X-1 Khi dùng hàm ta ph i khai báo n v ch ng trình CRT m c Uses tr c ó ph i g i th t c Randomize; Bi u th c nguyên bi u th c nh n c t bi n s nguyên liên k t b i hàm chu n nêu Th t c (Procedure) chu n l nh có s n c a Pascal L nh cho phép ta th c hi n m t vi c ó Th t c có th có ho c bi n n u có bi n, ta c n bi t rõ bi n ó có ki u Mu n dùng th t c, ta vi t nh vi t m t l nh Th t c Inc(X); t ng giá tr c a bi n X ki u s nguyên m t n v Th t c Dec(X); gi m giá tr c a bi n X ki u s nguyên m t n v Th t c Inc(X,Y); thay giá tr A ang có c a bi n X ki u s nguyên b ng A c ng i giá tr c a bi n ki u s nguyên Y ho c giá tr nguyên Y Th t c Dec(X,Y); thay giá tr A ang có c a bi n X ki u s nguyên b ng A tr i giá tr c a bi n ki u s nguyên Y ho c giá tr nguyên Y 2.1.3 Các cách nh n giá tr cho bi n ki u s nguyên nh n giá tr c a m t bi n ki u s nguyên, ta có th dùng m t hai cách sau: - Dùng l nh gán Tên bi n:=bi u th c có giá tr ki u s nguyên; - Nh n t bàn phím b ng l nh Read(tên bi n); ho c Readln(tên bi n); Khi nh n giá tr t bàn phím, ta có th nh n giá tr cho m t s bi n b ng l nh Read/Readln(tênbi n1, tênbi n2, , tênbi nk); Khi th c hi n l nh này, hình s xu t hi n tr , mu n cho bi n giá tr bao nhiêu, ta gõ t bàn phím sau ó gõ phím Enter l c v ngôn ng l p trình Pascal Nguy n Xuân My Tr i hu n luy n IOICamp.net Tuy nhiên có th dùng ch ng trình m t cách ti n l i, nh n giá tr bi n t bàn phím, ta nên vi t kèm thêm dòng thông báo gi i thích c n nh p giá tr nh th Do ó, ta nên dùng l nh nh n giá tr t ng bi n t bàn phím d i d ng m t c p l nh: Write('Dòng thông báo');Readln(tên bi n); Dòng thông báo s c vi t hình gi i thích cho ng i ch y ch ng trình n nh p t bàn phím Ví d , n u ta c n nh p m t s nguyên d ng N≤100 t bàn phím, ta có th dùng c p nh Write('Nhap so nguyen duong N [...]... gi i ph ng trình b c nh t bX + c = 0 USES CRT; VAR B,C:REAL; BEGIN CLRSCR; WRITE('NH P S TH C B: ');READLN(B); WRITE('NH P S TH C C: ');READLN(C); WRITELN('C N GI I PH NG TRÌNH BX + C = 0'); IF B=0 THEN BEGIN IF C=0 THEN WRITELN('PH NG TRÌNH VÔ NH') ELSE WRITELN('PH NG TRÌNH VÔ NGHI M') END ELSE WRITELN('PH NG TRÌNH CÓ M T NGHI M DUY NH T = ',-C/B:0:2); END 2.3 Bi u th c s h c Trong l p trình, bi u... c v ngôn ng l p trình Pascal 12 Nguy n Xuân My Tr i hu n luy n IOICamp.net Write/writeln(Tên bi n:K:L); có ngh a là ta dùng K v trí vi t giá tr c a bi n trong ó dùng L v trí cho các ch c a ph n phân c a s Vi c l a ch n các giá tr c a K và L do ng i l p trình c ng s ch s c a s c n vi t ra, tuy nhiên rõ ràng L không th l n h n K-2 Tr ng h p K=0, l nh có ngh a là dùng ch vi t giá tr Ví d Ch ng trình. .. c, không Khi vi t các u ki n lô gic ph c h p, Pascal dùng các t khoá sau th hi n các liên t ó: AND - và OR - hay là/ho c NOT - không l c v ngôn ng l p trình Pascal 14 Nguy n Xuân My Tr i hu n luy n IOICamp.net Khi ó, n u các u ki n thành ph n là các u ki n so sánh, u ki n này ph i c t trong m t c p ngo c n Ví d v m t toán h c, ta vi t 3 ... DOS, môi tr ng WINDOWS, môi tr ng Linux Khi làm vi c v i Pascal v i t cách nh m t ph n m m, ta có môi tr ng Pascal làm vi c v i Pascal, máy tính c n có file ch ng trình c n thi t N u mu n... Pascal, n u môi tr ng DOS, ta vào th m c ch a file gõ TURBO r i gõ phím ENTER, môi tr ng WINDOWS, ta m kép chu t vào bi u t ng c a Pascal hay BP Sau ó s xu t hi n hình so n th o ch ng trình Pascal. .. l ng khác th ng g p toán cách khai báo v chúng 1.4 C u trúc chung c a m t ch ng trình Pascal t ch ng trình Pascal t ng quát g m ph n sau: Ph n khai báo, Ph n ch ng trình con, Ph n ch ng trình