1. Trang chủ
  2. » Luận Văn - Báo Cáo

NGÔN NGỮ LẬP TRÌNH PASCAL

66 232 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 66
Dung lượng 384,45 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ví d ngôn ng l ptrình Pascal có hai IDE ang c dùng ph bi n: Turbo Pascal và Free Pascal.. Tuynhiên Free Pascal s là IDE c dùng lâu dài vì có th ch y trong c môi tr ngWindows và Linux...

Trang 1

l c v ngôn ng l p trình Pascal 1

L C V NGÔN NG L P TRÌNH PASCAL

c d ch sang ngôn ng máy Công vi c ó do các IDE m nhi m IDE là vi t t t

a ba ch ti ng Anh Integrated Development Envirement (Môi tr ng phát tri ntích h p) V c b n máy tính không th "hi u" và th c hi n các ch ng trình ngu nkhô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 và t o thêm các

ti n nghi cho vi c vi t và th c hi n ch ng trình trên c s ngôn ng l p trình C nchú ý r ng cùng m t ngôn ng l p trình, có nhi u IDE khác nhau Ví d ngôn ng l ptrình Pascal có hai IDE ang c dùng ph bi n: Turbo Pascal và Free Pascal Tuynhiên Free Pascal s là IDE c dùng lâu dài vì có th ch y trong c môi tr ngWindows và Linux

Trong ph n l n các tr ng trên th gi i, khi 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 trong nh ng lý do chính vì Pascal là m t ngôn

ng khá chu n m c th hi n các thu t toán và các ki u d li u liên quan; thôngqua quá 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, chúng ta s gi i thi u nh ng ki n

th c c b n v ngôn ng này v i m c tiêu vi t các ch ng trình gi i các bàitoán thông th ng trên c s IDE Turbo Trong cu i ch ng này, s có m t ph l c IDE Free-Pascal

Ta c n luôn ý th c r ng Pascal là m t ph ng ti n giao ti p gi a ng i và máytính B n thân máy tính là m t thi t b v t lý, "giao vi c" cho máy thông qua m t

ch ng trình, chúng ta c n ph i tuân th úng nh ng quy nh r t nghiêm ng t c a

Trang 2

- 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 0 n 31 (các mã u khi n)

i v i các ký t khác c a b ng mã ASCII, Pascal không chính th c dùng làm các

ch cái c a mình Tuy nhiên, nó có th x lý và trong các chú thích ho c các dòngthông báo, ta có th dùng c các ký t này

n chú ý r ng, khác v i cách vi t trong Toán h c, các c p d u ngo c (, ), {,

}, [, ] dùng trong Pascal có ý ngh a khác nhau:

Pascal có m t s t c bi t g i là khoá (Keyword) g m 52 t sau:

Trang 3

l c v ngôn ng l p trình Pascal 3

DESTRUCTOR IMPLEMENTATION PROCEDURE USES

Khi s d ng Pascal gi i các bài toán (theo ngh a nêu trong ch ng tr c), trongphát bi u c a bài toán và trong quá trình gi i bài toán, có cá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 các i l ng này kèmtheo ki u d li u t ng ng

Tên t ph i tuân theo các quy nh sau:

1 Ch g m các ch cái, ch s ho c d u g ch chân và không b t u b ng ch, khi ó ch cái hoa hay th ng u c hi u nh nhau

2 Không c trùng v i các t khoá nêu trên i v i ng i Vi t Nam, u nàykhông gây nên khó kh n vì m t s t khoá n gi n th ng c dùng nhi utrong ch ng trìntr, các t khoá r c r i ch c không ai dùng t tên

3 dài có th tu ý nh ng Pascal ch quan tâm n không quá 63 ký t u.Nói chung, khi t tên các i l ng c n tính toán trong ch ng trình, ta nên dùngcác tên t t g i nh ý ngh a c a nó

Trong các m c ti p theo, ta s l n l t gi i thi u v các ki u d li u mà Pascal chophép dùng th hi n các i l ng khác nhau th ng g p trong các bài toán và cáchkhai báo v chúng

Ph n khai báo g m các m c sau:

a) Tên ch ng trình (m c này 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;

trong ó tên ch ng trình c n t theo úng các quy nh v tên

b) Các h ng d n biên d ch (s c gi i thi u d n khi c n)

c) Khai báo các n v (unit) ch ng trình c n dùng File TURBO.TPL và các file

*.TPU bao g m m t s unit nh CRT, DOS, SYSTEM, GRAPH ó là th vi ncác th t c và các hàm chu n c a Pascal cho phép ng i vi t trình c s d ng

Trang 4

l c v ngôn ng l p trình Pascal 4

ngoài các th t c và cá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 các unit c a riêng mình theo các quy nh c a Pascal

Cách vi t

USES danh sách các unit;

Trong danh sách này, hai unit liên ti p cách nhau m t d u ph y

d) M c Label Li t kê tên các m c c a ch ng trình Cách t tên m c gi ng nhcách t tên ngo i tr u ki n b t u b ng ch cái Nói chung chúng tôi không ng

vi c vi t ch ng trình có khai báo này vì nó che d u tính c u trúc c a ch ngtrình

Cách vi t

Label danh sách các m c;

Trong danh sách này, hai m c liên ti p cách nhau m t d u ph y

e) M c Const Khai báo các h ng (các i l ng không i)

Cách vi t

Const danh sách các tên h ng

Trong danh sách này, hai tên h ng liên ti p cách nhau m t d u ch m ph y

Trang 5

l c v ngôn ng l p trình Pascal 5

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

ra màn hình nh ng thông báo c n thi t gi i thích cho các l nh ph c t p sau này, ta

Ví d 2 Gi s ta mu n vi t ra màn hình thông báo Day la lop 10 Tin hoc và trong

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 này

Begin

Writeln('Day la lop 10 Tin hoc, ');

Writeln('Moi ban lam quen voi Turbo-Pascal');

End.

u ch ng trình này 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 nhau gi a hai l nh Write và Writeln.

Qua hai ví d trên, khi mu n vi t m t dòng thông báo nào ó ra màn hình, ta có thdù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 ' và

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

p n trong 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 trong môi tr ng DOS, ta vào th m c ch a cácfile trên và gõ TURBO r i gõ phím ENTER, còn trong 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 màn hình so n

th o ch ng trình Pascal nh hình v d i ây Ta c ng g i màn hình nàylà m t c a

File Edit Search Run Compile Debug Tools Options Windows Help

Trang 6

-F1 Help F2 Save F3 Open Alt+F9 Compile F9 Make Alt+ -F10 LocalMenu

Hai dòng trên và d i c g i là Menu, m i m c trong Menu t ng ng v i m t

lo i vi c ta có th l a ch n, hai s trên dòng cu i cùng ng n cách nhau b ng d u hai

ch m (:) cho ta bi t v trí c a con tr so n th o ang dòng nào (s tr c) và c t nào(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 trong giai

n ban u khi so n th o và ch y m t ch ng trình vi t b ng Pascal

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à v trí con tr n m sát ngay ch sai u tiên c a ch ng trình Sau khi

a sai n u có, c n ghi l i và ti n hành biên d ch l i cho t i khi ch ng trìnhkhông còn l i

3 N u mu n m m t file ra m t c a s , ta gõ phím F3 r i gõ tên file c n m sau ó

gõ phím Enter

5 ra kh i Pascal, ta gõ ng th i hai phím Alt+X

2 D LI U KI U N GI N

Khi vi t ch ng trình Pascal, i i l ng xu t hi n trong ch ng trình c n ph i

c khai báo tên và ki u c a nó trong m c Var Tu theo bài toán c th , i l ng

ó có th là i l ng cho tr c, i l ng c n tính và nh ng i l ng phát sinh

Trang 7

l c v ngôn ng l p trình Pascal 7

trong quá 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 này nh m gi i thi u các ki u d li u n gi n Lý do c a vi c

ch n thu t ng n gi n không ch vì nói chung chúng n gi n mà ti n dùng saunày trong ph n các ch ng trình con

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, trong m c Var, ta có th ch n m t trong n m cáchkhai báo sau ây

Khi vi t các bi u th c s h c, các phép tính c ký hi u nh sau:

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 các hàm X Mod Y và X Div Y ch xác nh v i Y 0

ng nh trong toán h c, phân bi t các s h ng trong m t bi u th c, ta có thdùng các d u ngo c Tuy nhiên, c n chú ý r ng m c dù trong Toán h c, ta c phép

Trang 8

l c v ngôn ng l p trình Pascal 8

dùng các lo i d u ngo c khác nhau, nh ng trong Pascal, khi vi t các bi u th c, ta ch

c dùng m t lo i d u ngo c duy nh t là các 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 các phép toán s là:

Div và Mod, nhân, c ng và tr

Ví d , a*(b+c) là bi u th c c vi t úng nh ng n u vi t a*[b+c] là sai, không c

hi u là a nhân v i t ng c a b và c N u vi t a*b+c thì bi u th c s có giá tr b ng(a*b)+c

i v i các bi n ki u s nguyên, Pascal có s n m t s hàm chu n và m t s th t cchu n ph c v các tính toán ph bi n nh t

Hàm (Function) chu n là hàm có s n c a Pascal Hàm có th có ho c không 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áccùng ki u Khi dùng hàm, c n bi t rõ các bi n (n u có) c a nó ph i có ki u gì và ki u

li u c a hàm là ki u gì Sau ây là m t s hàm chu n

Hàm Sqr(X): Hàm có bi n X ki u s nguyên và 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 và có giá tr b ng X-1

Hàm Succ(X): Hàm có bi n X ki u s nguyên và có giá tr b ng X+1

Hàm Random(X): Hàm có bi n X ki u Word và có giá tr là m t s nguyên ng unhiên trong ph m vi 0 X-1 Khi dùng hàm này ta ph i khai báo n v ch ng trìnhCRT trong m c Uses và tr c ó ph i g i th t c Randomize;

Bi u th c nguyên là bi u th c nh n c t các bi n và các s nguyên liên k t b icác hàm chu n nêu trên

Th t c (Procedure) chu n là các l nh có s n c a Pascal L nh này cho phép ta th c

hi n m t vi c nào ó Th t c có th có ho c không có bi n và n u có bi n, ta c n

bi t rõ bi n ó có ki u gì Mu n dùng th t c, ta vi t nó 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 các 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 trong 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, trên màn hình s xu t hi n con tr , mu n cho bi n giá tr baonhiêu, ta gõ t bàn phím sau ó gõ phím Enter

Trang 9

l c v ngôn ng l p trình Pascal 9

Tuy nhiên có th dùng ch ng trình m t cách ti n l i, khi nh n giá tr bi n t bànphí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 nào

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 này s c vi t ra màn hình gi i thích cho ng i ch y ch ng trình

n nh p gì 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 pnh

Write('Nhap so nguyen duong N <= 100: ');Readln(N);

2.1.4 Cách vi t giá tr bi n nguyên ra màn hình

vi t giá tr c a bi n ki u nguyên ra màn hình, ta dùng l nh

Write(Tên bi n); ho c writeln(Tên bi n);

Hai l nh này u vi t ra màn hình giá tr c a bi n S khác nhau ch ch sau khi

vi t ra màn hình b ng l nh Write, n u vi t ti p s vi t trên cùng dòng ang vi t dcòn sau khi vi t ra màn hình b ng l nh WriteLn, n u vi t ti p s chuy n xu ng udòng d i vi t

Khi vi t nhi u s liên ti p trên m t dòng, ta nên dùng cách vi t có quy cách b ng

cách dùng l nh

Write/writeln(Tên bi n:K);

trong ó K là h ng s nguyên d ng L nh này có ngh a là dành K v trí liên ti p

vi t giá tr c a bi n, giá tr này vi t ph i nh t i v i K v trí này N u s l ng s

ng i nhi u, vi c ch n K c n c vào hai u ki n:

USES CRT;

VAR TUOI:BYTE;

BEGIN

CLRSCR;

WRITE('MOI BAN CHO BIET TUOI CUA BAN: ');READLN(TUOI);

WRITELN('CAM ON, TOI DA BIET BAN ',TUOI,' TUOI');

READLN;

END.

Ví d 2 Ch ng trình ngh nh p t bàn phím hai s nguyên A, B và vi t ra mànhình t ng, hi u, div và mod c a hai s ó

USES CRT;

Trang 10

l c v ngôn ng l p trình Pascal 10

VAR A,B:INTEGER;

BEGIN

CLRSCR;

WRITE('BAN HAY NHAP SO NGUYEN A = ');READLN(A);

WRITE('BAN HAY NHAP SO NGUYEN B = ');READLN(B);

WRITELN('TONG CUA ',A,' VA ',B,' BANG ',A+B);

WRITELN('HIEU CUA ',A,' VA ',B,' BANG ',A-B);

WRITELN('TICH CUA ',A,' VA ',B,' BANG ',A*B);

IF B<>0 THEN

BEGIN

WRITELN('THUONG CUA PHEP CHIA ',A,' CHO ',B,' BANG ',A DIV B);

WRITELN('PHAN DU CUA PHEP CHIA ',A,' CHO ',B,' BANG ',A MOD B);

Trong Pascal, s th c có hai cách vi t:

1 Cách vi t thông th ng theo ki u Anh-M : cách vi t này t ng t nh ta v n dùngtrong Toán h c, ch khác bi t là d u ng n cách gi a ph n nguyên và ph n phân là

Cách vi t này dùng l u gi s th c trong b nh nh ng khi vi t không quy cách

th c ra màn hình, Pascal vi t d ng (*) v iα có ph n nguyên trong ph m vi 1 9 (ta

gi i thích khái ni m vi t có quy cách và không có quy cách trong m c 2.2.4)

Pascal có 5 ki u dùng khai báo các i l ng là s th c c cho trong b ng d i

ây trong ó i v i b n ki u u, c t mi n giá tr ch mi n bi n thiên c a tr tuy t

Trang 11

l c v ngôn ng l p trình Pascal 11

Comp -9.2e18 9.2e18 19-20 8

Chú ý r ng ki u Comp luôn là s nguyên v i giá tr t -263+1 n 263-1 v i 19-20 ch

có ngh a

Khi ó mu n khai báo m t bi n ki u s th c, tu tình hu ng c th , ta có th ch n

t trong n m cách khai báo sau:

Sau ây là các hàm chu n tr giúp các tính toán v i s th c

Hàm Abs(X): Hàm này có giá tr b ng tr tuy t i ki u s th c c a giá tr bi n ki u

Hàm Sin(X): Hàm này có giá tr b ng sin(X), X tính theo Radian.

Hàm Cos(X): Hàm này có giá tr b ng cosin(X), X tính theo Radian.

Hàm Pi: Hàm này cho ta giá tr c a s π (3.1415 )

Hàm Int(X): Hàm này có giá tr b ng ph n nguyên nh ng có ki u s th c c a giá tr

bi n ki u s th c X ho c s th c X (Ph n nguyên c a s th c X b ng s nguyên l n

nh t trong các s nguyên không l n h n X)

Hàm Frac(X) = X - Int(X): hàm này c ng có ki u s th c.

Hàm Sqr(X): Hàm này có giá tr b ng bình ph ng c a giá tr bi n ki u s th c X

ho c s th c X

Hàm Sqrt(X): Hàm này nh n giá tr b ng c n b c hai c a giá tr không âm c a bi n

ki u s th c X ho c s th c không âm X Chú ý r ng khi dùng hàm này, giá tr c a Xpahir không âm

Hàm Random: Hàm này cho ta m t s th c ng u nhiên trong kho ng (0,1) Khi

dùng hàm này ta ph i khai báo n v ch ng trình CRT trong m c Uses và tr c ó

ph i có lênh Randomize;

Trang 12

l c v ngôn ng l p trình Pascal 12

Hàm Round(X): Hàm này nh n giá tr b ng s nguyên g n s th c X nh t nh ng có

ki u là ki u s nguyên Trong tr ng h p ph n phân c a X là 0.5, hàm này nhân giá

Trang 13

IF C=0 THEN WRITELN('PH NG TRÌNH VÔ NH')

ELSE WRITELN('PH NG TRÌNH VÔ NGHI M')

ki u Longint v i m t bi n ki u Integer có ki u Longint, tích m t bi n ki u Integer

i m t bi n ki u Integer có ki u Integer Do ó khi tính toán các s , ta c n d li u

tr c k t qu tính toán tránh nh n c giá tr không chính xác ho c b báo l itràn s h c (Arithmetic Overflow) n u tr c ó ta t d n biên d ch

{$Q+}

Ví d khi tính di n tích S c a m t hình ch nh t có hai c nh D và R, n u ta khai báo

D và R ki u Integer, m c dù ta khai báo S ki u Longint nh ng giá tr c a S có thkhông nh n c úng n u ta tính S b ng công th c S = DR Nguyên nhân vì hai s

ki u Integer khi nhân v i nhau có th v t ra kh i ph m vi Integer k t qu tínhluôn úng, ta có th dùng hai l nh thay vì m t: S:=1; S:=S*D*R

Trong ch ng trình sau n u nh p giá tr D = R =1000, ta s th y di n tích âm n ukhông t d n biên d ch {$Q+}và b báo l i tràn s h c (Arithmetic Overflow) n u

tr c ó ta t d n biên d ch ki m soát các tính toán ra ngoài ph m vi c a ki u s

c khai báo: {$Q+}.

Trang 14

Write('Nhap chieu dai hinh chu nhat = ');ReadLn(d);

Write('Nhap chieu rong hinh chu nhat = ');ReadLn(r);

Writeln('Dien tich hinh chu nhat = '),d*r);

chân lý hay g i t t là giá tr và trong Pascal ta dùng các tên True, False.

Ví d 5 là s nguyên t là m t m nh lô gic có giá tr úng nh ng à i ti ng m ru

nhè nh không là m t m nh lô gic

i hai u ki n lô gic P và Q, ta có th l p các u ki n lô gic sau:

P và Q

P ho c Q

Không P

Các phép và, ho c, Không c g i là các phép toán lô gic

Giá tr c a các u ki n này c cho trong b ng sau

Trong l p trình, i l ng ki u lôgic là các i l ng ch nh n m t trong hai giá trTRUE ( úng) và FALSE (sai) Các giá tr True, False c xem là các giá tr c a

bi n ki u Boolean

ki n so sánh giá tr c a các bi n, có hay không có m t s ki n nào ó, tìm th y/ch atìm th y l i gi i

Các u ki n lô gic th ng do các u ki n lô gic n gi n ghép l i nh các liên t

và, ho 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

Trang 15

ng nh khi vi t các bi u th c s h c, phân bi t các thành ph n trong u ki n

lô gic, ta ch c dùng các d u ngo c tròn N u không dùng d u ngo c tròn, th t

u tiên s là Not, And, Or

Sau ây là m t s u ki n lô gic vi t trong so sánh v i m t s u ki n th ng g ptrong toán h c

Tên bi n := u ki n lô gic;

Ta c ng có th vi t giá tr c a u ki n lô gic và nói riêng là bi n ki u boolean ramàn hình b ng m t trong hai l nh

Write( KLG) ho c WriteLn( KLG)

2.4.3 Câu l nh If < KLG> Then <Nhóml nh1> Else <Nhóml nh2>

Khi gi i m t s bài toán, ta th ng có các câu bi n lu n nh :

ng 1

u m t K nào ó tho mãn thì

di n t câu này, ta có th dùng câu l nh sau:

IF < KLG> THEN <Nhóml nh>; (*)

Trong câu l nh (*), n u u ki n lô gic úng, nhóm l nh c th c hi n sau ó s

th c hi n l nh ti p theo c a ch ng trình, n u u ki n lô gic không úng, l nh ti ptheo c a ch ng trình c th c hi n

ng 2

u m t K nào ó tho mãn thì n u không thì (2)

Trang 16

Khi dùng các l nh này, ta ph i tuân theo các quy nh sau:

1 u nhóm l nh có h n m t l nh, ta ph i t trong m t c p Begin-End

2 Sát tr c Else không có d u ;.

3 Các nhóm l nh trong câu l nh If Then <Nhóm L nh 1> Else <Nhóm l nh

2> c ng có th l i có câu l nh d ng If Then Else khi ó c n quy c

vi c hi u Else nào g n v i If nào Quy c ó là nh sau: Else g n v i If

ngay tr c nó không n m gi a m t c p Begin-End và ch a có Else.

Ch ng trình gi i ph ng trình b c hai cho trong ph n Bài t p và th c hành c a M c

1 có th dùng minh ho cho quy c này

write('Nhap so nguyen M = ');readln(m);

write('Nhap so nguyen N = ');readln(n);

if n<>0 then

begin

if m mod n = 0 then

writeln(m,' chia het cho ',n)

else writeln(m,' khong chia het cho ',n);

write('Nhap so thuc B = ');readln(b);

write('Nhap so thuc C = ');readln(c);

Trang 17

li u theo úng m t s quy nh nào ó Nh ng quy nh ó s c th hi n b i m t

u ki n lô gic ( KLG) Mu n ng i s d ng ch ng trình nh p d li u úng theoquy nh, ta có th dùng n ch ng trình sau:

Khi th c hi n n l nh này, n u nh p không úng m t s nguyên d ng không l n

n 100, ng i nh p s ph i nh p l i cho t i khi úng các l nh ti p theo m i c

th c hi n

Trang 18

khi ó sai s s không quá 1/n!.

Bài toán t ra là cho tr c m t sai s SS nào ó, ta c n tính s e v i sai s khôngquá SS Thu t toán tính s e d a vào công th c tính g n úng nói trên Ta s tính e

ng cách c ng liên ti p vào s 1 các s có d ng 1/1!, 1/2!, , 1/k! Sau m i l n

ng, ta só sánh 1/k! v i SS, n u nó nh h n, quá trình tính k t thúc S b c l p l ithao tác c ng không xác nh c tr c mà tu thu c giá tr c a sai s SS

Ví d 3 Ta bi t r ng n u f(x) là hàm s liên t c có giá tr t i A và B trái d u nhau thì

có giá tr C v i A < C < B sao cho f(C) = 0 Nói chung giá tr c a C không tính cchính xác mà ch g n úng v i m t sai s SS nào ó cho tr c

Bài toán t ra là cho tr c m t hàm s liên t c f(X), m t sai s SS và hai s th c A,

B Hãy ki m tra xem f(A) và f(B) có trái d u nhau hay không N u chúng trái d u,hãy tìm nghi m c a ph ng trình f(X) = 0 v i sai s không quá SS

Thu t toán mà ta gi i thi u ây thu c lo i thu t toán "S n s t trên sa m c" Ý

ng c a lo i thu t toán này là s n m t con s t trên m t sa m c mênh mông, tachia ôi sa m c, b ng m t cách nào ó (Ví d nh v tinh!) ta nh n bi t c n a sa

c có s t , ta l i chia ôi n a ó r i l i chia ôi n a có s t m t lúc nào ó

ph n sa m c có s t khá bé thì ta có th d dàng "b t" c s t

Trong tr ng h p ang xét, trong n [A,B] f(X) có nghi m Xem n ó nh "sac" và nghi m là s t Chia ôi n ó thành hai n (hai n a sa m c)[A,(A+B)/2] và [(A+B)/2,B] N u f((A+B)/2) = 0, ta thu c nghi m c n tìm, n u

Trang 19

l c v ngôn ng l p trình Pascal 19

không, n ch a nghi m s là m t trong hai n con mà giá tr c a f t i hai umút trái d u nhau Thay n [A,B] b i n con ch a nghi m và l i ti p t c quátrình chia ôi nh trên Có hai kh n ng x y ra:

1 Ho c ta thu c nghi m t i trung m c a m t n con nào ó

2 Ho c ta nh n c m t n ch a nghi m mà dài c a nó nh h n SS Khi

ó ta có th nh n u trung m c a n ó làm giá tr c a nghi m v i sai skhông quá SS

l n chia ôi n có nghi m không xác nh tr c c mà ph thu c t ng hàm f

th và sai s SS, nh ng ta k t thúc quá trình ó khi m t trong hai kh n ng 1 ho c

2 x y ra

Ta xét m t ví d Gi s C là m t s th c d ng và K là m t s nguyên d ng, ta c ntìm c n s h c b c K c a C

writeln('Tinh can bac hai cua mot so thuc duong C');

write('Nhap so thuc duong C = ');readln(c);

until c>0;

repeat

clrscr;

writeln('Voi sai so ss cho truoc');

write('Nhap sai so SS duong va nho hon 0.001: '); readln(ss);

Trang 20

Khi th c hi n l nh này, n u KLG úng, các l nh trong nhóm l nh c th c hi n,sau ó, n u KLG v n úng thì s quay l i th c hi n nhóm l nh, n u không, l nh l p

Repeat Nhóm l nh Until Not(DK);

Ta có th chuy n vi c dùng l nh Repeat-Until thành l nh While-Do trong các ví d 2

và 3 trên

2.4.5.2 L nh Break

trong nhóm l nh c a l nh While , n u l nh Break c th c hi n thì vòng l p k tthúc và sau ó th c hi n l nh ti p theo c a ch ng trình

2.5 Ki u ký t

Trang 21

Gi a các ký t có quan h so sánh < N u C1 và C2 là hai ký t , C1<C2 hay t ng

ng C2>C1 n u C1 ng tr c C2 trong b ng mã ASCII

Khi mu n vi t các u ki n so sánh gi a các bi n ki u ký t <, >, ≤, ≥, ≠, =, trong

ch ng trình ta vi t t ng ng nh sau:

<, >, <=, >=, <>, = 2.5.1 Cách khai báo

khai báo bi n ki u ký t , ta vi t:

Tên bi n:Char;

Bi n ki u ký t dùng m t byte b nh ghi nh n giá tr

2.5.2 Các hàm và th t c liên quan

Hàm Chr(X): Có giá tr là ký t có mã ASCII th p phân b ng giá tr c a bi n X

ki u Byte ho c s nguyên X trong ph m vi 0 255

Hàm Ord(C): Có giá tr là mã ASCII th p phân c a ký t là giá tr c a C

Hàm Pred(C): Có giá tr b ng ký t ng ngay tr c ký t là giá tr c a C trong

ng mã ASCII

Hàm Succ(C): Có giá tr b ng ký t ng ngay sau ký t là giá tr c a C trong

ng mã ASCII

Hàm UpCase(C): Có giá tr b ng ch cái hoa ng v i ký t là giá tr c a C n u ký

là giá tr c a C là ch cái và b ng C n u C không là ch cái

Trang 23

writeln(x,' dung truoc ',y,' trong bang ma ASCII');

if x=y then writeln(x,' bang ',y);

Trong khi gi i nhi u bài toán, có th l i gi i ph thu c vào nhi u tình hu ng (vi t t t

là TH), m i tình hu ng c quy nh b i m t s giá tr c a m t bi u th c có giá tr

nguyên hay ký t Khi ó ta có th dùng câu l nh này di n t quá trình bi n

lu n

nh có m t trong hai d ng sau:

ng th nh t

Case Bi uth c Of TH1:Nhóml nh1;

TH2:Nhóml nh2;

THK:Nhóml nhK;

End;

i l nh d ng th nh t, khi th c hi n, n u giá tr c a bi u th c thu c tình hu ng I,

1≤I≤K nhóm l nh I c th c hi n, sau ó th c hi n ti p l nh ngay sau l nh Case

ng th hai

Case Bi uth c Of TH1:Nhóml nh1;

TH2:Nhóml nh2;

THK:Nhóml nhK;

Else Nhóml nhK+1;

End;

i l nh d ng th hai, khi th c hi n, n u giá tr c a bi u th c thu c tình hu ng I,

1≤I≤K nhóm l nh I c th c hi n n u không, nhóm l nh K+1 c th c hi n, sau

ó th c hi n ti p l nh ngay sau l nh Case

Khi dùng l nh này, Pascal có các quy nh sau:

1 Bi u th c ch có th có giá tr ho c ki u ký t ho c ki u s nguyên.

Trang 24

l c v ngôn ng l p trình Pascal 24

2 Các tình hu ng có th là m t giá tr c th c a bi u th c ho c m t n giá tr liên ti p mà bi u th c có th nh n Khi ó, n giá tr c vi t nh sau: Giá

tr u .Giá tr cu i.

3 u nhóm l nh có h n m t l nh thì nhóm l nh ph i t gi a m t c p End.

'A' 'Z','a' 'z':WriteLn('Ky tu la chu cai');

'0' '9':WriteLn('Ky tu la chu so');

'+','-','*','/':WriteLn('Ky tu la dau phep toan');

X, c t Y

t l nh u khi n chuy n ng c a rô b t g m hai s nguyên H, K, H thu c mi ngiá tr 1 4 ch h ng chuy n ng c a rô b t c n th c hi n: 1 (B c), 2 (Nam), 3ông) và 4 (Tây), K là m t s nguyên d ng th hi n s b c di chuy n Sau khi

nh n l nh, rô b t s di chuy n theo h ng H K ô tính t ô [X,Y]

Sau khi th c hi n m t l nh, có hai kh n ng x y ra:

1 Rô b t i ra ngoài b ng

2 Rô b t v n trong b ng

Vi t ch ng trình nh p các giá tr M, N, X, Y, H, K t bàn phím và thông báo ra mànhình các thông tin sau:

Dòng th nh t ghi s 1 ho c 2 tu theo kh n ng 1 ho c 2 x y ra

u dòng th nh t ghi s 2, dòng th hai ghi ch s dòng và ch s c t c a ô mà rô

Trang 25

l c v ngôn ng l p trình Pascal 25

write('So dong cua bang M = ');readln(m);

write('So cot cua bang N = ');readln(n);

write('Vi tri dong cua ro bot X = ');readln(x);

write('Vi tri cot cua ro bot Y = ');readln(y);

write('Huong chuyen dong cua ro bot (so nguyen 1 4): '); readln(h);

write('So buoc chuyen dong cua ro bot: ');readln(k);

if kn=0 then writeln('Gia tri huong nhap khong dung');

if kn=1 then writeln('Ro bot ra ngoai bang');

if kn=2 then

begin

writeln('Ro bot o trong bang');

writeln('Vi tri moi cua Ro bot: dong ',x,', cot ',y);

end;

readln;

End.

Ví d 3 Ch ng trình sau nh p t bàn phím tháng trong ph m vi 1 12 và m t n mnào ó sau ó thông báo ra màn hình s ngày c a tháng ó

Trang 26

l n xu t hi n trong xâu c g i là dài c a xâu Ta th a nh n m t xâu c bi t

i là xâu r ng Xâu r ng là xâu không có ký t nào (do ó có dài b ng 0) c

ký hi u là '', xâu này th ng c dùng kh i t o giá tr c a m t xâu ký t cxây d ng d n qua nhi u b c

hi n trong xâu Ví d xâu Khai báo s c ghi nh n nh sau:

Cách th hai

Tên bi n:String[N];

i cách khai báo này, xâu có dài không quá N v i N là s có giá tr nguyên

ng c th không l n h n 255 Giá tr c a bi n s c ghi nh n trong n N+1byte liên ti p trong ó byte u tiên ghi dài xâu còn các byte ti p theo l n l t m ibyte ghi m t ký t thu c xâu theo th t xu t hi n trong xâu

Ví d theo th ng kê, tên m i ng i Vi t Nam u không quá 30 ký t , ta có th khaibáo nh sau:

Var Ten:String[30];

u S là m t bi n ki u xâu ký t , v i i là m t s nguyên d ng t 1 n dài c a

S, S[i] ký hi u ký t th i c a xâu S tính t ký t trái nh t c a xâu Khi ó S[0] ghi

Trang 27

l c v ngôn ng l p trình Pascal 27

Hàm Copy(S, M, N): Có giá tr b ng xâu con g m N ký t liên ti p c a xâu S

t u t ký t th M

Ví d n u S = 'abcdefghijk' thì Copy(S,3,4) = 'cdef'

u t ký t th M không có N ký t liên ti p thì Copy(S,M,N) cho ta n uôi

a xâu S b t u t ký t th M

Hàm Pos(S1, S2): Có giá tr b ng s nguyên d ng M là v trí xu t hi n u tiên

a xâu S1 trong xâu S2 n u S1 xu t hi n trong S2 và b ng 0 n u S1 không xu t hi ntrong S2

Ví d n u S1 = 'ab' và S2 = 'cabddab' thì Pos(S1,S2) = 2 nh ng n u S3 = 'db' thìPos(S3,S2) = 0

Th t c Delete(S, M, N); Th t c này xoá N ký t liên ti p b t u t ký

th M c a xâu S N u t ký t th M không có N ký t liên ti p thì sau khi th c

hi n l nh Delete(S,M,N), xâu S s b xoá i n cu i b t u t ký t th M

Ví d N u S = 'abcdefghijk' thì sau khi th c hi n l nh Delete(S,4,4);, S s là xâu'abchijk'

Th t c Insert(S1, S2, N); Th t c này chèn xâu ký t S1 vào tr c ký

Th t c Val(S, X, Code); V i th t c này, n u xâu S là d ng vi t c a m t s , k t

qu cho ta s X là d ng s c a S và giá tr c a Code (ki u Integer) s b ng 0 ( úng)

u xâu S không là d ng vi t c a m t s , k t qu cho ta giá tr c a Code khác 0 (sai)

Ví d n u S = '1.35' thì sau khi th c hi n l nh Val(S,X,Code), ta có X = 1.35 và Code

= 0 Nh ng n u S = '1,35' thì sau khi th c hi n l nh Val(S,X,Code), ta có Code ≠ 0

và d nhiên không có giá tr c a X

Trang 28

l c v ngôn ng l p trình Pascal 28

Chú ý

ng nh khi s d ng l nh gán cho các bi n s , ta có th gán tr là m t ký t cho m t

bi n xâu ký t nh ng vi c gán tr là m t xâu ký t cho m t bi n ki u ký t là không

p l dù xâu ó có dài b ng 1

Trong ch ng trình, khi vi t m t xâu ký t c th , ta ph i vi t xâu ký t ó gi a hai

u ' nh ng khi nh p t bàn phím m t xâu ký t c th , ta ch gõ úng xâu ký t ó

Chú ý quan tr ng

Trong ch ng trình, ghi vi t m t xâu ký t c th , ta ph i vi t ký t ó gi a hai d u '

nh ng khi nh p t bàn phím m t xâu ký t c th , ta ch gõ úng các ký t thu c xâuó

write('Nhap xau ky tu thu nhat S1= ');readln(s1);

write('Nhap xau ky tu thu hai S2= ');readln(s2);

Trang 29

writeln('Xau ',s,' sau khi xoa 5 ky tu lien tiep');

writeln('bat dau tu ky tu thu 3 bang ',s);

writeln('Xau nhap vao S = ',s);

writeln('Doan gom 5 ky tu lien tiep cua xau ',s);

writeln('bat dau tu ky tu thu 3 bang ',copy(s,3,5));

readln;

End.

Ví d 2 Vi t ch ng trình nh p t bàn phím m t ký t C và m t xâu ký t S Hãycho bi t s l n xu t hi n c a C trong S K t qu thông báo ra màn hình

gi i bài toán này, ta l n l t xét các ký t c a xâu S b t u t ký t th nh t n

Trang 30

write('Nhap mot ky tu: ');readln(c);

write('Nhap mot xau ky tu: ');readln(s);

writeln('Ky tu ',c,' khong xuat hien trong xau ',s)

else writeln('Ky tu ',c,' xuat hien trong xau ',s)

readln;

End.

Ví d 3 Vi t ch ng trình nh p t bàn phím xâu ký t S Hãy cho bi t có hay không

t xâu ký t X≠S sao cho S là ghép m t s l n xâu X N u có xâu X nh v y, ch nxâu X có dài l n nh t có th c K t qu thông báo ra màn hình nh sau: N ukhông có xâu X nh v y, vi t s 0, n u có, vi t s K là dài xâu X

Ta có nh n xét sau: n u có xâu X, dài c a xâu X b ng K ph i là c c a N, dàixâu S và X ph i là n u g m K ký t c a S Do ó, v i m i giá tr K là c c a

N, ký hi u L = N div K, ta xét xâu S1 là ghép c a L n u g m K ký t c a S

u S1 = S, ta có n u ó là m t xâu X c n tìm Vì yêu câu ch n X có dài l n

nh t, ta xét các giá tr K gi m d n, giá tr u tiên tho mãn co X có dài l n nh t ghi nh n vi c có/không có xâu X, ta dùng m t bi n ki u Boolean Found màFound = True n u có X và b ng False n u không có X

Sau ây là ch ng trình

uses crt;

var

Trang 31

Trong các bài toán, ta th ng g p các dãy s , dãy xâu ký t , b ng s , D li u ki u

ng cho phép ta th hi n các i l ng thu c lo i này th hi n các dãy, ta dùng

ng m t chi u, các b ng g m các dòng và các c t, ta dùng m ng hai chi u

- Hai ký t thu c b ng mã ASCII mà CSD≤CSC

Ki u có th là m i ki u mà Pascal ch p nh n tr ki u File (ta s nói n trong cu i

ch ng này)

Ví d 1 Các khai báo sau là h p l :

A:Array[-10 100] Of Real;

B:Array['A' 'Z'] Of Integer;

Ví d 2 V i bài toán cho dãy s nguyên A g m không quá 100 s h ng, các s h ng

có tr tuy t i không quá 1000 th hi n dãy A, ta có th khai báo

Trang 32

th hi n b ng s này, ta có th dùng m ng hai chi u.

Bi n m ng hai chi u c khai báo nh sau:

Ví d 1 Các khai báo sau là h p l :

Trang 33

l c v ngôn ng l p trình Pascal 33

Trong các l nh này, bi n còn th ng c g i là ch s ch y

Khi vi t l nh này, Pascal quy nh nh sau:

1 Bi n, CS1 và CS2 ph i cùng ki u ch thu c m t trong hai lo i s nguyên

3.1.3 Cách nh n giá tr cho bi n ki u m ng

u có hai m ng A, B cùng kích th c và ki u ph n t nh nhau ng th i ta ã bi tgiá tr c a B thì ta có th nh n giá tr cho A b ng l nh gán

A:=B;

Th ng ta nh n giá tr c a m ng b ng cách dùng câu l nh l p v i s b c l p xác

nh nh n giá tr cho t ng ph n t ây là cách nh n giá tr ph bi n nh t N u

ng là m t chi u, ta dùng m t vòng l p For, n u m ng là hai chi u, ta dùng haivòng l p For

Gi s m ng m t chi u A có N ph n t v i ch s t 1 n N, nh n giá tr cho

ng A, ta dùng l nh

For I:=1 to N do <Nh n giá tr cho ph n t A[I]>

Khi nh n giá tr cho A[I], tu theo ki u d li u c a ph n t , ta có th nh n t bànphím ho c b ng l nh gán

Gi s m ng hai chi u B có M dòng và N c t, nh n giá tr cho m ng B, ta dùngnh

For I:=1 to M do

For J:=1 to N do <Nh n giá tr cho ph n t B[I,J]>

Khi nh n giá tr cho B[I,J], tu theo ki u d li u c a ph n t , ta có th nh n t bànphím ho c b ng l nh gán

Chú ý. i v i bi n ki u m ng, vi c dùng l nh

Read(tên bi n); ho c ReadLn(tên bi n);

không h p l

Ngày đăng: 04/04/2016, 01:04

TỪ KHÓA LIÊN QUAN

w