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

ppt 21 trang vanle 1880
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình căn bản - Phần 2 - 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_phan_2_chuong_6_kieu_mang.ppt

Nội dung text: Lập trình căn bản - Phần 2 - 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 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