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

trường thcs hoàng xuân hãn

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 (14 MB, 353 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>MÔN TIN H</b>

<b>C </b>

ĐẠ

<b>I C</b>

ƢƠ

<b>NG </b>



Đố<b>i t</b>ƣợ<b>ng:</b> SV đại học chính quy tồn trƣờng


<b>N</b>ộ<b>i dung chính g</b>ồ<b>m 12 ch</b>ƣơ<b>ng: </b>


Phƣơng pháp gi ải quyết bài
toán bằng máy tính s ố.


Thể hiện dữ liệu trong máy tính s ố.
Tổng qt v ề lập trình bằng VB.
Qui trình thiết kế trực quan


giao diện.


Các ki ểu dữ liệu của VB.


Các l ệnh định nghĩa & khai báo.


Biểu thức VB.


Các l ệnh thực thi VB.


Định nghĩa thủ tục & sử dụng.
Tƣơng tác gi ữa ngƣời dùng
& chƣơng trình.


Quản lý h ệ thống file.


Linh kiện phần mềm & truy
xuất database.



<b>Tài li </b>ệ<b>u tham kh</b>ả<b>o: </b>


Tập slide bài giảng & thực hành của môn học này.
3 CD MSDN trong Microsoft Visual Studio.


Khoa Công nghệ Thơng tin Mơn: Tin học


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>MƠN TIN H </b>

<b>C </b>



<i><b>Ch</b></i>

ƣơ

<i><b>ng 1 </b></i>



<b>PH</b>

ƢƠ

<b>NG PHÁP GI </b>

<b>I QUY</b>

<b>T BÀI TỐN </b>



<b>B</b>

<b>NG MÁY TÍNH S </b>



1.1 Các khái ni ệm cơ bản về máy tính s ố


1.2 Lịch sử phát tri ển máy tính s ố



1.3 Dữ liệu & chƣơng trình



1.4 Qui trình tổng quát gi ải quyết bài tốn b ằng máy tính s ố



1.5 Phân tích bài tốn t ừ-trên-xu ống



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>1.1 Các khái </b>

<b>nim c</b>

ơ

<b> b</b>

<b>n v</b>

<b> máy tính s</b>




Con ngƣời thơng minh hơn các động vật khác nhi ều. Trong cuộc sống,
họ đã ch ế tạo ngày càng nhiều công cụ, thiết bị để hỗ trợ mình trong
hoạt động. Các công c ụ, thiết bị do con ngƣời chế tạo ngày càng tinh
vi, phức tạp và thực hiện nhiều công việc hơn trƣớc đây. M ỗi công cụ,
thiết bị thƣờng chỉ thực hiện đƣợc 1 vài công việc cụ thể nào đó. Thí
dụ, cây ch ổi để quét, radio để bắt và nghe đài audio...


Máy tính s ố (digital computer) cũng là 1 thiết bị, nhƣng thay vì chỉ thực
hiện 1 số chức năng cụ thể, sát v ới nhu cầu đời thƣờng của con


ngƣời, nó có thể thực hiện 1 số hữu hạn các ch ức năng cơ bản (tập
lệnh), mỗi lệnh rất sơ khai chƣa giải quyết trực tiếp đƣợc nhu cầu đời
thƣờng nào của con ngƣời. Cơ chế thực hiện các l ệnh là tự động, bắt
đầu từ lệnh đƣợc chỉ định nào đó rồi tuần tự từng lệnh kế tiếp cho đến
lệnh cuối cùng. Danh sách các l ệnh đƣợc thực hiện này đƣợc gọi là


chƣơng trình.


Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<b>Các khái </b>

<b>nim c</b>

ơ

<b> b</b>

<b>n v</b>

<b> máy tính s</b>



Các l ệnh mà máy hi ểu và thực hiện đƣợc đƣợc gọi là

lệnh máy

.


Ta dùng ngôn ngữ để miêu t ả các l ệnh.

Ngơn ngữ

lập trình

cấu


thành từ 2 yếu tố chính yếu: cú pháp và ng ữ nghĩa. Cú pháp qui


định trật tự kết hợp các ph ần tử để cấu thành 1 lệnh (câu), còn


ngữ nghĩa cho biết ý ngh ĩa của lệnh đó.




Bất kỳ cơng việc (

bài tốn

) ngồi đời nào cũng có thể đƣợc chia



thành trình tự nhiều cơng việc nhỏ hơn. Trình tự các cơng vi ệc


nhỏ này đƣợc gọi là giải thuật giải quyết cơng việc ngồi đời. Mỗi


cơng việc nhỏ hơn cũng có thể đƣợc chia nhỏ hơn nữa nếu nó


cịn phức tạp,...

cơng việc ngồi đời có thể đƣợc miêu t ả bằng


1 trình tự các l ệnh máy (ch ƣơng trình ngơn ngữ máy).



Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>Các khái </b>

<b>nim c</b>

ơ

<b> b</b>

<b>n v</b>

<b> máy tính s</b>



Vấn đề mấu chốt của việc dùng máy tính gi ải quyết cơng việc ngồi
đời là lập trình (đƣợc hiểu nơm na là qui trình xác định trình tự đúng
các lệnh máy để thực hiện cơng việc). Cho đến nay, lập trình là cơng
việc của con ngƣời (với sự trợ giúp ngày càng nhi ều của máy tính).


Với cơng nghệ phần cứng hiện nay, ta chỉ có thể chế tạo các máy tính
mà tập lệnh máy r ất sơ khai, mỗi lệnh máy ch ỉ có thể thực hiện 1 cơng
việc rất nhỏ và đơn giản ⇒ công việc ngoài đời thƣờng tƣơng đƣơng
với trình tự rất lớn (hàng triệu) các l ệnh máy ⇒ Lập trình bằng ngơn
ngữ máy r ất phức tạp, tốn nhiều thời gian, công sức, kết quả rất khó
bảo trì, phát tri ển.


Ta muốn có máy lu ận lý v ới tập lệnh (đƣợc đặc tả bởi ngơn ngữ lập
trình) cao cấp và gần gủi hơn với con ngƣời. Ta thƣờng hiện thực máy
này bằng 1 máy v ật lý + 1 ch ƣơng trình dịch. Có 2 loại chƣơng trình


dịch: trình biên d ịch (compiler) và trình thơng dịch (interpreter).


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>Trình biên d</b>

<b>ch (Compiler) </b>



Chƣơng trình biên d ịch nhận một

chƣơng trình nguồn

(thƣờng


đƣợc viết bằng ngơn ngữ cấp cao) và tạo ra một

chƣơng trình



đối

tƣợng

tƣơng

ứng về

chức năng nhƣng thƣờng

đƣợc viết



bằng

ngôn ngữ cấp thấp (thƣờng là ngơn ngữ máy).



Nếu có lỗi xảy ra trong lúc d ịch, trình biên d ịch sẽ báo l ỗi, cố


gắng tìm vị trí đúng k ế tiếp rồi tiếp tục dịch… Nh ờ vậy, mỗi lần


dịch 1 chƣơng trình, ta sẽ xác định đƣợc nhiều lỗi nhất có thể có.


Sau mỗi lần dịch, nếu khơng có ỗli, trình biên d ịch sẽ tạo ra file


chứa

chƣơng trình

đối tƣợng

(thí dụ file chƣơng trình khả thi


*.exe trên Windows).



Để chạy chƣơng trình, ngƣời dùng ch ỉ cần kích hoạt file khả thi


(ngƣời dùng không biết và không cần quan tâm đến file



chƣơng trình nguồn).



Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố



</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>Trình thơng d </b>

<b>ch (Interpreter) </b>



Chƣơng trình thơng dịch khơng tạo ra và lƣu giữ chƣơng trình


đối tƣợng.



Mỗi lần thơng dịch 1 chƣơng trình nguồn là 1 lần cố gắng chạy


chƣơng trình này theo cách th ức sau:



Dịch và chuyển sang mã th ực thi từng lệnh một rồi nhờ


máy chạy đoạn lệnh tƣơng ứng.



Nếu có lỗi thì báo l ỗi, nếu khơng có ỗli thì thơng dịch lệnh


kế tiếp... cho đến khi hết chƣơng trình.



Nhƣ vậy, mỗi lần thơng dịch chƣơng trình, trình thơng dịch chỉ


thơng dịch các l ệnh trong luồng thi hành cần thiết chứ không


thơng dịch hết mọi lệnh của chƣơng trình nguồn. Do đó, sau


khi thơng dịch thành cơng 1 chƣơng trình, ta khơng thể kết luận


rằng chƣơng trình này khơng có ỗli.



Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>So sánh trình biên </b>

<b>dch & trình thơng d </b>

<b>ch </b>



Mọi hoạt động xử lý trên m ọi mã ngu ồn của chƣơng trình (kiểm tra lỗi, dịch ra


các l ệnh đối tƣợng tƣơng đƣơng,...) đều đƣợc chƣơng trình biên d ịch thực hiện


để tạo đƣợc chƣơng trình đối tƣợng. Do đó sau khi dịch các file mã ngu ồn của


chƣơng trình, nếu khơng có ỗli, ta có thể kết luận chƣơng trình khơng thể có
lỗi thời điểm dịch (từ vựng, cú pháp). Quá trình biên d ịch và quá trình th ực thi
chƣơng trình là tách r ời nhau: biên d ịch 1 lần và chạy nhiều lần cho đến khi
cần cập nhật version mới của chƣơng trình.


Chƣơng trình thơng dịch sẽ thơng dịch từng lệnh theo luồng thi hành của


chƣơng trình bắt đầu từ điểm nhập của chƣơng trình, thơng dịch 1 lệnh gồm 2
hoạt động: biên d ịch lệnh đó và thực thi các l ệnh kết quả. Nếu 1 đoạn lệnh
cần đƣợc thực thi lặp lại thì trình thơng dịch sẽ phải thơng dịch lại tất cả đoạn
lệnh đó. Điều này sẽ làm cho việc chạy chƣơng trình trong chế độ thơng dịch
khơng hiệu quả.


Việc chạy chƣơng trình bằng cơ chế thơng dịch địi hỏi chƣơng trình thơng dịch
và chƣơng trình ứng dụng cần chạy phải tồn tại đồng thời trong bộ nhớ máy tính,
do đó có nguy cơ chạy khơng đƣợc các ch ƣơng trình lớn nếu tài nguyên của
máy khơng đủ cho cả 2 chƣơng trình thơng dịch và chƣơng trình ứng dụng.




Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>Các khái </b>

<b>nim c</b>

ơ

<b> b</b>

<b>n v</b>

<b> máy tính s</b>



Gọi ngơn ngữ máy v ật lý là N <sub>0</sub>. Trình biên d ịch ngơn ngữ N<sub>1</sub> sang
ngơn ngữ N<sub>0</sub> sẽ nhận đầu vào là chƣơng trình đƣợc viết bằng ngơn


ngữ N<sub>1</sub>, phân tích t ừng lệnh N<sub>1</sub> rồi chuyển thành danh sách các l ệnh
ngơn ngữ N<sub>0</sub> có chức năng tƣơng đƣơng. Để viết chƣơng trình dịch
từ ngơn ngữ N<sub>1</sub> sang N<sub>0</sub> dễ dàng, độ phức tạp của từng lệnh ngôn
ngữ N<sub>1</sub> không quá cao so v ới từng lệnh ngôn ngữ N<sub>0</sub>.


Sau khi có máy lu ận lý hi ểu đƣợc ngơn ngữ luận lý N <sub>1</sub>, ta có thể
định nghĩa và hiện thực máy lu ận lý N <sub>2</sub> theo cách trên và ti ếp tục
đến khi ta có 1 máy lu ận lý hi ểu đƣợc ngôn ngữ N<sub>m</sub> rất gần g

ũi

với
con ngƣời, dễ dàng miêu t ả giải thuật của bài toán c ần giải quyết...
Nhƣng qui trình trên ch ƣa có điểm dừng, với yêu c ầu ngày càng cao
và kiến thức ngày càng nhiều, ngƣời ta tiếp tục định nghĩa những


ngôn ngữ mới với tập lệnh ngày càng gần g

ũi

hơn với con ngƣời để
miêu t ả giải thuật càng dễ dàng, gọn nhẹ và trong sáng h ơn.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b>Các c</b>

<b>p </b>

độ

<b> ngơn ng </b>

<b> l</b>

<b>p trình </b>



Ngơn ngữ máy vật lý là lo ại ngôn ngữ thấp nhất mà ngƣời lập trình
bình thƣờng có thể dùng đƣợc. Các l ệnh và tham số của lệnh đƣợc
miêu t ả bởi các s ố binary (hay hexadecimal - sẽ đƣợc miêu t ả chi tiết
trong chƣơng 2). Đây là lo ại ngơn ngữ mà máy v ật lý có thể hiểu trực
tiếp, nhƣng con ngƣời thì gặp nhiều khó khăn trong việc viết và bảo trì
chƣơng trình ở cấp này.


Ngôn ngữ assembly rất gần với ngôn ngữ máy, nh ững lệnh cơ bản
nhất của ngôn ngữ assembly tƣơng ứng với lệnh máy nh ƣng đƣợc


biểu diễn dƣới dạng gợi nhớ. Ngoài ra, ngƣời ta tăng cƣờng thêm khái
niệm "lệnh macro" để nâng s ức mạnh miêu t ả giải thuật.


Ngôn ngữ cấp cao theo trƣờng phái l ập trình cấu trúc nh ƣ Pascal, C,...
Tập lệnh của ngôn ngữ này khá m ạnh và gần với tƣ duy của ngƣời
bình thƣờng.


Ngôn ngữ hƣớng đối tƣợng nhƣ C++, Visual Basic, Java, C#,... cải tiến
phƣơng pháp c ấu trúc ch ƣơng trình sao cho trong sáng, ổn định, dễ
phát tri ển và thay thế linh kiện.




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>1.2 L</b>

<b>ch s</b>

<b> phát tri</b>

<b>n máy tính s</b>



Máy tính xu ất hiện từ rất lâu theo nhu c ầu buôn bán và trao


đổi tiền tệ.



Bàn tính tay abacus là dạng sơ khai của máy tính.



5 đơn vị


1 đơn vị


Khoa Công nghệ Thông tin Môn: Tin học



Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b>Các th</b>

ế

<b> h</b>

<b> máy tính s</b>



Blaise Pascal (Pháp-1642)


Charles Babbage (Anh-1830) ENIAC (1946) <sub>18.000 bóng đèn </sub> Intel 8080 (1974) <sub>đƣợc xem nhƣ CPU đầu </sub>


1500 rờ le tiên đƣợc tích hợp trên 1


30 tấn chip


140 KW


IBM 360 (1965)


Von Neumann (1945)


<b>C</b>

ơ

PDP-1 (1961)


Đ

<b>èn </b>



80x86 (1978)


đ

<b>i</b>

<b>n t</b>



<b>Transistors </b>


<b>IC </b> <b><sub>? </sub></b>



(1642 - 1945)


Herman Hollerith lập IBM
(International Business
Machine) ở Mỷ - 1890


(1945 - 1955)


Bộ nhớ dây tr ễ, tĩnh
điện. Giấy, phiếu
đục lổ. Băng từ


(1955 - 1965) (1965 - 1980) (1980 - ????)


Bộ nhớ xuyến từ.
Băng từ, trống từ,
đĩa từ.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b>1.3 D</b>

<b> li</b>

<b>u & ch</b>

ƣơ

<b>ng trình </b>



Các l ệnh của chƣơng trình (code) sẽ truy xuất (đọc và/hoặc ghi) thơng


tin (dữ liệu).


Chƣơng trình giải quyết bài tốn nào đó có thể truy xuất nhiều dữ liệu
khác nhau v ới tính chất rất đa dạng. Để truy xuất 1 dữ liệu cụ thể, ta


cần 3 thơng tin về dữ liệu đó:


<b>tên nh</b>ậ<b>n d</b>ạ<b>ng </b>(identifier) xác định vị trí của dữ liệu.
<b>ki</b>ể<b>u d</b>ữ<b> li</b>ệ<b>u </b>(type) miêu t ả cấu trúc c ủa dữ liệu.


<b>t</b>ầ<b>m v</b>ự<b>c truy xu</b>ấ<b>t </b>(visibility) xác định các l ệnh đƣợc phép truy
xuất dữ liệu tƣơng ứng.


Chƣơng trình cổ điển = dữ liệu + giải thuật.


Chƣơng trình con (function, subroutine,...) là 1 đoạn code thực hiện
chức năng đƣợc dùng nhi ều lần ở nhiều vị trí trong chƣơng trình,


đƣợc nhận dạng thơng qua 1 tên g ọi. Chƣơng trình con cho phép cấu
trúc ch ƣơng trình, sử dụng lại code...


Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<b>C</b>

<b>u trúc 1 ch</b>

ƣơ

<b>ng trình c</b>

ổ đ

<b>i</b>

<b>n </b>


Chƣơng trình = cấu trúc d ữ liệu + giải thuật



module

global data



(package)


local data


entry 'start'



of module















local data


of function



Khoa Công nghệ Thông tin Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b>1.4 Qui trình t</b>

<b>ng qt gi</b>

<b>i quy</b>

ế

<b>t bài tốn b</b>

<b>ng máy tính s</b>



Dữ liệu cần xử lý b ằng


máy tính (ch ữ số, hình


ảnh, âm thanh,...)


CDROM, đĩa, băng,...


Kết quả có đƣợc sau
khi xử lý b ằng máy



tính (chữ số, hình
ảnh, âm thanh,...)


Mã hóa dữ liệu


thành dạng
chuỗi bit


Lƣu giữ dữ
liệu số để
dùng l ại


Xử lý d ữ liệu
dạng chuỗi bit


Giải mã chu ỗi
bit ra dạng
ngƣời, thiết bị
ngồi hiểu đƣợc


Máy tính s ố


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<b>Mơ hình máy tính s</b>

<b> Von Neumann </b>



chứa code và data thực thi từng lệnh giao tiếp với bên ngoài



đang thực thi của chƣơng trình (thƣờng là ngƣời) để


nhập/xuất tin


<b>B</b>

<b> nh</b>

Đơ

<b>n v</b>

<b>x</b>

<b>lý </b>

<b>Các thi</b>

ế

<b>t b</b>



<b>(Memory) </b>

<b>(CPU) </b>

<b>vào ra (I/O) </b>



<b>Bus giao ti</b>ế<b>p </b>


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài toán b ằng máy tính s ố


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

<b>Hình d</b>

<b>ng v</b>

<b>t lý c </b>

<b>a vài máy tính </b>



màn hình thùng máy


loa


bàn phím chuột


Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b>1.5 Ph</b>

ƣơ

<b>ng pháp phân tích t</b>

<b>-trên-xu</b>

<b>ng </b>



Trong quá kh ứ, phƣơng pháp th ƣờng sử dụng để phân tích bài toán là
phƣơng pháp t ừ-trên-xu ống (top-down analysis).



Nội dung của phƣơng pháp này là xét xem, mu ốn giải quyết vấn đề nào
đó thì cần phải làm những công việc nhỏ hơn nào. Mỗi công việc nhỏ hơn
tìm đƣợc lại đƣợc phân thành nh ững cơng việc nhỏ hơn nữa, cứ nhƣ vậy
cho đến khi những công việc phải làm là những công việc thật đơn giản,
có thể thực hiện dễ dàng.


Thí dụ việc học lấy bằng kỷ sƣ CNTT khoa CNTT ĐHBK TP.HCM có thể
bao gồm 9 cơng việc nhỏ hơn là học từng học kỳ từ 1 tới 9, học học kỳ i là
học n môn học của học kỳ đó, học 1 mơn học là học m chƣơng của mơn
đó,...


Hình vẽ của slide kế cho thấy trực quan của việc phân tích top-down.


Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<b>Ph</b>

ƣơ

<b>ng pháp phân tích t</b>

<b>-trên-xu</b>

<b>ng </b>



<b>chia thành nhi </b>ề<b>u công </b>
<b>vi</b>ệ<b>c nh</b>ỏ<b> h</b>ơ<b>n, </b>đơ<b>n gi</b>ả<b>n </b>để
<b>gi</b>ả<b>i quy</b>ế<b>t h</b>ơ<b>n. </b>


Công việc cần
giải quyết (A)


Công việc Công việc


<b>... </b>




Công việc


A<sub>1 </sub> A<sub>2 </sub> A<sub>n </sub>


Công việc Công việc Công việc Công việc Công việc Công việc


A


11

A


12

A


1n

A


n1

A


n2

A


nn


Các công vi ệc đủ nhỏ
để đƣợc miêu t ả bằng


<b>... </b>

<b>... </b>

<b>... </b>

<b>... </b>



1 lệnh hay 1 lời gọi
hàm/thủ tục đã có.


Khoa Cơng nghệ Thông tin Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố Mơn: Tin học



</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b>Ph</b>

ƣơ

<b>ng pháp phân tích t</b>

<b>-trên-xu</b>

<b>ng </b>


Công việc cần giải quyết


đối tƣợng phức hợp A


Đối tƣợng Đối tƣợng


<b>... </b>



Đối tƣợng


A<sub>1 </sub> A<sub>2 </sub> A<sub>n </sub>


Đối tƣợng Đối tƣợng Đối tƣợng Đối tƣợng Đối tƣợng Đối tƣợng


A


11

A


12

A


1n

A


n1

A


n2

A


nn

<b>...</b>

<b>...</b>

<b>...</b>

<b>... </b>



Khoa Công nghệ Thông tin Môn: Tin học



Chƣơng 1: Phƣơng pháp gi ải quyết bài tốn b ằng máy tính s ố


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

<b>MÔN TIN H </b>

<b>C </b>



<i><b>Ch</b></i>

ƣơ

<i><b>ng 2 </b></i>



<b>TH</b>

<b> HI</b>

<b>N D</b>

<b> LI</b>

<b>U </b>



<b>TRONG MÁY TÍNH S </b>



2.1 Cơ bản về việc lƣu trữ và xử lý tin trong máy tính



2.2 Cơ bản về hệ thống số



2.3 Các ph ƣơng pháp chuy ển miêu t ả số


2.4 Biểu diễn dữ liệu trong máy tính



2.5 Hệ thống file



2.6 Quản lý h ệ thống file



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

<b>2.1 C</b>

ơ

<b> b</b>

<b>n v</b>

<b> vi</b>

<b>c l</b>

ƣ

<b>u tr</b>

<b> và x </b>

<b> lý tin trong máy tính </b>



Phần tử nhớ nhỏ nhất của máy tính s ố chỉ có thể chứa 2 giá tr ị: 0 và 1
(ta gọi là bit).


Ta kết hợp nhiều phần tử nhớ để có thể miêu t ả đại lƣợng lớn hơn. Thí


dụ ta dùng 8 bit để miêu t ả 28 = 256 giá tr ị khác nhau. Dãy 8 bit nh ớ
đƣợc gọi là byte, đây là 1 ô nhớ trong bộ nhớ của máy tính.


Bộ nhớ trong của máy tính đƣợc dùng để chứa dữ liệu và code của
chƣơng trình đang thực thi. Nó là 1 dãy đồng nhất các ô nh ớ 8 bit, mỗi ô
nhớ đƣợc truy xuất độc lập thông qua địa chỉ của nó (tên nh ận dạng).
Thƣờng ta dùng ch ỉ số từ 0 - n để miêu t ả địa chỉ của từng ô nhớ.


Mặc dù ngoài đời ta đã quen dùng h ệ thống số thập phân, nh ƣng về
phần cứng bên trong máy tính, máy ch ỉ có thể chứa và xử lý tr ực tiếp
dữ liệu ở dạng nhị phân. Do đó trong chƣơng này, ta sẽ giới thiệu các
khái ni ệm nền tảng về hệ thống số và cách miêu t ả dữ liệu trong máy
tính.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

<b>2.2 C</b>

ơ

<b> b</b>

<b>n v</b>

<b> h</b>

<b> th</b>

<b>ng s</b>



Hệ thống số (number system) là công cụ để biểu thị đại lƣợng. Một hệ
thống số gồm 3 thành phần chính:


<b>c</b>ơ<b> s</b>ố: số lƣợng ký s ố (ký hi ệu để nhận dạng các s ố cơ bản).


<b>qui lu</b>ậ<b>t k</b>ế<b>t h</b>ợ<b>p các ký s</b>ố để miêu t ả 1 đại lƣợng nào đó.


<b>các phép tính </b>ơ<b>c b</b>ả<b>n </b>trên các s ố.


Trong 3 thành phần trên, ch ỉ có thành phần 1 là khác nhau gi ữa các h ệ
thống số, cịn 2 thành phần 2 và 3 thì giống nhau giữa các h ệ



thống số.


Thí dụ: - hệ thống số thập phân ( <b>h</b>ệ <b>th</b>ậ<b>p phân</b> ) dùng 10 ký s ố:


0,1,2,3,4,5,6,7,8,9.


- <b>h</b>ệ<b> nh</b>ị<b> phân </b>dùng 2 ký s ố: 0,1.


- hệ bát phân dùng 8 ký s ố: 0,1,2,3,4,5,6,7.


- <b>h</b>ệ<b> th</b>ậ<b>p l</b>ụ<b>c phân </b>dùng 16 ký s ố: 0 đến 9,A,B,C,D,E,F.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

<b>C</b>

ơ

<b> b</b>

<b>n v</b>

<b> h</b>

<b> th</b>

<b>ng s</b>

<b> - Qui lu</b>

<b>t miêu </b>

<b>t l</b>

ƣợ

<b>ng </b>


Biểu diễn của lƣợng Q trong hệ thống số B (B>1) là:


d<sub>n</sub>d<sub>n-1</sub>...d<sub>1</sub>d<sub>0</sub>d<sub>-1</sub>...d<sub>-m</sub> 


Q = d<sub>n</sub>*Bn + d<sub>n-1</sub>*Bn-1 +...+d<sub>0</sub>*B0 +d<sub>-1</sub>*B-1 +...+d<sub></sub>


-m*B


-m


trong đó mỗi d<sub>i</sub> là 1 ký s ố trong hệ thống B.


Trong thực tế lập trình bằng ngơn ngữ cấp cao, ta thƣờng dùng h ệ
thống số thập phân để miêu t ả dữ liệu số của chƣơng trình (vì đã
quen). Chỉ trong 1 số trƣờng hợp đặc biệt, ta mới dùng h ệ thống số


thập lục phân (d ạng ngắn của nhị phân) để miêu t ả 1 vài giá tr ị


nguyên, trong tr ƣờng hợp này, qui luật biểu diễn của lƣợng nguyên Q
trong hệ thống số B sẽ đơn giản là:


d<sub>n</sub>d<sub>n-1</sub>...d<sub>1</sub>d<sub>0</sub> 


Q = d<sub>n</sub>*Bn + d<sub>n-1</sub>*Bn-1 +...+d<sub>1</sub>*B1+d<sub>0</sub>*B0
trong đó mỗi d<sub>i</sub> là 1 ký s ố trong hệ thống B.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

<b>C</b>

ơ

<b> b</b>

<b>n v</b>

<b> h</b>

<b> th</b>

<b>ng s</b>

<b> - Vài thí d </b>


Thí dụ về biểu diễn các l ƣợng trong các h ệ thống số:


lƣợng "mƣời bảy" đƣợc miêu t ả là 17 trong hệ thập phân vì:
17 = 1*101+7*100


lƣợng "mƣời bảy" đƣợc miêu t ả là 11 trong hệ thập lục phân vì:
11 = 1*161+1*160


lƣợng "mƣời bảy" đƣợc miêu t ả là 10001 trong hệ nhị phân vì:
10001 = 1*24+0*23+0*22+0*21+1*20


Trong mơi trƣờng sử dụng đồng thời nhiều hệ thống số, để tránh nh
ằm lẫn trong các bi ểu diễn của các l ƣợng khác nhau, ta s ẽ thêm ký t
ự nhận dạng hệ thống số đƣợc dùng trong bi ểu diễn liên quan. Thí d ụ
ta viết:



17<sub>D</sub> để xác định sự biểu diễn trong hệ thống số thập phân.
11<sub>H</sub> (hệ thống số thập lục phân.)


10001<sub>B</sub> (hệ thống số nhị phân.)


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

<b>2.3 Các ph</b>

ƣơ

<b>ng pháp chuy</b>

<b>n miêu </b>

<b>t s</b>



Để chuyển 1 miêu t ả số từ hệ thống số này sang hệ thống số


khác, ta c

ần dùng 1 ph ƣơng pháp chuy ển thích hợp. Có 4


phƣơng pháp sau t ƣơng ứng với từng yêu c ầu chuyển tƣơng


ứng:



chuyển từ hệ thống số khác v ề thập phân.



chuyển từ nhị phân v ề thập lục phân (hay bát phân).


3. chuyển từ thập lục phân (hay bát phân) v

ề nhị phân.


4. chuyển từ hệ thống số thập phân v ề hệ thống số khác.



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

<b>Chuy</b>

<b>n t</b>

<b> h</b>

<b> th</b>

<b>ng khác v</b>

<b> th</b>

<b>p phân </b>



Để chuyển 1 miêu t ả số từ hệ thống số khác (nh ị phân, th ập


lục phân hay bát phân) sang h ệ thập phân, ta dùng cơng th ức


tính Q.



Thí dụ:




1A2

<sub>H</sub>

= 1*16

2

+10*16

1

+2*16

0

= 256+160+2 = 418

<sub>D</sub>

642

<sub>O</sub>

= 6*8

2

+4*8

1

+2*8

0

= 384+32+2 = 418

<sub>D</sub>


110100010

<sub>B</sub>

= 2

8

+ 2

7

+2

5

+2

1

= 256+128+32+2 =418

<sub>D</sub>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

<b>Chuy</b>

<b>n t</b>

<b> h</b>

<b> th</b>

<b>ng nh</b>

<b> phân v </b>

<b> th</b>

<b>p l</b>

<b>c phân </b>



Lƣu ý r ằng có 1 mối quan hệ mật thiết giữa hệ nhị phân và th ập


lục phân (hay bát phân), đó là 4 ký số nhị phân t ƣơng đƣơng với


1 ký s ố thập lục phân (hay 3 ký s ố nhị phân t ƣơng đƣơng với 1



ký s ố bát phân) theo b ảng tra sau:



<b>Dec </b> <b>Hex </b> <b>Oct </b> <b>Binary </b>


<b>0 </b> <b>0 </b> <b>00 </b> <b>0000 </b>


<b>1 </b> <b>1 </b> <b>01 </b> <b>0001 </b>


<b>2 </b> <b>2 </b> <b>02 </b> <b>0010 </b>


<b>3 </b> <b>3 </b> <b>03 </b> <b>0011 </b>


<b>4 </b> <b>4 </b> <b>04 </b> <b>0100 </b>


<b>5 </b> <b>5 </b> <b>05 </b> <b>0101 </b>



<b>6 </b> <b>6 </b> <b>06 </b> <b>0110 </b>


<b>7 </b> <b>7 </b> <b>07 </b> <b>0111 </b>


<b>Dec </b> <b>Hex </b> <b>Oct </b> <b>Binary </b>


<b>8 </b> <b>8 </b> <b>10 </b> <b>1000 </b>


<b>9 </b> <b>9 </b> <b>11 </b> <b>1001 </b>


<b>10 </b> <b>A </b> <b>12 </b> <b>1010 </b>


<b>11 </b> <b>B </b> <b>13 </b> <b>1011 </b>


<b>12 </b> <b>C </b> <b>14 </b> <b>1100 </b>


<b>13 </b> <b>D </b> <b>15 </b> <b>1101 </b>


<b>14 </b> <b>E </b> <b>16 </b> <b>1110 </b>


<b>15 </b> <b>F </b> <b>17 </b> <b>1111 </b>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

<b>Chuy</b>

<b>n t</b>

<b> h</b>

<b> th</b>

<b>ng nh</b>

<b> phân v </b>

<b> th</b>

<b>p l</b>

<b>c phân </b>



Để đổi 1 số nhị phân v ề thập lục phân (hay bát phân), ta đi từ


phải sang trái và chia thành t ừng nhóm 4 ký s ố nhị phân (hay 3


ký s ố nhị phân), sau đó đổi từng nhóm 4 ký s ố (hay 3 ký s ố)


thành 1 ký s ố thập lục phân t ƣơng đƣơng (hay 1 ký s ố bát



phân tƣơng đƣơng).



Thí dụ:



110100010

<sub>B</sub>

= 0001.1010.0010 = 1A2

<sub>H</sub>

110100010

<sub>B</sub>

= 110.100.010 = 642

<sub>O</sub>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<b>Chuy</b>

<b>n t</b>

<b> h</b>

<b> th</b>

<b>ng th</b>

<b>p l</b>

<b>c phân v </b>

<b> nh</b>

<b> phân </b>



Để đổi 1 số thập lục phân (hay bát phân)


v ký s

ố thập lục phân (hay bát phân)


thành t phân (hay 3 ký s ố nhị phân).



Thí dụ:



nhị phân, ta đổi từng


ừng nhóm 4 ký s ố nhị



1A2

<sub>H</sub>

= 0001.1010.0010 = 110100010

<sub>B</sub>


642

<sub>O</sub>

= 110.100.010 = 110100010

<sub>B</sub>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

<b>Chuy</b>

<b>n t</b>

<b> h</b>

<b> th</b>

<b>ng th</b>

<b>p phân v </b>

<b> h</b>

<b> th</b>

<b>ng khác </b>



Để đổi 1 số thập phân v ề hệ thống số khác, ta hãy chia s ố cần


đổi cho cơ số đích để có đƣợc thƣơng và dƣ số, ta lặp lại hoạt



động chia thƣơng số cho cơ số đích để có đƣợc thƣơng và dƣ


số mới, cứ thế lặp mãi cho đến khi thƣơng số = 0 thì dừng lại.


Ghép các d

ƣ số theo chiều ngƣợc chiều lặp để tạo ra kết quả


(đó là sự miêu t ả số tƣơng đƣơng nhƣng ở hệ thống số khác).


Thí dụ chuyển số 418 về miêu t ả tƣơng ứng trong hệ thập lục:



418

<sub>D </sub>

16



2

26

16



10

1

16



1

0



Kết quả là 418

<sub>D</sub>

= 1A2

<sub>H </sub>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

<b>Chuy</b>

<b>n t</b>

<b> h</b>

<b> th</b>

<b>ng th</b>

<b>p l</b>

<b>c phân v </b>

<b> bát phân </b>



Để đổi 1 số thập lục phân v ề bát phân (hay ng ƣợc lại), ta nên


chuyển tuần tự từ thập lục phân v ề nhị phân, r ồi từ nhị phân v ề


bát phân.



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

<b>C</b>

ơ

<b> b</b>

<b>n v</b>

<b> h</b>

<b> th</b>

<b>ng s</b>

<b> - Các phép tính </b>


Các phép tính c ơ bản trong 1 hệ thống số là:


1. phép cộng (+).



2. phép trừ (-).


3. phép chia (/).


4. phép nhân (*).


5. phép dịch trái n ký s ố (<< n).
6. phép dịch phải n ký s ố (>> n).


Ngoài ra do đặc điểm của hệ nhị phân, h ệ này cịn cung cấp 1 số phép
tính sau (các phép tính lu ận lý):


1. phép OR bit (|).


2. phép AND bit (&).


3. phép XOR bit (^).


4. ....


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>

<b>Thí d</b>

<b> v</b>

<b> phép c</b>

<b>ng, tr</b>

<b>, nhân </b>



Thí dụ về các phép tính c ơ bản (các giá tr ị đều đƣợc biểu diễn


bằng hệ nhị phân:



<b>0 1 1 0 </b> <b>1 0 0 1 </b> <b>1 0 0 1 </b>
<b>+ 0 0 1 1 </b> <b>- 0 0 1 1 </b> <b>* 0 1 0 1 </b>


<b>1 0 0 1 </b> <b>0 1 1 0 </b> <b>1 0 0 1 </b>


<b>0 0 0 0 </b>


<b>1 0 0 1 </b>


<b>1 0 1 1 0 1 </b>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>

<b>Thí d</b>

<b> v</b>

<b> phép chia </b>



Thí dụ về các phép tính c ơ bản (các giá tr ị đều đƣợc biểu diễn


bằng hệ nhị phân):



số bị chia


<b>1 0 1 1 </b> <b>1 0 </b> số chia


thƣơng số


<b>- 1 0 </b> <b>1 0 1 </b>
<b>1 </b>


<b>0 0 </b>
<b>1 1 </b>
<b>1 0 </b>


<b>0 1 </b> dƣ số



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>

<b>Thí d</b>

<b> v</b>

<b> phép d</b>

<b>ch ký s </b>



Thí dụ về các phép tính d ịch ký s ố (các giá tr ị đều đƣợc biểu


diễn bằng hệ nhị phân):



<b>0 0 0 0 1 1 0 1 </b>bị dịch trái 2 bit thành<b> 0 0 0 0 1 1 0 1 0 </b>


<b>0 </b>(tƣơng dƣơng với nhân 2 2)


<b>0 0 </b>
<b>0 0 </b>


<b>1 </b>bị dịch phải 2 bit thành


<b>0 0 0 0 1 1 0 </b> <b>0 0 0 0 1 1 <sub>0 1 </sub></b>


(tƣơng dƣơng với chia 22)


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>

<b>Các phép tính </b>

<b>ca </b>

đạ

<b>i s</b>

<b> Boole </b>



Đại số Boole nghiên c ứu các phép toán th ực hiện trên các bi ến chỉ
có 2 giá tr ị 0 và 1, tƣơng ứng với hai thái c ực luận lý "sai" và " đúng"
(hay "khơng" và "có") của đời thƣờng. Các phép toán này g ồm:


x y <b>not </b>x x <b>and</b> y x <b>nand</b> y x <b>or</b> y x <b>nor</b> y x <b>xor</b> y



0 0 1 0 1 0 1 0


0 1 0 1 1 0 1


1 0 0 0 1 1 0 1


1 1 1 0 1 0 0


Biểu thức Boole là 1 biểu thức toán hoc c ấu thành từ các phép toán
Boole trên các toán h ạng là các bi ến chỉ chứa 2 trị 0 và 1.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>

<b>Hàm Boole </b>



Một hàm Boole theo n biến boole (hàm n ngôi) là 1 biểu thức boole


cấu thành từ các phép toán Boole trên các bi ến boole.



Thay vì miêu t ả hàm boole bằng biểu thức boole, ta có thể miêu t ả


hàm boole bằng bảng thực trị. Bảng thực trị của hàm boole n biến


có 2

n

hàng, mỗi hàng miêu t ả 1 tổ hợp trị cụ thể của các bi ến và


giá trị cụ thể của hàm tƣơng ứng với tổ hợp trị này (xem slide ngay


trƣớc).



Nhƣ vậy 1 hàm boole n biến đƣợc miêu t ả nhƣ 1 chuỗi 2

n

bit


chính xác

<b>2</b>

<b>2</b> <i><b>n</b></i>

hàm boole n ngôi khác nhau. C ụ thể có:



<b>2</b>

<b>21 </b>

<b> 4 </b>

<sub>hàm boole 1 ngôi khac nhau </sub>



<b>2</b>

<b>22 </b>

<b> 2</b>

<b>4 </b>

<b> 16 </b>

hàm boole 2 ngôi khac nhau




<b>2</b>

<b>23 </b>

<b> 2</b>

<b>8 </b>

<b> 256 </b>

hàm boole 3 ngôi khac nhau



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39>

<b>Các</b>

đơ

<b>n v</b>

<b> nh</b>

<b> th</b>

ƣờ

<b>ng dùng </b>



Máy tính dùng tr ực tiếp hệ nhị phân, các

đơn vị biểu diễn thông tin


thƣờng dùng là:



<b>bit</b>

<b>:</b>

miêu t

2 giá tr

khác nhau (

đúng/sai, 0/1,..)



<b>byte</b>

<b>:</b>

8bit, có thể

miêu t

ả đƣợc 2

8

= 256 giá tr

khác nhau.



<b>word</b>

<b>:</b>

2 byte, có thể

miêu t

ả đƣợc 2

16

= 65536 giá tr


khác

nhau.



<b>double word</b>

: 4 byte, có thể

miêu t

ả đƣợc 2

32


=

4.294.967.296 giá tr ị khác nhau.



<b>KB (kilo byte) </b>

= 2

10

= 1024 byte.



<b>MB (mega byte) </b>

= 2

20

<b> </b>

= 1024KB = 1.048.576 byte.



<b>GB (giga byte) </b>

= 2

30

= 1024MB = 1.073.741.824 byte.



<b>TB (tetra byte) </b>

= 2

40

= 1024GB = 1.099.511.627.776 byte.



Thí dụ, RAM của máy b ạn là 512MB, đĩa cứng là 300GB.




</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40></div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>

<b>2.4 Bi</b>

<b>u di</b>

<b>n s</b>

<b> nguyên trong Visual Basic </b>



Tùy ngơn ngữ lập trình mà cách bi ểu diễn số trong máy có nh ững khác
biệt nhất định. Riêng VB có nhi ều phƣơng pháp bi ểu diễn số khác nhau,
trong đó 2 cách th ƣờng dùng là s ố nguyên và s ố thực.


Máy dùng 1 word (2 byte) để chứa dữ liệu nguyên (Integer) theo qui định
cụ thể ở slide sau.


Vì mỗi ơ nhớ máy tính ch ỉ chứa đƣợc 1 byte, do đó ta phải dùng nhi ều ơ
liên ti ếp (2 hay 4) để chứa số nguyên. Có 2 cách ch ứa các byte c ủa số
nguyên (hay d ữ liệu khác) vào các ô nh ớ: BE & LE.


Cách BE (Big Endian) ch ứa byte trọng số cao nhất vào ô nhớ địa chỉ thấp
trƣớc, sau đó lần lƣợt đến các byte cịn l ại. Cách LE (Little Endian) ch ứa
byte trong số nhỏ nhất vào ơ nhớ địa chỉ thấp trƣớc, sau đó lần lƣợt đến
các byte còn l ại.


VB sử dụng cách LE để chứa số nguyên vào b ộ nhớ (Integer và Long).


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42>

<b>Bi</b>

<b>u di</b>

<b>n s</b>

<b> nguyên trong Visual Basic </b>



Phần dƣơng có 32768 số


từ số 0 tới 32767, đƣợc


miêu t ả theo công thức Q.



Phần âm có 32768 s ố từ -



32768 tới -1, đƣợc miêu t ả


ở dạng số bù 2 nh ƣ sau:



Số bù 1

của 1 số

n bit là n


bit mà mỗi bit là ngƣợc với


bit gốc (0

1 và 1

0)



Số bù 2

của 1 số

n bit là số


bù 1 c ủa số đó rồi tăng lên


1 đơn vị.



<b>S</b>

<b> bi</b>

<b>u di</b>

<b>n </b>

<b>giá tr</b>



<b>00000000 00000000 </b>

<b>0 </b>



<b>00000000 00000001 </b>

<b>1 </b>



<b>.... </b>



<b>01111111 11111111 </b>

<b>32767 </b>


<b>10000000 00000000 </b>

<b>-32768 </b>


<b>10000000 00000001 </b>

<b>-32767 </b>


<b>.... </b>



<b>11111111 11111111 </b>

<b>-1 </b>



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>

<b>Bi</b>

<b>u di</b>

<b>n s</b>

<b> nguyên trong VB - Thí d</b>




Số

15

đƣợc miêu t ả dƣới dạng nhị phân 16 bit nh ƣ



sau:

0000 0000 0000 1111



Do đó, nếu dùng ki ểu Integer để lƣu số 15, ta dùng 16 bit nh ƣ


trên hay viết ngắn gọn là 000F

<sub>H</sub>

. Nếu lƣu vào bộ nhớ dạng LE thì


ơ nhớ có địa chỉ thấp (i) chứa byte 0F

<sub>H</sub>

, và ô nhớ kế (i+1) chứa


byte 00. Nếu dùng ki ểu Long để lƣu số 15, ta dùng 4 byte



0000000F

<sub>H</sub>

và lƣu vào bộ nhớ dạng LE tốn 4 ô nhớ với giá tr ị lần


lƣợt từ địa chỉ thấp đến cao là 0F

<sub>H</sub>

, 00, 00, 00.



Số bù 1 c ủa 15 là 1111 1111 1111 0000, số bù 2 c ủa 15 là


1111 1111 1111 0001



Nhƣ vậy -15 đƣợc lƣu vào máy d ạng Integer là 2 byte có giá tr ị


FFF1

<sub>H</sub>

. Nếu lƣu vào ơ nhớ dạng LE thì ơ nhớ có địa chỉ thấp (i)


chứa byte F1

<sub>H</sub>

, và ô nhớ kế (i+1) chứa byte FF

<sub>H</sub>

.



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44>

<b>Bi</b>

<b>u di</b>

<b>n s</b>

<b> th</b>

<b>c trong Visual Basic </b>



Để miêu t ả đƣợc các giá tr ị nguyên n ằm ngoài phạm vi từ -32768 đến
32767, VB cung cấp kiểu 'Long', kiểu này dùng 4 byte để miêu t ả 1 giá tr ị
nguyên v ới cùng nguyên t ắc nhƣ kiểu Integer. Kết quả là kiểu Long


miêu tả các s ố nguyên trong ph ạm vi từ -2 tỉ đến 2 tỉ.


Trong khoa học, ta có thể miêu t ả số thực theo dạng <b>m*Be</b>, m gọi là định


trị, B là cơ số và e là số mũ. Nhƣ vậy 1 số thực cụ thể có thể đƣợc miêu tả
bởi rất nhiều miêu t ả khác nhau, trong đó miêu t ả có 0.1m<1 đƣợc gọi
là miêu t ả chính tắc của số thực. Đây là miêu t ả mà máy tính s ẽ dùng.


<b>± m </b>

<b> B </b>

<b>e </b>

<b>m (mantissa) quy<sub>B (base) </sub></b> ế<b>t </b>đị<b>nh </b>độ<b> chính xác </b>


<b>e (exponent) quy</b>ế<b>t </b>đị<b>nh </b>độ<b> l</b>ớ<b>n/nh</b>ỏ


<b>9135.512  10</b>

<b>-1 </b> <b><sub>913.551 </sub></b>

<b>0.9135512 </b>

<b> 10</b>

<b>3 </b>


<b>91355.12  10</b>

<b>-2 </b> <b>2 </b>

<b>9.135512  10</b>

<b>2 </b>




Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45>

<b>Bi</b>

<b>u di</b>

<b>n s</b>

<b> th</b>

<b>c trong Visual Basic </b>



Trƣớc khi lƣu vào máy tính, s ố thực đƣợc đổi về dạng miêu t ả nhị


phân d ƣới dạng

1.m*2e (m là chuỗi bit nhị phân miêu t ả phần lẻ).


VB lƣu số thực theo chuẩn IEEE 754, dùng 1 trong 2 d ạng lƣu:



Chính xác đơn (Single)

: VB dùng 4 byte - 4 ô nhớ

(32 bit)

để

lƣu



số thực theo dạng thức cụ thể sau:


trong đó bit S = 1 (âm), =0 (d ƣơng).



M = m & E = 127 + e

<b>S</b> <b>E</b> <b>M </b>


<b>1</b> <b>8</b> <b>23 </b>



Chính xác kép (Double)

: VB dùng 8 byte - 8 ô nhớ

(64 bit)



để

lƣu số thực theo dạng thức cụ thể sau:



trong đó bit S = 1 (âm), =0 (d ƣơng); M = m & E = 1023 + e



<b>S</b> <b>E</b> <b>M </b>


<b>1</b> <b>11</b> <b>52 </b>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46>

<b>Bi</b>

<b>u di</b>

<b>n s</b>

<b> th</b>

<b>c trong VB - Thí d</b>



Thí dụ giá tr ị

-1.5

đƣợc miêu t ả dạng nhị phân là

-1.1*2

0

.



Do đó nếu dùng ki ểu Single chứa số thực -1.5, ta tốn 4 byte (32


bit) với các thành ph ần S = 1, M = 10...0 (22 bit 0), E = 127. Kết


quả, giá tr ị của 4 byte miêu t ả số -1.5 nhƣ sau :

BF C0 00 00



Tƣơng tự, nếu dùng ki ểu Double chứa số thực -1.5, ta tốn 8


byte (64 bit) với các thành ph ần S = 1, M = 10...0 (51 bit 0), E =


1023. Kết quả, giá tr ị của 8 byte miêu t ả số -1.5 nhƣ sau :

BF


F8

00 00 00 00 00 00

.



VB dùng cách ch ứa LE, do đó giá tr ị -1.5 đƣợc lƣu vào bộ nhớ


theo kiểu Single sẽ chiếm 4 byte theo giá tr ị lần lƣợt từ địa chỉ


thấp đến cao là 00 00 C0 BF. Tƣơng tự nếu miêu t ả -1.5 vào bộ


nhớ theo kiểu Double thì sẽ cần 8 ô nhớ với giá tr ị lần lƣợt từ



địa chỉ thấp đến cao là 00 00 00 00 00 00 F8 BF.



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47>

<b>Bi</b>

<b>u di</b>

<b>n chu</b>

<b>i ký t </b>

<b> trong Visual Basic </b>



Chuỗi ký t ự là danh sách nhi ều ký t ự, mỗi ký t ự đƣợc miêu t ả trong
máy bởi n bit nhớ:


mã ASCII dùng 7 bit (dùng luôn 1 byte nh ƣng bỏ bit 8) để miêu t
ả 1 ký t ự ⇒ tập ký t ự mà mã ASCII miêu t ả đƣợc là 128.


mã ISO 8859-1 dùng 8 bit (1 byte) để miêu t ả 1 ký t ự ⇒ tập ký t
ự mà mã ISO 8859-1 miêu t ả đƣợc là 256.


mã Unicode trên Windows dùng 16 bit (2 byte) để miêu t ả 1 ký t ự


⇒ tập ký t ự mà mã Unicode trên Windows miêu t ả đƣợc là
65536.


...


Hiện có nhiều loại mã ti ếng Việt khác nhau, đa số dùng mã ISO 8859-1
rồi qui định lại cách hi ển thị 1 số ký t ự thành ký t ự Việt. Riêng Unicode
là bộ mã th ống nhất toàn cầu, trong đó cóđủ các ký t ự Việt.


Khoa Cơng nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(48)</span><div class='page_container' data-page=48>

<b>B</b>

<b>ng mã ASCII 7 bit </b>




Mã ASCII dùng các giá tr ị (mã) t ừ 0 - 127 để miêu t ả các ký t ự:


mã t ừ 0 - 31 là các mã điều khiển nhƣ CR=13 (Carriage Return),
LF=10 (Line Feed), ESC=27 (Escape)...


mã 32 miêu t ả ký t ự trống, 33 miêu t ả ký t ự !,... theo bảng sau:


<b>" # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9: ; < = > ? </b>
<b>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ </b>
<b>` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ </b>


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(49)</span><div class='page_container' data-page=49>

<b>B</b>

<b>ng mã ISO8859 -1 (8 bit) </b>



Mã ISO 8859-1 dùng các giá tr ị (mã) t ừ 0 - 255 để miêu t ả các ký t ự
(128 mã ký t ự đầu qui định giống nhƣ mã ASCII):


mã t ừ 0 - 31 là các mã điều khiển nhƣ CR=13 (Carriage Return),
LF=10 (Line Feed), ESC=27 (Escape)...


mã 32 miêu t ả ký t ự trống, 33 miêu t ả ký t ự !,... theo bảng sau:


<b>" # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9: ; < = > ? </b>
<b>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ </b>
<b>` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ </b>
<b>€ ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ţ </b> <b>Ř ř Ŗ ŗ • Ŕ ŕ ˜™ š › œ ţ </b>


<b>Â Ê Ô Ơ Ư Đ ă â ê ô ơ đ à ả Ã á ạ ằ ẳ ẵ ắ </b>



<b> ặ ầ ẩ ẫ Ê Ë Ì Í Ỵ Ï Ð Đ Ị Ĩ Ơ Õ Ư × Ø Ù Ú Û Ü Ý ị ò </b>
<b> ỏ õ ó ọ ồ ổ ỗ è é ê ë ì í ỵ ï ð đ ị ó ơ õ ư ÷ ø ù ú û ỹ ý ỵ </b>


Khoa Cụng ngh Thụng tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(50)</span><div class='page_container' data-page=50>

<b>B</b>

<b>ng mã ti </b>

ế

<b>ng Vi</b>

<b>t </b>

Đ

<b>HBK 1 byte </b>



Mã ĐHBK 1 byte có đƣợc bằng cách hi ệu chỉnh bảng mã ISO 8859-1:
mã t ừ 0 - 31 là các mã điều khiển nhƣ CR=13 (Carriage Return),
LF=10 (Line Feed), ESC=27 (Escape)...


mã 32 miêu t ả ký t ự trống, 33 miêu t ả ký t ự !,... theo bảng sau:


<b>! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9: ; < = > ? </b>


<b>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ </b>
<b>_ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ </b>


<b>Á ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ</b> Ị <b>Ř ř Ŗ ŗ • Ŕ ŕ ˜ ™ š › œ</b> Ặ <b>Ÿ </b>


<b>¡ Â Ê Ô Ơ Ư Đ ă â ê ô ơ đ à ả Ã á ạ ằ ẳ ẵ ắ </b>


<b> ặ ầ ẩ ẫ ấ ậ Ì Í Ỵ Ï Ð Đ Ị Ĩ Ơ Õ ệ ì ỉ ĩ í ị ò </b>
<b> ỏ õ ó ọ ồ ổ ỗ ố é ê ë ì í ỵ ï ð đ ị ó ơ õ ư ÷ ø ù ú û ü ý ỵ </b>


Khoa Cụng ngh Thụng tin Chng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(51)</span><div class='page_container' data-page=51>

<b>M</b>

<b>t ph</b>

<b>n mã ti </b>

ế

<b>ng Vi</b>

<b>t Unicode </b>


Mã Unicode Windows dùng 2 byte để miêu t ả 1 ký t ự:



256 mã đầu từ 0 - 255 giống y nhƣ mã ISO 8859-1.


mã t ừ 256 trở đi chứa các ký t ự của hầu hết các ngôn ng ữ
trên thế giới (quá kh ứ, hiện tại và tƣơng lai).


thí dụ sau là 1 phần mã ti ếng Việt trong mã Unicode:


mã 1ea0 <sub>H</sub> biểu diễn ký t ự Ạ mã 1ef9 <sub>H</sub> biểu diễn ký t ự ỷ


ạ Ả ả Ấ ấ Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế
ế Ề ề Ể ể Ễ ễ Ệ ệ Ỉ ỉ Ị ị Ọ ọ Ỏ ỏ Ố ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ Ớ ớ Ờ ờ
Ở ở Ỡ ỡ Ợ ợ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự Ỳ ỳ Ỳ ỳ Ỵ ỵ Ỷ ỷ


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(52)</span><div class='page_container' data-page=52>

<b>Mã hóa d </b>

<b> li</b>

<b>u c</b>

<b>a </b>

<b>ng d</b>

<b>ng </b>



Số nguyên (Integer, Long), s ố thực (Single, Double), chuỗi ký t ự
(String) là những dạng mã hóa dữ liệu phổ dụng, ngồi ra mỗi ứng dụng
có thể cần có cách mã hóa riêng để mã hóa dữ liệu đặc thù c ủa mình
nhƣ hình ảnh, âm thanh,...


Trong chƣơng 5 và 6 chúng ta s ẽ trình bày chi tiết các ki ểu dữ liệu mà
ngôn ngữ VB hỗ trợ.


Nhƣng ta đã trình bày trong slide 15 (ch ƣơng 1), dù dùng cách mã hóa
cụ thể nào thì kết quả của việc mã hóa phải là 1 chuỗi bit (hay chuỗi


byte) để có thể đƣợc lƣu trử và xử lý bên trong máy tính.



Bộ nhớ của máy tính th ƣờng có dung lƣợng khơng lớn nên ta ch ỉ dùng
nó để chứa code và dữ liệu của chƣơng trình đang thực thi.


máy tính có th ể lƣu trữ rất nhiều chƣơng trình và dữ liệu của chúng
trên các thi ết bị chứa tin (bộ nhớ ngoài) nhƣ đĩa mềm, đĩa cứng,


CDROM,...


</div>
<span class='text_page_counter'>(53)</span><div class='page_container' data-page=53></div>
<span class='text_page_counter'>(54)</span><div class='page_container' data-page=54>

<b>2.5 H</b>

<b> th</b>

<b>ng file </b>



code của 1 chƣơng trình, chuỗi byte miêu t ả dữ liệu đƣợc lƣu trữ
trên thiết bị chứa tin trong 1 phần tử chứa tin luận lý đƣợc gọi là file.
1 thiết bị chứa tin thƣờng chứa rất nhiều file. Để nhận dạng và truy
xuất 1 file, ta dùng tên nh ận dạng gán cho m ỗi file. Để dễ dùng file,


tên nh ận dạng của nó sẽ ở dạng tên g ợi nhớ (chuỗi ký t ự miêu t ả
ngữ nghĩa của nội dung file), thí dụ nhƣ file "luận án t ốt nghiệp.doc"
chứa toàn bộ nội dung luận án t ốt nghiệp của ngƣời dùng máy.


Nếu ta dùng không gian phẳng để đặt tên cho các file trên 1 thi ết bị
chứa tin thì vì số lƣợng file quá l ớn nên ta khó lịng đặt tên, nh ận
dạng, xử lý,... (nói chung là quản lý) t ừng file.


Để giải quyết vấn đề trên ta dùng không gian cây th ứ bậc để tổ chức
và quản lý các file trên t ừng thiết bị chứa tin.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(55)</span><div class='page_container' data-page=55>

<b>Thi</b>

ế

<b>t b</b>

<b> ch</b>

<b>a tin: Không gian cây th </b>

<b> b</b>

<b>c </b>


Để tạo không gian cây th ứ bậc, ta dùng khái ni ệm thƣ mục


(directory).


thƣ mục là phần tử chứa nhiều phần tử bên trong nó: có thể là file
hay thƣ mục. Thƣờng ta sẽ dùng th ƣ mục để chứa những phần tử
con có mối quan hệ mật thiết nào đó, thí dụ nhƣ thƣ mục chứa các
ảnh kỵ niệm, thƣ mục chứa các file nh ạc ƣa thích,...


Thiết bị chứa tin vật lý ( đĩa mềm, đĩa cứng, CDROM,...) đƣợc trừu
tƣợng hóa nhƣ là 1 thƣ mục (ta gọi thƣ mục đặc biệt này là thƣ mục
gốc). Thƣ mục gốc chứa nhiều phần tử con bên trong, m ỗi phần tử
con của thƣ mục gốc thƣờng là thƣ mục con nhƣng cũng có thể là
file. Mỗi thƣ mục con lại có thể chứa nhiều thƣ mục con hay file... và
cứ thế ta sẽ hình thành 1 cây th ứ bậc các th ƣ mục và file.


Ta cũng dùng tên g ợi nhớ để nhận dạng từng thƣ mục. Trong không
gian cây th ứ bậc, ta sẽ dùng khái ni ệm đƣờng dẫn (pathname) để
nhận dạng 1 file hay 1 thƣ mục.


Khoa Công nghệ Thông tin
Trƣờng ĐH Bách Khoa Tp.HCM


Môn: Tin học


Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố


</div>
<span class='text_page_counter'>(56)</span><div class='page_container' data-page=56>

<b>Thí d</b>

<b> v</b>

<b> h</b>

<b> th</b>

<b>ng file </b>


Cây th ứ bậc của ổ c: \


config.sys Windows AudioFile

<b>... </b>

VideoFile


System Fonts USAFilm ChinaFilm VNFilm


win.com








arial.ttf

<b>... </b>

Dòng đời.mpg

<b>... </b>



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(57)</span><div class='page_container' data-page=57>

Đƣờ

<b>ng d</b>

<b>n tuy</b>

<b>t</b>

đố

<b>i và t</b>

ƣơ

<b>ng</b>

đố

<b>i </b>



Đƣờng dẫn (pathname) là thông tin để tìm kiếm (xác định) 1 phần tử


từ 1 vị trí nào đó, nó chứa danh sách chính xác các tên g ợi nhớ của
các ph ần tử mà ta phải đi qua xuất phát t ừ vị trí đầu để đến phần tử
cần tìm.


ta dùng 1 d ấu ngăn đặc biệt để ngăn cách 2 tên g ợi nhớ liên ti ếp
nhau trong đƣờng dẫn (trong Windows, dấu ngăn là '\')


Tên th ƣ mục gốc ln là '\'.


Có 2 khái ni ệm đƣờng dẫn: đƣờng dẫn tuyệt đối và đƣờng dẫn



tƣơng đối. Đƣờng dẫn tuyệt đối là đƣờng dẫn xuất phát t ừ thƣ mục
gốc, đƣờng dẫn tƣơng đối xuất phát t ừ thƣ mục làm việc (working
directory).


Trƣớc khi

ứng dụng

bắt đầu chạy, hệ thống sẽ khởi động thƣ mục l

àm


việc

cho ứng dụng (theo cơ chế nào đó). Trong q trình th ực thi, ứng
dụng có quyền thay đổi thƣ mục

làm việc

theo yêu c ầu riêng.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(58)</span><div class='page_container' data-page=58>

Đƣờ

<b>ng d</b>

<b>n tuy</b>

<b>t</b>

đố

<b>i và t</b>

ƣơ

<b>ng</b>

đố

<b>i (tt) </b>



Xét cây th ứ bậc của ổ c: trên slide 54, đƣờng dẫn tuyệt đối sau sẽ
nhận dạng chính xác file arial.ttf trong th ƣ mục 'Fonts':


<b>c:\Windows\Fonts\arial.ttf </b>


Nếu thƣ mục working của chƣơng trình hiện là c:\Windows\Fonts thì
ta có thể dùng đƣờng dẫn tƣơng đối sau đây để xác định file arial.ttf:
<b>arial.ttf </b>


Đƣờng dẫn tuyệt đối thƣờng dài hơn đƣờng dẫn tƣơng đối nhƣng nó
ln có giá trị bất chấp ứng dụng đang ở thƣ mục working nào.


Đƣờng dẫn tƣơng đối thƣờng gọn hơn (đa số chỉ chứa tên file c ần
truy xuất vì ứng dụng sẽ thiết lập thƣ mục working là thƣ mục chứa
các file mà ứng dụng truy xuất) nhƣng chỉ có giá tr ị với 1 thƣ mục
working cụ thể.



Trong 1 vài trƣờng hợp đặc biệt, ta phải dùng đƣờng dẫn tƣơng đối
ngay cả nó dài và phức tạp hơn đƣờng dẫn tuyệt đối.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(59)</span><div class='page_container' data-page=59>

<b>2.6 Qu</b>

<b>n lý h </b>

<b> th</b>

<b>ng file </b>



Hình dạng và cấu trúc c ủa 1 hệ thống file của 1 thiết bị chứa tin sẽ do
ngƣời dùng thi ết lập nhờ các tác v ụ phổ biến nhƣ: tạo/xóa thƣ mục,
tạo/xóa file, copy/move file/thƣ mục từ nơi này đến nơi khác.


Nhƣng trƣớc khi thực hiện 1 tác v ụ nào đó, ngƣời dùng th ƣờng duyệt
file: làm hiển thị cấu trúc c ủa hệ thống file ở 1 dạng nào đó để quan sát
nó dễ dàng.


Hệ thống dùng nhi ều cơ chế khác nhau để bảo vệ việc truy xuất file
bởi ngƣời dùng. 1 trong các c ơ chế mà Windows XP dùng là k ết hợp
với mỗi file 1 số thuộc tính truy xuất, mỗi thuộc tính đƣợc lƣu trữ trong
1 bit:


Read Only, nếu = 1 thì hệ thống khơng cho các ứng dụng
xóa/hiệu chỉnh phần tử.


Hidden, nếu = 1 thì hệ thống sẽ dấu khơng hiển thị phần tử bởi
các ứng dụng duyệt file.


Archive đƣợc thiết lập =1 nếu phần tử bị hiệu chỉnh nội dung


(phục vụ cho cơ chế backup tăng dần). Môn: Tin học



Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố


</div>
<span class='text_page_counter'>(60)</span><div class='page_container' data-page=60>

<b>Ti</b>

<b>n ích qu</b>

<b>n lý h </b>

<b> th</b>

<b>ng file </b>



Tất cả tác v ụ liên quan đến hệ thống file đƣợc gọi là tác v ụ quản lý h
ệ thống file.


hệ thống sẽ cung cấp 1 ứng dụng (tiện ích) để ngƣời dùng d ễ dàng
thực hiện các tác v ụ quản lý file. Thí d ụ trên Windows ta th ƣờng
dùng tiện ích "Windows Explorer" để quản lý h ệ thống file.


Có 4 cách ph ổ biến để chạy 1 ứng dụng (tiện ích):


1. double-click vào icon miêu t ả ứng dụng trên màn hình desktop
(phải tạo icon shortcut chƣơng trình trƣớc khi dùng cách ch ạy
này).


2. duyệt và chọn ứng dụng từ menu Start.Programs...


3. chạy trình Windows Explorer (từ menu


Start.Programs.Accessories.Windows Explorer), duyệt thƣ mục tìm
file ứng dụng, ấn kép chuột vào file để chạy nó.


4. vào menu Start.Run, rồi nhập hàng lệnh chứa đƣờng dẫn xác định
file chƣơng trình và các tham số hàng lệnh.




Khoa Công nghệ Thông tin



Trƣờng ĐH Bách Khoa Tp.HCM Slide 58


Môn: Tin học


</div>
<span class='text_page_counter'>(61)</span><div class='page_container' data-page=61>

<b>C</b>

<b>a s</b>

<b> c</b>

<b>a WE & các ph</b>

<b>n t</b>

<b> giao di</b>

<b>n chính </b>



MenuBar chứa tất cả
tác v ụ mà ứng dụng
hỗ trợ


Toolbar chứa các
icon tác v ụ


thƣờng dùng


TreeCtrl hiển thị hệ
thống file dạng cây
ListCtrl hiển thị các
phần tử trong thƣ mục
StatusBar


Taskbar


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(62)</span><div class='page_container' data-page=62>

<b>Các thao tác duy</b>

<b>t h</b>

<b> th</b>

<b>ng file </b>



Click vào ô - để thu
nhỏ nội dung thƣ mục


Click vào ô + để chi
tiết hóa nội dung thƣ
mục.


Nhƣng tốt nhất là
double-click vào tên
thƣ mục để chi tiết
hóa/thu nhỏ nội dung
Click vào tên th ƣ
mục để hiển thị nội
dung chi tiết của nó


Khoa Cơng nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(63)</span><div class='page_container' data-page=63>

<b>Các tác</b>

<b>v x</b>

<b> lý file </b>



Qui trình chung để thực hiện


tác vụ trên 1 hay nhi ều phần tử
nào đó là:


chọn 1 hay nhiều phần
tử cần xử lý.


chọn option trong menu
hay icon trong toolbar thực
hiện tác v ụ mong muốn.
Chọn nhiều phần tử liên ti ếp:


o chick vào phần tử đầu,



p ấn và giử phím Shift,


q click vào phần tử cuối.
r thả phím Shift.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(64)</span><div class='page_container' data-page=64>

<b>Các tác</b>

<b>v x</b>

<b> lý file </b>



Chọn nhiều phần tử rời rạc:
1. chick vào phần tử đầu,


o ấn và giử phím Ctrl,


p dời mouse đến từng phần
tử cần chọn rồi click vào nó.
q lặp lại bƣớc 3 nhiều lần


cho nhiều phần tử
5. thả phím Ctrl.


Khoa Cơng nghệ Thơng tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(65)</span><div class='page_container' data-page=65>

<b>T</b>

<b>o th</b>

ƣ

<b> m</b>

<b>c/file m</b>

<b>i </b>



Thƣờng việc tạo file mới


đƣợc thực hiện bên trong



ứng dụng. Qui trình tạo
mới 1 thƣ mục/file
trong WE nhƣ sau:


duyệt cây th ƣ mục
trong cửa sổ bên trái
và chọn thƣ mục mà
ở đó bạn muốn tạo
thƣ mục/file mới.


chọn menu File.New


nếu muốn tạo thƣ
mục, chọn Folder.


nếu muốn tạo file,


chọn loại file trong
danh sách.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(66)</span><div class='page_container' data-page=66>

<b>Xóa th </b>

ƣ

<b> m</b>

<b>c/file </b>

đ

<b>ang t</b>

<b>n t</b>

<b>i </b>



Qui trình xóa 1 thƣ mục/file
trong WE nhƣ sau:


duyệt cây th ƣ mục


trong cửa sổ bên trái


và chọn thƣ mục mà
ở đó bạn muốn xóa
thƣ mục/file.


chọn các ph ần tử


cần xóa trong ListCtrl
bên phải.


chọn menu File hay


ấn phải chuột vào vị trí
chọn các ph ần tử để
hiển thị menu các tác
vụ có thể thực hiện.


chọn option "Delete"


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(67)</span><div class='page_container' data-page=67>

<b>Copy th</b>

ƣ

<b> m</b>

<b>c/file vào clipboard </b>



Qui trình copy thƣ mục/file
trong WE nhƣ sau:


duyệt cây th ƣ mục


trong cửa sổ bên trái
và chọn thƣ mục mà
ở đó bạn muốn copy


thƣ mục/file.


chọn các ph ần tử


cần copy trong


ListCtrl bên phải.


chọn menu Edit hay


ấn phải chuột vào vị trí
chọn các ph ần tử để
hiển thị menu các tác
vụ có thể thực hiện.


chọn option "Copy"


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(68)</span><div class='page_container' data-page=68>

<b>Dán th</b>

ƣ

<b> m</b>

<b>c/file t</b>

<b> clipboard </b>



Qui trình dán th ƣ mục/file
từ clipboard vào thƣ
mục chứa nhƣ sau:


duyệt cây th ƣ mục


trong cửa sổ bên trái
và chọn thƣ mục mà
ở đó bạn muốn dán th


ƣ mục/file.


chọn menu Edit để
hiển thị menu các tác
vụ có thể thực hiện.


chọn option "Paste"


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(69)</span><div class='page_container' data-page=69>

<b>Di chuy</b>

<b>n (move) th</b>

ƣ

<b> m</b>

<b>c/file </b>



Việc di chuyển thƣ mục/file
đƣợc thực hiện bởi 3 tác v ụ
copy/paste/delete nhƣ đã đƣợc
trình bày. Qui trình move


thƣ mục/file khác nh ƣ sau:
duyệt cây th ƣ mục trong


cửa sổ bên trái và ch ọn
thƣ mục mà ở đó bạn
muốn copy thƣ mục/file.


chọn các ph ần tử cần copy
trong ListCtrl bên ph ải.


chọn menu Edit để hiển thị
menu các tác v ụ có thể
thực hiện.



chọn option "Move to
Folder" và xác định thƣ
mục đích.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(70)</span><div class='page_container' data-page=70>

<b>Load file vào b </b>

<b> nh</b>

ớ để

<b> hi</b>

<b>u ch</b>

<b>nh </b>



Qui trình chạy ứng dụng và
load file vào bộ nhớ để
hiệu chỉnh nội dung
file nhƣ sau:


duyệt cây th ƣ mục


trong cửa sổ bên trái và
ch ọn thƣ mục chứa file
cần hiệu chỉnh.


chọn file cần hiệu chỉnh
trong ListCtrl bên ph ải.


ấn phải chuột vào file
chọn để hiển thị


menu các tác v ụ có
thể thực hiện.


chọn option "Open with"


và xác định ứng dụng
đƣợc dùng để hiệu
chỉnh file.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học


</div>
<span class='text_page_counter'>(71)</span><div class='page_container' data-page=71>

<b>Hi</b>

<b>n th</b>

<b> c</b>

<b>a s</b>

<b> thông tin v </b>

<b> file/th</b>

ƣ

<b> m</b>

<b>c </b>



Qui trình làm hiển thị cửa sổ
thơng tin thƣ mục/file nhƣ sau:


duyệt cây th ƣ mục


trong cửa sổ bên trái và
ch ọn thƣ mục/file cần
hiển thị thông tin.


chọn thƣ mục/file cần
hiển thị thông tin trong
ListCtrl bên ph ải.


ấn phải chuột vào file
chọn để hiển thị


menu các tác v ụ có
thể thực hiện.


chọn option "Properties"
để làm hiển thị cửa sổ
thông tin của thƣ mục/file



tƣơng ứng.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Môn: Tin học


</div>
<span class='text_page_counter'>(72)</span><div class='page_container' data-page=72>

<b>Xem và hi </b>

<b>u ch</b>

<b>nh thu</b>

<b>c tính file/th</b>

ƣ

<b> m</b>

<b>c </b>



Khi cửa sổ thơng tin của thƣ
mục/file đã đƣợc hiển thị,
chọn trang


general/Version để thấy
các thông tin t ƣơng ứng.
Trang bên ph ải là trang
General.


xem các thu ộc tính file.
nếu muốn thay đổi


thuộc tính nào đó, ấn
chuột vào checkbox
tƣơng ứng. Thuộc tính
sẽ chuyển từ khơng
thành có hay ngƣợc lại.
nếu muốn cập nhật


các hiệu chỉnh thì ấn
chuột vào button OK.


Khoa Công nghệ Thông tin Chƣơng 2: Thể hiện dữ liệu trong máy tính s ố Mơn: Tin học



</div>
<span class='text_page_counter'>(73)</span><div class='page_container' data-page=73>

<b>MƠN TIN H </b>

<b>C </b>



<i><b>Ch</b></i>

ƣơ

<i><b>ng 3 </b></i>



<b>T</b>

<b>NG QUÁT V </b>

<b> L</b>

<b>P TRÌNH </b>



<b>B</b>

<b>NG VISUAL BASIC </b>



3.1 Các khái ni ệm cơ bản về mơ hình hƣớng đối tƣợng


3.2 Các đối tƣợng giao diện của VB 6.0



3.3 Hiệu chỉnh thuộc tính của các đối tƣợng giao diện



3.4 Tạo thủ tục xử lý s ự kiện của các đối tƣợng giao diện.



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(74)</span><div class='page_container' data-page=74>

<b>3.1 Các khái ni</b>

<b>m c</b>

ơ

<b> b</b>

<b>n v</b>

<b> mơ hình h </b>

ƣớ

<b>ng </b>

đố

<b>i t</b>

ƣợ

<b>ng </b>





Hình vẽ sau đây t ổng kết cấu trúc c ủa 1 ứng dụng đƣợc lập trình cấu trúc:


module

global data



(package)


local data



entry 'start'



of module














local data


of function





Khoa Công nghệ Thông tin Chƣơng 3: Tổng quát v ề lập trình Visual Basic Mơn: Tin học


Trƣờng ĐH Bách Khoa Tp.HCM Slide 72


</div>
<span class='text_page_counter'>(75)</span><div class='page_container' data-page=75>

<b>T</b>

<b> l</b>

<b>p trình c</b>

<b>u trúc</b>

đế

<b>n OOP </b>



Xét cấu trúc ch ƣơng trình cổ điển của slide trƣớc, ta thấy có 2 nhƣợc
điểm chính sau:


Rất khó đảm bảo tính nhất quán và đúng đắn của dữ liệu tồn cục


vì bất kỳ lệnh nào trong hàm nào cũng có thể truy xuất chúng.


Nếu chƣơng trình cần đồng thời nhiều 'instance' của cùng 1
module thì cơ chế lập trình cấu trúc không cho phép tạo tự động
các 'instance' này.


Để khắc phục 2 nhƣợc điểm chính trên (và b ổ sung nhiều ƣu điểm khác),
ta sẽ lập trình theo hƣớng đối tƣợng (OOP - Object Oriented
Programming) trong đó chƣơng trình là 1 tập các đối tƣợng sống tƣơng
tác nhau (xem slide kế tiếp).


Visual Basic là ngơn ngữ hỗ trợ việc lập trình theo hƣớng đối tƣợng, hơn
nữa VB cịn là mơi trƣờng lập trình trực quan (visual) nên r ất dễ dùng.


Khoa Công nghệ Thông tin Chƣơng 3: Tổng quát v ề lập trình Visual Basic Mơn: Tin học


</div>
<span class='text_page_counter'>(76)</span><div class='page_container' data-page=76>

<b>C</b>

<b>u trúc c</b>

<b>a 1 </b>

<b>ng d</b>

<b>ng OOP </b>



Chƣơng trình = tập các đối tƣợng tƣơng tác nhau


đối tƣợng


(object)



local data



entry



of object


















local data


of


operation



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(77)</span><div class='page_container' data-page=77></div>
<span class='text_page_counter'>(78)</span><div class='page_container' data-page=78>

Đố

<b>i t</b>

ƣợ

<b>ng (Object) </b>



Mơ hình đối tƣợng quan niệm chƣơng trình bao gồm các đối tƣợng sinh sống
và tƣơng tác v ới nhau.


Đối tƣợng bao gồm nhiều thành phần, mỗi thành phần thuộc 1 trong 2 loại:


<b>Thu</b>ộ<b>c tính </b>(attribute): mang 1 giá tr ị nhất định tại từng thời điểm.


<b>Tác v</b>ụ (operation): thực hiện 1 công việc nào đó.



Implementation
(class)


Interface
(abstract type)


Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(79)</span><div class='page_container' data-page=79>

<b>Ki</b>

<b>u tr</b>

<b>u t</b>

ƣợ

<b>ng (Abstract type) </b>



Abstract type (

<i>type</i>

) định nghĩa interface sử dụng đối tƣợng. Ta



dùng tên nh ận dạng để đặt tên cho ki ểu và để nhận dạng nó.


Interface là tập hợp các 'entry' mà bên ngồi có th ể giao tiếp với


đối tƣợng.



Ta dùng signature để định nghĩa mỗi 'entry'. Signature


gồm:

Tên

tác v

(operation, function)



Danh sách tham số hình thức

, mỗi tham số đƣợc

đặc tả

bởi 3



thuộc tính:

tên, type và chi

ều di chuyển

(IN, OUT, INOUT).



Đặc tả chức năng

của tác v

(thƣờng

dạng chú thích).



Ta dùng tên c ủa abstract type (chứ không phải class) để đặc tả


kiểu cho biến, thuộc tính, tham số hình thức.




User khơng cần quan tâm đến class (hiện thực cụ thể) của đối


tƣợng.





Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(80)</span><div class='page_container' data-page=80>

<b>Class (Implementation) </b>



Ta dùng tên nh ận dạng để đặt tên cho class và để nhận dạng nó.
Class định nghĩa chi tiết hiện thực đối tƣợng:


Định nghĩa các thu ộc tính dữ liệu, mỗi thuộc tính đƣợc đặc tả bởi
các thơng tin v ề nó nhƣ tên nh ận dạng, kiểu dữ liệu, tầm vực truy
xuất,... Kiểu của thuộc tính có thể là type cổ điển (số nguyên, th


ực, ký t ự, chuỗi ký t ự,...) hay 'abstract type', trong trƣờng hợp sau
thuộc tính sẽ là tham khảo đến đối tƣợng khác. Tr ạng thái c ủa đối
tƣợng là tập giá tr ị tại thời điểm tƣơng ứng của tất cả thuộc tính
của đối tƣợng. Trong thời gian tồn tại và hoạt động, trạng tái c ủa
đối tƣợng sẽ thay đổi.


„Coding' các tác v ụ (miêu t ả giải thuật chi tiết về hoạt động của
tác vụ) và các 'internal function'.


Định nghĩa các tác v ụ tạo (create) và xóa (delete) đối



tƣợng. Định nghĩa các tác v ụ 'constructor' và 'destructor'.
User không cần quan tâm đến class của đối tƣợng.




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(81)</span><div class='page_container' data-page=81>

<b>Tính bao </b>

đ

<b>óng (encapsulation) </b>



Bao đóng: che dấu mọi chi tiết hiện thực của đối tƣợng, không


cho bên ngoài th ấy và truy xuất

đảm bảo tính độc lập cao


giữa các đối tƣợng, nghĩa là độ phụ thuộc (hay tính ghép nối -


coupling giữa các đối tƣợng) rất thấp, nhờ đó dễ bảo trì, phát


triển ứng dụng:



Che dấu các thu ộc tính dữ liệu

: nếu cần cho phép truy



xuất

1 thuộc tính nào đó từ bên ngồi, ta t ạo 2 tác v ụ


get/set tƣơng ứng để giám sát vi ệc truy xuất và che dấu


chi tiết hiện thực bên trong.



Che dấu chi tiết hiện thực các tác v ụ

.



Che dấu các 'internal function'

và sự

hiện thực của chúng.



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic



</div>
<span class='text_page_counter'>(82)</span><div class='page_container' data-page=82>

<b>Tính th</b>

<b>a k</b>

ế

<b> (inheritance) </b>



Viết 1 ứng dụng OOP là định nghĩa các type/class c ủa các đối


tƣợng cấu thành ứng dụng.



Tính thừa kế cho phép giảm nhẹ công sức định nghĩa type/class:


ta có thể định nghĩa các type/class khơng ph ải từ đầu mà bằng


cách k ế thừa các type/class có s ẵn, ta chỉ định nghĩa thêm các


chi tiết mới mà thơi (thƣờng khá ít).



Đa thừa kế hay đơn thừa kế.



Mối quan hệ supertype/subtype và superclass/subclass.


Có thể 'override' sự hiện thực các tác v



quả override chỉ có tác d ụng trên các


con.



của class cha, kết


đối tƣợng của class


Đối tƣợng của class con có thể đóng vai trị của đối tƣợng


cha nhƣng ngƣợc lại thì khơng đúng.



Khoa Công nghệ Thông tin Chƣơng 3: Tổng quát v ề lập trình Visual Basic Mơn: Tin học


</div>
<span class='text_page_counter'>(83)</span><div class='page_container' data-page=83>

<b>Tính bao g</b>

<b>p (aggregation) </b>



1 đối tƣợng có thể chứa nhiều đối tƣợng khác nh ờ mối quan


hệ bao gộp 1 cách đệ qui giữa các đối tƣợng.




Có 2 góc nhìn về tính bao gộp: ngữ nghĩa và hiện thực.


Góc nhìn ngữ nghĩa

Góc nhìn hiện



thực


O

<sub>2 </sub>


O<sub>4 </sub>


O

<sub>1 </sub>

<sub>O</sub>

<sub>4 </sub> O<sub>2 </sub>


O

<sub>1 </sub>


O

<sub>3 </sub>

O

<sub>5 </sub>


O

<sub>5 </sub>

O

<sub>3 </sub>


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(84)</span><div class='page_container' data-page=84>

<b>Thơng </b>

đ

<b>i</b>

<b>p (Message) </b>



Thông điệp là 1 phép gọi tác v ụ của 1 đối tƣợng từ 1 tham khảo.


Thông điệp bao gồm 3 phần:



Tham khảo đến đối tƣợng đích.


Tên tác v ụ muốn gọi.




Danh sách tham s ố thực cần truyền theo (hay nhận về


từ) tác v ụ.



Ví dụ: aCircle.Draw (pWnd)



Truy xuất thuộc tính trong interface:



aCircle.Radius = 10



aCircle.SetRadius(10)



r = aCircle.Radius



r = aCircle.GetRadius()



Thông điệp là phƣơng tiện giao tiếp (hay tƣơng tác) duy nh


ất giữa các đối tƣợng.



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(85)</span><div class='page_container' data-page=85>

<b>Hai thành ph </b>

<b>n chính c</b>

<b>a 1 </b>

<b>ng d</b>

<b>ng </b>



Xem lại slide 15 miêu t ả qui trình tổng qt c ủa việc dùng máy tính


giải quyết 1 vấn đề ngoài đời, ta thấy 1 ứng dụng gồm 2 phần


thành phần chính:



<b>Giao di</b>

<b>n ng</b>

ƣờ

<b>i dùng</b>

<b>:</b>

là phƣơng tiện cho ngƣời dùng



tƣơng tác v ới chƣơng trình để nhập/xuất dữ liệu, để điều


khiển/giám sát ho ạt động của chƣơng trình. Trong OOP,


giao diện ngƣời dùng là t ập các đối tƣợng giao diện nhƣ


form, mỗi form chứa nhiều đối tƣợng nhỏ hơn nhƣ menu,



toolbar, button, textedit, listbox, treeview...



<b>Gi</b>

<b>i thu</b>

<b>t x</b>

<b> lý bên trong</b>

:

đƣợc thể

hiện bởi các method



của các đối tƣợng giao diện và các đối tƣợng bên trong ứng


dụng. Mỗi method là danh sách các l ệnh thực thi (cấu trúc


điều khiển) để miêu t ả giải thuật mà tác v ụ tƣơng ứng thực


hiện.





Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(86)</span><div class='page_container' data-page=86>

<b>Thi</b>

ế

<b>t k</b>

ế

<b> tr</b>

<b>c quan các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n </b>



Định nghĩa các đối tƣợng giao diện bằng cách vi ết code tƣờng minh là
1 công việc rất khó khăn và tốn nhiều cơng sức, thời gian.


Để giảm nhẹ công sức định nghĩa các đối tƣợng giao diện, các mơi


trƣờng lập trình trực quan (visual) đã vi ết sẵn 1 số đối tƣợng giao diện
thƣờng dùng và cung c ấp công cụ để ngƣời lập trình thiết kế trực quan
giao diện của ứng dụng bằng cách tích h ợp các đối tƣợng giao diện có
sẵn này: ngƣời lập trình đóng vai trị họa sĩ để vẽ/hiệu chỉnh kích thƣớc,
di chuyển vị trí các ph ần tử giao diện cần cho ứng dụng.


Ngồi ra mơi trƣờng trực quan cịn cho phép ngƣời lập trình tự tạo các
đối tƣợng giao diện mới (ActiveX Control) để dùng trong các ứng dụng


đƣợc viết sau đó. Qui trình viết ứng dụng theo cơ chế này đƣợc gọi là
viết ứng dụng bằng cách l ắp ghép các linh ki ện phần mềm, nó giống
nhƣ việc lắp máy tính t ừ các linh ki ện phần cứng nhƣ CPU, RAM, disk,
keyboard, monitor,...⇒ rất dễ dàng và nhanh chóng.


Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(87)</span><div class='page_container' data-page=87>

<b>3.2 Các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n có trong VB </b>


Control buttons


Window  Form,
Dialogbox


Title bar


Textbox


Command Button


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(88)</span><div class='page_container' data-page=88>

<b>Các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n có trong VB (tt) </b>



Label


DriveListBox



Combobox 


Textbox + ListBox


DirListBox


FileListBox  ListBox


Image  Picture


Khoa Công nghệ Thông tin Chƣơng 3: Tổng quát v ề lập trình Visual Basic Mơn: Tin học


</div>
<span class='text_page_counter'>(89)</span><div class='page_container' data-page=89>

<b>Các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n có trong VB (tt) </b>



Frame


OptionButton


Checkbox


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(90)</span><div class='page_container' data-page=90>

<b>Các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n có trong VB (tt) </b>


MenuBar


Toolbar



CommandButton


Pop-up Menu


1 window chứa 1
document của ứng
dụng


StatusBar


Khoa Công nghệ Thông tin Chƣơng 3: Tổng quát v ề lập trình Visual Basic Mơn: Tin học


</div>
<span class='text_page_counter'>(91)</span><div class='page_container' data-page=91>

<b>Các tính ch</b>

<b>t chung c</b>

<b>a các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n </b>


Đối tƣợng giao diện có những tính chất giống nhƣ đối tƣợng bình thƣờng,
ngồi ra chúng cịn có 1 số đặc điểm riêng.


Đối tƣợng giao diện cũng đƣợc cấu thành từ 2 loại thành phần: thuộc tính
và tác v ụ.


Mỗi đối tƣợng giao diện chứa khá nhi ều thuộc tính liên quan đến nhiều
loại trạng thái khác nhau:


Thuộc tính 'Name': đây là thu ộc tính đặc biệt, xác định tên nh ận dạng
của đối tƣợng, giá tr ị của thuộc tính này sẽ trở thành biến tham khảo
đến đối tƣợng, code của ứng dụng sẽ dùng bi ến này để truy xuất đối
tƣợng.


Các thu ộc tính xác định vị trí và kích thƣớc: Left, Top, Height, Width...
các thu ộc tính xác định tính chất hiển thị: Caption, Picture,



BackColor,...


Các thu ộc tính xác định hành vi: Enable,...
...


Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(92)</span><div class='page_container' data-page=92>

<b>3.3 Hi</b>

<b>u ch</b>

<b>nh thu</b>

<b>c tính c</b>

<b>a các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n </b>



Khi tạo trực quan 1 đối tƣợng giao diện, môi


trƣờng đã gán giá tr ị ban đầu cho các thu ộc tính,
thƣờng ta chỉ cần thay đổi 1 vài thuộc tính là đáp
ứng đƣợc yêu c ầu riêng. Có 2 cách để hiệu chỉnh
giá tr ị 1 thuộc tính:




Trực quan thơng qua cửa sổ thuộc tính của
đối tƣợng giao diện.


Lập trình truy xuất thuộc tính của đối tƣợng
giao diện.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic



</div>
<span class='text_page_counter'>(93)</span><div class='page_container' data-page=93>

<b>3.4 S</b>

<b> ki</b>

<b>n - Th</b>

<b> t</b>

<b>c x</b>

<b> lý s </b>

<b> ki</b>

<b>n </b>



Mỗi đối tƣợng giao diện có
khá nhi ều tác v ụ (operation),
hầu hết chúng đƣợc gọi là


thủ tục xử lý s ự kiện vì cơ
chế gọi thủ tục này chủ yếu
là trực tiếp từ ngƣời dùng
ứng dụng thông qua sự
tƣơng tác tr ực tiếp với đối
tƣợng, từ đó tạo sự kiện
kích khởi thủ tục xử lý t
ƣơng ứng chạy.


Thí dụ khi ta ấn chuột vào
button tên "Command1", h ệ
thống tạo ra sự kiện "Click"
để kích khởi thủ tục
Command1_Click() chạy.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(94)</span><div class='page_container' data-page=94>

<b>Cách </b>

<b>to hàm x </b>

<b> lý s </b>

<b> ki</b>

<b>n c</b>

<b>a </b>

đố

<b>i t</b>

ƣợ

<b>ng </b>



Qui trình tổng quát c ủa việc tạo
thủ tục xử lý cho 1 s ự kiện
nào đó của 1 đối tƣợng:



Chọn menu View.Code để


hiển thị cửa sổ code.


Chọn tên đối tƣợng liên


quan trong danh sách các
đối tƣợng.


Chọn sự kiện cần tạo thủ


tục xử lý trong danh sách
các s ự kiện, template của
thủ tục xử lý s ẽ đƣợc tạo
tự động.


Sử dụng kiến thức về giải


thuật & cú pháp ngôn ng ữ


VB để viết code cho thủ


tục xử lý.




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic



</div>
<span class='text_page_counter'>(95)</span><div class='page_container' data-page=95>

<b>T</b>

<b>ng k</b>

ế

<b>t qui trình vi</b>

ế

<b>t 1 </b>

<b>ng d</b>

<b>ng b</b>

<b>ng VB </b>


Trƣớc hết phải nắm bắt yêu c ầu phần mềm để xác định các ch ức


năng mà ứng dụng phải cung cấp cho ngƣời dùng.


Phân tích s ơ lƣợc từng chức năng và tìm ra các class phân tích c ấu
thành chức năng tƣơng ứng.


3. Thiết kế chi tiết các class phân tích: xác định các thu ộc tính và các
tác v ụ cũng nhƣ phác h ọa giải thuật của từng tác v ụ.


Hiện thực phần mềm bằng VB gồm 2 cơng việc chính:


<b>Thi</b>ế<b>t k</b>ế<b> tr</b>ự<b>c quan các formgiao di</b>ệ<b>n ng</b>ƣờ<b>i dùng: </b>mỗi form chứa


nhiều phần tử giao diện, các ph ần tử giao diện thƣờng đã có sẵn,
nếu khơng ta phải tạo thêm 1 số đối tƣợng giao diện mới (ActiveX
Control). Ứng với mỗi phần tử giao diện vừa tạo ra, nên thiết lập giá
tr ị đầu cho thuộc tính "Name" và 1 vài thuộc tính cần thiết.


<b>T</b>ạ<b>o th</b>ủ<b> t</b>ụ<b>c x</b>ử<b> lý s </b>ự<b> ki</b>ệ<b>n </b>cho các s ự kiện cần thiết trên các ph ần
tử giao diện rồi viết code cho từng thủ tục xử lý s ự kiện vừa tạo ra.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 3: Tổng quát v ề lập trình Visual Basic


</div>
<span class='text_page_counter'>(96)</span><div class='page_container' data-page=96>

<b>MƠN TIN H </b>

<b>C </b>




<i><b>Ch</b></i>

ƣơ

<i><b>ng 4 </b></i>



<b>QUI TRÌNH THI</b>

<b>T K</b>

<b> TR</b>

<b>C QUAN </b>


<b>GIAO DI</b>

<b>N C</b>

<b>A </b>

<b>NG D</b>

<b>NG </b>



4.1 Dự án và ứng dụng



4.2 Tạo/xóa đối tƣợng giao diện.



4.3 Hiệu chỉnh giá tr ị thuộc tính của đối tƣợng giao diện


4.4 Tạo menubar



4.5 Tạo Toolbar



4.6 Tạo và viết thủ tục xử lý s ự kiện



Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(97)</span><div class='page_container' data-page=97>

<b>4.1 D</b>

<b> Án Và</b>

<b>ng D</b>

<b>ng </b>



1 ứng dụng VB đƣợc cấu thành từ nhiều đối tƣợng thuộc nhiều loại:
Các ph ần tử giao diện


Các "class module", m ỗi class đặc tả 1 loại đối tƣợng cần dùng
cho giải thuật của chƣơng trình.


Các đối tƣợng khác nh ƣ các th ƣ viện liên k ết động, các database,...



Để quản lý ứng dụng đƣợc dễ dàng ta sử dụng phƣơng tiện "Dự án"
(Project). Dự án là 1 cây th ứ bậc các ph ần tử cấu thành ứng dụng. Viết
ứng dụng là qui trình tạo dự án, thêm/b ớt, hiệu chỉnh từng phần tử trong
dự án.


Thao tác để thực hiện các tác v ụ trên khá gi ống với các thao tác mà ta
đã biết trên h ệ thống file thứ bậc của máy tính.


Khoa Cơng nghệ Thơng tin Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng Môn: Tin học


</div>
<span class='text_page_counter'>(98)</span><div class='page_container' data-page=98>

<b>Kh</b>

<b>i </b>

độ

<b>ng VB 6.0 </b>



VB là 1 ứng dụng nhƣ bao ứng dụng khác. Để khởi động 1 ứng


dụng, ta có nhiều cách khau nhau:



Chọn

menu

<b>Start.Programs.Microsoft </b>

<b>Visual </b>

<b>Basic</b>


<b>6.0.Microsoft Visual Basic 6.0. </b>



Ấn kép chuột vào icon shortcut của VB trên màn hình desktop (ta


phải tạo trƣớc icon shortcut này).



Chọn menu Start.Run, rồi nhập hàng lệnh chạy ứng dụng, thí dụ


nhƣ "c:\Program Files\Microsoft Visual Studio\VB98\VB6.exe".



Dùng trình qu ản lý h ệ thống file WE, duyệt đến thƣ mục chứa file


chƣơng trình VB (thí dụ c:\Program Files\Microsoft Visual


Studio\VB98), ấn kép vào file chƣơng trình VB6.exe.



Sau khi VB đƣợc khởi động, ta thƣờng thấy cửa sổ màn hình nhƣ


sau:




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(99)</span><div class='page_container' data-page=99>

<b>C</b>

<b>a s</b>

<b> kh</b>

<b>i </b>

độ

<b>ng VB </b>



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(100)</span><div class='page_container' data-page=100>

<b>T</b>

<b>o m</b>

<b>i d</b>

<b> án </b>



Cửa sổ New Project của VB có ba thẻ (Tab):



<b>New: </b>

tạo mới một dự

án (tab này

đƣợc chọn default)



<b>Existing: </b>

Mở

1 dự

án

đã có sẵn trên máy (d

án c

ũ

nào

đó).



<b>Recent: </b>

Mở

1 dự

án trong n d

án g

ần hiện tại nhất.



Với tab New đƣợc chọn, bạn có thể tạo 1 dự án theo 1 lo ại nào đó,


nhƣng đối với các ứng dụng thơng thƣờng ta sẽ dùng lo ại dự án



"Standard EXE".

Ấn kép vào icon "Standard EXE" để tạo mới dự án


tƣơng ứng. 1 form mới đƣợc tạo ra tự động để bạn có thể thiết kế


trực quan form giao diện này.



Qui trình thiết kế giao diện là tuần tự thiết kế từng form theo yêu




cầu, nếu muốn tạo mới 1 form khác (hay 1 đối tƣợng nào đó vào dự


án), b ạn ấn kép chuột vào cửa sổ Project, dời chuột đến menu



"Add", rồi chọn mục "Form" trong danh sách.





Khoa Công nghệ Thông tin Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng Môn: Tin học


</div>
<span class='text_page_counter'>(101)</span><div class='page_container' data-page=101>

<b>Thí d</b>

<b> v</b>

<b> form thi</b>

ế

<b>t k</b>

ế

<b>: MiniCalculator </b>


Control buttons


Window  Form,
Dialogbox


Title bar


Menu


Toolbar


Textbox


Command Button


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(102)</span><div class='page_container' data-page=102>

<b>4.2 T</b>

<b>o 1 </b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n trên form </b>




Để hiển thị và làm việc trực quan với 1 form, ấn kép chuột vào mục
tên form trong cửa sổ Project.


Để tạo mới 1 đối tƣợng giao diện trong form, dùng chu ột chọn icon
tƣơng ứng với đối tƣợng trong cửa sổ Toolbox rồi vẽ đối tƣợng ở vị
trí và kích thƣớc mong muốn trên form .


Bạn cũng có thể tạo mới đối tƣợng giao diện dùng c ơ chế sinh sản
vơ tính: chọn đối tƣợng đã có, ấn button Copy trên Toolbar r ồi ấn
button Past trên Toolbar, đối tƣợng mới sinh ra giống y nhƣ đối
tƣợng có sẵn (nên đặt lại tên khác b ằng cách ch ọn button "No"


trong hộp thoại yêu c ầu sau khi ấn icon Past). Đây là 1 trong nhi ều
cách để tạo nhiều đối tƣợng có kích thƣớc giống hệt nhau.


Thí dụ slide sau miêu t ả trạng thái c ủa form sau khi ta vẽ đƣợc 1 textbox
hiển thị số và 5 button bên trái nh ất của máy tính.


Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(103)</span><div class='page_container' data-page=103>

<b>4.3 Thi</b>

ế

<b>t l</b>

<b>p giá tr</b>

<b> cho các thu</b>

<b>c tính </b>


Để dễ cân ch ỉnh vị trí


và kích thƣớc của các
đối tƣợng, ta nên thiết
lập các thu ộc tính cơ
bản sau: "Name",



"Caption". Thuộc tính
"Name" đƣợc dùng để
truy xuất đối tƣợng lúc
l ập trình, cịn thuộc
tính "Caption" đƣợc
hiển thị trên ph ần tử
(khơng phải đối tƣợng
nào cũng có Caption).


Khoa Cơng nghệ Thơng tin Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng Môn: Tin học


</div>
<span class='text_page_counter'>(104)</span><div class='page_container' data-page=104>

<b>Thi</b>

ế

<b>t l</b>

<b>p giá tr</b>

<b> cho các thu</b>

<b>c tính (tt) </b>


Để xem và hiệu chỉnh


giá tr ị của các thu ộc
tính của 1 đối tƣợng
giao diện, bạn ấn


chuột chọn đối tƣợng,
cửa sổ Properties bên
ph ải màn hình sẽ


hiển thị các thu ộc tính
của đối tƣợng đƣợc
chọn. Bạn duyệt các
thuộc tính từ trên
xuống và nhập vào
giá tr ị mới cho thuộc
tính mong muốn.



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(105)</span><div class='page_container' data-page=105>

<b>Cân ch </b>

<b>nh kích th</b>

ƣớ

<b>c các</b>

đố

<b>i t</b>

ƣợ

<b>ng </b>



Nếu vẽ bằng tay tuần tự các đối tƣợng thì khó lịngđảm bảo kích thƣớc của chúng
bằng nhau, do đó bạn nên dùng c ơ chế sinh sản vơ tính (Copy-Paste). Tuy nhiên
nếu lỡ tạo bằng tay các đối tƣợng rồi thì để làm kích thƣớc nhiều đối tƣợng giống
y nhau, bạn chọn các đối tƣợng rồi chọn menu Format.Make Same Size.Both


(bằng kích thƣớc của đối tƣợng đƣợc chọn cuối cùng).


Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(106)</span><div class='page_container' data-page=106>

Đồ

<b>ng ch</b>

<b>nh v</b>

<b>trí các</b>

đố

<b>i t</b>

ƣợ

<b>ng </b>



Tƣơng tự, nếu vẽ bằng tay tuần tự các đối tƣợng thì khó lòng đảm bảo khoảng
cách gi ữa chúng đều nhau. Để khoảng cách d ọc giữa các đối tƣợng đều nhau,
bạn chọn các đối tƣợng rồi chọn menu Format.Vertical Spacing.Make Equal (cố
định vị trí 2 đối tƣợng xa nhất theo chiều dọc rồi chỉnh dọc các đối tƣợng cịn lại).


Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(107)</span><div class='page_container' data-page=107>

<b>K</b>

ế

<b>t qu</b>

<b> t</b>

<b>m th</b>

<b>i c</b>

<b>a form MiniCalculator </b>




Với qui trình tạo đối


tƣợng, thiết lập các



thuộc tính cần thiết và


chỉnh dạng các đối



tƣợng giao diện nhƣ


đã đƣợc trình bày, bạn


tiếp tục tạo các đối


tƣợng còn lại của form


MiniCalculator. Kết quả


nhƣ sau:



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình tủhiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(108)</span><div class='page_container' data-page=108>

<b>Danh sách thu</b>

<b>c tính các</b>

đố

<b>i t</b>

ƣợ

<b>ng </b>



Danh sách giá tr ị các thu ộc tính đƣợc thiết lập cho các đối tƣợng (sẽ đƣợc tham
khảo bởi code chƣơng trình đƣợc viết sau):


Caption = , Name = cmdMemStatus Caption = +, Name = cmdAdd


Caption = MC, Name = cmdMC Caption = -, Name = cmdSub


Caption = MR, Name = cmdMR Caption = *, Name = cmdMul


Caption = MS, Name = cmdMS Caption = /, Name = cmdDiv



Caption = MA, Name = cmdMA Caption = +/-, Name = cmdPosNeg


Caption = 0, Name = cmd0 Caption = ., Name = cmdPoint


Caption = 1, Name = cmd1 Caption = =, Name = cmdEqual


Caption = 2, Name = cmd2 Caption = 1/x, Name = cmd1x


Caption = 3, Name = cmd3 Caption = %, Name = cmdPercent


Caption = 4, Name = cmd4 Caption = sqrt, Name = cmdSqrt


Caption = 5, Name = cmd5 Caption = C, Name = cmdC


Caption = 6, Name = cmd6 Caption = CE, Name = cmdCE


Caption = 7, Name = cmd7 Caption = Backspace, Name =


Caption = 8, Name = cmd8 cmdBack


Caption = 9, Name = cmd9 Text = 0., Name = txtDisplay


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình tủhiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(109)</span><div class='page_container' data-page=109>

<b>4.4 Thi</b>

ế

<b>t k</b>

ế

<b> menu bar cho form giao di</b>

<b>n </b>



Giả sử form MiniCalculator cần có 1 hệ thống menu nhƣ sau:




Để tạo menu bar cho 1 form nào
đó, ta hiển thị cửa sổ chứa form
đó (ấn kép mục tên form trong
cửa sổ Project chứa cây th ứ bậc
các ph ần tử) rồi chọn menu
Tools.Menu Bar... Cửa sổ trong
slide sau sẽ hiện lên:


Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình tủhiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(110)</span><div class='page_container' data-page=110>

<b>Dùng Menu Editor </b>

để

<b> thi</b>

ế

<b>t k</b>

ế

<b> menu bar </b>



VB luôn tạo sẵn 1 mục mới trống ở
hàng cuối của danh sách. Thêm 1
phần tử mới là chọn mục mới này và
nhập ít nhất 2 thuộc tính Caption và
Name của nó.


Button Next cho phép dời mục chọn
xuống 1 hàng.


Button Insert cho phép chèn 1 mục
trống vào trƣớc mục đƣợc chọn hiện
hành.


Button Delete cho phép xóa mục
đƣợc chọn.



Các button , cho phép dời mục


đƣợc chọn đi lên hay xu ống 1 vị trí.


Các button , cho phép dời mục


đƣợc chọn vô thêm hay ra bớt 1 cấp
trong hệ thống cây phân c ấp menu.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(111)</span><div class='page_container' data-page=111>

<b>Dùng Menu Editor </b>

để

<b> thi</b>

ế

<b>t k</b>

ế

<b> menu bar (tt) </b>



Dựa vào đặc tả menu bar của slide trƣớc đây, nh ập lần lƣợt các m ục sau:
Caption = File, Name = mnuFile


Caption = Copy, Name = mnuFileCopy, ấn button  để vô thêm 1 cấp


Caption = Paste, Name = mnuFilePaste


Caption = View, Name = mnuView, ấn button  để ra 1 cấp


Caption = Standard, Name = mnuViewStand, ấn button  để vô thêm 1 cấp


Caption = Scientific, Name = mnuViewScien
Caption = -, Name = mnuViewBar



Caption = Digital grouping, Name = mnuViewDigital


Caption = Help, Name = mnuHelp, ấn button  để ra 1 cấp


Caption = Help Topics, Name = mnuHelpTopics, ấn button  để vô thêm 1


cấp


Caption = -, Name = mnuHelpBar


Caption = About MiniCalculator, Name = mnuHelpAbout.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(112)</span><div class='page_container' data-page=112>

<b>Dùng Menu Editor </b>

để

<b> thi</b>

ế

<b>t k</b>

ế

<b> menu bar (tt) </b>



Sau khi đặc tả xong menu, cửa
sổ menu editor có dạng nhƣ
sau. Lƣu ý lúc này b ạn vẫn
chƣa thấy menu 1 cách tr ực
quan:


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(113)</span><div class='page_container' data-page=113>

<b>K</b>

ế

<b>t qu</b>

<b> c</b>

<b>a ho</b>

<b>t </b>

độ

<b>ng thi</b>

ế

<b>t k</b>

ế

<b> menubar </b>




Sau khi tạo menu xong,


hãy ấn nút OK để đóng


tiện ích "Menu Editor",


form giao diện của



chƣơng trình sẽ giống


nhƣ hình bên:



Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(114)</span><div class='page_container' data-page=114>

<b>4.5 Thi</b>

ế

<b>t k</b>

ế

<b> Toolbar cho form giao di</b>

<b>n </b>



Để tạo Toolbar cho 1 form trong project, trƣớc hết ta phải thêm tập các điều
khiển "Window Common Controls 6.0" vào cửa sổ Toolbox của project:


Ấn phải chuột vào vị
trí trống của Toolbox,
chọn mục Components


Chọn tab Controls, duyệt và chọn mục tƣơng ứng, chọn OK.


các
icon
mới
đƣợc
thêm
vào
Tool-


box


Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(115)</span><div class='page_container' data-page=115>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form </b>



Toolbar là 1 cửa sổ chứa nhiều button (icon), mỗi button cho phép


thực hiện 1 chức năng của ứng dụng. Các button có kích th ƣớc


đều nhau, nên k ết hợp 1 ảnh bitmap với từng button, nội dung


ảnh làm sao gợi ý cho ng ƣời dùng v ề chức năng tƣơng ứng (thí


dụ ảnh dạng cái kéo g ợi ý ch ức năng Cut,...).



Công việc đầu tiên c ần thực hiện là dùng 1 trình so ạn thảo đồ


họa (Paint, CorelDraw,...) để thiết kế (vẽ) từng ảnh bitmap gợi ý


cho từng button trong Toolbar. Bạn có thể dùng trình "Screen



Capture" cắt các icon có s ẵn của ứng dụng đang chạy và dán vào


vùng soạn thảo ảnh của trình soạn thảo đồ họa. Sau khi soạn



xong 1 ảnh, ta cất ảnh lên file d ạng *.bmp. Lƣu ý r ằng các ảnh


phải có cùng kích th ƣớc (thí dụ 16*16, 20*20,32*32,...). Slide kế


miêu t ả cửa sổ của trình soạn thảo đồ họa Paint.



Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(116)</span><div class='page_container' data-page=116>

<b>V</b>

ẽ ả

<b>nh cho button b</b>

<b>ng trình Paint </b>



Soạn thảo 1 button là vẽ từng pixel


ảnh. Để dễ vẽ, bạn nên phóng to ảnh
lên khoảng 400% trở lên.


Trƣớc khi vẽ 1 pixel, hãy ch ọn màu
vẽ thích hợp.


Sau khi vẽ xong, dùng menu File.Save
As để cất ảnh lên file thích h ợp:


copy.bmp
paste.bmp
standard.bmp
scientific.bmp
help.bmp


about.bmp


Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(117)</span><div class='page_container' data-page=117>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>



> Dùng qui trình t ạo phần tử
giao diện trong form nhƣ đã gi
ới thiệu để tạo 1 đối tƣợng
ImageList, đối tƣợng này sẽ
chứa các ảnh bitmap đƣợc


dùng cho các icon Toolbar, v ị
trí và kích thƣớc của đối tƣợng
ImageList khơng quan trọng vì
nó sẽ bị ẩn khi chƣơng trình
chạy.




2.1 Ấn phải chuột vào đối tƣợng
ImageList rồi chọn mục
Properties để hiển thị cửa sổ
"Properties Page" của đối
tƣợng ImageList.


Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(118)</span><div class='page_container' data-page=118>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>



2.2 Chọn tab General, chọn checkbox Custom rồi nhập kích thƣớc của
button Toolbar vào 2 field Height và Width.


Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(119)</span><div class='page_container' data-page=119>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>



2.3 Chọn tab Images rồi thêm từng ảnh button vào ImageList bằng trình


tự: ấn Insert Picture, duyệt và chọn file image, nhập giá tr ị cho field
Key. Để truy xuất ảnh button, ta dùng ho ặc thuộc tính Index hoặc
thuộc tính Key (tên g ợi nhớ).


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(120)</span><div class='page_container' data-page=120>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>



2.4 Sau 6 lần insert


icon vào ImageList,
ta có kết quả nhƣ
hình bên. B ạn có
thể chọn lại từng


icon để kiểm


tra/hiệu chỉnh các
thu ộc tính của nó.


Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(121)</span><div class='page_container' data-page=121>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>



= Tạo 1 đối tƣợng Toolbar, vị trí và kích thƣớc của đối tƣợng này khơng


quan trọng vì nó sẽ ln đƣợc xếp ngay dƣới menubar.


Khoa Công nghệ Thông tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(122)</span><div class='page_container' data-page=122>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>



3.1 Mở cửa sổ thuộc tính của


Toolbar, chọn tab


General, chọn ImageList
kết hợp với Toolbar trong
listbox ImageList. Nếu
muốn hình ảnh của từng
icon khác nhau cho t ừng
trạng thái (ch ƣa chọn,
đƣợc chọn, bị cấm), bạn
phải tạo 2 ImageList


khác: HotImageList (tr
ạng thái đƣợc chọn) và
DisableImageList (trạng
thái b ị cấm).


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng



</div>
<span class='text_page_counter'>(123)</span><div class='page_container' data-page=123>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>


3.2 Chọn tab Buttons, thêm


từng button vào Toolbar
và thiết lập thuộc tính của
nó bằng trình tự các ho ạt
động sau:


Ấn Insert Button để
thêm button mới,


Nhập giá tr ị thuộc tính
"Key",


Nhập chỉ số "Images"
trong ImageList đƣợc
dùng cho button,


Nhập trị cho thuộc tính
"ToolTipText"...


Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(124)</span><div class='page_container' data-page=124>

<b>Qui trình t</b>

<b>o Toolbar c</b>

<b>a form (tt) </b>


3.3 Sau khi thêm 6 button vào Toolbar thì Toolbar có dạng sau:


Khoa Cơng nghệ Thơng tin Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng Môn: Tin học



</div>
<span class='text_page_counter'>(125)</span><div class='page_container' data-page=125>

<b>Ghi chú v</b>

<b> qui trình t</b>

<b>o giao di</b>

<b>n </b>



Thƣờng thì form giao diện nhƣ MiniCalculator khơng cần chứa


menubar và Toolbar. Giao diện dạng này đƣợc gọi là Dialog


based.



Còn 2 dạng giao diện ứng dụng phổ biến khác là:



SDI (Single Document Interface): cửa sổ của chƣơng trình



gồm 1 menubar, 1 hay nhiều Toolbar và 1 cửa sổ làm việc duy


nhất. Từng thời điểm, cửa sổ làm việc này sẽ cho phép hiển


thị/hiệu chỉnh 1 document của ứng dụng.



và MDI (Multiple Document Interface): cửa sổ của chƣơng trình


gồm 1 menubar, 1 hay nhiều Toolbar và n cửa sổ làm việc



khác nhau, m ỗi cửa sổ làm việc sẽ cho phép hiển thị/hiệu


chỉnh 1 document của ứng dụng.



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(126)</span><div class='page_container' data-page=126>

<b>Giao di</b>

<b>n SDI (Single Document Interface) </b>



Menubar
Toolbar



Working
region


(tại từng
thời điểm


chỉ có 1
để xử lý 1


document
của ứng
dụng)


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(127)</span><div class='page_container' data-page=127>

<b>Giao di</b>

<b>n MDI (Multiple Document Interface) </b>



Menubar
Toolbar


Working
region
(tại từng
thời điểm
có thể mở
cửa sổ
để xử lý n
document


khác


nhau)


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(128)</span><div class='page_container' data-page=128>

<b>Ghi chú v</b>

<b> qui trình t</b>

<b>o giao di</b>

<b>n (tt) </b>



Để tạo giao diện trực quan của các ứng dụng SDI và MDI đƣợc


dễ dàng, VB cung cấp cho ngƣời dùng 1 d ạng Project tên là


"VB Application Wizard".



Chọn dạng Project này khi tạo Project, VB sẽ hƣớng dẫn ngƣời


dùng t ạo ra các ph ần tử giao diện rất dễ dàng, trong đó 2 đối


tƣợng cơ bản là menubar và Toolbar đƣợc VB tạo tự động,


ngƣời lập trình chỉ cần hiệu chỉnh lại theo yêu c ầu riêng.



Khoa Công nghệ Thông tin Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng Môn: Tin học


</div>
<span class='text_page_counter'>(129)</span><div class='page_container' data-page=129>

<b>4.6 T</b>

<b>o th</b>

<b> t</b>

<b>c x</b>

<b> lý s </b>

<b> ki</b>

<b>n cho các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n </b>


Sau khi đã thi ết kế trực quan giao diện của ứng dụng theo yêu c ầu, bạn sẽ
tạo các th ủ tục xử lý s ự kiện cần thiết cho từng đối tƣợng giao diện.


Để tạo thủ tục xử lý cho 1 option trong menu, b ạn chọn menu tƣơng ứng, dời
chuột về option cần tạo thủ tục rồi chọn nó, template của thủ tục sẽ đƣợc tạo ra.


Các ch ƣơng tới sẽ giới thiệu cú pháp VBđể bạn có thể viết code cho thủ tục.



Khoa Công nghệ Thông tin Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng Môn: Tin học


</div>
<span class='text_page_counter'>(130)</span><div class='page_container' data-page=130>

<b>T</b>

<b>o th</b>

<b> t</b>

<b>c x</b>

<b> lý s </b>

<b> ki</b>

<b>n cho các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n (tt) </b>


Để tạo thủ tục xử lý cho 1 button trong Toolbar, b ạn ấn kép chuột vào button
đó, template của thủ tục sẽ đƣợc tạo ra (lƣu ý ch ỉ có 1 thủ tục xử lý cho t ất cả
các button trong 1 Toolbar, thủ tục này sẽ dựa vào thuộc tính Button.Key để
biết button nào đã đƣợc chọn).


Để tạo thủ tục xử lý cho 1 command button, b ạn ấn kép chuột vào
command button đó, template của thụ tục sẽ đƣợc tạo ra:


Khoa Cơng nghệ Thơng tin Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng Môn: Tin học


</div>
<span class='text_page_counter'>(131)</span><div class='page_container' data-page=131>

<b>T</b>

<b>o th</b>

<b> t</b>

<b>c x</b>

<b> lý s </b>

<b> ki</b>

<b>n cho các</b>

đố

<b>i t</b>

ƣợ

<b>ng giao di</b>

<b>n (tt) </b>


Cách t ổng quát để tạo thủ tục xử lý s ự kiện là mở cửa sổ code


(View.Code), chọn tên đối tƣợng trong danh sách r ồi chọn sự kiện cần xử
lý, th ủ tục xử lý tƣơng ứng sẽ đƣợc tạo ra:


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 4: Qui trình thiết kế trực quan giao diện của ứng dụng


</div>
<span class='text_page_counter'>(132)</span><div class='page_container' data-page=132>

<b>MÔN TIN H </b>

<b>C </b>



<i><b>Ch</b></i>

ƣơ

<i><b>ng 5 </b></i>



<b>CÁC KI </b>

<b>U D</b>

<b> LI</b>

<b>U TRONG VB </b>



5.1 Biến dữ liệu & định nghĩa biến




5.2 Các ki ểu dữ liệu định sẵn của VB 6.0.


5.3 Việc dùng & t ạo class đối tƣợng



5.4 Các tính ch ất chính yếu của biến dữ liệu


5.5 Hằng gợi nhớ



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(133)</span><div class='page_container' data-page=133>

<b>5.1 Bi</b>

ế

<b>n d</b>

<b> li</b>

<b>u </b>



Mỗi ứng dụng thƣờng xử lý nhi ều dữ liệu, ta dùng khái ni ệm "biến"
để lƣu trữ dữ liệu trong bộ nhớ máy tính, m ỗi biến lƣu trữ 1 dữ liệu
của chƣơng trình.


Mặc dù VB khơng đòi hỏi, nhƣng ta nên định nghĩa rõ ràng t ừng
biến trƣớc khi truy xuất nó để code của chƣơng trình đƣợc trong
sáng, d ễ hiểu, dễ bảo trì và phát tri ển.


Định nghĩa 1 biến là:


Định nghĩa tên nh ận dạng cho biến,


Kết hợp kiểu với biến để xác định cấu trúc d ữ liệu của
biến, Định nghĩa tầm vực truy xuất biến.


Cú pháp đơn giản của lệnh định nghĩa biến:



[<b>Static|Public|Private|Dim</b>] <i>AVariable</i> <b>As</b> <i>Type </i>


tại từng thời điểm, biến chứa 1 giá tr ị (nội dung) cụ thể. Theo thời
gian nội dung của biến sẽ bị thay đổi theo tính chất xử lý c ủa code.


Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(134)</span><div class='page_container' data-page=134>

Đị

<b>nh ngh</b>

ĩ

<b>a tên bi</b>

ế

<b>n </b>



Cách đặt tên cho 1 bi ến (hay cho bất kỳ phần tử trong chƣơng
trình): Tên bi ến có thể dài đến 255 ký t ự,


Ký t ự đầu tiên ph ải là một ký t ự chữ (letter),


Các ký t ự tiếp theo có thể là các ký t ự chữ (letter), ký s ố (digit),
dấu gạch dƣới,


Tên bi ến không đƣợc chứa các ký t ự đặc biệt nhƣ các ký t ự: ^, &,
), (,%, $, #, @, !, ~, +, -, *, …


VB không phân bi ệt chữ HOA hay chữ thƣờng trong tên bi ến.
Ví dụ: Tên bi ến hợp lệ Tên bi ến khơng hợp lệ


+ Base1_ball + Base.1: vì có dấu chấm


+ ThisIsLongButOk + Base&1: vì có dấu &


1Base_Ball: ký t ự đầu là 1 số



Nên ch ọn tên bi ến ngắn gọn nhƣng thể hiện rõ ý ngh ĩa. Ví dụ: Ta muốn
có một biến để lƣu hệ số lãi su ất ngân hàng (Interest Rate), ta nên dùng
tên bi ến là: InterestRate hoặc Irate chứ không nên dùng tên bi ến là IR…


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(135)</span><div class='page_container' data-page=135>

Đị

<b>nh ngh</b>

ĩ

<b>a tên bi</b>

ế

<b>n (tt) </b>



Với ví dụ ở trƣớc, dòng lệnh sau đây:


IterestRateEarned = Total*InterestRate


sẽ dễ hiểu hơn dòng lệnh



IE = T*IR



Khi viết tên bi ến ta nên vi ết hoa chữ đầu tiên c ủa một từ


có ý nghĩa.



Ví dụ: InterestRate sẽ dễ đọc hơn interestrate


hay iNTERestRaTe…



Không đƣợc dùng tên bi ến trùng v ới các t ừ khố nh ƣ:

Print,


Sub,

End

… (t

khóa là những từ

mà ngôn ngữ

VB

đã dùng cho


nh

ững

thành phần xác định của ngôn ngữ)



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB



</div>
<span class='text_page_counter'>(136)</span><div class='page_container' data-page=136>

<b>5.2 Các ki</b>

<b>u d</b>

<b> li</b>

<b>u c</b>

ơ

<b> b</b>

<b>n </b>

đị

<b>nh s</b>

<b>n c</b>

<b>a VB </b>



<b>Byte: </b>

1 byte, 0 to 255



<b>Boolean: </b>

2 bytes,

<b> True </b>

or

<b> False </b>


<b>Integer: </b>

2 bytes, -32,768 to 32,767



<b>Long </b>

(long integer): 4 bytes



-2,147,483,648 to 2,147,483,647



<b>Single </b>

(single-precision floating-point):4 bytes



-3.402823E38 to -1.401298E-45 ;1.401298E-45 to



3.402823E38

<b>Double </b>

(double-precision floating-point): 8 bytes


-1.79769313486231E308 to -4.94065645841247E-324;



4.94065645841247E-324 to 1.79769313486232E308



<b>Currency </b>

(scaled integer): 8 bytes



-922,337,203,685,477.5808 to 922,337,203,685,477.5807



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(137)</span><div class='page_container' data-page=137>

<b>Các ki</b>

<b>u d</b>

<b> li</b>

<b>u c</b>

ơ

<b> b</b>

<b>n </b>

đị

<b>nh s</b>

<b>n c</b>

<b>a VB (tt) </b>



<b>Decimal</b>: 14 bytes


+/-79,228,162,514,264,337,593,543,950,335 (khơng có dấu chấm thập
phân) +/-7.9228162514264337593543950335 (có 28 ký số bên ph ải dấu
chấm) +/-0.0000000000000000000000000001 là số khác 0 nh ỏ nhất.


<b>Date</b>: 8 bytes; từ January 1, 100 tới December 31, 9999


<b>Object: </b>4 bytes; chứa tham khảo đến bất kỳ đối tƣợng nào
<b>String </b>(variable-length): 10 bytes + độ dài của


chuỗi 0 tới 2G ký t ự


<b>String*n </b>(fixed-length): chuỗi có độ dài cố


định 1 tới 65,400 ký t ự


<b>Variant </b>(with numbers) : 16 bytes


Bất kỳ số nào nằm trong phạm vi kiểu Double


<b>Variant </b>(with characters): 22 bytes + độ dài chuỗi
cùng độ dài nhƣ kiểu String


<b>User-defined </b>(using Type): kiểu do ngƣời dùng định nghĩa


(record) gồm nhiều field, mỗi field có kiểu riêng theo yêu c ầu.


Khoa Công nghệ Thông tin Môn: Tin học



Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(138)</span><div class='page_container' data-page=138>

<b>Các ki</b>

<b>u d</b>

<b> li</b>

<b>u c</b>

ơ

<b> b</b>

<b>n </b>

đị

<b>nh s</b>

<b>n c</b>

<b>a VB (tt) </b>


<b>Array</b>: dãy nhi ều phần tử có cấu trúc d ữ liệu đồng nhất, mỗi phần tử đƣợc


truy xuất độc lập nhờ chỉ số của nó trong dãy.


Ví dụ: Dim vector(10) As Integer


định nghĩa biến vector là 1 dãy g ồm 10 phần tử nguyên, vector(i) là tên nh
ận dạng của phần tử thứ i của dãy này.


Ngoài các ki ểu dữ liệu định sẵn, VB cịn cung cấp cho ngƣời lập trình 1 phƣơng
tiện để họ có thể định nghĩa bất kỳ kiểu dữ liệu chƣa cung cấp sẵn nhƣng lại


cần thiết cho ứng dụng của họ, ta gọi các ki ểu này là <b>ki</b>ể<b>u do ng</b>ƣờ<b>i dùng</b> đị<b>nh </b>


<b>ngh</b>ĩ<b>a</b>. Thí dụ sau đây là phát bi<b> </b>ểu định nghĩa kiểu miêu t ả các thơng tin chính v ề


máy tính cá nhân:
Type SystemInfo


CPU As Variant
Memory As Long


DiskDrives(25) As String ' Fixed-size array.
VideoColors As Integer


Cost As Currency



PurchaseDate As Variant
End Type




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(139)</span><div class='page_container' data-page=139>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u String </b>


<b>Ki</b>ể<b>u String </b>(chuỗi ký t ự):


String là kiểu dữ liệu đƣợc dùng để lƣu trữ chuỗi các ký t ự (độ dài
bất kỳ)


Giá tr ị chuỗi ký t ự đƣợc đặt trong cặp dấu nháy kép (vd: "Môn
Tin học")


Trên lý thuy ết, một biến thuộc kiểu String có thể lƣu trữ đƣợc đến 2
tỵ ký t ự nhƣng trong thực tế, độ dài của chuỗi bị hạn chế theo dung
lƣợng bộ nhớ của máy tính.


Có thể thực hiện đƣợc các phép tốn n ối kết chuỗi (+,&) trên các chu
ỗi ký t ự và có khá nhi ều hàm xử lý chu ỗi có sẵn.


Có thể định nghĩa một biến thuộc kiểu String nhƣ sau:
<b>Dim </b><i>AStringVariable</i><b> As String </b>


<b>Dim </b><i>AStringVariable</i><b> As String*100 </b>



Hay <b>Dim </b><i>AStringVariable$ </i>


Tiếp vĩ ngữ $ đi sau tên bi ến dùng để khai báo m ột biến thuộc kiểu
String (nhƣng ta không nên dùng cách này vì t ối nghĩa, khó bảo trì).


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(140)</span><div class='page_container' data-page=140>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Integer </b>



<b>Ki</b>

<b>u Integer </b>

(Số

nguyên):



Integer là kiểu dữ liệu đƣợc dùng để lƣu trữ các s ố nguyên ng
ắn nằm trong khoảng từ - 32768 đến 32767.


Số nguyên đƣợc lƣu trữ trong bộ nhớ bằng 2 byte.


Có thể thực hiện đƣợc các phép toán s ố học (nhƣ +,-,*,/,...) trên
các dữ liệu thuộc kiểu Integer.


Khai báo m ột biến thuộc kiểu Integer nhƣ sau:


<b>Dim </b><i>AnIntegerVariable</i><b> As Integer </b>


Hay <b>Dim </b><i>AnIntegerVariable% </i>


Tiếp vĩ ngữ % đi sau tên bi ến đƣợc dùng để khai báo m ột biến
thuộc kiểu Integer.



Vd: Dim Age As Integer


...


Age = 24


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(141)</span><div class='page_container' data-page=141>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Long </b>



<b>Ki</b>

<b>u Long </b>

(Số

nguyên dài):



Dùng để lƣu trữ các s ố nguyên l ớn nằm trong khoảng
từ: -2,147,483,648 đến 2,147,483,647


Số nguyên dài đƣợc lƣu trữ trong bộ nhớ bằng 4 byte.


Có thể thực hiện đƣợc các phép toán s ố học (nhƣ +,-,*,/,...) trên
các dữ liệu thuộc kiểu Long.


Khai báo m ột biến thuộc kiểu Long nhƣ sau:


<b>Dim </b><i>ALongIntegerVariable</i><b> As Long </b>


Hay <b>Dim </b><i>AnIntegerVariable& </i>


Tiếp vĩ ngữ & đi sau tên bi ến đƣợc dùng để khai báo m ột biến


thuộc kiểu Long.


Vd: Dim EarthAge As Long


...


EarthAge = 3276979


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(142)</span><div class='page_container' data-page=142>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Byte </b>



<b>Ki</b>

<b>u Byte </b>

(Số

nguyên d

ƣơng nhỏ):



Dùng để lƣu trữ các s ố nguyên không âm n ằm trong tầm trị


từ: 0 đến 255



Chiếm 1 byte trong bộ nhớ.



Có thể thực hiện đƣợc các phép tốn s ố học (nhƣ


+,-,*,/,...) trên các d ữ liệu thuộc kiểu Byte.



Kiểu dữ liệu này rất hiệu dụng trong việc lƣu trữ các s ố


nguyên nhỏ vì nó chiếm ít bộ nhớ, tốc độ xử lý nhanh.


Ví dụ: Khi cần lƣu tuổi của một ngƣời chúng ta không nên



dùng kiểu Integer hay Long mà nên dùng ki ểu Byte vì tuổi


của một ngƣời ln là một số khơng âm, có giá tr ị tối đa



thƣờng nhỏ hơn 120.



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(143)</span><div class='page_container' data-page=143>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Boolean </b>



<b>Ki</b>

<b>u Byte </b>

(tt):



Khai báo cho m ột biến thuộc kiểu Byte nhƣ sau:



<b>Dim </b>

<i>AByteVariable</i>

<b> As Byte </b>

'khơng có tiếp vĩ

ngữ



Ví dụ:



Dim Age As Byte


...



Age = 100



<b>Ki</b>

<b>u Boolean </b>

(giá tr

luận lý):



Là kiểu dữ liệu lƣu trữ hai giá tr ị luận lý True/False.


Đƣợc lƣu trữ trong máy tính b ằng 2 byte.



Khai báo



<b>Dim </b>

<i>ABooleanVariable</i>

<b> As Boolean </b>




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(144)</span><div class='page_container' data-page=144>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Single </b>


<b>Ki</b>ể<b>u Single </b>(số thực có độ chính xác đơn - Single Precision):


Lƣu trữ các s ố thực có độ chính xác đơn (gần đúng v ới giá tr ị gốc với độ
chính xác ở mức 7 chữ số)


Ví dụ số 1234.567 thì ký s ố 7 (bên ph ải nhất) có thể khơng chính xác.
Kiểu dữ liệu này chiếm 4 byte trong bộ nhớ và miêu t ả các giá tr ị trong phạm


vi: Từ -3.402823E38 đến -1.401298E-45 cho các giá tr ị âm
và từ 1.401298E-45 đến 3.402823E38 cho các giá tr ị dƣơng


Có thể thực hiện các phép tốn s ố học trên ki ểu dữ liệu này nhƣng thƣờng


chậm hơn so vớI các bi ến thuộc kiểu Integer hay Long. Do cách ch ứa số Single


chỉ ở mức gần đúng nên các phép toán trên các d ữ liệu thuộc kiểu này sẽ
tạo kết quả gần đúng (nh ƣng đủ dùng trong đại đa số yêu c ầu thực tế).
Khai báo nh ƣ sau:


<b>Dim </b><i>ASingleVariable</i><b> As Single </b>


Hay <b>Dim </b><i>ASingleVariable!</i><b> </b>'Tiếp vĩ ngữ là dấu !


Ví dụ:



Dim InterestRate As Single, Earned!, Total As
Single Earned = InterestRate * Total




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(145)</span><div class='page_container' data-page=145>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Double </b>


<b>Ki</b>ể<b>u Double </b>(số thực có độ chính xác kép - Double Precision):


Lƣu trữ các s ố thực có độ chính xác kép (g ần đúng v ới giá tr ị gốc với độ
chính xác ở mức 16 chữ số).


Ví dụ số 1234.57890123456 thì ký s ố bên ph ải nhất (6) có thể khơng chính xác.
Kiểu dữ liệu này chiếm 8 byte trong bộ nhớ và miêu t ả các giá tr ị trong phạm vi:


-1.797693234862232E308 đến -4.94065645841247E-324 và
4.94065645841247E-324 đến 1.797693234862232E308


Có thể thực hiện các phép tốn s ố học trên ki ểu dữ liệu này nhƣng rất chậm
(chậm hơn cả kiểu Single). Do cách ch ứa số Double chỉ ở mức gần đúng
nên các phép toán trên các d ữ liệu thuộc kiểu này sẽ tạo kết quả gần đúng
(nh ƣng quá đủ dùng trong đại đa số yêu c ầu thực tế).


Khai báo nh ƣ sau:


<b>Dim </b><i>ADoubleVariable</i><b> As Double </b>



Hay <b>Dim </b><i>ADoubleVariable#</i> „ Tiếp vĩ ngữ là dấu #


Ví dụ:


Dim InterestRate As Double, Earned#, Total As
Double Earned = InterestRate * Total




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(146)</span><div class='page_container' data-page=146>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Currency </b>


<b>Ki</b>ể<b>u Currency </b>(Tiền Tệ)


Kiểu Currency đƣợc dùng để lƣu các d ữ liệu thuộc kiểu tiền tệ
(số lƣợng tiền).


Đƣợc lƣu trữ trong bộ nhớ bằng 8 byte.


Có thể có 4 chữ số ở bên ph ải dấu chấm thập phân và 15 ch ữ số ở
bên trái d ấu thập phân.


Có tầm trị: - 922337203685477.5808 đến 922337203685477.5807
Có thể thực hiện đƣợc các phép toán s ố học trên ki ểu dữ liệu này
nhƣng tốc độ xử lý r ất chậm nhƣ đối với các s ố thực có độ chính
xác kép, song nó là kiểu dữ liệu ƣa dùng cho các phép tính tài chính.
Khai báo: <b>Dim</b> ACurrencyVariable <b>As Currency </b>



Hay<b>Dim </b><i>ACurrencyVariable@</i> 'Tiếp vĩ ngữ là dấu @


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(147)</span><div class='page_container' data-page=147>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Date </b>



Kiểu <b>Date</b> (Ngày tháng)


Dùng để lƣu trữ các d ữ liệu thuộc kiểu ngày giờ cho bất kỳ thời điểm nào
từ 0h00 ngày 01/01/100 đến 0h00 ngày 31/12/9999.


Kiểu Date đƣợc lƣu trữ trong máy tính b ằng 8 bytes.


Dữ liệu thuộc kiểu Date phải đƣợc bao bởi cặp dấu # ở hai đầu.


Ví dụ: Millenium = #January 1, 2000#


Millenium = #Jan 1, 2000#
Millenium = #1/1/ 2000#


Nếu ta chƣa gán tr ị cho biến thuộc kiểu Date thì VB mặc nhận đó là lúc
0:0:0 cùng ngày.


Có thể dùng d ạng thức AM/PM hay dạng 24 giờ để biểu diễn cho giá tr ị
giờ Ví dụ: PreMillenium = #December 31, 1999 11:59:59PM#


hay PreMillenium = #December 31, 1999 23:59:59#



Khai báo m ột biến thuộc kiểu Date nhƣ sau:


<b>Dim </b><i>ADateVariable</i><b> As Date </b>„Khơng có ếtip vĩ ngữ


Ví dụ: Dim PreMillenium As Date


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(148)</span><div class='page_container' data-page=148>

Đặ

<b>c tính chi ti</b>

ế

<b>t v</b>

<b>ki</b>

<b>u Variant </b>



Kiểu <b>Variant</b> (Kiểu dữ liệu biến đổi)


Kiểu dữ liệu này đƣợc thiết kế để lƣu mọi dữ liệu thuộc kiểu định sẵn của
VB. Ví dụ nhƣ: Date, String, Double, Integer…


Nếu không khai báo ki ểu rõ ràng cho 1 bi ến thì biến này sẽ đƣợc hiểu là
thuộc kiểu này.


VB sẽ chuyển đổi dữ liệu thuộc kiểu Variant thành một kiểu dữ liệu khác
cho phù h ợp (khi gán d ữ liệu,...).


Ví dụ: String  Variant,Integer  Variant,Date  Variant


Tuy nhiên vi ệc chuyển đổi kiểu nhƣ trên s ẽ dẫn đến nhiều lỗi không
lƣờng trƣớc đƣợc.


Dùng ki ểu Variant thay cho một kiểu cụ thể sẽ làm chậm tốc độ xử lý c ủa
chƣơng trình do phải tốn thờI gian chuyển đổi và tốn nhiều bộ nhớ hơn.



Khai báo m ột biến thuộc kiểu Variant nhƣ sau:


<b>Dim </b><i>AVariantVariable</i><b> As Variant </b>


Hay <b>Dim</b> <i>AVariantVariable</i> 'Mặc nhiên thu ộc kiểu Variant


Ví dụ: Dim x, y, z As Integer 'x,y là kiểu Variant


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(149)</span><div class='page_container' data-page=149>

<b>5.3 Vi</b>

<b>c dùng các class</b>

đố

<b>i t</b>

ƣợ

<b>ng có s </b>

<b>n </b>



Nhƣ chúng ta đã trình bày trong ch ƣơng 3, VB hỗ trợ việc lập trình OOP ở
1 mức độ nhất định:


VB cung cấp 1 số class đối tƣợng, ngƣời lập trình có thể dùng chúng ở


bất kỳ project ứng dụng nào, ta có thể nói rằng tên c ủa các class định sẳn
này cũng là kiểu định sẵn của VB.




VB cho phép dùng các class đối tƣợng đƣợc ngƣời khác vi ết thông


qua công nghệ COM, ActiveX Control (sẽ trình bày trong chƣơng 12).


o VB cho ngƣời lập



trình định nghĩa các
class mới ngay


trong project phần
mềm của họ nhờ
khái niệm "class
module" (sẽ đƣợc
trình bày chi tiết
trong chƣơng 6).


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(150)</span><div class='page_container' data-page=150>

<b>Vi</b>

<b>c dùng các class</b>

đố

<b>i t</b>

ƣợ

<b>ng có s </b>

<b>n (tt) </b>



Dù ở dạng nào, mỗi class đều có tên nh ận dạng, tên này chính là


tên ki ểu và đƣợc dùng trong phát bi ểu định nghĩa biến đối tƣợng:



Dim pclipbd As Clipboard


...



Set pclipbd = New Clipboard



Lƣu ý r ằng biến thuộc kiểu class không chứa trực tiếp đối tƣợng,


nó chỉ là tham khảo (phƣơng tiện truy xuất) đến đối tƣợng. Do đó


trƣớc khi dùng bi ến đối tƣợng, nhất thiết phải tạo đối tƣợng



(thƣờng thông qua hàm New) để nhận tham khảo đến đối tƣợng



rồi gán tham kh ảo này vào biến nhƣ thí dụ trên.



Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(151)</span><div class='page_container' data-page=151>

<b>Qui trình t</b>

<b>o 1 class m</b>

<b>i </b>

để

<b> dùng trong project </b>



Ấn chuột phải trong cửa sổ Project, dời chuột tới mục "Add" rồi chọn
mục "Class Module" trong danh sách.


Khi cửa sổ "Add class module" hiển thị, chọn icon "Class module" rồi ấn
"Open" để tạo ra class mới.


thiết lập tên class module cho
phù h ợp (trong cửa sổ thuộc
tính), tên này chính là tên ki ểu
đƣợc dùng trong phát bi ểu
định nghĩa biến đối tƣợng.


ấn kép chuột vào mục tên class
mới tạo ra để hiển thị cửa sổ
code đặc tả cho class đó.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(152)</span><div class='page_container' data-page=152>

<b>C</b>

<b>a s</b>

ổ đặ

<b>c t</b>

<b> class </b>




Định nghĩa từng thuộc tính dữ liệu và từng method của class theo cú pháp
VB (sẽ đƣợc trình bày sau).


Debug từng method của class xem nó hoạt động đúng ch ức năng mong
muốn trƣớc khi dùng (s ẽ trình bày hoạt động debug sau).


Mỗi class có 2 method
đặc biệt:


o Private Sub


Class_Initialize():
miêu t ả các hành
động khi đối tƣợng
vừa đƣợc tạo ra.


o Private Sub


Class_Terminate():
miêu t ả các hành


động khi đối tƣợng
sắp sửa bị xóa.


Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(153)</span><div class='page_container' data-page=153>

<b>5.4 </b>

Đặ

<b>t tên bi</b>

ế

<b>n theo cách "ký hi</b>

<b>u Hungarian" </b>


<b>Ký hi </b>ệ<b>u Hungarian </b>


Một số lập trình viên th ƣờng thích bổ sung thêm m ột tiếp đầu ngữ
vào tên bi ến để nêu rõ ki ểu của biến, nhờ đó tăng độ dễ đọc cho
chƣơng trình.


Ví dụ: sngInterestRate: Biến có độ chính xác đơn (Single)
intCount: Biến thuộc kiểu Integer


strName: Biến thuộc kiểu String


Qui ƣớc trên g ọi là ký hi ệu Hungarian (do Charles Simonge, một
lập trình viên g ốc Hungari của Miscrosoft) đề xƣớng. Lƣu ý r ằng
bạn vẫn phải khai báo ki ểu cho các bi ến trên và ki ểu phải tƣơng
thích với tiếp đầu ngữ đã dùng v ới tên bi ến.


Một số kiểu và tiếp đầu ngữ tƣơng ứng:


String <i>str</i> Integer <i>int</i> Single <i>sng</i> Currency cur


Boolean <i>bln</i> Long <i>lng</i> Double <i>dbl</i> Variant <i>vnt </i>


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(154)</span><div class='page_container' data-page=154>

<b>Các </b>

ƣ

<b>lu ý v </b>

<b> bi</b>

ế

<b>n </b>



Trong một ngữ cảnh (trong 1 chƣơng trình con, trong 1 module, cấp tồn
cục), khơng thể dùng hai bi ến cùng tên (VB không phân bi ệt chữ HOA hay
chữ thƣờng).



Tên bi ến là phần tên, không k ể đến tiếp vĩ ngữ miêu t ả kiểu kết hợp.
Ví dụ: Biến a% và biến a! là trùng nhau, VB s ẽ đƣa ra thông báo l ỗi:
“Duplicate Definition”


Sau khi định nghĩa biến, VB sẽ khởi động trị ban đầu cho biến đó. Ví dụ:


Biến thuộc kiểu Variant có giá tr ị ngầm định là “Empty” (r ỗng), giá tr ị


“Empty” sẽ biến mất khi ta gán cho bi ến một giá tr ị cụ thể.


Biến chuỗi có giá tr ị ngầm định là chuỗI rỗng "" (hai dấu nháy li ền


nhau). o Biến số có giá tr ịngầmđịnh là 0.


Không nên tin vào tr ị ngầm định của biến, phải gán giá tr ị cho biến trƣớc
khi dùng chúng.


1 biến tƣơng ứng với 1 vùng nh ớ, do đó khi gán m ột giá tr ị cho biến, giá tr ị
cũ của biến sẽ bị mất đi.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(155)</span><div class='page_container' data-page=155>

<b>T</b>

<b>m v</b>

<b>c truy xu</b>

<b>t bi</b>

ế

<b>n </b>



Tầm vực của một biến là tập các l ệnh đƣợc phép truy xuất biến đó.


Nhƣ đƣợc miêu t ả trong silde 7 (chƣơng 1), VB cho phép 3 cấp độ tầm


vực sau:


<b>C</b>ụ<b>c b</b>ộ<b> trong th</b>ủ<b> t</b>ụ<b>c</b>: bất kỳ lệnh nào trong thủ tục đều có thể truy xuất


đƣợc biến cục bộ trong thủ tục đó.
Private Sub Command1_Click()


Dim strGreeting As String 'Khai báo c ục bộ
...


End Sub


<b>C</b>ụ<b>c b</b>ộ<b> trong module</b>: bất kỳ lệnh nào trong module đều có thể truy xuất


đƣợc biến cục bộ trong module đó.


Private strAddr As String 'biến cục bộ trong


module Public strName As String 'biến toàn cục


<b>Toàn c </b>ụ<b>c</b>: bất kỳ lệnh nào trong chƣơng trình cũng có thể truy xuất


đƣợc biến toàn cục.


Trong một ngữ cảnh (cùng 1 th ủ tục, cùng 1 module, hay c ấp toàn cục), không


thể dùng hai bi ến cùng tên (VB không phân bi ệt chữ HOA hay chữ thƣờng)Môn:. Tin học


Khoa Công nghệ Thông tin



Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(156)</span><div class='page_container' data-page=156></div>
<span class='text_page_counter'>(157)</span><div class='page_container' data-page=157>

<b>Th</b>

<b>i gian s</b>

<b>ng c</b>

<b>a bi</b>

ế

<b>n </b>



Biến là 1 thực thể nên c ũng có thời gian sống hữu hạn, thời gian
sống của biến thƣờng phụ thuộc vào tầm vực của biến đó:


<b>Bi</b>ế<b>n c</b>ụ<b>c b</b>ộ<b> trong th</b>ủ<b> t</b>ụ<b>c</b>: đƣợc tạo ra lúc th ủ tục đƣợc gọi và mất
đi khi thủ tục kết thúc vi ệc xử lý và điều khiển đƣợc trả về lệnh gọi.
<b>Bi</b>ế<b>n c</b>ụ<b>c b</b>ộ<b> trong module</b>: đƣợc tạo ra lúc module đƣợc tạo ra và
mất đi khi module bị xóa.


Các (standard) modules có th ời gian sống từ lúc ch ƣơng
trình chạy cho đến khi chƣơng trình kết thúc.


Các đối tƣợng của class module hay form module đƣợc tạo ra khi
có yêu c ầu cụ thể. Tạo đối tƣợng nghĩa là tạo các thu ộc tính của
nó, các thu ộc tính của đối tƣợng sẽ mất đi khi đối tƣợng bị xóa.
<b>Bi</b>ế<b>n tồn c </b>ụ<b>c</b>: đƣợc tạo ra lúc ch ƣơng trình bắt đầu chạy và


chỉ mất đi khi chƣơng trình kết thúc.


Khoa Cơng nghệ Thơng tin Mơn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(158)</span><div class='page_container' data-page=158>

<b>Th</b>

<b>i gian s</b>

<b>ng c</b>

<b>a bi</b>

ế

<b>n (tt) </b>



Muốn kéo dài thời gian sống của 1 biến, ta thƣờng dùng 2 cách sau:



<b>Nâng c </b>ấ<b>p t</b>ầ<b>m v</b>ự<b>c</b>: từ cục bộ trong thủ tục lên c ục bộ trong module hay


lên tồn cục... Cách này ít đƣợc dùng t ƣờng minh vì nó sẽ thay đổi tầm


vực của biến. Để khắc phục điều này, VB cung cấp khái ni ệm "Static" kết
hợp với biến: biến có thuộc tính "Static" sẽ tồn tại mãi và ch ỉ mất đi khi
chƣơng trình kết thúc b ất chấp tầm vực của nó ra sao.


Private Sub Command1_Click()


Dim strGreeting As String 'biến cục
bộ Static strAddr As String


'biến cục bộ có thời gian sống lâu dài theo ứng dụng.
...


End Sub


<b>Ghi giá tr</b>ị<b> bi</b>ế<b>n ra môi tr </b>ƣờ<b>ng ch</b>ứ<b>a tin b</b>ề<b>n v</b>ữ<b>ng </b>(file trên đĩa) trƣớc


khi biến bị xóa. Khi cần lại giá tr ị của biến này, ta đọc giá tr ị của nó từ file


vào. Đây là ph ƣơng pháp thông d ụng để trao đổi dữ liệu giữa 2 ứng


dụng khác nhau hay giữa 2 lần chạy khác nhau c ủa cùng 1 ứng dụng.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB



</div>
<span class='text_page_counter'>(159)</span><div class='page_container' data-page=159>

<b>5.5 H</b>

<b>ng g</b>

<b>i nh</b>



Nhƣ ta đã bi ết, ta định nghĩa biến để lƣu trữ dữ liệu của



chƣơng trình. Ngay sau khi đƣợc định nghĩa, giá tr ị ban đầu



của biến thƣờng chƣa đƣợc xác định tƣờng minh, do đó ta phải


thiết lập (gán) giá tr ị cho biến trƣớc khi dùng l ại trị của biến.


Có 3 cách khác nhau để thiết lập (gán) giá tr ị cho 1 biến:



Từ tƣơng tác v ới ngƣời dùng, bi ến kết hợp với đối tƣợng giao
diện tƣơng ứng sẽ đƣợc gán giá tr ị mà ngƣời dùng nh ập vào.
Các tham s ố đƣợc truyền khi gọi thủ tục, khi hoàn thành code
trong thủ tục sẽ gán tr ị vào tham số.


Nhƣng cách c ơ bản và phổ biến nhất là dùng phát bi ểu gán v ới
cú pháp sau:


<i>AVariable </i><b>=</b><i> AExpression </i>


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(160)</span><div class='page_container' data-page=160>

<b>H</b>

<b>ng g</b>

<b>i nh</b>



Biểu thức đơn giản nhất là 1 giá tr ị, giá tr ị này có thể đƣợc


dùng nhiều nơi trong chƣơng trình.



Hằng gợi nhớ (Constant) là khái ni ệm cho phép ngƣời lập trình



kết hợp 1 tên g ợi nhớ với 1 giá tr ị để khi cần dùng giá tr ị đó, ta


khơng viết lại chi tiết cụ thể của trị mà chỉ dùng tên g ợi nhớ.



Cú pháp c ủa phát bi ểu định nghĩa hằng gợi nhớ:



<b>Const </b><i>ConstName</i><b> = </b><i>Value </i>
Ví dụ: Const PI = 3.1416


Lợi ích của việc dùng h ằng gợi nhớ:



Chƣơng trình sẽ trong sáng, d ễ đọc hơn, dẫn đến việc bảo trì,
nâng cấp chƣơng trình đƣợc thuận tiện hơn.


Tiết kiệm đƣợc bộ nhớ so với việc dùng bi
ến. Rút ng ắn đƣợc các câu l ệnh quá dài


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 5: Các ki ểu dữ liệu trong VB


</div>
<span class='text_page_counter'>(161)</span><div class='page_container' data-page=161>

<b>MÔN TIN H </b>

<b>C </b>



<i><b>Ch</b></i>

ƣơ

<i><b>ng 6 </b></i>



<b>CÁC L </b>

<b>NH </b>

ĐỊ

<b>NH NGH</b>

Ĩ

<b>A & KHAI BÁO VB </b>



6.1 Tổng quát v ề ngôn ngữ VB


6.2 Chú thích trong ch ƣơng trình.


6.3 Lệnh định nghĩa hằng gợi nhớ


6.4 Lệnh định nghĩa biến




6.5 Lệnh định nghĩa kiểu ngƣời dùng


6.6 Lệnh khai báo Declare



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(162)</span><div class='page_container' data-page=162>

<b>6.1 T</b>

<b>ng quát v</b>

<b> code c</b>

<b>a 1 </b>

<b>ng d</b>

<b>ng VB </b>



Một project VB thƣờng quản lý các thành ph ần cấu thành 1 ứng dụng VB.
Trong 1 project VB có 3 loại phần tử có chứa code (do đó ta cần biết cú
pháp VB để xây d ựng các lo ại phần từ này):


<b>Class module </b>định nghĩa sự hiện thực của 1 lớp đối tƣợng có cấu trúc


và hành vi giống nhau.


<b>Form module </b>là trƣờng hợp đặc biệt của class module, nó miêu t ả sự


hiện thực của 1 lớp đối tƣợng đặc biệt: một form giao diện.


<b>(Standard) Module </b>là đơn vị phần mềm nhỏ có 1 chức năng rõ ràng nào
đó. Theo trƣờng phái l ập trình cấu trúc (c ổ điển), ta dùng module để chia


ứng dụng ra nhiều phần nhỏ dễ quản lý ⇒ VB hỗ trợ cả 2 phƣơng pháp l ập


trình: có cấu trúc và OOP.


Ngoài 1 vài ngoại lệ nhỏ, tổ chức code cho 3 loại module trên hoàn toàn gi ống


nhau: đó là danh sách nhi ều lệnh VB phục vụ định nghĩa kiểu, hằng, biến và
thủ tục trong module đó. Trong lệnh định nghĩa thủ tục, ta sẽ dùng các l ệnh
thực thi để miêu t ả giải thuật của thủ tục.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(163)</span><div class='page_container' data-page=163>

<b>T</b>

<b>ng quát v</b>

<b> ngôn ng </b>

<b> VB </b>



Để dễ tiếp cận ngơn ngữ VB, ta hãy nhìn l ại ngơn ngữ tiếng Việt. Ta nói ngơn ngữ
tiếng Việt định nghĩa 1 tập các t ừ có nghĩa cơ bản, các qui t ắc ghép các t ừ


cơ bản này lại để tạo thành đoạn câu (phrase), câu (sentence), đoạn văn
(paragraph), bài văn (document) cùng ng ữ nghĩa của các ph ần tử đƣợc tạo
ra. Vì ngơn ngữ Việt là ngôn ngữ tự nhiên nên th ƣờng cho phép nhiều ngoại
lệ trong việc xây d ựng các ph ần tử.




Ngơn ngữ lập trình VB cũng định nghĩa 1 tập các ký t ự cơ bản (chƣa có


nghĩa), các qui t ắc ghép các ký t ự để tạo thành các t ừ có nghĩa (identifier),
biểu thức (expression), câu l ệnh (statement), thủ tục (Function, Sub, Property)
cùng ng ữ nghĩa của các ph ần tử đƣợc tạo ra. Vì ngơn ngữ VB là ngơn ngữ
lập trình cho máy tính th ực hiện nên s ẽ không cho phép 1 ngoại lệ nào trong
việc xây d ựng các ph ần tử.


Nghiên c ứu ngơn ngữ lập trình là học để nhớ rõ các ký t ự cơ bản của ngôn ngữ,
các qui t ắc để tạo danh hiệu, biểu thức, các qui t ắc để viết các câu l ệnh...



cùng ng ữ nghĩa của chúng ⇒ rất giống với việc học 1 ngôn ngữ tự nhiên:


Anh, Pháp, Nh ật,...


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(164)</span><div class='page_container' data-page=164>

<b>Các ký hi</b>

<b>u c</b>

ơ

<b> b</b>

<b>n c</b>

<b>a ngôn ng </b>

<b> VB </b>



Về nguyên t ắc, VB cho phép dùng h ầu hết các ký t ự mà bạn có thể nhập từ
bàn phím, trong đó các ký t ự chữ và số đƣợc dùng ch ủ yếu.


Qui tắc cấu tạo 1 danh hiệu đã đƣợc trình bày ở Slide 113 (chƣơng 5). 1 danh
hiệu có thể đƣợc dùng để đặt tên cho bi ến, hằng gợi nhớ, Function, Sub,


Property, form, class module, module,... và ngữ nghĩa của từng danh hiệu là
do sự qui định của ngƣời lập trình.


Qui tắc xây d ựng 1 biểu thức sẽ đƣợc trình bày trong chƣơng 7.


Có nhiều loại câu l ệnh VB khác nhau, qui t ắc xây d ựng 1 câu l ệnh phụ


thuộc vào loại câu l ệnh cụ thể ⇒ ta phải nghiên c ứu từng loại câu l ệnh và qui


tắc cấu thành nó, nhƣng may mắn số lƣợng loại câu l ệnh VB là không nhiều
(dƣới 20 loại).


Các câu l ệnh đƣợc chia làm 2 nhóm chính:



<b>Các </b>ệ<b>lnh </b>đị<b>nh ngh</b>ĩ<b>a</b>: xác định 1 hành động nào đó tại thời điểm dịch.


<b>Và các l</b>ệ<b>nh th</b>ự<b>c thi</b>: xác định 1 hành động nào đó tại thời điểm thực thi.


Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(165)</span><div class='page_container' data-page=165>

<b>6.2 Chú thích trong ch</b>

ƣơ

<b>ng trình </b>



Các l ệnh định nghĩa và các l ệnh thực thi mà ta vừa trình bày là để máy x ử lý,
chúng tuân th ủ các cú pháp c ụ thể mà ta sẽ trình bày sau. Nhƣng ý t


ƣởng chung là con ngƣời rất khó đọc và hiểu chúng.


Để trợ giúp cho ng ƣời đọc và hiểu các l ệnh VB trong chƣơng trình, VB cịn cung
cấp 1 lệnh đặc biệt: lệnh chú thích. Đây là l ệnh mà máy s ẽ bỏ qua (vì máy sẽ
khơng thể hiểu nổi ý ngh ĩa đƣợc miêu t ả trong lệnh này), tuy nhiên l ệnh này cho
phép ngƣời lập trình dùng ngơn ngữ tự nhiên để chú thích ý ngh ĩa của các lệnh
VB khác h ầu giúp chính h ọ hay ngƣời khác d ễ dàng hiểu chƣơng trình.


Cú pháp c ủa lệnh chú thích r ất đơn giản: chỉ qui định bắt đầu lệnh bằng ký t ự '
và có thể đƣợc viết trên 1 hàng riêng bi ệt hay đi sau lệnh hiện hành.


Ví dụ:


Private Sub cmdCE_Click()


' hàm xử lý bi ến cố khi ấn nút CE (Clear Entry)


dblDispValue = 0


blnFpoint = False
bytPosDigit = 0


txtDisplay.Text = ".0" ' bắt đầu hiển thị .0 lên Display
End Sub


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(166)</span><div class='page_container' data-page=166>

<b>Chú thích trong ch</b>

ƣơ

<b>ng trình (tt) </b>



Việc dùng chú thích trong ch ƣơng trình là sự dung hòa giữa 2 thái c ực: lạm


dụng và không bao giờ dùng. Th ƣờng ta nên dùng chú thích ở những vị trí sau:


Ở đầu của mỗi thủ tục để miêu t ả chức năng của thủ tục đó, dữ liệu
nhập vào thủ tục và dữ liệu trả về từ thủ tục.


Ở các đoạn code miêu t ả giải thuật phức tạp để ghi chú đoạn code này
hiện thực giải thuật nào trong lý thuy ết đã h ọc.


Ở hàng lệnh có hiệu ứng đặc biệt...


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB



</div>
<span class='text_page_counter'>(167)</span><div class='page_container' data-page=167>

<b>6.3 Các </b>

<b>lnh </b>

đị

<b>nh ngh</b>

ĩ

<b>a </b>



1 module VB (form, class, standard) gồm 2 loại phần tử: thuộc tính dữ liệu và


các method (th ủ tục). Các l ệnh định nghĩa cho phép ta định nghĩa tính chất


của các thu ộc tính dữ liệu, các l ệnh thực thi cho phép ta miêu t ả giải thuật thi
hành của các method (th ủ tục).


2 lệnh định nghĩa dữ liệu chủ yếu là lệnh định nghĩa biến và lệnh định nghĩa
hằng, trong 2 lệnh này có sử dụng tên ki ểu dữ liệu. Tên ki ểu dữ liệu có thể là
định sẵn, có thể do ngƣời lập trình tự đặt. Lệnh định nghĩa kiểu sẽ phục vụ
việc định nghĩa kiểu mới của ngƣời lập trình.


Để VB kiểm tra việc định nghĩa biến bắt buộc trong 1 module nào đó, ta
dùng lệnh sau ở đầu module đó.


<b>Option Explicit </b>


Cú pháp định nghĩa hằng gợi nhớ cơ bản:


<b>Const </b><i>AConst</i><b> = </b><i>Value </i>


Lƣu ý ta dùng <i>ch</i>ữ <i>nghiêng</i>để miêu t ả phần tử mà ngƣời lập trình tự xác định


theo yêu c ầu riêng (d ĩ nhiên ph ải thỏa mãn qui t ắc VB), chữ đậm miêu t ả
phần tử bắt buộc và ngƣời lập trình phải viết y nhƣ vậy trong lệnh của họ.





Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(168)</span><div class='page_container' data-page=168>

<b>Qui t</b>

<b>c miêu </b>

<b>t các lo</b>

<b>i giá tr</b>


Giá tr ị luận lý: <b>True</b> | <b>False</b>.


Giá tr ị thập phân nguyên: [ <b>+|-</b>] [decdigit]+ (Vd. 125, -548)


Lƣu ý ta dùng | để miêu t ả sự chọn lựa, [...] để miêu t ả có từ 0 tới 1,
[...]* để miêu t ả có từ 0 tới n, [...]+ để miêu t ả có từ 1 tới n (n>1).


Giá tr ị thập lục phân nguyên: [ <b>+|-</b>] <b>&H</b>[hexdigit]+ (&HFF)
Giá tr ị bát phân nguyên: [ <b>+|-</b>]<b> &O</b>[ocdigit]+ (&O77)


Giá tr ị thập phân th ực:


[<b>+|-</b>] [decdigit]+ [<b>.</b>[decdigit]*] [<b>E</b> [<b>+|-</b>]


[decdigit]+] 3.14159, 0.31459E1,-83.1E-9,...
Giá tr ị chuỗi: "Nguyen Van A"


"""Nguyen Van A"""


Lƣu ý dùng 2 d ấu nháy kép liên ti ếp để miêu t ả 1 ký t ự nháy kép
trong giá tr ị chuỗi (cơ chế dùng Escape để giải quyết nhầm lẫn).


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB



</div>
<span class='text_page_counter'>(169)</span><div class='page_container' data-page=169>

<b>Qui t</b>

<b>c miêu </b>

<b>t các lo</b>

<b>i giá tr</b>

<b> (tt) </b>



Giá tr ị ngày tháng (Date): đã trình bày trong slide 125, ở đây ta


ch ỉ nhắc lại cho có tính hệ thống.



Ví dụ: #January 1, 2000#


#Jan 1, 2000#



#1/1/ 2000#



#December 31, 1999 11:59:59PM#


#December 31, 1999 23:59:59#



Giá tr ị ngày tháng luôn đƣợc đặt trong cặp dấu #....#.



Có nhiều dạng thức khác nhau để miêu t ả giờ trong ngày và


miêu tả ngày/tháng/n ăm. Dạng thức miêu t ả ngày dạng



2/1/2000 sẽ đƣợc phân gi ải theo thông số "locale" của Windows


(dạng dd/mm/yyyy hay mm/dd/yyyy).



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(170)</span><div class='page_container' data-page=170>

<b>6.4 Phát bi</b>

<b>u </b>

đị

<b>nh ngh</b>

ĩ

<b>a bi</b>

ế

<b>n </b>



Cú pháp c ơ bản của định nghĩa biến cục bộ trong function,


Sub, Property:




<b>Dim </b>

<i>AVariable</i>

[

<b>As </b>

<i>Type</i>

]



<b>Static </b>

<i>AVariable</i>

[

<b>As </b>

<i>Type</i>

]



Cú pháp c ơ bản của định nghĩa biến cục bộ trong module


(class, form, standard):



<b>Private </b>

<i>AVariable</i>

[

<b>As </b>

<i>Type</i>

]



<b>Static </b>

<i>AVariable</i>

[

<b>As </b>

<i>Type</i>

]



Cú pháp c ơ bản của định nghĩa biến toàn cục:



<b>Public </b>

<i>AVariable</i>

[

<b>As </b>

<i>Type</i>

]



Lƣu ý h ạn chế tối đa việc dùng bi ến toàn cục (trong OOP ta


khơng cần dùng bi ến tồn cục).



Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(171)</span><div class='page_container' data-page=171>

<b>Phát bi</b>

<b>u </b>

đị

<b>nh ngh</b>

ĩ

<b>a bi</b>

ế

<b>n (tt) </b>



Có thể dùng ti ếp vĩ ngữ qui định kiểu (trong chƣơng 5) thay thế cho tên
kiểu. Nếu tên bi ến khơng có tiếp vĩ ngữ và khơng có phần tên ki ểu trong
lệnh định nghĩa biến thì biến thuộc kiểu Variant. Cho phép nhiều phát biểu
định nghĩa biến trên 1 hàng l ệnh (dùng d ấu ',' để ngăn cách chúng).



Nên đặt tên bi ến theo ký hi ệu Hungarian và luôn miêu t ả tên ki ểu
kết hợp với biến trong lệnh định nghĩa biến, nhờ vậy chƣơng trình
sẽ rất trong sáng, d ễ hiểu và dễ phát tri ển.


Ví dụ:


Thay vì dùng l ệnh sau:


Private DispValue#


để định nghĩa biến thực chính xác kép tên là "DispValue", ta nên
dùng lệnh định nghĩa sau:


Private dblDispValue As Double


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(172)</span><div class='page_container' data-page=172>

<b>6.5 Phát bi</b>

<b>u </b>

đị

<b>nh ngh</b>

ĩ

<b>a ki</b>

<b>u c</b>

<b>a ng</b>

ƣờ

<b>i l</b>

<b>p trình </b>



Nếu trong 1 module nào đó cần dữ liệu có cấu trúc đặc thù mà VB ch ƣa cung
cấp, ngƣời lập trình sẽ dùng phát bi ểu TYPE để định nghĩa kiểu này. Phát bi
ểu này kết hợp tên ki ểu (tự đặt) với 1 cấu trúc d ữ liệu gồm nhiều field dữ liệu
(do dó ta thƣờng gọi kiểu này là kiểu record hay structure). Cú pháp nh ƣ sau:


<b>Type </b><i>TypeName </i>


[<i>AfieldName</i> <b>As</b> <i>Type</i>]+



<b>End Type </b>


Ví dụ:


Type SystemInfo


CPU As Variant
Memory As Long


DiskDrives(25) As String ' Fixed-size array.


VideoColors As Integer
Cost As Currency


PurchaseDate As Variant
End Type


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(173)</span><div class='page_container' data-page=173>

<b>Phát bi</b>

<b>u </b>

đị

<b>nh ngh</b>

ĩ

<b>a ki</b>

<b>u Array </b>



Nếu trong 1 module nào đó cần danh sách g ồm nhiều dữ liệu có cấu trúc
đồng nhất, ta sẽ dùng phát bi ểu định nghĩa kiểu array để miêu t ả danh sách
này. Cú pháp c ơ bản nhƣ sau:


<b>Dim </b><i>varname</i>[<b>(</b>[<i>subscripts</i>]<b>)</b>] [<b>As </b>[<b>New</b>] <i>type</i>]


trong đó subscripts là danh sách t ừ 1 đến n chiều cách nhau b ằng dấu ',',


mỗi chiều miêu t ả phạm vi chỉ số các ph ần tử thuộc chiều đó ở dạng:


[<i>lower</i> <b>To</b>] <i>upper</i>.


Nếu chỉ số cận dƣới của 1 chiều nào đó khơngđƣợc miêu t ả thì VB chọn giá tr
ị ngầm định (là 0 hay 1).


Phát bi ểu định nghĩa giá tr ị cận dƣới ngầm định có cú pháp:


<b>Option Base </b>{<b>0|1</b>}


Lƣu ý d ấu {..} miêu t ả có 1 và chỉ 1 lần. Nếu khơng có phát biểu này thì VB
chọn cận dƣới là 0.


Ví dụ:


Dim vector(50) As Double 'vector có 51 phần từ từ 0 - 51
Dim MyArray (1 to 100, 1 to 50) As Double


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(174)</span><div class='page_container' data-page=174>

<b>Phát bi</b>

<b>u </b>

đị

<b>nh ngh</b>

ĩ

<b>a ki</b>

<b>u Array (tt) </b>



Nếu số lƣợng phần tử của danh sách ch ƣa biết tại thời điểm viết chƣơng trình
và chỉ biết tại thời điểm chạy, ta dùng 1 trong 2 cách sau:


Khai báo s ố lƣợng tĩnh tại thời điểm viết, cách này th ƣờng phí phạm bộ
nhớ hay khai báo thi ếu số lƣợng phần tử.



Thí dụ để giải hệ n phƣơng trình tuyến tính, n ẩn số, ta có thể khai báo t
ĩnh ma trận thông số nhƣ sau:


Option Base 1


Dim matran(100,100) As Double


Nhƣng nếu đại đa số lần dùng ứng dụng này, ta chỉ giải các h ệ phƣơng
trình có 2, 3,... ẩn số thì sẽ rất phí phạm bộ nhớ. Cịn 1 lần chạy nào đó,
nếu ta cần giải hệ 200 phƣơng trình thì chƣơng trình sẽ chạy sai.


Khai báo s ố lƣợng động tại thời điểm chạy. Cú pháp nh ƣ sau:


<b>Dim </b><i>varname</i><b>() </b>[<b>As </b>[<b>New</b>] <i>type</i>]


Ví dụ: Dim matran() As Double 'để trống số lƣợng
...


n = Val(txtInput.Text)


ReDim matran(n,n) 'phân ph ối phần tử cho ma trận


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(175)</span><div class='page_container' data-page=175>

<b>6.6 L</b>

<b>nh khai báo Declare </b>



Các l ệnh định nghĩa hằng, biến, kiểu, thủ tục cho phép ta sản sinh


phần tử tƣơng ứng trong phạm vi ngữ cảnh tƣơng ứng (thủ tục,
module, toàn cục).


Ngoài ra Windows (và nhiều hãng, cá nhân khác) đã vi ết nhiều


module tổng quát, m ỗi module chứa nhiều thủ tục khác nhau, các th ủ
tục này giải quyết những vần đề nào đó. Thí dụ ta có module các hàm
l ƣợng ống kê, module các hàm x ử lý d ữ liệu giác, module các hàm
th


multimedia,...


Windows dùng k ỷ thuật liên k ết động các module trên vào ứng dụng


dùng chúng, m ỗi module đƣợc cất trên 1 file *.dll (dynamic link library).
VB cung cấp lệnh khai báo "Declare" để cho phép ngƣời lập trình


khai báo ch ữ ký (signature, interface, prototype, header,...) c ủa các
th ủ tục có sẵn trong các module *.dll để gọi nó trong ngữ cảnh của
mình (module).


Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(176)</span><div class='page_container' data-page=176>

<b>L</b>

<b>nh khai báo Declare (tt) </b>



<b>Cú pháp 1: </b>


[<b>Public | Private</b>] <b>Declare Sub</b> <i>name</i> <b>Lib</b> "<i>libname</i>" [<b>Alias</b>



"<i>aliasname</i>"] [([<i>arglist</i>])]


<b>Cú pháp 2: </b>


[<b>Public | Private</b>] <b>Declare Function</b> <i>name</i> <b>Lib</b> "<i>libname</i>" [<b>Alias</b>


"<i>aliasname</i>"] [([<i>arglist</i>])] [As <i>type</i>]


Cú pháp 1 cho phép khai báo 1 subroutine v ới tên là <i>name</i> ở thƣ viện tên


là <i>libname</i>, ta có thể gọi subroutine này bằng 1 tên khác là <i>aliasname</i>


và truyền cho nó 1 danh sách đối số tƣơng thích với <i>arglist</i>.


Cú pháp 2 cho phép khai báo 1 function v ới tên là <i>name</i> ở thƣ viện tên là
<i>libname</i>, ta có thể gọi function này bằng 1 tên khác là<i> aliasname </i>và


truyền cho nó 1 danh sách đối số tƣơng thích với <i>arglist</i>. Sau khi
hoàn thành, function sẽ trả về 1 giá tr ị kết quả thuộc kiểu <i>type</i>.
Chi tiết về sự khác bi ệt giữa subroutine và function sẽ đƣợc trình
bày trong chƣơng 9 và 10.


Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(177)</span><div class='page_container' data-page=177>

<b>Thí d</b>

<b> v</b>

<b> các </b>

<b>lnh </b>

đị

<b>nh ngh</b>

ĩ

<b>a VB </b>



Chúng ta đã trình bày qui trình thi ết kế trực quan giao diện của trình



MiniCalculator cho phép giả lập 1 máy tính tay đơn giản. Chƣơng trình này chỉ có
1 form, trong form này chúng ta s ẽ định nghĩa các h ằng, biến cục bộ sau đây
để phục vụ hoạt động cho ứng dụng:


Option Explicit


Const IDC_EQUAL = 0 ' định nghĩa các h ằng gợi nhớ miêu t ả toán t ử


Const IDC_ADD = 1
Const IDC_SUB = 2
Const IDC_MUL = 3
Const IDC_DIV = 4


Private dblDispValue As Double ' biến lƣu giá tr ị đang hiển thị


Private dblOldValue As Double ' biến lƣu giá tr ị trƣớc đó


Private dblMemValue As Double ' biến lƣu giá tr ị trong bộ nhớ


Private blnFpoint As Boolean ' trạng thái nh ập số nguyên/l ẻ


Private bytPosDigit As Byte ' vị trí lý s ố lẻ đang nhập


Private intPosNeg As Integer ' trạng thái miêu t ả giá tr ị âm/d ƣơng


Private bytOperationId As Byte ' id của phép toán c ần thực hiện


Private blnFAfterOp As Boolean ' trạng thái nh ập ký s ố đầu sau phép tốn



Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 6: Các l ệnh định nghĩa & khai báo VB


</div>
<span class='text_page_counter'>(178)</span><div class='page_container' data-page=178>

<b>MÔN TIN H </b>

<b>C </b>



<i><b>Ch</b></i>

ƣơ

<i><b>ng 7 </b></i>



<b>BI</b>

<b>U TH</b>

<b>C VB </b>



7.1 Tổng quát v ề biểu thức VB


7.2 Các toán t ử



7.3 Qui trình tính biểu thức



7.4 Quyền ƣu tiên c ủa các tốn t ử



Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(179)</span><div class='page_container' data-page=179>

<b>7.1 T</b>

<b>ng quát v</b>

<b> bi</b>

<b>u th</b>

<b>c VB </b>



Ta đã bi ết trong toán h ọc công thức là phƣơng tiện miêu t ả 1 qui
trình tính tốn nào đó trên các s ố.


Trong VB (hay ngơn ngữ lập trình khác), ta dùng bi ểu thức để miêu t ả
qui trình tính tốn nào đó trên các d ữ liệu ⇒ biểu thức cũng giống nhƣ
cơng thức tốn h ọc, tuy nó tổng quát h ơn (xử lý trên nhi ều loại dữ
liệu khác nhau) và ph ải tuân theo qui t ắc cấu tạo khắt khe hơn cơng


thức tốn h ọc.


Để hiểu đƣợc biểu thức, ta cần hiểu đƣợc các thành ph ần của
nó: Các tốn h ạng: các bi ến, hằng dữ liệu,...


Các toán t ử tham gia biểu thức: +,-,*,/,...


Qui tắc kết hợp toán t ử và toán h ạng để tạo biểu


thức. Qui trình mà máy dùng để tính trị của biểu thức.
Kiểu của biểu thức là kiểu của kết quả tính tốn bi ểu thức.


Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(180)</span><div class='page_container' data-page=180>

<b>Các bi</b>

<b>u th</b>

<b>c c</b>

ơ

<b> b</b>

<b>n </b>



Biểu thức cơ bản là phần tử nhỏ nhất cấu thành biểu thức bất kỳ. Một
trong các ph ần tử sau đƣợc gọi là biểu thức cơ bản:


Biến,


Hằng gợi nhớ,


Giá tr ị dữ liệu cụ thể thuộc kiểu nào đó (nguyên, th ực,..)
Lời gọi hàm,


1 biểu thức đƣợc đóng trong 2 dấu ().



Qui trình tạo biểu thức là qui trình đệ qui: ta kết hợp từng toán t ử với các
toán h ạng của nó, trong đó tốn h ạng hoặc là biểu thức cơ bản hoặc là
biểu thức sẵn có (đã đƣợc xây d ựng trƣớc đó và nên đóng trong 2 dấu ()
để biến nó trở thành biểu thức cơ bản).


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(181)</span><div class='page_container' data-page=181>

<b>7.2 Các tốn</b>

<b>t </b>



Dựa theo số tốn h ạng tham gia, có 2 loại toán t ử thƣờng dùng nh ất:
<b>Toán </b>ử<b>t 1 ngơi </b>: chỉ cần 1 tốn h ạng. Ví dụ tốn t ử '-' để tính phần
âm của 1 đại lƣợng.


<b>Tốn </b>ử<b>t 2 ngơi </b>: cần dùng 2 tốn h ạng. Ví dụ tốn t ử '*' để tính
tích của 2 đại lƣợng.


VB thƣờng dùng các ký t ự đặc biệt để miêu t ả tốn t ử. Ví dụ:
<b>Tốn </b>ử<b>t '+'</b>: cộng 2 đại lƣợng.


<b>Toán </b>ử<b>t '-'</b>: trừ đại lƣợng 2 ra khỏi đại lƣợng 1.
<b>Toán </b>ử<b>t '*'</b>: nhân 2<b> </b>đại lƣợng.


<b>Toán </b>ử<b>t '/'</b>: chia đại lƣợng 1 cho đại lƣợng 2...
Trong vài trƣờng hợp, VB dùng cùng 1 ký t


toán t ử khác nhau. Trong tr ƣờng hợp này,
giải quyết nhằm lẫn.



đặc biệt để miêu t ả nhiều
ngữ cảnh sẽ đƣợc dùng để
Ngữ cảnh thƣờng là kiểu của các toán h ạng tham gia hoặc do thiếu tốn
hạng thì tốn t ử đƣợc hiểu là tốn t ử 1 ngơi.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(182)</span><div class='page_container' data-page=182>

<b>Các toán</b>

<b>t (tt) </b>



Dựa theo độ ƣu tiên c ủa các toán t ử trong qui trình tính tốn bi ểu thức,
có 3 loại tốn t ử:


<b>Tốn </b>ử<b>t s</b>ố<b> h</b>ọ<b>c</b>: có độ ƣu tiên cao nh ất trong qui trình tính tốn
biểu thức.


<b>Tốn </b>ử<b>t so sánh</b>: có độ ƣu tiên k ế tiếp.


<b>Toán </b>ử<b>t lu</b>ậ<b>n lý và bitwise </b>: có độ ƣu tiên th ấp nhất.


Trong các slide sau, chúng ta s ẽ trình bày chi tiết các toán t ử VB thuộc
từng loại trên.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(183)</span><div class='page_container' data-page=183>

<b>Các toán</b>

<b>t s</b>

<b> h</b>

<b>c </b>




Tùy thu ộc kiểu của các toán h ạng tham gia mà ta đƣợc phép dùng nh
ững toán t ử nào trên chúng ⇒ số lƣợng toán t ử có giá tr ị trên t ừng kiểu
dữ liệu là khác nhau ⇒ phải học và nhớ từ từ.


Dữ liệu số là loại dữ liệu thƣờng đƣợc xử lý nh ất trong các ứng dụng
(may mắn cho chúng ta vì ta đã quen v ới toán h ọc).


Các toán t ử trên d ữ liệu số là:


<b>Toán </b>ử<b>t '&'</b>: nối kết 2 chuỗi thành 1 chuỗi.
<b>Toán </b>ử<b>t '+'</b>: cộng 2 đại lƣợng.


<b>Toán </b>ử<b>t '-'</b>: trừ đại lƣợng 2 ra khỏi đại lƣợng 1.
<b>Toán </b>ử<b>t '*'</b>: nhân 2<b> </b>đại lƣợng.


<b>Toán </b>ử<b>t '/'</b>: chia đại lƣợng 1 cho đại lƣợng 2.
<b>Toán </b>ử<b>t '\'</b>: chia nguyên.


<b>Toán </b>ử<b>t Mod</b>: lấy phần dƣ của phép chia nguyên.
<b>Tốn </b>ử<b>t '^'</b>: lũy thừa.


Khoa Cơng nghệ Thơng tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(184)</span><div class='page_container' data-page=184>

<b>Toán </b>

<b>t '&' </b>

để

<b> n</b>

<b>i k</b>

ế

<b>t 2 chu</b>

<b>i </b>


Cú pháp:


<i>expr1 </i><b>&</b><i> expr2</i> ( kết quả)



Nối kết 2 toán h ạng kiểu chuỗi thành 1 chuỗi mới, nếu 1 trong 2 tốn
hạng thuộc kiểu số thì nó sẽ đƣợc đổi thành dạng chuỗi trƣớc khi


thực hiện nối kết.
Ví dụ:


Dim MyStr As String


MyStr = "Hello" & " World" ' kết quả là "Hello World".


MyStr = "Check " & 123 & " Check" ' kq là "Check 123 Check".


Lƣu ý nên có ký t ự trống trong các chu ỗi con sao cho nối kết chuỗi
kết quả dễ đọc.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(185)</span><div class='page_container' data-page=185>

<b>Toán </b>

<b>t '+' trên d</b>

<b> li</b>

<b>u s</b>


Cú pháp:


<i>expr1 </i><b>+</b><i> expr2</i> ( kết quả) hoặc <b>+</b> expr1


Nếu cả 2 toán h ạng đều là số thì kiểu kết quả là kiểu chính xác nh ất của
phép + theo thứ tự sau: Byte, Integer, Long, Single, Double, Currency,
Decimal với các ngo ại lệ sau:


<b>N</b>ế<b>u </b> <b>thì k</b>ế<b>t qu</b>ả<b> là: </b>



1 toán h ạng Single,1 toán h ạng Long Double


kết quả kiểu Variant chứa giá tr ị Single, Long, Date và bị Variant chứa Double
tràn


kết quả kiểu Variant chứa giá tr ị Byte và bị tràn Variant chứa Integer
kết quả kiểu Variant chứa giá tr ị Integer và bị tràn Variant chứa Long
1 toán h ạng Date,1 toán h ạng kiểu khác Date


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(186)</span><div class='page_container' data-page=186>

<b>Toán </b>

<b>t '+' trên d</b>

<b> li</b>

<b>u s</b>

<b> (tt) </b>



Nếu kiểu của cả 2 tốn h ạng đều là Variant thì việc xác định ngữ nghĩa
phép + và kiểu kết quả sẽ theo qui luật của bảng sau:


<b>N</b>ế<b>u </b> <b>thì: </b>


cả 2 tốn h ạng là Variant chứa số Cộng


cả 2 toán h ạng là Variant chứa chuỗi Nối kết 2 chuỗi
1 là Variant chứa số, 1 là Variant chứa chuỗi Cộng


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(187)</span><div class='page_container' data-page=187>

<b>Toán </b>

<b>t '+' trên d</b>

<b> li</b>

<b>u s</b>

<b> (tt) </b>




Nếu ít nhất 1 tốn h ạng khơng phải Variant thì việc xác định ngữ nghĩa
phép + và kiểu kết quả sẽ theo qui luật của bảng sau:


<b>N</b>ế<b>u </b> <b>thì: </b>


cả 2 tốn h ạng là dữ liệu số Cộng


cả 2 toán h ạng là chuỗi Nối kết 2 chuỗi
1 là số, 1 là Variant giá tr ị khác Null C ộng


1 là chuỗi, 1 là Variant giá tr ị khác Null N ối kết 2 chuỗi


1 biểu thức là Variant chứa Empty kết quả là tốn h ạng cịn lại
1 là số và 1 là chuỗi A Type mismatch error
1 trong 2 toán h ạng là Null kết quả là Null


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(188)</span><div class='page_container' data-page=188>

<b>Toán </b>

<b>t '-' trên d</b>

<b> li</b>

<b>u s</b>


Cú pháp:


<i>expr1 </i><b>-</b><i> expr2</i> ( kết quả) hoặc <b>-</b> expr1


Kiểu kết quả thƣờng là kiểu chính xác nh ất của phép - theo thứ tự sau:
Byte, Integer, Long, Single, Double, Currency, Decimal với các ngo ại lệ
sau:



<b>N</b>ế<b>u </b> <b>thì k</b>ế<b>t qu</b>ả<b> là: </b>


1 tốn h ạng Single,1 toán h ạng Long Double


kết quả kiểu Variant chứa giá tr ị Single, Long, Date và bị Variant chứa Double
tràn


kết quả kiểu Variant chứa giá tr ị Integer và bị tràn Variant chứa Long
1 toán h ạng Date,1 toán h ạng kiểu khác Date


cả 2 toáng h ạng Date Double


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(189)</span><div class='page_container' data-page=189>

<b>Toán </b>

<b>t '*' trên d</b>

<b> li</b>

<b>u s</b>


Cú pháp:


<i>expr1 </i><b>*</b><i> expr2</i> ( kết quả)


Kiểu kết quả thƣờng là kiểu chính xác nh ất của phép * theo thứ tự sau:
Byte, Integer, Long, Single, Double, Currency, Decimal với các ngo ại lệ
sau:


<b>N</b>ế<b>u </b> <b>thì k</b>ế<b>t qu</b>ả<b> là: </b>


1 toán h ạng Single,1 toán h ạng Long Double


kết quả kiểu Variant chứa giá tr ị Single, Long, Date và bị Variant chứa Double


tràn


kết quả kiểu Variant chứa giá tr ị Byte và bị tràn Variant chứa Integer
kết quả kiểu Variant chứa giá tr ị Integer và bị tràn Variant chứa Long


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(190)</span><div class='page_container' data-page=190>

<b>Toán </b>

<b>t '/' trên d</b>

<b> li</b>

<b>u s</b>


Cú pháp:


<i>expr1 </i><b>/</b><i> expr2</i> ( kết quả)


Kiểu kết quả thƣờng là kiểu Double hay Variant chứa Double với các
ngoại lệ sau:


<b>N</b>ế<b>u </b> <b>thì k</b>ế<b>t qu</b>ả<b> là: </b>


cả 2 tốn h ạng là Byte, Integer,Single Single, nếu tràn thì báo sai


cả 2 toán h ạng là variant chứa trị Byte, Integer, Single Variant chứa Single, nếu tràn thì đổi
thành Variant chứa Double


1 tốn h ạng Decimal Decimal


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB



</div>
<span class='text_page_counter'>(191)</span><div class='page_container' data-page=191>

<b>Toán </b>

<b>t '\' và Mod trên d</b>

<b> li</b>

<b>u s</b>


Cú pháp:


<i>expr1 </i><b>\</b><i> expr2</i> ( kết quả)


Đây là phép chia nguyên, 2 toán h ạng đƣợc đổi về dạng nguyên
(đƣợc làm tròn) trƣớc khi thực hiện phép chia.


Kiểu kết quả hoặc là Byte, Integer, Long hoặc là Variant chứa trị
Byte, Integer, Long.


Ví dụ: 19 \ 6.7 kết quảlà 2
Cú pháp:


<i>expr1 </i><b>Mod</b><i> expr2</i> ( kết quả)


Đây là phép l ấy phần dƣ của phép chia nguyên, 2 toán h ạng đƣợc
đổi về dạng nguyên ( đƣợc làm tròn) trƣớc khi thực hiện phép chia.
Kiểu kết quả hoặc là Byte, Integer, Long hoặc là Variant chứa trị
Byte, Integer, Long.


Ví dụ: 19 Mod 6.7 kết quảlà 5


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(192)</span><div class='page_container' data-page=192>

<b>Toán </b>

<b>t '^' trên d</b>

<b> li</b>

<b>u s</b>


Cú pháp:



<i>number </i><b>^</b><i> exponent</i> ( kết quả)


Đây là phép l ũy thừa, 2 toán h ạng thuộc kiểu số (Byte, Integer,
Long, Single, Double,...) với hạn chế là nếu phần mũ là số nguyên
thì phần cơ số (number) mới đƣợc phép âm .


Kiểu kết quả hoặc là Double hoặc là Variant chứa trị Double.
Ví dụ: (-5) ^ 3  kết quả là -125.0 3 ^ 3 ^


3  kết quả là 19683.0


3.2 ^ 2.7 kết quảlà 23.115587799


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(193)</span><div class='page_container' data-page=193>

<b>Các toán</b>

<b>t so sánh d</b>

<b> li</b>

<b>u </b>


Cú pháp:


<i>expr1 op expr2</i> ( kết quả)


2 toán h ạng thƣờng là kiểu số hay chuỗi. Kết quả luôn là kiểu luận lý
(nhận 1 trong 2 trị True, False).


op là 1 trong các toán t ử so sánh sau:
: phép toán nh ỏ hơn


<= : phép toán nh ỏ hơn hoặc bằng
: phép toán l ớn hơn



>= : phép toán l ớn hơn hoặc bằng
: phép toán so sánh b ằng


<> : phép tốn khác nhau (khơng b ằng)


Ngồi các tốn t ử so sánh thơng th ƣờng trên, VB cịn cung c ấp 2 tốn t ử
so sánh đặc biệt sau (với ngữ nghĩa đặc biệt sẽ đƣợc trình bày trong các
slide sau):


<i>expr1 </i><b>Like</b><i> expr2</i> ( kết quả)


<i>expr1 </i><b>Is</b><i> expr2</i> ( kết quả)




Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(194)</span><div class='page_container' data-page=194>

<b>Toán </b>

<b>t Like </b>


Cú pháp:


<i>string </i><b>Like</b><i> pattern</i> ( kết quả)


xác định xem chuỗi cụ thể string có thuộc về pattern khơng. Nếu
thuộc về thì cho kết quả True, nếu khơng thuộc về thì cho kết quả
False.


Ví dụ:



MyCheck = "aBBBa" <b>Like</b> "a*a" ' Returns True.
MyCheck = "F" <b>Like</b> "[A-Z]" ' Returns True.
MyCheck = "F" <b>Like</b> "[!A-Z]" ' Returns False.
MyCheck = "a2a" <b>Like</b> "a#a" ' Returns True.
MyCheck = "aM5b" <b>Like</b> "a[L-P]#[!c-e]" ' Returns True.
MyCheck = "BAT123khg" <b>Like</b> "B?T*" ' Returns True.
MyCheck = "CAT123khg" <b>Like</b> "B?T*" ' Returns False.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(195)</span><div class='page_container' data-page=195>

<b>Toán </b>

<b>t Like (tt) </b>



Hành vi của toán t ử Like phụ thuộc vào 1 trong 2 chế độ do phát bi ểu
"Option Compare" qui định:


<b>Option Compare Binary</b> ' default


<b>Option Compare Text </b>


Trong chế độ so sánh Binary, VB d ựa vào thứ tự sắp xếp các ký t ự trên c
ơ sở mã nh ị phân c ủa các ký t ự. Trong bảng mã ISO 8859-1, ta có:


A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø


Trong chế độ so sánh Text, VB d ựa vào thứ tự sắp xếp các ký t ự trên c ơ
sở ngữ nghĩa ký t ự và thơng tin "locale" của Windows (do đó không phân
biệt chữ thƣờng và hoa):



(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)


Thông tin về chế độ so sánh c ũng đƣợc áp d ụng cho các toán t ử so
sánh thông thƣờng trên các chu ỗi.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(196)</span><div class='page_container' data-page=196>

<b>Toán </b>

<b>t Like (tt) </b>



Toán h ạng string là chuỗi ký t ự cụ thể, cịn tốn h ạng pattern là chuỗi
chứa các ký t ự cụ thể và/hoặc các ký t ự đặc biệt có ý nghĩa theo bảng
sau:


<b>Ký t </b>ự<b> trong pattern </b> <b>T</b>ƣơ<b>ng </b>ứ<b>ng v</b>ớ<b>i: </b>


? Bất kỳ 1 ký t ự nào


* bất kỳ chuỗi ký t ự nào (dài từ 0 ký t ự trở lên)


# Bất kỳ ký s ố thập phân nào (0–9).


[!<i>charlist</i>] Bất kỳ ký t ự khơng có trong<i>charlist</i>.
[<i>charlist</i>] Bất kỳ ký t ự có trong <i>charlist</i>.


dùng '-' để miêu t ả 1 phạm vi xác định bởi
dùng cú pháp [c] để miêu t ả các ký t ự đặc



cận dƣới và
trên. biệt.


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(197)</span><div class='page_container' data-page=197>

<b>Toán </b>

<b>t Is </b>


Cú pháp:


<i>ObjVar1 </i><b>Is</b><i> ObjVar1</i> ( kết quả)


xác định xem 2 biến ObjVar1 và ObjVar2 có chứa cùng tham khảo
đến 1 đối tƣợng duy nhất khơng. Nếu đúng v ậy thì kết quả của biểu
thức là True, nếu không trị biểu thức là False.


Ví dụ:


Dim MyObject, YourObject, ThisObject,
ThatObject Dim MyCheck As Boolean


Set YourObject = New Clipboard ' tạo object và gán tham khảo.
Set ThisObject = YourObject


Set ThatObject = New Clipboard


MyCheck = YourObject <b>Is</b> ThisObject ' kết quả True.
MyCheck = ThatObject <b>Is</b> ThisObject ' kết quả False.


Khoa Công nghệ Thông tin Môn: Tin học



Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(198)</span><div class='page_container' data-page=198>

<b>Các toán</b>

<b>t lu</b>

<b>n lý </b>



Các toán t ử luận lý cho phép thực hiện 1 hành vi luận lý trên 1 hay 2
toán hạng thuộc kiểu luận lý để cho kết quả là 1 giá tr ị luận lý.


Các toán t ử luận lý là:


<b>toán </b>ử<b>t And</b>: phép toán 'và'.
<b>toán </b>ử<b>t Or</b>: phép toán 'ho ặc'.
<b>toán </b>ử<b>t Xor</b>: phép toán lo ại trừ.
<b>toán </b>ử<b>t Not</b>: phép toán đảo.


<b>toán </b>ử<b>t Eqv</b>: phép toán t ƣơng đƣơng.
<b>toán </b>ử<b>t Imp</b>: phép toán kéo theo.


Nếu cả 2 tốn h ạng đều là số thì các phép tốn trên s ẽ thực hiện hành vi
của chúng trên t ừng cặp bit tƣơng ứng của 2 toán h ạng (sẽ giải thích cụ
thể sau).


Khoa Cơng nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(199)</span><div class='page_container' data-page=199>

<b>Toán </b>

<b>t lu</b>

<b>n lý And </b>



Cú pháp:



<i>expr1 </i><b>And</b><i> expr2</i> ( kết quả)


kết quả đƣợc xác định theo bảng sau:
Ghi chú:


kết quả chỉ True khi cả 2
toán h ạng là True.


Kết quả là False nếu có 1
tốn h ạng là False.


<b>expr1 </b> <b>expr2 </b> <b>k</b>ế<b>t qu</b>ả


True True True
True False False
True Null Null
False True False
False False False
False Null False
Null True Null
Null False False
Null Null Null


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>
<span class='text_page_counter'>(200)</span><div class='page_container' data-page=200>

<b>Toán </b>

<b>t bitwise And </b>


Cú pháp:



<i>expr1 </i><b>And</b><i> expr2</i> ( kết quả)


2 toán h ạng thuộc kiểu số và toán t ử And thực hiện hành vi trên
từng cặp bit tƣơng ứng của 2 toán h ạng, kết quả trên t ừng cặp bit
đƣợc xác định theo bảng sau:


<b>biti of expr1 </b> <b>biti of expr2 </b> <b>k</b>ế<b>t qu</b>ả


1 1 1


1 0 0


0 1 0


0 0 0


Khoa Công nghệ Thông tin Môn: Tin học


Chƣơng 7: Biểu thức VB


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×