Chương 6 Các lệnh định nghĩa & khai báo VB Tổng quát về code của 1 ứng dụng VB VB dùng Project để.

Download Report

Transcript Chương 6 Các lệnh định nghĩa & khai báo VB Tổng quát về code của 1 ứng dụng VB VB dùng Project để.

Ch ươ ng 6

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

Tổng quát về code của 1 ứng dụng VB

VB dùng Project để quản lý các thành phần cấu thành 1 ứng dụng VB.

Code của VB được dùng trong các module với mục đích khác nhau :

Class module

giống nhau.

: hiện thực lớp các đối tượng có cấu trúc và hành vi

Form module

các : là trường hợp đặc biệt của class module, hiện thực sự kiện tương tác của các đối tượng trên form giao diện.

Module (Standard module)

: là đơn vị phần mềm nhỏ với một chức năng xác định. Theo quan điểm lập trình cấu trúc (cổ điển), module là công cụ chia nhỏ ứng dụng ra nhiều phần để dễ quản lý  VB hỗ trợ cả 2 phương pháp lập trình : cấu trúc và OOP.

Ngoại trừ một vài ngoại lệ nhỏ, tổ chức code của loại module trên hoàn toàn giống nhau : đó là danh sách nhiều lệnh VB phục vụ định nghĩa kiểu, hằng, biến và thủ tục trong module đó. Trong lệnh định nghĩa thủ tục, ta sẽ dùng các lệnh thực thi để miêu tả giải thuật của thủ tục.

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 2

Tổ chức code trong module

General Định nghĩa Khai báo Biến / Hằng Tác vụ HIện thực Hiện thực các hàm biến cố Định nghĩa Biến / Hằng Lệnh thực thi Hiện thực các hàm bên trong Định nghĩa Biến / Hằng Lệnh thực thi

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 3

Tổng quát về ngôn ngữ VB

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 Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 4

Các ký hiệu cơ bản của ngôn ngữ VB

Các ký tự cho phép : đa số các ký tự nhập từ bàn phím, chủ yếu là ký tự chữ và số .

Qui tắc đặt tên (Ch.5) dùng chung cho các thành phần : biến, hằng gợi nhớ, Function, Sub, Property, Form, Class module, Module,...

Qui tắc xây dựng biểu thức sẽ được trình bày trong chương 7.

Qui tắc viết lệnh (cú pháp) : là riêng theo từng lệnh (dưới 20 loại).

Các câu lệnh được chia làm 2 nhóm chính :

Lệnh định nghĩa / khai báo

: xác định hành động nào đó lúc dịch chương trình. (Cần định nghĩa khi dùng trong các lệnh thực thi) biến , hằng , hàm , thủ tục , class trước

Lệnh thực thi

đối tượng khi : xác định hành động nào đó tác động lên chạy chương trình.

biến , hằng , Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 5

Chú thích trong chương trình

Các lệnh định nghĩa và các lệnh thực thi chỉ dùng để ra lệnh cho máy tính. Chúng không thể hiện ý nghĩa của công việc mà chúng làm.

Chú thích cho phép giải thích dưới hiểu hơn.

hình thức ngôn ngữ tự nhiên về ý nghĩa công việc mà các lệnh thực hiện giúp người đọc chương trình dễ Máy sẽ không dịch và không thực hiện các chú thích.

Cú pháp của chú thích rất đơn giản : chỉ qui định bắt đầu chú thích bằng ký tự

'

và có thể được viết trên hàng riêng hay theo sau một lệnh khác.

Ví dụ : Private Sub cmdCE_Click() ' hàm xử lý biến cố khi ấn nút CE (Clear Entry) dblDispValue = 0

Chú thích

blnFpoint = False bytPosDigit = 0 txtDisplay.Text = ".0" End Sub ' bắt đầu hiển thị .0 lên Display Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 6

Chú thích trong chương trình (tt.)

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 : Tiêu đề của thủ tục : cung Chức năng, mục đích.

cấp thông tin về thủ tục Thông số ban đầu.

Kết quả trả về sau khi làm.

Các đoạn code 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 Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 7

Định nghĩa dữ liệu

Lệnh định nghĩa dữ liệu cho phép định nghĩa tính chất của các thuộc tính dữ liệu : Đối với hằng : tên và giá trị.

Đối với sống.

biến : tên, kiểu dữ liệu, tầm vực và thời gian Để 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 đó :

Option Explicit

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 8

Định nghĩa Hằng gợi nhớ

Cú pháp :

Const

AConst

=

Value

Lưu ý : Phần

chữ nghiêng

là phần tự chọn (người lập trình xác định theo ý nghĩa câu lệnh và phải thỏa mãn qui tắc VB) Phần

chữ đậm

là từ khóa (người lập trình phải viết

đúng theo cú pháp

).

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 9

Qui tắc miêu tả các loại giá trị

Giá trị Giá trị luận lý :

True

|

False

.

thập phân nguyên : [

+|-

] [

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 : [

+|-

]

&H

[

hexdigit

]+ ( Vd: &HFF ) Giá trị bát phân nguyên : [

+|-

]

&O

[

ocdigit

]+ ( Vd: &O77 ) Giá trị thập phân thực : [

+|-

] [

decdigit

]+ [

.

[

decdigit

]* ] [

E

[

+|-

] [

decdigit

]+] Vd: 3.14159, 0.31459E1,-83.1E-9,...

Giá trị chuỗi : "Nguyen Van A", " "" Nguyen Van A "" " Lưu ý dùng trong 2 dấu nháy kép liên tiếp để miêu tả 1 ký tự nháy kép giá trị chuỗi (cơ chế dùng Escape để giải quyết nhầm lẫn).

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 10

Qui tắc miêu tả các loại giá trị (tt.)

Giá trị ngày tháng (Date) : (xem chương 5).

Ví dụ: #January 1, 2000# #Jan 1, 2000# #1/1/ 2000# #December 31, 1999 11:59:59PM# #December 31, 1999 23:59:59# Giá trị ngày tháng luôn được đặt trong cặp dấu #....#.

Có nhiều dạng thức khác nhau để miêu tả giờ trong ngày và miêu tả ngày/tháng/năm.

Dạng thức miêu tả ngày dạng 2/1/2000 sẽ được phân giải theo thông số "locale" của Windows (có thể là dd/mm/yyyy hay mm/dd/yyyy).

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 11

Định nghĩa biến

Cú pháp 1 : định nghĩa biến cục bộ trong Function, Sub, Property :

Dim

AVariable

[

As

Type

]

Static

AVariable

[

As

Type

] Cú pháp 2 : định nghĩa biến cục bộ trong module (class, form, standard) :

Dim

AVariable

[

As

Type

]

Private

AVariable

[

As

Type

]

Cú pháp 3 : định nghĩa biến toàn cục (standard module):

Public

AVariable

[

As

Type

] Lưu ý hạn chế tối đa việc dùng biến toàn cục (trong OOP ta không cần dùng biến toàn cục).

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 12

Phát biểu định nghĩa biến (tt.)

Sử dụng tiếp vĩ ngữ qui định kiểu (Ch 5) : $ -String, & -Long, !

-Single, # -Double, @ -Currency, % -Integer, không có - Variant.

Có thể định nghĩa nhiều biến trên cùng một dòng lệnh cách nhau bằng dấu ' , '.

Ví dụ : Dim x As Integer, y As Single, b As Boolean Sử dụng cách đặt tên biến Hungarian.

Nên định nghĩa biến một cách tường minh cho chương trình dễ hiểu.

Thay vì dùng : Private DispValue # định nghĩa biến DispValue thuộc kiểu Double , ta nên dùng Private dblDispValue As Double Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 13

Định nghĩa kiểu user-defined

Kiểu này dùng cho dữ liệu có cấu trúc.

Người lập trình mô tả cấu trúc của dữ liệu bằng phát biểu Type / End Type .

Cú pháp :

Type

TypeName

[

AfieldName

As

Type

]+ Ví dụ :

End Type

Type SystemInfo CPU As Variant Memory As Long DiskDrives(25) As String VideoColors As Integer Cost As Currency PurchaseDate As Variant End Type ' Fixed-size array.

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 14

  

Định nghĩa kiểu Array

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 : Dim varname [

(

[

subscripts

]

)

] [

As

[

New

]

type

] trong đó subscripts là danh sách từ 1 đến n chiều cách nhau bằng dấu ',', mỗi chiều miêu tả phạm vi chỉ số các phần tử thuộc chiều đó ở dạng : [

lower

To

]

upper

.

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 :

Option Base

Ví dụ : {

0|1

VB chọn cận dưới là 0.

} 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ì 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 Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 15

Định nghĩa kiểu Array (tt.)

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 : Dim varname() [

As

[

New

]

type

] Ví dụ : Dim matran() As Double 'để trống số lượng ...

n = Val(txtInput.Text) ReDim matran(n,n) Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

'phân phối phần tử cho ma trận Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 16

   

Lệnh khai báo Declare

Các lệnh định nghĩa hằng, biến, kiểu, thủ tục cho phép ta sản sinh phần tử tương ứng trong phạm vi ngữ cảnh tương ứng (thủ tục, module, toàn cục).

Ngoài ra Windows (và nhiều hãng, cá nhân khác) đã viết nhiều module tổng quát, mỗi module chứa nhiều thủ tục khác nhau, các thủ tục này giải quyết những vần đề nào đó. Thí dụ ta có module các hàm lượng giác, module các hàm thống kê, module các hàm xử lý dữ liệu 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 Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 17

Lệnh khai báo Declare (tt.)

Cú pháp 1 :

[

Public | Private

]

Declare Sub

name

Lib

"

libname

" [

Alias

"

aliasname

"] [([

arglist

])]

Cú pháp 2 :

[

Public | Private

]

Declare Function

name

[([

arglist

])] [As

type

]

Lib

"

libname

" [

Alias

"

aliasname

"]    Cú pháp 1 cho phép khai báo 1 subroutine với tên là

name

truyền cho nó 1 danh sách đối số tương thích với

arglist

.

ở thư viện tên là

libname

, ta có thể gọi subroutine này bằng 1 tên khác là

aliasname

Cú pháp 2 cho phép khai báo 1 function với tên là

name

ở thư viện tên là

libname

, ta có thể gọi function này bằng 1 tên khác là

aliasname

và truyền cho nó 1 danh sách đối số tương thích với

arglist

. Sau khi hoàn thành, function sẽ trả về 1 giá trị kết quả thuộc kiểu

type

.

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.

và Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 18

Thí dụ về các lệnh định nghĩa 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 = Const IDC_ADD = 1 Const IDC_SUB = 2 Const Const IDC_MUL = IDC_DIV = 4 3 0 ' định nghĩa các hằng gợi nhớ miêu tả toán tử Private Private Private Private Private Private Private Private dblDispValue As dblOldValue dblMemValue blnFpoint As bytPosDigit intPosNeg As As As bytOperationId blnFAfterOp Double As Double Double Boolean Integer As Byte As Byte Boolean ' biến lưu giá trị đang hiển thị ' biến lưu giá trị trước đó ' biến lưu giá trị trong bộ nhớ ' trạng thái nhập số nguyên/lẻ ' vị trí lý số lẻ đang nhập ' trạng thái miêu tả giá trị âm/dương ' id của phép toán cần thực hiện ' trạng thái nhập ký số đầu sau phép toán Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 19

Slide này để trống

Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM

Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 20