. Mảng động
- Mảng này có thể thay đổi kích cỡ, là một trong những ưu điểm của VB, mảng động giúp quản lý bộ nhớ một cách hiệu quả. Ta có thể dùng một mảng lớn trong thời gian ngắn, sau đó xóa bỏ để trả vùng nhớ cho hệ thống.
- Khai báo:
+ Khai báo Public hoặc Dim trong module, hoặc khai Static hay Dim trong thủ tục. Khai báo một mảng động bằng cách cho nó một danh sách không theo chiều nào cả.
Dim a()
+ Cấp phát số phần tử thực sự bằng dòng lệnh Redim
Redim a(6)
* Dòng lệnh Redim chỉ có thể xuất hiện trong thủ tục. Nó là một dòng lệnh thi hành, nó làm ứng dụng phải thực hiện một hành động lúc chạy chương trình.
* Mỗi lần gọi Redim tất cả giá trị chứa trong mảng hiện hành bị mất. Muốn thay đổi kích cỡ của mảng mà không mất dữ liệu thì phải sử dụng thêm từ khóa Preserve.
- Ví dụ: Nhập vào một mảng các phần tử, sử dụng hàm inputbox. Sắp xếp mảng đó theo chiều tăng dần.
53 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3488 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đề tài: Phân loại sản phẩm theo mã vạch, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đề tài:
Phân loại sản phẩm theo mã vạch
Tổng quan các dây truyền phân loại sản phẩm
Mã vạch và ứng dụng
Giải pháp và mô hình dây truyền
Các Modul cho 1 hệ thống phân loại.
Mô hình dây truyền phân loại sản phẩm.
Thiết kế các Modul
Băng tải:
Có nhiệm vụ vận chuyển sản phẩm hay hàng hoá đến các vị trí kiểm tra phân loại lưu kho ...
Robot:
Trong mô hình này chúng em sử dụng 1 robot 2 bậc tự do để loại sản phẩm. Vật A sau khi đi qua băng truyền và được kiểm tra phân loại, vật được dừng lại tại vị trí đặt cảm biến. Tay robot có nhiệm vụ là gắp vật A ra khỏi băng truyền, đặt vào kho chứa.
Tay robot làm việc theo tọa độ trục Decats : A(q,z).
2 bậc tự do : ® q : quay quanh truc z
® z : lên xuống theo truc z
Nguyên lý làm việc :
Khi vật A đi đến vị trí đặt cảm biến và dừng lại tại đó, tay robot từ vị trí Height (đặt công tắc hành trình) di chuyển xuống vị trí Low (đặt công tắc hành trình) cũng theo trục z tay gắp (đặt công tắc hành trình) gắp vật, nâng vật A lên vị trí height chạm vào công tắc và đồng thời quay thân theo trục z cho đến khi chạm vào công tắc hành trình thì dừng lại ® hạ tay robot xuống cho đến khi chạm vào công tắc hành trình tại vị trí Low ® nhả vật A rồi quay về vị trí ban đầu tiếp tục cho quá trình gắp vật tiếp theo.
Thiết kế :
Quay thân : Dùng động cơ gắn thẳng trục bên dưới tấm Bích tròn
Số lượng 2 tấm Bích:
- Tấm dưới được bắt cố định
- Tấm trên được gắn với động cơ và phần thân robot.
Nâng thân :
Di chuyển lên xuống theo trục z.
Trục vít được gắn với 1 động cơ và ren trên trục vít được gắn với 1 đai ốc cố định trên tay robot, khi động cơ quay sẽ làm trục vít quay theo đồng thời tay robot được nâng lên or hạ xuống tùy theo chiều quay của động cơ.
Tay robot đươc gắn cố định với 2 thanh trượt 2 bên thân robot.
Tay gắp :
Cơ cấu gắp nhả cũng dùng trục vít đươc gắn với 1 động cơ nằm trên tay robot..khi động cơ quay thuận thì tay kẹp và ngược lại.
Chän s¬ ®å nguyªn lý vµ kÕt cÊu Robot
S¬ ®å nguyªn lý cña Robot ph¶i phï hîp víi c¸c yªu cÇu sau:
* ThÓ hiÖn ®Çy ®ñ c¸c chøc n¨ng, bé phËn cña Robot vµ c¸c ®Æc ®iÓm cña tõng lo¹i.
* Th©n Robot cã kÕt cÊu phï hîp víi chøc n¨ng lµm viÖc cña Robot. KÕt cÊu ®ñ v÷ng ch¾c ®Ó ®¶m b¶o c«ng suÊt lµm viÖc cña Robot bao gåm, søc n©ng th©n Robot vµ lùc n©ng chi tiÕt khi thao t¸c. Lùc vµ momen qu¸n tÝnh ë tay m¸y.
* Cã hÖ thèng ®iÒu khiÓn.
* HÖ truyÒn ®éng khÝ nÕn ®èi víi truyÒn ®éng kÑp nh¶ tay m¸y.
* HÖ truyÒn ®éng thuû lùc ®Ó truyÒn ®éng theo ph¬ng z vµ ®Èy tay m¸y theo ph¬ng r trong hÖ to¹ ®é M (r, , z) ..
* S¬ ®å hÖ thèng c¬ khÝ ®èi víi truyÒn ®éng quay th©n Robot.
Ph©n tÝch víi yªu cÇu cña ®Ò bµi:
* Robot lµm viÖc träng hÖ to¹ ®é trô M (r, , z) nªn lµm viÖc rÊt khoÎ nhng nhîc ®iÓm lµ khã lµm viÖc víi nh÷ng vÞ trÝ s¸t ch©n vµ tÝnh c¬ häc kh«ng cao.
* Víi c¬ cÊu truyÒn ®éng nh s¬ ®å ®· cho, ta thÊy r»ng Robot cã thÓ tham gia cïng lóc 2 chuyÓn ®éng chÝnh lµ chuyÓn ®éng tÞnh tiÕn ®ång thêi quay quanh trôc z cña th©n Robot vµ chuyÓn ®éng tÞnh tiÕn ®ång thêi quay theo ph¬ng r cña tay m¸y ®Ó thùc hiÖn viÖc g¾p nh¶ vËt tõ vÞ trÝ A sang vÞ trÝ B.
* ThiÕt kÕ Robot nhÊc vËt nÆng ®ßi hái ®é cøng v÷ng nhÊt ®Þnh, hÖ truyÒn ®éng ph¶i t¹o ra ¸p lùc ®ñ lín ®Ó n©ng vµ di rêi vËt. Do ®ã khi thiÕt kÕ cÇn hîp lý ho¸ 1 sè th«ng sè kü thuËt ®Ó ®¶m b¶o yªu cÇu cña bµi to¸n
TÝnh to¸n thiÕt kÕ
- Robot n©ng vËt cã khèi lượng mV¢T = 0,5kg. Lùc kÑp vËt ph¶i th¾ng
®ưîc träng lùc cña vËt cÇn n©ng
=> 2TV¢T> m V . g Chän hÖ sè an toµn = 1,5
=> TV¢T= k.mV.g/2 = 1,5.0,5.10/2 = 3,75 (N)
Chän : TV¢T= 4(N)
MÆt kh¸c ta l¹i cã TV¢T= PV¢T.k.S
víi PV¢T: Lùc kÑp cña c¬ cÊu g¾p
k: HÖ sè ma s¸t cña tay m¸y vµ vËt (chän b»ng 0,25)
S: DiÖn tÝch mÆt tiÕp xóc (Chän b»ng 5cm2)
Þ PV¢T = TV¢T/k.S = 3,75/0,25.5 = 3 (N)
- §iÒu kiÖn ®Ó khi g¾p vËt mµ c¸nh tay robot ®îc gi÷ c©n b»ng :
L1
L2=25
L0=20
WVAT
W1
®ßi hái ph¶i ®i t×m L1 khi ®· biÕt L2 25cm
Chän ®éng c¬ cã khèi lîng mDC = 0,8kg ®îc l¾p trong kho¶ng L1 (cha biÕt) trªn tay m¸y.
Khi g¾p vËt : W1.L1 = WVAT.L2 Þ L1 = WVAT.L2/ W1
Trong ®ã : W1 = mDC.g = 0,8.10 = 8 (N)
WVAT = mV .g = 0,5.10 = 5(N)
VËy : L1 = WVAT.L2/ W1 = 5 . 25/8 = 15,7cm
khi kh«ng g¾p vËt : W1.L1 = L2 Þ L1 = L2/ W1 = 25/8 = 3,3 cm
Þ chiÒu dµi trung b×nh trong 2 trêng hîp trªn :
L1 = (15,6 + 3,3) = 10 cm
Mạch động lực điều khiển ROBOT và băng tải
Băng tải: Sử dụng động cơ DC 1 chiều 12V được đấu nối trực tiếp vào chân Q1 của LOGO 1
Mạch role: Gồm 6 role chia thành 3 cặp nhiệm vụ điều khiển 3 động cơ DC kết nối tới các chuyển động của Robot bao gồm gắp nhả - nâng hạ - quay thân.
Chuyển động quay thân được LOGO 1 điều khiển
Chuyển động Gắp nhả - nâng hạ được LOGO 2 điều khiển
Mạch ghép nối máy tính sử dụng chip ATMEGA16L
Nguyên lý:
Lắp dựng:
Lập trình:
Trên thiết bị LOGO:
Sử dụng phần mềm LOGO!Soft Comfort V5.0?
Các chuyển động của Robot và băng truyền được lập trình thông qua 2 bộ Logo
Logo1 : Điều khiển động cơ băng truyền và chuyển động quay thân của Rôbốt
Bảng biến:
Start : I1
Stop : I2
Tín hiệu từ máy tính : I3
CTHT gắp : I4
CTHT nhả : I5
CTHT nâng : I6
CTHT vị trí A : I7
CTHT vị trí B : I8
Băng truyền chạy : Q1
Băng truyền dừng : Q2
Thân Robot quay thuận (AàB) : Q3
Thân Robot quay ngược (BàA) : Q4
Logo2: điều khiển chuyển động nâng hạ thân và gắp nhả của tay Rôbốt
Bảng biến:
I1: được nối với cổng Q1 và Q2 của hệ bộ Logo1
CTHT gắp : I2 Q1
CTHT nhả : I3 Q2
CTHT nâng : I4 Q3
CTHT hạ : I5 Q4
CTHT vị trí A : I6
CTHT vị trí B : I7
Lập trình mạch ghép nối máy tinh:
Đã thử nghiệm thành công khi truyền nhân 32 byte từ máy tính xuống và gửi dữ liệu 32 byte từ mạch điều khiển lên
Thiết lập cổng vào ra:
Khi xem xét đến các cổng I/O của AVR thì ta phải xét tới 3 thanh ghi
bit DDxn,PORTxn,PINxn.
-Các bit DDxn để truy cập cho địa chỉ xuất nhập DDRx. Bit DDxn
trong thanh ghi DDRx dùng để điều khiển hướng dữ liệu của các chân của cổng này.Khi ghi giá trị logic ‘0’ vào bất kì bit nào của thanh ghi này thì nó sẽ trở thành lối vào,còn ghi ‘1’ vào bit đó thì nó trở thành lối ra.
-Các bit PORTxn để truy cập tại địa chỉ xuất nhập PORTx. Khi
PORTx được ghi giá trị 1 khi các chân có cấu tạo như cổng ra thì điện trở kéo là chủ động(được nối với cổng).Ngắt điện trở kéo ra, PORTx được ghi giá trị 0 hoặc các chân có dạng như cổng ra.Các chân của cổng là 3 trạng thái khi 1 điều kiện reset là tích cực thậm chí xung đồng hồ không hoạt động.
-Các bit PINxn để truy cập tại địa chỉ xuất nhập PINx. PINx là các
cổng chỉ để đọc,các cổng này có thể đọc trạng thái logic của PORTx.PINx không phải là thanh ghi,việc đọc PINx cho phép ta đọc giá trị logic trên các chân của PORTx.chú ý PINx không phải là thanh ghi,việc đọc PINx cho phép ta đọc giá trị logic trên các chân của PORTx.
Nếu PORTxn được ghi giá trị logic ‘1’ khi các chân của cổng có dạng như chân ra ,các chân có giá trị ‘1’.Nếu PORTxn ghi giá trị ‘0’ khi các chân của cổng có dạng như chân ra thì các chân đó có giá trị ‘0’.
Các cổng của AVR đều có thể đọc,ghi. Để thiết lập 1 cổng là cổng vào ,ra thì ta tác động tới các bit DDxn, PORTxn,PINxn.ta có thể thiết lập để từng bit làm cổng vào,ra cứ không chỉ với cổng,như vậy ta có thể sử lí tới từng bit,đây chính là điểm mạnh của các dòng Vi điều khiển 8 bit.
Ta có thể sử dụng CodeWizardAVR để thiết lập cho các PORTx và Pinx. Ví dụ như trên hình:các bit 0,1,2,4,7 của PORTA làm chân ra có trở kéo,còn các bit còn lại làm chân vào. Khi đã thiết lập xong thì các bit 0,1,2,4,7 sẽ có thể xuất dữ liệu ra còn các bit còn lại có thể nhận dữ liệu vào.
Việc thiết lập cổng vào ra là một việc quan trọng vì tùy theo mục đích sử dụng các cổng nào làm cổng vào ra,thì ta phải thiết lập đúng thì mới có thể sử dụng được, động tác này khác với họ vi điều khiển 8051- AT8951.
CodeVision:
Để tạo Project mới chọn trên menu: File à New được như sau:
Chọn Project sau đó click chuột vào OK được cửa sổ hỏi xem có sử dụng Code Winzard không:
Chọn Yes được cửa sổ CodeWinzardAVR như sau :
Sử dụng chíp AVR nào và thạch anh tần số bao nhiêu ta nhập vào tab Chip.
Để khởi tạo cho các cổng IO ta chuyển qua tab Ports.
Các chân IO của AVR mặc định trạng thái IN, muốn chuyển thành trạng thái OUT để có thể đưa các mức logic ra ta click chuột vào các nút IN (mầu trắng) để nó chuyển thành OUT trong các Tab Port.
Sau đó chọn File àGenerate, Save and Exit
Được cửa sổ yêu cầu nhớ các file của Project. Đây là ví dụ IO nên ta save tên là IO.
Sau khi nhớ song 3 file : IO.c – IO.prj – IO.cwp được cửa sổ như sau:
Để dịch chương trình ấn F9 hoặc vào menu : Project à Compile.Được cửa sổ Information như sau:
Chương trình không có lỗi. Nhấp OK. Để nạp chương trình các bạn cần cấu hình cho mạch nạp.
Trong tab After Make các bạn đánh dấu vào Program the Chip và nhấp OK. Nhấn tổ hợp phím Shift + F9 được như hình bên. Cắm Jump mạch nạp vào .Click vào Program. Đợi nạp xong nhổ jump nạp ra ấn Reset để thấy led chạy.
Điều khiển I/O với LCD
Biết khởi tạo cho LCD với CodeWinzardAVR với bất kỳ cổng nào. Hiển thị ra LCD các ký tự bất kỳ.
Ví dụ LCD được nối với PORTB.
Chức năng của LCD trong hầu hết các mạch, các bộ điều khiển đảm
nhân vai trò hiển thị các thông số, các thông tin mà chúng ta muốn nhập vào hay các thông tin xử lý mà bộ điều khiển đang hoạt động đựoc hiển thị ra màn hình, giúp chúng ta giao tiếp gần hơn với quá trình hoạt đông của hệ thống. Loại LCD mà chúng ta sử dụng là loại SD-DM1602A 2 dòng mổi dòng 16 kí tự, loại này do Trung Quốc sản xuất . Nó có 16 chân như hình vẽ. Trong đó chúng ta có thể thấy 2 chân 1,2 được cấp nguồn cho LCD hoạt động, chân thứ 3 (chân VSS) được nối vào đầu ra của biến trở dùng để điều chỉnh độ tương phản (phải điều chỉnh VSS hợp lý thì LCD mới hiển thị được) 2 chân 15,16 đây là 2 chân cấp nguồn dung để bật đèn của LCD từ chân 4-
>14 là các chân điều khiển được nối với vi điều khiển, các chân 4,5,6 được để điều khiển hoạt động của LCD, các chân còn lại là 8 bit Data dùng để truyền nhận dữ liệu. Chúng ta có thể giao tiếp Data 8 bit hoặc 4 bit như trong mạch của chúng ta truyền Data dưới dạng 4 bit. Việc truyền dưới dạng 4bit hoặc 8 bit phải được thiết lập cả phần cúng và phần mềm.
Các bước khởi tạo trong CodeWinzard như sau:
Trong cửa sổ CodeWinzard, chọn tab LCD, trong list mặc định là None, các bạn chuyển thành PORTB cho phù hợp với phần cứng của KIT( thiết kế LCD ở PORTB). Chọn File à Generate, Save and Exit được như sau:
Code cho LCD các bạn có thể tham khảo trong Help bằng cách chọn
trên menu Help à Help Topic(hoặc ấn F1). Được cửa sổ Help như sau:
Trong vòng while(1) trong hàm main ta viết các câu lệnh như sau:
while (1)
{/
/ Place your code here
lcd_gotoxy(0,0);// Dua con tro ve goc, dong 0, cot 0
lcd_putsf("DKS-MTC-JACKY");// Hien thi dong chu
lcd_gotoxy(0,1);// Dua con tro ve dong 1, cot 0
lcd_putsf("Wellcome you"); // Hien thi dong chu
delay_ms(3000); // Tre 3 s
lcd_gotoxy(0,0); // Dua con tro ve dong 0 cot 0
lcd_putsf("embestdks.com"); // Hien thi dong chu
delay_ms(3000); // Tre 3 s
};
Code lập trình truyền nhận dữ liệu với máy tính
// ===============Ngat nhan USART=============
#define RX_BUFFER_SIZE 32
char rx_buffer[RX_BUFFER_SIZE]; // --- Bo dem nhan rx_buffer[RX_BUFFER_SIZE]
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
//----------------------------------------------------------------------------
// USART Transmitter buffer
// ==================Ngat truyen USART=============
#define TX_BUFFER_SIZE 32
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif
// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif
Lập trình trên máy tính:
Visual Basic còn có hai dạng khác: Visual Basic for Application (VBA) và VBScript. VBA là ngôn ngữ nằm phía sau các chương trình Word, Excel, MSAccess, MSProject, .v.v.. còn gọi là Macros. Dùng VBA trong MSOffice, ta có thể làm tăng chức năng bằng cách tự động hóa các chương trình. VBScript được dùng cho Internet và Operating System.
Đặc trưng cơ bản của Visual Basic
- Trực quan
- Lập trình theo sự kiện
- Hướng đối tượng
Các phiên bản Visual Basic 6
Có ba ấn bản VB6: Learning, Professional và Enterprise.
Professional cung cấp đầy đủ thong tin mà bạn cần để học và triển khai một chương trình VB6, nhất là các control ActiveX. Ngoài đĩa compact chính cho VB6, tài liệu đính kèm gồm có sách Visual Studio Professional Features và hai đĩa CD Microsoft Developer Network (MSDN).
Ấn bản Enterprise là ấn bản Professional cộng thêm các công cụ Back Office chẳng hạn như SQL Server, Microsoft Transaction Server, Internet Information Server.
Cách cài đặt VB6
Để cài đặt VB6, máy tính của bạn cần phải có một ổ đĩa CD-ROM (CD drive) . Bạn cần ít nhất 32 MB RAM, 2 GB hard disk và CPU Pentium II. Khi cho VB6 CD vào CD drive, nó sẽ tự khởi động để hiển thị menu cho bạn chọn những thứ gì cần Setup.
+ Bấm Install Visual Basic 6.0 để cài VB6. Ngoại trừ các file hệ điều hành (Operating System) trong thư mục (folder) \Os, các file trong đĩa compact đều không bị nén. Vì thế, bạn có thể sử dụng chúng trực tiếp từ đĩa. Ví dụ, có nhiều công cụ và thành phần trong folder \Tools vốn có thể được cài đặt trực tiếp từ CD-ROM.
Ngoài ra, bạn có thể chạy Setup khi nào cần thiết. Ví dụ, bạn có thể chạy Setup để cài đặt lại Visual Basic trong folder khác, hoặc để cài đặt thêm bớt các phần của VB6.
Nếu vì lý do gì hệ thống không install các đĩa compact MSDN (Không có Help khi chạy VB6), bạn có thể cài đặt chúng trực tiếp từ đĩa số 1 của bộ MSDN.
+ Để bổ xung và xóa các thành phần VB làm như sau:
Bỏ đĩa compact vào CD drive.
Nếu menu không tự động hiện lên thì chạy chương trình Setup có sẵn tong folder gốc trên đĩa compact.
Chọn nút Custom trong hộp thoại (dialog) Microsoft Visual Basic 6.0 Setup.
Chọn hay xóa các thành phần bằng cách check hay uncheck các hộp danh sách Options của dialog Custom.
Thực hiện các chỉ dẫn Setup trên màn hình.
Ghi chú: Trong lúc cài VB6, nhớ chọn Graphics nếu không bạn sẽ thiếu một số hình ảnh như icons, bitmaps v.v...
Môi trường phát triển tích hợp của VB (Integrated Development Environment - IDE)
Khi khởi động VB6 bạn sẽ thấy mở ra nhiều cửa sổ (windows), scrollbars, v.v... VB6 cho bạn chọn một trong nhiều loại ứn dụng.
Chọn Standard EXE, ta có cửa sổ làm việc của môi trường phát triển tích hợp (IDE) như sau:
* Các thành phần của IDE:
- Menu Bar
Chứa đầy đủ các commands mà bạn sử dụng để làm việc với VB6, kể cả các menu để truy cập các chức năng đặc biệt dành cho việc lập trình chẳng hạn như Project, Format, hoặc Debug.
- Toolbars (Debug, Edit, form Editor, Standard)
Các toolbars có hình các icons cho phép bạn click để thực hiện công việc tương đương với dùng một menu command, nhưng nhanh và tiện hơn.
Để ẩn hoặc hiện các toolbars dùng menu command View | Toolbars.
Ngoài ra bạn cũng có thể sửa đổi các toolbars theo ý thích bằng cách dùng Menu command View | Toolbars | Customize...
- Toolbox
Đây là hộp các công cụ điều khiển, mà bạn có thể đặt lên các form trong lúc thiết kế. Nếu Toolbox biến mất, bạn có thể làm nó trở lại bằng cách dùng menu command View | Toolbox.
Bạn có thể khiến toolbox hiển thị nhiều controls hơn bằng cách dùng menu command Project | Components.
Project Explorer
Liệt kê các forms và các modules trong project hiện hành của bạn. Một project là sự tập hợp các files mà bạn sử dụng để tạo một trình ứng dụng. Tức là, trong VB6, khi nói viết một program có nghĩa là triển khai một project.
Properties window
Liệt kê các đặc tính của các forms hoặc controls được chọn. Một property là một đặc tính của một object chẳng hạn như size, caption, hoặc color. Khi bạn sửa đổi một property bạn sẽ thấy hiệu quả ngay lập tức, thí dụ thay đổi property Font của một Label sẽ thấy Label ấy được display bằng Font chữ mới.
Form Layout
Bạn dùng form Layout để chỉnh vị trí của các forms khi form hiện ra lần đầu lúc chương trình chạy.
Form Designer
Dùng để thiết kế giao diện lập trình. Bạn bổ sung các controls, các đồ họa (graphics), các hình ảnh vào một form.
Immediate Window
Dùng để gỡ rối (debug) trình ứng dụng của bạn. Khi chương trình đang tạm ngừng ở một điểm nào đó, bạn có thể thay đổi giá trị các biến hay chạy một dòng chương trình.
View Code button
Bấm đúp vào nút để xem code của một form mà bạn đã chọn. Cửa sổ code giống như giao diện dưới đây:
Trong cửa sổ này bạn có thể chọn hiện thị tất cả Sự kiện(thủ tục) cùng một lúc.
Trong hình dưới đây, Properties Window và Form Layout đã được đưa ra ngoài.
Nhận trợ giúp trong khi đang làm việc
Bạn có thể cần tìm hiểu các thông tin liên quan đến các commands, functions .v.v.. của VB6 bằng cách khởi động Microsoft Developer Network | MSDN Library Visual Studio 6.0 từ nút Start, hay bấm chọn Help | Contents từ Menu Bar của VB6.
Nội dung Help bao gồm nhiều đặc điểm được thiết kế để thực hiện việc tìm kiếm thông tin dễ dàng hơn. Bạn có thể dựa trên Contents để đọc tài liệu như một quyển sách, Index để đọc những đoạn có nhắc đến một keyword hay Search để tìm một tài liệu nhanh hơn.
Context Sensitive Help (trợ giúp trong đúng tình huống)
Nhiều phần của VB6 là context sensitive, có nghĩa là lúc bối rối chỉ cần ấn nút F1 hoặc highlight keyword rồi nhấn F1 là được thông tin những gì liên hệ trực tiếp với tình huống hiện giờ của bạn.
Ngoài ra, trong Help thường có ví dụ, chọn từ Example để hiện thị một thí dụ minh họa cách dùng một function hay property.
Microsoft on the Web
Web site của Microsoft chứa nhiều thông tin cập nhật cho những người lập trình VB6. Trang chủ Visual Basic đặt tại URL
Để truy cập Web site của Microsoft, từ menu Help chọn Microsoft on the Web rồi chọn menu con tùy thích như dưới đây.
Ghi chú: Một số nội dung trên Web site của Microsoft được tối ưu hóa dành cho Microsoft Internet Explorer và không thể hiển thị đầy đủ trong một bộ trình duyệt (browser) khác. Do đó bạn nên chỉ dùng Internet Explorer làm browser trên máy bạn mà thôi.
Các toán tử
- Toán tử số học
Ký hiệu
Ý nghĩa
+
Phép cộng
-
Phép trừ
*
Phép nhân
/
Chia 2 số thực
\
Chia 2 số nguyên
- Toán tử logic
=
Bằng
Khác
>
Lớn hơn
<
Nhỏ hơn
>=
Lớn hơn hay bằng
<=
Nhỏ hơn hay bằng
Quy ước khi viết chương trình
- Đặt tên đối tượng, biến, hằng và thủ tục.
- Định dạng chuẩn cho các tiêu đề và chú thích trong chương trình.
- Các khoảng trắng, định dạng và gióng hàng trong chương trình.
Quy ước khi đặt tên: Tên thủ tục, biến, hằng phải tuân theo nguyên tắc sau:
Bắt đầu bằng một ký tự
Không chứa dấu chấm hoặc những ký tự đặc biệt dung cho khai báo kiểu dữ liệu
Không quá 255 ký tự. Tên của điều khiển, biểu mẫu, lớp và module không quá 40 ký tự.
Không đặt trùng với từ khóa.
Một số hàm có sẵn
Hàm
Ý nghĩa
a mod b
Lấy phần dư của phép chia a và b
sqr(a)
Lấy căn bậc 2 của a
Abs(a)
Trả về giá trị tuyệt đối
Asc(ký tự)
Trả lại mã Ascii của ký tự
Chr(Mã Ascii)
Trả lại ký tự tương ứng với mã
Cos(number)
Trả về giá trị cos của một góc
Date()
Trả về ngày hiện hành
Day(date)
Trả về số ngày của tháng
Inputbox(“Thông báo”)
nhập giá trị thông qua hộp thoại
Int(number)
Trả về phần nguyên của số
Lcase(chuỗi)
đổi chuỗi sang chữ thường
Ucase(chuỗi)
đổi chuỗi sang chữ hoa
2- Xây dựng một ứng dụng
1. Các bước tạo ứng dụng
- Tạo giao diện
- Thiết lập thuộc tính
- Viết lệnh
2. Đưa các điều khiển vào Form
- Để đưa một điều khiển (Text, Label, CommandButton,…) thì bấm chọn biểu tượng của điều khiển trên thanh Toolbox rồi kéo vào form.
- Để sắp xếp cho một số Control thẳng hàng với nhau bạn chọn cả nhóm rồi dùng lệnh Menu Format|Align|Lefts …, để căn bên trái hoặc căn bên phải…
Để chọn một nhóm Control thì có thể thực hiện như sau: Nhấn Shift trong khi bấm chọn các điều khiển. Các điều khiển sẽ định dạng theo điều khiển được chọn cuối cùng.
3. Thêm mã lập trình để xử lý một sự cố
- Bấm phải chuột nên đối tượng rồi chọn event hoặc bấm đúp vào đối tượng để viết sự kiện tương ứng cho đối tượng.
- Private Sub cmdXuat_Click()
‘ Khối lệnh
End Sub
- Lưu ý là tên của đối tượng là gì thì sự kiện sẽ có tên tương ứng.
- Để tạo các dòng chú thích trong khi lập trình thì đặt dấu phẩy (‘) trước dòng chú thích. Khi biên dịch chương trình sẽ bỏ qua các dòng lệnh này. Là lập trình viên chuyên nghiệp bạn nên tập thói quen dùng chú thích mọi nơi để giúp người khác và chính bạn hiểu chương trình của mình.
- Trong VB mỗi một lệnh được viết trên một dòng, nếu dòng lệnh nào dài quá muốn cắt làm hai dòng thì chấm dứt dòng thứ nhất bằng dấu gạch dưới _.
4. Đặt tên cho các đối tượng
- Trong VB để cho việc lập trình được thuận lợi và rõ ràng thì người ta đưa ra quy ước đặt tên cho các điều khiển như sau: tiềntố_tênđiều khiển;
- Tên của đối tượng thường được đặt trong thuộc tính Name của đối tượng
Trong đó mỗi tiền tố gồm 3 chữ cái do VB quy ước để phân biệt các điều khiển với nhau còn tên điều khiển do người dùng tự định nghĩa.
- Bảng tiền tố của một số điều khiển thường dùng
Đối tượng
Tiền tố
Ví dụ
Form
frm
frmNhapsolieu
Label
lbl
lbfNhapa
Text box
txt
txtSoa
Frame
fra
fraChoice
Command Button
cmd
cmdExit
Check Box
chk
chkSound
Option Button
opt
optLevel
Combo Box
cbo
cboChon1
List Box
lst
lstSanpham
Hor.Scroll Bar
hsb
hsbGiatri
Ver.Scroll Bar
vsb
vsbGiatri
Command Dial.Box
cm
CMDialog1 ( Hộp đối thoại dùng chung)
Picture Box
pic
picMypicture
Phần thực hành:
Viết chương trình :
Viết code cho 2 nút Hienthi và ketthuc như sau:
+ Để chạy chương trình: Run\ Start hoặc nhấn phím F5. Ta sẽ thấy giao diện như sau:
+ Nhập dòng text vào hộp thứ nhất. Bấm nút hiển thị thì dòng text đó sẽ được đưa ra hộp thứ 2. Để kết thúc chương trình thì bạn nhấn nút Kết thúc.
+ Lưu dự án:
Một chương trình ứng dụng hoàn chỉnh trong VB gọi là một dự án (Project). Tên tệp dự án có đuôi là .vbp. Tệp này quản lý các tệp có liên quan đến dự án, ví dụ tệp có đuôi .frm lưu biểu mẫu, tệp .vbw lưu vùng làm việc của CSDL…Khi kết thúc làm việc với một ứng dụng, VB sẽ yêu cầu lưu biểu mẫu rồi đến tệp dự án.
Biểu mẫu và điều khiển
1. Khái niệm: thuộc tính, phương thức và sự kiện:
- Điều khiển: là những đối tượng vừa có hình, vừa có code chạy bên trong một window nho nhỏ, giống như một form. Ta thao tác với một điều khiển thông qua ba đặc tính:
+ Thuộc tính (Properties): tập hợp các đặc tính của điều khiển mà ta có thể cài đặt khi thiết kế.
+ Phương thức (Methods): là những gì mà điều khiển thực hiện được, nó dùng để đáp ứng các sự kiện.
+ Sự kiện (Events): những sự kiện mà điều khiển thông báo khi nó xảy ra. Khi một sự kiện xảy ra VB6 sẽ xử lý bằng một Sub Command1_Click(), miễn là chúng ta viết code sẵn trong đó. Có một số Events mà chúng ta thường xử lý là:
*) Click: Xảy ra khi người dùng bấm chuột lên điều khiển.
*) MouseDown, MouseUp: mỗi khi User bấm một mouse button là có một MouseDown Event, khi User buông nó ra thì có một MouseUp Event.
*) Change : Thay đổi giá trị của điều khiển.
2. Một số sự kiện của Form.
- Form_Initialize: Event này xảy ra đầu tiên và chỉ một lần thôi khi ta khởi chạy form đầu tiên.
- Form_Load: Event này xảy ra đầu tiên mỗi lần ta khởi chạy một form.
- Form_Activate: Ta có thể dùng sự kiện này để làm mới những hiển thị trên form.
-MDI Form: là một form có thể chứa nhiều form con bên trong. Để có một MDIForm bạn cần phải dùng menu command Project | Add MDI Form. Mỗi VB6 project chỉ có thể có tối đa một MDIform. Muốn một form trở thành một form con bạn đặt property MDI Child của nó thành True.
- KeyPress: xảy ra khi người dùng nhấn một phím. Sự kiện này giá trị là mã ASCII, một con số có giá trị từ 1 đến 255, của phím.
3. Một số điều khiển thường dùng.
- TextBox:
TextBox là điều khiển được dùng nhiều nhất để hiện thị hoặc nhập dữ liệu.
+ Thuộc tính Property Enable: Ẩn hiện textbox (True hiện; False ẩn)
+ Thuộc tính Lock: True (không cho sửa đổi)
+ Thuộc tính Align: Căn trái, phải, giữa.
+ Thuộc tính BackColor và ForeColor: tạo mầu cho nền và chữ của TextBox.
+ Muốn cho text box multiline text thì phải nhét vào mỗi cuối hàng CarriageReturn và LineFeed characters . Thí dụ như:
Private Sub Command1_Click()
Dim TextStr
TextStr = "Bau ra bau lay ong cau" & vbCrLf ' Note: vbCrLf = chr(13) & chr(10)
TextStr = TextStr & "Bau cau ca bong ngat dau kho tieu"
Text1.Text = TextStr
End Sub
+ Thuộc tính PasswordChar bằng "*" để khi ta nhập bất kỳ ký tự nào ô textbox thì nó cũng hiển thị là dấu "*" và để người khác không đọc được Paswword. Ví dụ:
- CommandButton
CommandButton dùng để việc xử lý phương thức đáp ứng những sự kiện của bài toán. Sự kiện hay dùng nhất cho CommanButton là Click.
+ Thuộc tính Caption: Hiển thị dòng chữ trên nút. Nếu muốn sử dụng phím nóng thay cho việc bấm nút thì đặt "&" trước chữ cái muốn sử dụng. Ví dụ nếu viết &Exit thì việc nhấn chuột tương đương với nhấn tổ hợp phím Alt+E.
+ Thuộc tính picture: để thêm một hình ảnh vào nút, khi đó ta phải đặt thuộc tính Style là Graphical.
- Label
Nhãn dùng để hiển thị dữ liệu. Do đó dùng các thuộc tính Font, ForeColor và Backcolor để làm cho nó đẹp. Ngoài ra thuộc tính BorderStyle làm cho nhãn chìm xuống nếu bạn đặt nó bằng Fixed Single.
- CheckBox
CheckBox được dùng để xác nhận có đặc tính nào một cách nhanh chóng.
+ Property Value: nếu đặt là Checked (làm cho hộp vuông có dấu, bằng 1), Unchecked (làm cho hộp vuông trống không, bằng 0) hay Grayed (làm cho hộp vuông có dấu màu nhạt, bằng 2). Một khi biết rằng CheckBox có Value bằng 1, ta có thể đọc Caption của CheckBox để dùng nếu cần.
+ Ví dụ:
- OptionButton
OptionButton ( còn gọi là RadioButton) có hình tròn với một chấm ở giữa, thay gì hình vuông với một gạch ở giữa như CheckBox. OptionButton luôn luôn được qui tụ thành một nhóm, chứa trong một khung. Khung là một điều khiển có khả năng chứa các điều khiển khác, ví dụ như Frame, PictureBox, Form. Sau khi đặt một Khung lên Form, nếu muốn để một OptionButton lên đó, trước hết ta phải chọn khung sau đó mới chọn OptionButton.
Đôi khi một khung nằm che trên một điều khiển khác. Muốn chuyển nó ra phía sau các điều khiển khác thì ta chọn khung rồi dùng Menu command Format | Order | Send to Back.
- Thanh cuốn ngang, dọc:
+ Thuộc tính Value để lấy ra giá trị của thanh cuốn.
+ Thuộc tính Max: đặt giá trị lớn nhất cho thanh cuốn
+ Thuộc tính Min: đặt giá trị nhỏ nhất cho thanh cuốn
- Ví dụ 1: Tạo giao diện như sau:
Private Sub VSso2_Change()
lblgiatri2.Caption = " Gia tri cua thanh cuon la:"
& CStr(VSso2.Value)
End Sub
- Ví dụ 2: Xây dựng ứng dụng có giao diện :
Code:
Private Sub chkdam_Click()
If chkdam.Value = 1 Then
lblhienthi.FontBold = True
End If
End Sub
'--------------------------------------
Private Sub chkgachchan_Click()
If chkgachchan.Value = 1 Then
lblhienthi.FontUnderline = True
End If
End Sub
'---------------------------------------
Private Sub chknghieng_Click()
If chknghieng.Value = 1 Then
lblhienthi.FontItalic = True
End If
End Sub
'---------------------------------------
Private Sub cmdHienthi_Click()
lblhienthi.Caption = Text1.Text
End Sub
'-------------------------------------
Private Sub cmdThoat_Click()
End
End Sub
'-------------------------------------
Private Sub cmdXoa_Click()
lblhienthi.Caption = ""
Text1.Text = ""
End Sub
'-------------------------------------
Private Sub optanh1_Click()
If optanh1.Value = True Then
Form1.Picture = LoadPicture("c:\anh\anh1.wmf")
End If
End Sub
'-------------------------------------
Private Sub optanh2_Click()
If optanh2.Value = True Then
Form1.Picture = LoadPicture("c:\anh\anh2.wmf")
End If
End Sub
'-----------------------------------
Private Sub optdo_Click()
If optdo.Value = True Then
lblhienthi.ForeColor = QBColor(12)
End If
End Sub
'----------------------------------
Private Sub optnone_Click()
If optnone.Value = True Then
'Form1.Picture = "None"
End If
End Sub
Private Sub optVang_Click()
If optVang.Value = True Then
lblhienthi.ForeColor = QBColor(14)
End If
End Sub
'----------------------------------------
Private Sub optXanh_Click()
If optXanh.Value = True Then
lblhienthi.ForeColor = QBColor(10)
End If
End Sub.
4 – Biến, kiểu dữ liệu, các cấu trúc điều khiển và lặp
Kiểu dữ liệu:
Trong VB có những kiểu dữ liệu sau:
Kiểu dữ liệu
Ký hiệu đặc trưng
Ý nghĩa
String
$
Chuỗi
Integer
%
Số nguyên
Long
Số nguyên dài
Single
Số thực
Double
!
Số thực chính xác gấp đôi
Boolean
Dữ liệu logic
Currency
#
Số kèm theo đơn vị tiền tệ
User defined
Do người dùng định nghĩa
Variant
Dữ liệu mặc định không khai báo kiểu.
+ Dữ liệu Variant:
Variant có thể chứa Text String, Number, Date, thậm chí cả một Array (một loạt nhiều variables cùng data type). Nhìn thoáng qua nó rất tiện dụng, nhưng khi một Variant variable được dùng nhiều chỗ, trong nhiều tình huống khác nhau, bạn phải thận trọng.
+ User defined: Giống như dạng cấu trúc trong C, hoặc kiểu bản ghi trong pascal
Bạn định nghĩa như sau:
Type EmployeeRec ' EmployeeRec as name of this new Data Type
Firstname As String
Surname As String
Salary As Single
DateOfBirth As Date
End Type
' Khai báo
Dim MyEmployee As EmployeeRec
MyEmployee.Firstname = "David"
MyEmployee.Surname = "Smith"
MyEmployee.Salary = 25000
MyEmployee.DateOfBirth = #14/6/1963#
+ Một số hàm xử lý chuỗi
Ghép xâu: Dùng toán tử &.
Hàm Len(xâu): Cho biết độ dài của xâu
Hàm Left(xâu,kt) và right: trích từ xâu ra kt ký tự tính từ phía trái (phải)
Hàm Mid(xâu,i,n): trích ra n ký tự từ vị trí thứ i.
Hàm Instr và Replace. Instr cho ta vị trí của một xâu con trong một Text String. Thí dụ ta muốn biết có dấu * trong một Text String hay không:
myString = "The *rain in Spain mainly..."
Position = Instr(myString,"*") ' Position sẽ là 5
Muốn thay đổi tất cả dấu "/" thành dấu "-" trong một Text String ta có thể dùng Function Replace như sau:
Today = "24/05/2001"
Today = Replace (Today, "/", "-")
Hàm Asc cho ta biết mã Ascii của ký tự và ngược lại để có một Text Character với một trị số ASCII nào đó ta dùng hàm Chr.
NumberA=Asc("A") 'NumberA=65
StrFive = Chr(Asc("0") + 5) ' ta có digit "5"
Một số hàm chuyển đổi giữa các kiểu dữ liệu
Conversion Function
Chú thích
CBool ()
Ðổi parameter ra True hay False. Nếu Integer value khác 0 thì được đổi thành True
CByte ()
Ðổi parameter ra một con số từ 0 đến 255 nếu có thể được, nếu không được thì là 0.
CDate ()
Ðổi parameter ra Date
CDbl ()
Ðổi parameter ra Double precision floating point number
CInt ()
Ðổi parameter ra Integer
CSng ()
Ðổi parameter ra Single precision floating point number
CStr ()
Ðổi parameter ra String
Round
Dùng để bỏ bớt các số thập phân. Ví dụ Round(n,2): lấy 2 số thập phân
VB6 cho ta hai cách chia, đó là / dùng cho Single hoặc Double và \ dùng cho Integer.
Ví dụ:5 / 3 = 1.6666666;
5 \ 3 = 1
Ngày và Giờ
Có một loại data type đuợc dùng để chứa cả ngày lẫn giờ, đó là Date. Ta có thể biết hiện thời là ngày nào, mấy giờ bằng cách gọi Function Now. Sau đó ta dùng các Function Day, Month và Year để lấy ra ngày, tháng và năm như sau:
Private Sub CmdCheckDate_Click()
Dim dDate As Date
If IsDate(txtDate.Text) Then ' eg: txtDate = "26/12/01"
dDate = CVDate(txtDate.Text) ' convert a Text String to internal Date using Function CVDate
' Day, Month and Year are automatically converted to String
MsgBox "Day = " & Day(dDate) & ", Month = " & Month(dDate) & ", Year = " & Year(dDate)
Else
MsgBox "Invalid date. Please try again."
End If
End Sub
Trong Listing trên ta dùng Function IsDate để kiểm xem txtDate.text có hợp lệ không. Lưu ý là IsDate không phân biệt ngày theo Mỹ (dạng mm/dd/yy) hay theo Âu Châu (dạng dd/mm/yy), do đó dùng IsDate trong công việc kiểm soát nầy không an toàn lắm.
Ðể hiện thị ngày giờ theo đúng cách mình muốn bạn có thể dùng Function Format như sau:
MsgBox "NOW IS " & Format (Now, "ddd dd-mmm-yyyy hh:nn:ss")' will display
NOW IS Fri 08-Jun-2001 22:10:53
3. Khai báo biến
- Vb cho phép sử dụng biến mà không cần khai báo. Nếu bắt buộc phải khai báo biến trước khi sử dụng thì phải đưa vào dòng lệnh: Option Explicit.
Mẫu khai báo biến: Dim tên_biến as Kiểu_biến
- Nếu không có kiểu biến Vb mặc định hiểu là kiểu Variant
- Phân loại biến: Có 3 loại biến
+ Biến cục bộ: dùng trong thủ tục/ hàm. Các biến này được khai báo sau dòng lệnh Sub hoặc Function
+ Biến chung: dùng cho một biểu mẫu. Các biến này được khai báo ở vùng Object=General, vùng đầu tiên của cửa sổ lệnh của biếu mẫu.
+ Biến toàn cục: dùng chung cho cả dự án, nó thường được khai báo trong một module.
4. Cấu trúc điều khiển và rẽ nhánh
a. Dùng IF....THEN statement
Cú pháp:
If (biểu thức) then
Khối lệnh
End if
- Có thể sử dụng cả hàm logic đi kèm như hàm OR và AND để ghép được nhiều biểu thức logic.
b. Dùng IF....THEN..ELSE statement
If (biểu thức) Then
khối lệnh
Else
Khối lệnh
End If
c. Dùng If…then…elseif…
If (biểu thức 1) Then
Khối lệnh 1
ElseIf (Biểu thức 2) Then
Khối lệnh 2
Else
KHối lệnh
End If
d. Dùng SELECT CASE statement
Select Case biểu thức
Case hằng 1
Khối lệnh 1
Case hằng 2
Khối lệnh 2
Case hằng k
Khối lệnh k
Case Else
Khối lệnh k+1
End Select
Lưu ý: Biểu thức chỉ nhận số nguyên hoặc xâu ký tự
Ví dụ 1 : Xây dựng form : Giải phương trình ax+b=0
- Code:
Private Sub cmdtinh_Click()
Dim a, b, x As Single
a = CSng(txta.Text)
b = CSng(txtb.Text)
If (a = 0) Then
MsgBox ("Phuong trinh vo nghiem")
Else
x = (-b / a)
End If
txtkq = CStr(x)
End Sub
‘------------------
Private Sub cmdthoat_Click()
End
End Sub
- Ví dụ 2: Xây dựng giao diện như mẫu sau:
Code:
Private Sub cmdthoat_Click()
End
End Sub
Private Sub cmdtinh_Click()
Dim a, b As Single
Dim tt As String
a = CSng(txtso1.Text)
b = CSng(txtso2.Text)
tt = txttt.Text
Select Case tt
Case "+"
txtkq.Text = CStr(a + b)
Case "-"
txtkq.Text = CStr(a - b)
Case "*"
txtkq.Text = CStr(a * b)
Case Else
If (b = 0) Then
MsgBox ("Khong thuc hien duoc phep chia")
Else
txtkq.Text = CStr(a / b)
End If
End Select
End Sub
Bài tập: Xây dựng theo giao diện như sau:
e. Dùng FOR statement
- Cú pháp:
For biến_đếm=điểm đầu to điểm_cuối step bước_nhẩy
Khối lệnh
Next
Lưu ý: Bước nhẩy có thể nhận giá trị âm, dương. Nếu không có bước nhẩy thì chương trình mặc định bước nhẩy là 1.
Ví dụ: Xây dựng giao diện .
- Code:
Private Sub CmdTotal_Click()
Dim i, FromNo, ToNo, Total
FromNo = CInt(txtFromNumber.Text)
ToNo = CInt(txtToNumber.Text)
Total = 0
For i = FromNo To ToNo
Total = Total + i
Next
txtTotal.Text = CStr(Total)
End Sub
f. Dùng DO WHILE Loop statement
- Kiểu 1: Lặp khi điều kiện là true
Do while
Khối lệnh
Loop
- Kiểu 2: Vòng lặp thực hiện ít nhất 1 lần kể cả điều kiện là sai hay đúng
Do
Khối lệnh
Loop while
- Kiểu 3: Lặp trong khi điều kiện là false
Do Until
Khối lệnh
Loop
- Kiểu 4: Lặp trong khi điều kiện là false và thực hiện ít nhất 1 lần.
Do
Khối lệnh
Loop Until
Ví dụ: Xây dựng giao diện
Code:
Private Sub tong_Click()
Dim tong As Integer
Dim i, n As Integer
tong = 0
n = CInt(Text1.Text)
i = 1
Do While i <= n
tong = tong + i
i = i + 1
Loop
Text2 = CStr(tong)
End Sub
‘--------------------------
Private Sub thoat_Click()
End
End Sub
5. Mảng
- Mảng là một dẫy các phần tử có cùng một tên và cùng kiểu dữ liệu
- Có hai loại biến mảng: mảng có chiều dài cố định và mảng động có chiều dài thay đổi lúc thi hành. Mảng có chiều dài cố định có thể được khai báo Public trong ứng dụng, Private trong module trong một thủ tục.
a. Mảng có chiều dài cố định
- Biên trên và biên dưới: Biên trên được xác định ngay lúc khai báo, mặc định biên dưới là 0.
- Dim a(10) as integer
- Hàm UBound(mảng) trả về phần tử cuối cùng của mảng
- Hàm LBound(mảng) trả về phần tử đầu tiên của mảng
b. Mảng nhiều chiều
- Ta khai báo mảng 2 chiều: Dim a(10,10) as integer
c. Mảng động
- Mảng này có thể thay đổi kích cỡ, là một trong những ưu điểm của VB, mảng động giúp quản lý bộ nhớ một cách hiệu quả. Ta có thể dùng một mảng lớn trong thời gian ngắn, sau đó xóa bỏ để trả vùng nhớ cho hệ thống.
- Khai báo:
+ Khai báo Public hoặc Dim trong module, hoặc khai Static hay Dim trong thủ tục. Khai báo một mảng động bằng cách cho nó một danh sách không theo chiều nào cả.
Dim a()
+ Cấp phát số phần tử thực sự bằng dòng lệnh Redim
Redim a(6)
* Dòng lệnh Redim chỉ có thể xuất hiện trong thủ tục. Nó là một dòng lệnh thi hành, nó làm ứng dụng phải thực hiện một hành động lúc chạy chương trình.
* Mỗi lần gọi Redim tất cả giá trị chứa trong mảng hiện hành bị mất. Muốn thay đổi kích cỡ của mảng mà không mất dữ liệu thì phải sử dụng thêm từ khóa Preserve.
- Ví dụ: Nhập vào một mảng các phần tử, sử dụng hàm inputbox. Sắp xếp mảng đó theo chiều tăng dần.
- Code:
Private Sub Command1_Click()
Dim n As Integer
Dim a() As Integer
n = CInt(Text1.Text)
ReDim a(n)
For i = 1 To n
a(i) = InputBox(" Nhap phan tu thu")
Next
For i = 1 To n
Label3.Caption = Label3.Caption & CStr(a(i)) & " "
Next
For i = 1 To n - 1
For j = i + 1 To n
If a(i) > a(j) Then
tg = a(i)
a(i) = a(j)
a(j) = tg
End If
Next
Next
For i = 1 To n
Label5.Caption = Label5.Caption & CStr(a(i)) & " "
Next
End Sub
‘------------------------------------------
Private Sub Command2_Click()
End
End Sub
Các file đính kèm theo tài liệu này:
- phan_loai_san_pham_theo_mau_sac_0906.doc