Bài giảng Tin học đại cương - Phần 3: Lập trình C - Chương 5: Mảng, con trỏ và xâu ký tự

Phần 3: Lập trì nh C  
Nội dung chí nh  
• Chương 1: Tổng quan về ngôn ngữ C  
• Chương 2: Kiểu dữ liệu và biểu thức trong C  
• Chương 3: Vào ra dữ liệu  
• Chương 4: Cấu trúc điều khiển  
• Chương 5: Mảng, con trỏ và xâu ký tự  
• Chương 6: Cấu trúc  
• Chương 7: Hàm  
• Chương 8: Tệp dữ liệu  
01-Jan-16  
239  
Chương 5: Mảng, con trỏ và xâ u ký tự  
Nội dung chí nh  
1. Mảng  
• Khá i niệm  
• Khai báo và sử dụng  
• Cá c thao tác thường gặp  
2. Con trỏ  
• Khái niệm và cách khai bá o  
• Toá n tử địa chỉ (&), toá n tử nội dung (*)  
• Phé p toá n trên con trỏ  
• Con trỏ và mảng  
3. Xâ u ký tự  
• Khái niệm, khai báo và sử dụng  
• Cá c hàm xử lý ký tự và xâ u ký tự  
• Mảng xâu ký tự  
01-Jan-16  
240  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Giới thiệu  
Bài toá n:  
• Nhập điểm thi (số nguyên) mô n Tin đại cương cho lớp gồm  
50 sinh viên rồi đưa ra số lượng sinh viên phải học lại  
Phương pháp: Điểm của mỗi sinh viên là 1 biến  
• Tên biến là tên sinh viên  
Ví dụ: int An, Anh, Binh1, Binh2, Cuong,….. Van, Viet;  
• Tên biến dạng “dx” với x là chỉ số thứ tự của SV trong lớp  
Ví dụ: int d1, d2, d3,……,d50;  
Nhận xé t 1: Khô ng hợp lý  
• Có quá nhiều biến (Điểm thi cho toàn trường.. !?)  
• Khó khăn cho các thao tá c duyệt toàn bộ danh sá ch  
– Số SV học lại: if(d1 <5) d++; if(d2 <5) d++; ……if(d50 <5)d++;  
Nhận xé t 2: Các biến có chung ý nghĩa, tính chất  
01-Jan-16  
241  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Giới thiệu  
• Trong thực tế, thường gặp cá c đối tượng có  
tính chất chung  
– Thá ng trong năm  
– Điểm trung bình của sinh viên trong lớp  
• Cá c đối tượng được nhóm lại dưới một tên  
• Đối tượng được đặc trưng bởi tên nhó m và  
thứ tự trong nhó m  
– Tháng thứ 3 trong năm: Tháng 3  
– Sinh viên thứ 17 trong lớp:…  
• Số thứ tự của đối tương trong nhó m là chỉ  
phần tử  
01-Jasn-1ố6  
242  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Khái niệm mảng  
• Kiểu mảng là một kiểu dữ liệu gồm  
– Một số hữu hạn thành phần.  
– Cá c thành phần có cùng một kiểu: kiểu cơ sở  
hay là kiểu thành phần.  
• Mỗi phần tử của mảng được tham khảo  
thô ng qua  
– Tên mảng và  
–Chỉ số của phần tử trong mảng  
Ví dụ:  
– <d7>: Điểm thi tin của sinh viên thứ tự 7 trong lớp  
01-Jan-16  
243  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Khai bá o mảng  
Kiểu_dữ_liệu Tên_Mảng[Kích thước];  
• Kiểu_dữ_liệu: kiểu của các phần tử trong  
mảng (nguyên, thực, ký tự, chuỗi, mảng,…)  
• Tên_mảng: tên của mảng  
• Kích_thước_mảng: số phần tử trong mảng  
Ví dụ  
// khai báo mảng 50 phần tử có kiểu dữ liệu int  
int DiemTin[50];  
float A[10]; //Mảng 10 phần tử kiểu số thực  
01-Jan-16  
244  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Cấp phát bộ nhớ cho mảng  
• Các phần tử trong mảng được cấp phá t cá c  
ô nhớ kế tiếp nhau trong bộ nhớ  
• Kích thước của mảng bằng kích thước một  
phần tử nhâ n với số phần tử  
Ví dụ:  
int A[10];//Mảng A gồm 10 phần tửnguyên  
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]  
Kích thước của mảng A: 10 x 2 = 20 bytes  
01-Jan-16  
245  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Truy nhập đến thành phần của mảng  
• Biến mảng lưu trữ địa chỉ ô nhớ đầu tiên  
trong vùng nhớ được cấp phá t  
• Ngôn ngữ C đánh chỉ số các phần tử trong  
mảng bắt đầu từ 0  
• Cá c phần tử của mảng được truy nhập  
thô ng qua  
– Tên mảng và  
– Chỉ số của phần tử của phần tử trong mảng  
Tên_Mang[Chỉ_số_phần_tử];  
01-Jan-16  
246  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Truy nhập đến thành phần của mảng→Ví dụ  
int A[10];//Mảng A gồm 10 phần tửnguyên  
A[2] A[3]  
A[5] A[6] A[7] A[8] A[9]  
7 5  
7
A
A[0]  
A[4]  
A[9]  
A[0] = 7;  
A[1] = 5;  
A[4] = 7;  
int N = A[1] + A[4]; → N = 12  
01-Jan-16  
247  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Ví dụ  
intA[10];  
for(int i = 0; i < 10; i++) A[i]= 2* i;  
10  
16  
18  
0 2 4 6 8  
12  
14  
0
i : 142 7  
15630  
9 8  
Chú ý: C khô ng kiểm tra vượt quá giới hạn  
của mảng khi truy nhâ p  
int A[3], B[4], C[3];  
A[0] A[1] A[2] B[0] B[1] B[2] B[3] C[0] C[1] C[2]  
A[5] B[2] C[-2] nếu c/cấp liên tiếp  
01-Jan-16  
248  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Mảng nhiều chiều  
• Mỗi phần tử của mảng có thể là một mảng  
Mảng nhiều chiều  
Kiểu Tên[Chiều_1] [Chiều_2]… [Chiều_N];  
• Kiểu: Kiểu của mỗi phần tử trong mảng  
• Chiều_1, Chiều_2,…Chiều_N: Cá c hằng số  
nguyên, cho biết kích thước (số phần tử) của mỗi  
chiều  
• Mảng gồm: Chiều_1 x Chiều_2 x...x Chiều_N  
phần tử được lưu trữ trong vùng nhớ liên tục. Cá c  
phần tử thuộc kiểu Kiểu  
01-Jan-16  
249  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Mảng nhiều chiều  
int t[3][4] ;  
t[0]  
t[1]  
t[2]  
t[0][0] t[0][1] t[0][2] t[0][3]  
t[1][0] t[1][1] t[1][2] t[1][3]  
t[2][0] t[2][1] t[2][2] t[2][3]  
t[1][0] t[1][1] t[1][2] t[1][3]  
01-Jan-16  
250  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Mảng nhiều chiều→Ví dụ  
int b[3][4][5];  
b[2][2][4]  
b[0][1][2]  
b[2]  
b[1]  
b[0]  
• Mảng b gồm 3 phần tử b[0], b[1], b[2]  
• Mỗi phần tử là mảng hai chiều gồm 4 hàng  
(hàng 0, 1, 2, 3) và 5 cột (0, 1, 2, 3, 4)  
• Mỗi phần tử có kiểu nguyên có dấu, 2 byte  
01-Jan-16  
251  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Khởi tạo giá trị cho mảng  
Các phần tử của mảng có thể được khởi tạo  
giá trị ngay khi khai bá o  
Ví dụ  
int a[4] = {1,4,6,2};  
int b[2][3]={ {1,2,3}, {4,5,6} };  
int t[3][4] = {  
{1, 2, 3, 4},  
{5, 6, 7, 8},  
{9, 10, 11, 12},  
};  
01-Jan-16  
252  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Khởi tạo giá trị cho mảng → Chú ý  
• Số lượng giá trị khởi tạo khô ng được lớn  
hơn số lượng phần tử trong mảng  
– Nếu số lượng này nhỏ hơn, các phần tử còn lại  
được khởi tạo giá trị 0  
int A[3][4] = { {1}, {4,5} };  
int A[3][4] = { };Tất cả đều mang giá trị 0  
• Có thể xác định kích thước mảng thô ng qua  
số giá trị khởi tạo nếu để trống kích thước  
mảng  
int A1 [8] = {2, 4, 6, 8, 10, 12, 14, 16};  
int A2 [] = {2, 4, 6, 8, 10, 12, 14, 16};  
01-Jan-16  
253  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Cá c thao tá c thường gặp  
• Nhập/Xuất dữ liệu cho mảng  
– Mảng 1 chiều, ma trận  
• Bài toá n đếm  
– Đếm số phần tử  
– Tí nh toá n trên các phần tử..  
• Tìm kiếm phần tử  
– Lớn nhất/nhỏ nhất/bất kỳ  
• Sắp xếp phần tử trong mảng  
– Theo thứ tự, theo nguyên tắc  
• Chè n thêm phần tử, xóa phần tử  
01-Jan-16  
254  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Nhập dữ liệu  
Dùng hàm scanf()  
Ví dụ:  
int Table[10];  
• Nhập dữ liệu cho một phần tử  
scanf(“%d”,&Table[2]);phần tử thứ 3 của mảng  
• Nhập dữ liệu cho cả mảng  
– Dùng vòng lặp for  
for(i = 0; i < 10; i++)  
scanf(“%d”,&Table[i]);  
– Nên in ra chỉ số phần tử khi nhập  
printf(“Table[%d] : ”,i); scanf(“%d”,&Table[i])  
01-Jan-16  
255  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Nhập dữ liệu→Ví dụ 1  
Nhập vào lượng mưa (mm) trong năm  
#include <stdio.h>  
#define MONTHS 12  
int main(){  
int rainfall[MONTHS], i;  
for ( i=0; i < MONTHS; i++ ){  
printf(“Nhap luong mưa tháng %d: “, i+1);  
scanf("%d", &rainfall[i] );  
}
return 0;  
}
01-Jan-16  
256  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Nhập dữ liệu→Lưu ý  
• Nếu số phần tử của mảng chỉ được biết tại  
thời điểm thực hiện chương trình (nhưng biết  
số phần tử tối đa)  
– Khai báo mảng với kích thước tối đa  
– Sử dụng biến nguyên lưu số phần tử thực sự của  
mảng.  
Ví dụ:  
• Nhập vào mảng không quá 100 số thực  
– Khai báo mảng thực Table có tối đa 100 phần tử.  
– Nhập số phần tử thực sự của mảng  
– Nhập giá trị cho từng phần phần tử (dùng for)  
01-Jan-16  
257  
Chương 5: Mảng, con trỏ và xâ u ký tự  
5.1 Mảng  
Nhập dữ liệu→Ví dụ 2  
#include<stdio.h>  
void main(){  
floatA[100];  
int n, i;  
do{  
printf(“\n Cho biet so phan tu cua mang: “);  
scanf(“%d”,&n);  
}while (n>100 || n<=0);  
for(i = 0; i < n; i++){  
printf(“A[%d] = ", i); scanf("%f",&A[i]);  
}
}
01-Jan-16  
258  
Tải về để xem bản đầy đủ
pptx 107 trang baolam 16560 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Phần 3: Lập trình C - Chương 5: Mảng, con trỏ và xâu ký tự", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pptxbai_giang_tin_hoc_dai_cuong_phan_3_lap_trinh_c_chuong_5_mang.pptx