1. TRƯ NG ð I H C C N THƠ
KHOA KHOA H C T NHIÊN
Giáo trình lý thuy t
LẬP TRÌNH CĂN BẢN B
MSMH: TN035
(Áp d ng cho chương trình tín ch )
Biên so n: ThS. VŨ DUY LINH
ThS. NGUY N NH GIA VINH
ThS. LÊ TH DI M
Năm 2010
3. M CL C
CHƯƠNG 1: D LI U VÀ THU T TOÁN................................................................1
I. D li u và thông tin: .............................................................................................1
I.1. Khái ni m.......................................................................................................1
I.2. Sơ ñ t ng quát c a m t quá trình x lý thông tin.........................................1
II. T bài toán t i chương trình ................................................................................1
II.1. Các giai ño n gi i m t bài toán trên máy tính ñi n t ..................................1
II.2. Thu t toán (Algorithm).................................................................................2
CHƯƠNG 2: BORLAND DELPHI .............................................................................5
I. T ng quan v Delphi.............................................................................................5
I.1. Delphi là gì.....................................................................................................5
I.2. Các phiên b n c a Delphi ..............................................................................5
II. Môi trư ng phát tri n tích h p (IDE) c a Delphi................................................5
II.1. C a s chính c a Delphi...............................................................................6
II.2. Thanh th c ñơn chính và thanh công c .......................................................6
II.3. B ng ch a các thành ph n c a Delphi (Component Palette) .......................7
II.4. C a s thi t k bi u m u (Form Designer) và C a s so n th o mã l nh
(Code Editor) .................................................................................................8
II.5. C a s thu c tính và s ki n c a ñ i tư ng (Object Inspector) ...................9
II.6. C a s li t kê các ñ i tư ng d ng cây (Object TreeView).........................10
III. C u trúc m t d án Delphi ...............................................................................10
III.1. T p tin d án: (Delphi project file) ...........................................................10
III.2. Các t p tin ch a mã l nh (Unit file) ..........................................................11
III.3. Các t p tin ñ c t bi u m u (Form file).....................................................11
III.4. Các t p tin tài nguyên (Windows Resource File)......................................13
IV. Các thao tác cơ b n trên Delphi .......................................................................14
IV.1. M m t d án m i.....................................................................................14
IV.2. Lưu d án ..................................................................................................14
IV.3. Lưu Form (t p tin unit) v i tên khác.........................................................18
IV.4. Lưu d án v i tên khác..............................................................................18
IV.5. ðóng d án ................................................................................................18
IV.6. Thoát kh i Delphi .....................................................................................18
CHƯƠNG 3: CÁC THÀNH PH N CƠ B N C A NGÔN NG DELPHI (OBJECT
PASCAL).............................................................................................19
I. B ch vi t .........................................................................................................19
II. T khóa ..............................................................................................................19
III. Tên danh hi u t ñ t .........................................................................................20
IV. H ng .................................................................................................................20
IV.1. Khái ni m ..................................................................................................20
IV.2. H ng tr ......................................................................................................20
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang i
4. IV.3. H ng ñ nh ki u: .........................................................................................21
V. Ki u (Type)........................................................................................................21
V.1. Ð nh nghĩa ..................................................................................................21
V.2. Cách khai báo .............................................................................................21
VI. Bi n ..................................................................................................................22
VII. Bi u th c .........................................................................................................22
VII.1. ð nh nghĩa................................................................................................22
VII.2. Th t ưu tiên...........................................................................................22
VIII. Chuy n ki u (Typecast).................................................................................23
IX. L i chú thích và các ch d n biên d ch .............................................................24
X. C u trúc m t d án ch ñ Form (Form Application)....................................25
CHƯƠNG 4: CÁC KI U D LI U SƠ C P CHU N, L NH ðƠN .......................26
I. Các ki u d li u sơ c p (Simple type) ................................................................26
I.1. Ki u s nguyên (Integer)..............................................................................26
I.2. Ki u ký t (Char) .........................................................................................26
I.3. Ki u s th c (Real type)...............................................................................30
I.4. Ki u logic (Boolean) ....................................................................................34
II. Câu l nh (statement) ..........................................................................................34
III. L nh ñơn (Simple statement) ...........................................................................35
IV. L nh gán (Assignment statement)....................................................................35
V. L nh g i th t c và hàm ....................................................................................35
VI. L nh Goto.........................................................................................................37
CHƯƠNG 5: L P TRÌNH X LÝ S KI N – CÁC THÀNH PH N TRONG GIAO
DI N DELPHI ....................................................................................38
I. L p trình x lý s ki n ........................................................................................38
I.1. L p (Class) và ñ i tư ng (Object) ...............................................................38
I.2. Thu c tính ....................................................................................................43
I.3. Phương th c (Method) .................................................................................44
I.4. S ki n (Event).............................................................................................44
I.5. X lý s ki n (Event Handlers)....................................................................45
I.6. Trình h tr mã l nh (Code Completion /IntelliSense)................................46
II. Sinh mã t ñ ng và m t s cách s a l i ............................................................46
II.1. Cách t ñ ng sinh mã (generate code) trong Delphi .................................46
II.2. Cách s a l i sinh mã trong Delphi.............................................................49
II.3. Thêm t p tin unit vào d án ........................................................................54
II.4. Vi t l nh sau khi thêm unit form vào d án................................................58
II.5. G b t p tin unit form ra kh i d án .........................................................62
III. Bi u m u (TForm) ............................................................................................62
IV. Các thành ph n (Component) giao di n ph bi n ............................................68
IV.1. Nhãn (TLabel) ...........................................................................................68
IV.2. H p văn b n (TEdit)..................................................................................71
Trang ii B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
5. IV.3. Nút l nh (TButton)....................................................................................78
IV.4. Nhãn và H p nh p (TLabeledEdit) ...........................................................80
IV.5. H p ñánh d u hay h p ki m (TCheckbox) ...............................................81
IV.6. Nút tùy ch n (TRadioButton) ...................................................................87
IV.7. Nhóm tùy ch n (TRadioGroup) ................................................................88
IV.8. Vùng văn b n (TMemo)............................................................................91
IV.9. H p danh sách (TListBox) ........................................................................96
IV.10. TSpinEdit ..............................................................................................100
IV.11. H p danh sách ñánh d u (TCheckListBox) ..........................................101
IV.12. H p danh sách các khoá (TValueListEditor) ........................................107
IV.13. H p li t kê th (TComboBox)...............................................................113
IV.14. Lư i chu i (TStringGrid)......................................................................118
IV.15. B ng ch a các thành ph n (TPanel)......................................................124
IV.16. Thanh th c ñơn chính (TMainMenu)....................................................125
IV.17. Th c ñơn (TMenuItem) ........................................................................126
IV.18. Menu ñ i tư ng (TPopupMenu) ...........................................................134
CHƯƠNG 6: CÁC L NH CÓ C U TRÚC.............................................................138
I. L nh ghép (Compound statement)....................................................................138
II. L nh c u trúc r nhánh ....................................................................................138
II.1. L nh if ... then ... và l nh if ... then ... else................................................138
II.2. L nh Case ... of .........................................................................................146
III. C u trúc l nh l p.............................................................................................149
III.1. L nh l p có s l n xác ñ nh trư c ...........................................................149
III.2. L nh l p có s l n không xác ñ nh trư c ................................................155
CHƯƠNG 7: CHƯƠNG TRÌNH CON....................................................................164
I. Khái ni m..........................................................................................................164
II. Hàm..................................................................................................................165
III. Th t c............................................................................................................172
IV. Truy n tham s ...............................................................................................175
IV.1. ð nh ki u và không ñ nh ki u cho tham s hình th c.............................175
IV.2. Truy n b ng tham tr (Value parameter).................................................177
IV.3. Truy n b ng tham bi n (Variable parameter) .........................................179
IV.4. Truy n b ng tham s h ng (Constant parameter) ...................................181
IV.5. Truy n b ng tham s xu t (Out parameter) ............................................184
V. Chương trình con ñ quy .................................................................................190
CHƯƠNG 8: KI U LI T KÊ, MI N CON, T P H P ..........................................194
I. Ki u vô hư ng li t kê (Enumerated scalar type) ..............................................194
I.1. Khái ni m...................................................................................................194
I.2. Cách khai báo: Có hai cách khai báo là gián ti p và tr c ti p ...................194
I.3. M t s hàm chu n áp d ng cho ki u vô hư ng .........................................195
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang iii
6. II. Ki u mi n con (Subrange types)......................................................................196
II.1. Khái ni m..................................................................................................196
II.2. Cách khai báo............................................................................................196
III. Ki u t p h p (Set)...........................................................................................197
III.1. Khái ni m ................................................................................................197
III.2. Cách khai báo ..........................................................................................197
III.3. Mô t t p h p...........................................................................................198
III.4. M t s phép toán trên ki u t p h p .........................................................198
CHƯƠNG 9: KI U M NG.....................................................................................208
I. Khái ni m v m ng (Array-type data) ..............................................................208
II. M ng tĩnh (Static array) ...................................................................................208
II.1. M ng m t chi u (One-Dimensional array) ...............................................208
II.2. M ng nhi u chi u (Multi-Dimensional array) ..........................................213
II.3. M ng hai chi u..........................................................................................215
III. M ng ñ ng (Dynamic array) ..........................................................................222
III.1. M ng ñ ng m t chi u .............................................................................222
III.2. M ng ñ ng nhi u chi u ...........................................................................227
III.3. H ng m ng...............................................................................................228
CHƯƠNG 10: KI U CHU I KÝ T ......................................................................229
I. Các lo i chu i ký t trong Object Pascal ..........................................................229
I.1. Chu i ng n (ShortString) ...........................................................................229
I.2. Chu i dài 1 byte (AnsiString) ....................................................................230
I.3. Chu i dài 2 byte (WideString) ...................................................................232
II. Các thao tác trên chu i.....................................................................................232
II.1. Phép toán c ng chu i................................................................................232
II.2. Phép toán so sánh......................................................................................232
II.3. Các th t c và hàm chu n x lý chu i ký t .............................................234
PH L C........ .........................................................................................................246
TÀI LI U THAM KH O ..........................................................................................252
B N QUY N TÁC GI ............................................................................................252
Trang iv B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
7. Chương 1: D li u và Thu t toán
CHƯƠNG 1: D LI U VÀ THU T TOÁN
I. D li u và thông tin:
I.1. Khái ni m
D li u (Data) là các s ki n không có c u trúc, không có ý nghĩa rõ ràng t i th i
ñi m xét.
Thông tin (Information) là m t khái ni m tr u tư ng ñư c th hi n qua các thông
báo, các bi u hi n,... ñem l i m t nh n th c ch quan cho m t ñ i tư ng nh n tin. Thông
tin là d li u ñã ñư c x lý xong, mang ý nghĩa rõ ràng t i th i ñi m xét.
M t h th ng thông tin (Information system) là m t ti n trình ghi nh n d li u, x lý
nó và cung c p t o nên d li u m i có ý nghĩa thông tin, liên quan m t ph n ñ n m t t
ch c, ñ tr giúp các ho t ñ ng liên quan ñ n t ch c.
I.2. Sơ ñ t ng quát c a m t quá trình x lý thông tin
M i quá trình x lý thông tin b ng máy tính hay b ng con ngư i ñ u ñư c th c hi n
theo m t quy trình sau:
D li u ñư c nh p ñ u vào (Input). Máy tính hay con ngư i s th c hi n quá trình
x lý nào ñó ñ nh n ñư c thông tin ñ u ra (Output).
NH P D LI U X LÝ XU T D LI U
(INPUT) (PROCESSING) (OUTPUT)
LƯU TR (STORAGE)
Hình 1: Mô hình t ng quát quá trình x lý thông tin
II. T bài toán t i chương trình
Trong cu c s ng, chúng ta có r t nhi u bài toán c n ph i gi i quy t. S d ng máy
tính ñi n t ñ gi i các bài toán là ñi u r t hi u qu do kh năng tính toán c a máy tính. ð
máy tính có th hi u ñư c, chúng ta c n ph i có nh ng bư c gi i c th c a bài toán m t
cách ñúng logic, t ñó s d ng m t ngôn ng chương trình hay ph n m m l p trình ñ
hư ng d n máy tính th c hi n các thao tác c n thi t ñ tìm ra k t qu c a bài toán.
II.1. Các giai ño n gi i m t bài toán trên máy tính ñi n t
Ð gi i quy t m t bài toán trên máy tính ñi n t , c n qua các giai ño n sau:
- Tìm hi u m c tiêu chính c a bài toán: d li u nh p vào và k t qu xu t.
- Xây d ng m t chu i thao tác tính toán theo m t th t logic, g i là thu t gi i.
- L p chương trình di n t chi ti t các bư c tính theo thu t gi i.
- Nh p chương trình vào máy tính, thông d ch và ch y th ñ s a ch a l i.
- Th c hi n gi i bài toán v i s li u thu th p ñư c và ghi nh n k t qu .
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 1
8. Chương 1: D li u và Thu t toán
- Th nghi m v i nhi u trư ng h p d li u nh p khác nhau c a bài toán ñ
chương trình ki m tra ñúng trong m i trư ng h p t ng quát.
- Phân tích k t qu và hoàn ch nh chương trình.
Trong các bư c trên, vi c thi t k thu t toán là giai ño n quan tr ng nh t.
II.2. Thu t toán (Algorithm)
II.2.1. Ð nh nghĩa
Thu t toán là m t phương pháp trình bày các bư c gi i quy t m t hay nhi u bài toán
theo m t ti n trình xác ñ nh.
II.2.2. ð c tính c a thu t toán
- Tính xác ñ nh: Các thao tác c a thu t toán là rõ ràng và ch c ch n th c hi n ñư c
ñ d n ñ n k t qu nào ñó.
- Tính h u h n và d ng: thu t toán ph i có m t s bư c gi i nh t ñ nh và cu i
cùng ph i có k t thúc ñi m d ng.
- Tính k t qu : V i d li u h p lý, thu t toán ph i cho k t qu th a yêu c u.
- Tính ph d ng: Thu t toán ph i gi i ñư c nhi u bài toán có cùng c u trúc v i các
d li u khác nhau và ñ u d n ñ n m t k t qu mong mu n.
- Tính hi u qu : Thu t gi i ph i ñơn gi n, d hi u trong các bư c gi i, t i thi u
hoá b nh và th i gian th c hi n.
- Tính hình th c: Các bư c trong thu t toán là máy móc, nghĩa là nó ph i th c hi n
ñúng như quy ñ nh mà không c n bi t ñ n m c tiêu cu i cùng.
II.2.3. Các phương pháp bi u di n thu t toán
Thu t toán có th ñư c di n gi i thông qua 3 phương pháp ph bi n, ñó là s d ng
ngôn ng t nhiên, ngôn ng gi và ngôn ng sơ ñ (lưu ñ ).
II.2.3.1 Ngôn ng t nhiên
Là cách di n ñ t t nhiên c a con ngư i b ng ngôn ng c a mình ñ mô t các bư c
gi i bài toán.
Ví d 1: Mô t thu t toán theo ngôn ng t nhiên c a phương trình ax + b = 0
- Bư c 1: Nh p vào 2 h s a và b.
- Bư c 2: Xét ñi u ki n a = 0?
N u ñúng là a = 0, thì ñi ñ n bư c 3, n u không (nghĩa là a ≠ 0) thì ñi ñ n bư c 4.
- Bư c 3: Xét ñi u ki n b = 0?
N u b = 0, thì báo phương trình có vô s nghi m. Ði ñ n bư c 5.
N u b ≠ 0, thông báo phương trình vô nghi m. Ði ñ n bư c 5.
- Bư c 4: Thông báo phương trình có m t nghi m duy nh t là x = - b/a.
- Bư c 5: K t thúc thu t toán.
Trang 2 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
9. Chương 1: D li u và Thu t toán
II.2.3.2 Ngôn ng gi
Là cách di n ñ t các bư c gi i c a bài toán thông qua m t s câu l nh có c u trúc
(như câu l nh if..then..else, for..to..do, while..do, repeat..until)
Ví d 2: Mô t thu t toán theo ngôn ng gi c a phương trình b c nh t ax + b = 0
- Bư c 1: Nh p vào 2 h s a và b.
- Bư c 2: if (a=0) then
if (b=0) then phương trình vô s nghi m
else phương trình vô nghi m
else phương trình có m t nghi m duy nh t x = -b/a
- Bư c 3: K t thúc thu t toán.
II.2.3.3 Ngôn ng lưu ñ (Flowchart)
Là cách di n ñ t các bư c gi i c a bài toán thông qua các ký hi u c a lưu ñ . M t s
qui ư c ký hi u lưu ñ :
Ký hi u Mô t
ði m b t ñ u ho c k t thúc thu t toán
Thao tác nh p hay xu t
Kh i x lý công vi c
Kh i quy t ñ nh ch n l a
ði m n i
Chu n b
T p h p các t p tin d li u
Kh i chương trình con
Các ghi chú, gi i thích
Dòng tính toán, thao tác c a chương trình
Hình 2: Các ký hi u lưu ñ
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 3
10. Chương 1: D li u và Thu t toán
Ví d 3: Mô t thu t toán theo ngôn ng lưu ñ c a phương trình ax + b = 0
B tñ u
Nh p a,b
Sai
x := -b/a a=0
ðúng
Sai Phương trình
Xu t nghi m x b=0
vô nghi m
ðúng
Phương trình
vô s nghi m
K t thúc
Hình 3: Lưu ñ thu t toán PTB1
Trang 4 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
11. Chương 2: Borland Delphi
CHƯƠNG 2: BORLAND DELPHI
I. T ng quan v Delphi
I.1. Delphi là gì
Delphi là m t ngôn ng l p trình c p cao, có trình biên d ch hoàn h o, h tr m nh
v các ki u d li u có c u trúc và thi t k hư ng ñ i tư ng d a trên n n t ng ngôn ng l p
trình hư ng ñ i tư ng (OOP: Object-Oriented Programming) c a Borland Pascal. Ngày
nay, Delphi ñã ñư c phát tri n thành môi trư ng xây d ng ng d ng t c th i RAD (Rapid
Application Development). T nh ng công c c a RAD, b n có th gi i quy t nh ng v n
ñ ph c t p trong qua trình phát tri n ph n m m như: l p trình ng d ng v cơ s d li u
(Database), l p trình m ng và Internet (Internet/Networking), l p trình Multimedia
(Animation, sound), l p trình trò chơi (Game) cũng như ñ h a (Graphic) ho c l p trình h
th ng, v.v… không nh ng trên n n Windows mà còn cho c Linux và .NET. Trong giáo
trình này, chúng tôi ch gi i thi u các khái ni m c a Delphi trong ph m vi h ñi u hành
Windows. V i kh năng m nh như v y c a Delphi, b n an tâm khi dùng nó ñ tri n khai
các ng d ng c a b n quy mô nh hay l n. ði u c n quan tâm Delphi là m t ngôn ng
r t thân thi n v i ngư i dùng, phù h p cho nh ng ngư i b t ñ u làm quen v i nó cũng như
nh ng nhà l p trình chuyên nghi p.
Vì ñây là giáo trình ñư c so n dành cho ñ i tư ng là các sinh viên b t ñ u h c Tin
h c ð i cương thông qua ngôn ng Delphi. Do v y, giáo trình này ch gi i thi u nh ng
khái ni m căn b n nh m giúp cho ngư i h c có m t s ki n th c nh t ñ nh ñ ñ v n d ng
vào gi i các bài toán ho c vi t nh ng chương trình ng d ng nh . Các chương trong giáo
trình này s trình bày các ph n t cơ b n c a Delphi ñ t o m t chương trình ch y trên
n n Windows, ñó chính là môi trư ng phát tri n tích h p IDE (Integrated Development
Environment) và ngôn ng hư ng ñ i tư ng Borland Pascal. Các b n s ñư c h c cách
thi t k (Design), phát tri n (Develop) hay vi t mã l nh (Code), và ki m tra l i (Test)
chương trình ng d ng b i vi c s d ng Delphi.
I.2. Các phiên b n c a Delphi
Ti n thân c a Delphi chính là ngôn ng ñ i tư ng Borland Pascal, và ñ n ngày nay
Delphi ñã có m t quá trình phát tri n v ng m nh t phiên b n 1 (Delphi1) vào năm 1995,
ñ n phiên b n 8 (Delphi for .NET) năm 2005. Trong giáo trình này, chúng tôi th ng nh t
trình bày v i các b n Delphi 7. ðây là phiên b n phù h p nh t và d dùng nh t hi n nay
cho các b n, ñ i tư ng là các sinh viên h c Tin h c ð i cương.
II. Môi trư ng phát tri n tích h p (IDE) c a Delphi
Môi trư ng so n th o và thi t k ng d ng c a Delphi 7 chia ra làm 5 ph n: C a s
chính c a chương trình Delphi, c a s thi t k bi u m u (Form designer), c a s li t kê các
thành ph n, ñ i tư ng d ng cây (Object TreeView), c a s thi t l p thu c tính ñ i tư ng
(Object Inspector), và c a s so n th o mã l nh (Code Editor). V i môi trư ng IDE này,
b n s có m t giao di n (Interface) ñ thi t k (Design), biên d ch (Compile) và g l i
(Debug) d án mà b n ñang phát tri n.
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 5
12. Chương 2: Borland Delphi
Hình 1: Giao di n c a d án m i t o trong Delphi 7
C a s chính c a Delphi 7
C a s thi t k bi u m u
C a s li t kê các ñ i tư ng d ng cây
C a s thi t l p các thu c tính và s ki n c a ñ i tư ng
C a s so n th o mã l nh
II.1. C a s chính c a Delphi
C a s chính c a Delphi chính là c a s có thành tiêu ñ ch a tên d án (Project
name) mà b n ñang phát tri n, nó bao g m th c ñơn chính (Main menu), thanh công c
(Toolbar), và b ng thành ph n (Component palette).
II.2. Thanh th c ñơn chính và thanh công c
II.2.1. Thanh th c ñơn chính
Bao g m các th c ñơn th xu ng (Drop-down menu) như: File, Edit, Search,
View,… và Help. Trong m i menu th xu ng có nhi u ch c năng khác nhau như: m m t
d án m i, lưu d án, biên d ch, g l i, ch y chương trình,… mà giáo trình s trình bày chi
ti t ph n sau.
Trang 6 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
13. Chương 2: Borland Delphi
Hình 2: Thanh th c ñơn chính
II.2.2. Thanh công c (Toolbars)
Trong Delphi có nhi u thanh công c , như: thanh công c chu n (Standard), thanh g
l i (Debug), thanh hi n th (View),… M i nút (Button) trên thanh công c thư ng là m t
thao tác hay m t l nh mà khi ta Click vào nó s thi hành, ví d như: Biên d ch (Compile),
ch y (Run) ho c k t thúc ch y chương trình (Program Reset), …
Hình 3: Các thanh công c
II.3. B ng ch a các thành ph n c a Delphi (Component Palette)
Thành ph n (Component), hay còn ñư c g i là ñi u khi n, chính là ñ i tư ng có s n
trong Delphi mà b n có th thao tác trên nó trong th i ñi m thi t k form. Có 2 lo i thành
ph n, ñó là thành ph n tr c quan (visual component): nhìn th y khi ch y chương trình, và
thành ph n không tr c quan (nonvisual component): không nhìn th y khi ch y chương
trình. M i thành ph n có m t s tính ch t riêng, và ñư c qu n lý thông qua các thu c tính
(Properties), s ki n (Events) và các phương th c (Methods). Các thu c tính này giúp b n
có th qu n lý và ñi u khi n chương trình c a b n. Khi b n ñ t m t thành ph n lên form,
thì nó s xu t hi n trong c a s Object TreeView và Object Inspector – s ñư c trình bày
ph n sau.
Trong b ng ch a các thành ph n có nhi u th (tab) khác nhau, như th Standard,
Addition, Win32, System, Data Access, ADO, Internet, Rave, Server,… Trên m i th ch a
các bi u tư ng (icon) ñ i di n cho các thành ph n.
Hình 4: B ng ch a các thành ph n trong th Standard
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 7
14. Chương 2: Borland Delphi
II.4. C a s thi t k bi u m u (Form Designer) và C a s so n th o mã l nh
(Code Editor)
II.4.1. C a s thi t k bi u m u
Khi b n t o m t d án m i, môi trư ng phát tri n tích h p IDE c a Delphi s t t o
ra m t bi u m u m i (Form) ñ b n tùy nghi thi t l p các giá tr c a thu c tính d a trên
Properties, và các th t c s ki n d a vào Events, ñư c xác ñ nh trong Object Inspector,
cho vi c thi t k chương trình. Trong h u h t trư ng h p, m t d án thư ng có ít nh t m t
form. Cùng v i các thành ph n trên b ng các thành ph n, b n s thi t k ñư c m t giao
di n cho chương trình mà b n ñang xây d ng là thân thi n nh t cho ngư i s d ng.
TLabel (StdCtrls) TEdit (StdCtrls)
TButton (StdCtrls)
TMemo (StdCtrls)
Hình 5: Form “Giai phuong trinh bac nhat” và các Components
Các giá tr c a form và các giá tr c a các component ñ t trên form ñư c lưu trong
t p tin form (form file) và có ph n m r ng .dfm, v i ph n tên ñư c xác ñ nh gi ng như
ph n tên c a ñơn v chương trình form. T p tin form này ch a ñ ng các giá tr c a form
cũng như các giá tr c a các component mà ta ñ t trên form trong quá trình thi t k .
II.4.2. C a s so n th o mã l nh
M i m t form trong d án ñư c qu n lý trong m t t p tin ñơn v chương trình (Unit
file/ Form unit), tên t p tin c a form unit này ñư c ñ t tên trong qua trình lưu (Save) và có
ph n m r ng là .pas, n i dung c a t p tin form unit này ch a ñ ng các khai báo thông
thư ng c a unit (s ñ c p chi ti t ph n sau) cũng như các hàm s ki n tương ng cho
form và các component trên nó.
Trang 8 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
15. Chương 2: Borland Delphi
Hình 6: C a s so n th o mã l nh cho form unit untPtb1.Pas
ð chuy n ñ i gi a c a s so n th o mã l nh v i c a s thi t k bi u m u, ta s
d ng ch c năng View/Toggle Form/Unit t main menu ho c gõ phím ch c năng F12.
Ví d 1: Trong project “Giai phuong trinh bac nhat” trên, ta lưu unit file v i tên
untPtb1.Pas và form file s ñư c t ñ ng ñ t theo là untPtb1.dfm
II.5. C a s thu c tính và s ki n c a ñ i tư ng (Object Inspector)
Hình 7: th Properties c a Form và th Events c a Button
C a s Object Inspector c a form hay component ñ u có 2 th : Properties và Events.
Th Properties dùng ñ xác ñ nh các tính ch t c a ñ i tư ng nói chung (Form, component)
hi n hành m t cách tr c quan, ch ng h n như Caption, Name, Position, Visible,… Th
Events dùng ñ l p trình s ki n: xác ñ nh nh ng ñáp ng c a ñ i tư ng khi nh n tác ñ ng
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 9
16. Chương 2: Borland Delphi
t chu t (Mouse) ho c bàn phím (Keyboard) như: nh p chu t (OnClick), ñóng c a s
(OnClose), gõ phím Enter (OnEnter),… thông qua các th t c s ki n.
Khi thay ñ i các giá tr trong th Properties trong quá trình thi t k , thì mã l nh
tương ng c a ñ i tư ng s ñư c thay ñ i theo trong c a s so n th o mã l nh.
II.6. C a s li t kê các ñ i tư ng d ng cây (Object TreeView)
Hình 8: C a s li t kê các ñ i tư ng d ng cây trên frmPTB1
Object TreeView li t kê các thành ph n tr c quan và không tr c quan mà b n ñ t
chúng trên form hi n hành. M i th i ñi m ch có m t form duy nh t ñư c li t kê.
III. C u trúc m t d án Delphi
III.1. T p tin d án: (Delphi project file)
Hình 9: T p tin d án prjPtb1.dpr
Trang 10 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
17. Chương 2: Borland Delphi
Khi b n b t ñ u m m i m t chương trình ng d ng b ng thao tác:
File/New/Application, Delphi 7 s t ñ ng t o ra m t t p tin d án có tên m c nhiên ban
ñ u là Project1. Khi b n lưu d án, Delphi s l n lư t nh c b n ñ t tên cho các form unit
và tên d án. ví d gi i phương trình b c nh t trên, form unit có tên là untPTB1.pas
và tên d án là prjPTB1.dpr. Ph n tên c a t p tin d án cũng chính là tên c a chương
trình, ñư c khai báo sau t khóa program.
B n chú ý: ti n t c a unit file là unt, còn project file là prj. Ví d như untPTB1.pas
và prjPTB1.dpr
ð hi n th t p tin d án, ta vào ch c năng Project/View Source
Mã l nh ngu n (Source code) ñư c Delphi t ñ ng sinh ra trong t p tin d án bao
g m:
- Tên chương trình, ñư c khai báo b i t khóa program, ñây cũng chính là tên
chương trình ng d ng (Application file).
- Các câu l nh ch d n t i các form và các unit ñư c s d ng trong d án ñư c
khái báo sau t khóa uses.
- Ch th biên d ch {$R *.res}: s d ng các t p tin tài nguyên (Resources).
- Kh i l nh thân chương trình chính, b t ñ u b i t khóa begin và k t thúc là end.
+ Initialize : Kh i ñ ng chương trình ng d ng.
+ CreateForm : T o form chính (Main form).
+ Run : Ch y chương trình ng d ng.
T p tin d án là t p tin trung tâm c a m t d án ñư c tri n khai b i Delphi. T p tin
này ch a ñ ng các tham kh o (Reference) t i t t c các file khác trong d án và liên k t
v i các form cũng như t p tin ñơn v (Unit file) kèm theo c a form. Khi chương trình ñư c
thi hành (Run, execute), nó s b t ñ u t t p tin d án này.
T p tin này ñư c t ñ ng sinh ra, và như v y, b n không nên thay ñ i n i dung c a
nó ngo i tr trong nh ng trư ng h p c n thi t.
T p tin d án ñư c lưu v i ph n m r ng .dpr
III.2. Các t p tin ch a mã l nh (Unit file)
Trong m i ng d ng ñư c vi t b i Delphi thư ng g m có 1 t p tin d án (Project file) và
nhi u t p tin ñơn v chương trình (Unit file) – xem l i ph n "C a s so n th o mã l nh"
ph n trên. M i khi ta thêm vào m i m t form (ho c Data Module, Frame,…) thì m t t p
tin unit s ñư c t o ra. Thông thư ng m t d án ñư c tri n khai trong th c t s có nhi u
t p tin unit này. N i dung t p tin unit này ch a ñ ng mã l nh c a chương trình và c a các
s ki n ñi u khi n (Event handles) trên form cũng trên các thành ph n (Component) mà
chúng ñư c ñ t trên nó.
Unit file ñư c lưu v i ph n m r ng là .pas
III.3. Các t p tin ñ c t bi u m u (Form file)
N i dung c a t p tin này xác ñ nh m t cách chi ti t các tính ch t hay thu c tính
(Properties) c a form và t t c các ñ i tư ng (nói chung) l p trình viên ñã thi t k . T p tin
này luôn ñi kèm v i m t t p tin unit file.
Form file ñư c lưu v i ph n m r ng là .dfm
ð hi n th n i dung t p tin này, b n RClick trên form r i ch n View as Text.
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 11
18. Chương 2: Borland Delphi
Ví d 2: Xem n i dung t p tin form file có tên untPTB1.dfm như sau:
T ch ñ thi t k c a form có tên là frmPTB1, b n RClick trên form r i ch n View
as Text như hình sau:
Hình 10: Chuy n cách hi n th t d ng Form sang d ng Text
N i dung c a t p tin untPTB1.dfm d ng văn b n s có như hình sau:
Hình 11: Hi n th d ng text c a untPTB1.dfm
ð chuy n ñ i t cách hi n th d ng Text sang d ng Form, ta s d ng ch c năng
RClick ch n ch c năng View as Form hay t h p phím Alt+F12:
Trang 12 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
19. Chương 2: Borland Delphi
Hình 12: Chuy n cách hi n th d ng Text sang d ng Form.
III.4. Các t p tin tài nguyên (Windows Resource File)
T p tin này cũng ñư c t ñ ng sinh ra. N i dung c a nó ch a ñ ng các thông tin v
phiên b n (Version) cũng như bi u tư ng c a ng d ng (Application icon) d ng mã nh
phân.
T p tin này có ph n m r ng .res
Ta có th m t p tin tài nguyên này ch ñ thi t k (Design) b ng chương trình
Image Editor ñư c kèm theo b Delphi.
Hình 13: Giao di n chương trình x lý nh – Image Editor
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 13
20. Chương 2: Borland Delphi
IV. Các thao tác cơ b n trên Delphi
IV.1. M m t d án m i
ð t o m t d án m i, b n s d ng l nh File/New/Application. Hình nh m t d án
m i t o như hình sau:
Hình 14: D án m i t o
IV.2. Lưu d án
M t d án trong Delphi s sinh ra khá nhi u t p tin. Do v y, khi lưu d án, b n c n
ph i t o ra 1 thư m c ñ ch a các t p tin trong d án ñó. Quá trình lưu d án như sau:
ð lưu m t d án, b n s d ng l nh: File/Save All hay t h p phím Shift+Ctrl+S.
Thông thư ng b n ph i lưu các form trư c (m i form là m t t p tin unit có ph n m r ng
là pas), r i sau ñó m i lưu t p tin d án (ph n m r ng là dpr).
Ví d 3: Lưu d án hi n th câu "Hello world!..." ch có m t form, vào thư m c
S:HelloWorld như sau:
Hình 15: C a s thi t k Form
Trang 14 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
21. Chương 2: Borland Delphi
- T c a s thi t k , ch n l nh File/Save All, Delphi s xu t hi n ra c a s "Save
Uniti File" (v i i =1..n) như sau:
Hình 16: H p tho i Save Uniti As
Click ch n h p li t kê th "Save in" ñ ch n ñĩa S: như hình sau:
Hình 17: H p tho i Save Uniti As: Ch n ñĩa
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 15
22. Chương 2: Borland Delphi
Ti p ñ n, Click ch n bi u tư ng "Create New Folder" ñ t o thư m c m i ch a các
t p tin c a d án mà b n mu n lưu (thư m c HelloWorld).
Hình 18: H p tho i Save Uniti As: T o thư m c
Sau khi t o thư m c xong, b n Click nút l nh Open ñ m thư m c HelloWorld ra.
Hình 19: H p tho i Save Uniti As: M thư m c
Trang 16 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
23. Chương 2: Borland Delphi
Ti p ñ n, b n gõ tên t p tin unit mà b n mu n lưu vào trong h p li t kê th "File
name", ñây là tên untHelloWorld.pas, r i Click Save.
Hình 20: H p tho i Save Uniti As: Nh p vào tên t p tin unit
ð n ñây, Delphi s ti p t c xu t hi n h p tho i "Save Projecti As" ñ b n lưu t p tin
d án. B n gõ vào tên t p tin d án vào trong h p li t kê th "File name", ví d này là tên
prjHelloWorld.dpr, và Click Save.
Hình 21: H p tho i Save Projecti As: Nh p tên t p tin d án
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 17
24. Chương 2: Borland Delphi
D án ñã ñư c lưu và ñ t tên xong. Sau vi c này, n u b n có ch nh s a chương trình,
ñ lưu l i nh ng s thay ñ i này, b n ch c n ra l nh File/Save All ñ Delphi t ñ ng lưu
toàn b l i d án.
Hình dư i ñây cho b n th y s lư ng các t p tin trong m t d án Hello World ñã
ñư c lưu, thông qua c a s Windows Explorer như sau:
Hình 22: Các t p tin c a d án Hello Wolrd trong thư m c S:HelloWorld
IV.3. Lưu Form (t p tin unit) v i tên khác
B n ch n l nh File/Save As ñ lưu.
IV.4. Lưu d án v i tên khác
B n ch n l nh File/Save Project As ñ lưu d án.
IV.5. ðóng d án
B n ch n l nh File/Close All ñ ñóng l i toàn b d án.
IV.6. Thoát kh i Delphi
Sau khi lưu l i toàn b d án. ð thoát kh i Delphi, b n s d ng l nh: File/Exit
Trang 18 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
25. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
CHƯƠNG 3: CÁC THÀNH PH N CƠ B N C A NGÔN NG
DELPHI (OBJECT PASCAL)
Trong chương này và chương 4 ti p theo sau, ñ giúp cho vi c làm quen v i các khái
ni m cơ b n ñư c d dàng. Giáo trình s xây d ng các ví d theo d ng chương trình ch
ñ văn b n (Text mode) hay không h tr ñ ho (Console Application). ð t o m t
project m i theo d ng Console Application, b n s d ng ch c năng
File/New/Other/Console Application.
I. B ch vi t
- B 26 ch Latin:
o Ch in : A, B, C, ..., X, Y, Z
o Ch thư ng : a, b, c, ..., x, y, z
- B ch s th p phân : 0, 1, 2, 3, ..., 8, 9
- Ký t g ch n i : _
- Các ký hi u toán h c : +, -, *, /, =, <, >, (, ), [, }
II. T khóa
Là các t riêng c a Object Pascal, có ng nghĩa ñã ñư c xác ñ nh, không ñư c dùng
nó vào các vi c khác ho c ñ t tên m i trùng v i các t khóa.
T khóa chung: program, begin, end, procedure, function
- T khóa ñ khai báo: const, var, type, array, string, record, set, file, label, class,...
- T khóa c a l nh l a ch n: if ... then ... else, case ... of
- T khóa c a l nh l p: for... to... do, for... downto... do, while... do, repeat...
until
- T khóa ñi u khi n: with, goto, exit, halt
- T khóa toán t : and, or, not, in, div, mod
Dư i ñây là danh sách m t s t khóa thông d ng:
and for record
array function repeat
begin goto set
case if to
class implementation try
const interface type
div label unit
do mod until
downto object uses
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 19
26. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal).
else of var
end procedure while
finalization program with
finally property
B ng 1: Các t khoá
III. Tên danh hi u t ñ t
Trong Delphi ñ ñ t tên cho các bi n, h ng, ki u, chương trình con ta dùng các danh
hi u (Identifier). Quy t c ñ t tên c a danh hi u trong Delphi là:
- Chi u dài t i ña: 256 ký t .
- B t ñ u b ng ch cái ho c d u _ (g ch dư i); ti p theo có th k t h p s và các
ký t khác.
- Không ñ c ch a kho ng tr ng.
- Không trùng v i các t khóa.
- Không phân bi t ch hoa và ch thư ng.
- Các ñ nh danh l ng nhau ñư c dùng d u . (d u ch m) ñ truy xu t.
Ví d 1:
- Danh hi u t ñ t h p l : x; s1; delta; pt_bac_2;
- Danh hi u t ñ t không h p l : 1S (b t ñ u b ng s ), Del ta (tên có kho ng
tr ng),...
IV. H ng
IV.1. Khái ni m
H ng là m t ñ i lư ng có giá tr không ñ i trong quá trình ch y chương trình. Ta
dùng tên h ng ñ chương trình ñư c rõ ràng và d s a ñ i.
Cú pháp khai báo:
Const
Tên_h ng = bi u_th c_xác_ñ nh_giá_tr _c a_h ng;
IV.2. H ng tr
Trong trư ng h p này thì bi u_th c_xác_ñ nh_giá_tr _c a_h ng là m t tr xác ñ nh.
Giá tr c a bi u th c này s ñư c ñ nh tr m t l n và không thay ñ i.
Ví d 2:
Const MaxSize = 100;
Const x = Abs(-100)+Length('Chao ban'); // h ng x =108
Const St = 'Borland'+ ' Delphi'; // h ng St = 'Borland Delphi'
Trang 20 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
27. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
Chú ý: Bi u th c h ng ñây có th là s , chu i ký t , các h ng true, false, nil,… k t
h p v i các toán t thích h p. Bi u th c h ng không th ch a các l i g i hàm, bi n hay
con tr , ngo i tr m t s hàm ñơn gi n như: Abs, Chr, Length, Succ, Odd,…
IV.3. H ng ñ nh ki u:
Có th ch a các giá tr ki u m ng, b n ghi, ki u th t c và ki u con tr .
Cú pháp khai báo h ng ñ nh ki u:
Const
Tên_h ng: ki u_d _li u = giá_tr _h ng;
Ví d 3:
Const MaxSize : Integer =100;
Trong ví d trên chúng ta khai báo m t h ng có tên là MaxSize, có ki u Integer và
mang giá tr b ng 100. Chúng ta th y, cách khai báo h ng ki u này r t gi ng khai báo và
kh i t o bi n (chúng ta s xem trong ph n bi n). N u ngư i l p trình b t ch th biên d ch
{$J+} thì h ng ñư c xem như bi n; t c là chúng ta có th thay ñ i giá tr c a h ng lúc
chương trình th c thi.
H ng m ng, h ng ki u b n ghi, h ng ki u th t c chúng ta s tìm hi u chi ti t trong
các ph n sau.
V. Ki u (Type)
V.1. Ð nh nghĩa
Ngoài các ki u ñã ñ nh s n, Delphi còn cho phép ta ñ nh nghĩa các ki u d li u khác
t các ki u căn b n theo qui t c xây d ng c a Delphi.
V.2. Cách khai báo
Type
Tên_ki u = Mô_t _xây_d ng_ki u;
Ví d 4: ð nh nghĩa các ki u d li u ngư i dùng (ki u d li u m i) và khai báo
bi n theo ki u v a ñ nh nghĩa
type //Khai báo ki u ngư i dùng
SoNguyen = integer;
Diem = single;
Tuoi = 1 .. 100;
Color = (Red, Blue, Green);
Thu = (ChuNhat, Hai, Ba, Tu, Nam, Sau, Bay);
Và khi ñã khai báo ki u thì ta có quy n s d ng ki u ñã ñ nh nghĩa ñ khai báo bi n
như sau:
var //Khai báo bi n theo ki u ngư i dùng ñ nh nghĩa
i, j: SoNguyen;
dtb: Diem;
t: Tuoi;
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 21
28. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal).
mau: Color;
ngay_hoc: Thu;
VI. Bi n
Bi n là m t c u trúc ghi nh có tên (ñó là tên bi n hay danh hi u c a bi n). Bi n ghi
nh m t d li u nào ñó g i là giá tr (value) c a bi n. Giá tr c a bi n có th ñư c bi n ñ i
trong th i gian s d ng bi n.
S truy xu t c a bi n nghĩa là ñ c giá tr hay thay ñ i giá tr c a bi n ñư c th c hi n
thông qua tên bi n.
Cú pháp khai báo bi n:
Var
tên_bi n [ho c danh_sách_tên_bi n] : Ki u_bi n;
N u chúng ta khai báo m t danh sách các bi n có cùng ki u thì m i tên bi n cách
nhau m t d u ph y. Ki u bi n là m t ki u d li u chu n trong Delphi ho c ki u ñư c ñ nh
nghĩa b i ngư i dùng.
Ví d 5:
var a : extended ; // khai báo a là m t bi n ki u s th c
b, c : integer ; // khai báo 2 bi n b, c có ki u s nguyên
hten : shortstring;
m_Ok: boolean; // khai báo m_Ok là m t bi n ki u logic
Chon : char; // khai báo Chon là m t bi n ki u ký t
C n khai báo các bi n trư c khi s d ng chúng trong chương trình. Khai báo m t
bi n là khai báo s t n t i c a bi n ñó và cho bi t nó thu c ki u gì.
VII. Bi u th c
VII.1. ð nh nghĩa
M t bi u th c là m t công th c tính toán bao g m các phép toán (toán t ), h ng,
bi n, hàm và các d u ngo c.
Ví d 6:
5 + u * sqrt(t) / sin(pi/2) ;
(a=5) and (b<>7) or (c >= 10);
max(x,y); // g i hàm
Trong ñó: a, b, c, x, y, u, t là các bi n ñã ñư c khai báo.
VII.2. Th t ưu tiên
Toán t :
Trong Delphi g m có các toán t ñư c phân chia như sau:
- Toán t s h c : +, -, *, /, div, mod
Trang 22 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
29. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
- Toán t logic : not, and, or, xor
- Toán t quan h : =, >, <, <>, <=, >=
- Toán t bitwise : not, and, or, xor, shl, shr
- Toán t làm vi c trên t p h p : +, -, *, /, <=, >=, <>*, in
- Toán t thao tác trên con tr : +, -, @ , ^, =, <>
- Toán t x lý l p ñ i tư ng : as, is
Khi tính giá tr c a m t bi u th c, ngôn ng Delphi qui ư c th t ưu tiên c a các
phép toán t cao ñ n th p như sau:
Phép toán Th t ưu tiên
@, not ưu tiên 1
*, /, div, mod, and, shl, shr, as ưu tiên 2
+, -, or, xor ưu tiên 3
=, <>, <, >, <=, >=, in, is ưu tiên 4
B ng 2: Th t ưu tiên toán t
Qui ư c tính th t ưu tiên:
Khi tính m t bi u th c có 3 qui t c v th t ưu tiên như sau:
Qui t c 1. Các phép toán nào có ưu tiên cao hơn s ñư c tính trư c.
Qui t c 2. Trong các phép toán có cùng th t ưu tiên thì s tính toán s ñư c th c
hi n t trái sang ph i.
Qui t c 3. Ph n trong ngo c t trong ra ngoài ñư c tính toán ñ tr thành m t giá
tr ñơn.
VIII. Chuy n ki u (Typecast)
Chuy n ki u hay còn g i là ép ki u là m t k thu t ñư c dùng ñ chuy n giá tr c a
m t bi u th c sang m t ki u d li u khác.
Cú pháp chuy n ñ i ki u d li u: Tên_Ki u(bi u_th c);
V i bi u_th c là m t h ng, thì ta có cách chuy n ki u theo giá tr (value typecasts),
còn v i bi u_th c là m t bi n, thì ta có cách chuy n ki u theo bi n (variable typecasts).
Ví d 7: Chuy n ki u theo tr :
t := integer('A'); // chuy n ký t A sang s , t = 65
v := char(65); // chuy n s sang ký t , v = 'A'
b := boolean(0); // chuy n s sang ki u Booblean, b = False
Ví d 8: Chuy n ki u theo bi n:
var MyChar: char;
Shortint(MyChar) := 122; // Gán ký t 'z' vào bi n MyChar
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 23
30. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal).
Ví d 9: Vi t chương trình minh ho 2 cách chuy n ki u theo tr và theo bi n:
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 1: Chương trình chuy n ki u Console mode
Nh n t h p phím Ctrl+F9 ñ biên d ch l i.
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 2: K t qu ch y chương trình.
IX. L i chú thích và các ch d n biên d ch
Trong Delphi có 3 cú pháp ñ ghi chú thích như sau:
{ chú thích ghi trong c p d u ngo c móc }
(* chú thích ñư c bao b i c p d u ngo c và d u sao*)
// chú thích trên m t dòng
Hai ki u chú thích khác nhau có th th c hi n chú thích l ng nhau nhưng cùng ki u
thì không ñư c phép l ng nhau.
Trang 24 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
31. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
X. C u trúc m t d án ch ñ Form (Form Application)
C u trúc c a m t d án (project) trong Delphi g m 2 ph n chính:
Ph n 1: Là t p tin d án (Project file)
Hình 3: Project file.
Ph n 2: Là (các) t p tin ñơn v chương trình (Unit file)
Hình 4: K t qu ch y chương trình.
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 25
32. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
CHƯƠNG 4: CÁC KI U D LI U SƠ C P CHU N, L NH ðƠN
I. Các ki u d li u sơ c p (Simple type)
I.1. Ki u s nguyên (Integer)
Ki u s nguyên bi u di n m t t p h p con các s . Delphi phân làm hai lo i s
nguyên ñư c ñ nh nghĩa b i các t khóa như sau:
T khóa Ph m vi Kích thư c
Integer -2147483648..2147483647 s nguyên có d u 32 bit
Cardinal 0..4294967295 s nguyên dương 32 bit
B ng 1: Ki u nguyên
Trong ñó, ki u Integer còn ñư c chia ra thành m t s t p con ñư c ñ nh nghĩa b i
các t khóa sau:
T khóa Ph m vi Kích thư c
Shortint -128..127 S nguyên có d u 8 bit
Smallint -32768..32767 S nguyên có d u 16 bit
Longint -2147483648..2147483647 S nguyên có d u 32 bit
Int64 -2^63..2^63-1 S nguyên có d u 64 bit
Byte 0..255 S nguyên dương 8 bit
Word 0..65535 S nguyên dương 16 bit
Longword 0..4294967295 S nguyên dương 32 bit
B ng 2: Các ki u nguyên
I.2. Ki u ký t (Char)
Ki u ký t cơ b n bao g m AnsiChar và WideChar. AnsiChar là ki u ký t thông
thư ng, chi m kích thư c m t byte (tương t b ký t ASCII mà giáo trình s ñ c p
ph n ti p theo). WideChar là ki u ký t hai byte, là ki u ký t dùng ñ bi u di n b mã
Unicode cho t p h p ký t .
Tuy nhiên, các b n v n có th khai báo s d ng ki u ký t v i t khóa Char. Và trên
th c t thì ki u Char tương ñương v i ki u AnsiChar. Ngoài Char và AnsiChar, Delphi còn
h tr t p ký t m t byte thông qua các ki u: PChar, PAnsiChar và AnsiString. Tương t
thì Delphi cũng h tr t p ký t Unicode (ngoài ki u WideChar) thông qua các ki u:
PWideChar, WideString.
M t ký t ñư c vi t trong c p d u nháy ñơn (''). Ð ti n trao ñ i thông tin c n ph i
s p x p, ñánh s các ký t , m i cách s p x p như v y g i là b ng mã. B ng mã thông d ng
hi n nay là b ng mã ASCII (American Standard Code for Information Interchange). H mã
ASCII dùng nhóm 7 bit ho c 8 bit ñ bi u di n t i ña 128 ho c 256 ký t khác nhau và mã
hóa theo ký t liên t c theo cơ s 16.
Trang 26 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
33. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
H mã ASCII 7 bit, mã hoá 128 ký t liên t c như sau:
0 : NUL (ký t r ng)
1 – 31 : 31 ký t ñi u khi n
32 – 47 : các ký t kho ng tr ng SP (space) ! “ # $ % & ‘ ( ) * + , - . /
48 - 57 : ký s t 0 ñ n 9
58 - 64 : các d u : ; < = > ? @
65 - 90 : các ch in hoa t A ñ n Z
91 – 96 : các d u [ ] _ `
97 – 122 : các ch thư ng t a ñ n z
123 – 127 : các d u { | } ~ DEL (xóa)
H mã ASCII 8 bit (ASCII m r ng) có thêm 128 ký t khác ngoài các ký t nêu
trên, g m các ch cái có d u, các hình v , các ñư ng k khung ñơn và khung ñôi và m t s
ký hi u ñ c bi t.
Ð th c hi n các phép toán s h c và so sánh, ta d a vào giá tr s th t mã ASCII
c a t ng ký t , ch ng h n: 'A' < 'a' vì s th t mã ASCII tương ng là 65 và 97.
Hàm Chr(n): Tr v ký t tương ng v i s th t mã ASCII n.
Hàm Ord(ch): Tr v s th t c a ký t ch trong b ng mã ASCII.
Ví d 1: V i khai báo bi n var ch: char; stt:byte; thì các câu l nh sau s
có giá tr như sau:
ch := chr(65); //ch = 'A'
stt := ord('A'); //stt = 65
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 27
34. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B NG MÃ ASCII v i 128 ký t chu n
Hex 0 1 2 3 4 5 6 7
0 NUL DLE SP 0 @ P ` p
0 16 32 48 64 80 96 112
1 SOH DC1 ! 1 A Q a q
1 17 33 49 65 81 97 113
2 STX DC2 “ 2 B R b r
2 18 34 50 66 82 98 114
3 ♥ DC3 # 3 C S c s
3 19 35 51 67 83 99 115
4 ♦ DC4 $ 4 D T d t
4 20 36 52 68 84 100 116
5 ♣ NAK % 5 E U e u
5 21 37 53 69 85 101 117
6 ♠ SYN & 6 F V f v
6 22 38 54 70 86 102 118
7 BEL ETB ‘ 7 G W g w
7 23 39 55 71 87 103 119
8 BS CAN ( 8 H X h x
8 24 40 56 72 88 104 120
9 HT EM ) 9 I Y I y
9 25 41 57 73 89 105 121
A LF SUB * : J Z j z
10 26 42 58 74 90 106 122
B VT ESC + ; K [ k {
11 27 43 59 75 91 107 123
C FF FS , < L l |
12 28 44 60 76 92 108 124
D CR GS - = M ] m }
13 29 45 61 77 93 109 125
E SO RS . > N ^ n ~
14 30 46 62 78 94 110 126
F SI US / ? O _ o DEL
15 31 47 63 79 95 111 127
Hình 1: B ng mã ASCII chu n
Trang 28 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
35. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B NG MÃ ASCII v i 128 m r ng
Hex 8 9 A B C D E F
0 Ç É á ░ └ ╨ α ≡
128 144 160 176 192 208 224 240
1 ü æ í ▒ ┴ ╤ ß ±
129 145 161 177 193 209 225 241
2 é Æ ó ▓ ┬ ╥ Γ ≥
130 146 162 178 194 210 226 242
3 â ô ú │ ├ ╙ π ≤
131 147 163 179 195 211 227 243
4 ä ö ñ ┤ ─ ╘ Σ ⌠
132 148 164 180 196 212 228 244
5 à ò Ñ ╡ ┼ ╒ σ ⌡
133 149 165 181 197 213 229 245
6 å û ª ╢ ╞ ╓ µ ÷
134 150 166 182 198 214 230 246
7 ç ù º ╖ ╟ ╫ τ ≈
135 151 167 183 199 215 231 247
8 ê ÿ ¿ ╕ ╚ ╪ Φ °
136 152 168 184 200 216 232 248
9 ë Ö ⌐ ╣ ╔ ┘ Θ ·
137 153 169 185 201 217 233 249
A è Ü ¬ ║ ╩ ┌ ·
138 154 170 186 202 218 234 250
B ï ¢ ½ ╗ ╦ █ δ √
139 155 171 187 203 219 235 251
C î £ ¼ ╝ ╠ ▄ ∞ ⁿ
140 156 172 188 204 220 236 252
D ì ¥ ¡ ╜ ═ ▌ φ ²
141 157 173 189 205 221 237 253
E Ä ₧ « ╛ ╬ ▐ ε ■
142 158 174 190 206 222 238 254
F Å ƒ » ┐ ╧ ▀ ∩
143 159 175 191 207 223 239 255
Hình 2: B ng ASCII m r ng
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 29
36. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Ví d 2: Vi t chương trình in ra 256 ký t c a b ng mã ASCII:
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 3: Chương trình in b ng mã ASCII
Nh n t h p phím Ctrl+F9 ñ biên d ch l i.
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 4: K t qu chương trình ch ñ Console
I.3. Ki u s th c (Real type)
I.3.1. Khái ni m
Delphi, ki u s th c bi u di n m t t p h p các s mang d u ch m ñ ng (float,
real). Kích thư c c a nó tùy thu c vào t khóa mà chúng ta s d ng trong khai báo.
Trang 30 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
37. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
T khóa Ph m vi Kích thư c
(byte)
Real48 2.9 x 10^-39 .. 1.7 x 10^38 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 10
Comp -2^63+1 .. 2^63 -1 8
Currency -922337203685477.5808.. 8
922337203685477.5807
B ng 3: Các t khoá c a ki u th c
Tuy nhiên, ki u s th c chúng ta thư ng dùng ñư c khai báo b ng t khóa Real,
trong Delphi ki u Real tương ñương v i ki u Double.
T khóa Ph m vi Kích thư c
(byte)
Real 5.0 x 10^-324 .. 1.7 x 10^308 8
B ng 4: Ki u Real
I.3.2. M t s phép toán và hàm trên ki u s (s nguyên và s th c)
Các phép toán s h c hai ngôi:
Phép toán Ý nghĩa Ki u toán h ng Ki u k t qu
+ C ng integer, real integer, real
- Tr integer, real integer, real
* Nhân integer, real integer, real
/ Chia th c integer, real real
div Chia nguyên integer integer
mod L y ph n dư integer integer
B ng 5: Các phép toán 2 ngôi
Ví d 3: V i các bi n x, y, z ki u integer
x := 3*2; // x = 6
y := 15 div 6; // t = 2
z := 15.5 mod 5; // l i
Tuy nhiên, phép toán + và toán - còn có th là phép toán m t ngôi:
Phép toán Ý nghĩa Ki u toán h ng Ki u k t qu Ví d
+ (unary) d u dương integer, real integer, real +7
- (unary) d u âm (l y s ñ i) integer, real integer, real -7
B ng 6: Các phép toán 1 ngôi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 31
38. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Khi th c hi n các phép toán chúng ta c n chú ý m t s ñi m ñ c bi t sau:
- K t qu c a phép chia th c (/) luôn luôn có ki u Extented, không quan tâm ñ n
ki u c a các toán h ng.
- Phép toán mod là phép toán l y ph n dư.
- Khi th c hi n phép chia x/y (hay là x mod y ho c x div y) thì y ph i khác 0, n u y
có giá tr 0 thì chương trình s phát sinh l i.
M t s hàm chuy n ñ i ki u d li u:
function IntToStr ( Number : Integer ) : string; //Unit: SysUtils
function IntToStr ( BigNumber : Int64 ) : string; //Unit: SysUtils
Hàm IntToStr là hàm th c hi n vi c chuy n ñ i m t s nguyên (ho c s int64) thành
m t chu i s .
function FloatToStr(Value: Extended): string; //Unit: SysUtils
function FloatToStr(Value: Extended; const FormatSettings: TFormatSettings): string;
Hàm FloatToStr chuy n ñ i m t s th c hay s d u ch m ñ ng (Value) thành m t
chu i bi u di n tương ng cho s ñó.
B ng dư i ñây là các hàm liên quan ñ n ki u s :
Hàm Ý nghĩa
abs(x); |x| : l y giá tr tuy t ñ i c a s x
arctan(x:extended): extended; arctang(x)
cos(x: extended): extended; cos(x) : l y cos c a x
exp(x: real): real; ex
frac(x:extended): extended; Tr v ph n th p phân c a bi n x
inc(var x [ ; n: longint ] ); tăng bi n x lên 1 ho c n giá tr
int(x: extended): extended; Tr v ph n nguyên c a bi n x
ln(x); ln x : l y logarit nepe c a tr x (e ≅ 2.71828)
max(a,b: numbertype): numbertype; Tr v s l n hơn trong hai s a và b.
min(a,b: numbertype): numbertype; Tr v s nh thua trong hai s a và b.
Ki m tra n có ph i là s l hay không:
odd(n: integer|int64):boolean; True: N u n l
False: N u n ch n.
pi: extended; Tr v giá tr pi=3.1415926535897932385.
Tr v m t s ng u nhiên x và 0 <= x < range,
random[( range: integer)];
n u range không ch ra thì 0 <= x < 1.
sqr(x); x2 : l y bình phương tr s x
sqrt(x); : l y căn b c 2 c a x
sin(x); sin (x) : l y sin c a x
succ(x); Tr v giá tr sau c a x
Trang 32 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
39. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
trunc(x: extended): int64; L y ph n nguyên c a x
round(x: extended): int64; Làm tròn giá tr c a x, l y s nguyên g n x nh t
B ng 7: Các hàm x lý s
Ví d 4: Vi t chương trình tính chu vi và di n tích c a hình ch nh t:
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 5: Chương trình tính chu vi di n tích hình ch nh t
Nh n t h p phím Ctrl + F9 ñ biên d ch l i.
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 6: K t qu chương trình ch ñ Console
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 33
40. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
I.4. Ki u logic (Boolean)
I.4.1. Khái ni m
M t d li u thu c ki u boolean là m t ñ i lư ng có th nh n ñư c m t trong hai giá
tr logic là true (ñúng) và false (sai). Delphi cung c p 4 ki u boolean sau:
T khóa Kích thư c (byte)
Boolean 1
ByteBool 1
WordBool 2
LongBool 4
B ng 8: Ki u logic
Trong ñó, ki u Boolean là ki u tương thích v i ki u Boolean c a Pascal và ñư c ưa
thích hơn c . M t giá tr ki u ByteBool, LongBool ho c WordBool ñư c xem là true n u
nó có giá tr khác 0, ngư c l i là false.
I.4.2. Phép toán Boolean
T khóa Ý nghĩa
Not Phép toán ph ñ nh
And Phép toán và
Or Phép toán ho c
B ng 9: Các phép toán trên ki u logic
Cú pháp:
• Phép toán and: (x1) and (x2) and ... and (xn) tr v k t qu là true khi t t c các
toán h ng là true, ngư c l i tr v false.
• Phép or: (x1) or (x2) or ... or (xn) cho k t qu là false khi t t c các toán h ng là
false, ngư c l i tr v true.
Ví d 5: Ví d : v i x, y, z ki u boolean, ta có:
x := (2<3) and (5<5) and (0<>1); // x = False
y := (2>3) or (5>5) or (0<>1); // y = True
z := not (y); // z = False
ð hi n th giá tr boolean lên màn hình, b n s d ng hàm có s n trong Delphi:
function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;
N u b n mu n hi n th giá tr c a B là chu i ký t True ho c False thì cho
UseBoolStrs = True; còn n u mu n hi n th giá tr c a B là '-1' ho c '0' thì thì cho
UseBoolStrs = False.
II. Câu l nh (statement)
Trong m t chương trình Delphi, sau ph n mô t d li u là ph n mô t các câu l nh.
Các câu l nh có nhi m v xác ñ nh các công vi c mà máy tính ph i th c hi n ñ x lý các
d li u ñã ñư c mô t và khai báo. Câu l nh ñư c chia thành câu l nh ñơn gi n và câu l nh
có c u trúc.
Trang 34 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
41. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Các câu l nh ph i ñư c ngăn cách v i nhau b i d u ch m ph y (;) và các câu l nh
có th vi t trên m t dòng hay nhi u dòng.
III. L nh ñơn (Simple statement)
L nh ñơn là l nh không ch a b t kỳ câu l nh nào khác. Các l nh ñơn bao g m: l nh
gán, l nh g i hàm và th t c, l nh nh y (goto).
IV. L nh gán (Assignment statement)
M t trong các l nh ñơn gi n và cơ b n nh t c a Delphi là l nh gán. M c ñích c a
l nh này là gán cho m t bi n ñã khai báo m t giá tr nào ñó cùng ki u (hay tương thích)
v i bi n.
Cú pháp c a l nh gán là:
Bi n := bi u_th c;
L nh gán s ñ t l i giá tr hi n hành c a bi n b ng giá tr m i n m bên ph i toán t
gán (d u hi u :=).
Ví d 6: Khi ñã khai báo
var
c: char; i: integer;
x: real; p, q: boolean;
thì ta có th có các phép gán sau:
c := 'A'; c := chr(90);
i := 35; i := i div 7;
x := 0.5; x := i + 1;
p:= (i >= 1) and (i < 100); q := not p;
Ý nghĩa:
Bi n và các phát bi u gán là các khái ni m quan tr ng c a m t h các ngôn ng l p
trình, chúng ph n ánh cách th c ho t ñ ng c a máy tính, ñó là:
- Lưu tr các giá tr khác nhau vào m t ô nh t i nh ng th i ñi m khác nhau.
- M t quá trình tính toán có th coi như là m t quá trình làm thay ñ i giá tr c a
m t (hay m t s ) ô nh nào ñó, cho ñ n khi ñ t ñư c giá tr c n tìm.
V. L nh g i th t c và hàm
Trong l p trình OOP, thu t ng hàm (Function), th t c (Procedure) và phương th c
(Method) là khái ni m quen thu c v i ngư i l p trình. ð các b n có th n m b t ñư c
ki n th c l p trình trong Delphi, Giáo trình ñưa ra trư c khái ni m này m t cách ng n g n
như sau:
Hàm và th t c ñư c g i chung là chương trình con. Hàm ñư c xây d ng thông qua
tên hàm và danh sách các tham s hình th c n u có, m i hàm thì luôn tr v duy nh t 1
giá tr . Còn th t c thì có tên th t c và danh sách các tham s hình th c n u có. Khác v i
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 35
42. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
hàm, th t c KHÔNG tr v m t giá tr nào c , nó thư ng bao g m m t dãy các câu
l nh c n ñư c th c hi n m t cách tu n t ñ gi i quy t m t công vi c nào ñó.
B n c n phân ra 2 giai ño n rõ ràng: Xây d ng chương trình con, và s d ng chương
trình con.
Ví d 7: V hàm - Function
- Xây d ng hàm: B n vi t hàm tính t ng 2 s a và b và k t qu tr v c a hàm chính
là k t qu a + b. Nó có hình d ng như sau:
function Cong(a, b: single) : single;
begin
Cong := a + b;
end;
- S d ng hàm (L i g i hàm): b n c n tính phép c ng c a 2 con s c th nào,
ch ng h n b n mu n 5 c ng v i 7, thì như v y b n s truy n s 5 vào cho a và 7
vào cho b. C th b n s g i như sau:
mTong := Cong(5,7); //v i bi n mTong ki u Single và mTong = 12
Như v y bư c xây d ng: a và b ñư c g i là tham s hình th c. Còn bư c g i hàm thì 5
và 7 ñư c g i là các tham s th c.
Ví d 8: V th t c – Procedure
- Xây d ng th t c: B n vi t th t c hi n th ra màn hình n câu chào “Welcome to
Delphi!…”, v i n có th là 1 l n, 3, 10, … 100 l n ch ng h n:
procedure Welcome(n: integer);
var i: integer;
begin
for i:=1 to n do writeln (‘Welcome to Delphi!…’);
end;
- S d ng th t c (L i g i th t c): ñây mu n hi n th 5 câu chào, thì b n ra câu
l nh như sau:
Welcome(5); //Hi n th 5 câu chào
Khái ni m phương th c trong m t l p cũng ñư c xem là th t c ho c hàm (Member
method). Ki n th c này các b n s ñư c h c chương 5. ñây, các b n c n chú ý ñi u
này: Phương th c là chương trình con mà Delphi ñã xây d ng s n trong m i l p/thành
ph n (Class/Component) cho b n (Th t kh e làm sao!…), b n ch c n l y trong “túi khôn”
c a Delphi ñ s d ng vi t chương trình mà thôi.
Tóm l i: Khi s d ng phương th c hay các chương trình con ñã ñư c xây d ng s n
b i Deplhi, b n c n n m rõ m i phương th c, th t c ho c hàm có bao nhiêu tham s hình
th c và ki u c a chúng là gì ñ truy n vào cho chúng các tham s th c tương ng cho
ñúng yêu c u c a b n.
Ví d v i cú pháp th t c có s n trong Delphi là:
procedure ShowMessage(const Msg: string);
thì b n ch c n l y ra s d ng v i câu l nh ñơn gi n như sau:
ShowMessage(‘Toi dang hoc Delphi day nhe!…’);
Các b n s ñư c h c chi ti t các khái ni m này trong chương “L p Trình X Lý S
Ki n” và “Chương Trình Con” các ph n sau.
Trang 36 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
43. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
VI. L nh Goto
T thân chương trình con, b n có th s d ng l nh goto ñ chuy n hư ng th c hi n
chương trình t i m t v trí b t kỳ thông qua m t nhãn ñã ñư c khai báo trư c.
Cú pháp l nh goto: Goto nhãn;
V i nhãn ñư c khai báo v i cú pháp sau: Label Tên_nhãn;
L nh goto là l nh nh y không ñi u ki n, nó chuy n hư ng th c thi c a chương trình
ñ n v trí mà nhãn ñang ñ ng.
Trong phong cách l p trình OOP, l nh goto t ra b l i th i và r t ít khi ñư c dân l p
trình s d ng.
Ví d 9: Minh h a l nh goto ñ tính bi u th c a/b.
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 7: Ví d minh h a l nh goto và khai báo nhãn - label
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 8: K t qu chương trình.
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 37
44. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
CHƯƠNG 5: L P TRÌNH X LÝ S KI N – CÁC THÀNH PH N
TRONG GIAO DI N DELPHI
I. L p trình x lý s ki n
I.1. L p (Class) và ñ i tư ng (Object)
Trong các chương trư c, các b n ñã ñư c bi t ñ n cách l p trình tu n t ch ñ
Console Application và bi t ñư c m t s khái ni m cơ s . chương này, các b n s ñư c
trình bày m t phương pháp l p trình chính c a giáo trình và r t ph bi n hi n nay ñó là l p
trình s ki n d a trên n n t ng c a l p trình hư ng ñ i tư ng (OOP: Object-Oriented
Programming).
Trong cu c s ng, b n th y có nhi u ñ i tư ng ñư c x p chung vào m t lo i/l p,
ch ng h n như nh ng ngư i còn ñi h c ta x p chung v i m t l p ñó là l p SINHVIÊN,
nh ng ngư i ñi làm vi c thì x p vào l p CBCNV. Như v y ta có hình nh như sau: t t c
m i ngư i ñ u ñư c x p chung vào m t l p trên cùng là l p NGƯ I. Ta cũng có th phân
chia nh ng ngư i trong l p NGƯ I này thành hai nhóm là SINHVIÊN và CBCNV d a
vào tính ch t ñ phân bi t là ñang ñi làm hay còn ñi h c.
- H tên
NGƯ I - Ngày sinh
- Phái
- v.v...
- Mã s SV
- Mã cán b
- Ngành h c SINHVIÊN CBCNV
- B c lương
- v.v...
- v.v...
- v.v...
Hình 1: Mô hình các l p
C th : N u xét m t gia ñình công ch c g m 4 th c th ngư i là ngư i A – cha, B -
m : ñi làm; anh C, ch D: ñang ñi h c ch ng h n, thì như th ta có 2 ñ i tư ng A, B ñư c
t o ra t l p CBCNV và 2 ñ i tư ng C, D ñư c sinh ra t l p SINHVIÊN và c 4 ñ i
tư ng này ñ u có nh ng tính ch t chung ñư c th a hư ng t l p NGƯ I, và như v y 2 l p
SINHVIÊN và CBCNV là các l p d n xu t t l p NGƯ I.
I.1.1. L p (Class)
L p là m t khái ni m ñư c s d ng r t nhi u trong cách l p trình OOP. Vi c hi u rõ
các ki n th c v l p thì n m ngoài ph m vi c a giáo trình này. Do v y, giáo trình ch ñưa
ra các khái ni m r t cơ b n v l p, m c ñích ñ các b n d hi u hơn v ñ i tư ng (Object),
là m t thành ph n r t ph bi n trong l p trình c a Delphi. Như v y, l p ñư c dùng ñ ñ nh
nghĩa ra ki u d li u c u trúc mà nó bao g m 3 thành ph n cơ b n:
- Các trư ng (Fields): là các bi n d li u c a l p.
Trang 38 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
45. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
- Các phương th c (Methods): là các hàm hay th t c ñ th c hi n thao tác nào ñó
trên ñ i tư ng. Có 2 phương th c ñ c bi t trong l p mà b n c n lưu ý ñó là
phương th c t o (Constructor) và phương th c h y (Destructor) s ñư c dùng khi
m t ñ i tư ng (Object) ñư c t o nên ho c b h y.
- Các thu c tính (Attributes) cu m t l p bao g m các bi n, các h ng, hay tham s
n i t i c a l p ñó. Tính ch t quan tr ng nh t c a các thu c tính khi chúng là bi n
là có th b thay ñ i trong quá trình ho t ñ ng c a m t ñ i tư ng. Thông thư ng
ñ truy xu t các bi n trư ng, ta d a vào tr ng thái c a thu c tính là ñ c (read)
hay ghi (write) ñ nh n hay là thi t l p giá tr cho chúng.
L p ñư c khai báo theo cú pháp như sau:
type className = class (ancestorClass)
memberList
end;
Trong ñó:
- ancestorClass là l p cha/t tiên c a l p d n xu t (descendant) là className, l p
className s ñư c th a hư ng (inheritance) t l p cha. Trong Delphi l p th y t
là l p TObject.
- memberList là các thành ph n c a l p là trư ng, phương th c và thu c tính c a
l p ñã ñư c trình bày trên.
Trong ví d gi i phương trình b c nh t trên, ta có m t l p TfrmPTB1 ñư c d n
xu t t l p cha là l p TForm, l p TForm l i ñư c d n xu t t l p TCustomForm,... và c
th nó ñư c d n xu t t l p th y t trong Delphi là l p TObject như hình sau:
Hình 2: L p TfrmPTB1 và các l p t tiên (Ancestor Classes) c a nó
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 39
46. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Ví d 1: Khai báo l p TfrmPTB1 cho form unit untPtb1.Pas ví d trên như sau:
type
TfrmPTB1 = class(TForm)
lbl_a: TLabel;
lbl_b: TLabel;
edt_a: TEdit;
edt_b: TEdit;
lbl_KQua: TLabel;
memKQua: TMemo;
pnlLine: TPanel;
btnXuLy: TButton;
btnKetThuc: TButton;
procedure btnXuLyClick(Sender: TObject);
procedure btnKetThucClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
I.1.2. ð i tư ng (Object)
ð i tư ng là th c th (Instance) ñư c sinh ra t m t l p (Class), hay nói cách khác
khi ta khai báo m t bi n thu c m t l p nào ñó, thì bi n ñó chính là m t ñ i tư ng m i
ñư c c p phát. ð i tư ng này ñư c t o ra b i phương th c constructor và s b gi i phóng
b i phương th c destructor.
* Quy cách ñ t tên ñ i tư ng:
Trong phong cách l p trình chuyên nghi p, quy ư c ñ t tên cho ñ i tư ng thư ng
ñư c ghép 2 ph n: ti n t và tên g i nh c a ñ i tư ng ñó. Ti n t thư ng có 3 ký t ñ
xác ñ nh ñ i tư ng ñó thu c lo i thành ph n nào. Trong giáo trình này g i ý cho các b n
các ti n t (prefix) cho các ñ i tư ng c a các thành ph n như sau:
ð i tư ng Ti n t Ví d
Form frm frmWelcome, frmMain
Label lbl lblHeSo, lblHoTen
Edit edt edt_a, edtHoTen
Button btn btnGiai, btnXuLy
SpinEdit: spe speNhietDo, speGia1TC
LabeledEdit lbe lbeDonGia, lbeThanhTien
ListBox lbx lbxBaiHat, lbxFont
CheckBox chk chkMatHang, chkDelphi
ComboBox cbo cboToanTu, cboPhai
GroupBox gbx gbxMonHoc, gbxMatHang
Trang 40 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
47. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
ð i tư ng Ti n t Ví d
CheckListBox clb clbTenMH, clbDMVT
ValueListEditor vle vleMatHang, vleBaoGia
Memo mem memDanhSach, memKQ
RadioButton rbt rbtNam, rbtNu
RadioGroup rgp rgpGioiTinh, rgpCourses
StringGird stg stgAlphabet, stgMaTranA
Panel pnl pnlDieuKhien, pnlDrives
PopupMenu pmu pmnMauSac, pmnGames
MainMenu mmu mmuMainForm, mmuQLSV
MenuItem mni mniCopy, mniPaste
B ng 1: Quy cách ñ t tên các ñ i tư ng
Ví d 2: Khai báo m t th c th (ñ i tư ng) frmPTB1 như sau:
var
frmPTB1: TfrmPTB1; // ñ i tư ng frmPTB1 c a l p TFrmPTB1
L p trình hư ng ñ i tư ng là s g n k t gi a d li u và các hàm x lý d li u t o
thành ñ i tư ng. M i ñ i tư ng bao g m:
- Thu c tính (Properties): là d li u c a ñ i tư ng.
- Phương th c (Methods): là nh ng hành ñ ng mà ñ i tư ng có th thi hành.
- S ki n (Events): là nh ng hành ñ ng c a ñ i tư ng ñó ñáp ng l i thông qua th
t c s ki n do ngư i l p trình cài ñ t, khi ngư i dùng tương tác v i chương trình.
Ví d 3: Trong chương này, các b n s ñư c h c cách s d ng các thu c tính và các
s ki n c a các ñ i tư ng thông qua m t chương trình ñ u tiên là
“prjWelcome.dpr”
- Bư c 1: B n vào ch c năng: File/New/Application ñ t o ra d án m i.
Hình 3: Hình nh c a New Form.
T c a s thu c tính và s ki n c a ñ i tư ng (Object Inspector), d a vào thu c tính
name, b n ñ t tên cho form là frmWelcome ñ Delphi ñ nh nghĩa ra 1 l p có tên là
TfrmWelcome ñư c d n xu t t l p cha là TForm như sau:
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 41
48. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
type
TfrmWelcome = class(TForm)
// memberList
end;
Và khai báo m t ñ i tư ng có tên là frmWelcome thu c ki u l p TfrmWelcome như sau:
var
frmWelcome: TfrmWelcome;
Hình 4: Hình nh l p TfrmWelcome và ñ i tư ng frmWelcome
- Bư c 2: T b ng các thành ph n (Component Palette), click vào th Standard r i
l n lư t ñ t các thành ph n TLabel, TEdit, và TButton lên Form:
Hình 5: Các ñ i tư ng Label, Edit và Button ñ t trên Form.
Trang 42 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
49. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trong môi trư ng l p trình IDE, các l p trong Delphi thư ng ñư c cài ñ t thành các
thành ph n (TComponent) ñ ngư i l p trình d dàng th a hư ng khi thi t k và vi t mã
l nh. Như v y: Tên l p cũng chính là tên thành ph n.
T ñây v sau, thu t ng “ñ i tư ng A c a m t thành ph n TA” ñư c vi t ng n
g n là “ñ i tư ng A”.
Ví d 4: Câu l nh frmWelcome:TForm; ñ c ñ y ñ là “ñ i tư ng frmWelcome
thu c l p (thành ph n) TForm”. Tuy nhiên, ta có th ñ c g n l i như: “ñ i
tư ng frmWelcome”, ho c câu l nh btnGiai:TButton; ñư c ñ c là “nút
l nh btnGiai” hay “ñ i tư ng btnGiai”.
I.2. Thu c tính
M i thành ph n ñ u có nh ng thu c tính ñ xác ñ nh nh ng ñ c tính c a thành ph n
ñó ch ng h n như màu s c (Color), v trí (Position), kích thư c và tr ng thái (State) c a
chúng. Trong các thu c tính này, b n c n quan tâm nh t ñ n thu c tính tên (Name) c a ñ i
tư ng.
- Bư c 3: L n lư t thi t l p các thu c tính Name, Caption cho ñ i tư ng Label và
các thu c tính Name, Text cho ñ i tư ng Edit:
Tên l p
Tên ñ i
tư ng
Hình 6: C a s thu c tính và s ki n c a ñ i tư ng lblHoTen và edtHoTen
Tương t , ñ i tư ng thu c thành ph n TButton có thu c tính Name là btnChao và
Caption là “&Chao”, ñ i tư ng c a TForm có thu c tính Name là frmWelcome và Caption
là “Welcome to Delphi 7.0”
Cách truy xu t thu c tính c a ñ i tư ng:
Tên_ñ i_tư ng.Thu c_tính
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 43
50. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Ví d 5: Gán thu c tính Enabled c a lblHoTen b ng True là:
lblHoten.Enabled := True;
I.3. Phương th c (Method)
Là th t c (Procedure) ho c hàm (Function) ñã ñư c xây d ng s n cho công vi c nào
ñó c a ñ i tư ng. Ta có th g i phương th c này trong quá trình vi t mã (Coding) ñ
chúng thi hành khi chương trình ch y.
Cách truy xu t phương th c ñ i tư ng:
Tên_ñ i_tư ng.Phương_th c;
Ví d 6: G i phương th c Hide và Show ñ th c hi n vi c n và hi n c a ñ i tư ng
frmWelcome là: frmWelcome.Hide;
và frmWelcome.Show;
I.4. S ki n (Event)
ðó chính là m t thao tác c a ngư i s d ng tác ñ ng lên ñ i tư ng và nó s ñáp ng
l i b ng vi c th c hi n m t công vi c nào ñó. Các s ki n thông thư ng là trên mouse và
keyboard như: Click, RightClick, DoubleClick, KeyPress, Drag and drop,…
Tên s ki n
Tên th t c
s ki n s
ki n.
Hình 7: S ki n OnClick c a btnChao
Như hình trên, ñ i tư ng btnChao có nhi u s ki n như: OnClick, OnContextPopup,
OnDragDrop,... c a tab Event tương ng trên c t Action. M i s ki n này tương ng v i
m t th t c s ki n ñ x lý s ki n ñó (Event handers) n m c t bên ph i tương ng.
Trang 44 B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT
51. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
I.5. X lý s ki n (Event Handlers)
ðó chính là th t c s ki n, thân th t c s ki n này bao g m các câu l nh mà ngư i
l p trình vi t trong nó ñ th c hi n m t công vi c, ch c năng nào ñó.
Cách hình thành th t c s ki n:
procedure Tên_Thành_Ph n_Form.Tên_ñ i_tư ngS _ki n([DanhSáchCácThamS ]);
Ví d 7: Th t c s ki n OnClick cho nút l nh btnChao c a frmWelcome (hay còn
g i là th t c s ki n btnChaoClick c a l p TfrmWelcome) ñư c hình
thành như sau:
procedure TfrmWelcome.btnChaoClick(Sender: TObject);
tên thành ph n hay tên nút l nh s ki n
tên l p form btnChao OnClick
- Bư c 4: hình 5, nh p ñúp lên nút l nh Chao, ho c hình 7 b n nh p ñúp lên
c t bên ph i c a s ki n OnClick tương ng ñ m ra m t th t c s ki n có tên
là TfrmWelcome.btnChaoClick (Sender: TObject) như sau:
Hình 8: Th t c s ki n btnChaoClick m i t o c a s ki n OnClick
Ti p ñ n b n gõ m t s l nh vào trong thân c a th t c s ki n như hình sau:
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 45