Phát biểu định nghĩa kiểu của người lập trình

Một phần của tài liệu Giáo Trình Tin học cơ bản (Trang 75)

I E= T*R

Phát biểu định nghĩa kiểu của người lập trình

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

Type TypeName [AfieldName As Type]+ End Type 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 Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học Slide 151

Phát biu định nghĩa kiu 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 :

[lowerTo] 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 {0|1}

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

Chương 6 : Các lệnh định nghĩa & khai báo VB

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

Môn : Tin học Slide 152

Phát biu định nghĩa kiu 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] (adsbygoogle = window.adsbygoogle || []).push({});

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 Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học Slide 153

Lnh 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).

Chương 6 : Các lệnh định nghĩa & khai báo VB

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

Môn : Tin học Slide 154

Cú pháp 1 :

[Public | Private] Declare SubnameLib"libname" [Alias"aliasname"] [([arglist])]

Cú pháp 2 :

[Public | Private] Declare FunctionnameLib"libname" [Alias"aliasname"] [([arglist])] [As type]

ƒ Cú pháp 1 cho phép khai báo 1 subroutine với tên là nameở thư viện tên là libname, ta có thể gọi subroutine này bằng 1 tên khác là aliasnamevà truyền cho nó 1 danh sách đối số tương thích với arglist.

ƒ 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à aliasnamevà 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.

Lnh khai báo Declare (tt)

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

Môn : Tin học Slide 155 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ớ (adsbygoogle = window.adsbygoogle || []).push({});

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 toán

Thí d v các lnh định nghĩa VB

Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Slide 156 Chương 7 BIU THC VB Chương 7 : Biểu thức VB MÔN TIN HỌC

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

Môn : Tin học Slide 157

Một phần của tài liệu Giáo Trình Tin học cơ bản (Trang 75)