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>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
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 ố
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 ố
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 ố
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
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 ố
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 ố
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 ố
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
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 ố
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
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
ngôn ngữ mới với tập lệnh ngày càng gần g
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 ố
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
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 ố
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 ố
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)
80x86 (1978)
<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 ố
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
<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 ố
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
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 ố
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>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 ố
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 ố
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 ố
<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
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
Các công vi ệc đủ nhỏ
để đƣợc miêu t ả bằng
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
đối tƣợng phức hợp A
Đối tƣợng Đối tƣợng
Đố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
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 ố
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
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í
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
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
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ố
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
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
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
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
<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
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
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
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
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
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
<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>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
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
<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
Đạ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
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
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
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
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
Để 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
<b>e (exponent) quy</b>ế<b>t </b>đị<b>nh </b>độ<b> l</b>ớ<b>n/nh</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
<b>1</b> <b>8</b> <b>23 </b>
<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
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
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
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
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
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
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
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,...
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
(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 ố
config.sys Windows AudioFile
System Fonts USAFilm ChinaFilm VNFilm
win.com
arial.ttf
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
Đƣờ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
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
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
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 ố
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
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
Click vào ô - để thu
nhỏ 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
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
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
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
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
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
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
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
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
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
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
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"
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
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
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
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
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:
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
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
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
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
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
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
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
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
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
O<sub>4 </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
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
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
Đị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
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
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
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
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
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
Đố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
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
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
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
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
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
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
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
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
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
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
Để 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
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
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
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
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
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
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
Để 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
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
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
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
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
Để 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-
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
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
ả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
> 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
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
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
2.3 Chọn tab Images rồi thêm từng ảnh button vào ImageList bằng trì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
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
= Tạo 1 đối tƣợng Toolbar, vị trí và kích thƣớc của đối tƣợng này khơ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
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
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
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
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
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
Menubar
Toolbar
Working
region
(tại từng
thời điểm
có thể mở
cửa sổ
để xử lý n
document
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
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
Để 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
Để 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
(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
Khoa Công nghệ Thông tin Môn: Tin học
Chƣơng 5: Các ki ểu dữ liệu trong VB
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
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
Khoa Công nghệ Thông tin Môn: Tin học
Chƣơng 5: Các ki ểu dữ liệu trong VB
Khoa Công nghệ Thông tin Môn: Tin học
Chƣơng 5: Các ki ểu dữ liệu trong VB
+/-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
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
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
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
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
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
Khoa Công nghệ Thông tin Môn: Tin học
Chƣơng 5: Các ki ểu dữ liệu trong VB
Khoa Công nghệ Thông tin Môn: Tin học
Chƣơng 5: Các ki ểu dữ liệu trong VB
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
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
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
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
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
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
Khoa Cơng nghệ Thơng tin Môn: Tin học
Chƣơng 5: Các ki ểu dữ liệu trong VB
Ấ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
Đị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
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
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
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
<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
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
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
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
<b>Const </b><i>ConstName</i><b> = </b><i>Value </i>
Ví dụ: Const PI = 3.1416
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
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
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
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
Để 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
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
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)
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
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
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
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
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
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
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
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
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 ',',
[<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
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
Các l ệnh định nghĩa hằng, biến, kiểu, thủ tục cho phép ta sản sinh
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
<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
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
Khoa Cơng nghệ Thông tin Môn: Tin học
Chƣơng 7: Biểu thức VB
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
Để 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
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
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
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
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
<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
<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
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
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
<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
<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
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
<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
<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
<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
<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
<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
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
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
<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
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
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
<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