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