intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình: Mảng - ThS. Trần Ngọc Bảo Duy

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:39

5
lượt xem
0
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Kỹ thuật lập trình - "Mảng", được biên soạn gồm các nội dung chính sau: Sự cần thiết của mảng; Địa chỉ của các ô nhớ trong mảng; Mảng một chiều; Số phần tử của mảng; Đọc và ghi trên mảng 1 chiều; Tự tính toán địa chỉ và lấy phần tử quan tâm;...Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Mảng - ThS. Trần Ngọc Bảo Duy

  1. Array ThS. Trần Ngọc Bảo Duy MẢNG Mảng Sự cần thiết của mảng Định nghĩa Kỹ thuật Lập trình (CO1027) Mảng một chiều Khai báo Ngày 8 tháng 3 năm 2021 Đọc và ghi trên mảng 1 chiều Mảng hai chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều ThS. Trần Ngọc Bảo Duy Khoa Khoa học và Kỹ thuật Máy tính Trường Đại học Bách Khoa, ĐHQG-HCM Array.1
  2. Array Tổng quan ThS. Trần Ngọc Bảo Duy 1 Mảng Sự cần thiết của mảng Định nghĩa Mảng Sự cần thiết của mảng Định nghĩa Mảng một chiều 2 Mảng một chiều Khai báo Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều Đọc và ghi trên mảng 1 chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều 3 Mảng hai chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều Array.2
  3. Array Sự cần thiết của mảng ThS. Trần Ngọc Bảo Duy Bài toán Một chương trình quản lý bán hàng cần lưu trữ tạm N món Mảng Sự cần thiết của mảng hàng trong bộ nhớ, nếu ta chỉ sử dụng các kiểu dữ liệu cơ Định nghĩa bản (primitive type): Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều Array.3
  4. Array Sự cần thiết của mảng ThS. Trần Ngọc Bảo Duy Bài toán Một chương trình quản lý bán hàng cần lưu trữ tạm N món Mảng Sự cần thiết của mảng hàng trong bộ nhớ, nếu ta chỉ sử dụng các kiểu dữ liệu cơ Định nghĩa bản (primitive type): Mảng một chiều Khai báo • Phải cần đến N × M biến: Đọc và ghi trên mảng 1 chiều Mảng hai chiều • M là số thành phần dữ liệu của một món hàng. Ứng dụng • Ví dụ: N = 100 món hàng, M = 10 thành phần dữ Khai báo Đọc và ghi trên mảng hai chiều liệu, ta cần N × M = 1000 biến. Array.3
  5. Array Sự cần thiết của mảng ThS. Trần Ngọc Bảo Duy Bài toán Một chương trình quản lý bán hàng cần lưu trữ tạm N món Mảng Sự cần thiết của mảng hàng trong bộ nhớ, nếu ta chỉ sử dụng các kiểu dữ liệu cơ Định nghĩa bản (primitive type): Mảng một chiều Khai báo • Phải cần đến N × M biến: Đọc và ghi trên mảng 1 chiều Mảng hai chiều • M là số thành phần dữ liệu của một món hàng. Ứng dụng • Ví dụ: N = 100 món hàng, M = 10 thành phần dữ Khai báo Đọc và ghi trên mảng hai chiều liệu, ta cần N × M = 1000 biến. • Nhận định: Khả thi nhưng không hợp lý. Chương trình khó đọc và khó phát triển. Array.3
  6. Array Sự cần thiết của mảng ThS. Trần Ngọc Bảo Duy Giải pháp 1 Gom các dữ liệu để mô tả một món hàng cùng với Mảng Sự cần thiết của mảng nhau, ta có struct hỗ trợ. Định nghĩa Mảng một chiều 2 Lưu trữ N món hàng dùng kiểu dữ liệu mảng (nâng cao Khai báo hơn là danh sách). Đọc và ghi trên mảng 1 chiều Mảng hai chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều Array.4
  7. Array Sự cần thiết của mảng ThS. Trần Ngọc Bảo Duy Giải pháp 1 Gom các dữ liệu để mô tả một món hàng cùng với Mảng Sự cần thiết của mảng nhau, ta có struct hỗ trợ. Định nghĩa Mảng một chiều 2 Lưu trữ N món hàng dùng kiểu dữ liệu mảng (nâng cao Khai báo hơn là danh sách). Đọc và ghi trên mảng 1 chiều Mảng hai chiều Ứng dụng Về kỹ thuật, C/C++ hỗ trợ: Khai báo Đọc và ghi trên mảng hai chiều • Mảng (array) để lưu trữ liên tục các phần tử có cùng một kiểu dữ liệu. • Con trỏ (pointer) để từ đó phát triển các loại danh sách nếu muốn. Array.4
  8. Array Định nghĩa ThS. Trần Ngọc Bảo Duy Định nghĩa Mảng là một dãy các phần tử cùng một kiểu, nằm liền Mảng kề nhau trong bộ nhớ. Sự cần thiết của mảng Định nghĩa Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều Array.5
  9. Array Định nghĩa ThS. Trần Ngọc Bảo Duy Định nghĩa Mảng là một dãy các phần tử cùng một kiểu, nằm liền Mảng kề nhau trong bộ nhớ. Sự cần thiết của mảng Định nghĩa Mảng một chiều Ví dụ: Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều 0 1 2 3 4 5 Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều 10 20 30 40 50 60 Hình: Một mảng gồm 6 phần tử số nguyên Array.5
  10. Array Ví dụ ThS. Trần Ngọc Bảo Duy 0 1 2 3 4 5 10 20 30 40 50 60 Mảng Sự cần thiết của mảng Định nghĩa Hình: Một mảng gồm 6 phần tử số nguyên Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều • Sáu số này nằm liên tục nhau trong bộ nhớ: Nếu ô nhớ Ứng dụng Khai báo đầu tiên, chứa giá trị 10, bắt đầu ở BYTE có địa chỉ Đọc và ghi trên mảng hai chiều 100 trong vùng nhớ của chương trình • Địa chỉ của ô nhớ chứa 20: 104 • Địa chỉ của ô nhớ chứa 30: 108 • Địa chỉ của ô nhớ chứa 40: 112 • Địa chỉ của ô nhớ chứa 50: 116 • Địa chỉ của ô nhớ chứa 60: 120 Array.6
  11. Array Ví dụ ThS. Trần Ngọc Bảo Duy 0 1 2 3 4 5 10 20 30 40 50 60 Mảng Sự cần thiết của mảng Hình: Một mảng gồm 6 phần tử số nguyên Định nghĩa Mảng một chiều Khai báo • Các phần tử trong mảng được đánh chỉ số để truy Đọc và ghi trên mảng 1 chiều Mảng hai chiều xuất. Ứng dụng 1 Phần tử đầu tiên LUÔN LUÔN CÓ chỉ số là 0. Khai báo Đọc và ghi trên mảng hai chiều 2 Các phần tử kế tiếp theo là 1, 2, ... Vì vậy, chỉ số của các phần tử: • Ô nhớ chứa 10 có chỉ số là 0 • Ô nhớ chứa 20 có chỉ số là 1 • Ô nhớ chứa 30 có chỉ số là 2 • Ô nhớ chứa 40 có chỉ số là 3 • Ô nhớ chứa 50 có chỉ số là 4 • Ô nhớ chứa 60 có chỉ số là 5 Array.6
  12. Array Ví dụ ThS. Trần Ngọc Bảo Duy Mảng 0 1 2 3 4 5 Sự cần thiết của mảng Định nghĩa 10 20 30 40 50 60 Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều Hình: Một mảng gồm 6 phần tử số nguyên Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều • Tổng quát: Một mảng có N phần tử thì chỉ số các phần tử là 0, 1, ... và cuối cùng là (N - 1) - không phải N Array.6
  13. Array Địa chỉ của các ô nhớ trong mảng ThS. Trần Ngọc Bảo Duy Mảng Về lý thuyết, để tính địa chỉ (đ/c) của ô nhớ có chỉ số k, Sự cần thiết của mảng Định nghĩa chương trình dùng công thức sau: Mảng một chiều Khai báo Địa chỉ = đ/c phần tử đầu tiên + k × (kích thước phần tử) Đọc và ghi trên mảng 1 chiều Mảng hai chiều Do đó, chương trình dễ dàng chỉ ra ngay một phần tử có Ứng dụng Khai báo chỉ số bất kỳ, ta gọi đó là TRUY CẬP NGẪU NHIÊN. Đọc và ghi trên mảng hai chiều Array.7
  14. Array Địa chỉ của các ô nhớ trong mảng ThS. Trần Ngọc Bảo Duy Trong C/C++, trình biên dịch đã biết trước kích thước của Mảng Sự cần thiết của mảng phần tử trong mảng. Do đó, công thức lấy địa chỉ của phần Định nghĩa tử có chỉ số k là Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều Địa chỉ của phần tử có chỉ số k = first + k Mảng hai chiều Ứng dụng Khai báo trong đó, first là địa chỉ của phần tử đầu tiên của mảng, có Đọc và ghi trên mảng hai chiều thể lấy thông qua tên của biến mảng. Array.8
  15. Array ThS. Trần Ngọc Bảo Duy Mảng Sự cần thiết của mảng Định nghĩa MẢNG MỘT CHIỀU Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều Array.9
  16. Array Khai báo mảng 1 chiều ThS. Trần Ngọc Bảo Duy Để khai báo một mảng một chiều trong C/C++, ta sử dụng Mảng cú pháp: Sự cần thiết của mảng Định nghĩa []; Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều trong đó: Mảng hai chiều • là kiểu dữ liệu của các phần tử trong mảng Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều • là tên mảng, do người lập trình đặt. • là một hằng thể hiện kích thước của mảng. Array.10
  17. Array Ví dụ ThS. Trần Ngọc Bảo Duy 1 # include < iostream > Mảng 2 using namespace std ; Sự cần thiết của mảng Định nghĩa 3 Mảng một chiều 4 int main () { Khai báo 5 int a [6]; Đọc và ghi trên mảng 1 chiều 6 int b [6] = {10 , 20 , 30}; Mảng hai chiều 7 int c [6] = {10 , 20 , 30 , 40 , 50 , 60}; Ứng dụng Khai báo 8 Đọc và ghi trên mảng hai chiều 9 return 0; 10 } Array.11
  18. Array Ví dụ ThS. Trần Ngọc Bảo Duy Mảng Sự cần thiết của mảng Định nghĩa Mảng một chiều Khai báo Đọc và ghi trên mảng 1 chiều Mảng hai chiều Ứng dụng Khai báo Đọc và ghi trên mảng hai chiều Hình: Hình ảnh trong bộ nhớ của các mảng a, b, và c Array.12
  19. Array Số phần tử của mảng ThS. Trần Ngọc Bảo Duy Số phần tử của mảng phải biết trước thời điểm biên dịch, do đó phải là một hằng số không âm: • Sử dụng macro: #define MAX_SIZE Mảng • Khai báo hằng số nguyên: const int MAX_SIZE Sự cần thiết của mảng Định nghĩa Mảng một chiều 1 # include < iostream > Khai báo 2 using namespace std ; Đọc và ghi trên mảng 1 chiều 3 Mảng hai chiều 4 # define MAX_SIZE 6 Ứng dụng Khai báo 5 Đọc và ghi trên mảng hai chiều 6 int main () { 7 const int max_size = 10; 8 int a [ MAX_SIZE ]; 9 int b [ max_size ]; 10 return 0; 11 } Array.13
  20. Array Số phần tử của mảng ThS. Số phần tử của mảng phải biết trước thời điểm biên dịch, Trần Ngọc Bảo Duy do đó phải là một hằng số không âm: • Sử dụng macro: #define MAX_SIZE • Khai báo hằng số nguyên: const int MAX_SIZE Mảng Sự cần thiết của mảng 1 # include < iostream > Định nghĩa 2 using namespace std ; Mảng một chiều 3 Khai báo Đọc và ghi trên mảng 1 chiều 4 # define MAX_SIZE 6 Mảng hai chiều 5 Ứng dụng 6 int main () { Khai báo Đọc và ghi trên mảng hai chiều 7 const int max_size = 10; 8 int a [ MAX_SIZE ]; 9 int b [ max_size ]; 10 return 0; 11 } Một số trình biên dịch cho phép khai báo kích thước với biến dữ liệu, tuy nhiên, đó không phải là quy tắc chuẩn được định nghĩa bởi ANSI cho C++ (http://www.gotw.ca/iso/). Array.13
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
185=>2