Bài giảng Nhập môn lập trình - Chương 7: Mảng - Nguyễn Minh Huy

Mꢀng  
GV. Nguyꢀn Minh Huy  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
1
Nꢃi dung  
ꢀ Khái niꢄm mꢅng.  
ꢀ Thao tác trên mꢅng.  
ꢀ Chuꢆi ký tꢇ.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
2
Nꢃi dung  
ꢀ Khái niꢁm mꢀng.  
ꢀ Thao tác trên mꢅng.  
ꢀ Chuꢆi ký tꢇ.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
3
Khái niꢄm mꢅng  
ꢀ Xét chương trình sau:  
ꢀ Nhꢁp 5 sꢈ nguyên, sau đó xuꢉt 5 sꢈ vꢊa nhꢁp.  
ꢁ Khai báo 5 biꢋn int a, b, c, d, e.  
ꢀ Nhꢁp 50 sꢈ nguyên, sau đó xuꢉt 50 sꢈ vꢊa nhꢁp.  
ꢁ Khai báo 50 biꢋn int!!  
ꢂ Làm sao khai báo nhiꢌu biꢋn cùng lúc?  
ꢂ Mꢅng.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
4
Khái niꢄm mꢅng  
ꢀ Mꢅng trong ngôn ngꢍ C:  
ꢀ Mꢅng là mꢃt dãy biꢋn có cùng kiꢎu.  
ꢀ Các biꢋn trong dãy là phꢏn tꢐ mꢅng.  
ꢀ Khai báo:  
<Kiꢎu dꢍ liꢄu> <Tên mꢀng>[ <Sꢈ phꢏn tꢐ> ];  
<Sꢈ phꢏn tꢐ>: phꢅi là mꢃt hꢑng sꢈ.  
int m1[ 10 ];  
float m2[ 50 ];  
// Dãy 10 sꢈ nguyên.  
// Dãy 50 sꢈ thꢇc.  
int N;  
float m3[ N ];  
// Sai  
const int K = 100;  
float m4[ K ];  
// Đúng  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
5
Khái niꢄm mꢅng  
ꢀ Mꢅng trong ngôn ngꢍ C:  
ꢀ Sau khi khai báo, phꢏn tꢐ mꢅng có giá trꢒ bao nhiêu?  
int m[ 5 ];  
m
? ? ? ? ?  
ꢀ Khꢓi tꢔo giá trꢒ mꢅng:  
<Kiꢎu dꢍ liꢄu> <Tên mꢀng>[<Sꢈ phꢏn tꢐ>] = { <Giá trꢂ PT1>, <Giá trꢂ PT2>, ꢕ };  
int m1[5] = { 1, 2, 3, 4, 5 }; m1  
// Khꢓi tꢔo tꢉt cꢅ phꢏn tꢐ  
1 2 3 4 5  
1 2 0 0 0  
0 0 0 0 0  
1 2 3 4 5  
int m2[5] = { 1, 2 };  
int m3[5] = { 0 };  
m2  
m3  
// Khꢓi tꢔo vài phꢏn tꢐ đꢏu  
// các phꢏn tꢐ sau tꢉt cꢅ = 0  
// Khꢓi tꢔo tꢉt cꢅ = 0  
int m3[ ] = { 1, 2, 3, 4, 5 }; m3  
// Tꢇ đꢃng biꢋt sꢈ phꢏn tꢐ  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
6
Khái niꢄm mꢅng  
ꢀ Mꢅng trong ngôn ngꢍ C:  
ꢀ Truy xuꢉt phꢏn tꢐ mꢅng:  
<Tên mꢅng> [ <Chꢃ sꢄ mꢀng> ]  
<Chꢖ sꢈ mꢅng>: mꢃt sꢈ nguyên tꢊ 0 đꢋn <Sꢄ phꢅn tꢆ> ꢇ 1.  
0 1 2 3 4 5 6 7 8 9  
0 0 0 0 0 0 0 0 0 0  
int
a[ 10 ]
= { 0 };  
a
a[ 0 ] = 5;  
a[ 1 ] = 6;  
a[ 2 ] = a[ 0 ] + a[ 1 ];  
a[ ꢇ1 ] = 7;  
a[ 10 ] = 8;  
// Sai  
// Sai  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
7
Khái niꢄm mꢅng  
ꢀ Mꢅng trong ngôn ngꢍ C:  
ꢀ Truyꢌn tham sꢈ mꢅng:  
ꢁ Khai báo tham sꢈ mꢅng giꢈng biꢋn mꢅng.  
void foo( int a[ 100 ], int size );  
ꢁ Khai báo tham sꢈ mꢅng có thꢎ bꢗ sꢈ phꢏn tꢐ.  
void foo( int a[ ], int size );  
ꢁ Phꢏn tꢐ mꢅng có thꢎ bꢒ thay đꢘi sau khi ra khꢗi hàm.  
void foo( int a[ ], int size )  
{
void main()  
{
a[ 2 ] = 9;  
a[ 5 ] = 8;  
int a[ 100 ] = { 0 };  
}
foo( a, 100 );  
// a[2], a[5] bꢒ thay đꢘi.  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
8
Nꢃi dung  
ꢀ Khái niꢄm mꢅng.  
ꢀ Thao tác trên mꢀng.  
ꢀ Chuꢆi ký tꢇ.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
9
Thao tác trên mꢅng  
ꢀ Cách thꢙc chung:  
ꢀ B1: Duyꢄt mꢅng.  
ꢁ Dùng vòng lꢈp + biꢉn đꢉm.  
ꢁ Mꢆi vòng lꢚp ꢃ xét mꢃt phꢏn tꢐ.  
ꢀ B2: Thao tác trên tꢊng phꢏn tꢐ.  
ꢁ Dùng biꢋn đꢋm truy xuꢉt phꢏn tꢐ.  
// Duyꢄt mꢅng M có kích thưꢛc N.  
for ( int i = 0; i < N; i++ )  
{
<Lꢄnh truy xuꢉt phꢏn tꢐ M[ i ]>;  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
10  
Thao tác trên mꢅng  
ꢀ Nhꢁp mꢅng:  
#define MAX 100  
// Nhꢁp mꢅng sꢈ nguyên a, kích thưꢛc n  
void nhapMang( int a[ ], int &n )  
{
void main()  
{
printf(“Nhap kich thuoc = “);  
scanf(“%d”, &n);  
int a[ MAX ], size1;  
int b[ MAX ], size2;  
for (int i = 0; i < n; i++)  
nhapMang(a, size1);  
nhapMang(b, size2);  
{
printf(“Nhap phan tu %d = “, i);  
}
scanf(“%d”, &a[ i ]);  
}
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
11  
Thao tác trên mꢅng  
ꢀ Xuꢉt mꢅng:  
#define MAX 100  
// Xuꢉt mꢅng sꢈ nguyên a, kích thưꢛc n  
void xuatMang( int a[ ], int n )  
void main()  
{
{
for ( int i = 0; i < n; i++ )  
int a[ MAX ], size1;  
printf(“%d “, a[ i ]);  
int b[ MAX ], size2;  
}
nhapMang(a, size1);  
nhapMang(b, size2);  
xuatMang(a, size1);  
xuatMang(b, size2);  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
12  
Thao tác trên mꢅng  
ꢀ Tính tꢘng phꢏn tꢐ mꢅng:  
#define MAX 100  
// Tính tꢘng mꢅng a, kích thưꢛc n  
long tinhTong( int a[ ], int n )  
void main()  
{
{
long tong = 0;  
int a[ MAX ], size1;  
int b[ MAX ], size2;  
for ( int i = 0; i < n; i++ )  
tong += a[ i ];  
nhapMang(a, size1);  
nhapMang(b, size2);  
return tong;  
}
long tong1 = tinhTong(a, size1);  
long tong2 = tinhTong(b, size2);  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
13  
Nꢃi dung  
ꢀ Khái niꢄm mꢅng.  
ꢀ Thao tác trên mꢅng.  
ꢀ Chuꢊi ký tꢋ.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
14  
Chuꢆi ký tꢇ  
ꢀ Chuꢆi ký tꢇ trong C:  
ꢀ Chuꢆi ký tꢇ = mꢅng ký tꢇ + phꢅn tꢆ cuꢄi ‘\0’.  
ꢂ Chiꢌu dài chuꢆi = sꢈ phꢏn tꢐ mꢅng – 1;  
ꢀ Khai báo chuꢆi:  
char <Tên chuꢊi> [ <Chiꢌu dài chuꢆi> + 1 ];  
0 1 2 3 4  
char s1[ 5 ];  
s1  
? ? ? ? \0  
ꢀ Khꢓi tꢔo chuꢆi:  
char <Tên chuꢆi> [ ] = “<Chuꢊi khꢌi tꢍo>”;  
0 1 2 3 4 5  
char s2[ ] = “Hello”; s1  
// Khꢓi tꢔo chuꢆi  
H e l l o \0  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
15  
Chuꢆi ký tꢇ  
ꢀ Thao tác trên chuꢆi ký tꢇ:  
#define MAX 100  
ꢀ Nhꢁp chuꢆi:  
ꢁ scanf(“%s”, &chuoi).  
ꢂ Chꢖ nhꢁp tꢊ đꢏu tiên.  
ꢁ gets(chuoi);  
void main()  
{
char s1[ MAX ];  
char s2[ MAX ];  
ꢂ Nhꢁp nguyên chuꢆi.  
printf(“Nhap chuoi s1 = “);  
ꢀ Xuꢉt chuꢆi:  
ꢁ printf(“%s”, chuoi).  
ꢁ puts(chuoi).  
scanf(“%s”, &s1);  
printf(“Nhap chuoi s2 = “);  
gets(s1);  
printf(“Chuoi s1 = %s”, s1);  
puts(s2);  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
16  
Chuꢆi ký tꢇ  
ꢀ Thao tác trên chuꢆi ký tꢇ:  
ꢀ Thư viꢄn <string.h>: #include <string.h>  
ꢁ strlen(chuoi): đꢋm chiꢌu dài chuꢆi.  
char s1[ ] = “Hello World”;  
char s2[ ] = “Hello World\n”;  
// Tꢇ thêm ‘\0’ ꢓ cuꢈi.  
// Tꢇ thêm ‘\0’ ꢓ cuꢈi.  
char s3[ ] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘ ‘, ‘W’, ‘o’, ‘r’, ‘l’, ‘d’, ‘\n’, ‘\0’ };  
int chieuDai1 = strlen(s1); // chieuDai1 = 11  
int chieuDai2 = strlen(s2); // chieuDai2 = 12  
int chieuDai3 = strlen(s3); // chieuDai3 = 12  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
17  
Chuꢆi ký tꢇ  
ꢀ Thao tác trên chuꢆi ký tꢇ:  
ꢀ Viꢋt hoa chꢍ cái đꢏu mꢆi tꢊ:  
#include <string.h>  
#define MAX 100  
void vietHoa( char s[ ] )  
void main()  
{
{
for (int i = 0; i < strlen(s); i++)  
if ( s[ i ] >= ‘a’ && s[ i ] <= ‘z’ &&  
( i == 0 || s[ i ꢂ 1 ] == ‘ ‘ ) )  
s[ i ] = s[ i ] ꢂ 32;  
char s[MAX];  
printf(“Nhap chuoi s = “);  
gets(s);  
}
vietHoa(s);  
printf(“%s\n”, s);  
}
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
18  
Tóm tꢜt  
ꢀ Khái niꢄm mꢅng:  
ꢀ Dãy biꢋn cùng kiꢎu.  
ꢀ Các biꢋn trong dãy là phꢏn tꢐ mꢅng.  
ꢀ Thao tác trên mꢅng:  
ꢀ Thao tác chung: duyꢄt + thao tác tꢊng phꢏn tꢐ.  
ꢀ Chuꢆi ký tꢇ:  
ꢀ Mꢅng ký tꢇ kꢋt thúc bꢑng ‘\0’.  
ꢀ Nhꢁp xuꢉt: printf, scanf, gets, puts.  
ꢀ Đꢋm chiꢌu dài: strlen (thư viꢄn <string.h>).  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
19  
Bài tꢁp  
ꢀ Bài tꢁp 7.1:  
Viꢋt chương trình C như sau:  
(tꢘ chꢙc theo dꢔng hàm và chia làm nhiꢌu file):  
ꢂ Nhꢁp vào mꢅng N sꢈ nguyên.  
ꢂ Hãy cho biꢋt:  
a) Có bao nhiêu sꢈ chꢝn trong mꢅng.  
b) Có bao nhiêu sꢈ âm trong mꢅng.  
c) Có bao nhiêu sꢈ nguyên tꢈ trong mꢅng.  
Nhꢁp môn lꢁp trình ꢂ GV. Nguyꢀn Minh Huy  
20  
Tải về để xem bản đầy đủ
pdf 24 trang myanh 25260 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn lập trình - Chương 7: Mảng - Nguyễn Minh Huy", để 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:

  • pdfbai_giang_nhap_mon_lap_trinh_chuong_7_mang_nguyen_minh_huy.pdf