Nối tiếp phần 1, Bài giảng Tin học cơ sở 2: Phần 2 tiếp tục cung cấp cho học viên những kiến thức về cấu trúc dữ liệu kiểu mảng, các thao tác đối với mảng, mảng và đối của hàm, xâu kí tự (string), kiểu dữ liệu Con trỏ, đối của hàm main(); dữ liệu kiểu tệp, thâm nhập vào thư viện chuẩn, xử lý lỗi - Stderr và Exit; đọc và ghi file bằng fread, fwrite; đọc và ghi file bằng fscanf, fprintf;... Mời các bạn cùng tham khảo!
Phan Thị Hà-Khoa CNTT1-Học viện CNBCVT TH NG TIN V TRU HỌ VI N NG NGH N TH NG ƢU H NH VI N TH NG I GI NG TIN HỌ Ơ SỞ HO PH TR H: hoa CNTT1 H I N: TS PH N THỊ H H N i – Năm 2016 Phan Thị Hà-Khoa CNTT1-Học viện CNBCVT } } CẤU TRÚC DỮ LIỆU KIỂU MẢNG (Array) 5.1 Khái niệm mảng Mảng tập cố định phần tử có chung kiểu liệu với thao tác tạo lập mảng, tìm kiếm, truy cập phần tử mảng, lƣu trữ mảng Ngoài giá trị, phần tử mảng cịn đƣợc đặc trƣng số thể thứ tự phần tử mảng Khơng có thao tác bổ sung thêm vùng nhớ loại bỏ vùng nhớ mảng số vùng nhớ cho phần tử mảng cố định Một mảng chiều gồm n phần tử đƣợc coi nhƣ vector n thành phần, phần tử thứ i đƣợc tƣơng ứng với số thứ i - ngơn ngữ lập trình C phần tử đƣợc số Chúng ta mở rộng khái niệm mảng chiều thành khái niệm mảng nhiều chiều Một mảng chiều gồm n phần tử phần tử lại mảng chiều gồm m phần tử đƣợc gọi mảng hai chiều gồm n x m phần tử Tổng quát, mảng gồm n phần tử mà phần tử lại mảng k - chiều đƣợc gọi mảng k chiều Số phần tử mảng k chiều tích số số phần tử mảng chiều Khai báo mảmg chiều đƣợc thực theo qui tắc nhƣ sau: Tên_kiểu Ví dụ : int char Tên_biến[Số_phần tử]; A[10]; /* khai báo mảng tối đa chứa 10 phần tử nguyên*/ str[20]; /* khai báo mảng tối đa chứa 19 kí tự */ float B[20]; /* khai báo mảng tối đa chứa 20 số thực */ long int L[20]; /* khai báo mảng tối đa chứa 20 số nguyên dài */ b- Cấu trúc lƣu trữ mảng chiều Cấu trúc lƣu trữ mảng: Mảng đƣợc tổ chức nhớ nhƣ vector, thành phần vector đƣợc tƣơng ứng với nhớ có kích cỡ kích cỡ kiểu phần tử đƣợc lƣu trữ Nếu có khai báo mảng gồm n phần tử phần tử phần tử thứ phần tử cuối phần tử thứ n - 1, đồng thời mảng đƣợc cấp phát vùng không gian nhớ liên tục có số byte đƣợc tính theo cơng thức: Kích_cỡ_mảng = ( Số_phần_tử * sizeof (kiểu_phần_tử) Ví dụ có khai báo: int A[10]; Khi kích cỡ tính theo byte mảng : 47 Phan Thị Hà-Khoa CNTT1-Học viện CNBCVT 10 *sizeof(int) = 20 byte; float B[20]; => mảng đƣợc cấp phát: 20 * sizeof(float) = 80byte; Chƣơng trình dịch ngơn ngữ C ln qui định tên mảng đồng thời địa phần tử mảng nhớ Do vậy, ta có kiểu liệu Data_type tên mảng X, số phần tử mảng 10 mảng đƣợc tổ chức nhớ nhƣ sau: Data_type X[N]; X[0] X[1] X[2] X[3] X - địa mảng X = &X[0] = ( X + ); &X[1] = ( X + ); &X[i] = (X + i ); Ví dụ: Tìm địa phần tử mảng gồm 10 phần tử nguyên #include #include void main(void) { int A[10], i ; /* khai báo mảng gồm 10 biến nguyên */ printf("\n Địa đầu mảng A : %p", A); printf("\n Kích cỡ mảng : %5d byte", 10 * sizeof(int)); for ( i =0 ; i