Lập trình cơ sở dữ liệu - CĐ Nghề Công Nghiệp Hà Nội - 6

Hoặc

Dim a as Integer()

- Khai báo có khởi tạo kích thước nhưng không khởi tạo giá trị ban đầu:

Dim a(6) as Integer

- Khai báo có khởi tạo kích thước và khởi tạo giá trị ban đầu:

Dim a() as Integer = {1,2,3,4,5,6,7}

Hoặc

Dim a() as Integer = New Integer(6){1,2,3,4,5,6,7}

Hoặc

Dim a() as Integer = New Integer (6) {}

Chú ý: Khi dấu { } rỗng, các phần tử có giá trị khởi tạo là giá trị mặc định của kiểu dữ liệu.

Mảng có kiểu tham chiếu nên khi gán hai biến mảng cho nhau, biến được gán sẽ là một tham chiếu đến mảng bên phải toán tử =, khác với trong VB6, là tạo ra một mảng mới có số phần tử mang trị giống nhau.

Mảng thuộc lớp System.Array nên có các thuộc tính và phương thức của lớp này. Sau đây là một số thuộc tính và phương thức đáng chú ý:

Thuộc tính


Tên

Mô tả

Length

Số phần tử của mảng

Rank

Số chiều của mảng

Có thể bạn quan tâm!

Xem toàn bộ 201 trang tài liệu này.

Lập trình cơ sở dữ liệu - CĐ Nghề Công Nghiệp Hà Nội - 6

Phương thức:


Tên

Mô tả

BinarySearch

Tìm kiếm trên mảng một chiều đã được sắp xếp giá trị truyền vào, sử dụng thuật giải tìm kiếm nhị phân.

Clear

Gán các phần tử trong dãy chỉ ra bằng giá trị mặc định của

kiểu dữ liệu các phần tử

Clone

Trả về bản sao cạn (shallow copy) của mảng. Bản sao này chỉ sao chép kiểu trị và kiểu tham chiếu nhưng không sao chép các đối tượng được tham chiếu đến.

Copy

Sao chép một phần của mảng vào mảng khác và thực hiện

chuyển đổi kiểu nếu cần.

CopyTo

Sao chép toàn bộ các phần tử của mảng một chiều vào mảng một chiều được truyền vào bắt đầu từ vị trí chỉ ra.

Trả về số phần tử của một chiều được chỉ ra trên mảng

GetLowerBound

Trả về chỉ số nhỏ nhất của một chiều được chỉ ra trên mảng

GetUpperBound

Trả về chỉ số lớn nhất của một chiều được chỉ ra trên mảng

GetValue

Trả về trị của một phần tử chỉ ra trên mảng

IndexOf

Trả về chỉ số của phần tử đầu tiên trên mảng một chiều (hoặc trên một vùng của mảng) trùng với giá trị truyền vào

LastIndexOf

Trả về chỉ số của phần tử cuối cùng trên mảng một chiều

(hoặc trên một vùng của mảng) trùng với giá trị truyền vào

Reverse

Đảo ngược thứ tự các phần tử trên mảng một chiều hoặc trên một phần của mảng

SetValue

Gán trị cho một phần tử chỉ ra trên mảng

Sort

Sắp xếp các phần tử trong mảng một chiều

GetLength


2.5.3 Structure

Khác với mảng, Structure, kiểu do người dùng định nghĩa (UDT: User Defined Type), là một cấu trúc gồm một hoặc nhiều thành phần có kiểu dữ liệu khác nhau. Tuy chúng ta có thể truy xuất riêng lẻ các thành phần nhưng Structure được xem như là một thực thể duy nhất. Trong phiên bản trước, UDT được khai báo với từ khóa Type

… End Type. Trong VB.NET, cú pháp khai báo Structure như sau:

[Public|Private|Protected] Structure <tên structure>

{Dim|Public|Private|Friend}<tên thành phần> As <kiểu dữ liệu>

...

{Dim|Public|Private|Friend}<tên thành phần N> As <kiểu dữ liệu> End Structure

Với Structure, chúng ta được phép khai báo các phương thức. Sau đây là các đặc điểm của Structure:

Có các thành phần, kể cả bộ khởi tạo, phương thức, thuộc tính, hằng, sự

kiện.


Có thể cài đặt các lớp giao tiếp (Interface).

Có thể có các bộ khởi tạo chung, có hoặc không có tham số.

Structure là kiểu trị.

Tất cả các thành phần của Structure mặc định là Public.

Các thành phần của Structure không được khai báo với từ khóa Protected.

Structure không thể kế thừa.

Mỗi Structure có một bộ khởi tạo mặc nhiên không tham số ban đầu. Bộ khởi tạo

này sẽ khởi tạo mọi thành phần dữ liệu của Structure với giá trị mặc định của chúng. Chúng ta không thể định nghĩa lại chức năng này.

Vì Structure là kiểu trị (Value Type), nên mỗi biến Structure luôn luôn gắn liền với một thể hiện Structure.

2.6 Xử lý lỗi

2.6.1 Phân loại lỗi

Trong VB.NET, chúng ta có thể gặp các loại lỗi sau:

Syntax error

Lỗi cú pháp, còn gọi là lỗi trong lúc thiết kế. Những lỗi này dễ chỉnh sửa vì VB.NET sẽ kiểm tra cú pháp khi ta đang nhập từ bàn phím nên sẽ báo lỗi tức thời khi ta gõ sai hoặc dùng một từ không thích hợp.

Run-time error

Lỗi thực thi xảy ra khi chương trình đang thực thi. Đây là những lỗi khó xác định hơn lỗi cú pháp. Lỗi thực thi có thể từ các lý do khác nhau như:

Mở một tập tin không tồn tại

Truy xuất một thư mục nhưng không có quyền trên đó

Truy xuất dữ liệu một bảng không tồn tại trong CSDL

Chia cho số 0

Nhập chuỗi cho nơi cần nhập số hoặc ngược lại, v.v…

Logic error

Lỗi luận lý cũng xảy ra khi chương trình đang thực thi và được thể hiện dưới những hình thức hay những kết quả không mong đợi. Loại lỗi này thường do sai lầm trong thuật giải.

2.6.2 Xử lý lỗi

Một lỗi xảy ra khi chương trình đang chạy gọi là một Exception. Trong CLR, Exception là một đối tượng từ lớp System.Exception. Chúng ta cần lưu ý một lỗi xảy ra trong lúc thực thi không làm treo chương trình, nhưng nếu không được xử lý sẽ làm treo chương trình. CLR chỉ ra tình trạng lỗi qua lệnh Throw. Lệnh này sẽ đưa ra một đối tượng kiểu System.Exception chứa thông tin về lỗi đang xảy ra.

VB.NET cung cấp một cơ chế xử lý lỗi hoàn chỉnh với cú pháp sau:

Try

' các lệnh có khả Catch

' các lệnh xử

năng gây lỗi

lý khi lỗi xảy ra

[Finally]

' các lệnh thực hiện sau cùng

End Try

Cấu trúc này cho phép chúng ta thử (Try) thực hiện một khối lệnh xem có gây lỗi không; nếu có sẽ bẫy và xử lý (Catch) lỗi.

Cấu trúc này chia làm các khối sau:

Khối Try:

Chứa các câu lệnh có khả năng gây lỗi

Khối Catch:

Các dòng lệnh để bẫy và xử lý lỗi phát sinh trên khối Try. Khối này gồm một loạt các lệnh bắt đầu với từ khóa Catch, biến kiểu Exception ứng với một kiểu Exception muốn bẫy và các lệnh xử lý. Dĩ nhiên, chúng ta có thể dùng một lệnh Catch cho các System.Exception, nhưng như thế sẽ không cung cấp thông tin đầy đủ cho người dùng về lỗi đang xảy ra cũng như hướng dẫn cách xử lý cụ thể cho mỗi tình huống. Ngoài những lỗi đã xử lý, có thể xảy ra những lỗi ngoài dự kiến, để xử lý các lỗi này, chúng ta nên đưa thêm một lệnh Catch để bẫy tất cả các trường hợp còn lại và xuất thông tin về lỗi xảy ra.

Khối Finally:

Khối tùy chọn, sau khi chạy qua các khối Try và Catch nếu không có chỉ định nào khác, khối Finally sẽ được thực hiện bất kể có xảy ra lỗi hay không.

Cuối cùng, cấu trúc bẫy và xử lý lỗi chấm dứt với từ khóa End Try. Cú pháp chung cho một cấu trúc xử lý lỗi như sau

Try

' khối lệnh có thể gây lỗi

Catch <biến1> As <Kiểu Exception> [When <biểu thức>] ' khối lệnh bẫy và xử lý lỗi

Catch <biến2> As <Kiểu Exception> [When <biểu thức>] ' khối lệnh bẫy và xử lý lỗi

Finally

' khối lệnh kết thúc End Try

Ví dụ:

Dim d as Double, i as Integer Try

i = CInt(InputBox("Xin nhập một số nguyên")) d = 42 i

Catch ex As DivideByZeroException Messagebox.Show("Không thể chia cho số không")

Catch ex As InvalidCastException

Messagebox.Show("Xin nhập số nguyên !") End Try

Câu lệnh Catch có thể có nhiều cách sử dụng:

a. Bẫy không có điều kiện

Dim d as Double, i as Integer Try

i = CInt(InputBox(“Xin nhập một số nguyên”)) d = 42 i

Catch

Messagebox.Show(“Không thể chia") End Try

b. Bẫy với kiểu lỗi chung Exception

Dim d As Double, i As Integer Try

i = InputBox("Xin nhập một số d = 42 i

Catch ex As Exception MessageBox.Show("Không thể

End Try

nguyên")

chia")

c. Bẫy với những kiểu Exception đặc biệt

Các kiểu Exception đặc biệt thường gặp:


Tên

Mô tả

ArgumentException

Tham số truyền không hợp lệ

DivideByZeroException

Chương trình thực hiện phép chia một số cho số không

OverFlowException

Kết quả của một phép toán hoặc của một phép chuyển đổi kiểu lớn hơn khả năng lưu giữ của biến

FieldAccessException

Chương trình truy xuất một field Private hoặc Protected của lớp

InvalidCastException

Chương trình đang cố thực hiện một chuyển đổi không hợp lệ

InvalidOperationException

Chương trình đang cố gọi một thủ tục không hợp lệ

MemberAccessException

Truy xuất một thành phần của một lớp bị thất bại

Mô tả

MethodAccessException

Chương trình đang cố gọi thủ tục Private hoặc Protected của lớp

NullReferenceException

Chương trình đang cố truy xuất một đối tượng không tồn tại

TypeUnloadException

Chương trình truy xuất một lớp chưa được tải lên vùng nhớ

Tên


d. Bẫy với điều kiện When

Dim d As Double, i As Integer Try

i = InputBox("Xin nhập một số nguyên") d = 42 i

Catch ex As Exception When i = 0

MessageBox.Show("Không thể

End Try

chia cho số

không")


2.7 Một số chỉ thị của VB.NET

2.7.1 Chỉ thị Option Explicit ON|OFF

Khi Option Eplicit là ON, VB.NET không cho phép sử dụng các biến mà không khai báo trước.

2.7.2 Chỉ thị #Region … #End Region

Chỉ thị #Region … #End Region được dùng để đánh dấu một khối lệnh có thể thu gọn, giãn ra trên cửa sổ viết lệnh.

Cú pháp:

#Region <chuỗi định danh> ' khối lệnh

#End Region

#Region "Các khai báo"

' Đưa vào các dòng lệnh khai báo.

#End Region

Trong đó <chuỗi định danh>: bắt buộc, có giá trị kiểu String, là tiêu đề của khối lệnh Ví dụ với đoạn mã sau:


Khi thu lại ta sẽ thấy trên cửa sổ lệnh:

+ Các khai báo

2.8 Thủ tục (Procedure)

2.8.1 Khái niệm

Thủ tục (procedure) là một khối lệnh Visual Basic được đặt trong cặp từ khóa khai báo (Function, Sub, Operator, Get, Set) và từ khóa kết thúc tương ứng với nó(End).

Thủ tục được thi hành tại bất kỳ một vị trí nào trong chương trình. Lệnh thi hành một thủ tục được xem như lời gọi thủ tục. Khi thực hiện xong các lệnh trong một thủ tục ứng dụng sẽ quay lại thực hiện câu lệnh tiếp theo câu lệnh đã gọi thủ tục. Thủ tục có thể được gọi trong một câu lệnh hoặc được gọi trong một biểu thức.

Trong VB.NET thủ tục được chia thành 5 loại: Sub Procedure, Function Procedure, Property Procedure, Operator Procedure,Generic Procedure.

2.8.2 Tham số của thủ tục

Định nghĩa

- Các thông số đầu vào của một thủ tục được gọi là tham số của thủ tục.

- Tham số (parameter) là các tên (định danh) được các thủ tục dùng để nhận thông tin đầu vào để thực hiện các xử lý. Khi một thủ tục được gọi thì nó sẽ đòi hỏi các đối số cụ thể tương ứng với các tham số và thông thường các đối số này phải được gán giá trị cụ thể trước khi thủ tục thực thi.

Phân loại tham số

Có hai loại tham số.

- Tham biến: thay đổi (về mặt giá trị sau lời gọi hàm). Tham số loại này trong VB.NET được khai báo với từ khóa ByRef.

- Tham trị: Không đổi (về mặt giá trị sau lời gọi hàm). Tham số loại này trong VB.NET được khai báo với từ khóa ByVal.

2.8.3. Sub Procedure

Sub là một dãy các câu lệnh để thực thi một công việc, một chức năng đặc thù nào đó, sub được xem như là một thành phần của chương trình. Nói một cách khác, sub là các câu lệnh được nhóm vào một khối và được đặt tên.

Các sub có thể được gọi để thi hành (thường là thông qua subname). Điều này cho phép gọi tới những thủ tục nhiều lần mà không cần phải lặp lại các khối lệnh giống nhau một khi đã hoàn tất việc viết mã lệnh cho các thủ tục đó chỉ một lần.

- Từ khóa để tham khảo khái niệm thủ tục trong MSDN là “Sub Procedures, Sub Statement”.

Khai báo sub

Cấu trúc tổng quát của việc định nghĩa một thủ tục được đưa ra như sau:

[<attributelist>] [accessmodifier] [proceduremodifiers] [Shared] [Shadows]

Sub name [(Of typeparamlist)] [(parameterlist)] [Implements implementslist | Handles eventlist]

các lệnh

[ Exit Sub ] các lệnh

End Sub

Cú pháp thông dụng nhất để khai báo một thủ tục dạng sub là:

[Public|Protected|Private] Sub <Tên thủ tục> [(DS tham số)]

<Khai báo biến> Câu lệnh 1

Câu lệnh 2

...

End Sub

Trong đó

- Public, Protected, Private là các từ khóa xác định phạm vi của thủ tục

- Tên thủ tục đặt theo qui tắc giống tên biến. Trong VB.NET các thủ tục có thể trùng tên nhau song số tham số hoặc kiểu dữ liệu của các tham số phải khác nhau.

Public Sub Nhap(ByRef HoTen As String,ByRef Toan As _ Integer,ByRef Van As Integer)

Console.Write("Nhap ho ten:") HoTen = Console.ReadLine() Console.Write("Nhap toan:") Toan = Console.ReadLine() Console.Write("Nhap van:") Van = Console.ReadLine()

End Sub

- Danh sách tham số: phải xác định rõ là tham biến hay tham trị. Ví dụ: Thủ tục nhập tên, điểm toán và điểm văn của một sinh viên:


Trong thủ tục này, giá trị của các tham số HoTen, Toan, Van sau khi kết thúc thủ tục đã được thay bằng các giá trị mới nhập từ bàn phím do đó chúng phải là tham biến và được khai báo với từ khóa ByRef.

Ví dụ: Thủ tục xuất ra màn hình Console tên và điểm toán, điểm văn, điểm trung bình của sinh viên:

Public Sub Xuat(ByVal HoTen As String, ByVal Toan As _ Integer,ByVal Van As Integer, ByVal DiemTrungBinh As Double)

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 27/12/2023