Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 1
Chng I
CHNG TRÌNH VÀ THUT GII
I. Chng trình (Program)
1.Khái nim
Chng trình là mt dãy liên tip các lnh. Thc hin các lnh ó gi là
thi hành chng trình. Các chng trình u có các tính cht chung sau ây:
- Các lnh c thi hành mt cách tun t, thi hành xong mt lnh mi thi
hành lnh k tip.
- Khi thi hành chng trình cn thêm d liu t bên ngòai, iu này làm
cho chng trình tr nên phong phú và tng quát.
Chng trình có th c vit bng các ngôn ng lp trình khác nhau.
2.Ngôn ng lp trình.
Có hàng trm loi ngôn ng lp trình khác nhau, mi loi ngôn ng u có
cú pháp riêng ca nó. Ngôn ng lp trình có th c phân chia thành 3 loi
chính : ngôn ng máy, hp ng và ngôn ng cp cao.
2.1 Ngôn ng máy
Ngôn ng máy (mã máy) là ngôn ng nn tng ca b vi x lý. Bao gm
các câu lnh là nhng dãy s nh phân 0 và 1 rt khó c, khó vit . Ch có các
chuyên gia v máy tính mi vit c. u im ca vic vit chng trình bng
ngôn ng máy là lp trình viên có th iu khin máy tính trc tip và t c
chính xác iu mình mun làm, tc thi hành chng trình nhanh và kích
thc chng trinh nh . Nhc im ca chng trình ngôn ng máy là thông
th!ng s" mt rt nhiu th!i gian vit, rt khó c, khó tìm li và chng trình
ph# thuc vào b vi x lý nên chng trình ch chy c trên nhng máy tính
có cùng b vi x lý mà thôi. Ngôn ng máy còn c gi là ngôn ng cp thp
(low-level language)
2.2 Hp ng
Hp ng c phát trin nhm giúp các lp trình viên d$ nh các ch th
ca chng trình hn. Các chng trình hp ng còn bao gm các ch th v% mô
(macro instruction) có th to ra nhiu lnh mã máy. Các chng trình hp ng
c chuyn sang mã máy thông qua mt chng trình &c bit gi là trình hp
dch (assembler). M&c dù hp ng tng i d$ dùng hn mã máy nhng hp
ng v'n c xem là ngôn ng cp thp bi vì nó v'n còn rt gn vi tng thit
k ca máy tính.
2.3 Ngôn ng cp cao
Ngôn ng cp cao gn g(i hn vi ý nim ngôn ng mà hu ht mi
ng!i u bit, nó bao gm các danh t, ng t, ký hiu hc, liên h và các
thao tác lun lý. Các yu t này có th c phi hp, liên kt vi nhau to
thành mt hình th)c ca câu. Các "câu" này c gi là các mnh ca
chng trình (program statement). Chính vì nhng &c im này, các lp trình
viên d$ dàng c và d$ hc ngôn ng cp cao hn so vi ngôn ng máy ho&c
hp ng. Mt li im quan trng là ngôn ng cp cao thông th!ng không ph#
thuc vào máy tính, ngh%a là các chng trình vit bng ngôn ng cp cao có
th chy trên các loi máy tính khác nhau (s d#ng các b vi x lý khác nhau).
2.4 Các ngôn ng lp trình thông dng
Hin nay có rt nhiu ngôn ng lp trình cp cao là :BASIC, COBOL, C,
FORTRAN, PASCAL.v.v Ngày này còn có thêm rt nhiu các ngôn ng lp
trình hng i tng rt tin li cho các lp trình viên nh : C++, Visual Basic ,
Visual C, Denphi, Javal .v.v
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 2
3.Trình thông dch và biên dch
Mi chng trình c vit bng các ngôn ng không phi là ngôn ng
máy cui cùng u phi c chuyn i sang ngôn ng máy trc khi c thi
hành. Chng trình ngôn ng cp cao c dch sang ngôn ng máy bng mt
trong hai cách: bng trình biên dch (compiler) ho&c trình thông dch (interpreter).
3.1 Trình biên dch :
S" chuyn i toàn b chng trình sang mã máy, ri ch)a kt qu vào
%a có th thi hành v sau. Trình biên dch to ra mt danh sách li ca tt c
mnh trong chng trình vi phm cú pháp ca ngôn ng. Danh sách này giúp
lp trình viên d$ dàng sa i chng trình.
3.2 Trình thông dch :
Thay vì chuyn i toàn b chng trình ngun nh trình biên dch, trình
thông dch ch dch tng lnh và thi hành tng lnh. Li im ca trình thông
dch là lp trình viên v'n có th chy mt chng trình v'n còn li cú pháp. Ch
khi thông dch n câu lnh có li cú pháp, quá trình thi hành chng trình mi
b ngng li và trình thông dch s" thông báo li. ng!i lp trình cn c) vào li
sa cha.
II.Thut gii.
1. Ý ngha
Thut gii là mt phng pháp, tng bc hng d'n, th hin l!i gii
ca mt vn - mt bài toán .
Trong khoa hc máy tính, thut gii c nh ngha là mt dãy hu hn các
bc rõ ràng và có th thi hành c, quá trình hành ng theo các bc này
phi dng và cho c kt qu nh mong mun.
2.Các c trng ca thut gii
Thut gii có các &c trng c bn là :
2.1.Xác nh : Mi thut gii u phi xác nh rõ ràng, không mp m!.
2.2. Hu hn: Mi thut gii sau mt s hu hn bc phi kt thúc và cho ra
kt qa.
2.3: úng : Thut khi thc hin xong các bc , phi cho ra kt qu úng
*n.
Ngoài ra thut gii có các &c trng khác nh : +u vào, u ra, tính hiu
qa và tính tng quát.
3. Các phng pháp biu din thut gii
Trong thc t ng!i ta th!ng có 2 phng pháp biu di$n thut :
- Dùng ngôn ng t nhiên
- Dùng Lu - S
3.1. Ngôn ng t nhiên
Ng!i lp trình dùng ngôn ng ca mình mô t thut . Ng!i lp trình
lit kê có th) t các bc ca thut gii . Tuy vy thut gii th!ng dài dòng khó
hiu và th!ng không theo mt qui t*c nht nh.
Ví d 1 : Thut gii phng trình bc hai ax
2
+bx+c=0 (a<>0)
B*t u
1. Yêu cu cho bit giá tr ca 3 h s a, b, c
2. Nu a=0 thì
2.1. Yêu cu u vào không m bo.
2.2. Kt thúc gii thut .
3. Tr!ng hp a khác 0 thì
3.1. Tính giá tr ∆ = b
2
-4ac
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 3
3.2. Nu ∆ > 0 thì
3.2.1. Phng trình có hai nghim phân bit x
1
và x
2
3.2.2. Giá tr ca hai nghim c tính theo công th)c sau
3.2.3. Kt thúc.
3.3. Nu ∆ = 0 thì
3.3.1. Phng trình có nghim kép x
0
3.3.2. Giá tr ca nghim kép là : x=-b/2a
3.3.3. Kt thú c.
3.4. Nu ∆ < 0 thì
3.4.1. Phng trình vô nghim.
Kt thúc.
Ví d 2 :Thut gii tìm hp có trng lng n&ng nht
t vn : Có n hp có khi lng khác nhau và mt cái cân %a. Hãy ch ra
cách cân tìm c hp có trng lng n&ng nht : Thut gii c# th nh sau:
B*t u
1. Nu ch có 1 hp (n=1) thì
1.1. Hp ó chính là hp n&ng nht.
1.2. Kt thúc gii thut .
2. Ngc li nu có t hai hp tr lên (n>1)
2.1. Chn hai hp bt k, và &t lên bàn cân.
2.2. Gi li hp nng hn, ct hp nh- hn sang ch khác.
3. Nu còn hp cha c cân thc hin các bc sau, nu không còn
hp nào na, sang bc 5.
3.1. Chn mt hp bt k, và lên %a cân còn trng.
3.2. Gi li hp nng hn, ct hp nh- hn sang ch khác.
4. Tr li bc 3.
5. Hp còn li trên cân chính là hp n&ng nht.
Kt thúc.
3.2. Lu - s khi
Lu hay s khi là mt công c# trc quan di$n t các thut gii.
Biu di$n thut gii bng lu s" giúp ng!i c theo dõi c s phân cp
các tr!ng hp và quá trình x lý ca thut . Phng pháp lu th!ng c
dùng trong nhng thut có tính r*c ri, khó theo dõi c quá trình x lý.
Trong thut gii dùng lu th!ng dùng các hình v" qui c sau mô
t các bc.
Ch !ng i ca d liu
Ch im b*t u và kt thúc.
Ch)a các thao tác x lý
Ch thao tác kim tra iu kin
a
b
x
2
1
∆+−
=
a
b
x
2
2
∆−−
=
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 4
. trên ch là các ký hiu c bn và th!ng c dùng nht. Trong thc
t, lu còn có nhiu ký hiu khác nhng th!ng ch c dùng trong nhng
lu ln và ph)c tp.
Ví d1 : Lu thut gii, gii Phng trình bc hai.
Ví d 2: Lu tìm phn t ln nht trong dãy s.
K
t thúc
a=0
Thông báo
sai
Nhp li
D:=b
2
-4ac
D=0
Nhp b,c
Nh
p a
Pt có nghim
kép
x
1,2
=
-
b/2a
D>0
Pt có 2 nghim
x
1
=-b+ D /2a
x
2
=
-
b
-
D
/2a
Pt
vô nghi
m
s
s
s
B
*t u
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 5
Bài tp :
1.Hãy vit thut gii h phng trình bc nht 2 /n s
a1x+b1y =c1
a2x+b2y =c2
Bit rng :
2.Vit thut gii tim s ln nht trong 3 s a, b, c.
3.Vit thut gii tìm s Pibonanci th) n vi
F
0
=0, F
1
=1, F
n
=F
n-2
+F
n-1
4.Vit thut gii tim các s nguyên t trong dãy s n s t a
1
a
n
5.Vit gii thut tìm USCLN, BSCNN ca 2 s a, b.
6.Vit gii thut tính tng l0 , tng ch1n ca dãy n s t nhiên a
1 . .
a
n
7.Vit thut gii tìm n! =1*2*3*. .*n.
8.Xác nh d liu và d liu ra cho các thut gii sau
a.Kim tra xem ba s cho trc a, b, c có th là dài ba cnh ca mt
tam giác hay không ?
b.Tính trung bình cng ca 2 s a, b
c.Dùng mt cc ph# tráo nc hai cc cho trc
d.Tìm chu vi và din tích ca hình tròn có bán kính cho trc
9.Có hai bình A và B . Bình A có dung tích 8 lít, bình B có dung tích 5 lít . Trình
bày các bc thc hin ly c 2 lít nc.
10.Vit thut gii vit gii thut xác nh ma trn n v.
11.Vit thut gii in ra ma trn chuyn v ca ma trn ã nhp trc.
12.Vit thut gii In ra ma trn tích cu hai ma trn ã nhp trc.
13. Có 3 bình A, B, C. Bình A có dung tích 8 lít và ng y 8 lít ru, bình B có
dung tích 5 lít, bình C có dung tích 3 lít. Trình bày các bc thc hin có
c 4 lít ru bình A và 4 lít ru bình B.
14. Mt ng!i có 1 con gu, 1 con dê và 1 cái b*p ci. Nu không có ng!i
bên chúng thì con gu s" n tht con dê ho&c con dê s" n b*p ci. Thuyn ch
có th ch c ng!i ó vi con gu ho&c con dê ho&c b*p ci. Ng!i ó làm
th nào mang chúng sang sông.
D
Dx
abba
cbbc
ba
ba
bc
bc
x =
−
−
==
2121
2121
22
11
22
11
D
Dy
abba
caaa
ba
ba
ac
ac
y =
−
−
==
2121
2121
22
11
22
11
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 6
Chng 2
GII THIU NGÔN NG LP TRÌNH PASCAL
I.Gii thiu chung
1.Xut x : PASCAL là ngôn ng lp trình cp cao c giáo s Niklaus Wirth
tr!ng i hc K2 thut Zurich (Th#y s%) thit k và công b vào nm 1971. Ông
&t tên cho ngôn ng ca mình là Pascal tng nh nhà hc ni ting ng!i
Pháp th k3 17: Blaise Pascal, ng!i ã sáng ch ra chic máy tính c khí u
tiên ca nhân loi.
Thành công ca ngôn ng Pascal là ch: nó là ngôn ng u tiên a
ra và th hin c khái nim lp trình có cu trúc. Ý tng v mt chng
trình có cu trúc xut phát t suy ngh% cho rng có th chia mt bài ln, ph)c
tp thành nhiu bài nh , n gin hn. Nu mi bài nh c gii quyt bng
mt chng trình con, thì khi liên kt các chng trình con này li s" to nên mt
chng trình ln gii quyt c bài ban u.
Bng cách chia mt chng trình thành các chng trình con nh vy,
ng!i tho chng có th lp trình gii quyt riêng l0 tng phn mt, tng
khi mt, ho&c có th t ch)c nhiu ng!i cùng tham gia, mi ng!i ph#
trách mt vài khi. Ð&c bit khi phi thay i hay sa cha trong mt khi thì
iu ó s" ít nh hng n các khi khác.
Ngày nay, Ngôn ng Pascal c dùng vit các chng trình )ng
d#ng trong nhiu l%nh vc. Vi vn phm sáng sa, d$ hiu, vi kh nng
mnh, Pascal c xem là ngôn ng thích hp nht ging dy các tr!ng
ph thông và i hc.
2. Turbo Pascal
T khi phn mm Pascal ca Niclau Wirth ra !i các hãng phn mm ã
liên t#c phát trin thành các Pascal riêng nh : IOS Pascal chu/n , IBM Pascal
ca MicroSoft, Turbo Pascal ca hãng Borland , nhng Turbo Pascal (TP) có
nhiu u im nên c s d#ng rng rãi ging dy.
II.S d ng ph!n m"m Turbo Pascal
1. Kh#i $ng Turbo Pascal:
Trong phn này s" trình bày cách s d#ng Turbo Pascal 7.0.phiên bn
th!ng c dùng ph bin hin nay.
1.1. Các tp tin chính ca Turbo Pascal: TP có hàng trm tp tin nhng
chy c Turbo Pascal 7.0, ch cn hai tp tin sau là :
- TURBO.EXE : tp tin chính ca TP
- TURBO.TPL : tp tin ch)a các th vin ca TP
Nu mun v" ha thì phi có thêm các tp tin:GRAPH.TPU, tp tin
ch)a th vin ha *.BGI : các tp tin màn hình ha *.CHR : các tp tin to
kiu ch
Nu mun xem hng d'n s d#ng Turbo Pascal thì cn có thêm tp tin
TURBO.HLP
1.2. Kh#i $ng Turbo Pascal:
Thông th!ng hin nay các máy s d#ng h iu hành Windows nên có
các khi ng nh sau :
- Tr!ng hp có s1n mt Shortcut ch)a Turbo Pascal trên Desktop :
hãy Double click vào biu tng Shortcut ca Turbo Pascal.
- Tr!ng hp không có s1n mt Shortcut ch)a Turbo Pascal: hãy chn
lnh Start, chn tip lnh Run, ri gõ vào !ng d'n y ca tp tin
TURBO.EXE, ch4ng hn:
C:\TP\TURBO.EXE ↵ , nu khi ng TP t %a C.
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 7
A:\TP\TURBO.EXE ↵ , nu khi ng TP t %a A.
1.3. Ca s màn hình Turbo Pascal và cách chn lnh :
Trong ca s này, dòng trên cùng là mt thc n ngang, lit kê 9 nhóm
lnh chính ca TP. Mun chn mt lnh trong thc n này, có th tin hành
theo mt trong hai cách:
+ Cách 1: Gõ phím F10. Lúc này, trên thc n xut hin mt khung sáng
(th!ng là màu xanh). Mun chn lnh nào thì gõ các phím m(i tên ← , → d!i
khung sáng n lnh ó ri Enter. Mt thc n con ca lnh va chn hin ra,
gi là thc n hàng dc. Ví d#, khi chn lnh File, ta c thc n con nh
sau:
+ chn mt lnh trong thc n hàng dc, hãy gõ các phím m(i tên ↑ , ↓
d!i khung sáng n lnh ó ri Enter. Khi không mun chn lnh nào thì gõ phím
ESC tr v vùng son tho.
+ Cách 2 : Chn mt lnh trong thc n ngang bng cách gõ ng th!i
phím Alt vi phím ch cái u tiên ca tên lnh mun chn. Ví d#, mun chn
menu File thì gõ ng th!i hai phím Alt và F (vit t*t là Alt-F), tng t, mun
chn menu Compile thì gõ Alt-C.
+ Cách 3 : Dùng phím gõ t*t
Có mt s lnh c gán cho nhng phím &c bit gi là phím "gõ t*t”, ví
d# lnh Open: F3, lnh Save : F2, lnh Exit : Alt-X. + thc hin nhng lnh này,
thay vì phi chn nó t trong thc n, ta ch cn gõ phím nóng tng )ng vi
Con tr dùng
son tho
chng trình
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 8
nó. Ví d#, thay vì chn lnh Open thì gõ phím F3, thay vì chn lnh Save thì gõ
phím F2,
Di thc n ngang là vùng son tho dùng gõ chng trình vào.
+u ca vùng này hin tên ca tp tin ang son, và nu ng!i tho chng
cha &t tên thì TP s" &t mt tên m&c nhiên là NONAME00.PAS.
Dòng cui cùng tóm t*t mt s phím " gõ t*t" hay dùng, nh phím F1
xem hng d'n, phím F2 lu tp tin lên %a, phím F3 dùng m xem mt
tp tin, phím F10 khi ng thc n,.v.v.
1.4. Thoát khi Turbo Pascal
Chn lnh File trong thc n ngang, chn tip lnh Exit trong thc n
dc (vit gn là chn lnh File/ Exit) ho&c gõ c&p phím gõ t*t Alt-X
1.5. Các bc thc hin mt chng trình Pascal
+ son và chy mt chng trình Pascal trong Turbo Pascal, nên tin hành
các bc nh sau:
- Bc 1: Khi ng Turbo Pascal
- Bc 2: Nhn F2 &t tên cho chng trình.
- Bc 3: Son tho ( gõ ) chng trình .
Bn hãy gõ chng trình m'u sau vào vùng son tho ca Turbo Pascal :
-Bc 4: Dch và sa li:
Chn lnh Compile/ Compile (ho&c gõ c&p phím Alt-F9 hay F9). Máy s"
dch chng trình sang mã máy, nu g&p li thì dng và hin thông báo li màu
u màn hình, ng th!i con tr &t v trí có li. Ng!i tho chng phi
t mình sa li, ri gõ Alt-F9 dch và sa li tip cho n khi ht li. Du hiu
cho bit vic dch ã xong là màn hình xut hin ca s thông báo có dòng ch
&c trng là:
- Bc 5: Lu tr li chng trình lên %a: chn lnh File/ Save ho&c gõ
phím F2.
- Bc 6: Chy th chng trình: Chn lnh Run/ Run ho&c gõ phím nóng
Ctrl-F9 (vit t*t là ^F9). Mi ln chy th, ta cn nhp mt b d liu c# th và
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 9
kim tra xem kt qa in lên màn hình có úng không và có phù hp vi thc ti$n
không?. nu sai cn kim tra li.
2. M$t vài k% thut trong so&n tho
2.1. Thao tác trên khi:
Ta gi khi là mt on vn bn gm mt hay nhiu dòng liên tip. Ký t
u tiên ca khi gi là u khi, ký t cui cùng ca khi gi là cui khi. Di
ây là mt khi gm hai dòng lnh:
Write(‘ Nhap chieu dai va chieu rong hinh chu nhat: ‘);
Readln(a,b);
a) +ánh du khi:
- +a con tr v u khi
- Gi phím Shift, ng th!i nhn liên tip các phím m(i tên ← , ,↓
,→ kéo vùng sáng ph n cui khi.
b) Sao chép khi:
- +ánh du khi cn sao chép
- +a con tr n ni cn chép ti
- Gõ lnh ^K_C
c) Di chuyn khi:
- +ánh du khi cn di chuyn
- +a con tr n ni cn chuyn khi ti
-Gõ lnh ^K_V
d) Xóa khi:
- +ánh du khi cn xóa
- Gõ lnh ^K_Y
e) Che ho&c hin li khi ã ánh du : lnh ^K_H
2.2. Các phím lnh son tho thông dng
- Phím Home : a con tr v u dòng hin th!i
- Phím End : a con tr v cui dòng hin th!i
- Phím Delete : xóa ký t ngay ti v trí con tr . Nu con tr ang )ng
cui ca dòng trên mà gõ phím Delete thì s" ni dòng di vào cui dòng trên.
-Phím Back Space : Xóa ký t trc con tr .
- C&p phím Ctrl_Y:xóa toàn b dòng hin th!i và ôn các dòng di lên.
- Nhóm phím Ctrl_Q_Y : xóa t v trí con tr n cui dòng.
- Các phím ← , ,↓ ,→ : d!i con tr theo hng m(i tên.
- Phím Insert :Dùng chuyn i ch chèn è
- Phím Enter : Xung dòng
Trong ch vit chèn: gõ Enter có tác d#ng a con tr xung u dòng
di, do ó toàn b các ch )ng sau con tr (nu có) s" b c*t xung dòng
di. Khi con tr ang )ng u mt dòng mà Enter thì s" to ra mt dòng
trng ngay ti v trí ó.
III. Các ph!n t c bn ca ngôn ng Pascal
1.Tp ký t c bn : Mi ngôn ng u c xây dng t mt tp ký t nào
ó. Ngôn ng Pascal c xây dng trên b ký t c bn, gm:
- Các ch cái la tinh: A, B, C, ,Z, a, b, c, , z
- Các ch s :0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Các ký hiu &c bit: +, -, *, /, =, <, {, }, [, ], %, $, &, #,
- Ký t gch ni ‘_’ và ký t tr*ng ‘ ‘ ( space)
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 10
2. T' khóa (Keyword)
Có mt s t c Pascal dành riêng cho vic xây dng các câu lnh, các
khai báo, các phép tính, gi là t khóa. Ng!i lp trình không c &t mt tên
mi (tên bin, tên hng, tên hàm, tên th t#c, ) trùng vi mt trong các t khóa.
Di ây là danh sách các t khóa ca Pascal :
Absolute, and, array, begin, case, const, div, do, downto, else, end, file, for,
forward, function, goto, if, implementation, in, inline, interface, interrupt, label,
mod, nil, not, of, or, packed, procedure, program, record, repeat, set, shl, shr,
string, then, to, type, unit, until, uses, var, while, with, xor
Các t khóa có th vit di dng ch hoa hay ch thng hay xen k ch
hoa vi ch thng u c. Ví d# vit begin hay Begin hay BEGIN là nh
nhau.
3.Tên (identifier)
Các bin, các hng, các hàm, các th t#c, c s d#ng trong chng
trình u cn phi &t tên, còn gi là nh danh hay danh hiu. Các tên này do
ng!i tho chng t &t và phi m bo úng quy t*c: tên phi b*t u bng
ch cái, k ó có th là ch cái, ch s, hay du gch ni ‘_’. Tên không c
&t trùng vi t khóa. Chiu dài ca tên ti a là 127 ký t. Thông th!ng tên
nên &t ng*n gn và có tính gi nh.
Ví d#:Delta, X1, X2, i, j , Chuc_vu, Luong,Phuong_Trinh_Bac_Hai…
4.Tên chu(n
Trong Pascal có mt s tên ã c &t s1n ri, gi là tên chu/n, ch4ng
hn : Abs, Arctan, Boolean, Byte, Char, Cos, Copy, Delete, Eof, False, Longint,
Ord, Integer, Real, Readln, Writeln, True, Text,
Pasal có th cho phép ngi tho chng t li tên chun, nhng không
nên t li.
5.Câu lnh trong Pascal
Câu lnh là phn vic mà chng trình phi thc hin x lý d liu ã
c khai báo. Trong chng trình các câu lnh c vit cách nhau mt du
chm phy (;). Có 2 loi : Câu lnh n và lnh ghép.
5.1 Câu lnh n gin : Bao gm các lnh
+Lnh gán (:=) : Dùng gán giá tr cho bin s ã khai báo
-Dng lnh : Bin s := Biu th)c; Ví d# : x:=10; d:=a*b;
+Lnh Gi th t#c : Dùng gi th t#c trong chng trình
-Dng lnh <Tên th t#c> Ví d#: Clrscr; Halt;
5.2 Lnh ghép : Bao gm mt nhóm lnh t 2 lnh tr lên c &t trong hai t
khoá Begin và End;
Ví d# : Begin
TG:=A; A:=B;B:=TG;
End;
IV. Cu trúc ca chng trình Pascal
1.Cu trúc chung
Chng trình là mt dãy các câu lnh ch th cho máy các công vic phi
thc hin. Mt chng trình Pasccal y gm ba phn chính :
- Phn tiêu
- Phn khai báo
- Phn thân chng trình
1.1. Ph!n tiêu " chng trình
Phn này b*t u bng t khóa Program, tip n là tên chng trình do
ng!i s d#ng t &t, cui cùng kt thúc bng du chm ph/y ‘;’.
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 11
Ví d# : Program Btap1; ho&c : Program Giai_pt_bac2;
Phn tiêu chim mt dòng, còn gi là phn u ca chng trình, nó
có th không có.
1.2. Ph!n khai báo
Phn khai báo có nhim v# gii thiu và mô t các i tng, các i
lng s" tham gia trong chng trình
Nó gm có 7 loi khai báo sau .
- USES Khai báo n v s d#ng (Unit)
- LABEL Khai báo nhãn,
- CONST Khai báo hng
- TYPE khai báo kiu d liu mi,
- VAR Khai báo bin
- PROCEDURE khai báo các chng trình con là th t#c
- PUNCTION Khai báo các chng trình con là hàm.
Tùy theo yêu cu c# th mà mi khai báo này có th có hoc không có
khai báo.
1.3. Ph!n thân chng trình
+ây là phn ch yu nht ca mt chng trình, bt buc phi có.
Thân chng trình b*t u bng t khóa BEGIN và kt thúc bng END. (có du
chm cui). Gia khi BEGIN và END là các lnh. Mi lnh phi kt thúc bng
du chm ph/y ‘;’.
Begin
Các lnh;
End.
2.Khai báo trong chng trình Turbo Pascal
2.1 Khai báo n v s d ng (Unit)
Turbo Pascal có s1n trên 300 hàm và th t#c chu/n, chúng c phân
thành tng nhóm theo ch)c nng, gi là các th vin hay n v chng trình (
Unit) bao gm : System ,Crt, Graph, Dos, Printer, .v.v. . Mun s d#ng các hàm
hay th t#c ca n v nào, tr System còn li ta phi khai báo, Cách khai báo
nh sau :
Uses Tendonvi ;
Ví d : - Mun s d#ng n v CRT
Uses CRT ;
- Mun s d#ng c hai th vin CRT và GRAPH, ta khai báo :
Uses CRT, GRAPH ;
Chú thích : Mt s hàm và th tc trong n v s dng màn hình CRT
+Th tc ClsScr
- Dng th tc: ClrScr;
- Chc n ng : Xóa màn hình kt qu , a con tr v ta 1,1
+Th tc GotoXY
- Dng th tc : GotoXY(x,y);
- Chc n ng : +a con tr n ta ct x, dòng y
- Ví d# : GotoXY(10,5) : +a con tr v ta ct 10, dòng 5.
+Th tc Delay
- Dng th tc Delay(time)
- Chc n ng : Dng thc hin chng trình time miligiây.
-Ví d# : Delay(200);
+Th tc TextColor
- Dng th t#c TextColor(màu)
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 12
- +nh mà cho dòng ch vit lên màn hình theo bng màu sau :
Color
Màu Color Màu Color Màu
0 Black 6 Brown 12 LightRed
1 Blue 7 LightGray 13 LightMagenta
2 Green 8 DarkGray 14 Yellow
3 Cyan 9 LightBlue 15 Whlte
4 Red 10 LightGreen
5 Magenta 11 LightCyan
Ví d# : Tectcolor(Red) hay Textcolor(4)
2.2 Khai báo h)ng s
Hng là i lng có gía tr không i, khai báo hng ta dùng t khóa
Const cách khai báo nh sau :
Const Tên_hng_s = Hng s ;
Ví d# : Const N=10 ;
2.3 Khai báo bin s
Bin là i lng có giá tr thay i trong chng trình, chúng c dùng
trong chng trình lu tr các d liu, tham gia vào các biu th)c tính và
các quá trình x lý trong máy. Cách khai báo bin s nh sau :
Var Tên_bin_s : kiu d liu;
Ví d# : Var
x, y : Real ;
i, k : Integer;
2.4 Khai báo (nh ngha) m$t kiu d liu mi
Ngoài các kiu d liu mà bn thân ngôn ng ã có s1n nh kiu thc,
kiu nguyên, kiu ký t, kiu lôgic,.v.v. ng!i dùng có th t xây dng các kiu
d liu mi ph#c v# cho chng trình ca mình, nhng phi mô t sau t khóa
TYPE cách khai báo nh sau
TYPE tên kiu d liu mi = kiu d liu mi
. Ví d#, ta nh ngh%a mt kiu d liu mi có tên là Mang :
Type
Mang = Array[1 10] of Real;
4.Ví d Vit chng trình cho phép nhp vào h tên, mã s, các im , Lý ca
mt sinh viên, tính im trung bình theo công th)c : Dtb=(Toan+ly)/2
In H tên, mã s, các im , Lý và im trung bình ca sinh viên ó lên màn
hình.
PROGRAM VIDU;
Uses CRT;
Var Ho_ten, Maso : String[20];
Toan, Ly, Dtb : Real;
Begin
Write(‘ Nhap Ho va ten : ‘); Readln(Ho_ten);
Write(‘ Nhap ma so : ‘); Readln(Maso);
Write(‘ Nhap diem Toan : ‘); Readln(Toan);
Write(‘ Nhap diem Ly : ‘); Readln(Ly);
Dtb:= (Toan+Ly) / 2;
{ In lên màn hình các d liu v sinh viên }
TextBackGround(Green); { &t màu nn là Green }
TextColor(Red); { &t màu ch là Red}
Clrscr ;
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 13
Writeln(‘ KET QUA THI CUA SINH VIEN:’);
Writeln(‘Ho va ten : ‘, Ho_ten);
Writeln(‘Ma so : ‘, Maso);
Writeln(‘Diem Toan : ‘, Toan:3:1);
Writeln(‘Diem Ly : ‘, Ly:3:1);
Writeln(‘Diem Tbinh : ‘, Dtb:3:1);
Readln;
END.
Ghi chú : + son và chy c mt chng trình nh trên cn phi bit s
d#ng phn mm Turbo Pascal ( vit t*t là TP ).
IV.Các kiu d liu n gin dùng trong Pascal
Trong TP dùng mt s kiu d liu gi là d liu n gin chu/n nh sau:
1.Kiu nguyên : Dùng biu di$n các s nguyên, phm vi biu di$n ca s
nguyên t 1 byte n 4 byte
Tên kiu Phm vi gía tr S byte
ShortInt -128 127 1
Byte 0 255 1
Integer -32768 32767 2
Word 0 65535 2
LongInt -2147483648 2147483647 4
+Các phép toán trên kiu nguyên :
- Các phép toán : Cng(+), tr(-), nhân(*),chia(/)
- Phép chia ly phn nguyên (DIV): 10 Div 3 =3, 10 div 5 =2.
- Phép chia ly phn d(Mod): 15 mod 5 =0, 16 mod 3 =1.
+ Các hàm có i s nguyên :
-Hàm PRED(k) : i s k nguyên, tr v s nguyên )ng ngay trc k, t)c
là k-1 . Ví d#: Pred (5) = 4, Pred (-6) = -7.
-Hàm SUCC(k) : i s k nguyên, tr v s nguyên )ng ngay sau k, t)c
là k+1 . Ví d#: Succ (5) = 6, Succ (-6) = -5.
+Các th t#c có i s nguyên:
Có hai th t#c khá thông d#ng là:
-Th tc INC(k) : tng k lên mt n v. Ví d#, sau khi thc hin các lnh :
k:=5; Inc(k); thì gía tr sau cùng ca k là 6.
Vy, lnh Inc(k); tng ng vi lnh k:=k+1; hay k:=Succ(k);
-Th tc DEC(k) : gim k i mt n v. Ví d#, sau khi thc hin các lnh :
k:=5; Dec(k); thì gía tr ca k s" là 4.
Vy, lnh Dec(k) ; tng ng vi lnh k:=k-1; hay k:=Pred(k);
2.Kiu thc : Dùng biu di$n các s thc, phm vi biu di$n ca s thc t 4
n 10 byte.
Tên kiu
Phm vi gía tr
S byte
Real 2.9*10
-39
1.7*10
38
6
Single 1.5*10
-45
3.4*10
38
4
Double 5.0*10
-324
1.7*10
308
8
Extended 3.4*10
-4932
1.1*10
4932
10
Comp -9.2*10
18
9.2*10
18
8
+Các phép toán trên s thc :
Có 4 phép toán s hc là nhân (*), chia (/), cng (+) và tr (-). Khi mt
trong các s hng tham gia tính toán là kiu thc thì kt qa ca phép toán c(ng
là mt s thc. (Phép toán DIV, MOD không dùng cho các s th!c. )
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 14
+Các hàm có i s nguyên hoc thc
-Hàm ABS(x): tính tr tuyt i ca x Ví d#: Abs(5 - 8) = 3
-Hàm SQR(x): tính bình phng ca x: Ví d#: Sqr(4.0) = 16.0, Sqr(2) = 4
Trong các hàm di ây, i s x có th là nguyên hay thc, nhng gía tr tr
v luôn luôn là kiu th!c:
-Hàm SQRT(x): tính , (x ? 0)
- Hàm EXP(x) : tính e
x
- Hàm LN(x): tính lnx, (x > 0)
- Các hàm SIN(x), COS(x), và ARCTAN(x): tính sinx, cosx và arctgx.
- Hàm INT(x) : cho s thc bng phn nguyên ca x. Ví d# :
Int(12.55) = 12.0
Int(1+10/3)=4.0
-Hàm FRAC(x) : cho s thc bng phn l0 ca x. Ví d# :
Frac(12.55) = 0.55
Hai hàm c bit di ây cho kt qa là s nguyên:
-Hàm TRUNC(x): cho s nguyên là phn nguyên ca x. Ví d# :
Trunc(12.55) = 12
Trunc(-2.98) = -2
- Hàm ROUND(x): cho s nguyên bng cách làm tròn x. Ví d# :
Round(12.45) = 12
Round(-2.98) = -3
3.Kiu ký t (Char): Nhn mt trong các ký t trong bng mã ASCII, Mi ký t
trong bng mã ASCII gi là mt hng ký t, chim dài 1 byte, và khi vit trong
Pascal phi c &t trong c&p nháy n: ‘0’, ‘1’, ‘A’, ‘B’, ‘$’,
+Các hàm liên quan n ký t :
- Hàm PRED(ch): cho ký t )ng ngay trc ký t ch trong bng mã.
Ví d#: Pred(‘B’)=‘A’
-Hàm SUCC(ch): cho ký t )ng ngay sau ký t ch trong bng mã.
Ví d#: Succ(‘A’)=‘B’.
-Hàm UpCase(ch): i ký t ch thành ch hoa.
Ví d#: Upcase( ‘a’ ) = ‘A’, Upcase( ‘b’ ) = ‘B’, Upcase( ‘A’ ) = ‘A’ .
-Hàm ORD(ch) : cho mã ca ký t ch. Ví d#: Ord (‘A’) = 65, Ord (‘a’) = 97 .
-Hàm CHR(k) : i s k nguyên, 0< k < 255, cho ký t có mã bng k.
Ví d#: Chr (65)= ‘A’ , Chr (97)= ‘a’, Chr(32) là ký t tr*ng
4.Kiu logic (boolean)
Kiu boolean ch có hai gía tr là TRUE (úng) và FALSE (sai), không phân
bit ch hoa hay ch th!ng. V quan h th) t thì FALSE< TRUE. Mi gía tr
boolean chim mt byte b nh.
Các phép toán lôgic gm có: NOT, AND, OR và XOR. Nu A và B là hai i
lng lôgic thì NOT A, A and B, A or B và A xor B c(ng là nhng i lng lôgic
có kt qa c cho bng sau:
A B A and B A or B A xor B
True True True True False
True False False True True
False True False True True
False False False False False
5.Kiu chu*i (String) : là mt chui ký t. Khi gán hng chui , hng chui phi
c rào trong c&p du nháy n
Ví d# : ‘Turbo Pacal’, ‘12345’.
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 15
V.Các lnh nhp xut d liu .
Nhp và xut d liu là hai khâu quan trng trong qúa trình x lý thông tin.
Hu nh chng trình nào c(ng phi gii quyt vn nhp, xut d liu. Có
nhp c d liu thì mi có d liu tính hay x lý. Có d liu xut ra thì mi
bit c kt qa ca qúa trình x lý trong máy.
1. Lnh nhp d liu
1.1.Ý ngha :Dùng nhp d liu cho bin nguyên hay thc hay chui.
1.2 .Dng lnh có 3 dng nh sau :
1. Read(x1, x2, , xn);
2. Readln(x1, x2, , xn);
3. Readln;
Trong ó x1,x2…xn ã c khai báo kiu d liu trong phn khai báo.
- Dng 1 và dng 2 dùng nhp d liu cho các bin s ã c khai báo.
- Dng 1 khi nhp xong d liu ngay sau bin s xn, còn dng 2 khi nhp xong
con tr t ng nhy xung u hàng k tip.
- Dng 3 không dùng nhp d liu, mà có tác d#ng dng thc hin chng
trình ch! nhn phím enter.
Ghi chú : Khi nhp d liu cho các bin s , các giá tr vit cách nhau ít
nht mt kh ang tr*ng.
2. Lnh xut d liu.
2.1 Ý ngha : Dùng in các d liu lên màn hình
2.2 .Dng lnh : có 3 dng th t#c in d liu nh sau:
1. Write( bt1, bt2 , , btn );
2. Wrteln(bt1, bt2 , , btn );
3. Writeln;
Trong ó bt1, bt2, , btn là các biu th)c cn phi in gía tr lên màn hình.
Trong tr!ng hp n gin, mi biu th)c này có th là mt bin, mt hng, hay
mt hàm.
- Dng 1: in d liu xong con tr ngay sau btn, còn dng 2 khi in xong con tr
nhy ngay xung u hàng k tip.
- Dng 3: không dùng in d liu lên màn hình mà có tác d#ng a con tr
xung u hàng k tip.
Ví d: cho x, y là hai bin thc và gán x:=100/4; y:=-9/300; thì hai lnh sau :
Writeln(‘ x= ‘, x); Writeln(‘ y= ‘, y);
s" in lên màn hình :
x = 2.5000000000E+01
y = -3.0000000000E-02
2.2. In d liu dng s có nh dng:
a). In s th!c có nh dng:
In các s thc theo cách trên rt khó c. Vì th các s thc th!ng
c in có nh dng, ging nh cách vit s thông th!ng, bng lnh:
Writeln( biuth)c : n : k );
Trong ó n và k là các s t nhiên, n nh dùng n ct in gía tr ca
biu th)c, trong ó có k ct dành cho phn thp phân.
Ví d#: cho x, y là các bin kiu thc và: x:=100/4; y:=-123.4824;
Hai lnh sau :
Writeln(‘ x=‘, x:6:2);
Writeln(‘ y=‘, y:10:3);
s" in lên màn hình:
x= 25.00 ( trc s 2 có 1 ký t tr*ng)
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 16
y= -123.482 (trc du - có 2 ký t tr*ng)
Nu n nh hn chiu dài ca s cn in thì s s" c in ra vi y
các ch s trong phn nguyên. Ví d#, khi thc hin các lnh sau :
x:=12345.675;
Writeln(‘x= ‘, x:0:2); trên màn hình s" hin : x=12345.68
. ây máy ã làm tròn s khi b s l0 cui cùng.
2.3 Ví d
PROGRAM VIDU;
Uses CRT;
Var Ten : String[18]; Maso : String[11];
Begin
CLRSCR;
Write(‘ Nhap ho va ten: ‘); Readln(Ten);
Write(‘ Nhap ma so sv : ‘); Readln(Maso);
Writeln;
Writeln(‘ ********************** ’); { in 22 du * }
Writeln(‘*’, Ten:19, ‘*’:2); { in 1 du *, in Ten chim 19
ct, in tip du * chim 2 ct }
Writeln(‘* Ma so:’ , Maso:12, ‘*’:2); { in * Ma so, in
Maso chim 12 ct, in tip du * chim 2 ct }
Writeln(‘**********************’); { in 22 du * }
Readln;
End.
Bài tp chng 2
1. Nhp 2 s nguyên a, b t bàn phím. In ra tng, tích, hiu, thng ca a và b
2. +c t bàn phím din tích ca áy ln B1 và din tích áy nh B2 và chiu
cao h ca mt hình chóp c#t .Tính th tích hình chóp c#t theo công th)c sau :
V = (1/3)* (B1+B2 + B1*B2) *h
3. +c t bàn phím bàn kính R1, bán kính R2, là !ng sinh l và chiu cao h
ca mt hình chóp c#t. Tính din tích xung quanh và th tích hình chóp c#t theo
công th)c sau:
Din tích xung quanh S = (PI/2 * (R1R2) *I
Th tích V = (1/3) * (PI*h*(R1² + R2² + R1*R2))
4. Vit chng trình nhp vào im Toán, Lí, Hoá ca mt thí sinh theo h s
tng )ng 3 : 2 : 1 . Hãy tính và in im trung bình.
5.Vit chng trình tính lc hút F gia hai vt có khi lng M và N cách nhau
mt kh ang d theo công th)c :
Vi G là lc hp d'n = 6.673* 10
–8
cm
2
/gs
2
(M tính bng gram,D tính bng cm)
6.Vit chng trình nhp 3 s nguyên dng a, b, c sau ó tính và in ra màn
hình giá tr trung bình cng s , c và trung bình nhân p ca 3 s ó
Bit rng :
3
cba
s
+
+
=
3/1
)(abcp =
7.Vit chng trình nhp 3 s nguyên dng a, b, c là s ó 3 cnh ca mt
tam giác. Hãy tính và in ra màn hình din tích s ca tam giác ó.
Bit rng : s=sqrt(p*(p-a)*(p-a)*(p-c)) trong ó p=0.5*(a+b+c).
2
*
d
NM
GF =
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 17
Chng III
CÁC LNH +I,U KIN – VÒNG L-P
I. Các lnh i"u kin
1.Lnh nhy không i"u kin
- Cú pháp : Goto <Nhãn>
- Chc n ng : Nhy ngay n lnh ã c ánh du bng nhãn ã c
khai báo.
Ghi chú: Cách khai báo nhãn trong phn khai báo.
Label <Nhãn> Vi <Nhãn> là mt t t &t.
2. Câu lnh IF
2.1. Câu lnh If dng 1
Cú pháp :
IF <Ði"ukin> THEN <Lnh> ;
Ðiu kin là mt biu th)c lôgic cho kt
qa TRUE (úng) hay FALSE (sai). Lnh có th
là mt lnh n gin ho&c mt lnh có cu trúc.
Ý ngha: Máy kim tra iu kin, nu
Ðiukin là úng thì thc hin lnh Lnh, ngc
li nu Ðiukin là sai thì thc hin lnh k tip
sau if
Ví d : Nhp vào h tên và im trung bình
(DTB) ca mt sinh viên. Hãy phân loi sinh viên theo DTB nh sau:
Loi là Kém nu DTB<5,
là Tbình nu 5 =< DTB<7,
là Khá nu 7 <= DTB<9,
là Gi i nu DTB >= 9.
In h tên, im trung bình và phân loi sinh viên.
PROGRAM PhanloaiSinhvien; { Phân loi sinh viên }
Var
Ho_ten: String[18]; DTB: Real; Loai: String[6];
Label aa;
Begin
Write(‘ Nhap ho va ten :’); Readln(Ho_ten);
aa:Write(‘ Nhap iem trung binh :’);Readln(DTB);
If DTB<0 then
Begin
Writeln(‘Diem trung binh <0 ! Xin nhap lai ‘);
Readln;
Goto aa;
End;
{ phân loi theo DTB }
If DTB< 5 then Loai:=‘Kem’;
If (DTB>= 5) and (DTB<7) then Loai:=‘Tbinh’;
If (DTB >= 7) and (DTB< 9) then Loai:=‘Kha’;
If DTB >= 9 then Loai:=‘Gioi’;
Writeln(Ho_ten, #32 , DTB:4:1 , #32 , Loai); { #32 là ký t tr*ng }
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 18
Readln;
End.
2.2. Câu lnh IF dng 2
+Cú pháp :
IF Ði"ukin THEN Lnh1
ELSE Lnh2 ;
Chú ý :
-Trc ELSE không có du chm ph/y.
-Lnh1 và Lnh2 có th là mt lnh ghép, t)c
là gm nhiu lnh c &t trong khi begin và end; .
+Ý ngha ca lnh: Máy kim tra iu kin, Nu
Ðiukin là úng thì thc hin Lnh1, ngc li, nu
Ðiukin là sai thì thc hin Lênh2.
Ví d: Vit chng trình nhp vào hai s a và b,
tìm và in s nh nht và s ln nht ca chúng:
PROGRAM Tim_Max_Min; { Tim so lon nhat va so nho nhat ca hai so }
Var
a, b, Max, Min : Real;
Begin
Write(‘ Nhap a va b :’);Readln(a,b);
If a < b then
begin
Max:= b;
Min:= a;
end
else { trc else không có du ; }
begin
Max:= a;
Min:= b;
end;
Writeln(‘ So lon nhat la: ‘ , Max:6:2);
Writeln(‘ So nho nhat la: ‘ , Min:6:2);
Readln;
End.
2.3. Câu lnh IF lng nhau :
Trong câu lnh IF, nu Lnh1 ho&c Lnh2, ho&c c hai, li là câu lnh IF thì ta
có cu trúc IF lng nhau. Ch4ng hn di ây là hai câu lnh IF ELSE lng
nhau :
IF Ði"ukin1 THEN
If Ði"ukin2 then Lnh1
else
Lnh2
ELSE
Lnh3 ;
+kin
Lnh 1
Lnh 2
Sai
+úng
L
nh k tip
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 19
Ví d# : Vit chng trình nhp vào h tên mt ch h, ch s in k tháng
trc (chiso1) và ch s in k tháng này (chiso2), tính tin in tháng này cho
h, bit rng :
Mi kw trong 100 kw u tiên có n gía là 500,
T kw th) 101 n kw th) 200 có n giá 800,
T kw th) 201 tr lên có n gía 1000.
PROGRAM Tinh_tien_dien; { Tính tin in }
Var
Ho_ten: String[18];
chiso1, chiso2, Ldtt, Tien : Real;
Label aa;
Begin
Write(‘ Nhap ho va ten :’); Readln(Ho_ten)
aa: Write(‘ Nhap ch s tháng trc, ch s tháng này: ‘);Readln( chiso1, chiso2);
If chiso2<chiso1 Then
Begin
Writeln(‘Ban nhap sai du lieu ! Xin nhap lai’);
Readln;
Goto aa;
End;
Ldtt:=chiso2 - chiso1;
If Ldtt<= 100 then Tien:=Ldtt*500
else
if Ldtt <=200 then Tien:=100*500+(Ldtt - 100)*800
else
Tien:=100*500 + 100*800 + (Ldtt - 200) * 1000;
Writeln(‘ H và tên là ‘, Ho_ten);
Writeln(‘ Tin phi tr là ‘ , Tien:10:2);
Readln;
End.
3. Câu lnh CASE
3.1. Cú pháp
Lnh CASE có hai dng, chúng ch khác nhau mt im là trong dng 2 có
ELSE Lnh n+1, còn trong dng 1 thì không ( hình v").
CASE biuth)c OF
hng1 : Lnh1;
hng2 : Lnh2;
. . . .
hngn : Lnhn;
END;
Dng 1
CASE biuth)c OF
hng1 : Lnh1;
hng2 : Lnh2;
. . . .
hngn : Lnhn;
ELSE Lnhn+1;
END;
Dng 2
Chú ý - Lnh CASE phi kt thúc bng END;
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 20
- Kiu d liu ca biuth)c ch là kiu d liu m c nh: nguyên, ký
t, Lôgic, ho&c kiu lit kê hay kiu on con, không c là kiu thc hay kiu
chui
3.2: Ý ngha: Khi g&p lnh Case trong chng trình máy thc hin theo các
bc sau :
Bc 1: Tính gía tr ca biuth)c
Bc 2: So sánh và la chn:
- Nu gía tr ca biuth)c = Gt1 thì thc hin Lnh1
- Nu gía tr ca biuth)c = Gt2 thì thc hin Lnh2
- Nu gía tr ca biuth)c = Ctn thì thc hin Lnhn
Bc 3:
a) chuyn ngay sang lnh k tip sau End ( nu là dng 1)
b) thc hin Lnh n+1, ri chuyn sang lnh k tip sau End
(nu là dng 2) .
S
2.3. Các ví d :
PROGRAM Tim_so_ngay_cua_thang; { Xác nh s ngày ca tháng }
Var
Thang, Nam, Songay : Integer ;
Begin
Write(‘Nhp Thang, Nam : ‘); Readln(Thang, Nam);
If (Thang<1) or ( Thang>12) then writeln(‘ Nhp sai ’)
else
begin
Case Thang OF
4, 6, 9, 11 : Songay:=30;
1, 3, 5, 7, 8, 10, 12 : Songay:=31;
2 : begin
If Nam mod 4 = 0 then Songay:=29
else Songay:=28;
end;
Sai
Lnh k
GT=gt
L
nh1
GT=gt
L
nh2
G
T=gt
L
nh3
+úng
+úng
Sai
Sai
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 21
End; { Ht Case }
Writeln(‘ S ngày là : ‘ , Songay);
end;
Readln;
End.
Ví d 2: Xây dng thc n cho phép la chn mt trong bn vic : tính tng ,
tính hiu, tính tích ho&c tính thng ca hai s x, y nhp t bàn phím.
Màn hình cn hin ra bn m#c sau cho mi ng!i la chn :
A. TÍNH T5NG HAI S6
B. TÍNH HI7U HAI S6
C. TÍNH TÍCH HAI S6
D. TÍNH TH8NG HAI S6
Chng trình c vit nh sau :
PROGRAM Thuc_Don;
Uses Crt;
Var
x, y : Real; Ch : Char;
Begin
Clrscr;
Write('Nhap x va y:'); Readln(x, y);
Gotoxy(10, 3); Write('A. TINH TONG HAI SO');
Gotoxy(10, 5); Write('B. TINH HIEU HAI SO');
Gotoxy(10, 7); Write('C. TINH TICH HAI SO');
Gotoxy(10, 9); Write('D. TINH THUONG HAI SO');
Gotoxy(2,11); Write('-Ban chon muc nao (A, B, C, D) ?:'); Readln(Ch);
CASE Ch of
'A', 'a': Writeln('Tong =', x+y :6:2);
'B', 'b': Writeln(' Hieu =', x-y :6:2);
'C', 'c': Writeln(' Tich =', x*y :6:2);
'D', 'd': If y<>0 then Writeln(' Thuong =', x/y:6:2 )
else Writeln(' Khong xac dinh !');
ELSE
Writeln(' Khong co muc ', Ch);
END;
Readln;
End.
2.3. Câu lnh CASE lng nhau
Trong cu trúc CASE, khi mt trong các Lnh1, Lnh2, , Lnhn hay
Lnhn+1 li là mt lnh CASE thì ta có cu trúc CASE lng nhau.
Ví d# 3: Mt xí nghip tính tin thng hàng tháng cho công nhân theo công
th)c : Tin thng= H s * 200.
Trong ó H s c tính da vào kt qa bình chn phân loi lao ng (loi
A, B hay C) và ni làm vic (c s 1 hay c s 2) ca mi ng!i trong tháng, c#
th nh sau :
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 22
Loi C s 1 C s 2
A 2.0 2.5
B 1.5 1.8
C 1.0 1.0
Vit chng trình nhp h tên, phân loi lao ng và ni làm vic ca mt
công nhân, tính tin thng cho ng!i ó.
PROGRAM Tinh_tien_thuong;
Var
Ho_ten: String[20]; Loai : Char; Coso : Byte;
Heso, Thuong : Real;
Begin
Write(‘ Nhp h và tên: ‘); Readln(Ho_ten);
Write(‘ Nhp c s làm vic (1,2): ‘); Readln(Coso);
Write(‘ Nhp phân loi lao ng (A,B,C) : ‘);Readln(Loai);
CASE Loai OF
‘A’, ‘a’: Case Coso of
1: Heso:=2.0;
2: Heso:=2.5;
end;
‘B’, ‘b’: Case Coso of
1: Heso:=1.5;
2: Heso:=1.8;
end;
‘C’, ‘c’: Heso:=1.0;
END; { Ht CASE }
Thuong:=Heso*200;
Writeln(‘H và tên Tin thng ‘);
Writeln(Ho_ten , Thuong:8:2 );
Readln;
End.
II.CÁC LNH VÒNG L-P
1. Câu lnh lp FOR
1.1. Câu lnh FOR dng 1
- Cú pháp:
FOR bin s := <Giá tr u>TO <Giá tr
cui> DO Lnh;
- Yêu cu: bin s phi thuc kiu d liu n
gin m c, th!ng là kiu nguyên, ký t hay
lô gic, không th là kiu thc hay chui.
- Cách thc hot ng ca FOR:
Bc 1: Gán giá tr cho bin s := giá tr u
Bc 2: Thc hin vic so sánh:
-Nu bin s <= Giá tr cui thì thc hin bc 3;
Bin s:=Gtu
Bin<=Gtc
u
i
Lnh
Bin:=Bin+1
+úng
Sai
Thóat
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 23
-Nu bin s >Giá tr cui thì thóat ra kh i vòng l&p , thc hin lnh k tip.
Bc 3: Thc hin lnh sau DO
Bc 4 : Tng gía tr ca bin s :
bin s:=Succ(bin s);
Quay li bc 2.
1.2. Các ví d
Ví d 1: Hãy vit chng trình tính tng : S= 1
2
+ 2
2
+ 3
2
+ + 10
2
PROGRAM Tong1;
Var
N, i : Integer;
S : LongInt;
Begin
Write(‘ Nhp N :’); Readln(N);
S:=0;
For i:=1 to N do S:=S+i*i ;
Writeln(‘S= ‘, S);
Readln;
End.
Ví d 2: Bài tính giai tha ca mt s.
PROGRAM Giai_thua;
Var
N, i : Integer;
S : LongInt;
Begin
Write(‘Nhp s dng N : ‘); Readln(N);
S:=1;
For i:=1 to N do S:=S * i ;
Writeln(‘Giai thua = ‘, S);
Readln;
End.
2. Câu lnh FOR d&ng 2
-Cú pháp:
FOR bin s := <Giá tri cui> DOWNTO <Giá tr u> DO Lnh;
-Cách thc hot ng ca FOR dng 2:
Bc 1: Gán giá tr cho bin s := giá tr
cui
Bc 2: Thc hin vic so sánh:
-Nu bin s >= Giá tr u thc
hin bc 3;
-Nu bin s <Giá tr u thì thóat
ra kh i vòng l&p , thc hin lnh k tip.
Bc 3: Thc hin lnh sau DO
Bc 4 : Gim gía tr ca bin :
bin s:=Pred(bin s);
Quay li bc 2.
Bin :=Gtu
Bin>=Gtcui
Lnh
Bin:=Bin-1
+úng
Sai
Thóat
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 24
Ví d# 1 : In các ch cái theo th) t ngc t Z n A thành hai dòng :
Z, Y, X, , C, B, A
z, y, x, , c, b, a
Chng trình c vit nh sau:
PROGRAM In_Ky_tu_nguoc;
Var
: Char;
Begin
For ch:=‘Z’ downto ‘A’ do write(ch:3 );
Writeln;
For ch:=‘z’ downto ‘a’ do write(ch :3 );
Writeln;
Readln;
End.
3. Câu lnh FOR lng nhau
Trong cu trúc FOR, khi Lnh c(ng là mt lnh FOR thì ta có cu trúc FOR
lng nhau:
FOR bin1:= m1 TO m2 DO {1}
FOR bin2:=n1 TO n2 DO Lnh; {2}
Cách th)c hot ng ca lnh này nh sau:
Ðu tiên cho bin1:=m1 và làm lnh dòng {2}. Vì dòng {2} là lnh FOR
nên vi mi gía tr ca bin2=n1, , n2, u phi làm Lnh, kt qa là Lnh
c làm n2-n1+1 ln.
Bây gi! tng: bin1:=Succ(bin1), ri li làm lnh FOR dòng {2}, kt
qa lnhP c làm thêm n2-n1+1 ln na.v.v.
Qúa trình trên c) tip t#c cho n khi bin1=m2+1 thì dng.
Lnh FOR {1} làm m2-m1+1 ln lnh FOR {2}, còn chính lnh FOR {2} li làm
n2-n1+1 ln Lnh. Vì th lnh c làm tt c là (m2-m1+1)*(n2-n1+1) ln.
Ví d#: In hình ch nht &c nh di ây:
PROGRAM In_hinh_chu_nhat_chu_A;
Uses Crt;
Var I,j,n,m :Integer;
Begin
Clrscr;
Write(‘Hay nhap chieu rong =’);Readln(n);
Write(‘Hay nhap chieu dai =’);Readln(m);
For i:=1 to n do
begin
for j:=1 to m do write(‘A’);
Writeln;
end;
Readln;
End.
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 25
Ví d# 2: Tìm các s Fibonaci.
Dãy s Fibonaci c xây dng nh sau:
U
0
=1, U
1
=1 , U
k
=U
k-1
+ U
k-2
vi mi k= 2, 3, 4,
PROGRAM In_Fibonaci;
Var
N, i, U, U0, U1 : Integer;
Begin
Write(‘ Nhp N :’); Readln(N);
U0:=1;
U1:=1;
Writeln( N+1 , ‘ s Fibonaci u tiên là :’ ); Write(U0:3 , U1:3);
For i :=2 to N do
begin
U:=U0+U1;
Write(U:3);
U0:=U1;
U1:=U;
end;
Readln;
End.
3. Câu lnh WHILE
3.1 Cú pháp
WHILE Ðiukin DO Lnh ;
-Ý ngha : Thc hin lnh trong khi +iu kin
còn úng, khi iu kin sai thóat ra kh i vòng
l&p , thc hin lnh k tip.
3.2. Các ví d v lnh While
Ví d 1 : Nhp s t nhiên N, dùng lnh
WHILE tính S=N!:
PROGRAM Giai_thua_2;{ Tinh S=N! bng
lnh WHILE }
Var
N, i : Integer;
P : LongInt;
Begin
Write(‘ Nhp N > 0 : ‘ ); Readln(N);
P:=1;
i :=1;
While i<= N do
begin
P:=P*i;
i:=i+1;
end;
Writeln(‘ Giai thua = ‘, P);
Readln;
End.
+iu kin
Lnh
+úng
Sai
Thóat