ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
KỸ THUẬT LẬP TRÌNH
MẢNG NHIỀU CHIỀU
(Chương 1)
ThS VÕ NHẬT VINH
1
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
TỔNG QUAN
•
•
•
•
•
•
•
•
•
Giới thiệu môn học “Kỹ thuật lập trình”,
Quy ñịnh của giảng viên,
ðặt vấn ñề về giới hạn của mảng 1 chiều,
Giới thiệu mảng 2 chiều,
Khai báo mảng 2 chiều,
Truy xuất mảng 2 chiều,
Khái quát mảng nhiều chiều,
Hạn chế của mảng,
Tóm tắt.
2
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
GIỚI THIỆU MÔN HỌC
• Giảng viên:
• Liên hệ:
• Thời lượng:
• Kiểm tra:
• Tài liệu:
• Website:
ThS Võ Nhật Vinh
phòng 202, số 97 Võ Văn Tần
Tel: 39301168
35 tiết lý thuyết, 35 tiết thực hành
Giữa kỳ (30%)
Cuối kỳ trên máy (70%)
Principles of Programming
(Code Warrior – 1995)
http://vonhatvinh.net/lecture/
3
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
GIỚI THIỆU MÔN HỌC (tt)
• Mục ñích môn học:
– Nâng cao các kiến thức về lập trình ñã học trong môn
Cơ sở lập trình,
– Làm quen với các thao tác can thiệp sâu hơn vào bộ
nhớ máy tính khi lập trình,
– Làm quen với lập trình hướng ñối tượng,
– Có khả năng hiện thực việc lập trình trên Visual C++,
– Vận dụng cấu trúc dữ liệu và kỹ thuật lập trình ñể giải
quyết các bài toán.
4
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
GIỚI THIỆU MÔN HỌC (tt)
•
•
•
•
•
•
Chương 1:
Chương 2:
Chương 3:
Chương 4:
Chương 5:
Chương 6:
Mảng nhiều chiều
Con trỏ
Chuỗi ký tự
Tập tin và luồng
ðệ quy
Lớp
5
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
QUY ðỊNH CỦA GIẢNG VIÊN
6
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
ðẶT VẤN ðỀ VỀ MẢNG
• Xét vấn ñề lưu trữ một dãy số: a0, a1, a2, …, an
• Mảng n+1 phần tử a[0], a[1], …, a[n] sẽ làm việc ñó,
• Xét vấn ñề lưu trữ một dãy số: b0, b1, b2, …, bm
• Mảng m+1 phần tử b[0], b[1],.., b[m] sẽ làm việc ñó,
Xét vấn ñề lưu trữ kết quả:
cij = ai x bj với 0 ≤ i ≤ n và 0 ≤ j ≤ m
7
CHƯƠNG 1
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
ðẶT VẤN ðỀ VỀ MẢNG (tt)
a0
a1
a2
…
an
b0
a0 x b0
a1 x b0
a2 x b0
x b0
an x b0
b1
a0 x b1
a1 x b1
a2 x b1
x b1
an x b1
b2
a0 x b2
a1 x b2
a2 x b2
x b2
an x b2
…
a0 x …
a1 x …
a2 x …
…x…
an x …
bm
a0 x bm
a1 x bm
a2 x bm
x bm
an x bm
8
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
GIỚI THIỆU MẢNG 2 CHIỀU
• ðể lưu trữ dữ liệu theo 1 hàng dọc hoặc hàng
ngang, ta dùng mảng (xem Cơ sở lập trình),
• ðể lưu trữ kết quả ñược sắp xếp theo cả chiều
ngang và chiều dọc, ta sẽ dùng mảng 2 chiều.
Tóm li:
• Mảng là tập hợp các phần tử ñặt liên tiếp nhau trong
bộ nhớ, có cùng tên và cùng kiểu dữ liệu.
• Mảng 2 chiều là mảng chứa các giá trị bố trí theo
hàng ngang và hàng dọc.
9
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
KHAI BÁO MẢNG 2 CHIỀU
• Khai báo mảng cần 3 thông tin:
– Tên mảng,
– Kiểu dữ liệu của mảng,
– Kích thước của mảng: số phần tử trong mảng
• Khai báo mảng 2 chiều cũng cần 3 thông tin:
– Tên mảng,
– Kiểu dữ liệu của mảng,
– Kích thước của mảng: kích thước dọc & kích thước ngang
10
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
KHAI BÁO MẢNG 2 CHIỀU (tt)
• Cú pháp:
kiểu_dữ_liệu
Tên_mảng [kích_thước_1][kích_thước_2]
• Ví dụ:
int
Mang_A [50] [70]
• Lưu ý: trong ví dụ trên, chỉ số hàng dọc của mảng
sẽ từ 0 ñến 49 và hàng ngang sẽ từ 0 ñến 69.
11
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
TRUY XUẤT MẢNG 2 CHIỀU
• Không thể tác ñộng lên toàn bộ mảng cùng 1 lúc,
• Chỉ có thể tác ñộng lên duy nhất 1 phần tử của
mảng tại 1 thời ñiểm,
• Truy xuất 1 phần tử của mảng:
– Tên của mảng,
– Chỉ số của mảng: chỉ số hàng dọc, chỉ số hàng ngang,
– Lưu ý kiểu dữ liệu của mảng khi truy xuất,
• Ví dụ: xét mảng ñược khai báo int A[50][60]
truy xuất phần tử hàng 39, cột 58: A[39][58]
12
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
TRUY XUẤT MẢNG 2 CHIỀU (tt)
• Khởi tạo mảng: giống như việc khởi tạo giá trị cho
biến sau khi ñược khai báo,
• Có thể gán từng giá trị cho từng phần tử của mảng,
• Có thể khởi tạo giá trị của mảng ngay từ lúc khai
báo mảng bằng cách liệt kê các giá trị của các phần
tử: int A[2][3] = {{1, 2, 3},
{2, 3, 4}}
Nếu liệt kê không ñầy ñủ thì giá trị các phần tử còn
lại mặc ñịnh là 0.
13
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
KHÁI QUÁT MẢNG NHIỀU CHIỀU
•
•
•
•
•
ðể biểu diễn dãy các giá trị, ta dùng mảng 1 chiều,
ðể biểu diễn bảng các giá trị, ta dùng mảng 2 chiều,
ðể biểu diễn khối các giá trị, ta dùng mảng 3 chiều,
…
Ta sẽ có thể mảng nhiều chiều (2 chiều, 3 chiều…)
ñể biểu diễn các phần tử liên tiếp nhau trong bộ nhớ,
có cùng kiểu dữ liệu, cùng tên theo một cách sắp xếp
không gian nào ñó,
• Cách khai báo, truy xuất mảng cũng giống như mảng
2 chiều.
14
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
HẠN CHẾ CỦA MẢNG
• Phải xác ñịnh kích thước của mảng ngay từ lúc khai
báo,
Kích thước bộ nhớ dành cho mảng không thay ñổi suốt
chương trình,
Kích thước của mảng khi khai báo phải lớn hơn bằng nhu
cầu sử dụng trong chương trình,
Có thể không sử dụng hết vùng nhớ ñã khai báo cho
mảng,
• Khi truyền mảng cho hàm, cần truyền cả nội dung
của mảng và kích thước của mảng.
15
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
CHƯƠNG 1
TÓM TẮT
• Mảng dùng ñể một loạt các phần tử liên tiếp, cùng
kiểu dữ liệu và cùng tên,
• Tùy theo cách sắp xếp không gian của các phần tử
liên tiếp mà ta có mảng 1 chiều, 2 chiều, 3 chiều,…
• Khi khai báo ta cần các thông tin: kiểu dữ liệu, tên
mảng và kích thước mảng (số lượng kích thước tùy
theo số chiều của mảng),
• Khi truy xuất, cần gọi ñúng tên mảng, vị trí của phần
tử và bảo ñảm tương thích kiểu dữ liệu.
16
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
KỸ THUẬT LẬP TRÌNH
CON TRỎ
(Chương 2)
ThS VÕ NHẬT VINH
1
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
KỸ THUẬT LẬP TRÌNH
TỔNG QUAN
• Hạn chế của bộ nhớ tĩnh,
• Giới thiệu con trỏ:
–
–
–
–
Khái quát về con trỏ,
Khai báo con trỏ,
Khởi tạo và hủy bỏ con trỏ,
Truy xuất vùng nhớ và giá trị lưu trong vùng nhớ,
• Ứng dụng con trỏ cho mảng một chiều,
• Tóm tắt.
2
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
KỸ THUẬT LẬP TRÌNH
HẠN CHẾ CỦA BỘ NHỚ TĨNH
• Dữ liệu phải lưu vào vùng nhớ ñã ñược khai báo
trước trong chương trình,
• Chương trình khi nhận ñược sự khai báo sẽ dành
hẳn 1 vùng nhớ tương ứng ñể chờ ñợi dữ liệu,
• Trong quá trình tính toán, dữ liệu ít hơn dự kiến thì
không thể yêu cầu chương trình cắt bớt vùng nhớ,
• Nếu dữ liệu nhiều hơn dự kiến thì cũng không thể
yêu cầu chương trình tăng thêm vùng nhớ,
• Ví dụ: khai báo mảng 10 phần tử nhưng có lúc chỉ
cần dùng 7 phần tử hoặc cần dùng 15 phần tử? 3
ðại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
KỸ THUẬT LẬP TRÌNH
KHÁI QUÁT VỀ CON TRỎ
• ðể khắc phục hạn chế của bộ nhớ tĩnh: ta dùng bộ
nhớ ñộng,
• Bộ nhớ ñộng: có thể yêu cầu máy tính cấp 1 vùng
nhớ khi cần và yêu cầu nó xóa ñi khi không cần
nữa,
• Con trỏ (biến con trỏ): là một loại biến dùng ñể truy
xuất bộ nhớ ñộng.
4
- Xem thêm -