Tải bản đầy đủ (.pdf) (70 trang)

Bài giảng ngôn ngữ lập trình pascal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (643.13 KB, 70 trang )

Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 1
Chng I
CHNG TRÌNH VÀ THUT GII

I. Chng trình (Program)
1.Khái nim
Chng trình là mt dãy liên tip các lnh. Thc hin các lnh ó gi là
thi hành chng trình. Các chng trình u có các tính cht chung sau ây:
- Các lnh c thi hành mt cách tun t, thi hành xong mt lnh mi thi
hành lnh k tip.
- Khi thi hành chng trình cn thêm d liu t bên ngòai, iu này làm
cho chng trình tr nên phong phú và tng quát.
Chng trình có th c vit bng các ngôn ng lp trình khác nhau.
2.Ngôn ng lp trình.
Có hàng trm loi ngôn ng lp trình khác nhau, mi loi ngôn ng u có
cú pháp riêng ca nó. Ngôn ng lp trình có th c phân chia thành 3 loi
chính : ngôn ng máy, hp ng và ngôn ng cp cao.
2.1 Ngôn ng máy
Ngôn ng máy (mã máy) là ngôn ng nn tng ca b vi x lý. Bao gm
các câu lnh là nhng dãy s nh phân 0 và 1 rt khó c, khó vit . Ch có các
chuyên gia v máy tính mi vit c. u im ca vic vit chng trình bng
ngôn ng máy là lp trình viên có th iu khin máy tính trc tip và t c
chính xác iu mình mun làm, tc  thi hành chng trình nhanh và kích
thc chng trinh nh . Nhc im ca chng trình ngôn ng máy là thông
th!ng s" mt rt nhiu th!i gian  vit, rt khó c, khó tìm li và chng trình
ph# thuc vào b vi x lý nên chng trình ch chy c trên nhng máy tính
có cùng b vi x lý mà thôi. Ngôn ng máy còn c gi là ngôn ng cp thp
(low-level language)
2.2 Hp ng
Hp ng c phát trin nhm giúp các lp trình viên d$ nh các ch th


ca chng trình hn. Các chng trình hp ng còn bao gm các ch th v% mô
(macro instruction) có th to ra nhiu lnh mã máy. Các chng trình hp ng
c chuyn sang mã máy thông qua mt chng trình &c bit gi là trình hp
dch (assembler). M&c dù hp ng tng i d$ dùng hn mã máy nhng hp
ng v'n c xem là ngôn ng cp thp bi vì nó v'n còn rt gn vi tng thit
k ca máy tính.
2.3 Ngôn ng cp cao
Ngôn ng cp cao gn g(i hn vi ý nim ngôn ng mà hu ht mi
ng!i u bit, nó bao gm các danh t, ng t, ký hiu hc, liên h và các
thao tác lun lý. Các yu t này có th c phi hp, liên kt vi nhau to
thành mt hình th)c ca câu. Các "câu" này c gi là các mnh  ca
chng trình (program statement). Chính vì nhng &c im này, các lp trình
viên d$ dàng c và d$ hc ngôn ng cp cao hn so vi ngôn ng máy ho&c
hp ng. Mt li im quan trng là ngôn ng cp cao thông th!ng không ph#
thuc vào máy tính, ngh%a là các chng trình vit bng ngôn ng cp cao có
th chy trên các loi 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 lp trình thông dng
Hin nay có rt nhiu ngôn ng lp trình cp cao là :BASIC, COBOL, C,
FORTRAN, PASCAL.v.v Ngày này còn có thêm rt nhiu các ngôn ng lp
trình hng i tng rt tin li cho các lp trình viên nh : C++, Visual Basic ,
Visual C, Denphi, Javal .v.v
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 2
3.Trình thông dch và biên dch
Mi chng trình c vit bng các ngôn ng không phi là ngôn ng
máy cui cùng u phi c chuyn i sang ngôn ng máy trc khi c thi
hành. Chng trình ngôn ng cp cao c dch sang ngôn ng máy bng mt
trong hai cách: bng trình biên dch (compiler) ho&c trình thông dch (interpreter).
3.1 Trình biên dch :
S" chuyn i toàn b chng trình sang mã máy, ri ch)a kt qu vào

%a  có th thi hành v sau. Trình biên dch to ra mt danh sách li ca tt c
mnh  trong chng trình vi phm cú pháp ca ngôn ng. Danh sách này giúp
lp trình viên d$ dàng sa i chng trình.
3.2 Trình thông dch :
Thay vì chuyn i toàn b chng trình ngun nh trình biên dch, trình
thông dch ch dch tng lnh và thi hành tng lnh. Li im ca trình thông
dch là lp trình viên v'n có th chy mt chng trình v'n còn li cú pháp. Ch
khi thông dch n câu lnh có li cú pháp, quá trình thi hành chng trình mi
b ngng li và trình thông dch s" thông báo li. ng!i lp trình cn c) vào li 
sa cha.
II.Thut gii.
1. Ý ngha
Thut gii là mt phng pháp, tng bc hng d'n, th hin l!i gii
ca mt vn  - mt bài toán .
Trong khoa hc máy tính, thut gii c nh ngha là mt dãy hu hn các
bc rõ ràng và có th thi hành c, quá trình hành ng theo các bc này
phi dng và cho c kt qu nh mong mun.
2.Các c trng ca thut gii
Thut gii có các &c trng c bn là :
2.1.Xác nh : Mi thut gii u phi xác nh rõ ràng, không mp m!.
2.2. Hu hn: Mi thut gii sau mt s hu hn bc phi kt thúc và cho ra
kt qa.
2.3: úng : Thut khi thc hin xong các bc , phi cho ra kt qu úng
*n.
Ngoài ra thut gii có các &c trng khác nh : +u vào, u ra, tính hiu
qa và tính tng quát.
3. Các phng pháp biu din thut gii
Trong thc t ng!i ta th!ng có 2 phng pháp biu di$n thut :
- Dùng ngôn ng t nhiên
- Dùng Lu  - S 

3.1. Ngôn ng t nhiên
Ng!i lp trình dùng ngôn ng ca mình  mô t thut . Ng!i lp trình
lit kê có th) t các bc ca thut gii . Tuy vy thut gii th!ng dài dòng khó
hiu và th!ng không theo mt qui t*c nht nh.
Ví d 1 : Thut gii phng trình bc hai ax
2
+bx+c=0 (a<>0)
B*t u
1. Yêu cu cho bit giá tr ca 3 h s a, b, c
2. Nu a=0 thì
2.1. Yêu cu u vào không m bo.
2.2. Kt thúc gii thut .
3. Tr!ng hp a khác 0 thì
3.1. Tính giá tr ∆ = b
2
-4ac
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 3
3.2. Nu ∆ > 0 thì
3.2.1. Phng trình có hai nghim phân bit x
1
và x
2

3.2.2. Giá tr ca hai nghim c tính theo công th)c sau




3.2.3. Kt thúc.

3.3. Nu ∆ = 0 thì
3.3.1. Phng trình có nghim kép x
0

3.3.2. Giá tr ca nghim kép là : x=-b/2a
3.3.3. Kt thú c.
3.4. Nu ∆ < 0 thì
3.4.1. Phng trình vô nghim.
Kt thúc.
Ví d 2 :Thut gii tìm hp có trng lng n&ng nht
t vn  : Có n hp có khi lng khác nhau và mt cái cân %a. Hãy ch ra
cách cân  tìm c hp có trng lng n&ng nht : Thut gii c# th nh sau:
B*t u
1. Nu ch có 1 hp (n=1) thì
1.1. Hp ó chính là hp n&ng nht.
1.2. Kt thúc gii thut .
2. Ngc li nu có t hai hp tr lên (n>1)
2.1. Chn hai hp bt k, và &t lên bàn cân.
2.2. Gi li hp nng hn, ct hp nh- hn sang ch khác.
3. Nu còn hp cha c cân thc hin các bc sau, nu không còn
hp nào na, sang bc 5.
3.1. Chn mt hp bt k, và  lên %a cân còn trng.
3.2. Gi li hp nng hn, ct hp nh- hn sang ch khác.
4. Tr li bc 3.
5. Hp còn li trên cân chính là hp n&ng nht.
Kt thúc.
3.2. Lu  - s  khi
Lu  hay s  khi là mt công c# trc quan  di$n t các thut gii.
Biu di$n thut gii bng lu  s" giúp ng!i c theo dõi c s phân cp
các tr!ng hp và quá trình x lý ca thut . Phng pháp lu  th!ng c

dùng trong nhng thut có tính r*c ri, khó theo dõi c quá trình x lý.
Trong thut gii dùng lu  th!ng dùng các hình v" qui c sau  mô
t các bc.
Ch !ng i ca d liu


Ch im b*t u và kt thúc.


Ch)a các thao tác x lý


Ch thao tác kim tra iu kin

a
b
x
2
1
∆+−
=
a
b
x
2
2
∆−−
=
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 4

. trên ch là các ký hiu c bn và th!ng c dùng nht. Trong thc
t, lu  còn có nhiu ký hiu khác nhng th!ng ch c dùng trong nhng
lu  ln và ph)c tp.
Ví d1 : Lu  thut gii, gii Phng trình bc hai.
























Ví d 2: Lu  tìm phn t ln nht trong dãy s.






















K
t thúc

a=0
Thông báo
sai
Nhp li
D:=b
2
-4ac

D=0
Nhp b,c
Nh
p a

Pt có nghim
kép
x
1,2
=
-
b/2a

D>0
Pt có 2 nghim
x
1
=-b+ D /2a
x
2
=
-
b
-
D
/2a

Pt
vô nghi
m




s



s



s

B
*t u

Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 1: Chng trình và thut gii Trang 5

Bài tp :
1.Hãy vit thut gii h phng trình bc nht 2 /n s
a1x+b1y =c1
a2x+b2y =c2
Bit rng :







2.Vit thut gii tim s ln nht trong 3 s a, b, c.
3.Vit thut gii tìm s Pibonanci th) n vi
F
0
=0, F
1
=1, F
n
=F
n-2
+F
n-1

4.Vit thut gii tim các s nguyên t trong dãy s n s t a
1
a
n

5.Vit gii thut tìm USCLN, BSCNN ca 2 s a, b.
6.Vit gii thut tính tng l0 , tng ch1n ca dãy n s t nhiên a
1 . .
a
n

7.Vit thut gii tìm n! =1*2*3*. .*n.
8.Xác nh d liu và d liu ra cho các thut gii sau
a.Kim tra xem ba s cho trc a, b, c có th là  dài ba cnh ca mt
tam giác hay không ?
b.Tính trung bình cng ca 2 s a, b
c.Dùng mt cc ph#  tráo nc  hai cc cho trc

d.Tìm chu vi và din tích ca hình tròn có bán kính cho trc
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 bc thc hin  ly c 2 lít nc.
10.Vit thut gii vit gii thut xác nh ma trn n v.
11.Vit thut gii in ra ma trn chuyn v ca ma trn ã nhp trc.
12.Vit thut gii In ra ma trn tích cu hai ma trn ã nhp trc.
13. Có 3 bình A, B, C. Bình A có dung tích 8 lít và ng y 8 lít ru, 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 bc thc hin  có
c 4 lít ru  bình A và 4 lít ru  bình B.
14. Mt ng!i có 1 con gu, 1 con dê và 1 cái b*p ci. Nu không có ng!i 
bên chúng thì con gu s" n tht con dê ho&c con dê s" n b*p ci. Thuyn ch
có th ch c ng!i ó vi con gu ho&c con dê ho&c b*p ci. 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
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 6
Chng 2
GII THIU NGÔN NG LP TRÌNH PASCAL
I.Gii thiu chung
1.Xut x : PASCAL là ngôn ng lp trình cp cao c giáo s Niklaus Wirth 
tr!ng i hc K2 thut Zurich (Th#y s%) thit k và công b vào nm 1971. Ông
&t tên cho ngôn ng ca mình là Pascal  tng nh nhà hc ni ting ng!i
Pháp  th k3 17: Blaise Pascal, ng!i ã sáng ch ra chic máy tính c khí u
tiên ca nhân loi.
Thành công ca ngôn ng Pascal là  ch: nó là ngôn ng u tiên a

ra và th hin c khái nim lp trình có cu trúc. Ý tng v mt chng
trình có cu trúc xut phát t suy ngh% cho rng có th chia mt bài ln, ph)c
tp thành nhiu bài nh , n gin hn. Nu mi bài nh c gii quyt bng
mt chng trình con, thì khi liên kt các chng trình con này li s" to nên mt
chng trình ln gii quyt c bài ban u.
Bng cách chia mt chng trình thành các chng trình con nh vy,
ng!i tho chng có th lp trình  gii quyt riêng l0 tng phn mt, tng
khi mt, ho&c có th t ch)c  nhiu ng!i cùng tham gia, mi ng!i ph#
trách mt vài khi. Ð&c bit khi phi thay i hay sa cha trong mt khi thì
iu ó s" ít nh hng n các khi khác.
Ngày nay, Ngôn ng Pascal c dùng  vit các chng trình )ng
d#ng trong nhiu l%nh vc. Vi vn phm sáng sa, d$ hiu, vi kh nng 
mnh, Pascal c xem là ngôn ng thích hp nht  ging dy  các tr!ng
ph thông và i hc.
2. Turbo Pascal
T khi phn mm Pascal ca Niclau Wirth ra !i các hãng phn mm ã
liên t#c phát trin thành các Pascal riêng nh : IOS Pascal chu/n , IBM Pascal
ca MicroSoft, Turbo Pascal ca hãng Borland , nhng Turbo Pascal (TP) có
nhiu u im nên c s d#ng rng rãi  ging dy.
II.S d ng ph!n m"m Turbo Pascal
1. Kh#i $ng Turbo Pascal:
Trong phn này s" trình bày cách s d#ng Turbo Pascal 7.0.phiên bn
th!ng c dùng ph bin hin nay.
1.1. Các tp tin chính ca Turbo Pascal: TP có hàng trm tp tin nhng 
chy c Turbo Pascal 7.0, ch cn hai tp tin sau là  :
- TURBO.EXE : tp tin chính ca TP
- TURBO.TPL : tp tin ch)a các th vin ca TP
Nu mun v"  ha thì phi có thêm các tp tin:GRAPH.TPU, tp tin
ch)a th vin  ha *.BGI : các tp tin màn hình  ha *.CHR : các tp tin to
kiu ch

Nu mun xem hng d'n s d#ng Turbo Pascal thì cn có thêm tp tin
TURBO.HLP
1.2. Kh#i $ng Turbo Pascal:
Thông th!ng hin nay các máy s d#ng h iu hành Windows nên có
các khi ng nh sau :
- Tr!ng hp có s1n mt Shortcut ch)a Turbo Pascal  trên Desktop :
hãy Double click vào biu tng Shortcut ca Turbo Pascal.
- Tr!ng hp không có s1n mt Shortcut ch)a Turbo Pascal: hãy chn
lnh Start, chn tip lnh Run, ri gõ vào !ng d'n y  ca tp tin
TURBO.EXE, ch4ng hn:
C:\TP\TURBO.EXE ↵ , nu khi ng TP t %a C.
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 7
A:\TP\TURBO.EXE ↵ , nu khi ng TP t %a A.
1.3. Ca s màn hình Turbo Pascal và cách chn lnh :


Trong ca s này, dòng trên cùng là mt thc n ngang, lit kê 9 nhóm
lnh chính ca TP. Mun chn mt lnh trong thc n này, có th tin hành
theo mt trong hai cách:
+ Cách 1: Gõ phím F10. Lúc này, trên thc n xut hin mt khung sáng
(th!ng là màu xanh). Mun chn lnh nào thì gõ các phím m(i tên ← , → d!i


khung sáng n lnh ó ri Enter. Mt thc n con ca lnh va chn hin ra,
gi là thc n hàng dc. Ví d#, khi chn lnh File, ta c thc n con nh
sau:
+ chn mt lnh trong thc n hàng dc, hãy gõ các phím m(i tên ↑ , ↓
d!i khung sáng n lnh ó ri Enter. Khi không mun chn lnh nào thì gõ phím
ESC  tr v vùng son tho.

+ Cách 2 : Chn mt lnh trong thc n ngang bng cách gõ ng th!i
phím Alt vi phím ch cái u tiên ca tên lnh mun chn. Ví d#, mun chn
menu File thì gõ ng th!i hai phím Alt và F (vit t*t là Alt-F), tng t, mun
chn menu Compile thì gõ Alt-C.
+ Cách 3 : Dùng phím gõ t*t
Có mt s lnh c gán cho nhng phím &c bit gi là phím "gõ t*t”, ví
d# lnh Open: F3, lnh Save : F2, lnh Exit : Alt-X. + thc hin nhng lnh này,
thay vì phi chn nó t trong thc n, ta ch cn gõ phím nóng tng )ng vi
Con tr dùng 
son tho
chng trình
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 8
nó. Ví d#, thay vì chn lnh Open thì gõ phím F3, thay vì chn lnh Save thì gõ
phím F2,
Di thc n ngang là vùng son tho dùng  gõ chng trình vào.
+u ca vùng này hin tên ca tp tin ang son, và nu ng!i tho chng
cha &t tên thì TP s" &t mt tên m&c nhiên là NONAME00.PAS.
Dòng cui cùng tóm t*t mt s phím " gõ t*t" hay dùng, nh phím F1 
xem hng d'n, phím F2  lu tp tin lên %a, phím F3 dùng  m xem mt
tp tin, phím F10  khi ng thc n,.v.v.
1.4. Thoát khi Turbo Pascal
Chn lnh File trong thc n ngang, chn tip lnh Exit trong thc n
dc (vit gn là chn lnh File/ Exit) ho&c gõ c&p phím gõ t*t Alt-X
1.5. Các bc thc hin mt chng trình Pascal
+ son và chy mt chng trình Pascal trong Turbo Pascal, nên tin hành
các bc nh sau:
- Bc 1: Khi ng Turbo Pascal
- Bc 2: Nhn F2 &t tên cho chng trình.
- Bc 3: Son tho ( gõ ) chng trình .

Bn hãy gõ chng trình m'u sau vào vùng son tho ca Turbo Pascal :

-Bc 4: Dch và sa li:
Chn lnh Compile/ Compile (ho&c gõ c&p phím Alt-F9 hay F9). Máy s"
dch chng trình sang mã máy, nu g&p li thì dng và hin thông báo li màu
  u màn hình, ng th!i con tr &t  v trí có li. Ng!i tho chng phi
t mình sa li, ri gõ Alt-F9  dch và sa li tip cho n khi ht li. Du hiu
cho bit vic dch ã xong là màn hình xut hin ca s thông báo có dòng ch
&c trng là:


- Bc 5: Lu tr li chng trình lên %a: chn lnh File/ Save ho&c gõ
phím F2.
- Bc 6: Chy th chng trình: Chn lnh Run/ Run ho&c gõ phím nóng
Ctrl-F9 (vit t*t là ^F9). Mi ln chy th, ta cn nhp mt b d liu c# th và
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 9
kim tra xem kt qa in lên màn hình có úng không và có phù hp vi thc ti$n
không?. nu sai cn kim tra li.
2. M$t vài k% thut trong so&n tho
2.1. Thao tác trên khi:
Ta gi khi là mt on vn bn gm mt hay nhiu dòng liên tip. Ký t
u tiên ca khi gi là u khi, ký t cui cùng ca khi gi là cui khi. Di
ây là mt khi gm hai dòng lnh:
Write(‘ Nhap chieu dai va chieu rong hinh chu nhat: ‘);
Readln(a,b);


a) +ánh du khi:
- +a con tr v u khi

- Gi phím Shift, ng th!i nhn liên tip các phím m(i tên ← , ,↓
,→ kéo vùng sáng ph n cui khi.
b) Sao chép khi:
- +ánh du khi cn sao chép
- +a con tr n ni cn chép ti
- Gõ lnh ^K_C
c) Di chuyn khi:
- +ánh du khi cn di chuyn
- +a con tr n ni cn chuyn khi ti
-Gõ lnh ^K_V
d) Xóa khi:
- +ánh du khi cn xóa
- Gõ lnh ^K_Y
e) Che ho&c hin li khi ã ánh du : lnh ^K_H
2.2. Các phím lnh son tho thông dng
- Phím Home : a con tr v u dòng hin th!i
- Phím End : a con tr v cui dòng hin th!i
- Phím Delete : xóa ký t ngay ti v trí con tr . Nu con tr ang )ng 
cui ca dòng trên mà gõ phím Delete thì s" ni dòng di vào cui dòng trên.
-Phím Back Space : Xóa ký t trc con tr .
- C&p phím Ctrl_Y:xóa toàn b dòng hin th!i và ôn các dòng  di lên.
- Nhóm phím Ctrl_Q_Y : xóa t v trí con tr n cui dòng.
- Các phím ← , ,↓ ,→ : d!i con tr theo hng m(i tên.
- Phím Insert :Dùng  chuyn i ch  chèn è
- Phím Enter : Xung dòng
Trong ch  vit chèn: gõ Enter có tác d#ng a con tr xung u dòng
di, do ó toàn b các ch )ng sau con tr (nu có) s" b c*t xung dòng
di. Khi con tr ang )ng  u mt dòng mà Enter thì s" to ra mt dòng
trng ngay ti v trí ó.


III. Các ph!n t c bn ca ngôn ng Pascal
1.Tp ký t c bn : Mi ngôn ng u c xây dng t mt tp ký t nào
ó. Ngôn ng Pascal c xây dng trên b ký t c bn, gm:
- 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ý hiu &c bit: +, -, *, /, =, <, {, }, [, ], %, $, &, #,
- Ký t gch ni ‘_’ và ký t tr*ng ‘ ‘ ( space)
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 10
2. T' khóa (Keyword)
Có mt s t c Pascal dành riêng cho vic xây dng các câu lnh, các
khai báo, các phép tính, gi là t khóa. Ng!i lp trình không c &t mt tên
mi (tên bin, tên hng, tên hàm, tên th t#c, ) trùng vi mt trong các t khóa.
Di ây là danh sách các t khóa ca 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 vit di dng ch hoa hay ch thng hay xen k ch
hoa vi ch thng u c. Ví d# vit begin hay Begin hay BEGIN là nh
nhau.
3.Tên (identifier)
Các bin, các hng, các hàm, các th t#c, c s d#ng trong chng
trình u cn phi &t tên, còn gi là nh danh hay danh hiu. Các tên này do
ng!i tho chng t &t và phi m bo úng quy t*c: tên phi b*t u bng
ch cái, k ó có th là ch cái, ch s, hay du gch ni ‘_’. Tên không c
&t trùng vi t khóa. Chiu dài ca tên ti a là 127 ký t. Thông th!ng tên
nên &t ng*n gn và có tính gi nh.
Ví d#:Delta, X1, X2, i, j , Chuc_vu, Luong,Phuong_Trinh_Bac_Hai…
4.Tên chu(n

Trong Pascal có mt s tên ã c &t s1n ri, gi là tên chu/n, ch4ng
hn : Abs, Arctan, Boolean, Byte, Char, Cos, Copy, Delete, Eof, False, Longint,
Ord, Integer, Real, Readln, Writeln, True, Text,
Pasal có th cho phép ngi tho chng t li tên chun, nhng không
nên t li.
5.Câu lnh trong Pascal
Câu lnh là phn vic mà chng trình phi thc hin  x lý d liu ã
c khai báo. Trong chng trình các câu lnh c vit cách nhau mt du
chm phy (;). Có 2 loi : Câu lnh n và lnh ghép.
5.1 Câu lnh n gin : Bao gm các lnh
+Lnh gán (:=) : Dùng  gán giá tr cho bin s ã khai báo
-Dng lnh : Bin s := Biu th)c; Ví d# : x:=10; d:=a*b;
+Lnh Gi th t#c : Dùng  gi th t#c trong chng trình
-Dng lnh <Tên th t#c> Ví d#: Clrscr; Halt;
5.2 Lnh ghép : Bao gm mt nhóm lnh t 2 lnh tr lên c &t trong hai t
khoá Begin và End;
Ví d# : Begin
TG:=A; A:=B;B:=TG;
End;
IV. Cu trúc ca chng trình Pascal
1.Cu trúc chung
Chng trình là mt dãy các câu lnh ch th cho máy các công vic phi
thc hin. Mt chng trình Pasccal y  gm ba phn chính :
- Phn tiêu 
- Phn khai báo
- Phn thân chng trình
1.1. Ph!n tiêu " chng trình
Phn này b*t u bng t khóa Program, tip n là tên chng trình do
ng!i s d#ng t &t, cui cùng kt thúc bng du chm ph/y ‘;’.
Trng Cao ng KTKT Bình Dng Biên son : V Bin

Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 11
Ví d# : Program Btap1; ho&c : Program Giai_pt_bac2;
Phn tiêu  chim mt dòng, còn gi là phn u ca chng trình, nó
có th không có.
1.2. Ph!n khai báo
Phn khai báo có nhim v# gii thiu và mô t các i tng, các i
lng s" tham gia trong chng trình
Nó gm có 7 loi khai báo sau .
- USES Khai báo n v s d#ng (Unit)
- LABEL Khai báo nhãn,
- CONST Khai báo hng
- TYPE khai báo kiu d liu mi,
- VAR Khai báo bin
- PROCEDURE khai báo các chng trình con là th t#c
- PUNCTION Khai báo các chng trình con là hàm.
Tùy theo yêu cu c# th mà mi khai báo này có th có hoc không có
khai báo.
1.3. Ph!n thân chng trình
+ây là phn ch yu nht ca mt chng trình, bt buc phi có.
Thân chng trình b*t u bng t khóa BEGIN và kt thúc bng END. (có du
chm  cui). Gia khi BEGIN và END là các lnh. Mi lnh phi kt thúc bng
du chm ph/y ‘;’.
Begin
Các lnh;
End.
2.Khai báo trong chng 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 tng nhóm theo ch)c nng, gi là các th vin hay n v chng trình (
Unit) bao gm : System ,Crt, Graph, Dos, Printer, .v.v. . Mun s d#ng các hàm

hay th t#c ca n v nào, tr System còn li ta phi khai báo, Cách khai báo
nh sau :
Uses Tendonvi ;
Ví d : - Mun s d#ng n v CRT
Uses CRT ;
- Mun s d#ng c hai th vin CRT và GRAPH, ta khai báo :
Uses CRT, GRAPH ;
Chú thích : Mt s hàm và th tc trong n v s dng màn hình CRT
+Th tc ClsScr
- Dng th tc: ClrScr;
- Chc n ng : Xóa màn hình kt qu , a con tr v ta  1,1
+Th tc GotoXY
- Dng th tc : GotoXY(x,y);
- Chc n ng : +a con tr n ta  ct x, dòng y
- Ví d# : GotoXY(10,5) : +a con tr v ta  ct 10, dòng 5.
+Th tc Delay
- Dng th tc Delay(time)
- Chc n ng : Dng thc hin chng trình time miligiây.
-Ví d# : Delay(200);
+Th tc TextColor
- Dng th t#c TextColor(màu)
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 12
- +nh mà cho dòng ch vit lên màn hình theo bng 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
Hng là i lng có gía tr không i,  khai báo hng ta dùng t khóa
Const cách khai báo nh sau :
Const Tên_hng_s = Hng s ;
Ví d# : Const N=10 ;
2.3 Khai báo bin s
Bin là i lng có giá tr thay i trong chng trình, chúng c dùng
trong chng trình  lu tr các d liu, tham gia vào các biu th)c tính và
các quá trình x lý trong máy. Cách khai báo bin s nh sau :
Var Tên_bin_s : kiu d liu;
Ví d# : Var
x, y : Real ;
i, k : Integer;
2.4 Khai báo (nh ngha) m$t kiu d liu mi
Ngoài các kiu d liu mà bn thân ngôn ng ã có s1n nh kiu thc,
kiu nguyên, kiu ký t, kiu lôgic,.v.v. ng!i dùng có th t xây dng các kiu
d liu mi ph#c v# cho chng trình ca mình, nhng phi mô t sau t khóa
TYPE cách khai báo nh sau
TYPE tên kiu d liu mi = kiu d liu mi
. Ví d#, ta nh ngh%a mt kiu d liu mi có tên là Mang :
Type
Mang = Array[1 10] of Real;

4.Ví d Vit chng trình cho phép nhp vào h tên, mã s, các im , Lý ca
mt sinh viên, tính im trung bình theo công th)c : Dtb=(Toan+ly)/2
In H tên, mã s, các im , Lý và im trung bình ca 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 liu v sinh viên }
TextBackGround(Green); { &t màu nn là Green }
TextColor(Red); { &t màu ch là Red}
Clrscr ;
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp 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ú : + son và chy c mt chng trình nh trên cn phi bit s
d#ng phn mm Turbo Pascal ( vit t*t là TP ).
IV.Các kiu d liu n gin dùng trong Pascal
Trong TP dùng mt s kiu d liu gi là d liu n gin chu/n nh sau:
1.Kiu nguyên : Dùng  biu di$n các s nguyên, phm vi biu di$n ca s

nguyên t 1 byte n 4 byte

Tên kiu Phm 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 kiu nguyên :
- Các phép toán : Cng(+), tr(-), nhân(*),chia(/)
- Phép chia ly phn nguyên (DIV): 10 Div 3 =3, 10 div 5 =2.
- Phép chia ly phn 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 trc 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 tc INC(k) : tng k lên mt n v. Ví d#, sau khi thc hin các lnh :
k:=5; Inc(k); thì gía tr sau cùng ca k là 6.
Vy, lnh Inc(k); tng ng vi lnh k:=k+1; hay k:=Succ(k);
-Th tc DEC(k) : gim k i mt n v. Ví d#, sau khi thc hin các lnh :
k:=5; Dec(k); thì gía tr ca k s" là 4.
Vy, lnh Dec(k) ; tng ng vi lnh k:=k-1; hay k:=Pred(k);
2.Kiu thc : Dùng  biu di$n các s thc, phm vi biu di$n ca s thc t 4
n 10 byte.
Tên kiu
Phm 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 thc :
Có 4 phép toán s hc là nhân (*), chia (/), cng (+) và tr (-). Khi mt
trong các s hng tham gia tính toán là kiu thc thì kt qa ca phép toán c(ng
là mt s thc. (Phép toán DIV, MOD không dùng cho các s th!c. )
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 14
+Các hàm có i s nguyên hoc thc
-Hàm ABS(x): tính tr tuyt i ca x Ví d#: Abs(5 - 8) = 3
-Hàm SQR(x): tính bình phng ca x: Ví d#: Sqr(4.0) = 16.0, Sqr(2) = 4
Trong các hàm di ây, i s x có th là nguyên hay thc, nhng gía tr tr
v luôn luôn là kiu 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 thc bng phn nguyên ca x. Ví d# :
Int(12.55) = 12.0
Int(1+10/3)=4.0
-Hàm FRAC(x) : cho s thc bng phn l0 ca x. Ví d# :
Frac(12.55) = 0.55
Hai hàm c bit di ây cho kt qa là s nguyên:
-Hàm TRUNC(x): cho s nguyên là phn nguyên ca x. Ví d# :
Trunc(12.55) = 12
Trunc(-2.98) = -2
- Hàm ROUND(x): cho s nguyên bng cách làm tròn x. Ví d# :
Round(12.45) = 12
Round(-2.98) = -3
3.Kiu ký t (Char): Nhn mt trong các ký t trong bng mã ASCII, Mi ký t

trong bng mã ASCII gi là mt hng ký t, chim  dài 1 byte, và khi vit trong
Pascal phi 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 trc ký t ch trong bng mã.
Ví d#: Pred(‘B’)=‘A’
-Hàm SUCC(ch): cho ký t )ng ngay sau ký t ch trong bng 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ã ca 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ã bng k.
Ví d#: Chr (65)= ‘A’ , Chr (97)= ‘a’, Chr(32) là ký t tr*ng
4.Kiu logic (boolean)
Kiu boolean ch có hai gía tr là TRUE (úng) và FALSE (sai), không phân
bit ch hoa hay ch th!ng. V quan h th) t thì FALSE< TRUE. Mi gía tr
boolean chim mt byte b nh.
Các phép toán lôgic gm có: NOT, AND, OR và XOR. Nu A và B là hai i
lng lôgic thì NOT A, A and B, A or B và A xor B c(ng là nhng i lng lôgic
có kt qa c cho  bng 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.Kiu chu*i (String) : là mt chui ký t. Khi gán hng chui , hng chui phi
c rào trong c&p du nháy n
Ví d# : ‘Turbo Pacal’, ‘12345’.
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 15
V.Các lnh nhp xut d liu .

Nhp và xut d liu là hai khâu quan trng trong qúa trình x lý thông tin.
Hu nh chng trình nào c(ng phi gii quyt vn  nhp, xut d liu. Có
nhp c d liu thì mi có d liu  tính hay x lý. Có d liu xut ra thì mi
bit c kt qa ca qúa trình x lý trong máy.
1. Lnh nhp d liu
1.1.Ý ngha :Dùng  nhp d liu cho bin nguyên hay thc hay chui.
1.2 .Dng lnh có 3 dng nh sau :
1. Read(x1, x2, , xn);
2. Readln(x1, x2, , xn);
3. Readln;
Trong ó x1,x2…xn ã c khai báo kiu d liu trong phn khai báo.
- Dng 1 và dng 2 dùng  nhp d liu cho các bin s ã c khai báo.
- Dng 1 khi nhp xong d liu  ngay sau bin s xn, còn dng 2 khi nhp xong
con tr t ng nhy xung u hàng k tip.
- Dng 3 không dùng  nhp d liu, mà có tác d#ng dng thc hin chng
trình ch! nhn phím enter.
Ghi chú : Khi nhp d liu cho các bin s , các giá tr vit cách nhau ít
nht mt kh ang tr*ng.
2. Lnh xut d liu.
2.1 Ý ngha : Dùng  in các d liu lên màn hình
2.2 .Dng lnh : có 3 dng th t#c in d liu nh sau:
1. Write( bt1, bt2 , , btn );
2. Wrteln(bt1, bt2 , , btn );
3. Writeln;
Trong ó bt1, bt2, , btn là các biu th)c cn phi in gía tr lên màn hình.
Trong tr!ng hp n gin, mi biu th)c này có th là mt bin, mt hng, hay
mt hàm.
- Dng 1: in d liu xong con tr  ngay sau btn, còn dng 2 khi in xong con tr
nhy ngay xung u hàng k tip.
- Dng 3: không dùng  in d liu lên màn hình mà có tác d#ng a con tr

xung u hàng k tip.
Ví d: cho x, y là hai bin thc và gán x:=100/4; y:=-9/300; thì hai lnh 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 liu dng s có nh dng:
a). In s th!c có nh dng:
In các s thc theo cách trên rt khó c. Vì th các s thc th!ng
c in có nh dng, ging nh cách vit s thông th!ng, bng lnh:
Writeln( biuth)c : n : k );
Trong ó n và k là các s t nhiên, n nh dùng n ct  in gía tr ca
biu th)c, trong ó có k ct dành cho phn thp phân.
Ví d#: cho x, y là các bin kiu thc và: x:=100/4; y:=-123.4824;
Hai lnh sau :
Writeln(‘ x=‘, x:6:2);
Writeln(‘ y=‘, y:10:3);
s" in lên màn hình:
x= 25.00 ( trc s 2 có 1 ký t tr*ng)
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 2:Gii thiu Ngôn ng lp trình Pascal Trang 16
y= -123.482 (trc du - có 2 ký t tr*ng)
Nu n nh hn chiu dài ca s cn in thì s s" c in ra vi y 
các ch s trong phn nguyên. Ví d#, khi thc hin các lnh sau :
x:=12345.675;
Writeln(‘x= ‘, x:0:2); trên màn hình s" hin : x=12345.68
. ây máy ã làm tròn s khi b s l0 cui 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 du * }
Writeln(‘*’, Ten:19, ‘*’:2); { in 1 du *, in Ten chim 19
ct, in tip du * chim 2 ct }
Writeln(‘* Ma so:’ , Maso:12, ‘*’:2); { in * Ma so, in
Maso chim 12 ct, in tip du * chim 2 ct }
Writeln(‘**********************’); { in 22 du * }
Readln;
End.
Bài tp chng 2
1. Nhp 2 s nguyên a, b t bàn phím. In ra tng, tích, hiu, thng ca a và b
2. +c t bàn phím din tích ca áy ln B1 và din tích áy nh B2 và chiu
cao h ca mt 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à chiu cao h
ca mt hình chóp c#t. Tính din tích xung quanh và th tích hình chóp c#t theo
công th)c sau:
Din tích xung quanh S = (PI/2 * (R1R2) *I
Th tích V = (1/3) * (PI*h*(R1² + R2² + R1*R2))
4. Vit chng trình nhp vào im Toán, Lí, Hoá ca mt thí sinh theo h s
tng )ng 3 : 2 : 1 . Hãy tính và in im trung bình.
5.Vit chng trình tính lc hút F gia hai vt có khi lng M và N cách nhau
mt kh ang d theo công th)c :



Vi G là lc hp d'n = 6.673* 10
–8
cm
2
/gs
2
(M tính bng gram,D tính bng cm)
6.Vit chng trình nhp 3 s nguyên dng a, b, c sau ó tính và in ra màn
hình giá tr trung bình cng s , c và trung bình nhân p ca 3 s ó
Bit rng :
3
cba
s
+
+
=
3/1
)(abcp =
7.Vit chng trình nhp 3 s nguyên dng a, b, c là s ó 3 cnh ca mt
tam giác. Hãy tính và in ra màn hình din tích s ca tam giác ó.
Bit rng : s=sqrt(p*(p-a)*(p-a)*(p-c)) trong ó p=0.5*(a+b+c).
2
*
d
NM
GF =
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 17
Chng III
CÁC LNH +I,U KIN – VÒNG L-P

I. Các lnh i"u kin
1.Lnh nhy không i"u kin
- Cú pháp : Goto <Nhãn>
- Chc n ng : Nhy ngay n lnh ã c ánh du bng nhãn ã c
khai báo.
Ghi chú: Cách khai báo nhãn trong phn khai báo.
Label <Nhãn> Vi <Nhãn> là mt t t &t.
2. Câu lnh IF
2.1. Câu lnh If dng 1
Cú pháp :
IF <Ði"ukin> THEN <Lnh> ;
Ðiu kin là mt biu th)c lôgic cho kt
qa TRUE (úng) hay FALSE (sai). Lnh có th
là mt lnh n gin ho&c mt lnh có cu trúc.
Ý ngha: Máy kim tra iu kin, nu
Ðiukin là úng thì thc hin lnh Lnh, ngc
li nu Ðiukin là sai thì thc hin lnh k tip
sau if
Ví d : Nhp vào h tên và im trung bình
(DTB) ca mt sinh viên. Hãy phân loi sinh viên theo DTB nh sau:
Loi là Kém nu DTB<5,
là Tbình nu 5 =< DTB<7,
là Khá nu 7 <= DTB<9,
là Gi i nu DTB >= 9.
In h tên, im trung bình và phân loi sinh viên.
PROGRAM PhanloaiSinhvien; { Phân loi 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 loi 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 }
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 18
Readln;
End.
2.2. Câu lnh IF dng 2
+Cú pháp :
IF Ði"ukin THEN Lnh1
ELSE Lnh2 ;
Chú ý :
-Trc ELSE không có du chm ph/y.
-Lnh1 và Lnh2 có th là mt lnh ghép, t)c
là gm nhiu lnh c &t trong khi begin và end; .
+Ý ngha ca lnh: Máy kim tra iu kin, Nu
Ðiukin là úng thì thc hin Lnh1, ngc li, nu
Ðiukin là sai thì thc hin Lênh2.
Ví d: Vit chng trình nhp vào hai s a và b,

tìm và in s nh nht và s ln nht ca chúng:
PROGRAM Tim_Max_Min; { Tim so lon nhat va so nho nhat ca 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 { trc else không có du ; }
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 lnh IF lng nhau :
Trong câu lnh IF, nu Lnh1 ho&c Lnh2, ho&c c hai, li là câu lnh IF thì ta
có cu trúc IF lng nhau. Ch4ng hn di ây là hai câu lnh IF ELSE lng
nhau :
IF Ði"ukin1 THEN
If Ði"ukin2 then Lnh1
else
Lnh2
ELSE

Lnh3 ;
+kin
Lnh 1
Lnh 2
Sai

+úng
L
nh k tip

Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 19
Ví d# : Vit chng trình nhp vào h tên mt ch h, ch s in k tháng
trc (chiso1) và ch s in k tháng này (chiso2), tính tin in tháng này cho
h, bit rng :
Mi 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 tin in }
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 trc, 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(‘ Tin phi tr là ‘ , Tien:10:2);
Readln;
End.
3. Câu lnh CASE
3.1. Cú pháp
Lnh CASE có hai dng, chúng ch khác nhau  mt im là trong dng 2 có
ELSE Lnh n+1, còn trong dng 1 thì không ( hình v").
CASE biuth)c OF
hng1 : Lnh1;
hng2 : Lnh2;
. . . .
hngn : Lnhn;
END;

Dng 1
CASE biuth)c OF
hng1 : Lnh1;
hng2 : Lnh2;
. . . .
hngn : Lnhn;
ELSE Lnhn+1;

END;
Dng 2

Chú ý - Lnh CASE phi kt thúc bng END;
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 20
- Kiu d liu ca biuth)c ch là kiu d liu m c nh: nguyên, ký
t, Lôgic, ho&c kiu lit kê hay kiu on con, không c là kiu thc hay kiu
chui
3.2: Ý ngha: Khi g&p lnh Case trong chng trình máy thc hin theo các
bc sau :
Bc 1: Tính gía tr ca biuth)c
Bc 2: So sánh và la chn:
- Nu gía tr ca biuth)c = Gt1 thì thc hin Lnh1
- Nu gía tr ca biuth)c = Gt2 thì thc hin Lnh2
- Nu gía tr ca biuth)c = Ctn thì thc hin Lnhn
Bc 3:
a) chuyn ngay sang lnh k tip sau End ( nu là dng 1)
b) thc hin Lnh n+1, ri chuyn sang lnh k tip sau End
(nu là dng 2) .
S 
















2.3. Các ví d :
PROGRAM Tim_so_ngay_cua_thang; { Xác nh s ngày ca tháng }
Var
Thang, Nam, Songay : Integer ;
Begin
Write(‘Nhp Thang, Nam : ‘); Readln(Thang, Nam);
If (Thang<1) or ( Thang>12) then writeln(‘ Nhp 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
Lnh k
GT=gt
L
nh1
GT=gt
L
nh2

G
T=gt
L
nh3
+úng

+úng

Sai

Sai

Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 21
End; { Ht Case }
Writeln(‘ S ngày là : ‘ , Songay);
end;
Readln;
End.
Ví d 2: Xây dng thc n cho phép la chn mt trong bn vic : tính tng ,
tính hiu, tính tích ho&c tính thng ca hai s x, y nhp t bàn phím.
Màn hình cn hin ra bn m#c sau cho mi ng!i la chn :
A. TÍNH T5NG HAI S6
B. TÍNH HI7U HAI S6
C. TÍNH TÍCH HAI S6
D. TÍNH TH8NG HAI S6
Chng trình c vit 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 lnh CASE lng nhau
Trong cu trúc CASE, khi mt trong các Lnh1, Lnh2, , Lnhn hay
Lnhn+1 li là mt lnh CASE thì ta có cu trúc CASE lng nhau.
Ví d# 3: Mt xí nghip tính tin thng hàng tháng cho công nhân theo công
th)c : Tin thng= H s * 200.
Trong ó H s c tính da vào kt qa bình chn phân loi lao ng (loi
A, B hay C) và ni làm vic (c s 1 hay c s 2) ca mi ng!i trong tháng, c#
th nh sau :
Trng Cao ng KTKT Bình Dng Biên son : V Bin

Chng 3: Các lnh iu kin – vòng lp Trang 22
Loi C s 1 C s 2
A 2.0 2.5
B 1.5 1.8
C 1.0 1.0
Vit chng trình nhp h tên, phân loi lao ng và ni làm vic ca mt
công nhân, tính tin thng cho ng!i ó.
PROGRAM Tinh_tien_thuong;
Var
Ho_ten: String[20]; Loai : Char; Coso : Byte;
Heso, Thuong : Real;
Begin
Write(‘ Nhp h và tên: ‘); Readln(Ho_ten);
Write(‘ Nhp c s làm vic (1,2): ‘); Readln(Coso);
Write(‘ Nhp phân loi 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; { Ht CASE }
Thuong:=Heso*200;
Writeln(‘H và tên Tin thng ‘);
Writeln(Ho_ten , Thuong:8:2 );
Readln;

End.
II.CÁC LNH VÒNG L-P
1. Câu lnh lp FOR
1.1. Câu lnh FOR dng 1
- Cú pháp:
FOR bin s := <Giá tr u>TO <Giá tr
cui> DO Lnh;
- Yêu cu: bin s phi thuc kiu d liu n
gin m c, th!ng là kiu nguyên, ký t hay
lô gic, không th là kiu thc hay chui.
- Cách thc hot ng ca FOR:
Bc 1: Gán giá tr cho bin s := giá tr u
Bc 2: Thc hin vic so sánh:
-Nu bin s <= Giá tr cui thì thc hin bc 3;
Bin s:=Gtu
Bin<=Gtc
u
i

Lnh
Bin:=Bin+1
+úng
Sai
Thóat
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 23
-Nu bin s >Giá tr cui thì thóat ra kh i vòng l&p , thc hin lnh k tip.
Bc 3: Thc hin lnh sau DO
Bc 4 : Tng gía tr ca bin s :
bin s:=Succ(bin s);

Quay li bc 2.
1.2. Các ví d
Ví d 1: Hãy vit chng trình tính tng : S= 1
2
+ 2
2
+ 3
2
+ + 10
2

PROGRAM Tong1;
Var
N, i : Integer;
S : LongInt;
Begin
Write(‘ Nhp 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 tha ca mt s.
PROGRAM Giai_thua;
Var
N, i : Integer;
S : LongInt;
Begin
Write(‘Nhp s dng N : ‘); Readln(N);

S:=1;
For i:=1 to N do S:=S * i ;
Writeln(‘Giai thua = ‘, S);
Readln;
End.
2. Câu lnh FOR d&ng 2
-Cú pháp:
FOR bin s := <Giá tri cui> DOWNTO <Giá tr u> DO Lnh;
-Cách thc hot ng ca FOR dng 2:
Bc 1: Gán giá tr cho bin s := giá tr
cui
Bc 2: Thc hin vic so sánh:
-Nu bin s >= Giá tr u thc
hin bc 3;
-Nu bin s <Giá tr u thì thóat
ra kh i vòng l&p , thc hin lnh k tip.
Bc 3: Thc hin lnh sau DO
Bc 4 : Gim gía tr ca bin :
bin s:=Pred(bin s);
Quay li bc 2.
Bin :=Gtu
Bin>=Gtcui
Lnh
Bin:=Bin-1
+úng
Sai
Thóat
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 24
Ví d# 1 : In các ch cái theo th) t ngc t Z n A thành hai dòng :

Z, Y, X, , C, B, A
z, y, x, , c, b, a
Chng trình c vit 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 lnh FOR lng nhau
Trong cu trúc FOR, khi Lnh c(ng là mt lnh FOR thì ta có cu trúc FOR
lng nhau:
FOR bin1:= m1 TO m2 DO {1}
FOR bin2:=n1 TO n2 DO Lnh; {2}
Cách th)c hot ng ca lnh này nh sau:
Ðu tiên cho bin1:=m1 và làm lnh  dòng {2}. Vì dòng {2} là lnh FOR
nên vi mi gía tr ca bin2=n1, , n2, u phi làm Lnh, kt qa là Lnh
c làm n2-n1+1 ln.
Bây gi! tng: bin1:=Succ(bin1), ri li làm lnh FOR  dòng {2}, kt
qa lnhP c làm thêm n2-n1+1 ln na.v.v.
Qúa trình trên c) tip t#c cho n khi bin1=m2+1 thì dng.

Lnh FOR {1} làm m2-m1+1 ln lnh FOR {2}, còn chính lnh FOR {2} li làm
n2-n1+1 ln Lnh. Vì th lnh c làm tt c là (m2-m1+1)*(n2-n1+1) ln.
Ví d#: In hình ch nht &c nh di â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.
Trng Cao ng KTKT Bình Dng Biên son : V Bin
Chng 3: Các lnh iu kin – vòng lp Trang 25
Ví d# 2: Tìm các s Fibonaci.
Dãy s Fibonaci c xây dng nh sau:
U
0
=1, U
1
=1 , U
k
=U
k-1
+ U
k-2
vi mi k= 2, 3, 4,

PROGRAM In_Fibonaci;
Var
N, i, U, U0, U1 : Integer;
Begin
Write(‘ Nhp 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 lnh WHILE
3.1 Cú pháp
WHILE Ðiukin DO Lnh ;
-Ý ngha : Thc hin lnh trong khi +iu kin
còn úng, khi iu kin sai thóat ra kh i vòng
l&p , thc hin lnh k tip.
3.2. Các ví d v lnh While
Ví d 1 : Nhp s t nhiên N, dùng lnh
WHILE tính S=N!:
PROGRAM Giai_thua_2;{ Tinh S=N! bng
lnh WHILE }
Var
N, i : Integer;

P : LongInt;
Begin
Write(‘ Nhp 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.
+iu kin
Lnh
+úng
Sai
Thóat

×