1. Trang chủ
  2. » Công Nghệ Thông Tin

Khái niệm cơ sở về lập trình

24 527 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 138,88 KB

Nội dung

1 Khái niệm cơ sở về lập trình• Cơ bản về chương trình hướng sự kiện • Các module mã lệnh trong Visual Basic • Cấu trúc điều khiển 1.1 Cơ bản về chương trình hướng sự kiện Một sự kiện là

Trang 1

1 Khái niệm cơ sở về lập trình

• Cơ bản về chương trình hướng sự kiện

• Các module mã lệnh trong Visual Basic

• Cấu trúc điều khiển

1.1 Cơ bản về chương trình hướng sự kiện

Một sự kiện là 1 hành động nhận biết được bởi form và control Chươngtrình hướng-sự kiện gọi đoạn mã lệnh Basic để đáp ứng 1 sự kiện Mỗiform và control trong Visual Basic có 1 tập xác định trước các sự kiện Nếumột trong số những sự kiện đó xảy đến và có mã lệnh gắn với thủ tục sựkiện, Visual Basic sẽ gọi đoạn lệnh đó

Mặc dù đối tượng trong Visual Basic tự động nhận ra tập định nghĩa trướccác sự kiện, lập trình viên mới là người quyết định các đối tượng có đápứng hay không và đáp ứng thế nào với 1 sự kiện cụ thể Mỗi sự kiện có 1phần mã lệnh tương ứng với nó dưới dạng 1 thủ tục đáp ứng sự kiện Đểđiều khiển các 1 đối tượng đáp ứng 1 sự kiện, chúng ta cần viết mã lệnhvới thủ tục sự kiện tương ứng

Trình tự hoạt động của 1 chương trình hướng-sự kiện thường như sau:

1. Chương trình khởi động, form được nạp và hiển thị

2. Form hay control trên form nhận được 1 sự kiện tác động Sự kiện đó

có thể gây ra bởi người dùng (nhấn 1 phím), bởi hệ thống (1 sự kiệngây ra bởi bộ định giờ timer), hay trực tiếp bởi mã lệnh của ta

3. Nếu có phần mã lệnh tương ứng với thủ tục sự kiện, nó sẽ được gọi

4. Chương trình chờ cho sự kiện kế tiếp

Chú ý: Nhiều sự kiện xảy ra liên quan tới những sự kiện khác Ví dụ, khi

sự kiện DblClick xảy ra, sự kiện MouseDown, MouseUp, và Click cũng xảyra

Trang 2

1.2 Các module mã lệnh trong Visual Basic

Mã lệnh trong Visual Basic được lưu trong các module Có 3 loại module:form, standard, và class

Chương trình đơn giản chỉ gồm 1 form và tất cả mã lệnh của chương trìnhnằm trong module form Khi chương trình phức tạp thêm, lớn hơn, sự cónhiều form hơn Sẽ có phần mã lệnh có thể dùng chung giữa các form Đểtránh trùng lặp, chúng có thể được đưa vào module tách riêng các form –gọi là module standard Dần dần, chúng ta có thể sẽ xây dựng 1 thư việncác module chứa các thủ tục dùng chung

Mỗi module standard, class và form có thể chứa:

• Phần khai báo – Declarations: Chứa khai báo Hằng số, kiểu, biến haythư viện kết nối động (dynamic-link library – DLL)

• Phần các thủ tục – Procedures: Chứa thủ tục, hàm số, thủ tục thuộctính có thể được gọi trong mỗi module

Trang 3

1.2.1 Module Form

Module form (trong các tệp *.FRM) chứa chứa các thủ tục đáp ứng sự kiệntrên form, các thủ tục dùng chung trong form, các khai báo ở mức form về:biến, hằng, kiểu, thủ tục bên ngoài Mã lệnh trong mỗi form được dùngriêng trong form đó và đôi khi mã lệnh trong 1 form có thể tham chiếu tớicác form khác

1.2.2 Module Standard

Module standard (trong các tệp *.BAS) chứa thủ tục và khai báo truy nhậpđược bởi các module khác trong chương trình, hay thậm chí bởi cácchương trình khác nhau

1.2.3 Module Class

Modules class (trong các tệp *.CLS) là cơ sở lập trình hướng đối tượngtrong Visual Basic Chúng ta viết mã lệnh trong module class để tạo nhữngđối tượng mới với những thuộc tính và phương thức riêng Thực ra, formchính là các module class, nơi có thể đặt các control và hiển thị các cửa sổform

Chú ý: ActiveX Documents, ActiveX Designers, và User Controls: là

những loại module mở rộng (với tên tệp có phần mở rộng khác) Có thểxem những module đó tương tự như module form

Trang 4

1.3 Sử dụng Code Editor

Code Editor của Visual Basic là một cửa sổ nơi ta viết phần lớn mã chươngtrình Nó giống một trình soạn thảo được chuyên hoá cao với nhiều tínhnăng tạo thuận lợi cho việc viết mã Visual Basic

Một cửa sổ riêng được mở cho mỗi module ta chọn từ Project Explorer Mãnằm trong mỗi module được chia thành các phần riêng cho từng đối tượngtrong module

Mỗi module form gồm:

- Phần general: chứa phần khai báo và các thủ tục dùng chung

- Phần thủ tục sự kiện cho từng đối tượng

Để truy nhập tới phần mã lệnh cần viết, nên sử dụng hộp combo box trái rồihộp combo box phải

Visual Basic có chức năng Auto Code Completion giúp viết mã lệnh trongCode Editor được dễ dàng

Trang 5

Để chọn phần từ nào đó, chuyển thanh sáng tới đó, rồi nhấn TAB.

Ngoài ra, chức năng Bookmarks giúp đánh dấu 1 vị trí mã lệnh để có thểquay lại được nhanh chóng (Edit | Bookmarks)

Trang 6

1.4 Qui ước viết lệnh trong Visual Basic

1.4.1 Chia 1 lệnh thành nhiều dòng

Bằng cách sử dụng ký tự: [ _ ]

dtaTilesOfPublishers.RecordSource = _

"SELECT * FROM Titles, Publishers" _

& "WHERE Publishers.PubId = Titles.PubID" _

& "AND Publishers.State = 'CA'"

Trong một số trường hợp cách chia 1 câu lệnh này không thực hiện được:nối các dòng chú giải,

1.4.2 Nối nhiều lệnh vào 1 dòng

Trang 7

1.4.4 Hệ thống số

Cơ số 10

(Decimal)

Cơ số 8 (Octal)

Cơ số 16 (Hexadecimal )

Trang 8

1.4.5 Qui tắc đặt tên

Tên thủ tục, hàm, biến, hằng phải tuân theo qui tắc:

kí tự rỗng), ký tự khai báo kiểu

forms, class, và module không vượt quá 40

kí tự.

Trang 9

1.5 Biến số

Biến số là nơi lưu trữ tạm thời giá trị Biến thường được định nghĩa bởingười sử dụng Chúng ta có thể xem các thuộc tính của 1 đối tượng nhưbiến

ApplesSold = 10

ApplesSold = ApplesSold + 1

txtSales.txt = ApplePrice * ApplesSold

1.5.1 Khai báo biến

Dim variablename [As type]

Biến khai báo với Dim trong 1 thủ tục tồn tại khi thủ tục đó được chạy; Khithủ tục kết thúc, giá trị của biến đó được giải phóng; Tức biến này có phạm

vi địa phương (local) trong thủ tục mà nó được khai báo

Phạm vi cơ bản của biến:

• Biến khai báo trong phần Declarations của 1 module form, standard, hay class,chứ không phải bên trong 1 thủ tụccó thể được sử dụng bởi mọi thủtục trong module

• Biến khai báo với từ khoá Public sử dụng được trong toànchương trình

• Biến khai báo với từ khoá Static vẫn lưu tiếp giá trị của nó ngay cảkhi thủ tục chứa khai báo của nó đã kết thúc

Chú ý: Trong 1 phạm vi, không được có 2 biến khai báo trùng tên

1.5.2 Khai báo không tường minh

Trong Visual Basic, biến có thể không khai báo trước khi sử dụng:

1.5.3 Khai báo tường minh

Nên luôn khai báo biến trước khi sử dụng

Trang 10

Để yêu cầu Visual Basic luôn kiểm tra biến phải được khai báo trước khi sửdụng:

- Đặt câu lệnh sau vào phần Declarations của 1 module class, form, hay standard:

Trang 11

1 module có phạm vi trong toàn module.

1 module với từ khoá Public có phạm vi

trong toàn chương trình.

Trang 12

1.7 Kiểu dữ liệu

1.7.1 Khai báo biến với kiểu dữ liệu

Biến thường được khai báo trước với kiểu dữ liệu định sẵnVí dụ:

Private I As Integer

Dim Amt As Double

Static YourName As String

Public BillsPaid As Currency

Private I As Integer, Amt As Double

Nếu kiểu biến không nêu rõ, biến sẽ có kiểu là Variant

Trang 13

1.7.4 Kiểu dữ liệu chuỗi

Dim EmpName As String * 50

Nếu biến EmpName được gán bằng 1 chuỗi ít hơn 50 kí tự, nó sẽ đượcchèn vào các kí tự trắng cho đủ 50 Còn nếu biến EmpName được gánbằng 1 chuỗi nhiều hơn 50 kí tự, Visual Basic sẽ cắt ngắn lại

Do chuỗi có độ dài cố định có thể được chèn thêm các kí tự trắng, chúng ta

có thể cần tới các hàm Trim, RTrim để loại bỏ các kí tự trắng

Chuỗi có độ dài cố định có thể được khai báo Public hay Private trong module standard. Trong

module form hay module class, chuỗi có độ dài

cố định chỉ có thể được khai báo Private

1.7.5 Trao đổi giữa chuỗi và số

Visual Basic có thể tự động chuyển đổi dữ liệu giữa kiểu số và chuỗi

Trang 14

Ví dụ:

Private Sub Command1_Click()

Dim intX As Integer

Dim strY As String

strY = "100.23"

intX = strY ' Passes the string to a numeric

' variable.

lstNum.AddItem Cos(strY) ' Adds cosine of number in

' the string to the listbox.

strY = Cos(strY) ' Passes cosine to the

' string variable.

txtStr.Text = strY ' String variable prints in

' the text box.

End Sub

Tuy nhiên, chúng ta phải luôn cẩn thận, bởi khi trao đổi giữa chuỗi và số, lỗi

có thể nảy sinh khi chuỗi số chứa giá trị không ở khuôn dạng số

1.7.6 Kiểu dữ liệu logic

Boolean True/False

1.7.7 Kiểu dữ liệu thời gian

Giá trị về ngày tháng, hay thời gian có thể được lưu trữ trong kiểu dữ liệu

Date hay trong Variant

Trang 15

1.7.8 Kiểu dữ liệu đối tượng

Biến đối tượng được lưu trữ thành địa chỉ 32-bit Địa chỉ này tham trỏ tớiđối tượng trong chương trình, hay tới đối tượng trong chương trình khác

Dim objDb As Object

Set objDb = OpenDatabase("c:\Vb5\Biblio.mdb")

1.7.9 Kiểu dữ liệu Variant

Biến kiểu Variant có thể lưu trữ dữ liệu có kiểu bất kỳ Chúng ta không phảichuyển đổi giữa các kiểu dữ liệu nếu chúng ta gán chúng cho 1 biến kiểuVariant

1.7.10Kiểu dữ liệu do người dùng tự định nghĩa

Chúng ta có thể định nghĩa những kiểu dữ liệu mới, tương tự như kháiniệm Record trong Pascal

Trang 16

1.8 Mảng

Trong Visual Basic, có 2 kiểu mảng: mảng tĩnh với kích thước cố định vàmảng động với kích thước có thể thay đổi khi chạy

1.8.1 Khai báo mảng tĩnh

Dim Counters(14) As Integer

Public Sums(20) As Double

Khi đó, mảng Counters có 15 phần tử với chỉ số từ 0 tới 15, mảng Sums có

21 phần từ 0 tới 20

Để chỉ rõ phạm vi chỉ số, có thể khai báo:

Dim Counters(1 To 15) As Integer

Dim Sums(100 To 120) As String

1.8.2 Mảng chứa các mảng

Có thể tạo mảng các Variant, và sau đó gán giá trị cho nó với mảng củacác kiểu dữ liệu khác Ví dụ tạo 2 mảng, một chứa các số nguyên và mộtchứa các chuỗi Sau đó khai báo mảng thứ 3 chứa các Variant và gán giátrị với nó từ mảng số nguyên và mảng chuỗi

Private Sub Command1_Click()

Dim intX As Integer ' Declare counter variable.

' Declare and populate an integer array.

Dim countersA(5) As Integer

For intX = 0 To 4

countersA(intX) = 5

Next intX

' Declare and populate a string array.

Dim countersB(5) As String

Với Visual Basic, chúng ta có thể khai báo các mảng nhiều chiều:

Static MatrixA(9, 9) As Double

Dim MultiD(3, 1 To 10, 1 To 15)

Trang 17

1.9 Hàm và thủ tục

Phân chia chương trình thành hàm và thủ tục có 2 lợi ích chính:

• Chia chương trình thành các khối logic tách rời, mỗi khối dễ dàngđược viết và gỗi lỗi hơn nếu viết cả chương trình lớn

• Một hàm/thủ tục có thể được sử dụng nhiều lần

Trong Visual Basic có một số kiểu hàm/thủ tục sau:

• Thủ tục không trả về giá trị: thủ tục chung và thủ tục sự kiện

Trang 18

1.9.2 Tạo 1 hàm/thủ tục chung:

• Gõ vào phần đầu hàm/thủ tục vào cửa sổ Code, với dạng sau

Sub UpdateForm () Function GetCoord ()

• Visual Basic sẽ hoàn tất thủ tục theo khuôn mẫu

1.9.3 Gọi 1 thủ tục

Có 2 cách như sau:

' Both of these statements call a Sub named MyProc.

Call MyProc (FirstArgument, SecondArgument)

MyProc FirstArgument, SecondArgument

- trong module class

Dim DemoClass as New Class1 DemoClass.SomeSub

- trong module standard

Module2.CommonName(arguments)

1.9.6 Truyền tham số cho hàm/thủ tục:

Function WhatsForLunch(WeekDay As String, Hour _

As Integer) As String

' Returns a lunch menu based on the day and time.

If WeekDay = "Friday" then

Trang 19

1.10 Cấu trúc điều khiển

[Case Else

[statementblock-n]]

End Select

Ví dụ:

Private Sub mnuCut_Click (Index As Integer)

Select Case Index

Case 0 ' Cut command.

CopyActiveControl ' Call general procedures.

Trang 21

Function CountStrings (longstring, target)

Dim position, count

position = 1

Do While InStr(position, longstring, target)

position = InStr(position, longstring, target)_

Trang 22

For i = 0 To frmVCR.Controls.Count - 1

If TypeOf frmVCR.Controls(i) Is Shape Then

If frmVCR.Controls(i).Name = MyControl Then

For Each element In group

statements

Next element

Ví dụ:

Sub ListTableDefs()

Dim objDb As Database

Dim MyTableDef as TableDef

Set objDb = OpenDatabase("c:\vb\biblio.mdb", _

Chú ý rằng khi sử dụng For Each Next:

Với collection, phần tử (element) chỉ có thể là: biến Variant, biến

Object, hay 1 object được liệt kê trong Object Browser

Với mảng, phần tử (element) chỉ có thể là biến Variant.

• Không được sử dụng For Each Next với mảng các phần tử có kiểu

dữ liệu do người dùng tự định nghĩa bởi 1 biến Variant không thểchữa dữ liệu có kiểu này

Trang 23

1.10.3Làm việc với cấu trúc điều khiển

Các cấu trúc lồng nhau

Ví dụ:

Private Sub Form_Click()

Dim SFont, PFont

For Each SFont In Screen.Fonts()

For Each PFont In Printer.Fonts()

If SFont = PFont Then

Thoát khỏi 1 cấu trúc điều khiển lặp

Bằng cách sử dụng câu lệnh Exit: Exit For giúp thoát khỏi vòng lặp ForNext, và Exit Do giúp thoát khỏi vòng lặp Do While

For counter = start To end [Step increment]

[statementblock]

[Exit For]

[statementblock]

Next [counter[, counter] [, ]]

Do [{While | Until} condition]

Private Sub Form_Click()

Dim SFont, PFont

For Each SFont In Screen.Fonts()

For Each PFont In Printer.Fonts()

If SFont = PFont Then

Private Sub Form_Click()

Dim SFont, PFont

For Each SFont In Screen.Fonts()

For Each PFont In Printer.Fonts()

If SFont = PFont Then

Print Sfont

Exit Sub ' Exit the procedure.

End If

Trang 24

Next PFont Next SFont End Sub

Ngày đăng: 06/10/2013, 12:20

TỪ KHÓA LIÊN QUAN

w