Bài giảng Tin học đại cương - Hải Phò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
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
thức40
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
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
Bài giảng Tin học Đại cương
_60_
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
Bài giảng Tin học Đại cương
_61_
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ử
Bài giảng Tin học Đại cương
_62_
…
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
ThoátXử Lý
Kết Quả txtKQ
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 = "))
Bài giảng Tin học Đại cương
_63_
Loop Until n > 0 And n <= 100
For i = 1 To n
a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = "))
Next i
max = a(1)
For i = 2 To n
If a(i) > 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
ThoátXử Lý
Kết Quả txtKQ
cmdXuLy cmdThoat
Mã lệnh bài toán.
Private Sub cmdThoat_Click()
End
End Sub
Private Sub cmdXuLy_Click()
Bài giảng Tin học Đại cương
_64_
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
Bài giảng Tin học Đại cương
_65_
ThoátXử Lý
Kết Quả txtKQ
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 <= 100
For i = 1 To n
a(i) = Val(InputBox("Nhap a(" + Str(i) + ") = "))
Next i
b = Val(InputBox(“Nhap b = ”))
Do
k = Val(InputBox(“Nhap k = ”))
Loop Until k > 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)) + “;”
Bài giảng Tin học Đại cương
_66_
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
ThoátXử Lý
Kết Quả txtKQ
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 = ”))
Bài giảng Tin học Đại cương
_67_
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
ThoátXử Lý
Kết Quả txtKQ
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
Bài giảng Tin học Đại cương
_68_
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
File đính kèm:
Bài giảng Tin học đại cương - Hải Phòng.pdf

