Lập trình căn bản - Chương 6: Kiểu mảng

ppt 21 trang vanle 2860
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình căn bản - Chương 6: Kiểu mảng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptlap_trinh_can_ban_chuong_6_kieu_mang.ppt

Nội dung text: Lập trình căn bản - Chương 6: Kiểu mảng

  1. LẬP TRÌNH CĂN BẢN Phần 2 - Chương 6 KIỂU MẢNG N.C. Danh 1
  2. Nội dung chương này ⚫ Giới thiệu kiểu mảng trong C ⚫ Mảng 1 chiều ⚫ Mảng nhiều chiều 2
  3. Giới thiệu kiểu mảng trong C (1) ⚫ Ví dụ: int a[10]; => Hình ảnh của a trong bộ nhớ như sau: 3
  4. Giới thiệu kiểu mảng trong C (2) ⚫ “Mảng là một tập hợp các phần tử cố định có cùng một kiểu, gọi là kiểu phần tử”. ⚫ Kiểu phần tử có thể là có kiểu bất kỳ: ⚫ ký tự ⚫ số ⚫ 1 struct ⚫ 1 mảng khác (=> mảng của mảng hay mảng nhiều chiều) ⚫ ; 4
  5. Giới thiệu kiểu mảng trong C (3) ⚫ Ví dụ: Lưu trữ 1 đa giác trong đồ họa: typedef struct { Points[1] int x; int y; Points[0] } Point; Points[2] typedef struct{ Point Points[100]; Points[3] int nPoints; } Polygon; 5
  6. Giới thiệu kiểu mảng trong C (4) ⚫ Ta có thể chia mảng làm 2 loại: ⚫ Mảng 1 chiều ⚫ Mảng nhiều chiều 6
  7. Mảng 1 chiều (1) ⚫ Xét dưới góc độ toán học, mảng 1 chiều giống như một vector. ⚫ Mỗi phần tử của mảng 1 chiều có giá trị không phải là một mảng khác. ⚫ Khai báo mảng với số phần tử xác định ⚫ Ví dụ: float a[100]; ⚫ Cú pháp: ; ⚫ Khai báo mảng với số phần tử không xác định ⚫ Ví dụ: float a[]; ⚫ Cú pháp: ; 7
  8. Mảng 1 chiều (2) ⚫ Vừa khai báo vừa gán giá trị []= {Các giá trị cách nhau bởi dấu phẩy} ; => Số phần tử có thể được xác định bằng sizeof() Số phần tử=sizeof(tên mảng)/sizeof(kiểu) ⚫ Khai báo mảng là tham số hình thức của hàm ⚫ không cần chỉ định số phần tử của mảng là bao nhiêu 8
  9. Mảng 1 chiều (3) ⚫ Ví dụ: Gán giá trị ngay lúc khai báo int primes[] = {2,3,5,7,11,13}; Sẽ tương đương với: int primes[6]; primes[0] = 2; primes[1] = 3; primes[2] = 5; =>sizeof(primes)/sizeof(int)=6 primes[3] = 7; primes[4] = 11; primes[5] = 13; 9
  10. Truy xuất từng phần tử của mảng (1) ⚫ Cú pháp: Tên biến mảng[Chỉ số] ⚫ Ví dụ 1: int a[10]; a[0]=5; a[1]=5; a[2]=33; a[3]=33; a[4]=15; printf(“%d %d %d %d %d”, a[0], a[1], a[2], a[3], a[4]); 10
  11. Truy xuất từng phần tử của mảng (2) ⚫ Ví dụ 2: Vừa khai báo vừa gán trị cho 1 mảng 1 chiều các số nguyên. In mảng số nguyên này lên màn hình. 11
  12. Truy xuất từng phần tử của mảng (3) ⚫ Ví dụ 3: Đổi một số nguyên dương thập phân thành số nhị phân. 12
  13. Truy xuất từng phần tử của mảng (4) ⚫ Ví dụ 4: Nhập vào một dãy n số và sắp xếp các số theo thứ tự tăng. 13
  14. Truy xuất từng phần tử của mảng (5) ⚫ Ví dụ 5: Chương trình sau sẽ hiển thị kết quả gì? Sửa lỗi này thế nào? Các phần tử của mảng a[0], , a[11]. Việc truy cập a[12] sẽ vượt ra bên ngoài mảng, ô nhớ của biến b. 14
  15. Mảng nhiều chiều ⚫ Mảng nhiều chiều là mảng có từ 2 chiều trở lên. ⚫ Điều đó có nghĩa là mỗi phần tử của mảng là một mảng khác. ⚫ Người ta thường sử dụng mảng nhiều chiều để lưu các ma trận, các tọa độ 2 chiều, 3 chiều 15
  16. Khai báo mảng 2 chiều tường minh ⚫ Cú pháp: ; ⚫ Ví dụ: float m[8][9]; // mảng 2 chiều có 8*9 phần tử là số thực 16
  17. Khai báo mảng 2 chiều không tường minh ⚫ Để khai báo mảng 2 chiều không tường minh, ta vẫn phải chỉ ra số phần tử của chiều thứ hai (chiều cuối cùng). ⚫ Cú pháp: ; ⚫ Ví dụ: float m[][9]; ⚫ Cách khai báo này cũng được áp dụng trong trường hợp: ⚫ vừa khai báo vừa gán trị ⚫ mảng 2 chiều là tham số hình thức của 1 hàm. 17
  18. Truy xuất từng phần tử của mảng 2 chiều ⚫ Dùng: Tên mảng[Chỉ số 1][Chỉ số 2] 18
  19. Ví dụ (1) ⚫ Viết chương trình cho phép nhập 2 ma trận a, b có m dòng n cột, thực hiện phép toán cộng hai ma trận a,b và in ma trận kết quả lên màn hình. 19
  20. Ví dụ (2) 20
  21. Hết chương Hết chương 21