Bài tập chương 1 ngôn ngữ lập trình visual basic
MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ Khai báo các biến thuộc các kiểu dữ liệu cơ bản (byte, integer, long, string, boolean, single) và kiểu mảng, kiểu bản ghi trong Visual Basic. Sử dụng các hàm nhập xuất dữ ...
MỤC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ
- Khai báo các biến thuộc các kiểu dữ liệu cơ bản (byte, integer, long, string, boolean, single) và kiểu mảng, kiểu bản ghi trong Visual Basic.
- Sử dụng các hàm nhập xuất dữ liệu ( MsgBox và InputBox ) của VB.
- Sử dụng và vận dụng được các cấu trúc rẽ nhánh ( If ... Then và If ... Then ... Else ), cấu trúc đa rẽ nhánh ( Select Case ) và các loại vòng lặp : For ; Do While ... Loop ; Do... Loop để viết chương trình.
- Sử dụng được một số hàm xử lý xâu thường dùng.
A - ĐỀ BÀI TẬP
Bài tập 1: Sử dụng hàm MsgBox và InputBox Viết chương trình giải phương trình bậc 2. Hệ số a, b, c nhập từ bàn phím bằng hàm InputBox (Giải sử a ≠ 0).
Bài tập 2: Minh hoạ cấu trúc If … Then. Viết chương trình tính lương như sau: Cho người dùng nhập vào lương cơ bản LCB, Hệ số lương HSL và chức vụ CV. Nếu chức vụ là "giam doc" thì cộng thêm 500000 vào lương thực lĩnh (LTL), nếu là "truong phong" thì cộng thêm 300000, nếu là "to truong" thì cộng thêm 200000, nếu là "nhan vien" thì không cộng. Sau đó hiển thị tổng số lương thực lĩnh.
Bài tập 3-Select Case: Yêu cầu như bài 2, nhưng sử dụng cấu trúc Select Case
Bài tập 4: Hiển thị các loại thông báo sử dụng hàm MsgBox.Viết chương trình hiển thị 4 loại hộp thoại MsgBox như mô tả dưới đây khi người dùng nhập vào các số tương ứng 1,2,3,4 bằng hàm InputBox:
1 | 3 |
2 | 4 |
Bài tập 5: Sử dụng cấu trúc Select Case. Viết chương trình cho phép người dùng nhập vào 2 số thực a và b và một trong các phép toán gồm +, -, *, /, (Chia lấy phần nguyên), mod (chia lấy phần dư) hoặc ^ (Luỹ thừa). Sau đó hiển thị kết quả tương ứng. Ví dụ nếu nhập 2 số 10, 20 và phép toán là + thì thông báo "Kết quả là 30" v.v.
Bài tập 6: Sử dụng vòng lặp FOR. Viết chương trình tính tổng của dãy số sau và hiển thị kết quả ra màn hình: S = 1 + 2 + 3 + ... + N , Với N nhập từ bàn phím.
Bài tập 7: Sử dụng vòng lặp For với điều khoản Step. Hãy viết chương trình tính tổng các số chẵn từ 1 đến 100.
Hãy sử dụng vòng lặp For in ra các số từ 100 đến 1 bằng lệnh Debug.Print.
Cho người dùng nhập vào một dãy các số nguyên (âm và dương) và tính tổng các số âm, tổng các số dương. Việc nhập kết thúc nếu số nhập vào là 0.
Bài tập 10: Sử dụng cấu trúc Do While … Loop. Hãy cho biết cần gửi số tiền tiết kiệm 1 triệu đồng vào ngân hàng trong thời gian mấy năm để có 2 triệu đồng. Biết rằng lãi suất hàng năm là 8%.
Bài tập 11: Thoát khỏi vòng lặp với Exit For, Exit Do. Viết chương trình nhập số nguyên n và kiểm tra xem có phải là số nguyên tố hay không ?.
Bài tập 12: Sự tương đương giữa các cấu trúc lặp. Tính n! sử dụng các cấu trúc lặp khác nhau.
Lập trình tính tổng của dãy số sau và hiển thị kết quả ra màn hình :
Bài tập 14 – Tính N !: Viết chương trình nhập số nguyên N (0<N<20) và tính N!.
Bài tập 15- Tính tổng 1 dãy số: Tính tổng của dãy sau, với n nhập từ bàn phím:
Bài tập 16- Tính dãy Fibonasi: Tính tổng của day số Fibonasi theo 2 cách: bằng đệ qui và không đệ qui, với N nhập từ bàn phím. Biết rằng dãy số Fibonasi được định nghĩa như sau:
F (n) = 1 nếu n = 0, n = 1
F (n) = Fn-2 + Fn-1 nếu n ≥ 2
Bài tập 17- Tìm Ứơc số chung lớn nhất : Tìm ước số chung lớn nhất của 2 số a và b (a,b nhập từ bàn phím).
Bài tập 18-Tối giản phân số : Kiểm tra xem phân số a/b (a, b nhập từ bàn phím) đã tối giản hay chưa? Nếu chưa tối giản thì hãy thực hiện rút gọn phân số đó và in ra màn hình.
Bài tập 19- Tìm số nguyên tố: Nhập vào một dãy số nguyên dương bằng hàm InputBox. Sau đó in ra các giá trị là số nguyên tố.
Bài tập 20-Đếm ký tự:Lập trình cho người dùng nhập vào một xâu ký tự S. Sau đó đếm xem trong xâu nhập vào có bao nhiêu ký tự là a và A.
Biết rằng :
- Hàm Mid(S, i, 1) cho ta ký tự thứ i trong xâu S
- Hàm Len(S) cho ta độ dài của xâu S
Bài tập 21-Tính tổng dãy số: Viết chương trình nhập x và n rồi tính tổng
Bài tập 22 : Bài toán tìm phần tử lớn nhất (nhỏ nhất) trong một danh sách
Viết chương trình nhập n số nguyên vào một mảng nguyên A, sau đó tìm số lớn nhất trong mảng nguyên đó.
Nhập danh sách gồm n số nguyên, sau đó hiển thị các phần tử có giá trị lớn nhất.
Bài tập 24: Sắp xếp một dãy số nguyên. Viết chương trình cho phép nhập vào N số nguyên. Sau đó sắp xếp dãy số này theo chiều tăng dần và hiển thị dãy đã sắp xếp ra màn hình bằng lệnh Debug.Print.
Bài tập 25 – Quick Sort: Nhập vào một dãy N số nguyên dương, sau đó sắp xếp dãy này tăng dần theo giải thuật Quick-Sort. Kết quả in ra bằng hàm Debug.Print.
Bài tập 26- Heap Sort: Nhập vào một dãy N số nguyên dương, sau đó sắp xếp dãy này tăng dần theo giải thuật Heap-Sort. Kết quả in ra bằng hàm Debug.Print.
Bài tập 27: Sắp xếp một dãy các phần tử, trong đó mỗi phần tử là một xâu ký tự theo vần Alphabet (Theo thứ tự từ điển) bằng thuật toán sắp xếp đơn giản.
Viết chương trình nhập vào danh sách tên của một lớp, sau đó sắp xếp theo vần Alphabet và hiển thị kết quả sắp xếp ra màn hình bằng hàm Debug.Print
Bài tập 28-Chuẩn hoá xâu: Nhập vào một xâu ký tự bất kỳ sau đó chuẩn hoá và in ra màn hình. Xâu chuẩn hoá ở đây là xâu không có 2 dấu trắng liền nhau, không có dấu trắng ở hai đầu và sau dấu chấm hoặc dấu phảy phải có một dấu trắng.
Bài tập 29-Chuẩn hoá xâu: Yêu cầu như bài 28 và mỗi ký tự đầu câu là chữ HOA.
Bài tập 30-Tách số khỏi xâu: Nhập vào một xâu ký tự có chứa cả chữ số và chữ cái ví dụ: “Ngày mồng 2 tháng 9 năm 1945 Bác Hồ đã đọc tuyên ngôn độc lập tại Quảng trường Ba Đình lịch sử !”. Giả sử các số là nguyên dương. Hãy tách các số đó ra khỏi xâu và in ra màn hình (Ở đây sẽ tách được 3 số là 2, 9 và 1945).
Bài tập 31-Tách Câu: Nhập vào một xâu ký tự bất kỳ, kết thúc mỗi câu là một dấu chấm. Hãy in mỗi câu trong xâu đó trên một dòng bằng hàm Debug.print.
Bài tập 32-Chuyển đổi Font chữ: Giả sử một tệp văn bản có nội dung được định dạng với font chữ .vntime, Hãy chuyển nội dung của tệp này sang font chữ VIQR và lưu vào một tệp khác. Tên tệp nguồn và tệp đích tương ứng là : c:FontVNTime.txt và c:FontVIQR.txt.
Bài tập 33-Thống kê ký tự trong xâu: Nhập một xâu ký tự bất kỳ, sau đó in ra màn hình số lượng từng loại ký tự đã nhập.
Bài tập 34-Thay thế ký tự: Nhập vào một xâu, sau đó thay thế tất cả các ký tự trắng (chr(32)) bằng ký tự “_”. Kết quả in ra màn hình bằng hàm MsgBox.
Bài tập 35-Cộng số nguyên lớn: Viết chương trình cộng 2 số nguyên dương lớn bất kỳ và in kết quả ra màn hình.
Bài tập 36-Ma trận số: Viết chương trình nhập vào một ma trận gồm m hàng và n cột. Sau đó tính tổng các phần tử dương, tổng các phần tử trên 2 đường chéo chính.
Bài tập 37- Kiểm tra "đường thẳng" trong ma trận: Nhập một ma trận vuông kích thước N x N. Ma trận này chỉ chứa các số 0 và 1. Hãy lập trình để cho biết ma trận đó có ít nhất 5 phần tử thẳng hàng (ngang, dọc, chéo xuôi, chéo ngược) có cùng giá trị là 1 hay không ?
Bài tập 38- Mảng bản ghi: Viết chương trình nhập vào một danh sách cán bộ, sau đó sắp xếp danh sách cán bộ theo tuổi và lưu vào một tệp tên là Canbo.txt. Thông tin về cán bộ gồm: Họ và tên, Năm sinh, Quê quán, Hệ số lương.
PHỤ LỤC 1
Dưới đây là mô tả một số hàm rất hay dùng trong VB để bạn tham khảo trong khi lập trình và cho các bài tập sau này .
Tên hàm | Mô tả | Ví dụ |
Abs (x) | Hàm tính giá trị tuyệt đối của một số. | Abs(-5) → 5 |
Sqr(x) | Tính căn bậc hai của một số x (x>=0) | Sqr(4) → 2 |
Round(x) | Làm tròn số x | Round(3.2) → 3 |
Asc(Ch) | Trả về mã của ký tự Ch | Asc("A") → 65 |
Chr(n) | Trả về ký tự có mã Ascii là n | Chr(65) → "A" |
UCase(S) | Trả về xâu chữ hoa (Nhưng không làm thay đổi đến xâu S) | UCase("aBc") → "ABC" |
LCase(S) | Trả về xâu chữ thường (Nhưng không làm thay đổi đến xâu S) | UCase("aBc") → "abc" |
Len(S) | Trả về độ dài của xâu S | Len("abc123") → 6 |
Mid(S,i,n) | Lấy một xâu con trong S từ vị trí thứ i, n ký tự. Nếu bỏ qua tham số n thì mặc định là lấy từ vị trí i đến hết xâu. | Mid("ABCDE", 2,3) →"BCD" |
Left(S, n) | Lấy ra n ký tự trong xâu S tính từ bên trái | Left(S,"ABCD",3) → "ABC" |
Right(S,n) | Lấy ra n ký tự trong xâu S tính từ bên phải | Right(S,"ABCD",3) → "BCD" |
Trim(S) | Trả về một xâu S nhưng bỏ các dấu trắng hai đầu (Xâu S không bị thay đổi). | Trim(" ABC ") → "ABC" |
LTrim(S) | Giống như Trim(S) nhưng chỉ cắt phía trái | LTrim(" ABC ") → "ABC " |
RTrim(S) | Giống như Trim(S) nhưng chỉ cắt phía phải | RTrim(" ABC ") → " ABC" |
StrReverse(S) | Đảo ngược xâu S (S không bị thay đổi) | StrReverse("AB") → "BA" |
Str(x) | Chuyển số x sang dạng xâu | Str(10) → "10" |
Val(S) | Chuyển một xâu sang dạng số | Val("10") → 10 |
Instr(n,S1,S2) | Kiểm tra xâu S2 có năm trong xâu S1 hay không. Hàm trả về giá trị > 0 nếu có. | Instr(1,"ABC", "BC") → 2 |
Split(S, C) | Tách xâu S thành các phần tử, với ký hiệu phân tách là C. | Dim S As string, R As VariantDim I As integerS = “ha,noi,viet,nam”R = Split(S,”,”)For i=0 to Ubound(R) Msgbox R(i)Next |
Replace(S, S1, S2) | Thay thế các xâu con S1 trong S bằng xâu S2 | Dim S As stringS = Replace(“A!!”,”!!”,”!”) |
FileLen(F) | Cho biết kích thước của file F tính theo bytes | MsgBox FileLen("C:io.sys") |
CurDir | Trả về đường dẫn của thư mục hiện hành | Msgbox CurDir |
Year(D) | Trả về năm của biến kiểu Date D | Dim D As DateD = NowMsgbox Year(D) |
Month(D) | Trả về tháng của biến kiểu Date D | MsgBox Month(Now) |
Day(D) | Trả về ngày của biểu thức kiểu Date D | Day(#21/2/2004#) → 21 |
Hour(T) | Trả về giờ của biểu thức kiểu Time T | Hour(Time) |
Now | Hàm trả về ngày tháng hiện hành | Msgbox now |
Time | Trả về giờ phút giây hiện hành | Msgbox Time |
Rnd | Hàm trả về một số ngẫu nhiên trong khoảng [0, 1)Lưu ý: trước đó phải gọi thủ tục Randomize. | Msgbox Rnd |