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

Sơ lược về ngôn ngữ lập trình pascal

66 503 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Sơ lược về ngôn ngữ lập trình Pascal
Trường học Trường Đại học Công nghệ thông tin - Đại học Quốc gia Hà Nội
Chuyên ngành Lập trình
Thể loại Bài giảng
Năm xuất bản 2023
Thành phố Hà Nội
Đị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

Tài liệu sơ lược về ngôn ngữ lập trình pascal, dễ hiểu

Trang 1

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

- 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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

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

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

-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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

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, 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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Trang 12

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

P Q P Và Q P Ho c Q Không P

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 17

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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 20

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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 22

Nguy n Xuân My Tr i hu n luy n IOICamp.net

Trang 25

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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 26

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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 27

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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 28

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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 29

Nguy n Xuân My Tr i hu n luy n IOICamp.net

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

Ngày đăng: 09/05/2014, 05:06

TỪ KHÓA LIÊN QUAN

w