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
ệ ế ả }
ế ế ầ { N u c n}
ầ
ệ ế ử Clrscr; { L nh xóa màn hình k t qu
ậ ệ
Write(‘
ế ả ế ầ { N u c n}
ữ ả ế Writeln(‘
ấ
: ươ ầ ụ ằ ỗ ả ứ ự 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) ỏ ề ầ ư ả CtrlPgUp: Đ a con tr v đ u văn b n.
(cid:0) ỏ ề ố ư ả CtrlPgDn: Đ a con tr v cu i văn b n.
(cid:0) ạ ị ỏ i v trí con tr . CtrlY: 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
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
ể ế 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))/(52*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.
ệ ấ ơ
:
ể 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(
ả ượ ằ ở ấ ố 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) 1045 (cid:0) 2.9(cid:0) 1039 (cid:0) 5.0(cid:0) 10324 (cid:0) 3.4(cid:0) 104932 (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:=n1). ố ọ ử ụ ả ề 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
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>
ệ
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
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 <= ế
ọ
ể
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 ệ
ượ ự ệ ượ ỏ
ệ
ệ ế ự ạ ộ ả ạ 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
ệ ệ ể
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 ế ế
ả ượ ự ỏ
ệ
ượ ị ủ ổ ấ ỳ ị 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 ệ
ệ
ằ ừ khoá ữ REPEAT và UNTIL không có t
ổ ệ ể ứ
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 đ
ể ớ
CtrlZ (^Z) có mã ASCII = 26.
th v i Turbo Pascal là
ế
Cú pháp: Var
ả
ệ ệ ằ ả 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(
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(
Begin
ế ư ệ ị
ế
ế ư ầ ủ ề ử ị Read(
End;
ế
ộ ệ ứ ấ Close((
ệ 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
READLN; END. 2. Procedure (Th t c)
ủ ụ
PROGRAM 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 := 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...(n1).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(n1); N! = (n1)!.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 25 GV:Ngoâ Döông Khoâi Tröôøng THCS Löông Taâm; End; BEGIN CLRSCR;
;
ươ
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
...........................................................................................................
Tài liêu mới

