Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Ch

Ầ Ơ Ả Ữ Ậ Tin hoïc THCS ươ Ủ ng 1 CÁC THÀNH PH N C  B N C A NGÔN NG  L P TRÌNH PASCAL

ộ ư ệ ậ ạ ọ ng Đ i h c k

ữ ậ ấ ề ể ỷ ệ ỹ  ế ọ   t h c

ườ Pascal là m t ngôn ng  l p trình b c cao do Niklaus Wirth, giáo s  đi n toán tr ậ ọ ườ i Pháp n i ti ng Blaise Pascal.

ấ thu t Zurich (Th y Sĩ) đ  xu t năm 1970. Ông l y tên Pascal đ  k  ni m nhà toán h c và nhà tri ng 1. Các t p tin c n thi

ậ ể ậ ể ầ ụ ổ ế ế ầ ượ ớ Đ  l p trình đ ớ t khi l p trình v i Turbo Pascal ố i thi u c n 2 file sau: (cid:0) ể ạ ươ ị ng trình.

(cid:0) ậ c v i Turbo Pascal, t ả TURBO.EXE: Dùng đ  so n th o và d ch ch ẩ ớ ị

ố ậ ư ệ ồ ơ TURBO.TPL: Th  vi n ch a các đ n v  chu n đ  ch y v i TURBO.EXE. ả ầ ể ạ ậ

ư ệ

(cid:0) ứ ạ Ngoài ra, mu n l p trình đ  ho  thì ph i c n thêm các t p tin: (cid:0) GRAPH.TPU: Th  vi n đ  ho . ạ ồ ạ ươ ứ ề ể ồ ạ ng  ng khi dùng đ  ho . *.BGI: Các file đi u khi n các lo i màn hình t

(cid:0) ữ ồ ọ

ươ ng trình Pascal

ứ ậ ươ

ỗ ả ử ỗ i thì ph i s a l i.

ạ 2. Các b B B B ế F9), n u có l Ctrl + F9).

ả ươ ươ ủ *.CHR: Các file ch a các font ch  đ  h a. ướ ơ ả c 1ướ : So n th o ch ạ c 2ướ : D ch ch ị c 3ướ : Ch y ch ấ ng trình Pascal

ộ ươ

{Khai báo h ng}ằ

ằ ế ữ ệ ế ể {Khai báo bi n}ế

ộ c c  b n khi l p m t ch ng trình. ấ ng trình (nh n phím  ấ ng trình (nh n phím  ươ 3. C u trúc chung c a m t ch ng_Trình>; Program   = ;  Var      , : ;  Begin

ệ ế ả }

ế ế ầ  { N u c n}

ầ ệ ế ử Clrscr; { L nh xóa màn hình k t qu ậ ệ Write(‘’); Readln(); ả      {X  lĩ  và hi n k t qu }

ế ả ế ầ { N u c n}

ữ ả ế Writeln(‘’,);  ả ế  màn hình k t qu } Readln; {Gi

: ươ ầ ụ ằ ỗ ả ứ ự ng trình thì ph i tuân theo th  t ặ ố (CONST) ho c sau ầ  trên, ví d : ph n khai báo   ầ   (VAR)... sau m i ph n ấ End. ả Gi i thích c u trúc các khai báo trên ế ầ N u có ph n khai báo nào c n cho ch ầ ể ặ ư ệ (USES) không th  đ t sau ph n khai báo h ng s   th  vi n  ả khai báo ph i có d u ‘;’. ừ ể ươ ươ ả ng trình. Tên ch ng trình ph i tuân theo quy ­ Program: T  khoá này dùng đ  khai báo tên ch t c:ắ ữ

ệ ặ ố ở ầ ư ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’, đ t bi t nh :

ấ ;’. ế ầ ể ừ ươ ư ệ cho ch ng trình ệ ử ụ Unit (th  vi n)  ố ử ụ ừ ể ằ ươ ố   ng trình, khi báo h ng s  là ằ ộ ằ ằ ụ vi c c  đ nh m t vài giá tr  nào đó trong ch ừ ươ ng trình thông qua tên h ng, ví d  cách khai báo h ng: ng trình. Bi n s  là các ự ố  tr ng xen gi a. + Không có ký t ự ầ  đ u tiên. + Không đ t s    ký t ự ặ ứ + Trong ph n tên không ch a các ký t ‘&’, ‘* ’, ‘(‘, ‘)’, ‘­‘, ‘+’, ‘/’, ‘\’, ‘.’, ’,’,.v.v. ả + K t thúc ph i có d u ‘ + Ph n này có th  không có. ể  ­ Uses: T  khoá này dùng đ  khai báo vi c s  d ng   ­ Const: T  khoá này dùng đ  khai báo các h ng s  s  d ng trong ch ị ệ ố ị ể  ­ Var: T  khoá dùng đ  khai báo các bi n s  đ ạ c s  d ng trong ch ủ ể ế ố ề ế ố ấ ươ ế ố ượ ử ụ ươ ỹ ở ệ ậ ị ọ ượ ộ ệ ụ ề ế ổ ượ trong su t quá trình ch y c a ch c trình bày k ố ệ (khái ni m này đ giá    ng trình. Khái ni m v  bi n s  r t quan  bài 3). c  tr  có th  thay đ i đ tr ng trong vi c l p trình M t ví d  v  cách khai báo bi n:

1 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ả ắ ề ộ ố ứ ự ệ ắ  các khai báo trên là đi u b t bu c, ta ph i n m th  t ộ ể ạ ờ ử ụ ặ ấ ặ ươ ư    này cho dù m t s  khái ni m ta ch a ồ   i chú thích, ta s  d ng c p d u {...} ho c (*...*) l ng ng trình Pascal, đ  t o l Var HoDem, Ten : String;                         N : Integer; Ghi chú: ứ ự ­ Th  t ế c bi t. Trong ch

ệ ầ ẩ ằ ấ ượ đ các câu chú thích vào bên trong nó. ộ ể ế ộ ặ ệ ề t m t ho c nhi u câu l nh. Các l nh cách nhau b ng d u ch m ph y.

­ Trên m t dòng có th  vi Ví d  :ụ Program GioiThieu; Begin Writeln ( ‘Truong THCS Luong Tam‘ ); Write ( ‘Ap 3 – Luong Tam – Long My – Hau Giang‘ ); End. ơ ả ạ ả ươ 4. Các thao tác c  b n khi so n th o ch ng trình

ặ ạ ở ộ

ể ể ỗ

ươ ạ ế ỏ ươ ng trình Pascal. ư ươ ­ F2: L u ch ng trình trong khi so n th o. ớ ộ ạ ­ F3: T o m t file m i ho c m  m t file cũ. ử ươ ị ­ F9: D ch th  ch i. ng trình đ  ki m tra l ươ ạ ng trình. ­ Ctrl ­ F9: Ch y ch ả ạ ng trình. ­ Alt ­ F5: Xem k t qu  ch y ch ả ­ Alt ­ X: Thoát kh i màn hình so n th o ch

(cid:0) ạ ế ộ ế ộ ữ i gi a ch  đ  đè và ch  đ  chèn. Insert: Chuy n qua l

ỏ ề ầ ư ể (cid:0) Home: Đ a con tr  v  đ u dòng.

(cid:0) ỏ ề ố ư End: Đ a con tr  v  cu i dòng.

(cid:0) ư ỏ ộ Page Up: Đ a con tr  lên m t trang màn hình.

(cid:0) ư ỏ ố ộ Page Down: Đ a con tr  xu ng m t trang màn hình.

(cid:0) ự ạ ị ngay t ỏ i v  trí con tr . Del: Xoá ký t

(cid:0) ự ỏ  bên trái con tr . Back Space (): Xóa ký t

(cid:0) ỏ ề ầ ư ả Ctrl­PgUp: Đ a con tr  v  đ u văn b n.

(cid:0) ỏ ề ố ư ả Ctrl­PgDn: Đ a con tr  v  cu i văn b n.

(cid:0) ạ ị ỏ i v  trí con tr . Ctrl­Y: Xóa dòng t

ầ ơ ả ủ ầ ươ 5. Các thành ph n c  b n trong ph n khai báo c a ch ng trình

ể ừ ố ượ ặ ặ ố   ng trong Pascal, khi ta đ t tên cho đ i ừ ượ ặ ừ ượ t khoá. ữ ừ ồ dùng đ  khai báo, đ t tên cho đ i t ớ c đ t trùng tên v i các t  khoá trong ngôn ng  Pascal g m:

ừ a. T  khóa  khoá là các t Các t ng nào đó, không đ ả B ng t and, array, begin, case, const,  div, do, downto, else, end, file, for, function, goto, if, in, label, mod, nil,   not, object, of, or, procedure, program, record, repeat, set, string, then, to, type, unit, until, uses, var,   while, with... ệ ụ ặ ế ư Turbo Pascal không phân bi t ký t ự ườ  th ng ho c hoa. Ví d , các cách vi t sau có ý nghĩa nh  nhau:

Begin, BEGIN, begin, beGIN, bEGIN,... ị b. Tên (đ nh danh) ị ộ ể ặ ế ể ằ ươ dùng đ  đ t tên cho các h ng, bi n, ki u, tên ch ng trình con...

ự ộ ố ể ặ Khi đ t tên, ta ph i chú ý m t s  đi m sau:

ượ ặ ớ ừ Tên (đ nh danh) là m t dãy ký t ả  Không đ c đ t trùng tên v i t khoá.

2 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ắ ầ ự ặ ượ ủ ệ ặ ở c b t đ u b i các ký t đ c bi

ự ớ ự ầ  đ u tiên c a tên không đ ặ c đ t tên v i ký t ữ ố t ho c ch  s . Không  space, ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’,‘&’, ‘* ’, ‘(‘, ‘)’, ‘­‘, ‘+’, ‘/’, ‘\’, ‘.’,

 Ký t ượ đ ’,’,.v.v

ộ ạ ượ ổ ị ố ươ ng có giá tr  không thay đ i trong su t ch ng trình.

ằ ị

c. H ngằ ằ ­ H ng là m t đ i l ­ Cú pháp khai báo:  CONST  = ; Ví dụ: CONST Max = 100;

Name = 'Tran Van Hung'; Continue = FALSE;

ộ ạ ượ ị ủ ự ể ệ ổ ươ ng mà giá tr  c a nó có th  thay đ i trong quá trình th c hi n ch ng trình.

d. Bi nế ế ­ Bi n là m t đ i l ­ Cú pháp khai báo: VAR ,,... : ; Ví dụ:

ể ế VAR

ế ầ

ể ầ ơ ả ể ứ ồ ể ươ 6. Các thành ph n c  b n trong ph n thân ch ứ a. Bi u th c:

ứ ự ư ứ ự ượ ủ ệ ứ ộ x, y: Real;  {Khai báo hai bi n x, y có ki u là Real} a, b: Integer;  {Khai báo hai bi n a, b có ki u integer} ng trình ứ Bi u th c (expression) là công th c tính toán mà trong đó bao g m các phép toán, các  ấ ặ ơ ế ằ h ng, các bi n, các hàm và các d u ngo c đ n. ể ứ ố ọ Ví dụ:  (x +sin(y))/(5­2*x) bi u th c s  h c ứ ể bi u th c logic   u tiên c a các phép toán đ t kê theo th  t sau: c li (cid:0) (x+4)*2 = (8+y) ể Trong m t bi u th c, th  t ặ ấ (cid:0)

(cid:0)

(cid:0) D u ngo c ( ) ộ Phép toán m t ngôi (NOT, ­). Phép toán *, /, DIV, MOD, AND. Phép toán +, ­, OR, XOR (cid:0)

ế ộ ộ ượ ứ ơ ứ ể ể ả . c xem là bi u th c, đó là bi u th c đ n gi n Phép toán so sánh =, <, >, <=, >=, <>, IN ộ  Chú ý: M t hăng, m t bi n, m t hàm cũng đ

b. Câu l nhệ

ệ  Câu l nh đ n gi n ả

ệ ệ ứ ậ ữ ệ READ/READLN, WRITE/WRITELN.

ệ ấ ơ : ế :=; ­ Câu l nh gán (:=) ấ ­ Các l nh xu t nh p d  li u:   Câu l nh có c u trúc

ể IF.., CASE..., FOR..., REPEAT..., WHILE...

ể ệ ử ụ ạ ấ ữ ệ Đ  xu t d  li u ra màn hình, ta s  d ng ba d ng sau:

ố ấ ữ ệ ố

ư

ố ầ ấ ấ ỏ ỏ ố

ứ ị ủ ị ủ ộ ấ ố

ệ ế ề ố ố ứ ế ệ ­ Câu l nh ghép:  BEGIN ... END; ề ấ ­ Các c u trúc đi u khi n:   L nh xu t d  li u:  (1)WRITE( [, ,...]); ố (2)WRITELN( [, ,...]); (3)WRITELN; ủ ụ Các th  t c trên có ch c năng nh  sau: ố (1) Sau khi xu t giá tr  c a các tham s  ra màn hình thì con tr  không xu ng dòng. (2) Sau khi xu t giá tr  c a các tham s  ra màn hình thì con tr  xu ng đ u dòng ti p theo. ế ố (3) Xu t ra màn hình m t dòng tr ng. ể Các tham s  có th  là các h ng, bi n, bi u th c. N u có nhi u tham s  trong câu l nh thì các tham

ả ượ ằ ở ấ ố s  ph i đ

ể c phân cách nhau b i d u ph y. ữ ệ ừ ữ ệ ừ ế ẩ ế   ể  bàn phím vào các bi n có ki u d  li u chu n (tr  các bi n

 Nh p d  li u:

ẩ ể ậ ữ ệ Đ  nh p d  li u t ể ậ ử ụ ki u BOOLEAN), ta s  d ng cú pháp sau đây:

3 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

ế ế Tin hoïc THCS READLN( [,,...,]);

ố ươ ẽ ừ ạ ng trình s  d ng l ờ i ch  ng ườ ử ụ   i s  d ng

ế ệ READLN; (không có tham s ), ch ớ ế ấ ạ ặ Chú ý: Khi g p câu l nh  nh n phím ENTER m i ch y ti p.

4 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Tin hoïc THCS ươ

Ch Ể ng 2 Ữ Ệ Ơ Ả CÁC KI U D  LI U C  B N

ạ ể ể ễ ặ ừ ể (True) ho c sai (False). T  khoá đ  khai báo cho I. KI U LOGIC ể ki u logic là BOOLEAN.

ắ ị

ể ệ ả ủ ị ể ả ử ượ ế ả s  A và B là hai giá tr  ki u Boolean. K t qu  c a các phép toán đ c th  hi n qua b ng d ướ   i

­ Ki u logic là ki u bi u di n hai tr ng thái là đúng  ể ­ Các phép toán: phép so sánh (=, <, >) và các phép toán logic: AND, OR, XOR, NOT. Trong Pascal, khi so sánh các giá tr  boolean ta tuân theo qui t c: FALSE < TRUE. Gi đây:

A OR B A XOR B NOT A

A TRUE TRUE FALSE FALSE B TRUE FALSE TRUE FALSE A AND B TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE

Ví d :ụ Var Co : Boolean; Co := True;

Ể Ố

II.  KI U S  NGUYÊN ể ố a.  Các ki u s  nguyên Tên ki uể Dung l ngượ

255

32767

ạ Ph m vi ­128 (cid:0)  127 0 (cid:0) ­32768 (cid:0) 0 (cid:0) 65535

Shortint Byte Integer Word LongInt 1 byte 1 byte 2 byte 2 byte 4 byte ­2147483648 (cid:0) 2147483647 ử ụ

ẽ ả ề ộ ẫ ế

ộ ố ể ả ọ ể ấ ố ẫ ấ ị ướ ả ừ 0.. 65535. Tr ử ụ c khi s  d ng hàm n  ủ ị ừ  0 đ n n. Trong đó,  Random ta ph i g i th

ộ ạ ố ể ẫ b.  S  d ng hàm Random(n) đ  l y s  ng u nhiên: Hàm Random(n) s  tr  v  m t giá tr  nguyên mà máy l y ng u nhiên có giá tr  t ứ là m t s  ki u Word  t c là trong kho n t ở ạ t c ụ Randomize đ  kh i t o b  t o s  ng u nhiên.

Ví d :ụ Var so : Integer; … Randomize so := Random(1000); ể ố c.  Các phép toán trên ki u s  nguyên ố ự ế

ố ọ ầ ụ ả DIV  (Ví d  : 34 DIV 5 = 6).

ụ Các phép toán s  h c: +, ­, *, / (phép chia cho ra k t qu  là s  th c). ấ Phép chia l y ph n nguyên:  ấ ố ư MOD (Ví d :  34 MOD 5 = 4). Phép chia l y s  d :

Ể Ố Ự III. KI U S  TH C ể ố ự a. Các ki u s  th c

Dung l ngượ

Tên ki uể Single Real Double Extended 4 byte 6 byte 8 byte 10 byte ạ Ph m vi 1.5(cid:0) 10­45 (cid:0) 2.9(cid:0) 10­39 (cid:0) 5.0(cid:0) 10­324 (cid:0) 3.4(cid:0) 10­4932 (cid:0)

3.4(cid:0) 10+38  1.7(cid:0) 10+38  1.7(cid:0) 10+308  1.1(cid:0) 10+4932 5 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ể ố ự   +, ­, *, /

b. Các phép toán trên ki u s  th c: Chú ý:

ể ố ự ồ ạ

ế ố ự ể ậ ậ ượ ị ự ­ Trên ki u s  th c không t n t ­ Bi n s  th c có th  nh n giá tr  nguyên. Nh ng bi n s  nguyên không nh n đ c giá tr  th c.

i các phép toán DIV và MOD. ị ư ể ố ế ố ố ự c. Các hàm s  h c s  d ng cho ki u s  nguyên và s  th c:

ủ (cid:0) 0)

Tr  v  cos(x) theo radian

ư ầ ấ ơ

ả ề ố ả ề ả ề ậ

c n

ả ề ả ề

ố ẻ ế ị .

ả ị ơ Tăng n thêm 1 đ n v  (n:=n+1). ơ Gi m n đi 1 đ n v  (n:=n­1). ố ọ ử ụ ả ề 2 SQR(x): Tr  v  x ậ ả ề SQRT(x): Tr  v  căn b c hai c a x (x ả ề ABS(x): Tr  v  |x| ả ề SIN(x): Tr  v  sin(x) theo radian ả ề COS(x): ả ề ARCTAN(x): Tr  v  arctang(x) theo radian ả ề LN(x): Tr  v  ln(x) ả ề x EXP(x): Tr  v  e ớ Tr  v  s  nguyên g n v i x nh t nh ng bé h n x. TRUNC(x): ầ Tr  v  ph n nguyên c a x INT(x): ủ ầ FRAC(x): Tr  v  ph n th p phân c a x ố Làm tròn s  nguyên x ROUND(x): ướ ị ứ Tr  v  giá tr  đ ng tr PRED(n): ị ứ Tr  v  giá tr  đ ng sau n SUCC(n): ODD(n):  Cho giá tr  TRUE n u n là s  l INC(n): DEC(n):

Ể IV. KI U KÍ T

c: 1 byte)

ộ ộ ố (cid:0) ể ử ụ ơ ướ , ta có th  s  d ng m t trong s  các cách sau đây: ấ  trong c p d u nháy đ n.

Ự ­ Tên ki u: ể Char. (Kích th ễ ể ể ự ­ Đ  bi u di n m t ký t ặ ự ặ Đ t ký t ụ Ví d  kt:='A';

Chuso:= '0'; (cid:0) ủ ự ầ ể ễ ả c n bi u di n, b ng mã ASCII có 255 kí

ễ ự 'A'. ). Ví d  CHR(65) bi u di n ký t Dùng hàm CHR(n) (trong đó n là mã ASCII c a ký t ự t

ớ ụ ự ng  ng v i ký t ch. Ví d : UPCASE('a') = 'A'.

ủ ự

ụ ươ ứ  in hoa t ả  trong b ng mã ASCII c a ký t ả ng  ng trong b ng mã ASCII có s  th  t ụ  ch. Ví d  ORD('A')=65. ố ứ ự  là n. Ví d : CHR(65)='A'.

ụ ch. Ví d : PRED('B')='A'.

c ký t ự ụ ự ươ ứ ướ  đ ng tr  đ ng sau ký t ự  ch. Ví d : SUCC('A')='B'.

t ự ứ ự ứ Ự Ể

(1)

(2)

ứ ể ị ặ ộ ho c ch  m t ký t ự ể ứ ố ữ ệ ế ủ ứ ể ộ ự ể ả ồ ộ ố t ỉ ộ i đa m t dãy g m 255 ký t ỗ ỗ , k  c  chu i r ng. Đ  dài ự .

ễ ụ * Các phép toán: =, >, >=, <, <=,<>.  ể ự : * Các hàm trên ki u ký t ự ả ề ­ UPCASE(ch): Tr  v  ký t ả ề ố ứ ự ­ ORD(ch): Tr  v  s  th  t ả ề ­ CHR(n): Tr  v  ký t ­ PRED(ch): cho ký t ­ SUCC(ch): cho ký t V.  KI U XÂU KÍ T ­ Tên ki u: ể String  ­ Là ki u d  li u ch a các giá tr  là nhóm các ký t i đa c a m t bi n ki u String là 255, t c là nó có th  ch a t Cú pháp khai báo:  ế ế ế ế ế ế Var  Bi n1, Bi n2, Bi nn: String;   Var Bi n1, Bi n2, Bi nn: String [30]; ẽ ậ ố ự ế HoTen nh n t i đa 255 ký t . Cách (2) cho phép bi n ế HoTen 30 ký t .ự nh n t i đa ể ữ ệ ẽ ượ ử ụ ế ươ c trình bày chi ti t Ch ng 5. Cách khai báo (1) s  cho phép bi n  ậ ố  Ghi chú: Cách s  d ng ki u d  li u String s  đ

6 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

7 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Ch

Tin hoïc THCS ươ Ệ Ấ ng 3 CÁC CÂU L NH CÓ C U TRÚC

ệ khoá ệ ệ ượ ặ ệ ữ c đ t gi a hai t ầ ự ự ệ ằ ừ BEGIN và END. ữ ằ ệ  các câu l nh n m gi a

I. L NH GHÉP: ộ L nh ghép là m t nhóm các câu l nh đ ự ượ L nh ghép đ c th c hi n b ng cách th c hi n tu n t BEGIN và END. Cú pháp: Begin

; ệ ; ... ệ ;

ể ấ ặ ộ ạ ệ ệ ệ L nh ghép cũng là m t d ng câu l nh. có th  có d u ‘;‘ ho c không.

End; Sau    Ví d :ụ Begin

temp := x; x := y; y := temp;

ừ ể ế ế ệ ấ ấ ộ khóa END có th  có d u ‘;‘ hay không tùy thu c vào các l nh c u trúc k  ti p ta đ ượ   c

Ọ Ự Ệ Ẽ End; Chú ý: Sau t h c.ọ II. CÂU L NH L A CH N (R  NHÁNH)

ề ệ ế IF <Đi u ki n> THEN  ệ ệ ề

ệ ề ứ ệ 1. L nh IF Cú pháp: ạ D ng thi u:  ạ D ng đ :   ả Gi i thích l nh: Khi g p l nh này máy ki m tra ứ ệ ặ ệ ặ ệ i, t c ể thì máy th c hi n   ệ ự ự c th c hi n. Tr ệ ự ể ệ ủ IF < Đi u ki n> THEN < Câu l nh 1> ELSE < Câu l nh 2>; ệ ị TRUE  ể ế n u bi u th c này có giá tr   < Đi u ki n>  ệ   ứ   ể ượ ạ ứ ệ ệ ườ không đ ệ ựơ ườ ệ ợ ựơ ELSE  không đ ng h p có câu l nh ghép đ c đ t k ặ ế ấ c có d u ‘;‘. Tr ượ ặ ấ tr ư ề (t c là đúng nh  đi u ki n đ t ra)   ệ logic> có giá tr  ị FALSE thì   ứ ể ELSE và   ệ ế IF đó. câu l nh k  sau l nh  ướ ừ  khóa   c t ừ ươ ậ ừ c ướ ELSE không đ ố c đ t d u ‘;‘. ể ế ố ơ ớ END tr  khoá  ng trình nh p t bàn phím 2 s  nguyên a, b. Ki m tra và cho bi t s  nào l n h n.

Chú ý:  Tr c ướ ELSE thì t  Ví d  1: ụ Ch Var a, b : Integer; Begin

ạ ị ượ ặ ấ i v  trí này không đ c đ t d u; }

ươ ể ượ ậ ừ ấ ố ớ t ch ng trình ki m tra trong ba s ố a, b, c đ c nh p t bàn phím, s  nào là l n nh t.

Write( ‘ Nhap so a: ‘ ); Readln(a); Write( ‘ Nhap so b: ‘ ); Readln(b); If a > b then Write( ‘ So lon hon la ‘, a) { t   Else Write( ‘ So lon hon la ‘, b); Readln;  End. Ví d  2: ụ Vi ế Var a, b, c, max : Integer; Begin

Write( ‘ Nhap so a: ‘ ); Readln(a); Write( ‘ Nhap so b: ‘ ); Readln(b); Write( ‘ Nhap so c: ‘ ); Readln(c); Max := a;

8 If max < b thenMax := b; If max < c then Max := c; GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

Write( ‘ So lon hon la ‘, max);

Readln; End. 2. L nh CASE Cú pháp:

D ng 1ạ D ng 2ạ

1;

1;

CASE  B OF ằ CASE  B OF ằ H ng 1: S H ng 1: S

2;

2;

ằ ằ H ng 2: S H ng 2: S

... ...

n;

n;

ằ ằ H ng n: S H ng: S

END; ELSE  Sn+1;

END;

ư ể ượ ướ ự ứ ể ể ệ ể ể c nh  ki u nguyên, ki u logic, ki u ký t ế ng đ m đ ể , ki u li t kê.

ở ấ ể ặ ẩ ộ Trong đó:  B: Bi u th c ki u vô h  H ngằ   i: có th  là m t giá tr  h ng, các giá tr  h ng (phân cách nhau b i d u ph y) ho c các

ị ố ị ầ ể ằ ạ ấ ị ằ ấ ị ằ ữ đo n h ng (dùng hai d u ch m đ  phân cách gi a giá tr  đ u và giá tr  cu i).

ể ả ằ ể ị ủ

ị ủ ậ  Giá tr  c a bi u th c và giá tr  c a t p h ng i (i=1¸n) ph i có cùng ki u. ẽ ể ặ ệ ng trình s  ki m tra:

i t

ẽ ự ệ ệ ươ ứ ậ ằ ể ằ H ngằ  i thì máy s  th c hi n l nh S ng  ng.

ứ ươ Khi g p l nh CASE, ch ị ủ ứ ế ­ N u giá tr  c a bi u th c B n m trong t p h ng  ượ ạ c l i: ­ Ng ố ớ ạ ố ớ ạ ự

n+1. ộ ng trình nh p vào m t đi m ki m tra t ể

ệ ệ ậ ươ ể ể ế ạ ạ Y uế ỏ (d ả ế ừ  bàn phím và in k t qu  x p lo i: lo i  ể ể i (9, 10 đi m). t ch lo i ạ Trung bình (5, 6 đi m), lo i ạ Khá (7, 8 đi m), lo i ạ Gi

ả + Đ i v i d ng 1: Không làm gì c . + Đ i v i d ng 2: th c hi n l nh S Ví dụ: Vi ế ể ướ i 5 đi m),  Var Diem : Byte; Begin

Write( ‘ Nhap diem : ’); Readln(Diem); Case Diem of

0.. 4 : Write( ‘ Xep loai yeu. ‘ ); 5.. 6 : Write( ‘ Xep loai Trung binh. ‘ ); 7.. 8 : Write( ‘ Xep loai Kha. ‘ ); 9..10: Write( ‘ Xep loai Gioi. ‘ ); Else Write( ‘ Diem nhap sai. ‘ );

End; Readln; End. Ặ

ả ặ ầ ộ ườ ặ ạ ị ể ặ Ệ III. CÂU L NH L P ể ả ặ ế i quy t bài toán nào đó mà ta c n ph i l p đi l p l ị ố ướ ặ ế ố ử ụ ệ ặ ị ấ ả ạ ệ ệ ả ặ ệ   i m t công vi c nào đó thì ta ữ   c l p có th  xác đ nh ho c không xác đ nh. Trong ngôn ng  Pascal có ba FOR, REPEAT, WHILE. N u s  vòng l p xác đ nh thì ta s  d ng l nh FOR còn vòng   ể   REPEAT ho c ặ WHILE. T t c  các lo i l nh l p ph i có đi m ị ử ụ ị ạ ị ặ ị

ợ ng h p đ  gi Tr ế ệ ẽ ầ s  c n đ n l nh l p. S  b ặ ệ câu l nh l p là  ặ l p không xác đ nh thì ta s  d ng l nh  ừ d ng, cho dù đó là lo i xác đ nh hay không xác đ nh. 1. Vòng l p xác đ nh (For) ế ạ

ệ ế ị

9 a. D ng ti n:  Cú pháp: FOR  :=  TO  DO < Câu L nh >; GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

ể ố ế ề ể

FOR g i là bi n đi u khi n. Ki u c a bi n đi u khi n là ki u s  nguyên, ượ ự ố Tin hoïc THCS ể ướ ể ể ủ ế ng đ m đ c (s  nguyên, kí t …). ự ạ ộ ả ậ ứ ề ế ệ (Bi n <= ế ọ  ế ề ấ  trong c u trúc  ả ị ki u vô h   ph i là  ế ạ ệ i thích s  ho t đ ng l nh FOR d ng ti n: Gi ị ủ bi uể _ th c1.ứ Bi n ế nh n giá tr  c a  ầ B1:  Đ u tiên,  ặ ằ B2: Máy ki m tra ỏ ơ Bi n ế có nh  h n ho c b ng bi uể _ th c2 ứ hay không t c là xét đi u ki n

ể Bi uể _ th c2) ? ề ứ ế ệ ể ự B3: N u đi u ki n trên là sai thì máy thoát kh i vòng l p ệ ượ ự ệ ượ ỏ ệ ế ế ệ ặ FOR đ  th c hi n các l nh k  ti p sau ộ Bi n ế đ ệ c tăng m t giá c th c hi n, sau đó, đ ị ằ ế ở ạ ướ i b ố ầ ặ ị ư  :  ­  + 1

ệ ế ự ạ ộ ả ạ i thích s  ho t đ ng l nh FOR d ng lùi: ậ ệ Bi n ế nh n giá tr  c a ằ ớ ứ ề ế ệ (Bi n >= ề vòng l p ặ FOR. N u đi u ki n trên là đúng thì  tr  và quay tr  l c (2). L u ý:ư  S  l n l p tính b ng công th c ạ b. D ng lùi: Cú pháp: FOR  :=  DOWNTO  DO  Gi ầ B1:  Đ u tiên,  B2: Máy ki m tra ị ủ bi uể  th c1.ứ ặ ơ Bi n ế có l n h n ho c b ng bi uể  th c2 ứ hay không t c là xét đi u ki n

ệ ệ ể Bi uể _ th c2) ? ề ứ ế B3: N u đi u ki n trên là sai thì máy thoát kh i vòng l p ế ế ả ượ ự ỏ ệ ặ FOR đ  th c hi n các l nh k  ti p sau   ộ   ượ c gi m m t ệ ế Bi n đ ể ự ệ c th c hi n, sau đó, đ ế ề vòng l p ặ FOR. N u đi u ki n trên là đúng thì  ở ạ ướ i b giá tr  và quay tr  l ệ c (2).

ượ ị ủ ổ ấ ỳ ị  L u ýư   ­ Không đ c thay đ i giá tr  c a bi n đi u khi n b ng m t l nh b t k  trong vòng l p ặ FOR. Đi uề ể ặ ứ ặ ế ố c này có th  làm cho vòng l p không có l ­ Các Bi uể  th c1 ứ và Bi uể  h c2 đ ổ ố ị ủ ề i thoát và  ượ ướ ượ c l ặ ể ộ ệ dân đ n treomáy. ng tr ủ ằ ế ướ c khi vào vòng l p,  ế ả ị  ấ ỳ ặ do đó s  vòng l p không b ể ề ể ợ ụ i d ng tính tăng ho c gi m c a bi n đi u khi n đ  gán giá tr  c a nó cho b t k ặ ệ ự ể ả ế ệ ặ ấ ặ ị thay đ i. Ta có th  l bi n nào ho c th c hi n công vi c nào đó có tính ch t tăng ho c gi m. 2. Vòng l p không xác đ nh

ạ ạ

D ng REPEAT Repeat D ng WHILE While B Do S;

S;

Until B; ặ ạ ứ ừ ệ ế Ý nghĩa: D ngạ  REPEAT: L p l

ế ụ ứ ự ể ệ ệ ể i công vi c S cho đ n khi bi u th c B=TRUE thì d ng. D ngạ  WHILE: Trong khi bi u th c B=TRUE thì ti p t c th c hi n công vi c S.

ệ a. Câu l nh REPEAT Cú pháp: REPEAT

ứ ệ ệ ể sau đó ki m tra ể ậ ự ặ i thích s  ho t đ ng l nh REPEAT: ệ ầ ượ t các l nh  . N u ế < Bi u th c logic > ệ nh n giá tr ệ ệ ,..., ,  ị FALSE thì l ứ ể ậ ạ . N u  ế ứ ệ ằ ệ ư ậ ệ < Bi uể   ế   ệ ầ i quay lên đ u vòng l p th c hi n ti p ị TRUE  thì máy thoát kh iỏ   nh n giá tr   ệ ự ộ ầ ượ ấ ệ ; ệ ; ......... ệ ; ể UNTIL < Bi u th c logic >; ự ạ ộ ả Gi ầ ự Đ u tiên, th c hi n l n l ứ th c logic > ệ ,...,  ữ vòng l p. ặ Nh  v y, các l nh n m gi a REPEAT... UNTIL c th c hi n ít nh t m t l n. đ

ằ ừ khoá ữ REPEAT và UNTIL không có t ổ ệ ể ứ Chú ý: ệ ­ Các l nh n m gi a  ả ­ Trong vòng l p ph i có l nh nào đó làm thay đ i giá tr  m t bi n trong nh mằ Begin và End. ế ị ộ ẫ ừ ừ ế ặ ẽ ạ làm d ng vòng l p, n u không vòng l p s  ch y mãi không ng ng d n đ n treo máy. ỏ ộ ầ ậ ậ ẩ ươ ặ ặ ươ ng trình yêu c u nh p vào m t m t kh u là ế ớ ‘ttthcn’ thì m i thoát kh i ch ng trình.

Ví d : ụ Ch Uses CRT;

10 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ừ ộ i thích l nh Var Password : String[6]; Begin Repeat Write( ‘ Xin hay nhap mat khau : ‘ ); Readln(Password); Until Password = ‘ttthcn’; Write( ‘ Ban da nhap dung mat khau ! ‘ ); Delay(1000); Readln; End. ả Gi ệ : Delay(1000): Th  t c ả ự ừ ứ ả ủ ờ ủ ụ ủ Unit CRT t c là d ng m t kho n th i ờ   ạ   ộ ủ i ủ ụ Delay(n) là th  t c c a  gian là 1000 xung nh p ị c a máy, vì v y, tùy theo t c đ  c a máy mà có kho n th i gian th c d ng l ố ậ khác nhau.

ướ ể ệ ệ b. Câu l nh While: Cú pháp: ứ WHILE < Bi u th c logic > DO < L nh >; ặ ệ Gi G p l nh này tr ể ạ và sau đó quay l ế n u nó có giá tr   ứ ế ụ và quá trình c  ti p t c nh ậ ặ ỏ ứ i thích l nh:  ệ ệ < L nh >  ế < Bi u th c logic > ể ứ < Bi u th c logic >  ậ ứ ệ ề c th a mãn. ệ ị TRUE  ứ ể < Bi u th c logic >,  c tiên máy ki m tra  ư  ể i ki m tra  ị FALSE thì máy l p t c thoát kh i vòng l p. Nh  v y l nh ư ậ ệ   nh n giá tr   ộ ượ ệ ớ ỏ ệ ấ ặ ỏ ượ c th a mãn, máy t ự ộ    đ ng

ệ < L nh >  ệ ướ ố ớ ố i m t công vi c trong khi đi u ki n còn đ ề  khi m i vào vòng l p mà th y đi u ki n không đ bên trong vòng l p.ặ ấ ủ c s  chung l n nh t c a hai s  nguyên. ả ự thì th c hi n  ể ậ v y. N u  ể ặ ặ ạ WHILE dùng đ  l p đi l p l ừ ế Ghi chú: N u ngay t ự thoát ngay mà không th c hi n  ươ ng trình tìm

Ví d : ụ Ch Var a, b, r : Integer; tl : Char; Begin Repeat

Write( ‘ Nhap hai so a va b : ‘ ); Readln(a, b); While b <> 0 do Begin

r := a mod b; a := b; b := r;

End; Writeln( ‘ Uoc so chung lon nhat la ‘ , a ); Write( ‘ Ban tim USCLN nua khong (C/K) ? ); Readln(tl); Until Upcase(tl) = ‘K’; End.

11 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Ch

Tin hoïc THCS ươ Ể Ữ Ệ ng 4 Ả D  LI U KI U M NG (ARRAY)

I. KHÁI NI MỆ ộ ố ố ị ể ữ ệ ầ ộ M ng ả ượ ấ ả có cùng m t tên chung. Các thành ph n c a m ng đ ồ ể   (Array) là m t ki u d  li u có c u trúc bao g m m t s  c  đ nh các thành ph n có cùng ki u, ỉ ố ộ c truy xu t thông qua các ch  s . ả

ụ ủ ữ ộ ể ầ ử A[1]=7, A[2]=9, A[3]=0, A[4]= ­2, A[5]=3: ấ ố ệ ố ượ ụ ậ ừ ị ủ ộ ọ ấ ầ ủ :  ể ư ủ ộ  m t dãy s  li u có cùng m t tính ch t nào đó. Ví d : các ộ ộ ọ  bàn c nh p t

ả ồ  Ví d : ụ M ng A g m năm ph n t ả Công d ng c a m ng là dùng đ  l u tr ể đi m ki m tra m t môn h c nào đó c a m t h c sinh, các giá tr  c a m t dãy s  đ phím. II. KHAI BÁO M NGẢ ộ 1. M ng M t chi u ề ộ

ả ể ầ  T ;ử

ể ữ ệ ủ ả (Integer, real, string, …). ử là ki u d  li u c a m i ph n t trong m ng ầ ử ế ỉ ố ể ầ ủ ỗ ậ ả

ậ c a m ng: ượ ủ ự ệ ế ệ ả ế ả ả  nào đó c a bi n m ng đ c th c hi nh qua tên bi n m ng, theo ị ầ ử ấ [ ]. ề ả a . Khai báo m ng m t chi u: Var    Tên_ bi nế _ m ng : ARRAY [1.. n] OF Ki u ph n Trong đó: ­ Ki uể   ph nầ  t ­ 1.. n  là danh sách các ch  s  đ  truy c p đ n các thành ph n c a m ng. Ví d :ụ Var  ch : Array[0.. 25] of Char;        Th : Array[­2.. 4] of Real; ầ ử ủ b. Truy c p câc ph n t ộ ậ Vi c truy nh p vào m t ph n t ỉ ố ặ sau là giá tr  ch  s  đ t trong d u

Ví d :ụ Ch[2] := ’B’; Th[1] := 12.5; c. Ví d  : ụ ố ự ừ ủ ả ố ộ ộ Nh p ậ n s  th c t bàn phím vào m t m ng, tính trung bình c ng c a các s  này.

Uses CRT; Var i,n : Integer; s : Real; a : Array[1.. 100] of Real;

Begin ClrScr;

Write( ‘ Ban muon nhap bao nhieu PT cho mang : ‘ ); Readln(n); For i := 1 to n do

Begin   Write( ‘A[ ‘ , i , ‘ ]= ’ ); Readln(a[i]);

End; s := 0; For i := 1 to n do s := s + a[i]; Write( ‘ Trung binh cong cua day so = ‘ , s / n : 0 : 4 );

ề ả Readln; End. 2. M ng Hai Chi u

ư ả ề ề ậ ả ộ ố ỉ Vi c khai báo m ng hai chi u cũng gi ng nh  m ng m t chi u, ch  có đi u khác là nó có hai t p ch ỉ ế ề ở ấ a. Khai báo ệ ố ượ s  đ t cách nhau b i d u ‘,’.

c vi  Ví d :ụ Var A : Array[1.. 30, 1.. 50] of Integer;

12 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ố ắ ứ ự ư ặ ộ ớ B : Array[1.. 3, 1.. 3] of Real; ả ầ ử ủ ậ b. Truy c p câc ph n t ầ ử ủ  c a m ng s  th c S  ph n t c a m ng: ố ự B là 3 x 3 = 9 (ph n t ), ầ ử s p đ t trong b  nh  theo th  t nh  sau:

ụ B là ma tr n c p ơ ỉ ố ể ế ộ ứ ầ ử hàng th  i, c t th  j ậ c. Đ  truy c p đ n ph n t ả ậ ấ 3x 3. Trong m ng hai   ứ c aủ ậ ỉ ố ướ t: ế B[ i ][ j ] ho c ặ B[ i , j ]

ộ ừ ỗ ộ ủ ổ ổ ậ m hàng, n c t t ủ    bàn phím. Tính và in ra màn hình t ng c a m i c t và t ng c a

ả B[1, 1] B[1, 2] B[1 ,3] B[2, 1] B[2, 2] B[2 ,3] B[3, 1] B[3, 2] B[3 ,3] ọ ề ả  Chú ý: M ng hai chi u còn g i là ma tr n. Trong ví d  trên,  ề ậ chi u, ch  s  sau truy c p nhanh h n ch  s  tr ề B ta dùng cách vi ả m ng hai chi u  c. Ví d : ụ ộ ậ Nh p m t ma tr n  ỗ m i hàng. Var n, m, i, j : Integer; sum : Real; a : Array[1.. 30, 1.. 30] of Real;Begin BEGIN

Write( ‘ Ban muon nhap ma tran bao nhieu hang va cot ? ‘ ); Readln( m, n ); For i := 1 to m do For j := 1 to n do Begin

Write( ' PT thu [ ' , i , ' , ‘ , j, ‘ ] = ' ); Readln( a[ i, j ] ); End; For j := 1 to n do Begin

sum := 0; For i := 1 to m do Sum := sum + a[ i, j ]; Write( ‘ Tong cot ‘ , j ,’ = ‘ , sum : 0 : 5 ); End; For i := 1 to m do Begin

sum := 0; For j := 1 to n do Sum := sum + a[ i, j ]; Write( ‘ Tong hang ‘ , i ,’ = ‘ , sum : 0 : 5 ); End;

Readln; END.

13 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Tin hoïc THCS ươ Ch

ng 5 Ự XÂU KÝ T  (STRING)

ự ề . Ki u  ự ể ộ ự nh  ki u m ng ể   ể String có nhi u đi m ế    trong m t bi n ki u xâu I. KHAI BÁO KI U STRING ể ử ữ ệ ể (Array) nh ng cũng có đi m khác nhau là: s  ký t ầ ử ủ ấ Xâu (String) là ki u d  li u có c u trúc dùng đ  x  lý các xâu ký t ư ố ng t ể ể ể ả ố ố ị ả c a ki u m ng luôn c  đ nh.

(cid:0) ỗ ế ố ể ứ i đa có th  ch a trong chu i (Max [0,255]). N u không có khai báo [Max] ự ố  t

Name : String[50]; ư ể ươ t ổ có th  thay đ i còn s  ph n t ế Cú pháp: VAR Tên bi n : STRING[Max]; Trong đó Max là s  ký t ự ặ ặ ị ố thì s  ký t Ví d :ụ

II. TRUY XU T D  LI U KI U STRING ự i đa là 255 ký t } Ể  ta dùng l nh ự ừ St v i đ  dài th c s  là s  ký t cho xâu gõ vào t ế    bàn phím. N u ự Readln(St) s  đ c các ký t ậ ệ Write(St) ho c ặ Writeln(St). ố ự ự ự St là xâu r ng.ỗ ớ ộ  nào thì m  m c đ nh trong chu i là 255. Var St : String; {St có t Ấ Ữ Ệ ự ộ ố Mu n in m t xâu ký t ẽ ọ L nh ệ ta gõ < Enter > luôn mà không nh p cho nó ký t

Ví d :ụ Var ten, st1, st2 : String[40]; Begin

Write( ‘ Vui long nhap ten cua ban: ‘ ); Readln(ten); Writeln( ‘ Hello ‘, ten, ‘ ! ‘ ); st1 := ‘ Turbo Pascal ‘; st2 := ‘ Borland’’s product is ‘ + st1; Writeln(st2);

ự ứ ự ử ụ ấ ế ể ủ  th  k c a xâu ký t , ta s  d ng cú pháp sau: . ế Tênbi n[k]

ụ Readln; End. L u ýư : Đ  truy xu t đ n ký t ’b’ Ví d : st1[4]

III. CÁC PHÉP TOÁN TRÊN XÂU KÝ TỰ

ứ ả ượ ặ ữ ế ơ ở ạ ả ủ ệ ng bên ph i c a l nh ph i đ c đ t gi a hai d u nháy đ n n u đó là xâu ằ  d ng h ng. Ta ấ ụ 1. Phép gán: ế ể Bi n := Bi u_th c; ạ ượ Đ i l ể ử ụ ể có th  s  d ng d u c ng (+) đ  ghép các xâu khi gán. Ví d :

ượ ộ ừ ừ ặ ự ủ c a hai xâu đ c so sánh t ng c p m t t ả  trái qua ph i theo giá tr ị ấ ộ HoTen:= ‘Huynh Ngoc‘ + ‘ Nhan‘; ố 2. Phép n i String: ằ Ký hi u b ng d u +.  Ví d : ụ ‘Turbo’ + ‘ Pascal‘ = ‘Turbo Pascal‘ 3. Các phép toán so sánh: Khi so sánh hai xâu, các ký t ASCII.

ị True. ị ị False. Ế Ự IV. CÁC TH  T C VÀ HÀM V  XÂU KÝ T

ế ể

ể ể ả trong b ng mã   Ví d : ụ N u so sánh: ế ‘ABC’ = ‘ABC’ có giá tr  ị True. ‘ABC’ = ‘AB’ có giá tr  là  False. ‘ABCD’ < ‘ABED’ có giá tr  là  ‘ABC’ > ‘AD’ có giá tr  là  Ủ Ụ ủ ụ 1. Các th  t c: a. Delete(St , Pos, Num): Trong đó: ­ St (String): Bi n ki u String. ế ­ Pos (Position): Bi n ki u nguyên. ế ­ Num (Number): Bi n ki u nguyên.

14 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

ự ắ ầ ừ ị Tin hoïc THCS ỏ ể ụ ứ Pos. St m t s ộ ố Num ký t b t đ u t v  trí th

ế ể String. ế ể ủ ụ ụ ể ở ị St2 vào xâu St1 v  trí Pos.

ậ ườ c ượ ố ủ ụ Công d ng: Th  t c này dùng đ  xóa kh i xâu   Ví d : ụ N u ế St = ‘ABCDEFG’; thì: Delete(St, 2, ); ð làm cho St = ‘AFG’. Delete(St, 2, 10); ð làm cho St = ‘A’. Delete(St, 9, 3); ð làm cho St = ‘ABCDEFG’. b. Insert(St2, St1, Pos): Trong đó: ­ St2 và St1: Bi n ki u  ­ Pos: Bi n ki u nguyên. Công d ng: Th  t c này dùng đ  chèn xâu  Ví d :ụ N u ế St := ‘ABCD’ thì sau l nh  ệ ề t quá chi u dài c a ủ St1  thì  St2  s  đ Insert(‘TFG’, St, 3) ta nh n đ c n i đuôi vào ượ St := ‘ABTFGCD’.  Tr ợ   ng h p ậ ệ   St1.  Ví d :  ụ St = ‘ABCD’  , v y l nh ẽ ẽ ượ St = ‘ABCDTFG’. Pos  v Insert(‘TFG’, ST, 9); s  làm cho

ộ ạ ể ứ ự ể ồ ủ ụ ể ổ ể ị ố Value thành ki u xâu r i gán cho St.

c ượ St = ‘ 1234’ có 5 ký t }ự

c ượ St = ‘ 123.56789’ }

ứ ể ự ế ổ ụ ố c. Str(Value, St): Trong đó: ­ Value: Là m t bi u th c nguyên hay th c có ghi d ng in ra. ế ­ St: Bi n ki u String. ụ Công d ng: Th  t c này dùng đ  đ i giá tr  s    Ví d :ụ i := 123; Str(i:5, St); { ta đ x :=123.5678901; Str(x:10:5, St); { ta đ d. Val(St, Var, Code): ể Trong đó: ­ St: Bi u th c ki u String. ể ế ­ Var: Là bi n ki u nguyên hay th c. ể ­ Code: Bi n ki u nguyên. ủ ụ Công d ng: Th  t c này đ i xâu ch   ế ổ ố ễ ể ế i: n u phép bi n đ i đúng thì  ị ủ ẽ ở ạ  d ng s  nguyên hay th c)  ế ị ằ Code s  có giá tr  b ng v  trí c a ký t ố ự thành s  và gán cho   Code có giá tr  ị 0, n uế   ự    sai trong

ế s : ả ử St := ‘234’ , i và e là hai bi n nguyên.

ị ự ứ ỗ ứ e=3, t c là ký t th  ba gây ra l i}

ủ ứ ể ộ ẽ ả ề ể ữ St (bi u diên  bi n ế Var. Code là bi n nguyên dùng đ  phát hi n l ệ ỗ ể ự sai do St không bi u di n đúng s  nguyên hay th c thì  xâu St.  Gi Val(St, i, e); { cho ta i = 234 và e = 0 } N u ế St := ‘21x’ thì Val(St, i, e) {cho ta i không xác đ nh và  2. Các hàm: a. Length(St):  Cho ta đ  dài c a bi u th c xâu ký t ự St. Ví d : v i ụ ớ St = ‘’ABCDEFG’ thì Length(St) s  tr  v  giá tr  ị 7.

ể ư .

ể ả ề ể ộ ớ ừ ừ ị b. Copy(St, Pos, Num): ứ ể Trong đó: ­ St: Bi u th c ki u xâu ký t ứ ­ Pos,Num: Bi u th c ki u nguyên. Hàm này tr  v  cho ta m t xâu m i t xâu ắ ầ St, hàm b t đ u chép t v  trí Pos và chép Num ký t . Víự d : ụ St = ‘ABCDEF’ thì l nh ệ Copy(St, 3, 2) = ‘CD’ và Copy(St,4, 10) cho ta ‘DEF’.

ẽ ả ề St. ẽ ả ề

ấ ả ể ứ ự ộ Ghi chú: ự ­ N u ế Pos + Num > Length(St) thì hàm s  tr  v  các ký t  trong xâu  ­ N u ế Pos > Length(St) thì hàm Copy s  tr  v  cho ta m t xâu r ng. ỗ ộ c. Concat(St1, St2,..., Stn):  Hàm này dùng đ  ghép t t c  các xâu ký t ự St1, St2,...,Stn thành m t xâu theo th  t ố ố  các đ i s  cung

Concat ph i ả >= 2. i. ộ ự ụ St :=Concat(St1,St2 +’N’); ấ c p cho hàm.  Ghi chú: ố ủ ố ượ ­ S  l ng đ i c a hàm  ề ố ế ổ ­ N u t ng s  chi u dài các xâu  ể ể ­ Có th  dùng phép c ng ỗ ẽ > 255 thì máy s  báo l . Ví d : (+) đ  ghép xâu ký t

15 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ể . ả ề ố ự ị ễ ể ầ ặ ế d. Pos(St1, St2): ứ Trong đó: St1, St2 là bi u th c xâu ký t Hàm này tr  v  s  nguyên bi u di n v  trí đ u tiên c a ủ St1 g p trong xâu ấ   St2. N u không tìm th y thì Pos = 0.

Ví d :ụ  n u ế St := ‘ABCDEFGBCD’ thì Pos(‘DE’,St) = 4, Pos(‘BCD’,St) = 2, Pos(‘XY’,St) = 0.

16 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Tin hoïc THCS ươ

Ch Ể ng 6 Ậ Ợ KI U T P H P

Ị ữ ệ ữ ệ ộ ậ ữ ể ộ ộ ướ ế ng đ m đ ượ   c. ợ ủ ạ ể ậ ể ậ M t ki u t p h p đ

I. Đ NH NGHĨA ợ D  li u ki u t p h p là m t t p h p c a nh ng d  li u cùng thu c m t ki u vô h ợ ượ ộ c khai báo theo d ng sau: ơ ở ể SET OF Ki u_c _s ;  Ví d :ụ Type Chu_so = Set of 0.. 9; Chu_hoa = Set of ‘A’.. ‘Z’;

ị ượ ư ố ứ ự ợ ầ ậ c đ a vào t p h p c n có s  th  t 0 đ n 255. ớ ế ị ẽ Var So : Chu_so;      Chu : Chu_hoa;      Mau : Set of (Xanh, Vang, Tim);  Chú ý: ­ Các giá tr  đ ư ậ ­ Nh  v y, v i khai báo: ỗ Set  i: ả ừ  trong kho n t ả ế Type Tap_so = Set of 10.. 256; K t qu  khi d ch máy s  thông báo l

base type out of range. ộ ữ ệ ể ậ ầ ử ằ ạ ấ ợ ­ M t d  li u ki u t p h p có d ng các ph n t n m trong hai d u ngo c ặ [ ]. Ví d : ụ [‘A’, ’E’ ],

ệ [ ]. [3,5..9]; ậ ế ậ ệ ể ự ầ ử . ph n t ợ ế ừ 0 đ n 256  ể ậ

ế ằ ậ ợ ế ậ ợ

ậ ậ ể ậ ậ ợ ợ A có th t s  n m trong ợ ỗ ­ T p h p r ng ký hi u là  ợ ­ Bi n t p h p cho phép có t ụ ­ Có th  th c hi n phép gán trên ki u t p h p. Ví d : So := [0, 4, 9]; ợ ậ Chu := [ ]; {T p h p rông} Mau := [Vang, Tim]; II. CÁC PHÉP TOÁN a. Phép toán quan h :ệ Phép toán =  cho giá tr  ị True n u hai t p h p b ng nhau. Phép toán < >  cho giá tr  ị True n u hai t p h p khác nhau. Phép toán <=  (A <= B) cho giá tr  ị True n u ế A là t p con c a  Phép toán >=  (A >= B) cho giá tr  ị True n u ế B là t p con c a   Chú ý: Không có phép toán < và > cho ki u t p h p. Đ  ki m tra t p h p ệ ủ B. ủ A. ậ ự ằ ể ể If (A< > B) and (A<=B) then Write( ‘A la tap con that su cua B ‘); B hay không ta dùng câu l nh:

ộ ầ ử ậ ợ ầ ử ế ậ ợ ằ ẽ ả ề b. Phép toán IN: ể Phép toán IN dùng đ  xem xét m t ph n t N u ph n t đó có trong t p h p thì phép toán s  tr  v  giá tr nào đó có n m trong t p h p không ? ượ ạ c l ị True, ng i cho giá tr ị False. Ví d :ụ ế ả False. ả True.‘E’ In [‘A’, ’C’, ‘D’] cho k t qu

ộ B.

ợ ợ ợ ầ ử ầ ử ầ ử thu c   thu c   thu c ộ A ho c thu c  ặ ộ A và thu c ộ B. ộ A và không thu c ộ B.

ị ị [9]. [1, 3]. ế ‘C’ In [‘A’, ’C’, ‘D’] cho k t qu   ệ ợ c. Phép toán h p, giao, hi u: ợ ủ A và B: t p h p các ph n t ậ A + B là h p c a  ậ A * B là giao c a ủ A và B: t p h p các ph n t ậ ệ ủ A và B: t p h p các ph n t A ­ B là hi u c a   Ví d :ụ A := [1, 3, 9]; B := [9, 2, 5]; V y: ậ A * B có giá tr  là  A ­ B có giá tr  là

ậ ế ữ ụ ữ ộ t ch ng trình nh p vào m t ch  cái. Xét xem ch  cái đó là nguyên âm hay ph  âm.

III. CÁC VÍ DỤ ươ Ví d : ụ Vi Var ChuCai, NguyenAm : Set of Char; Ch : char; Begin ChuCai := [‘A’.. ’Z’, ‘a’.. ‘z’]; NguyenAm := [‘A’, ‘E’, ‘I’, ‘O’, ‘U’];

17 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

Repeat Write( ‘ Nhap mot chu cai de kiem tra: ‘ ); Readln(Ch); Until Ch IN ChuCai; If Upcase(Ch) IN NguyenAm then Writeln(Ch, ‘ la nguyen am. ’ ) Else Writeln(Ch, ‘ la phu am. ‘); Readln; End.

18 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

ng 7 Ch

Ữ Ệ Tin hoïc THCS ươ Ể FILE TEXT (T P)Ệ D  LI U KI U

I. KHAI BÁO

ượ ả ệ ượ c đ nh nghĩa tr ộ ầ ị ể ượ ấ c, đó là t p văn b n đ ả ự ư ậ ệ c k t thúc b i d u hi u EOLN (End Of Line) ượ ế ị ể ở ấ ạ ử ụ ở ấ ả ớ c đ nh nghĩa v i tên     c c u trúc . Tuy nhiên, văn b n có th  đ ọ ố   . Nh  v y, mu n đ c và in ra ụ c k  tthúc b i d u End Of File, c

ướ ể ệ Trong Pascal có m t ki u t p đã đ ơ ở ủ ệ ẩ chu n Text. Thành ph n c  s  c a t p ki u Text là ký t ượ ế thành các dòng, môi dòng đ ả ừ ệ ủ ệ t ng dòng c a t p văn b n thì s  d ng d ng Text. T p văn b n đ ể ớ Ctrl­Z (^Z) có mã ASCII = 26. th  v i Turbo Pascal là  ế Cú pháp: Var : Text; Ví d : ụ Var f, g: text;

ệ ệ ằ ả II. CÁC THAO TÁC TRÊN T PỆ ộ ệ a. Ghi vào m t t p văn b n: ể ị ể Integer, Real, Boolean,String  vào t p văn b n b ng l nh Write ế ho c Writeln. Có ba d ng vi t:

Ta có th  ghi các giá tr  ki u   ặ ạ Write(FileVar, Item1, Item2,...,ItemN); (1) Writeln(FileVar, Item1, Item2,...,ItemN); (2) Write(FileVar); (3) ệ ứ ể ế ể ơ ả   ị Item1, Item2,...,ItemN là các h ng, bi u th c hay bi n có ki u đ n gi n , Chuôi, Logic L nh (1): Vi nh : ư Nguyên, Th c, Ký t ằ vào bi n t p FileVar. ế t các giá tr   ự ươ ệ ế ệ ấ ư ế ệ ế ế ự ệ ự ư  nh  (1) nh ng có thêm d u hi u h t dòng vào t p sau khi đã vi t h t các giá tr ị L nh (2): T

ệ ệ ấ ỉ ự ệ ế ể ế ư t nh  sau: ng t Item1, Item2,...,ItemN. ệ ệ ư ệ   L nh (3): ch  th c hi n vi c đ a thêm d u hi u h t dòng vào t p. ể  Ghi chú: T  câu l nh (2) ta có th  chuy n sang vi

ệ ơ ư ệ

ế ị

ừ Begin Write(FileVar, Item1); ... Write(FileVar, Item2); Writeln(FileVar); End;    C u trúc c  b n đ  m  và ghi t p là: ơ ả ể ở ấ ế Assign(,’’); ế Rewrite(); … Write(,); … Close((); ứ ế ộ ệ ạ ừ ế ệ ớ 1 đ n 100 v i tên t p trên đĩa là ‘’Nguyen.txt’ .

Ví d  1: ụ T o m t t p ch a các s  nguyên t ố Program TaoTepSoNguyen; Var i: Integer; F: File Of  Integer; Begin Assign(F,’Nguyen.txt’); ReWrite(F); For i:= 1 to 100 do Write(F,i); Close(F); End.

ả ư ụ ố ủ ổ ư đĩa D Ví d  2:ụ  Ghi b ng ch  cái vào file có tên “Chucai.txt” l u trong th  m c g c c a

ữ Program bangchucai;

Uses Crt;

Var F: Text;

19 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

Ch: char;

Begin

ầ ử ở ệ ư có ph n t ế  nào}

ị ủ ế ả ắ

Clrscr; Assign(F, ’D:\ChuCai.txt’); {Gán t p Chucai.txt cho bi n F} ReWrite(F); {M  t p Chucai.txt – ch a  For ch:= ’a’ to ‘z’ do Write(F, ch,’ ‘); {Ghi giá tr  c a bi n Ch và kho ng tr ng vào file F } Close(F); {Sau khi ghi xong đóng File F}

Readln; End. ọ ữ ệ ừ ộ ệ m t t p đã có

ể ọ ạ ả ố 3. Đ c d  li u t ể ọ ữ ự ừ ệ t p văn b n mà còn có th  đ c l ự   i các s  nguyên, th c, ả ừ ệ logic t t  t p văn b n thông qua các th  t c:

ộ ế ự ự ệ ỗ L nh (1) Ta có th  đ c không nh ng các ký t ủ ụ Read(FileVar, Var1, Var2,...,VarN); (1) Readln(FileVar, Var1, Var2,...,VarN); (2) Readln(FileVar); (3) Trong đó, Var1, Var2,...,VarN là các bi n thu c ki u ký t ộ ầ ử ố ể ể ử ổ ệ  mà không chuy n c a s  t p xu ng dòng. ầ ượ ọ ế sẽ  , nguyên, th c, logic, chu i.  ư ệ   ọ đ c nh  l nh ế ươ   ng ệ L nh (2)  t đ c các bi n t ọ

ầ ể ả ế ư ử ổ ệ đ a c a s  t p sang đ u dòng ti p theo mà không đ c gì c . ơ ả ể ọ ữ ệ ừ ộ ệ ư

ế ế

ế ề ọ ộ đ c n i dung m t hay nhi u ph n t ư ử ổ ệ ẽ (1) nh ng s  di chuy n c a s  t p sang đ u dòng ti p theo sau khi đã l n l ng. ứ ầ ệ L nh (3)   C u trúc c  b n đ  đ c d  li u t ấ  m t t p đã có nh  sau: ơ ư ệ Assign(,’’); Reset(); While not EOF() do

Begin

ế ư ệ ị

ế ế ư ầ ủ ề ử ị Read(,); {X  lí bi n l u giá tr  theo yêu c u c a đ  bài}

End;

ế

ộ ệ ứ ấ Close((); ồ ạ i m t t p có tên là ầ ử   . Nguyen.txt ch a các s  ki u Byte và có ít nh t ba ph n t ủ ệ ả ử  s  đã t n t ọ ố ể ế ị ứ ấ ươ ứ ự Ví d  1: ụ Gi ứ Th c hi n đ c ra giá tr  th  nh t và th  ba c a t p và gán cho hai bi n A, B t ng  ng.

ệ Program DocSo; Var A, B: Byte; F: File Of Byte; Begin

ế

ủ ệ ủ ệ ế ế th  nh t c a t p ra bi n A}  th  hai c a t p ra bi n B}  th  hai c a t p ra bi n B} ầ ử ứ ấ ủ ệ ầ ử ứ ầ ử ứ ị ứ ữ giá tr  th  hai n a} Assign(F,’Nguyen.txt’); Reset(F); ộ ọ Read(F,A); {đ c m t ph n t ộ ọ Read(F,B); {đ c m t ph n t ộ ọ Read(F,B); {đ c m t ph n t ữ {lúc này B không gi Close(F); End.

ầ ử ủ ứ ố t c  các ph n t ị ố c a m t t p ch a các s  có Integer nào đó và ghi ra màn hình giá tr ầ ử ủ ệ ộ ệ  c a t p.

ọ ấ ả Ví d  2: ụ Đ c t ố các s  đó và cu i cùng ghi ra só ph n t Program DocTepSo; Uses CRT; Var i, d: Integer; F: Text; tenfile: String; Begin

ầ ậ ọ ClrScr; Write(‘Tep can doc la gi ? ’); Readln(tenfile); {Nh p tên File c n đ c}

20 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

ẩ ị ọ ẩ ị ọ ư Tin hoïc THCS Assign(F, tenfile); {M  File chu n b  đ c} ở Reset(F); {Đ a con tr  v  đ u File chu n b  đ c} ỏ ề ầ SoPT:= 0; While Not EOF(F) Do Begin ầ ử ế ỏ  trong file F b  vào bi n i} Read(F,i); {Đ c m t ph n t ộ ọ Write(i,’ ‘); d:=d+1;

End; Close(F); {Đóng File}

Write(‘So phan tu cua tep ’, tenfile,’ la ‘,d); Readln End. Ủ Ụ Ệ

Ử III. CÁC HÀM VÀ TH  T C X  LÍ T P 1. Hàm EOF(Var F: Text): Boolean. ả ề ử ổ ệ ư ế ị ượ ạ c l i, cho giá tr  True. Hàm này ườ ử ụ ị ể ể ọ ế ệ ả th

ố ệ  Hàm tr  v  giá tr  False khi c a s  t p ch a đ n cu i t p, ng ư ng s  d ng đ  ki m tra xem đã đ c h t t p văn b n ch a.  Ví d : ụ While not EOF(F) Do... 2. Hàm EOLN(Var F: Text): Boolean. ả ề ư ế ố ệ ặ ượ ạ c l i, cho ị ử ụ ị ườ ử ổ ệ ể ể ư ố ể ố Hàm tr  v  giá tr  False khi c a s  t p ch a đ n đi m cu i dòng ho c cu i t p, ng ụ ọ ế ng s  d ng đ  ki m tra xem đã đ c đ n cu i dòng ch a. Ví d :

ủ ụ

ị ử ổ ệ ố ệ ở ệ ị ố ệ ổ ẽ

ủ ụ ng trình sau đây thêm hai dòng vào cu i t p giá tr  True. Hàm này th While not EOLN(F) Do.. 3. Th  t c thêm dòng: Cú pháp: Append(Var F: Text); ầ ử ụ   ể ả ệ L nh Append m  t p văn b n đ  ghi b  sung các dòng, đ nh v  c a s  t p vào cu i t p. L n s  d ng ả ớ ế ế k  ti p v i th  t c Write hay Writeln s  thêm văn b n vào cu i t p. ố ệ VanBan.txt.  Ví d : ụ Ch

ươ Var F: Text; Begin Assign(F,’Vanban.txt’); Append(F);Writeln(F,’Day la dong thu nhat them vao.’); Writeln(F,’Day la dong thu hai them vao.’); Close(F); End.

21 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Tin hoïc THCS ươ ng 8

Ch ƯƠ CH NG TRÌNH CON

ặ ườ ặ ng trình l p đi l p l ể ườ ượ ươ ề ầ ở i nhi u l n  ươ ặ ạ ế ằ c thay th  b ng các ch ữ    nh ng   ng trình ầ I. KHÁI NI MỆ ậ   Trong khi l p trình chúng ta th ỗ ch  khác nhau. Đ  tránh r m rà nh ng đo n ch con t ươ ươ ứ ứ ạ ươ ng  ng. Khi c n, ta ch  c n g i tên ch ự ứ ỉ ầ Lý do th  hai đ  xây d ng ch ươ ộ ấ ữ ệ ử ớ ể ể ể ấ ớ ề ấ ỏ ơ ộ   ng  ng v i m t ng trình s  r t khó khăn. Ta có th  phân   ạ ứ ạ ẽ ươ ẽ ấ ộ ươ ớ i thành m t ch ng trình l n. ể ễ ể ủ ụ

ạ ủ ụ

ấ ủ ạ ị ế ả ạ ươ ữ ng g p nh ng đo n ch ữ ng trình này đ ọ ng trình con đó ra. ề ớ ng trình con: M t v n đ  l n và ph c t p s  t ươ ch ng trình có th  r t l n và dài. Do đó vi c s a ch a ch tích nó thành các v n đ  nh  h n, đ  d  ki m tra, sau đó ghép l II. PROCEDURE và FUNCTION (Th  t c và Hàm)   Trong Pascal có hal lo i CTC : ­ PROCEDURE (th  t c)   ­ FUNCTION (hàm) ả ạ ơ ả S  khác nhau c  b n và duy nh t c a hai lo i CTC này là FUNCTION tr  l ế ư ộ ộ ằ ể ể ử ụ ể ả ạ ế ứ ả ự i m t giá tr  k t qu  vô ng   thông   qua   tên   function   và   do   đó   nó   có   th   s   d ng   nh   m t   bi n,   h ng   bi u   th c.   Còn ủ t trong ứ ể ế i k t qu  thông qua tên c a bi u th c nên procedure không th  vi ể ứ Ấ Ủ ƯƠ ướ h PROCEDURE không tr  l bi u th c.  III. C U TRÚC C A CH NG TRÌNH CON

1. Function (hàm)

PROGRAM ; USES CRT; VAR : ; Function (<đối số>:):; Var :; Kq:; Begin

; :=kq; {lấy giá trị cho hàm} End; BEGIN CLRSCR; ; := (đối số); {Gọi hàm}

READLN; END. 2.  Procedure (Th  t c)

ủ ụ PROGRAM ; USES CRT; VAR : ; procedure (Var <đối số>:); Var :; Begin ; End; BEGIN CLRSCR;

; (đối số); {Gọi thủ tục} READLN; END. Ề Ố ƯƠ NG TRÌNH CON IV. TRUY N THAM S  CHO CH ể ố

Có 2 cách chuy n tham s  : ị ế ­ Tham tr  (value parameter)  ­ Tham bi n (variable parameter)

22 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ị ự ị ỉ ế ể ế ế ể ữ ể ị ị ế ệ ự ế ẽ ổ ị ế ổ ị ủ

ị ể ế t

ự ị ủ ệ ẫ ổ

ể ế ế ỉ t ể ể ế t

ả ọ ẽ Ự

ả ộ ị ắ ứ ể ề ệ ả ờ ồ ỉ ậ ạ ả ộ ế ế ướ ả ả ỉ ộ ế i m t và ch  m t k t qu ể ng ế ả ộ ố ươ ng c a m t s VD : PROCEDURE Thidu(i,j:integer; VAR x,y:real); ị  Tham tr  : i,j ế  Tham bi n : x,y ế  S  khác nhau gi a tham tr  và tham bi n : ứ ằ  ­ Tham tr  có th  là h ng, bi n, bi u th c. Còn tham bi n ch  có th  là bi n ẽ ế  ­ N u tham tr  là bi n thì giá tr  nó s  không thay đ i sau khi CTC th c hi n. Còn tham bi n s  thay ệ ổ đ i giá tr  n u trong CTC có l nh làm thay đ i giá tr  c a nó  VD :  * Hàm SIN (X)  Trong này X là tham tr  và ta có th  vi  ­ KQ := SIN (1); X=1  ­ KQ := SIN (Y*2); X=Y*2  ­ KQ := SIN (X); X=X  Và sau khi th c hi n giá tr  c a X v n không thay đ i.  * Hàm DEC (X)  Trong này X là tham bi n, ta ch  có th  vi ế  ­ DEC (X);  X là bi n ki u nguyên  Không th  vi  ­ DEC (5);  X là h ngằ ể ứ  ­ DEC (Y*2); X là bi u th c ổ ị ủ  Sau khi g i hàm giá tr  c a X s  thay đ i (gi m đi 1) Ọ V. FUNCTION VÀ CÁCH L A CH N ệ   Trong FUNCTION b t bu c ph i có l nh gán giá tr  cho tên hàm   Tên_hàm :=  ỉ  Chúng ta ch  nên dùng FUNCTION khi và ch  khi nó đ ng th i tho  các đi u ki n sau : ố  ­ N u ta mu n nh n l  ­ K t qu  đó ph i là ki u vô h  Còn n u không tho  mãn thì chúng ta nên dùng PROCEDURE ủ  VD : CTC tính bình ph

FUNCTION Binh_Phuong (X:real):real;  BEGIN

Binh_Phuong := X*X;  END; ế  N u dùng procedure  PROCEDUR Binh_Phuong (X:Real; VAR kq:real);  BEGIN  kq := X*X;

END; ể ổ ằ ủ ươ ng c a a và b có b ng c không : ế ế t :

ế

ƯƠ Ế NG Ế ế

ượ ươ ụ ề ở ọ ơ c khai báo trong ch ế ng trình chính. Các bi n này đ u có tác d ng m i n i trong Khi ki m tra xem t ng bình ph  ­ N u là FUNCTION ta vi  IF Binh_Phuong(a)+Binh_Phuong(b) = Binh_phuong(c) THEN ế  ­ N u là PROCEDURE ta vi t  Binh_Phuong (a,kqa);  Binh_Phuong (b,kqb);  Binh_Phuong (c,kqc);  IF kqa+kqb=kqc THEN ợ ơ i h n  Rõ ràng cách dùng FUNCTION có l Ị Ụ VI. BI N TOÀN C C VÀ BI N Đ A PH ụ  1. Bi n toàn c c ế  Là các bi n đ ươ ng trình. ch

23 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi Tin hoïc THCS

ươ ụ ế ỉ ươ c khai báo trong ch ng trình ế ụ ộ  Là các bi n đ ươ ng trình con. Các bi n này ch  có tác d ng trong ch ụ ế ế ấ ượ ng trình con k t thúc, các bi n này cũng m t tác d ng theo.

ươ ế ằ ỏ ng trình chính. Và khi thoát kh i ch ng trình chính thì ươ ng trình ẽ ư ế ị ướ ươ ữ ẫ nguyên giá tr  tr ọ c khi g i CTC.

2. Bi n c c b ế con đó. Khi ch 3. Chú ý ớ ế ằ ế   N u trong CTC có khai báo bi n (h ng) trùng v i tên bi n (h ng) trong ch ế ươ ằ ử ươ ch ng trình con s   u tiên x  lý bi n (h ng) trong ch ị ủ con đó. Giá tr  c a bi n trong ch ng trình v n gi  VD : CONST I=5;

PROCEDURE THU;  VAR I : INTEGER;  BEGIN

I := 6;Writeln(I);  END;  BEGIN  Writeln(I);THU;Writeln(I); END. ẽ

ị ng

Ủ Ệ ƯƠ ệ ấ  Trên màn hình s  xu t hi n ụ ị ế  5 Giá tr  bi n toàn c c ươ ị ế  6 Giá tr  bi n đ a ph ụ ị ế  5 Giá tr  bi n toàn c c VII. TÍNH Đ  QUY C A CH ờ ọ ệ ấ ọ NG TRÌNH CON ể Trong PROCEDURE và FUNCTION có th  có l i g i chính nó. Tính ch t này g i là đ  quy. ị

ặ ị VD : Tính N! qua đ nh nghĩa N! = 1.2.3...(n­1).n ệ  ho c đ nh nghĩa theo đ  quy  N! = 1 khi N=0

ể ị ư

IF n=0 THEN GIAI_THUA := 1 ELSE GIAI_THUA := n*GIAI_THUA(n­1); N! = (n­1)!.n   khi N>=1  Khi đó hàm GIAI_THUA có th  đ nh nghĩa nh  sau  FUNCTION GIAI_THUA (n:integer):integer;  BEGIN    END;

24 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm

Taøi Lieäu Boài Döôõng Hoïc Sinh Gioûi

Tin hoïc THCS Ụ Ụ M C L C

ươ

ng 1

Ữ Ậ

Ầ Ơ Ả

1                                      .............................

ứ ế

ươ

ng 2

Ể Ữ Ệ Ơ Ả

5                                                                                                         ................................................................................................

ươ

ng 3

12                                                                                                    ..........................................................................................

ng 5

Ậ Ợ

19                                                                                                   .........................................................................................

ng 8

ươ Ể ươ Ữ Ệ ươ ƯƠ

Ch   CÁC THÀNH PH N C  B N C A NGÔN NG  L P TRÌNH PASCAL ứ a. Bi u th c: Bi u th c (expression) là công th c tính toán mà trong đó bao g m các phép  ằ ặ ơ                                                              toán, các h ng, các bi n, các hàm và các d u ngo c đ n.  3     .........................................................     b. Câu l nhệ  3     ..................................................................................................................................                                                                                                                                           Ch CÁC KI U D  LI U C  B N    Ch   CÁC CÂU L NH CÓ C U TRÚC                                                                                                 8     .............................................................................................     Ệ  I. L NH GHÉP:  8     ...........................................................................................................................                                                                                                                                  ươ ng 4 Ch Ữ Ệ D  LI U KI U M NG (ARRAY)   ươ Ch Ự  14                                                                                                                     ...........................................................................................................   XÂU KÝ T  (STRING)    17      ng 6 ...................................................................................................................................                                                                                                                                            Ch KI U T P H P  17                                                                                                                                  ........................................................................................................................     Ch ng 7   D  LI U KI U FILE TEXT (T P) Ch   CH

22        NG TRÌNH CON ...........................................................................................................

25 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm