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
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:
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 đủ
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:
bai_giang_nhap_mon_lap_trinh_chuong_7_mang_nguyen_minh_huy.pdf

