• Các hệ đếm: thập phân, nhị phân, thập lục phân, chuyển đổi giữa các hệ đếm.• Bộ mã Ascii.. •Trong phạm vi chương trình này chỉ nghiên cứu các hệ đếm nhị phân, thập phân và thập lục ph
Trang 1Lập trình VISUAL BASIC
Chương 1 TỔNG QUAN VỀ LẬP TRÌNH TRÊN MÁY TÍNH
Chương 2 GIỚI THIỆU VỀ VISUAL BASIC
Chương 3 THIẾT KẾ GIAO DIỆN TRONG LẬP TRÌNH VB
Chương 4 CÁC CẤU TRÚC ĐIỀU KHIỂN
Chương 5 TÌM VÀ SỬA LỖI MÃ VISUAL BASIC.
Chương 6 CHƯƠNG TRÌNH CON
Chương 7 CẤU TRÚC MẢNG
Chương 8 KIỂU DỮ LIỆU: CHUỖI
Khoa Công nghệ Thông tin Đại học Sư phạm Kỹ thuật TP.HCM
Trang 2Chương 1
Khoa Công nghệ Thông tin Đại học Sư phạm Kỹ thuật TP.HCM
Trang 3• Các hệ đếm: thập phân, nhị phân, thập lục phân, chuyển đổi giữa các hệ đếm.
• Bộ mã Ascii.
• Các khái niệm cơ bản: lệnh, chương trình, chương trình nguồn, chương trình đích
• Khái niệm thuật toán.
• Biểu diễn thuật toán dưới dạng mã giả (ngôn ngữ tự
nhiên).
Trang 5Giới thiệu
•Các hệ đếm sử dụng trong máy tính.
- Nhị phân (Binary) - cơ số b = 2
- Thập phân (Decimal) - cơ số b = 10
- Bát phân (Octave) - cơ số b = 8.
- Thập lục phân (Hexadecimal) - cơ số b = 16.
•Trong phạm vi chương trình này chỉ nghiên cứu các hệ đếm
nhị phân, thập phân và thập lục phân.
Trang 7
1100.111b = 1*23 + 1*22 +0*21 +0*20 +1*2-1 +1*2-2 +1*2-3
Qui tắc đếm : 00, 01, 10, 11, 100, …
Trang 9Chuyển đổi giữa các hệ đếm
•Chỉ nghiên cứu chuyển đổi các số nguyên.
•Bảng chuyển đổi các số cơ sở.
Trang 10Chuyển đổi giữa các hệ đếm
Chuyển số từ hệ thập phân sang hệ nhị phân
- Lấy số dư trong phép chia nguyên số cần chuyển đổi cho
số dư
Trang 11Chuyển đổi giữa các hệ đếm
Chuyển số từ hệ thập phân sang hệ thập lục phân
- Lấy số dư trong phép chia nguyên số cần chuyển đổi cho 16.
Nếu số dư lớn hơn 10 chuyển thành số thập lục phân tương
ứng
(Tham khảo bảng chuyển đổi số cơ sở).
- Ghép các số dư theo thứ tự ngược (số dư cuối số dư đầu).
- Phép chia nguyên dừng lại khi kết quả bằng không.
Chia nguyên cho 16 Số dư
số dư
Trang 12Chuyển đổi giữa các hệ đếm
Chuyển số từ hệ nhị phân sang hệ thập phân.
- Viết ra biểu diễn số nhị phân cần đổi.
- Tính giá trị của biểu diễn này
VD : 10100110B → ?
10100110B → 1*27 + 0*26 + 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 0*20 = 166 (128) (32) (4) (2)
Kết quả : 10100110B → 166
Trang 13Chuyển đổi giữa các hệ đếm
Chuyển số từ hệ thập lục phân sang hệ thập phân.
- Viết ra biểu diễn số thập lục phân cần đổi.
- Tính giá trị của biểu diễn này
Trang 14Chuyển đổi giữa các hệ đếm
Chuyển số từ hệ thập lục phân sang hệ nhị phân và ngược lại.
Binary(B) → Hexadecimal(H) :
•Phân các ký số B thành các nhóm 4 ký số từ phải sang trái.
•Thêm các số 0 bên trái nhóm cuối nếu thiếu cho đủ 4 ký số.
•Dựa vào bảng chuyển đổi số cơ sở đổi các nhóm này thành số H.
Trang 15Bảng mã Ascii
Bảng mã ASCII : sử dụng 8 bit (1 Byte) biểu diễn 1 ký tự
Số ký tự (1 trạng thái của 8 bit biểu diễn 1 ký tự):
Trang 16Bảng mã Ascii
Một phần bảng mã ASCII
Trang 17Các khái niệm cơ bản
Lệnh.
Chương trình.
Chương trình nguồn Chương trình đích.
Trang 18Operand (Toán hạng) : phần thêm vào của User (hoặc bỏ qua) định hướng hoạt
động của lệnh và phải theo đúng qui định.
Trang 19Chương trình
•Chương trình : tập hợp các lệnh (theo 1 thứ tự nhất định).
•Thực thi chương trình :
-Trái sang phải.
-Trên xuống dưới.
-Kết thúc khi hết lệnh (hoặc lệnh kết thúc của NNLT)
Ví dụ : 2 đoạn CT sau sẽ cho kết quả khác nhau.
Đoạn CT2:
Lệnh 3 Lệnh 1 Lệnh 2
Đoạn CT1:
Lệnh 1 Lệnh 2 Lệnh 3
Trang 20Chương trình nguồn
•Chương trình nguồn - mã nguồn (Source code) :
- Dãy lệnh (câu lệnh) dạng text theo đúng qui định
(cú pháp - Syntax) của ngôn ngữ lập trình.
- Được tạo ra bằng công cụ soạn thảo chương trình nguồn của
ngôn ngữ lập trình (hoặc công cụ soạn thảo chương trình nguồn
được ngôn ngữ lập trình chấp nhận).
- Lưu trong 1 hoặc nhiều File.
- Không thực thi trực tiếp.
Trang 21•Chương trình nguồn Visual Basic
Trang 22Chương trình đích
•Mã máy-lệnh máy (machine code)
- Lệnh được biểu diễn bằng các số nhị phân(0 và 1).
Trang 23Khái niệm
Ví dụ.
Khái niệm thuật toán
Trang 24THUẬT TOÁN = Dãy hữu hạn các thao tác tìm được
Chú ý : với 1 vấn đề, bài toán có thể có nhiều thuật toán khác nhau
Trang 25Ví dụ tìm thuật toán.
Bài toán, vấn đề
Áp dụng các qui tắc xác định
trên các đối tượng.
(Cách giải thông thường)
Các bước thực hiện
Kiểm tra thuật toán.
(chạy thử các bước với giá trị cụ thể)
Ví dụ : GPT ax + b =0; a<>0
(Giá trị a<>0, b chưa biết)
Áp dụng các qui tắc toán học trên các đối tượng x, a, b.
-2 Kết thúc
Trang 26Biểu diễn thuật toán dưới dạng mã giả (ngôn ngữ tự nhiên).
Biểu diễn thuật toán dưới dạng lưu đồ.
Biểu diễn thuật toán
Trang 27Biểu diễn thuật toán dưới dạng mã giả
- Trình bày thuật toán.
- Dựa vào đây để viết ra chương trình
nguồn.
Trang 28Giải phương trình ax2 + bx + c = 0; a<>0 Cho biết số ngày của tháng cụ thể trong năm
Tính tổng S=1+2+…+n; n>0
Kiểm tra n nguyên, dương là số nguyên tố Cho n nguyên, dương In các số nguyên tố
<=n.
Tìm USCLN của 2 số nguyên, dương A, B
Phân tích số n nguyên, dương thành các thừa số nguyên tố
Các ví dụ
Trang 29Giải phương trình ax2 + bx + c = 0; a<>0
Trang 30Cho biết số ngày của tháng cụ thể trong năm.
Giải thuật : Bắt đầu Nhập tháng, năm (nguyên, >0) Nếu tháng = 1, 3, 5, 7, 8, 10, 12
songay = 31 Nếu tháng = 4, 6, 9, 11 songay = 30
Nếu tháng = 2
du = nam mod 4 Nếu du = 0
songay = 29 Nếu du = 1, 2, 3
songay = 28
In songay Kết thúc
Cơ sở giải thuật :
Nếu thang = 2
- Nếu năm nhuận
(nam mode 4 = 0) songay =
29
- Nếu năm thường
(nam mode 4 <> 0) songay =
28
- Các tháng còn lại có số ngày
theo
cách tính thông thường
Trang 31Cho biết số ngày của tháng cụ thể trong năm.
Giải thuật : Bắt đầu Nhập tháng, năm (nguyên, >0) Nếu tháng = 1, 3, 5, 7, 8, 10, 12
songay = 31 Nếu tháng = 4, 6, 9, 11 songay = 30
Nếu tháng = 2
du = (nam mod 400=0) OR (nam mod 4=0 và nam mod 100<>0)
Nếu du = Đ
songay = 29 ngược lại
songay = 28
In songay Kết thúc
Cơ sở giải thuật :
Nếu thang = 2
- Nếu năm nhuận
(nam mod 400 = 0)hoặc
(nam mod 4=0 và nam mod 100<>0) songay
= 29
- Nếu năm thường
(nam mode 4 <> 0) songay = 28
- Các tháng còn lại có số ngày theo
cách tính thông thường
Trang 33Kiểm tra n nguyên, dương là số nguyên tố.
Cơ sở giải thuật :
- Kiểm tra ước số của n từ 2 → t (n-1, [n/2],
)
- Nếu không tìm thấy US, n là số nguyên tố
Trang 34
Cho n nguyên, dương In các số nguyên tố <=n
Cơ sở giải thuật :
- Kiểm tra các số từ 1 → n là số nguyên tố ?
- Nếu là số nguyên tố, in ra (giải thuật KT số nguyên tố tham khảo bài
trước)
Giải thuật : Bắt đầu Nhập n (nguyên, >0)
s = "" (s - chuỗi rỗng) Lặp với i = 1, 2, , n
k = 2 Lặp với đk (k < i) và (i mod k <> 0)
k = k + 1
KT lặp đk (k < i) và (i mod k <> 0) Nếu k = i
Đổi số i thành chuỗi và cho vào s (In i)
KT lặp i
In s Kết thúc
Trang 35Tìm USCLN của 2 số nguyên, dương A, B
Giải thuật : Bắt đầu Nhập A, B (nguyên, >1) Lặp với đk (A <> B)
Nếu A > B
A = A - B Ngược lại (A <= B)
B = B - A
KT lặp đk (A <> B) Nếu A <> 1
In A Ngược lại
In "Khong co USCLN" Kết thúc
Cơ sở giải thuật : (Euclid)
Trang 36Phân tích số nguyên, dương n thành các thừa số nguyên tố
Cơ sở giải thuật :
- Nếu n có k (bắt đầu với k = 2) là thừa số thì ki không là thừa số (bị
loại)
- Do đó trong quá trình phân tích chỉ có các thừa số nguyên tố.
Ví dụ : n = 24 → n = 2*2*2*3; không thể phân tích n = 2*3*4,
Giải thuật : Nhập n (nguyên, > 1)
s = “” (chuỗi rỗng)
k = 2 Lặp với đk (k <= n)
Nếu k là thừa số của n.
Giữ lại thừa số trong s.
Tính lại n (n chia nguyên thừa số)
Ngược lại k = k + 1.
KT lặp với đk (k <= n)
In s Kết thúc
Trang 37Phân tích số nguyên, dương n thành các thừa số nguyên tố
- Giữ lại thừa số trong s.
- Tính lại n (n chia nguyên thừa số)
KT lặp với đk (n > 1)
In s Kết thúc
Cơ sở giải thuật :
- Nếu n có k (bắt đầu với k = 2) là thừa số thì ki không là thừa số (bị
loại)
- Do đó trong quá trình phân tích chỉ có các thừa số nguyên tố.
Ví dụ : n = 24 → n = 2*2*2*3; không thể phân tích n = 2*3*4,
Giải thuật : Nhập n (nguyên, > 1)
s = “” (chuỗi rỗng)
k = 2 Lặp với đk (n > 1)
Trang 38Bài tập
1 Chuyển số từ hệ thập phân sang hệ nhị phân.
2 Chuyển số từ hệ thập phân sang hệ thập lục phân.
3 Chuyển số từ hệ nhị phân sang hệ thập phân.
4 Chuyển số từ hệ thập lục phân sang hệ thập phân.
5 Chuyển số từ hệ nhị phân sang hệ thập lục phân.
6 Chuyển số từ hệ thập lục phân sang hệ nhị phân.
Trang 39Bài tập
1 Chuyển số từ hệ thập phân sang hệ nhị phân.
- Lấy số dư trong phép chia nguyên số cần chuyển đổi cho 2.
- Ghép các số dư theo thứ tự ngược (số dư cuối số dư đầu).
- Phép chia nguyên dừng lại khi kết quả bằng không.
Nhập n
S=“”
Lặp với đk (n>0)
s = lấy phần dư của n chia 2 nối với s
n = n chia nguyên cho 2
KT lặp
In s
Nhập n S=“”
Trang 40Bài tập
2 Chuyển số từ hệ thập phân sang hệ thập lục phân.
- Lấy số dư trong phép chia nguyên số cần chuyển đổi cho 16.
Nếu số dư lớn hơn 10 chuyển thành số thập lục phân tương ứng
(Tham khảo bảng chuyển đổi số cơ sở).
- Ghép các số dư theo thứ tự ngược (số dư cuối số dư đầu).
- Phép chia nguyên dừng lại khi kết quả bằng không.
Trang 41Bài tập
Giải thuật tính đa thức.
dt = an*xn + an-1*xn-1 + a1*x + a0 ( … ((an*x + an-1)*x + an-2)*x + … + a1)*x + a0
Nhập x, an , … , a0
dt = 0 Lặp với i = n, ,0
dt = dt*x + ai
KT lặp
In dt
Trang 42Bài tập
3 Chuyển số từ hệ nhị phân sang hệ thập phân.
- Viết ra biểu diễn số nhị phân cần đổi.
10100110B → 1*27 + 0*26 + 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 0*20 ((((((1*2 + 0)*2 + 1)*2 + 0)*2 + 0)*2 + 1)*2 + 1)*2 +0
- Tính giá trị của biểu diễn này
Nhập s (số nhị phân)
s = Trim(s)
a = 0 Lặp với i = 1, ,len(s)
a = a*2 + Val(Mid(s,i,1))
KT lặp
In a
Trang 43Bài tập
4 Chuyển số từ hệ thập lục phân sang hệ thập phân.
- Viết ra biểu diễn số thập lục phân cần đổi.
2AFH → 2*162 + A*161 + F*160 → (2*16 + A)*16 + F → (2*16 + 10)*16 + 15
- Tính giá trị của biểu diễn này.
Nhập s (số thập lục phân)
s = Trim(s)
a = 0
Lặp với i = 1, ,len(s)
Nếu Mid(s,i,1) = “A” Or Mid(s,i,1) = “a” thì a = a*16 +10
Nếu Mid(s,i,1) = “B” Or Mid(s,i,1) = “b” thì a = a*16 +11
Nếu Mid(s,i,1) = “C” Or Mid(s,i,1) = “c” thì a = a*16 +12
Nếu Mid(s,i,1) = “D” Or Mid(s,i,1) = “d” thì a = a*16 +13
Nếu Mid(s,i,1) = “E” Or Mid(s,i,1) = “e” thì a = a*16 +14
Nếu Mid(s,i,1) = “F” Or Mid(s,i,1) = “f” thì a = a*16 +15
Ngược lại a = a*16 + Val(Mid(s,i,1))
KT lặp
In a
Trang 44Bài tập
5 Chuyển số từ hệ nhị phân sang hệ thập lục phân.
• Phân các ký số B thành các nhóm 4 ký số từ phải sang trái.
• Thêm các số 0 bên trái nhóm cuối nếu thiếu cho đủ 4 ký số.
• Dựa vào bảng chuyển đổi số cơ sở đổi các nhóm này thành số H.
Trang 45Nếu Mid(s,i,1) = “9” thì s1 = s1 & “1001”
Nếu Mid(s,i,1) = “A” Or Mid(s,i,1) = “a” thì s1 = s1 & “1010”
Trang 4611.Tính số nút của 1 số nguyên dương (4235 → 6 nút).
12 Tần suất xuất hiện nhiều nhất của phần tử trong mảng số nguyên (1,2,3,3,2,4,1,2,3 → 2 hoặc 3).
13 In chuỗi dạng Title Case bỏ các từ là số
(sU PHAm 2014 a4-102→ Su Pham A4-102)).