Bài giảng Nhập môn về lập trình - Chương 7: Mảng (array)

Chương 7  
Mang (array)  
̉
Presenter:  
Slide 1  
Nhập môn về lập trình (C7)  
Learning outcomes  
L.O.5.1 – Khai bá o được mảng cá c giá trị.  
L.O.5.2 – Mô tả được cá ch tổ chức bộ nhớ của cá c phần  
tử trong mảng.  
L.O.5.3 – Truy xuất được cá c phần tử của mảng và dùng  
nó trong biểu thức.  
L.O.5.4 – Hiểu được cá ch truyền một mảng vào hàm.  
Slide 2  
Nhập môn về lập trình (C7)  
Dãy một chiều  
❖ Nhập điểm của 10 sinh viên, sau đó sắp xếp điểm theo  
thứ tự tăng dần.  
❖ Ví dụ: nhập 5, 6, 2, 10, 8, 5, 3, 6, 7, 1  
xuất 1, 2, 3, 5, 5, 6, 6, 7, 8, 10  
❖ Khai bá o biến:  
❖ int g1, g2, g2, g4, g5, g6, g7, g8, g9, g10;  
Nhập điểm từ bàn phí m  
Sắp xếp điểm  
In ra màn hì nh  
❖ Mở rộng bài toá n cho 100, 1000 sinh viên???  
Slide 3  
Nhập môn về lập trình (C7)  
Dãy một chiều  
❖ Dã y (cò n gọi là mảng) là một tập hợp cá c biến, gọi là  
phần tử, có cùng một kiểu dữ liệu  
❖ Truy xuất bằng tên dã y và vị trí phần tử (chỉ số - index)  
Slide 4  
Nhập môn về lập trình (C7)  
Dãy mô  
̣
̀
c[ 0 ]  
c[ 1 ]  
c[ 2 ]  
c[ 3 ]  
c[ 4 ]  
c[ 5 ]  
c[ 6 ]  
c[ 7 ]  
c[ 8 ]  
-45  
6
Tên dãy (c)  
0
72  
1543  
-89  
0
Chỉ số đầu tiên là  
zero  
62  
-3  
Chỉ số của phần  
tử  
Slide 5  
Nhập môn về lập trình (C7)  
Dãy một chiều  
❖ Cú phá p  
type name[elements];  
❖ Tên dã y phải phù hợp với quy tắc đặt tên cho định danh.  
❖ Ví dụ:  
int arMyArray[3];  
char arStudentGrade[5];  
▪ Câ u lệnh khai bá o thứ nhất cấp phá t 3 phần tử cho  
arMyArray. Câ u lệnh khai bá o thứ nhất cấp phá t 5 phần tử  
cho arStudentGrade  
Slide 6  
Nhập môn về lập trình (C7)  
Chỉ số của dãy  
❖ Bắt đầu bằng zero (0)  
• Mảng có 9 phần tử, chỉ số cao nhất là 8  
❖ Phải là số khô ng â m và có thể là biểu thức  
int a = 2, b = 3;  
c[ a + b ] += 2; // c[5] += 2  
c[0] dùng để chỉ phần tử thứ nhất trong mảng c.  
c[1] dùng để chỉ phần tử thứ hai trong mảng c.  
c[2] dùng để chỉ phần tử thứ ba trong mảng c.  
Slide 7  
Nhập môn về lập trình (C7)  
Chỉ số của dãy  
void main(){  
int c[9];  
int a = 2, b = 3;  
c[0] = 10;  
c[1] = 5;  
c[2] = 6;  
c[a + b] = 19;  
}
Slide 8  
Nhập môn về lập trình (C7)  
Ví dụ về mảng  
void main(){  
char arStudent[5];  
int i;  
arStudent[0] = 'A';  
arStudent[1] = 'B';  
arStudent[2] = 'C';  
arStudent[3] = 'D';  
arStudent[4] = 'E';  
for(i = 0; i<5; i++)  
printf("%c ", arStudent[i]);  
}
Slide 9  
Nhập môn về lập trình (C7)  
Ví dụ về mảng  
void main(){  
char arStudent[5]={'A', 'B', 'C', 'D', 'E'};  
int i;  
for(i = 0; i<5; i++)  
printf("%c ", arStudent[i]);  
}
Slide 10  
Nhập môn về lập trình (C7)  
Ví dụ về mảng  
void main(){  
int a[12] = { 1, 3, 5, 4, 7, 2, 99, 16, 45, 67, 89, 45 };  
int total = 0, i = 0;  
for (i = 0; i < 12; i++ )  
total += a[ i ];  
printf("Total of array element values is %d", total);  
}
Slide 11  
Nhập môn về lập trình (C7)  
Dãy một chiều  
Định nghĩa  
❖ Dãy (array) là kiểu dữ liệu thuộc dꢀng ghꢁp và dựa vào một  
kiểu dữ liệu khꢂc (kiểu cơ sở).  
❖ Dꢃy là một bộ gꢄm nhiều phần tử cùng kiểu (kiểu cơ sở), dùng  
chung một tên và phân biệt với nhau bởi chỉ số (index).  
Ví dụ :  
int vector[10];  
định nghꢅa biến dꢃy có 10 phần tử int (vector[0] vector[9]).  
vector  
độ lớn = 10*4 = 40 byte  
vector[9]  
vector[0]  
Slide 12  
Nhập môn về lập trình (C7)  
Mảng nhiều chiều  
❖ C cho phꢁp định nghꢅa mảng nhiều chiều. Định nghꢅa  
mảng hai chiều bằng cꢂch sử dụng 2 cặp dấu ngoặc đơn.  
❖ Cꢂch làm này có thể mở rộng cho cꢂc chiều lớn hơn. Mỗi  
khi tăng thêm 1 cặp dấu ngoặc đơn, số chiều tăng lên 1.  
❖ Một số ví dụ về khai bꢂo mảng  
int a[1000];  
int b[3][5];  
int c[7][9][2];  
// mảng 1 chiều  
// mảng 2 chiều  
// mảng 3 chiều  
Trong ví dụ trên, a có 1000 phần tử, b có 3 5 = 15 phần  
tử, c có 7 9 2 = 126 phần tử.  
Slide 13  
Nhập môn về lập trình (C7)  
Mảng 2 chiều  
❖ Cá c phần tử được lưu trữ trong một vùng nhớ liên tục.  
❖ Đối với mảng b, có thể tưởng tượng cá c phần tử được bố  
trí như sau:  
col 1  
col2 col3  
col4  
col5  
row 1 b[0][0]  
row 2 b[1][0]  
row 3 b[2][0]  
b[0][1]  
b[1][1]  
b[2][1]  
b[0][2] b[0][3] b[0][4]  
b[1][2] b[1][3] b[1][4]  
b[2][2] b[2][3] b[2][4]  
Slide 14  
Nhập môn về lập trình (C7)  
❖ Chương trình này kiểm tra một ma trận 2 chiều có đối  
xứng hay không  
for(i= 0; i<N; i++){  
#include<stdbool.h>  
for (j = i+1; j < N; j++){  
if(a[i][j] != a[j][i]){  
const int N = 3;  
void main( )  
symmetr = false;  
break;  
{
}
int i, j;  
int a[N][N];  
bool symmetr = true;  
for ( i=0; i< N; ++i)  
for (j=0; j<N; ++j)  
scanf(“%d”, &a[i][j]);  
}
if(!symmetr)  
break;  
}
if(symmetr)  
printf("\nThe matrix is symmetric\n”);  
else  
printf("\nThe matrix is not symmetric\n”;  
}
Slide 15  
Nhập môn về lập trình (C7)  
Dãy nhiều chiều  
Định nghĩa  
❖ Dãy nhiều chiều là dãy có tꢀ 2 vꢁng chꢂ số trꢃ lên.  
Vꢄ dꢅ:  
double matran[8][8];  
định nghꢅa biến matran là 1 dꢃy gꢄm 8x8 phần tử kiểu double  
(matran[0][0], matran[0][1], . . ., matran[7][7]).  
matran  
matran[0][7]  
matran[7][7]  
matran[0][0]  
độ lớn 512 byte  
float diem[X][Y][Z];  
định nghꢅa biến dãy 3 chiều có X*Y*Z phần tử kiểu float dùng  
trong giải tích 3 chiều. Tọa độ điểm gốc diem[0][0][0].  
Slide 16  
Nhập môn về lập trình (C7)  
Xử lý dãy  
Khở i động trị ban đầu  
❖ Khởi động lꢆc định nghꢅa:  
int so[5] = { 4,1,8,3,2};  
sꢇ gꢂn so[0]=4, so[1]=1, so[2]=8, so[3]=3 và so[4]=2  
❖ Khởi động sử dụng hằng mảng, xem ví dụ.  
• Định nghꢅa  
• Khởi động  
Slide 17  
Nhập môn về lập trình (C7)  
Kiểu chuỗi (string)  
❖ Trong C, chúng ta thường sử dụng mảng của những ký tự  
để biểu diễn chuỗi. Chuỗi là mảng của những ký tự với ký  
tự kết thúc là ký tự null (‘\0’).  
❖ Chuỗi có thể được gá n giá trị khi khai bá o:  
char strg[] = “C++”;  
❖ Biến strg được gá n giá trị ban đầu là “C++”. Lời khai bá o  
tꢀo một mảng gꢄm 4 phần tử lần lượt là ‘C’, ‘+’, ‘+’ và ‘\0’.  
Ký tự null (\0) đꢂnh dấu kết thúc chuỗi.  
❖ Khai bá o trên tự động xá c định kí ch thước mảng dựa trên  
chuỗi gá n.  
Slide 18  
Nhập môn về lập trình (C7)  
Kiểu chuỗi (string)  
❖ Ký tự trong chuỗi được xử lý như phần tử dꢃy  
Ví dụ: hoten[8]='\r‘;  
hoten[ i ]=hoten[ i + 4 ];  
Slide 19  
Nhập môn về lập trình (C7)  
Thư viện string.lib (string.h)  
❖ Một số hàm xử lý chuỗi thường dùng  
strcat / strncat : nối ghꢁp 2 chuỗi.  
strchr :  
tꢈm ký tự trong một chuỗi.  
strcmp / strncmp : so sꢂnh 2 chuỗi.  
strcpy / strncpy : chꢁp chuỗi.  
strlen :  
strstr :  
lấy chiều dài chuỗi (không kể ‘\0’).  
tꢈm chuỗi con trong chuỗi lớn.  
Slide 20  
Nhập môn về lập trình (C7)  
Tải về để xem bản đầy đủ
ppt 25 trang baolam 20340 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn về lập trình - Chương 7: Mảng (array)", để 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:

  • pptbai_giang_nhap_mon_ve_lap_trinh_chuong_7_mang_array.ppt