Bài giảng môn Tin học đại cương - Trường Đại học Hàng Hải

pdf 68 trang phuongnguyen 5440
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Tin học đại cương - Trường Đại học Hàng Hải", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_mon_tin_hoc_dai_cuong_truong_dai_hoc_hang_hai.pdf

Nội dung text: Bài giảng môn Tin học đại cương - Trường Đại học Hàng Hải

  1. BỘ GIAO THÔNG VẬN TẢI TRƢỜNG ĐẠI HỌC HÀNG HẢI BỘ MÔN: TIN HỌC ĐẠI CƢƠNG KHOA:CÔNG NGHỆ THÔNG TIN BÀI GIẢNG TIN HỌC ĐẠI CƢƠNG TÊN HỌC PHẦN : TIN HỌC ĐẠI CƢƠNG MÃ HỌC PHẦN : 17101 TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CHÍNH QUY DÙNG CHO SV NGÀNH : TẤT CẢ CÁC NGÀNH HẢI PHÒNG – 2011
  2. Bài giảng Tin học Đại cương MỤC LỤC STT NỘI DUNG TRANG CHƢƠNG I NHẬP MÔN TIN HỌC ĐẠI CƢƠNG 1.1 Một vài nét về tin học và máy tính 4 1.2 Thông tin và xử lý thông tin 4 1.3 Thành phần của máy tính 4 1.4 Các hệ đếm 5 1.5 Phân loại máy tính 9 1.6 Các bộ phận chính của máy tính PC 10 CHƢƠNG II TỔNG QUAN VỀ LẬP TRÌNH 2.1 Vấn đề giải quyết bài toán bằng máy tính 12 2.2 Một số ví dụ 13 CHƢƠNG III NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 3.1 Khởi động Visual Basic 20 3.2 Thoát khỏi Visual Basic 20 3.3 Tạo, mở và lƣu một dự án (Project) 20 3.4 Các bƣớc xây dựng chƣơng trình 21 3.5 Một số đối tƣợng cơ bản trong Visual Basic 23 3.6 Một số ví dụ về thiết kế giao diện và lập bảng thuôc tính 29 3.7 Các kiểu dữ liệu cơ bản 30 CHƢƠNG IV KHAI BÁO HẰNG BIẾN BIỂU THỨC CÂU LỆNH 4.1 Các hằng trong Visual Basic 36 4.2 Biến 36 4.3 Biểu thức 37 4.4 Quy định về viết dòng lệnh trong Visual Basic 37 4.5 Cách viết dòng chú thích trong chƣơng trình 37 4.6 Câu lệnh gán 37 4.7 Câu lệnh End 38 4.8 Lệnh in dữ liệu 38 _2_
  3. Bài giảng Tin học Đại cương 4.9 Lệnh nhập dữ liệu 39 4.10 Chuyển đổi kiểu dữ liệu trong quá trình tính giá trị biểu 40 thức 4.11 Cấu trúc điều kiện 41 4.12 Câu lệnh lựa chọn Select 43 4.13 Cấu trúc lặp 45 4.14 Một số ví dụ 48 CHƢƠNG V HÀM VÀ THỦ TỤC 5.1 Khái niệm chƣơng trình con 51 5.2 Hàm và thủ tục 51 5.3 Truyền tham số cho chƣơng trình con 53 5.4 Biến toàn cục, biến địa phƣơng, khái niệm tầm tác dụng 56 CHƢƠNG VI DỮ LIỆU CÓ CẤU TRÚC, KIỂU MẢNG 6.1 Khái niệm về mảng 59 6.2 Khai báo mảng tĩnh 59 6.3 Khai báo mảng động (Dynamic Array) 61 6.4 Một số thuật toán về mảng 62 _3_
  4. Bài giảng Tin học Đại cương CHƢƠNG 1 NHẬP MÔN TIN HỌC ĐẠI CƢƠNG 1.1. Một vài nét về tin học và máy tính Có rất nhiều khái niệm về Tin học, song có thể hiểu Tin học là ngành khoa học nghiên cứu các quá trình có tính chất thuật toán nhằm mô tả và biến đổi thông tin. Các quá trình này đƣợc nghiên cứu một cách hệ thống về mọi phƣơng diện: Lý thuyết phân tích, thiết kế, tính hiệu quả, việc cài đặt và các ứng dụng. 1.2. Thông tin và xử lý thông tin 1.2.1. Thông tin và dữ liệu Thông tin (Information): Những hiện tƣợng sự vật phản ánh về một sự kiện, một vấn đề nào đó trong thế giới khách quan. Dựa vào đó con ngƣời có thể hiểu biết và nhận thức đƣợc thế giới khách quan. Thông tin có thể ghi lại và truyền đi. Dữ liệu (Data): Là dạng thông tin khi đƣợc lƣu trữ. 1.2.2. Đơn vị đo thông tin Đơn vị đo thông tin là bit. Đây chính là tin về hệ thống chỉ có hai trạng thái đồng khả năng: bằng 0 hoặc bằng 1 (Điều này rất phù hợp với các máy tính điện tử bởi trong một thời điểm, mạch điện chỉ có một trong hai trạng thái đóng hoặc mở tƣơng ứng với hai giá trị 1 hoặc 0). Đơn vị đo thông tin bao gồm: Bit, Byte, KiloByte, MegaByte, GigaByte. Qui đổi giữa các đơn vị nhƣ sau: Byte (B): 1 Byte = 8 bit (b) KiloByte (KB): 1 KB = 1024 Byte MegaByte (MB): 1 MB = 1024 KB GigaByte (GB): 1 GB = 1024 MB Trong đó: b là viết tắt của bit B là viết tắt của Byte 1.3. Thành phần của máy tính 1.3.1. Phần cứng (Hardware) Là các thành phần vật lý cấu tạo nên máy tính. Các thành phần vật lý ở đây bao gồm các thiết bị điện tử và cơ khí. Ví dụ: về các phần cứng máy tính nhƣ màn hình, bàn phím, chuột, bộ vi xử lý 1.3.2. Phần mềm (SoftWare) _4_
  5. Bài giảng Tin học Đại cương Là tập hợp các chỉ thị cho máy tính làm việc. Nói cách khác, toàn bộ các chƣơng trình chạy trên máy tính gọi là phần mềm máy tính. Sự ra đời của phần mềm khiến cho hiệu quả sử dụng phần cứng đƣợc nâng cao, rất nhiều công việc của con ngƣời đƣợc tự động hoá, vận hành nhanh chóng. Ví dụ: Phần mềm soạn thảo văn bản, bảng tính, trình diễn, đồ hoạ 1.4. Các hệ đếm 1.4.1. Hệ đếm thập phân (Decimal) Hệ thập phân là hệ đếm dựa vào vị trí với cơ số 10. Hệ này dùng các số từ 0 đến 9 để biểu diễn. Giá trị của hệ thập phân đƣợc đánh giá bằng vị trí các con số. Cách viết: 127 hoặc (127)10 Khai triển một số hệ 10: 2 1 0 -1 -2 (123.78)10= 1 x 10 + 2 x 10 + 3 x 10 +7 x 10 + 8 x 10 1.4.2. Hệ đếm nhị phân (Binary) Hệ nhị phân hay hệ đếm cơ số 2 chỉ có hai con số 0 và 1. Đó là hệ đếm theo vị trí. Giá trị của một số bất kỳ nào đó phụ thuộc vào vị trí của nó. Các vị trí có trọng số. Các vị trí của trọng số bằng bậc luỹ thừa của cơ số 2. Chấm cơ số đƣợc gọi là chấm nhị phân trong hệ đếm cơ số 2. Mỗi một con số nhị phân đƣợc gọi là một bit (Binary digit). Bit ngoài cùng bên trái là bít có trọng số lớn nhất(MSB) và bit ngoài cùng bên phải là bit có trọng số nhỏ nhất (LSB) nhƣ dƣới đây: 23 22 21 20 2-1 2-2 MSB 1 0 1 0 1 1 LSB Cách viết: (1011)2 1.4.3. Hệ thập lục phân (HEXADECIMAL) Các máy tính hiện đại thƣờng dùng hệ đếm khác là hệ thập lục phân. Hệ thập lục phân là hệ đếm dựa vào vị trí với cơ số 16. Hệ này dùng 10 chữ số từ 0 đến 9 và 6 ký tự từ A đến F để biểu diễn. Hệ này thƣờng dùng để viết gọn các số hệ nhị phân Hệ này đƣợc biểu diễn nhƣ trong bảng sau: Thập lục Thập phân Nhị phân phân 0 0 0000 1 1 0001 2 2 0010 _5_
  6. Bài giảng Tin học Đại cương 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 Cách viết : (2BC)H 1.4.4. Chuyển đổi giữa các hệ đếm * Chuyển từ hệ nhị phân sang hệ mƣời Muốn đổi từ hệ nhị phân sang hệ mƣời chỉ cần tính các giá trị 2i tƣơng ứng với các chữ số khác không thứ i của hệ số nhị phân rồi cộng lại :(vị trí i tính từ phải qua trái) Ví dụ1: Ta muốn đổi một số hệ nhị phân (101001)2 sang hệ mƣời, tiến hành nhƣ sau: 5 4 3 2 1 0 (101001)2= 1 x 2 + 0 x 2 + 1 x 2 + 0 x 2 + 0 x 2 + 1 x 2 = 32 + 0 + 8 + 0 + 0 + 1 = (41)10 Kết quả ta đƣợc số 41 ở hệ 10 Ví dụ 2: Ta muốn đổi một số hệ nhị phân (101.001)2 sang hệ mƣời, tiến hành nhƣ sau: 2 1 0 -1 -2 -3 (101.001)2 = 1 x 2 + 0 x 2 + 1 x 2 + 0 x 2 + 0 x 2 + 1 x 2 = 4 + 0 + 2 + 0 + 0 + 0.125= (6.125)10 Chú ý: Trong các ví dụ trên quá trình biến đổi có thể đơn giản hoá bằng cách loại bỏ các con số không. *Chuyển từ hệ thập phân sang hệ nhị phân: Lấy phần nguyên của số cần đổi chia cho 2 và ghi nhớ phần dƣ, tiếp theo lấy thƣơng của phép chia trƣớc đó chia cho 2 và ghi nhớ phần dƣ. Cứ làm nhƣ vậy cho đến khi thƣơng bằng 0 thì dừng lại và viết phần dƣ ngƣợc từ dƣới lên trên. Lấy phần lẻ thập phân của số cần đổi nhân với 2, tích nhận đƣợc gồm phần nguyên và phần lẻ nhị phân, lấy phần lẻ nhị phân của tích thu đƣợc nhân với 2. Cứ làm nhƣ vậy cho đến khi không còn _6_
  7. Bài giảng Tin học Đại cương phần lẻ thập phân hoặc đến một độ chính xác nhất định nào đó thì dừng lại. Viết phần nguyên từ trên xuống dƣới. Sau đó ghép kết quả của chúng lại với nhau. Ví dụ 1: Đổi số (41)10 từ hệ 10 sang hệ nhị phân: 41 2 1 20 2 0 10 2 0 5 2 1 2 2 0 1 2 1 0 Sau khi chia đến thƣơng bằng 0 và viết ngƣợc phần dƣ từ dƣới lên trên ta đƣợc số (101001)2 ở nhị phân. Ví dụ 2: Biến đổi số thập phân (41.625)10 thành số nhị phân: Trƣớc hết biến đổi phần nguyên thành số nhị phân theo ví dụ 1 đƣợc số (101001)2 Sau đó biến đổi phần lẻ thành số nhị phân bằng cách:Lấy số cần đổi nhân với 2, tích nhận đƣợc gồm phần nguyên và phần lẻ nhị phân, lấy phần lẻ nhị phân của tích thu đƣợc nhân với 2. Cứ làm nhƣ vậy cho đến khi đƣợc tích chẵn bằng 1. Chọn riêng các phần nguyên (phần trƣớc dấu phẩy) của các tích thu đƣợc và sắp xếp lại sẽ đƣợc các chữ số sau dấu phẩy cần tìm. 0.625 x 2 = 1.250 1.250 x 2 = 0.500 0.5 x 2 = 1.000 phần lẻ (0.625)10 đƣợc chuyển thành (101)2 hệ 2 Vậy số (41.625)10 ở hệ 10 sang hệ nhị phân là (101001.101)2 *Chuyển từ hệ thập lục phân sang hệ thập phân: Các số thập lục phân có thể đƣợc biến đổi thành thập phân bằng cách tính tổng của các con số nhân với giá trị vị trí của nó. Ví dụ1: Đổi số (5B)16 thành số thập phân 1 0 (5B)16 = 5 x 16 + B x 16 = 5 x 161 + 11 x 160 = 80 + 11 = (91)10 Kết quả là số (91)10 hệ 10 _7_
  8. Bài giảng Tin học Đại cương Ví dụ 2: Đổi số (2AF)16 thành số thập phân 2 1 0 (2AF)16 = 2 x 16 + A x 16 + F x 16 = 2 x 162 + 10 x 161 + 15 x 160 = 2 x 256 + 10 x 16 + 15 x 1 = 512 + 160 + 15 = (687)10 Kết quả là số (687)10 hệ 10 *Chuyển từ hệ thập phân sang hệ thập lục phân: Lấy số thập phân cần đổi chia cho 16 và ghi nhớ phần dƣ, tiếp theo lấy thƣơng của phép chia trƣớc đó chia cho 16 và ghi nhớ phần dƣ. Cứ làm nhƣ vậy cho đến khi thƣơng bằng 0 thì dừng lại và viết phần dƣ ngƣợc từ dƣới lên trên. Ví dụ: Đổi số (93)10 thành hệ thập lục phân: Thƣơng số + số dƣ 93 = 5 + 13 tƣơng ứng là D 16 5 = 0 + 5 16 Vậy kết quả là số (93)10 đổi thành số (5D)16 hệ thập lục phân *Chuyển từ hệ thập lục phân sang hệ nhị phân: Thực chất các số thập lục phân cũng chỉ là cách biểu diễn các số nhị phân thuận lợi hơn. Muốn đổi từ số thập lục phân sang số hệ nhị phân ta chỉ cần thay thế từ con số thập lục phân bằng 4 bit nhị phân tƣơng ứng: Ví dụ: Đổi số (C5)16 thành hệ nhị phân C 5 1100 0101 Kết quả số (C5)16 thành số (11000101)2 *Chuyển từ hệ nhị phân sang hệ thập lục phân: Để biến đổi một số nhị phân thành số thập lục phân tƣơng đƣơng chỉ cần nhóm 4 bít tính từ phải qua trái sau đó chuyển từng nhóm 4 bit thành hệ thập lục phân và ghép lại với nhau sẽ đƣợc số hệ thập lục phân. Ví dụ: Đổi số (01011111)2 thành số thập lục phân 0101 1111 5 F Kết quả số (01011111)2 thành số (5F)16 _8_
  9. Bài giảng Tin học Đại cương 1.5. Phân loại máy tính Theo góc độ ngƣời sử dụng thì máy tính đƣợc phân làm bốn loại sau: * Máy tính lớn (Mainframe) Máy tính lớn là máy có công suất cao, tốc độ xử lý nhanh và rất lớn thƣờng đóng vai trò trong các hệ tin học phân tán có qui mô lớn. Các máy tính lớn là các cỗ máy kích thƣớc lớn, mạnh và rất đắt tiền, đƣợc sử dụng trong hầu hết các cơ quan, tổ chức lớn (ví dụ nhƣ các ngân hàng, các cơ quan trọng yếu của Chính phủ, các công ty đa quốc gia ). Cần chú ý phân biệt máy tính lớn với máy tính cá nhân có kích thƣớc lớn. * Máy tính PC (Personal Computer-PC) Máy tính điện tử có nguồn gốc ra đời từ khá sớm và có rất nhiều chủng loại. Tuy nhiên chiếc máy tính PC theo mô hình của IBM đầu tiên đƣợc ra đời vào năm 1981. Từ đó trở đi, tất cả các máy tính PC đƣợc sản xuất, qua nhiều lần mở rộng đều tƣơng thích với thiết kế ban đầu. Thuật ngữ máy tính tƣơng thích liên quan đến các máy tính đƣợc sản xuất bởi các công ty khác không phải IBM nhƣng vẫn tƣơng thích với các đặc điểm kỹ thuật truyền thống. IBM – PC IBM – PC (1981) Tƣơng thích * Máy Mac(Apple MAC) Máy Mac là một máy tính, nhƣng không phải là một máy PC theo mô hình IBM. Máy Mac là dòng máy tính do hãng Apple sản xuất và chạy Hệ điều hành Macintosh của Apple có giao diện đồ hoạ GUI và tƣơng thích với nó là các phiên bản đặc biệt của các chƣơng trình ứng dụng ( nhƣ bộ xử lý văn bản và các bảng tính). Thậm chí để có thể kết nối với một Mac, ngƣời ta cần phải lựa chọn thêm các thiết bị phần cứng mở rộng. Thời kỳ đầu, điều giúp cho việc phân biệt máy Mac và PC chính là việc MAC sử dụng giao diện đồ hoạ cho ngƣời dùng (GUI – Graphic User Interface ), hay nói cách khác, chính là cách mà ta có thể dùng chuột để điều khiển máy tính. Khi PC mới xuất hiện, ngƣời dùng phải là một nhà chuyên môn mới có thể sử dụng đƣợc chiếc PC đó. Tuy nhiên, gần đây sự khác biệt _9_
  10. Bài giảng Tin học Đại cương cơ bản giữa máy MAC và máy PC đã không còn rõ rệt nhƣ trƣớc, nhất là khi Microsoft đã sử dụng Graphic User Interface nhƣ là công cụ trợ giúp ngƣời dùng máy tính PC. (Chú ý: Ý tƣởng sử dụng các giao diện đồ hoạ và tƣơng tác ngƣời – máy thông qua thao tác chuột là do Apple đề xuất, không phải do Microsoft) * Máy tính xách tay (Laptop) Laptop, tiếng Anh có nghĩa là đặt trong lòng, phân biệt với máy tính đặt trên mặt bàn là desktop. Ở Việt Nam, ta hay gọi Laptop là máy tính xách tay bởi đây là một loại máy tính nhỏ có thể mang đi theo, có thể chạy bằng pin. Ngoài ra, ngƣời ta còn sử dụng tên gọi “Notebooks” (quyển vở/quyển sổ) để chỉ các máy tính xách tay có kích thƣớc nhỏ hơn. Cả hai dòng máy tính PC và MAC đều có những sản phẩm máy tính xách tay cho ngƣời dùng của mình. Do đặc điểm nhỏ gọn và năng lực xử lý khá tốt nên máy tính xách tay rất đƣợc ƣa chuộng, đặc biệt là những ngƣời hay phải di chuyển hoặc phải thuyết trình trƣớc đám đông. Những ngƣời thƣờng xuyên sử dụng máy tính xách tay có thể kể đến những ngƣời làm công tác kinh doanh ( chuyên đi thuyết trình sản phẩm), những ngƣời làm trong ngành giáo dục (giảng bài bằng máy tính xách tay kết nối máy chiếu) Chú ý: Thực chất máy tính xách tay cũng là dòng máy PC hay máy Mac là dòng máy PC nhƣng do hãng Apple sản xuất. 1.6. Các bộ phận chính của máy tính PC 1.6.1. Sơ đồ các khối chức năng và bộ phận chính trong máy tính Về cơ bản, thành phần chính của một máy tính bao gồm các khối nhƣ: Khối thiết bị vào/ Khối xử lý/ Khối thiết bị ra/ Khối thiết bị lƣu trữ. KHỐI XỬ LÝ (CPU) THIẾT BỊ VÀO + Khối điều khiển (CU) THIẾT BỊ RA Bàn phím, chuột + Khối tính toán số học Màn hình, máy in, loa + Các thanh ghi CÁC THIẾT BỊ LƢU TRỮ Các thiết bị lƣu trữ trong Các thiết bị lƣu trữ ngoài + ROM: Bộ nhớ chỉ đọc + Đĩa mềm + RAM: Bộ nhớ truy cập ngẫu nhiên + Đĩa cứng + Đĩa CD, DVD + USB _10_
  11. Bài giảng Tin học Đại cương 1.6.2. Khối xử lý trung tâm (Central Processing Unit – CPU) Khối xử lý trung tâm, hay còn gọi là một bộ vi xử lý hoặc con chip, là bộ não của máy tính. Công việc chính của khối xử lý trung tâm là tính toán và điều khiển mọi hoạt động trong máy tính. 1.6.3. Bộ nhớ trong (Internal Memory) Bộ nhớ trong máy tính dùng để chứa các lệnh và dữ liệu phục vụ cho quá trình thực hiện các chƣơng trình. Bộ nhớ ROM (Read Only Memory): Dữ liệu đƣợc đƣa vào từ nhà sản xuất, thông tin trong ROM sẽ không bị mất khi tắt máy. Bộ nhớ ROM không thể nâng cấp hoặc thay thế. Bộ nhớ RAM (Radom Access Memory): Là nơi lƣu trữ tạm thời dữ liệu của ngƣời sử dụng trong quá trình xử lý. Dữ liệu trên RAM sẽ bị mất khi tắt máy. Bộ nhớ Ram có thể đƣợc nâng cấp hoặc thay thế. 1.6.4. Bộ nhớ ngoài (External Memory) Bộ nhớ ngoài hay các thiết bị lƣu trữ ngoài bao gồm đĩa cứng, đĩa mềm, đĩa CD, DVD, đĩa Zip 1.6.5. Các thiết bị vào (Input device) Các thiết bị vào cho phép thông tin hay dữ liệu đƣợc nhập vào máy tính, ví dụ nhƣ bàn phím, chuột, máy quét 1.6.6. Các thiết bị ra(Output device) Các thiết bị ra cho phép thông tin có thể đƣợc xuất ra từ máy tính, ví dụ nhƣ máy in, màn hình, loa 1.6.7. Các thiết bị ngoại vi (Peripheral device) Thiết bị ngoại vi là thiết bị mà nó có thể gắn/cắm vào máy tính. Nhƣ vậy toàn bộ các thiết bị nhƣ máy quét, máy in, bàn phím, chuột, loa đều là các thiết bị ngoại vi. _11_
  12. Bài giảng Tin học Đại cương CHƢƠNG 2 TỔNG QUAN VỀ LẬP TRÌNH 2.1. Vấn đề giải quyết bài toán bằng máy tính 2.1.1. Lập trình (Programming) Lập trình dùng để chỉ thao tác của con ngƣời nhằm kiến tạo, xây dựng một kịch bản bằng các thuật toán để giải quyết một bài toán Tin học trên máy tính thông qua các ngôn ngữ lập trình. 2.1.2. Ngôn ngữ lập trình (Programming language) Ngôn ngữ lập trình là một tập con của ngôn ngữ máy tính. Đây là một dạng ngôn ngữ đƣợc chuẩn hóa (đối lập với ngôn ngữ tự nhiên). Nó là một hệ thống đƣợc ký hiệu hóa để miêu tả những tính toán (qua máy tính) trong một dạng mà cả con ngƣời và máy đều có thể đọc và hiểu. Ngôn ngữ lập trình cũng chính là một chƣơng trình, nhƣng có thể đƣợc dùng để tạo nên các chƣơng trình khác. Một chƣơng trình máy tính đƣợc viết bằng một ngôn ngữ lập trình thì những chỉ thị (của riêng ngôn ngữ ấy) góp phần tạo nên chƣơng trình đƣợc gọi là mã nguồn của chƣơng trình ấy. 2.1.3. Bài toánTin học Bài toán tin học không dùng để chỉ một bài toán cụ thể, mà dùng để chỉ một lớp các bài toán cụ thể thuộc cùng một loại. Một bài toán tin học đƣợc cấu tạo bởi hai yếu tố sau: + Thông tin đầu vào(Input): Là những thông tin bài toán đã cho + Thông tin đầu ra (Output): Là các thông tin cần tìm hoặc câu trả lời cần thiết. Ví dụ: Giải bài toán tính diện tích tam giác bằng công thức s=a*h/2 + Thông tin đầu vào: Là cạnh đáy a và đƣờng cao h + Thông tin đầu ra: Là diện tích tam giác S hoặc dòng thông báo dữ liệu không hợp lệ. 2.1.4. Thuật toán Thuật toán là tập hợp hữu hạn các bƣớc, các phép toán cơ bản nhất đƣợc sắp xếp theo một trình tự nhất định để từ thông tin đầu vào của bài toán sau một tập hữu hạn các bƣớc đó sẽ đạt đƣợc kết quả ở đầu ra nhƣ mong muốn. Ví dụ: Trở lại bài toán tính diện tích tam giác, thuật toán nhƣ sau: + Bƣớc 1: Cho giá trị của cạnh đáy a và đƣờng cao h + Bƣớc 2: Kiểm tra - Nếu a>0 và h>0 thì tính diện tích theo công thức s=a*h/2 sau đó xuống bƣớc 3. - Ngƣợc lại thông báo dữ liệu không hợp lệ và quay về bƣớc 1 + Bƣớc 3: In diện tích S _12_
  13. Bài giảng Tin học Đại cương 2.1.5. Biểu diễn thuật toán qua sơ đồ khối (A.Flow Chart) Biểu diễn thuật toán: Là sơ đồ dùng các ký hiệu và các đƣờng nối với nhau để diễn tả các quan hệ logic và trình tự thực hiện các phép toán của một chƣơng trình máy tính. Để thể hiện trực quan về thuật toán ngƣời ta dùng sơ đồ khối. Qua sơ đồ khối ngƣời lập trình có thể quan sát các bƣớc của thuật toán cũng nhƣ dòng thông tin hình thành và biến đổi trong quá trình thuật toán làm việc. Việc thể hiện thuật toán ngƣời ta qui ƣớc dùng các khối sau để thể hiện. -Thể hiện sự bắt đầu và kết thúc chƣơng trình - Thể hiện việc nhập, xuất dữ liệu - Chứa các công thức tính toán - Chứa các biểu thức kiểm tra điều kiện và rẽ nhánh chƣơng trình - Gọi chƣơng trình con - Chỉ ra hƣớng đi của thuật toán và kết nối giữa các hình 2.2. Một số ví dụ Ví dụ 1: Lập thuật toán và vẽ sơ đồ thuật toán để giải và biện luận phƣơng trình ax +b =0 Bài giải: Xây dựng thuật toán: - Dữ liệu đầu vào là giá trị hai số a và b (trong lập trình thƣờng gọi tắt là nhập giá trị a và b) - Kiểm tra điều kiện của a: Nếu a = 0 thì + Nếu b=0 thì Phƣơng trình vô số nghiệm Ngƣợc lại Phƣơng trình vô nghiệm Ngƣợc lại Phƣơng trình có nghiệm x=-b/a _13_
  14. Bài giảng Tin học Đại cương Sơ đồ thuật toán: Bắt đầu (BEGIN) Nhập a,b Đ Đ S a=0 PT có nghiệm x=-b/a b=0 PT VSN S PT Vô nghiệm Kết thúc (END) Ví dụ 2: Cho ba số bất kỳ a,b,c hãy tìm giá trị lớn nhất trong ba số này Bài giải: Xây dựng thuật toán: - Nhập giá trị cho ba biến a,b,c - Coi một trong ba số là số lớn nhất (giả sử số a) đƣa giá trị của a vào một biến max Mô tả trên đƣợc viết nhƣ sau max=a - Kiểm tra giá trị của biến max với từng số còn lại Nếu max <b thì max=b Nếu max<c thì max=c - In giá trị lớn nhất trong max ra màn hình Sơ đồ thuật toán: _14_
  15. Bài giảng Tin học Đại cương BEGIN Nhập a,b,c Max=a Đ Max 0 + Nếu sai: Trở về bƣớc 1 + Nếu đúng: Chuyển sang bƣớc 3 Bƣớc 3: Cho S=0 Khởi tạo biến chạy i và cho i=1 Bƣớc 4: Kiểm tra điều kiện của i - Nếu i<=n thì: + Tính S=S+1/i + Tăng i: i=i+1 + Quạy trở về đầu bƣớc 4 _15_
  16. Bài giảng Tin học Đại cương - Nếu i>n: Chuyển sang bƣớc 5 Bƣớc 5: In giá trị của S Sơ đồ thuật toán: BEGIN Nhập n S n>0 Đ S=0 i=1 Đ i<=n S=S+1/i i=i+1 S In S END Ví dụ 4: Nhập vào một dãy số nguyên gồm n phần tử. Sau đó tính trung bình cộng các số chia hết cho 3. Phân tích bài toán: Dữ liệu đầu vào: - Số phần tử của dãy n (n là số nguyên dƣơng) - Dãy số có n phần tử bất kỳ Dữ liệu đầu ra: - Trung bình cộng của các số chia hết cho 3 Để tính đƣợc trung bình cộng ta cần phải tính Tổng và số lƣợng các số chia hết cho 3. Theo dữ liệu đầu vào của bài toán ta có thể giải quyết theo hai hƣớng sau: _16_
  17. Bài giảng Tin học Đại cương Hƣớng 1:Lƣu trữ dãy số bằng một ô nhớ Hƣớng 2:Lƣu trữ dãy số bằng n ô nhớ Bƣớc 1: - Xác định số phần tử của dãy, Bƣớc 1: - Xác định số phần tử của dãy, nhập giá trị cho n. nhập giá trị cho n. Bƣớc 2: Bƣớc 2: - Kiểm tra điều kiện n - Kiểm tra điều kiện n + Nếu n 0 : Chuyển sang bƣớc 3 + Nếu n>0 : Chuyển sang bƣớc 3 Bƣớc 3: Bƣớc 3: Để tính TBC trƣớc hết ta phải tính: Để tính TBC trƣớc hết ta phải tính: +Tổng các số thoả mãn, gọi tổng đó là T, +Tổng các số thoả mãn, gọi tổng đó là T, khởi tạo giá trị ban đầu T=0 khởi tạo giá trị ban đầu T=0 + Số lƣợng các phần tử thoả mãn, gọi là + Số lƣợng các phần tử thoả mãn, gọi là d, khởi tạo giá trị ban đầu d=0 d, khởi tạo giá trị ban đầu d=0 - Khởi tạo biến chạy i=1 (coi nhƣ khi - Khởi tạo biến chạy i=1 (coi nhƣ khi i=1 ta tiến hành nhập giá trị cho phần tử i=1 ta tiến hành nhập giá trị cho phần tử thứ nhất) thứ nhất) Bƣớc 4: Bƣớc 4: Kiểm tra điều kiện của i. „Nhập giá trị liền một lúc cho n phần - Nếu i n: Chuyển sang bƣớc 5 + Quay về bƣớc 4 Bƣớc 5: - Nếu i>n: Chuyển sang bƣớc 5 „ Tính toán TBC Bƣớc 5: - Khởi tạo biến chạy i=1 - Sau khi tính đƣợc T và d ta cần kiểm Bƣớc 6: tra lại d vì có thể xảy ra trƣờng hợp Kiểm tra điều kiện của i. trong n phần tử không có phần tử nào - Nếu i<=n chia hết cho 3 (tƣơng ứng với d=0) thì + Kiểm tra: Nếu a chia hết cho 3 thì không thể tính đƣợc TBC. T=T+a - Nếu d=0 thì d=d+1 Dãy số không có phần tử thoả mãn + Tăng biến i lên một đơn vị: i=i+1 _17_
  18. Bài giảng Tin học Đại cương điều kiện chia hết cho 3 + Quay về bƣớc 6 ngƣợc lại - Nếu i>n: Chuyển sang bƣớc 7 Tính trung bình cộng:TBC=T/d Bƣớc 7: In giá trị của TBC ra - Sau khi tính đƣợc T và d ta cần kiểm Bƣớc 6: Kết thúc tra lại d vì có thể xảy ra trƣờng hợp trong n phần tử không có phần tử nào chia hết cho 3 (tƣơng ứng với d=0) thì không thể tính đƣợc TBC. - Nếu d=0 thì Dãy số không có phần tử thoả mãn điều kiện chia hết cho 3 ngƣợc lại Tính trung bình cộng:TBC=T/d In giá trị của TBC ra Bƣớc 8: Kết thúc Sơ đồ thuật toán theo hƣớng 1: BEGIN Nhập n S n>0 Đ T=0 d=0 i=1 Đ S i<=n a 3 Nhập a i=i+1 S Đ S Đ không có số In T/d d=0 T=T+a Thoả Mãn D=d+1 END _18_
  19. Bài giảng Tin học Đại cương Sơ đồ thuật toán theo hƣớng 2: BEGIN Nhập n S n>0 Đ T=0 d=0 i=1 Đ i<=n Nhập ai i=i+1 S i=1 Đ S i<=n ai 3 i=i+1 S Đ S Đ không có số T=T+a In T/d d=0 Thoả Mãn D=d+1 END _19_
  20. Bài giảng Tin học Đại cương CHƢƠNG 3 NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 3.1. Khởi động Visual Basic Kích chuột vào nút Start\Programs\MiscoSoft Visual Studio 6.0\MicroSoft Visual Basic 6.0 3.2. Thoát khỏi Visual Basic Để thoát khỏi Visual Basic ta làm theo cách sau: Vào menu File\Exit. Khi thoát khỏi Visual Basic nếu ta chƣa ghi lại chƣơng trình và các thành phần liên quan đến chƣơng trình Visual Basic sẽ nhắc nhở chúng ta ghi lại. 3.3. Tạo, mở và lƣu một dự án (Project) Bƣớc 1: Trên thƣ mục gốc của ổ đĩa C tạo thƣ mục có tên là VIDU Lý do cần phải tạo riêng ra một thƣ mục cho chƣơng trình vì một chƣơng trình viết bằng Visual Basic bao gồm nhiều thành phần nhƣ: Các màn hình giao diện (Form), các đơn thể chƣơng trình (Modul), các báo cáo (Report) mỗi một thành phần sẽ đƣợc tạo các file tƣơng ứng trên ổ đĩa; chính vì vậy để quản lý chƣơng trình cho tốt phong cách lập trình tốt là hãy tạo riêng cho mỗi chƣơng trình một thƣ mục riêng. Bƣớc 2: Khởi động VB khi đó hộp hội thoại New Project xuất hiện: Trong hộp hội thoại này chọn tab New sau đó chọn loại Project muốn tạo, ở đây ta sẽ chọn StandardEXE. Hai tab còn lại có ý nghĩa sau: - Existing: Mở Project đã có - Recent: Mở Project đã làm việc trong thời gian gần đây nhất. _20_
  21. Bài giảng Tin học Đại cương Một cách khác để tạo dự án mới đó là trong menu File chọn mục New Project. Sau khi tạo Project mới, Visual Basic sẽ hiện một cửa sổ trên màn hình. Đây là Form trống với tiêu đề là Form1 Bƣớc 3: Lƣu Project Một trong những vấn đề quan trọng khi viết chƣơng trình là lƣu lại những gì mình đã làm. Mặc dù chƣa có thao tác gì thay đổi trên Form trống, ta cũng nên lƣu Form lên đĩa. Khi ta lƣu Project, có 2 file đƣợc lƣu: 1. File chứa các thông tin Visual Basic cần trong việc xây dựng Project. Đây là file quản lý toàn bộ các thành phần của dự án, file này có phần mở rộng là VBP 2. File chứa các thông tin về Form. File này có phần mở rộng là FRM. Các bƣớc thực hiện lƣu Project nhƣ sau: - Vào menu File chọn mục Save Project As - Visual Basic hiện hộp hội thoại Save File As. Chọn thƣ mục C:\VIDU1 đổi tên mặc định của Form trống từ Form1.Frm thành VIDU1.FRM. Lưu ý: Không nên dùng tên mặc định mà Visual Basic đặt cho Form, ta nên đặt tên form gần gũi với các chức năng của Form ta đang muốn xây dựng. - Sau khi ghi Form, Visual Basic hiện tiếp hộp hội thoại Save Project As, file Project có tên mặc định là Project1.Vbp. Ta chọn thƣ mục C:\VIDU1và đổi tên cho file Project là VIDU1.VBP. Lưu ý: Không nên dùng tên mặc định mà Visual Basic đặt cho Project, ta nên đặt tên Project gần gũi với chương trình đang muốn xây dựng. Nhƣ vậy hai file VIDU1.FRM và VIDU1.VBP đã đƣợc lƣu vào thƣ mục VIDU1 (lúc này Visual Basic sẽ phát sinh một file phụ là VIDU1.VBW) 3.4. Đối tƣợng và thuộc tính 3.4.1. Đối tƣợng Trong Visual Basic đối tƣợng là tất cả những thành phần mà ta sử dụng để thiết kế lên giao diện ngƣời sử dụng cho ứng dụng. đối tƣợng có thể là một biểu mẫu, một nút lệnh, một hộp văn bản, một nhãn Thuộc tính (Properties) :Thuộc tính của đối tƣợng là những đặc điểm của đối tƣợng để mô tả đối tƣợng và phân biệt đối tƣợng này với đối tƣợng khác.Ví dụ đối tƣợng nút lệnh có các thuộc tính nhƣ tên, kích thƣớc, vị trí, tiêu đề Mỗi đối tƣợng trong Visual Basic đều có một tập hợp thuộc tính đã quy định trƣớc. Mỗi đối tƣợng đều có thể thực hiện một số hành động hoặc cho phép thực hiện một số hành động trên nó. Phƣơng thức của đối tƣợng là hành động mà đối tƣợng có thể thực hiện đƣợc hoặc hành động đƣợc phép thực hiện trên nó. Mỗi đối tƣợng trong Visual _21_
  22. Bài giảng Tin học Đại cương Basic đều có một tập hợp các phƣơng thức đã quy định trƣớc.Các phƣơng thức của đối tƣợng đƣợc thực hiện nhờ các thủ tục biến cố, các hàm hoặc các modul độc lập. Chú ý: Trong Visual Basic hai thuật ngữ đối tƣợng (object) và điều khiển (control) thƣờng đƣợc sử dụng và có thể thay thế cho nhau nhƣng điều khiển chỉ là những đối tƣợng đặt trong biểu mẫu. 3.4.2. Một số thuộc tính thƣờng dùng của các đối tƣợng Thuộc tính Name (Tên) Thuộc tính này xác định tên cho đối tƣợng. Tên này đƣợc dùng để truy nhập đối tƣợng trong phần mã lệnh. Mỗi đối tƣợng đều có tên ngầm định do Visual Basic đặt cho. Ví dụ: Biểu mẫu có tên ngầm định là Form1, nút lệnh có tên ngầm định là command1 Tên đối tƣợng đƣợc đặt theo qui tắc sau đây: + Tên có đội dài cực đại là 40 kí tự bao gồm chữ cái, chữ số và dấu gạch nối + Tên không đƣợc trùng với từ khoá + Tên phải bắt đầu bằng chữ cái và không có dấu cách. Tên có thể bao gồm cả chữ hoa lẫn chữ thƣờng. Tên đối tƣợng phải gợi nhớ, ba kí tự đầu tiên của đối tƣợng đƣợc gọi là tiền tố. Visual Basic qui ƣớc cho mỗi đối tƣợng một tiền tố xác định. Sử dụng tiền tố của tên cho phép dễ dàng nhận ra loại đối tƣợng khi biết tên đối tƣợng. Dƣới đây là bảng tiền tố của tên các loại đối tƣợng: Tiền tố Loại đối tƣợng Frm Biểu mẫu (Form) Cmd Nút lệnh (Command Button) Lbl Nhãn (Label) Txt Hộp văn bản (Textbox) Chý ý: Quy định về tiền tố là không bắt buộc nhưng chúng ta nên tuân thủ theo nguyên tắc này. Thuộc tính Caption (Tiêu đề) Thuộc tính Caption xác định tiêu đề cho đối tƣợng . Tiêu đề là một dãy kí tự bất kỳ do ngƣời sử dụng xác định. Tiêu đề của đối tƣợng xuất hiện cùng với đối tƣợng trong biểu mẫu. Tiêu đề của đối tƣợng cho phép ngƣời sử dụng nhận ra đối tƣợng trong màn hình giao diện của chƣơng trình. Thuộc tính Enabled (Khả ứng) Thuộc tính này xác định khả năng đáp ứng các biến có tác động trong thời gian thực hiện chƣơng trình của đối tƣợng. Thuộc tính này có hai giá trị _22_
  23. Bài giảng Tin học Đại cương + Nếu là True thì đối tƣợng có thể đáp ứng các biến cố tác động trong thời gian thực hiện chƣơng trình. + Nếu là False thì đối tƣợng không có khả năng đó. Thuộc tính Font ( Font chữ) Thuộc tính này dùng để xác định Font cho đối tƣợng. Giá trị của thuộc tính này là tên các Font chữ đang đƣợc sử dụng. Ta có thể gán cho thuộc tính này tên của Font chữ bất kỳ hiện có trong máy tính với một kích thƣớc xác định. Thuộc tính BackColor (mầu nền) Xác định mầu nền của đối tƣợng. Thuộc tính này có thể nhận mầu bất kỳ trong hệ thống mầu đang đƣợc sử dụng. Thuộc tính ForeColor (Mầu chữ) Xác định mầu chữ của đối tƣợng.Thuộc tính này có thể nhận mầu bất kỳ trong hệ thống mầu đang đƣợc sử dụng. Thuộc tính Visible (Thấy đƣợc) Thuộc tính này xác định tính thấy của đối tƣợng. Thuộc tính này có hai giá tri: + Nếu là giá trị True thì đối tƣợng có thể nhìn thấy đƣợc trong thời gian thực hiện chƣơng trình + Nếu là giá trị False thì đối tƣợng bị ẩn trong thời gian thực hiện chƣơng trình Truy cập đến giá trị của điều khiển Cú pháp chung để truy nhập đến giá trị của các điều khiển từ dòng lệnh nhƣ sau: . Ví dụ: txtHovaten.Text = “Nguyễn Văn A” optNam.Value = True st = txtHovaten.Text Tuy nhiên đối với các thuộc tính giá trị đƣợc sử dụng thƣờng xuyên nên Visual Basic cho phép chúng ta dùng tên của điều khiển để truy nhập đến thuộc tính giá trị. Ví dụ: Thay vì viết txtHovaten.Text = “Nguyễn Văn A” ta có thể viết txtHovaten = “Nguyễn Văn A” Ngoài các thuộc tính chung của các điều khiển nhƣ đã phân nhóm ở trên một thuộc tính cũng rất hay đƣợc sử dụng đó là thuộc tính TabIndex. Thuộc tính này thiết lập thứ tự quan tâm của các điều khiển khi ngƣời sử dụng ấn phím TAB trên bàn phím. 3.5. Một số đối tƣợng cơ bản trong Visual Basic 3.5.1. Biểu mẫu (Form) _23_
  24. Bài giảng Tin học Đại cương Form còn gọi là biểu mẫu, là thành phần quan trọng nhất trong số tất cả các thành phần giao diện. Tất cả các thành phần giao diện ngƣời dùng ứng dụng đều đƣợc đặt trong Form. Khi ứng dụng chạy, nó mở ra một form. Sau khi Form đƣợc nạp vào bộ nhớ, tất cả các thành phần hàm chứa trong nó sẽ hiển thị và có thể truy nhập. Chúng ta có thể xem Form nhƣ một điều khiển đặc biệt. Form trong Visual Basic đƣợc chia thành 02 loại: Form thƣờng và Form MDI (Multi Document InterFace). Xác định biểu mẫu khởi đầu cho dự án Trong một chƣơng trình thông thƣờng sẽ có nhiều Form, câu hỏi đặt ra là chƣơng trình khi chạy sẽ bắt đầu từ form nào? Tức là Form nào sẽ xuất hiện ra màn hình trƣớc tiên khi chƣơng trình chạy. Để thực hiện việc xác định form khởi đầu của chƣơng trình chúng ta sẽ thực hiện nhƣ sau: Trong menu Project chọn mục Properties (tên Project chính là thuộc tính name của Project mà chúng ta đã đặt), khi đó màn hình (hình 16) sẽ xuất hiện. Trong màn hình này chọn thẻ General trong danh sách thả xuống (combo box) Start up Object chọn Form chúng ta muốn nó xuất hiện đầu tiên khi chƣơng trình chạy. Xoá một biểu mẫu Trong quá trình thiết kế chƣơng trình vì một lý do nào đấy mà ta muốn xoá một biểu mẫu, ta tiến hành nhƣ sau: - Chọn Project - Chọn Remove tên biểu mẫu Các thuộc tính của biểu mẫu Biểu mẫu có đến 50 thuộc tính. Những thuộc tính cơ bản nhất và hay sử dụng đƣợc cho trong bảng dƣới đây: _24_
  25. Bài giảng Tin học Đại cương Thuộc tính Ý nghĩa, tác dụng Appearance Xác định khi nào biểu mẫu có dạng ba chiều BackColor Xác định mầu nền của biểu mẫu BorderStyle Xác định kiểu đƣờng viền xung quanh biểu mẫu Caption Xác định tiêu đề cho biểu mẫu Enabled Xác định tính khả ứng của đối tƣợng cho trong biểu mẫu Font Xác định Font chữ cho biểu mẫu ForeColor Xác định mầu chữ của biểu mẫu Height Xác định chiều cao của biểu mẫu Left Xác định khoảng cách từ biên trái của màn hình đến biên trái của biểu mẫu MDIChild Xác định biểu mẫu này có thuộc kiểu cha con không. Nếu thuộc tính này là True thì biểu mẫu này là biểu mẫu MDI, tức là biểu mẫu con trong biểu mẫu cha. Nếu thuộc tính này là False (ngầm định) thì biểu mẫu này không phải là biểu mẫu MDI Name Xác định tên của biểu mẫu. Tên ngầm định của biểu mẫu là Form1 Top Xác định khoảng cách từ biên trên của màn hình đến biên trên của biểu mẫu Visible Xác định tính thấy đƣợc của biểu mẫu Width Xác định chiều rộng của biểu mẫu 3.5.2. Nhãn (Label ) Khái niệm nhãn Mục đích của điều khiển này là hiển thị một đoạn văn bản lên form thông qua thuộc tính Caption. Label khác textbox ở chỗ nó không cho phép ngƣời sử dụng nhập một đoạn văn bản vào nhƣ là textbox. Thông thƣờng Label bao giờ cũng đƣợc sử dụng kết hợp với textbox với mục đích chú thích cho từng mục dữ liệu nằm trên Form. Các thuộc tính cơ bản của nhãn Nhãn có đến 30 thuộc tính. Những thuộc tính cơ bản nhất và hay sử dụng đƣợc cho trong bảng dƣới đây: Thuộc tính Ý nghĩa, tác dụng _25_
  26. Bài giảng Tin học Đại cương Alignment Xác định kiểu canh lề cho văn bản có trong nhãn. Thuộc tính này có ba giá trị là: 0 – canh trái, 1 – canh phải, 2 – canh giữa Appearance Xác định khi nào nhãn có dạng ba chiều BackColor Xác định mầu nền của nhãn BorderStyle Xác định kiểu đƣờng viền xung quanh nhãn Caption Xác định tiêu đề cho nhãn Enabled Xác định tính khả ứng của nhãn Font Xác định Font chữ cho nhãn ForeColor Xác định mầu chữ của nhãn Height Xác định chiều cao của nhãn Left Xác định khoảng cách trái của nhãn Name Xác định tên nhãn. Tên ngầm định của biểu mẫu là Label1 Top Xác định khoảng cách trên nhãn Visible Xác định tính thấy đƣợc của nhãn Width Xác định chiều rộng của nhãn AutoSize Thuộc tính này có hai giá trị là TRUE và FALSE, nếu thuộc tính này bằng TRUE thì Visual Basic sẽ tự điều chỉnh kích thƣớc của nhãn sao cho vừa đủ để hiển thị giá trị của thuộc tính Caption 3.5.3. Hộp văn bản (Textbox ) Khái niệm hộp văn bản TextBox đƣợc sử dụng để nhập một đoạn văn bản hay hiển thị một đoạn văn bản. Đây là một điều khiển đƣợc sử dụng nhiều nhất trong các chƣơng trình viết bằng Visual Basic. Các thuộc tính cơ bản của hộp văn Nhãn có đến 30 thuộc tính. Những thuộc tính cơ bản nhất và hay sử dụng đƣợc cho trong bảng dƣới đây: Thuộc tính Ý nghĩa, tác dụng Xác định kiểu canh lề cho văn bản có trong hộp văn bản. Thuộc tính này Alignment có ba giá trị là: 0 – canh trái, 1 – canh phải, 2 – canh giữa Appearance Xác định khi nào hộp văn bản có dạng ba chiều BackColor Xác định mầu nền của hộp văn bản BorderStyle Xác định kiểu đƣờng viền xung quanh hộp văn bản _26_
  27. Bài giảng Tin học Đại cương Enabled Xác định tính khả ứng của hộp văn bản Font Xác định Font chữ cho hộp văn bản ForeColor Xác định mầu chữ của hộp văn bản Height Xác định chiều cao của hộp văn bản Left Xác định khoảng cách trái của hộp văn bản Name Xác định tên hộp văn bản. Tên ngầm định của biểu mẫu là Text1 Top Xác định khoảng cách trên của hộp văn bản Visible Xác định tính thấy đƣợc của hộp văn bản Width Xác định chiều rộng của hộp văn bản Thuộc tính này là giá trị số nguyên có giá trị lớn hơn hoặc bằng 0, nó quy định chiều dài tối đa của đoạn văn bản nhập vào trong textbox. Nếu MaxLength thuộc tính này đặt bằng 0 (giá trị mặc định) thì sẽ không giới hạn chiều dài tối đa. Thuộc tính này thiết lập ký tự đóng vai trò mặt nạ nhập liệu. Thông thƣờng thuộc tính này thƣờng đƣợc sử dụng trong trƣờng hợp yêu cầu ngƣời sử dụng nhập vào Password. Khi ngƣời sử dụng nhập các giá trị PasswordChar vào trong textbox, mỗi ký tự nhập vào sẽ đƣợc hiển thị thành ký tự đã thiết lập là mặt nạ tuy nhiên giá trị của thuộc tính Text vẫn giữ nguyên giá trị mà ngƣời sử dụng nhập vào. Thuộc tính này có 2 giá trị True và False nếu bằng True Visual Basic sẽ tự động xuống dòng. Ta thƣờng thiết lập thuộc tính này bằng True trong MultiLine trƣờng hợp nhập các thông tin nhƣ: nội dung một đoạn văn bản, các ghi chú, quá trình công tác của một nhân viên Thuộc tính này chứa nội dung của TextBox. Thông thƣờng ta có thể nhập tối đa 2048 ký tự vào TextBox. Nếu thiết lập thuộc tính MultiLine Text = TRUE ta có thể nhập vào 32K ký tự. Thuộc tính này đƣợc sử dụng để thiết lập chế độ cuộn văn bản trong textbox khi thuộc tính Multiline đặt bằng True. Các giá trị của thuộc tính nhƣ sau: ScroolBars + 0-None: Không có thanh cuộn + 1- Horizontal: Chỉ có thanh cuộn ngang + 2-Vertical: Chỉ có thanh cuộn dọc _27_
  28. Bài giảng Tin học Đại cương + 3- Both: Cả thanh cuộn ngang và thanh cuộn dọc Thuộc tính này có hai giá trị True, False nếu Locked = True lệnh Copy Locked vẫn hoạt động trong khi lệnh Cut và Paste không hoạt động với TextBox Thủ tục tình huống đáp ứng sự kiện - Sự kiện Change: Sự kiện này xảy ra mỗi khi thuộc tính Text của textbox bị thay đổi - Sự kiện LostFocus: Sự kiện này xảy ra mỗi khi Textbox mất sự quan tâm. - Sự kiện GotFocus: Sự kiện này xảy ra mỗi khi Textbox nhận đƣợc sử quan tâm. - Sự kiện KeyPress: Sự kiện này xảy ra mỗi khi ngƣời sử dụng ấn một phím bất kỳ khi textbox đang nhận đƣợc sự quan tâm Cấu trúc thủ tục tình huống nhƣ sau: Private Sub _KeyPress(KeyAscii As Integer) „ Tập hợp các lệnh End Sub Thủ tục tình huống này truyền vào một tham trị có kiểu là số nguyên KeyAscii là mã Ascii của phím đƣợc bấm. 3.5.4. Nút lệnh (Command Button ) Khái niệm: CommandButton là một nút lệnh mà ta có thế nhấn chuột vào, khi đó nó sẽ thực hiện một hành động nào đó kéo theo. Các thuộc tính của nút lệnh - Caption: Đây là thuộc tính thể hiện nhãn của nút lệnh. Ví dụ nhƣ: Thêm, Ghi, Xoá, Sửa, Đóng Bình thƣờng để nút lệnh thực hiện công việc của nó ngƣời sử dụng có thể nhấn chuột vào nút lệnh hoặc ấn phím Enter khi nút lệnh đang đƣợc chọn, nếu ta muốn gián cho nó một tổ hợp phím nóng ALT + thì đằng trƣớc phím ký tự đó ta đặt vào dấu “&”. Ví dụ: Tổ hợp phím ALT + T để chọn nút lệnh Thêm thì thuộc tính Caption của nút lệnh ta sẽ gán cho nó giá trị sau đây: &Ghi. Khi đó nút lệnh sẽ thể hiện nhƣ sau: - Style: Thiết lập nút lệnh có cho phép hiển thị hình ảnh hay không. Thuộc tính này có hai giá trị: + 0-Standard: Nút lệnh bình thƣờng, chỉ có nhãn mà không có hình ảnh đồ hoạ hiển thị bên trong. _28_
  29. Bài giảng Tin học Đại cương + 1-Graphical: Cho phép vừa có nhãn vừa có hình ảnh đồ hoạ hiển thị trong nút lệnh. Hình ảnh đồ hoạ hiển thị trong nút lệnh do thuộc tính Picture thiết lập. - Picture: Thuộc tính này chỉ định tên file đồ hoạ sẽ hiển thị trong nút lệnh. Các dạng file đồ hoạ là Bitmap, Gif, Jpeg, Metafile, Icon. Thuộc tính này chỉ có tác dụng khi thuộc tính Style đã đặt bằng 1. - Enabled: Thuộc tính này có hai giá trị True và False. Ngƣời lập trình có thể linh hoạt thiết lập giá trị cho thuộc tính này sao cho phù hợp với tiến trình hoạt động của chƣơng trình. Thủ tục tình huống đáp ứng sự kiện Thủ tục tình huống đáp ứng sự kiện quan trong nhất của nút lệnh đó là sự kiện ngƣời sử dụng click chuột vào nút lệnh. Thủ tục tình huống có khuôn mẫu nhƣ sau: Private Sub _Click() „ Các lệnh sẽ đƣợc viết ở đây End Sub 3.6. Một số qui ƣớc trong ngôn ngữ * Bộ kí tự Visual Basic đƣợc xây dựng với bộ kí tự sau: - Các chữ cái: 26 chữ cái hoa (A,B, ,Z) 26 chữ thƣờng (a,b, z) - Các chữ số thập phân: 0,1,2,3,4,5,6,7,8,9 - Các dấu toán học thông dụng: + - * / > >= < <= = ( ) - Dấu gạch dƣới _ - Các kí hiệu đặc biệt: . : & $ # ^ „ “ ? * Từ khoá (Keyword) Từ khoá là các từ dành riêng cho Visual Basic, mỗi từ có một chức năng nhất định. Khi sử dụng phải dùng đúng với chức năng. Một số từ khoá: DIM END SUB FUNCTION PRIVATE CONST IF THEN FOR WHILE STATIC SELECT CASE TYPE PUBLIC WEND NEXT *Tên (Indentifier) _29_
  30. Bài giảng Tin học Đại cương Tên là một dãy kí tự đƣợc tạo thành từ các chữ cái, chữ số và dấu gạch nối. Tên thƣờng dùng để đặt tên cho các đại lƣợng trong chƣơng trình nhƣ tên biến, hằng, tên kiểu dữ liệu mới vv Kí tự đầu tiên của tên không đƣợc là chữ số. Tên không đƣợc trùng với từ khoá. - Tên chuẩn: là tên do Visual Basic định nghĩa trƣớc dùng chỉ tên các hàm, hằng, biến, thủ tục, hàm, sự kiện trong Visual Basic. - Tên do ngƣời lập trình đặt: Đặt tuỳ ý nhƣng phải tuân thủ theo nguyên tắc của Visual Basic nhƣ tên biến, tên kiểu dữ liệu mới, tên thủ tục, tên hàm 3.7. Các kiểu dữ liệu cơ bản 3.7.1. Kiểu logic (Boolean) - Một dữ liệu kiểu logic chỉ nhận một trong hai giá trị sau: TRUE (đúng) hoặc FALSE (sai). Dữ liêu kiểu logic chiếm mất 2 byte trong bộ nhớ - Quy ƣớc: FALS < TRUE. - Các phép toán đối với kiểu Logic: AND, OR, XOR, NOT. 3.7.2. Kiểu số nguyên - Có ba kiểu số nguyên đƣợc tổng kết qua bảng sau: Tên Miền giá trị Yêu cầu bộ nhớ Byte 0 đến 255 1 byte Integer -32768 đến 32767 2 byte Long - 2147483648 đến 2147483647 4 byte - Các phép tính với kiểu số nguyên: Phép Phép Ý nghĩa Ý nghĩa tính tính + cộng / chia - trừ \ chia lấy phần nguyên * nhân MOD chia lấy số dƣ của hai số nguyên phép luỹ ^ thừa Ví dụ: 5/2=2.50 5 \ 2=2 5 MOD 2=1 Chú ý: _30_
  31. Bài giảng Tin học Đại cương - Khi viết các số nguyên phải tuân theo các quy định: không có khoảng trống giữa các số, dấu + hay - (nếu có) phải đặt ngay trƣớc chữ số đầu tiên, không đƣợc sử dụng dấu chấm thập phân. - Khi thực hiện các phép tính trên số nguyên, phải hết sức thận trọng xem các phép toán đó có cho kết quả vƣợt quá phạm vi biểu diễn của số nguyên hay không. Ví dụ a, b là dữ liệu kiểu Integer. Khi đó hai câu lệnh sau: a=80; b=(a*1245) \ 200; cho kết quả sai vì a*1245 = 99600 vƣợt quá phạm vi của Integer. 3.7.3. Kiểu số thực - Có bốn kiểu số thực, đƣợc tổng kết qua bảng sau: Tên kiểu Miền giá trị Yêu cầu bộ nhớ Single (Số thực) -3.402823E38 đến -1.401298E-45 4 byte Có độ chính xác đơn 1.401298E-45 đến 3.402823E+38 Double -1.79769313486231 E308 đến - 8 byte (Số thực) 4.94065645841247E-34 Có độ chính xác kép 4.94065645841247E-324 đến 1.79769313486232E308 Currency -922,337,203,685,477.5808 đến 8 byte (15 số nguyên và 4 922,337,203,685,477.5807 số thập phân) Decimal Có thể lƣu số nguyên hay số thực 14 byte Các giá trị thực đƣợc biểu diễn theo hai cách: dạng dấu phẩy tĩnh và dạng dấu phẩy động. - Cách viết số thực theo dạng dấu phẩy tĩnh: viết dạng thập phân bình thƣờng. Ví dụ: 2.25, 5.0, -25.56812, 0.0256 - Cách viết số thực theo dạng dấu phẩy động: số đƣợc tách thành hai phần là định trị và bậc. Phần định trị là một số nguyên hay số thực viết dƣới dạng dấu phẩy tĩnh. Phần bậc là một số nguyên. Hai phần cách nhau bởi chữ E hay e. Ví dụ: 123.456E-4 =123.456*10-4 = 0.0123456 0.12E+5 =0.12*105 =12000.0 _31_
  32. Bài giảng Tin học Đại cương -52.4E2 = -52.4*102 = –5240.0 Các ký tự biểu diễn một số thực phải viết liền nhau. - Các phép toán đối với số thực: + (cộng), - (trừ), * (nhân), / (chia) Không tồn tại các phép toán \, MOD cho kiểu số thực. Các hàm số học sử dụng đối với dữ liệu kiểu số Tên Cú pháp Tác dụng hàm Abs Abs(n) Tìm giá trị tuyệt đối của một số Atn Atn(number) Tìm artangen Ví dụ: Dim pi pi = 4 * Atn(1) Cos Cos(number) Tìm cosine number đo bằng Radian Exp Exp(x) Tìm giá trị hàm mũ ex (e=2.17 ) Int Int(number) Trả về số nguyên lớn nhất trong những số Ví dụ: Int(99.8)=99 nguyên nhỏ hơn số đó Int(-99.8)=100 Fix Fix(number) Trả về phần nguyên của 1 số Ví dụ: Fix(99.8)=99 Log10 Logarit cơ số 10 Rnd Giá trị phát sinh ngẫu nhiên Gọi bộ tạo số ngẫu nhiên từ 0 đến nhỏ hơn 1 Round Round(number) Làm tròn số Sin Sin(number) Tìm sin của 1 số number đo bằng Radian Sqr Sqr(number) Tính căn bậc 2 của 1 số 3.7.4. Kiểu xâu ký tự (String) Một giá trị kiểu String là một dãy ký tự bất kỳ đặt trong 2 dầu nháy kép. Số ký tự của xâu phụ thuộc vào cách khai báo: Khai báo xâu có chiều dài không cố định: Dim St as String _32_
  33. Bài giảng Tin học Đại cương Thì độ dài cực đại của xâu là 2 tỷ ký tự. Khai báo xâu có chiều dài cố định: Dim St as String *25 Nếu ta gán cho St một chuỗi ngắn hơn 25 ký tự thì Visual Basic sẽ thêm vào khoảng đuôi của St các ký tự khoảng trắng cho đầy 25 ký tự. Nếu ta gán cho St một chuỗi dài hơn 25 ký tự thì Visual Basic sẽ tự động cắt bỏ phần thừa. Xâu không có ký tự nào gọi là xâu rỗng. - Để biểu diễn 1 ký tự có thể dùng 1 trong 2 cách: Đặt ký tự trong 2 dấu nháy kép, dùng hàm Chr(n), dùng #n( trong đó n là mã ASCIIcủa ký tự cần biểu diễn). Ví dụ: Để biểu diễn ký tự A ta có thể dùng 2 cách: “A” hoặc Chr(65). - Kiểu xâu ký tự chỉ có phép toán so sánh, sự so sánh dựa vào mã của từng ký tự trong xâu Các phép toán đối với xâu ký tự Phép toán phổ biến nhất đƣợc thực hiện với các xâu ký tự đó là ghép hai xâu với nhau. Dấu & dùng để nối hai chuỗi Ví dụ: Ho = “Nguyễn Văn “ Ten = “Trung” Hovaten = Ho & Ten Dấu & nối các xâu theo thứ tự chúng ta trình bày chúng. Nhƣ vậy khác với phép cộng các số, thứ tự là quan trọng khi sử dụng dấu & để nối các xâu với nhau. Trong nhiều ngôn ngữ lập trình, kể cả các phiên bản trƣớc của Visual Basic có sử dụng dấu + để nối các xâu với nhau. Một số hàm cơ bản đƣợc dùng cho dữ liệu kiểu xâu ký tự Tên Cú pháp Tác dụng hàm Space Space(n) Trả về xâu ký tự chỉ chứa n ký tự trắng n = Số ký tự trắng lặp lại String String(n,st) Lặp lại xâu ký tự st n lần Ltrim LTrim(st) Trả về xâu ký tự sau khi đã loại bỏ các ký tự trắng (nếu có) ở đầu xâu ký tự st Rtrim RTrim(st) Trả về xâu ký tự sau khi đã loại bỏ các ký tự trắng (nếu có) ở cuối xâu ký tự st _33_
  34. Bài giảng Tin học Đại cương Tên Cú pháp Tác dụng hàm Trim Trim(st) Trả về xâu ký tự sau khi đã loại bỏ các ký tự trắng (nếu có) ở hai đầu xấu ký tự st Len Len(st) Trả về độ dài của xâu ký tự st Mid Mid(st,i,n) Trích ra trong xâu ký tự st n ký tự bắt đầu từ vị trí thứ i Left Left(st,n) Trích ra n ký tự bên phía tay trái xâu ký tự st Right Right(st,n) Trích ra n ký tự bên phía tay phải xâu ký tự st InStr Instr(i, Kiểm tra vị trí của một xâu ký tự trong một st2,st1[,vbTextCompare]) xâu ký tự khác (không phân biệt chữ hoa, Tìm xâu ký tự st1 trong xâu ký tự st2 bắt thƣờng) đầu từ vị trí thứ i. Nếu không tìm thấy hàm trả về giá trị = 0 Val Val(st) Trả về giá trị số trong xâu ký tự biểu diễn các chữ số st Ucase UCase(st) Trả về xâu ký tự in hoa Lcase LCase(st) Trả về xâu ký tự chữ thƣờng Asc Asc(st) Trả về mã ASCII của ký tự đầu tiên trong xâu ký tự Chr Chr(mã ASCII) Trả về ký tự tƣơng ứng với mã ASCII Str Str(số) Trả về chuỗi ký tự biểu diễn giá trị số Các hàm chuyển đổi kiểu từ dữ liệu dạng ký tự Tên Cú pháp Tác dụng hàm Cbool CBool(biểu thức) Chuyển sang giá trị kiểu Boolean Cbyte Cbyte(biểu thức) Chuyển sang giá trị kiểu Byte Ccur Ccur(biểu thức) Chuyển sang giá trị kiểu currency Cdate Cdate(biểu thức) Chuyển sang giá trị kiểu date CDbl CDbl(biểu thức) Chuyển sang giá trị kiểu Double Cdec Cdec(biểu thức) Chuyển sang giá trị kiểu Decimal Cint Cint(biểu thức) Chuyển sang giá trị kiểu Int CLng CLng(biểu thức) Chuyển sang giá trị kiểu Long CSng CSng(biểu thức) Chuyển sang giá trị kiểu Single _34_
  35. Bài giảng Tin học Đại cương Tên Cú pháp Tác dụng hàm CStr CStr(biểu thức) Chuyển sang giá trị kiểu String Cvar Cvar(biểu thức) Chuyển sang giá trị kiểu Varial _35_
  36. Bài giảng Tin học Đại cương CHƢƠNG 4 KHAI BÁO HẰNG, BIẾN, BIỂU THỨC CÂU LỆNH 4.1. Các hằng trong Visual Basic * Khái niệm hằng. Hằng là đại lƣợng có giá trị xác định và không thay đổi khi chƣơng trình thực hiện. Giá trị của hằng đƣợc nhận diện thông qua tên của hằng. Trong Visual Basic có một số hằng nhƣ: xâu ký tự, hằng số, hằng có dữ liệu kiểu logic, kiểu thời gian * Khai báo hằng. Cú pháp khai báo nhƣ sau: Const = Ví dụ: Const UserName = “Nguyễn Văn A” Const MaxUser As Integer = 10 Giá trị cũng có thể là các biểu thức số cho hằng hoặc khai báo các hằng căn cứ theo các hằng đã đƣợc định nghĩa trƣớc. Bản thân Visual Basic đã cung cấp cho chúng ta vô số các hằng hữu dụng để làm việc với các hàm, các đối tƣợng và phƣơng thức xây dựng sẵn. Nói chung các hằng này bắt đầu với “Visual Basic”, các hằng cơ sở dữ liệu bắt đầu với “db”, Ví dụ: Giả sử gọi mã của phím Enter trên bàn phím thay vì sử dụng mã ASCII của phím đó là 13 thì Visual Basic cung cấp cho ta một hằng đại diện cho mã ấy là hằng có tên là vbKeyReturn 4.2. Biến * Khái niệm Biến là một đại lƣợng mà giá trị của nó thay đổi khi thực hiện chƣơng trình. Biến là tên của một vùng bộ nhớ lƣu trữ dữ liệu, mỗi biến phải thuộc về một kiểu dữ liệu nhất định và đƣợc đặt tên. * Khai báo biến. Cú pháp khai báo biến: Dim [As ] Ví dụ: Dim Str As String Dim i As Integer _36_
  37. Bài giảng Tin học Đại cương Chúng ta có thể không cần định nghĩa kiểu dữ liệu của biến khi khai báo, lúc đó biến sẽ có kiểu là Variant. Có thể khai báo nhiều biến trên một câu lệnh, tuy nhiên khi đó ta phải xác định loại dữ liệu cho mỗi biến 4.3. Biểu thức Một biểu thức đƣợc tạo bởi các toán hạng và các toán tử để thực hiện một công thức toán học. Toán hạng có thể là hằng, hàm, biến. Chú ý rằng một hằng, một biến, một hàm cũng đƣợc xem là một biểu thức, biểu thức đơn giản. 4.4. Quy định về viết dòng lệnh trong Visual Basic. Khi viết các dòng lệnh Visual Basic phải tuân thủ các nguyên tắc sau đây: - Thƣờng một câu lệnh đƣợc viết trên một dòng của chƣơng trình, một dòng của chƣơng trình chứa tối đa 1023 kí tự. - Nếu một dòng của chƣơng trình chứa nhiều câu lệnh thì giữa các câu lệnh phải đƣợc ngăn cách với nhau bằng dấu : (hai chấm) - Trong trƣờng hợp một câu lệnh đƣợc viết trên nhiều dòng thì khi đó ở cuối dòng phải có một kí tự dấu cách và dấu gạch dƣới đi liền nhau. 4.5. Cách viết dòng chú thích trong chƣơng trình. Trong quá trình lập trình để làm sáng tỏ một dòng lệnh hoặc một đoạn chƣơng trình ngƣời ta thƣờng đƣa dòng chú thích vào trong chƣơng trình. Dòng chú thích đƣợc viết theo qui tắc nhƣ sau: Cách 1: ' dòng chú thích' Cách 2: REM dòng chú thích Ví dụ: Chú thích cho đoạn mã lệnh khai báo biến i là kiểu số nguyên Cách 1:'Khai báo biến i kiểu số nguyên' Dim i as Integer Cách2: REM Khai báo biến i kiểu số nguyên Dim i as Integer 4.6. Câu lệnh gán. Cú pháp: Tên_biến= biểu thức Hoặc Tên_đối_tượng.Thuộc_tính= biểu thức _37_
  38. Bài giảng Tin học Đại cương Hoạt động: khi gặp lệnh này máy sẽ tính giá trị của biểu thức bên phải của lệnh và gán giá trị đó cho biến hoặc thuộc tính ở vế trái . Ví dụ: s = s*b 4.7. Câu lệnh END. Khi Visual Basic gặp câu lệnh END, máy sẽ dừng lại. Nếu ta đang trong môi trƣờng phát triển ứng dụng thì sẽ quay trở về môi trƣờng phát triển. Trong môi trƣờng độc lập, khi gặp câu lệnh End tất cả cửa sổ đƣợc mở ra sẽ bị đóng lại và chƣơng trình bị xoá khỏi bộ nhớ. Ta có thể đặt câu lệnh END ở nhiều nơi trong chƣơng trình tuy nhiên phong cách lập trình tốt là hạn chế tối đa câu lệnh này. Những lập trình viên chuyên nghiệp thích dùng chỉ 1 câu lệnh End, và thƣờng đặt trong tình huống Query_UnLoad của biểu mẫu chính. 4.8. Lệnh in dữ liệu 4.8.1.Câu lệnh PRINT. Câu lệnh này nhằm mục đích in giá trị của biểu thức lên trên một Form. Cú pháp nhƣ sau: Print [, ] Gặp câu lệnh này, máy sẽ tính giá trị các biểu thức và in các giá trị đó trên biểu mẫu. Nếu hai biểu thức cách nhau dấu phẩy, các giá trị đƣợc in cách nhau một dấu cách. Nếu hai biểu thức cách nhau bởi dấu chấm phẩy (;) thì giá trị của biểu thức sau sẽ đƣợc in ở vùng tiếp theo. Một vùng gồm 14 kí tự đi liền nhau trên một biểu mẫu. Ví dụ: Print “Diện tích tam giác là s=”,str(s) Chú ý: Khi soạn thảo chƣơng trình có thể gõ dấu hỏi “?” thay cho gõ từ “Print”. Visual Basic sẽ tự thay dấu “?” bằng từ “Print” Ví dụ: ? “Diện tích tam giác là s=”,str(s) 4.8.2. Lệnh MSGBOX Lệnh MsgBox tạo ra trên màn hình một cửa sổ nhỏ mà ta gọi là hộp thông báo. Hộp này chứa một thông báo mà chƣơng trình muốn gửi cho ngƣời sử dụng và một nút lệnh OK. Khi ngƣời sử dụng đã xem xong thông báo thì nháy chuột vào nút lệnh OK, câu thông báo này sẽ biến mất. Lệnh này có cú pháp nhƣ sau: MsgBox Thông báo, [Kiểu], [Tiêu đề] Trong đó: Thông báo: Là một dãy kí tự tạo nên dòng thông báo đến ngƣời sử dụng. Tiêu đề: Là dãy kí tự đƣợc dùng làm tiêu đề của hộp thông báo. _38_
  39. Bài giảng Tin học Đại cương Kiểu: Là một số nguyên xác định biểu tƣợng dùng để cảnh báo. Tham số kiểu có giá trị đƣợc liệt kê trong bảng sau đây: Giá trị của Ý nghĩa kiểu 16 Hiện biểu tƣợng STOP 32 Hiện biểu tƣợng dấu hỏi (?) 48 Hiện biểu tƣợng dấu chấm than (!) 64 Hiện biểu tƣợng chữ i (information) 4096 Sử dụng hệ thống MODAL Ví dụ: Giả sử ta có câu lệnh sau: Msgbox "Dữ liệu nhập vào chƣa đúng",32,"Thông báo về dữ liệu" Câu lệnh này xuất hiện lên màn hình hộp thông báo nhƣ sau: 4.8.3. Dùng Text box Cú pháp: TênTextBox.Text= Ví dụ: - In ra TextBox câu “Chào Bạn” (têntextbox la txtkq) Txtkq.text=”Chào Bạn” - In ra TextBox giá trị của một biến a Txtkq.Text=”Giá trị củav a=”+str(a) 4.9. Lệnh nhập dữ liệu 4.9.1. Dùng Textbox Cú pháp: Biến= TênTextBox.Text Ví dụ: - Nhập vào tên của sinh viên thông qua biến sv _39_
  40. Bài giảng Tin học Đại cương Sv=Txtsv.Text - Nhập vào giá trị cho biến a a=Val(Txta.Text) 4.9.2. Hàm nhập dữ liệu INPUTBOX Cú pháp: INPUTBOX(Lời nhắc, tiêu đề, ngầm định) Trong đó: Lời nhắc: Là dãy kí tự đƣợc dùng để hƣớng dẫn ngƣời sử dụng nhập dữ liệu Tiêu đề: Là dãy kí tự đƣợc dùng làm tiêu đề của hộp nhập dữ liệu, hộp này xuất hiện mỗi khi hàm nhập dữ liệu đƣợc thực hiện. Ngầm đinh: Là dãy kí tự đƣợc dùng làm giá trị ngầm định của dữ liệu đƣợc nhập Ví dụ: muốn nhập giá trị cho biến a a= Val(INPUTBOX(“Nhập a=”,"Nhập dữ liệu cho biến a" ) Khi gặp lệnh này máy sẽ thực hiện hàm INPUTBOX và xuất hiện cửa sổ nhập liệu sau: 4.10. Chuyển đổi kiểu dữ liệu trong quá trình tính giá trị biểu thức Trong quá trình tính giá trị của một biểu thức, các thành phần trong biểu thức có thể là các kiểu dữ liệu khác nhau. Kiểu của kết quả sẽ đƣợc xác định theo yêu cầu của ngƣời sử dụng. Dƣới đây là bảng tóm tắt việc chuyển đổi dữ liệu nêu trên: Câu lệnh Tác dụng Dim i as Khai báo biến i là biến kiểu số nguyên Integer Khai báo biến x là biến kiểu số thực. Dim x as Single Trong câu lệnh này chuỗi "2" đƣợc biến thành số nguyên 2, rồi cộng I=1+"2" thêm với 1. Kết quả của phép cộng này là số 3 đƣợc gán cho biến I. Nhƣ vậy sau khi thực hiện câu lệnh này biến I có giá trị là 3 I="1"+"2" Trong câu lệnh này, đầu tiên chuỗi "1" và "2" cộng lại với nhau tạo _40_
  41. Bài giảng Tin học Đại cương thành chuỗi "12". Sau đó chuỗi này đƣợc biến đổi thành số 12. Số 12 đƣợc gán cho biến I. nhƣ vậy sau câu lệnh này biến I có giá trị là 12. X=5.5 Gán giá trị 5.5. cho biến X X="5.5" Trong câu lệnh này, đầu tiên chuỗi "5.5" đƣợc biến đổi thành số thực 5.5, sau đó gán cho biến X. Sau câu lệnh này biến x có giá trị là 5.5. X=”5,5” Trong câu lệnh này, đầu tiên chuỗi "5,5" đƣợc biến đổi thành số thực 55, vì Visual Basic bỏ qua dấu “,” không cho đó là dấu phẩy thập phân, dùng để ngăn chia phần nguyên và phần lẻ của số. Sau đó gán cho biến X. Sau câu lệnh này biến X có giá trị là 55. X=”5B5” Câu lệnh này không đúng vì xâu “5B5” không thể đổi thành số đƣợc 4.11. Cấu trúc điều kiện 4.11.1. Câu lệnh điều kiện thiếu Cú pháp 1: If Then Cú pháp 2: If Then End If Giải thích là giá trị kiểu logic. Hoạt động của câu lệnh nhƣ sau: Nếu biểu thức điều kiện cho giá trị đúng thì thực hiện sau Then, ngƣợc lại sẽ không đƣợc thực hiện và máy thực hiện tiếp những câu lệnh đằng sau câu lệnh IF. Cú pháp 1 thƣờng đƣợc sử dụng khi thƣờng là một câu lệnh đơn. Ví dụ: IF Not IsNumeric(Text1.Text) THEN Msgbox “Đây không phải là số” Sơ đồ thuật toán: Biểu thức Đ Công việc điều kiện S Thực hiện các câu lệnh sau _41_ IF
  42. Bài giảng Tin học Đại cương 4.11.2. Câu lệnh điều kiện đủ Cú pháp 1: If Then Else End If Khi gặp câu lệnh này chƣơng sẽ kiểm tra biểu thức điều kiện, nếu điều kiện đúng máy sẽ thực hiện công việc 1 ngƣợc lại sẽ thực hiện công việc 2. Sơ đồ thuật toán: Biểu thức Đ Công việc 2 S Công việc 1 điều kiện Thực hiện các câu lệnh sau IF Cú pháp 2: If Then ElseIf Then ElseIf Else End If _42_
  43. Bài giảng Tin học Đại cương Khi gặp câu lệnh này máy tính sẽ kiểm tra biểu thức điều kiện 1, nếu điều kiện 1 đúng thì công việc 1 sẽ đƣợc thực hiện ngƣợc lại sẽ kiểm tra biểu thức điều kiện 2 nếu biểu thức điều kiện 2 đúng thì công việc 2 sẽ đƣợc thực hiện Với cấu trúc này 1 công việc sẽ đƣợc thực hiện khi biểu thức điều kiện tƣơng ứng với nó cho giá trị đúng, trong trƣờng hợp không có biểu thức điều kiện nào nào đúng thì sẽ đi thực hiện công việc thứ n+1. Sơ đồ thuật toán: Biểu thức Đ S Công việc 1 điều kiện S Biểu thức Đ Công việc 2 điều kiện Thực hiện các câu lệnh sau S IF Biểu thức Đ Công việc n điều kiện S Công việc n+1 4.12. Câu lệnh lựa chọn SELECT Câu lệnh này cũng giống nhƣ câu lệnh If else End if. Tuy nhiên cấu trúc này có nhiều sự lựa chọn hơn. Cú pháp của câu lệnh nhƣ sau: Select Case Case Case Case [ Case Else _43_
  44. Bài giảng Tin học Đại cương ] End Select Trong đó, giá trị có thể là 1 giá trị cụ thể hoặc là miền giá trị hoặc một biểu thức o To : miền giá trị từ đến o Is (hay ) Hoạt động: Gặp lênh này máy sẽ đi tính giá trị của biểu thức sau đó đem so sánh với các giá trị . Nếu nằm vào miền giá trị thứ i thì đi thực hiện công việc thứ i, ngƣợc lại không trùng với miền giá trị nào thì đi thực hiện công việc thứ n+1 Sơ đồ thuật toán Biểu thức Đ Công việc 1 điều kiện S Biểu thức Đ Công việc 2 điều kiện Thực hiện các S câu lệnh sau IF Biểu thức Đ Công việc n điều kiện S Công việc n+1 Ví dụ : Xác định mùa trong năm dựa vào tháng Selelct Case Month Case Is <4 Msgbox “Mùa Xuân” Case 4,5,6 Msgbox “Mùa hè” Case 7 to 9 Msgbox “Mùa Thu” Case Else _44_
  45. Bài giảng Tin học Đại cương Msgbox “Mùa đông” End Select 4.13. Cấu trúc lặp . 4.13.1. Khái niệm về lặp. Lặp là một hiện tƣợng, một công việc đƣợc thực hiện đi thực lại liên tiếp nhiều lần tại cùng một khoảng thời gian xác định. Trong các ngôn ngữ lập trình ngƣời ta chia ra làm hai loại cấu trúc lặp: + Vòng lặp xác định: Là loại vòng lặp biết trƣớc số lần lặp + Vòng lặp không xác định là loại vòng lặp không biết trƣớc số lần lặp 4.13.2. Vòng lặp xác định. Vòng lặp xác định là vòng lặp mà số lần lặp lại của công việc đƣợc biết trƣớc. Trong Visual Basic vòng lặp xác định đƣợc thực hiện bởi câu lệnh For có cấu trúc nhƣ sau: For = To [Step ] [Exit For] Next [ ] Trong đó biểu thức 1 và biểu thức 2 là hai chỉ số đầu và cuối của biến, biểu thức 2 có thể có giá trị dƣơng hay âm. Step nhằm để tăng hay giảm biến sau mỗi vòng lặp. Nếu không xác định rõ thì Step sẽ có giá trị là 1. Nếu sử dụng câu lệnh Exit For thì khi gặp câu lệnh này máy tính sẽ nhảy ra khỏi vòng lặp. Ví dụ 1: Tính tổng các số từ 1 đến 10 Dim Sum As Integer, i As Integer Sum = 0 For i = 1 to 10 Sum = Sum + i Next i Ví dụ 2: Tính tổng S=1+1/2+1/3+ .+1/(n-1)+1/n Với n là số nguyên dƣơng Dim n as integer Dim i as integer Dim S as Single _45_
  46. Bài giảng Tin học Đại cương n=val(Inputbox(“Nhập giá trị cho n=”)) S=0 For =1 to n S=S+1/i Next i Print “Tong s=”,str(S) 4.13.3. Vòng lặp không xác định Vòng lặp While Vòng lặp UnTil Cú pháp 1: Cú pháp 1: Do While Do UnTil [Exit Do] [Exit Do] Loop Loop Cú pháp 2: Cú pháp 2: Do Do [Exit Do] [Exit Do] Loop While Loop Until Cú pháp 3: While Hoạt động: Vòng lặp UnTilchỉ hoạt động Wend khi điều kiện sai còn thoát khi điều kiện đúng. Hoạt động: Vòng lặp While chỉ hoạt động khi điều kiện đúng còn thoát khi điều kiện Sơ đồ thuật toán cú pháp 1 sai. Sơ đồ thuật toán cú pháp 1 Công việc Đ Công việc Đkiện S Đkiện S Đ _46_
  47. Bài giảng Tin học Đại cương Ví dụ1: Tính tổng các số từ 1 đến 10 „Dùng lệnh While Dim Sum As Integer, i As Integer i=0 Sum=0 Do While i 10 Sum = Sum + i i = i+1 Loop Ví dụ 2: Tìm ƣớc số chung lớn nhất của hai số nguyên dƣơng a,b Dim a as integer, b as integer Dim UCLN as Integer Do a= val(Inputbox(“Nhập giá trị cho a=”)) b= val(Inputbox(“Nhập giá trị cho b=”)) Loop Until a>0 and b>0 Do while a b then a=a-b Else b=b-a end if _47_
  48. Bài giảng Tin học Đại cương Loop UCLN=a Print “ƣớc số chung lớn nhất là:”,str(UCLN) 4.14. Một số ví dụ: Ví dụ 1: Giải và biện luận phƣơng trình ax+b=0 (Dùng Textbox để nhập liệu) Cách 1: Dùng textbox để nhập liệu 1. Thiết kế giao diện 2. Bảng thuộc tính STT Tên đối Thuộc tính Giá trị tƣợng 1 biểu mẫu Name FrmBai1_a Caption Giai bien luan phuong trinh a*x =b :( dung textbox ) 2 Textbox Name Txtnhapa Text 3 Textbox Name Txtnhapb Text 4 Textbox Name Txtkq Text 5 Nút lệnh Name cmdTinhToan Caption tính toán 6 Nút lệnh Name cmdThoat Caption thoát 3. Code lệnh Private Sub CmdTinhToan_Click() _48_
  49. Bài giảng Tin học Đại cương Dim x As Single Dim a As Single Dim b As Single If (Not IsNumeric(Txtnhapa.Text)) Or (Not IsNumeric(Txtnhapb.Text)) Then MsgBox "ban phai nhap a, b la chu so" Exit Sub End If a = Val(Txtnhapa.Text) b = Val(Txtnhapb.Text) If a = 0 Then MsgBox "So a khong duoc la 0" Exit Sub End If x = -b / a Txtkq.Text = a & "*x + " & b & " = " & x End Sub Private Sub CmdThoat_Click() Unload Me End Sub Cách 2: Dùng hàm Inputbox để nhập liệu 1. Giao diện bài toán 2. Bảng thuộc tính STT Tên đối Thuộc tính Giá trị tƣợng 1 biểu mẫu Name FrmBai1_b Caption Giai bien luan phuong trinh a*x =b :( khong dung textbox ) _49_
  50. Bài giảng Tin học Đại cương 2 Textbox Name TxtKq Text 3 Nút lệnh Name cmdTinhToan Caption tính toán 4 Nút lệnh Name cmdThoat Caption thoát 3. Code lệnh Private Sub CmdTinhToan_Click() Dim x As Single Dim a As single Dim b as Single Do While True a = val(InputBox("Nhap so a :")) If IsNumeric(a) Then Exit Do MsgBox "ban phai nhap a la chu so" Loop If a = 0 Then MsgBox "So a khong duoc la 0" Exit Sub End If Do While True b = val(InputBox("Nhap so b :")) If IsNumeric(b) Then Exit Do MsgBox "ban phai nhap b la chu so" Loop x = -b / a txtkq.Text = a & "*x + " & b & " = " & x End Sub Private Sub CmdThoat_Click() Unload Me End Sub _50_
  51. Bài giảng Tin học Đại cương CHƢƠNG 5 HÀM VÀ THỦ TỤC 5.1. Khái niệm chƣơng trình con Trong thực tế khi gặp một vấn đề lớn, phức tạp ngƣời ta không vội vàng giải quyết ngay vấn đề ấy mà tìm cách tách nó thành các vấn đề nhỏ đơn giản hơn. Viêc này tƣơng tự nhƣ trong dây chuyền sản xuất công nghiệp, ngƣời ta chia sản phẩm hoàn chỉnh thành nhiều sản phẩm nhỏ và mỗi nhà máy sẽ sản xuất những sản phẩm nhỏ đó, sau đó ghép lại thành sản phẩm hoàn chỉnh. Tƣơng tự nhƣ vậy trong lập trình, một vấn đề lớn và phức tạp sẽ tƣơng ứng với một chƣơng trình lớn và các vấn đề nhỏ tƣơng ứng với các chƣơng trình nhỏ gọi là các chƣơng trình con (CTC). Đây là ý tƣởng cơ bản của khái niệm lập trình có cấu trúc, làm cho toàn bộ chƣơng trình sáng sủa, dễ hiệu chỉnh, dễ gỡ rối. Việc chia nhỏ chƣơng trình thành các chƣơng trình con (mỗi chƣơng trình con gọi là một Module) gọi là “chia để trị, chia để dễ điều khiển”. Mặt khác, trong khi lập trình có những đoạn chƣơng trình đƣợc lặp đi lặp lại nhiều lần ở nhiều chỗ khác nhau. Để tránh rƣờm rà, viết đi viết lại, những đoạn chƣơng trình này đƣợc thay thế bằng các chƣơng trình con tƣơng ứng, và khi cần ta chỉ việc gọi chƣơng trình con modul đó với các tham số cần thiết mà không phải viết lại cả đoạn chƣơng trình ấy. Ví dụ: khi làm các bài toán lƣợng giác, thƣờng xuyên ta cần tính SIN của một góc nào đó, nhƣ vậy ta nên lập một chƣơng trình con có tên là SIN với tham số cần thiết là độ lớn của góc x. Tóm lại: Chƣơng trình con là một chƣơng trình đƣợc viết theo những quy tắc đặc biệt để có thể đƣợc gọi thực hiện trong một chƣơng trình khác. Chƣơng trình con giúp cho ngƣời lập trình có những thuận lợi sau: + Việc thử nghiệm, hiệu chỉnh, gỡ rối dễ dàng hơn. + Thực hiện nguyên tắc "Viết một lần dùng nhiều lần, một người viết nhiều người dùng". 5.2. Hàm và thủ tục Hàm (Function): là một CTC dùng để tính một giá trị nào đó và trả lại giá trị đó thông qua tên hàm, ví dụ hàm SIN cho giá trị SIN của x thông qua SIN(x). Thủ tục (Sub): là một CTC dùng để thực hiện một công việc riêng biệt trên một tập hợp các tham số (hoặc không cần các tham số). Sự khác nhau cơ bản và duy nhất của hai loại CTC này là hàm trả lại giá trị thông qua tên hàm và do đó đƣợc sử dụng trong biểu thức, thủ tục thì không trả lại kết quả thông qua tên của nó nên các thủ tục không thể viết trong các biểu thức. _51_
  52. Bài giảng Tin học Đại cương Cấu trúc tổng quát của một hàm và thủ tục: Function Tên_hàm(danh sách các tham số) As Kiểu_ dữ_ liệu „Các lệnh trong thân hàm Tên_hàm=biểu thức giá trị End Function Sub Tên_thủ_ tục(danh sách các tham số) „Các lệnh trong thân thủ tục End Sub Giải thích: Các tham số sau tên hàm và tên thủ tục chính là các giá trị đƣợc truyền cho hàm hoặc thủ tục khi chúng đƣợc gọi. Các tham số này là các tham số hình thức hay còn gọi là đối số. Đây là tùy chọn, nghĩa là trong lập trình ngƣời ta có thể dùng CTC không có tham số, điều đó chỉ cốt giúp cho lập trình sáng sủa, dễ đọc. Cách xây dựng hàm và thủ tục trong Visual Basic: Để tạo hàm và thủ tục ta làm nhƣ sau: Mở cửa sổ lệnh (Code) Chọn menu Tool Chọn Add Procedure. Hộp hội thoại Add Procedure xuất hiện: Xác định tên hàm hoặc thủ tục trong hộp Name Chọn Function hoặc Sub để xác định kiểu của CTC là hàm hay thủ tục Chọn Private để xác định CTC là cục bộ trong một biểu mẫu hoặc Pubilc để xác định CTC có tác dụng trong toàn bộ chƣơng trình. Chọn OK _52_
  53. Bài giảng Tin học Đại cương Xuất hiện một trong hai mẫu sau: (giả sử chọn phạm vi là Private ở trên) Private Function Tên_hàm() As Kiểu_ dữ_ liệu End Function Private Sub Tên_thủ_ tục() End Sub Ví dụ: Viết hàm tìm giá trị lớn nhất trong ba số a, b, c Private Function Max(a As Single, b As Single, c As Single) As Single Dim ketqua As Single ketqua=a If ketqua<b Then ketqua=b End If If ketqua<c Then ketqua=c End If Max= ketqua End Function Ví dụ: Viết thủ tục đổi giá trị trong hai biến a và b Private Sub Doi(a As Single,b As Single) Dim tg As Single tg=a a=b b=tg End Sub 5.3. Truyền tham số cho chƣơng trình con Để sử dụng hàm hoặc thủ tục ta chỉ việc viết lời gọi chúng và truyền vào các tham số thực sự (các giá trị cụ thể) thay thế cho các tham số hình thức khai báo trong tiêu đề của CTC. _53_
  54. Bài giảng Tin học Đại cương Cú pháp: Lời gọi hàm Tên_Hàm(Danh sách tham số thực sự) Chú ý: hàm phải luôn đƣợc gọi trong biểu thức. Lời gọi thủ tục: Call Tên_thủ_tục(Danh sách các tham số thực sự) Hoặc: Tên_thủ_tục Danh sách các tham số thực sự Lời gọi hàm thƣờng đặt trong biểu thức để tham gia vào quá trình tính giá trị của biểu thức. Lời gọi thủ tục thƣờng đƣợc viết trong một chƣơng trình chính nhƣ một câu lệnh độc lập. Ví dụ: Khi tính giá trị biểu thức S theo x, a, b trong đó có sử dụng hàm SIN và COS. Ta gọi hàm này trong chƣơng trình chính nhƣ sau: S= 2*x^2 + cos(a) – sin(b) Khi xây dựng xong thủ tục DOI thực hiện việc kiểm tra hai số x và y, nếu x>y thì tráo đổi giá trị x và y cho nhau. Trong chƣơng trình chính ta gọi thủ tục ấy nhƣ sau Call Doi(x,y) Hoặc Doi x,y Việc chuyển tham số cho chƣơng trình con là một cơ cấu thay thế tƣơng ứng, nó cho phép một quá trình có thể lặp đi lặp lại nhiều lần với các toán hạng khác nhau. Ví dụ: Call Doi(x,y) sẽ thay thế x vào vị trí của a, y vào vị trí của b, tƣơng tự với Call Doi(c,d). Số lƣợng các tham số thực sự phải bằng số lƣợng các tham số hình thức, trừ những trƣờng hợp tham số hình thức đƣợc chỉ định với tùy chọn Optional. Kiểu của tham số thực sự phải phù hợp với kiểu của tham số hình thức tƣơng ứng. Có hai cách truyền tham số cho chƣơng trình con: tham trị và tham biến a) Chuyển tham số bằng biến (tham biến): Tham số hình thức trong phần tiêu đề của CTC sẽ đƣợc đặt sau từ khóa ByRef (mặc định). Ví dụ: Sub Doi(ByRef a as Single, ByRef b as Single) _54_
  55. Bài giảng Tin học Đại cương Hoặc Sub Doi(a as Single, b as Single) Các tham số thực sự là các tham biến thì giá trị của nó có thể đƣợc thay đổi trong CTC. Ví dụ: Sub Doi(a As Single, b As Single, c As Single) Dim tg As Single tg=a a=b b=tg MsgBox “Trong CTC a = ” + Str(a) + “ ; b = ” + Str(b) End Sub Private Sub CmdChayCT_Click() Dim a As Single, b As Single a = 2 b = 3 MsgBox “CTC có tham biến” MsgBox “Truoc khi goi CTC a = ” + Str(a) + “ ; b = ” + Str(b) Call Doi(a,b) MsgBox “Sau khi goi CTC a = ” + Str(a) + “ ; b = ” + Str(b) End Sub Kết quả là: CTC có tham biến Truoc khi goi CTC a = 2 ; b = 3 Trong CTC a = 3 ; b = 2 Sau khi goi CTC a = 3 ;b = 2 b) Chuyển tham số bằng giá trị (tham trị) Tham số hình thức trong phần tiêu đề của CTC sẽ đƣợc đặt sau từ khóa ByVal. Ví dụ: Sub Doi(ByVal a as Single, ByVal b as Single) _55_
  56. Bài giảng Tin học Đại cương Khi này các tham số hình thức tƣơng ứng nhận giá trị của tham số thực nhƣ là giá trị ban đầu vào thời điểm thay vào CTC. CTC sau đó có thể thay đổi giá trị của các tham trị này bên trong CTC bằng phép gán, song nó sẽ không làm thay đổi giá trị của tham số thực. Ví dụ: Sub Doi(ByVal a as Single, ByVal b as Single) Dim tg As Single tg=a a=b b=tg MsgBox “Trong CTC a = ” + Str(a) + “ ; b = ” + Str(b) End Sub Private Sub CmdChayCT_Click() Dim a As Single, b As Single a = 2 b = 3 MsgBox “CTC có tham trị” MsgBox “Truoc khi goi CTC a = ” + Str(a) + “ ; b = ” + Str(b) Call Doi(a,b) MsgBox “Sau khi goi CTC a = ” + Str(a) + “ ; b = ” + Str(b) End Sub Kết quả là: CTC có tham trị Truoc khi goi CTC a = 2 ; b = 3 Trong CTC a = 3 ; b = 2 Sau khi goi CTC a = 2 ;b = 3 5.4. Biến toàn cục, biến địa phƣơng, khái niệm tầm tác dụng Visual Basic 6 là ngôn ngữ lập trình thủ tục, hƣớng sự kiện. Tập hợp các thủ tục, biến cố, các hàm liên quan đến một biểu mẫu đƣợc gọi là đơn thể chƣơng trình biểu mẫu. Tập hợp các thủ tục, biến cố, các hàm không liên quan đến một biểu mẫu đƣợc gọi là đơn thể chƣơng trình độc lập. Tập hợp thủ tục, hàm biến cố liên quan đƣợc đặt trong các _56_
  57. Bài giảng Tin học Đại cương modul hoặc các đơn thể riêng. Một đơn thể có thể liên quan đến một biểu mẫu hoặc không liên quan đến một biểu mẫu nào cả. Một biến có thể đƣợc khai báo bên trong một thủ tục/hàm hay khai báo ở phần đầu của đơn thể lập trình, trong phần khai báo General. Đối với các biến khai báo trong thủ tục hoặc hàm ta dùng từ khóa Dim, khi đó các biến này chỉ có tác dụng trong hàm hoặc thủ tục đó, khi ra khỏi hàm và thủ tục, biến sẽ mất tác dụng. Biến kiểu này đƣợc gọi là biến địa phƣơng (hay biến cục bộ). Đối với các biến khai báo trong các đơn thể chƣơng trình ta có thể dùng các từ khóa Private, Dim, Public, Global. Nếu dùng từ khóa Private hoặc Dim, biến sẽ chỉ có tác dụng trong đơn thể chƣơng trình đó, tức là nó có thể đƣợc sử dụng cho các hàm và thủ tục nằm trong đơn thể đó. Nếu dùng từ khóa Public hoặc Global thì biến có phạm vi tác dụng trong toàn bộ chƣơng trình, nghĩa là nó có thể đƣợc sử dụng trong các đơn thể chƣơng trình của dự án, trong tất cả các hàm và thủ tục của các đơn thể ấy. Khi đó ngƣời ta nói biến có phạm vi toàn cục. Hình dƣới đây sẽ cho ta thấy vị trí của khai báo biến: Biến cấp độ modul Biến cấp độ procedure Lƣu ý: Ở các CTC khác nhau, ở các mức độ khai báo khác nhau, ta có thể khai báo một biến có cùng tên với biến ở CTC khác, mức độ khai báo khác. Tên biến khi này không phải là một biến duy nhất mà là các biến khác nhau với tác dụng khác nhau. Ví dụ trong CTC A có biến địa phƣơng X và trong CTC B có biến địa phƣơng cũng tên là X. Lúc đó, máy sẽ dùng hai ô nhớ khác nhau để lƣu trữ hai biến, khi ra khỏi CTC A, biến địa phƣơng X trong CTC A mất tác dụng và khi ra khỏi CTC B, biến địa phƣơng X trong B mất tác dụng. Nếu một biến đƣợc khai báo với từ khóa Static thì biến đó có phạm vi tác động toàn cục dù nó đƣợc khai báo trong hàm hoặc thủ tục. Khi gọi CTC, sau mỗi lần sử dụng giá _57_
  58. Bài giảng Tin học Đại cương trị của biến sẽ đƣợc nhớ lại và thoát khỏi CTC, giá trị của nó sẽ giữ nguyên giá trị nhận đƣợc trong CTC. Ví dụ: Fuction Cong(Number) Static SoLuong SoLuong= SoLuong + Number Cong = SoLuong End Function Với đoạn chƣơng trình trên, sau mỗi lần gọi hàm, khi thoát khỏi hàm Cong, biến SoLuong vẫn giữ lại giá trị của mình. Phạm vi và tầm tác dụng của CTC tƣơng tự nhƣ đối với biến. Không dùng từ khóa Dim khi đặt phạm vi tác dụng của CTC, có thể sử dụng các từ khóa Private, Public. _58_
  59. Bài giảng Tin học Đại cương CHƢƠNG 6 DỮ LIỆU CÓ CẤU TRÚC KIỂU MẢNG 6.1. Khái niệm về mảng Mảng là một tập hợp hữu hạn các phần tử có cùng tên, cùng kiểu dữ liệu. Giữa các phần tử của mảng đƣợc phân biệt với nhau qua số thứ tự của các phần tử hay còn gọi là chỉ số của các phần tử. Số phần tử của mảng có thể đƣợc xác định ngay từ khi khai báo mảng (trong mảng tĩnh) hoặc có thể thêm các phần tử trong quá trình xử lý (với mảng động). Mảng có biên trên và biên dƣới, các thành phần trong mảng là liên tục giữa hai biên. Trong trƣờng hợp bài toán có nhiều giá trị tƣơng tự nhau, thí dụ nhƣ trong bài toán cần quản lý điểm thi của một sinh viên, nếu phải đặt tên khác nhau cho từng biến (thí dụ: SV_mon1, SV_mon2, SV_mon3, SV_mon4, SV_mon5 ) Khi đó phải đặt mỗi tên cho 1 môn học thì khá bất tiện trong quá trình xử lý. Để thuận tiện trong quá trình xử lý có thể dùng một tên chung cho tất cả các môn học, rồi nói đến điểm của từng môn một bằng cách dùng một con số gọi là chỉ mục. Khi đó nhóm các điểm trên đƣợc gọi là 1 mảng lƣu các giá trị điểm thi của sinh viên. Muốn truy cập đến một phần tử nào của mảng ta viết nhƣ sau: .(Chỉ số) 6.2. Khai báo mảng tĩnh Mảng tĩnh là mảng có số phần tử đƣợc xác định ngay từ khi khai báo mảng và số phần tử này không thay đổi trong chƣơng trình. 6.2.1. Khai báo mảng 1 chiều Để khai báo mảng 1 chiều có 2 cách Cách 1 : DIM Ten_mang(n) As Kiểu_dữ_liệu Trong đó: n là số nguyên dùng để chỉ số lƣợng các phần tử trong mảng. Nếu khai báo nhƣ trên ta sẽ thu đƣợc mảng gồm n+1 phần tử và phần tử đầu tiên có chỉ số là 0, phần tử cuối cùng có chỉ số là n. Quay lại với bài toán trên giả sử ta cần lƣu điểm của 1 sinh viên trong 1 học kì với số môn học là 10. Khi đó ta sẽ khai báo Dim StudentMarks(9) as Integer Kế đó cần nhập điểm của sinh viên bằng cách viết StudentMarks(i), mà i là chỉ mục i<9. Giả dụ ta muốn nhập tất cả điểm của sinh viên StudentMarks(0) = 6 „ Diem mon hoc 1 _59_
  60. Bài giảng Tin học Đại cương StudentMarks(1) = 6 ' Diem mon hoc 2 StudentMarks(2) = 7 StudentMarks(3) = 5 StudentMarks(4) = 9 StudentMarks(5) = 6 StudentMarks(6) = 8 StudentMarks(7) = 9 StudentMarks(8) = 10 StudentMarks(9) = 6 „ Diem mon hoc 10 Cách 2 : DIM Ten_mang(chỉ số đầu TO chỉ số cuối) As Kiểu_dữ_liệu Khi khai báo theo cách 2 ta thu đƣợc mảng có số phần tử: n = (chỉ số cuối - chỉ số đầu) +1. Lƣu ý: Với phần tử đầu có chỉ số bằng chỉ số đầu, phần tử cuối có chỉ số bằng chỉ số cuối. Quay lại với bài toán nếu ta khai báo mảng để lƣu trữ điểm 10 môn học ta khai báo: Dim StudentMarks(1 to 10) AS Integer Khi đó điểm môn 1 sẽ đƣợc gán vào StudentMarks(1), điểm môn 10 sẽ đƣợc gán vào StudentMarks(10). 6.2.2. Khai báo mảng nhiều chiều Khi làm việc với giá trị các phần tử của một ma trận n chiều cách đơn giản nhất là khai báo một mảng có số chiều tƣơng ứng. Để khai báo một mảng gồm n chiều ta thực hiện theo 1 trong 2 cách sau: Cách 1 : Dim Tên_mảng (n1, n2, n3, ,nm) As Kiểu_dữ_liệu Với n1+1 là số phần tử của chiều 1 Với n2+1 là số phần tử của chiều 2 Với nm+1 là số phần tử của chiều thứ m Ví dụ: khi khai báo mảng 2 chiều có tên Ma_Tran Dim Ma_Tran(4,5) As Integer _60_
  61. Bài giảng Tin học Đại cương Khi đó ta sẽ thu đƣợc mảng 2 chiều với số phần tử lần lƣợt là 5 và 6. Tổng số phần tử lúc này là 5*6=30 phần tử Để gán giá trị cho phần tử có chỉ số hàng là 3, chỉ số cột là 4 ta thực hịên: Ma_Tran(3,4) =10 Cách 2 : Dim Tên_mảng ( a1 to b1,a2 to b2, ,am to bm ) As Kiểu_dữ_liệu a1 và b1 lần lƣợt là chỉ số phần tử đầu và cuối chiều 1 a2 và b2 lần lƣợt là chỉ số phần tử đầu và cuối chiều 2 am và bm lần lƣợt là chỉ số phần tử đầu và cuối chiều m Khi đó tổng số phần tử trong mảng lúc này là: n= (b1-a1+1)*(b2-a2+1)* *(bm- am+1) 6.3. Khai báo mảng động (Dynamic Array) Mảng động là mảng có các phần tử trong mảng không đƣợc xác định trƣớc, trong quá trình xử lý, số lƣợng các phần tử của mảng mới đƣợc khai báo hoặc các phần tử trong mảng có thể bổ xung thêm phù hợp với các yêu cầu của bài toán. Để khai báo một mảng động ta khai báo : DIM Ten_mang() As Kiểu_dữ_liệu Vì không để một con số ở giữa hai dấu ngoặc đơn nên VB6 biết là dùng mảng động và số phần tử của nó có thể sẽ thay đổi trong tƣơng lai. Khi nào muốn thay đổi số phần tử của mảng động dùng ReDim: ReDim Ten_mang(n) Hoặc ReDim Preserve Ten_mang(m) Với từ khoá ReDim VB6 sẽ khởi tạo lại tất cả các giá trị phần tử của mảng (nếu chúng đã tồn tại) khi đó giá trị sẽ đƣợc gán=0 với tất cả các phần tử kiểu số, gán=“” với các phần tử kiểu xâu. Với từ khoá ReDim Preserve khi đó VB6 chỉ thêm vào mảng phần tử mới và giá trị các phần tử cũ đã tồn tại trong mảng vẫn không đổi. Ví dụ: Dim Matrix () As Integer „ Khai báo mảng Matrix là mảng động ReDim Matrix(5) „ Gán mảng Matrix là mảng có 6 phần tử _61_
  62. Bài giảng Tin học Đại cương ReDim Matrix(6) „ Gán mảng Matrix là mảng có 7 phần tử và các phần „ tử trong mảng đều bị gán =0 ReDim Preserve Matrix (7) „ Mở rộng Matrix là mảng có 8 phần tử trong đó các „ phần tử cũ của mảng vẫn giữ nguyên giá trị. Phần tử „ thứ 8 đƣợc thêm vào sẽ đƣợc gán =0 6.4. Một số thuật toán về mảng Dạng 1: Tìm giá trị lớn nhất hoặc nhỏ nhất trong mảng Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Tìm giá trị lớn nhất trong mảng. In kết quả ra màn hình. Yêu cầu: Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button, để thiết kế giao diện bài toán Viết mã lệnh bài toán. Hƣớng dẫn: Thiết kế giao diện Kết Quả txtKQ Xử Lý Thoát cmdXuLy cmdThoat Mã lệnh bài toán. Private Sub cmdThoat_Click() End End Sub Private Sub cmdXuLy_Click() Dim i As Integer, n As Integer, max As Integer Dim a(1 To 100) As Integer Do n = Val(InputBox("Nhap n = ")) _62_
  63. Bài giảng Tin học Đại cương Loop Until n > 0 And n max Then max = a(i) End If Next i txtKQ.Text = "Gia Tri Lon Nhat = " + Str(max) End Sub Dạng 2: Sắp xếp các phần tử của mảng theo thứ tự tăng hoặc giảm dần Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Sắp xếp các phần tử trong mảng theo thứ tự giảm dần. In kết quả ra màn hình. Yêu cầu: Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button, để thiết kế giao diện bài toán Viết mã lệnh bài toán. Hƣớng dẫn: Thiết kế giao diện Kết Quả txtKQ Xử Lý Thoát cmdXuLy cmdThoat Mã lệnh bài toán. Private Sub cmdThoat_Click() End End Sub Private Sub cmdXuLy_Click() _63_
  64. Bài giảng Tin học Đại cương Dim i As Integer, j As Integer, n As Integer, tg As Integer Dim a(1 To 100) As Integer Do n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n <= 100 For i = 1 To n a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i 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 j Next i txtKQ.Text = "" For i = 1 to n txtKQ.Text = txtKQ.Text + Str(a(i)) + “;” Next i End Sub Dạng 3: Chèn một phần tử b vào vị trí k của mảng Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Chèn số b vào vị trí thứ k trong mảng. In kết quả ra màn hình. Yêu cầu: Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button, để thiết kế giao diện bài toán Viết mã lệnh bài toán. Hƣớng dẫn: Thiết kế giao diện _64_
  65. Bài giảng Tin học Đại cương Kết Quả txtKQ Xử Lý Thoát cmdXuLy cmdThoat Mã lệnh bài toán. Private Sub cmdThoat_Click() End End Sub Private Sub cmdXuLy_Click() Dim i As Integer, b As Integer, k As Integer, n As Integer Dim a(1 To 100) As Integer Do n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n 0 And k <= n For i = n To k Step -1 a(i+1) = a(i) Next i a(k) = b n = n + 1 txtKQ.Text = "" For i = 1 to n txtKQ.Text = txtKQ.Text + Str(a(i)) + “;” _65_
  66. Bài giảng Tin học Đại cương Next i End Sub Dạng 4: Xoá đi phần tử ở vị trí thứ k của mảng Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Xóa đi phần tử ở vị trí thứ k trong mảng. In kết quả ra màn hình. Yêu cầu: Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button, để thiết kế giao diện bài toán Viết mã lệnh bài toán. Hƣớng dẫn: Thiết kế giao diện Kết Quả txtKQ Xử Lý Thoát cmdXuLy cmdThoat Mã lệnh bài toán. Private Sub cmdThoat_Click() End End Sub Private Sub cmdXuLy_Click() Dim i As Integer, k As Integer, n As Integer Dim a(1 To 100) As Integer Do n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n <= 100 For i = 1 To n a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i Do k = Val(InputBox(“Nhap k = ”)) _66_
  67. Bài giảng Tin học Đại cương Loop Until k > 0 And k <= n For i = k To n - 1 a(i) = a(i+1) Next i n = n - 1 txtKQ.Text = "" For i = 1 to n txtKQ.Text = txtKQ.Text + Str(a(i)) + “;” Next i End Sub Dạng 5: Một số bài toán khác về mảng Ví dụ: Nhập vào một mảng số nguyên gồm n phần tử. Tính trung bình cộng của các phần tử chia hết cho 3 trong mảng. In kết quả ra màn hình. Yêu cầu: Sử dụng các đối tƣợng Form, Lable, Textbox, Command Button, để thiết kế giao diện bài toán Viết mã lệnh bài toán. Hƣớng dẫn: Thiết kế giao diện Kết Quả txtKQ Xử Lý Thoát cmdXuLy cmdThoat Mã lệnh bài toán. Private Sub cmdThoat_Click() End End Sub Private Sub cmdXuLy_Click() Dim i As Integer, n As Integer, tbc As Single, dem As Integer Dim a(1 To 100) As Integer _67_
  68. Bài giảng Tin học Đại cương Do n = Val(InputBox("Nhap n = ")) Loop Until n > 0 And n <= 100 For i = 1 To n a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = ")) Next i tbc = 0 d = 0 For i = 1 To n If a(i) MOD 3 = 0 Then tbc = tbc + a(i) d = d + 1 End If Next i If d = 0 Then txtKQ.Text = "Mang khong ton tai phan tu nao chia het cho 3" Else tbc = tbc/dem txtKQ.Text = “TBC = ” + Str(dem) End If End Sub _68_