Mô tả:
Bài giảng Ngôn ngữ lập trình C và C++: Bài 5 - TS. Đỗ Đăng Khoa
Bài giảng Ngôn ngữ lập trình C và C++: Bài 5 Bảng và Con trỏ do TS. Đỗ Đăng Khoa biên soạn cung cấp kiến thức về Khái niệm về Bảng (Mảng), mảng một chiều, khai báo bảng (mảng) một chiều, các qui tắc về bảng (mảng), khởi tạo bảng (mảng) một chiều,...
5/3/2015
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Ngôn ngữ lập trình C và C++
Bài 5: Bảng và Con trỏ
TS. Đỗ Đăng Khoa
Bộ môn Cơ học Ứng dụng
Viện Cơ khí
http://chud-dhbkhn.blogspot.com/
1
5/3/2015
Khái niệm về Bảng (Mảng)
Khi cần lưu trữ một dãy n phần tử dữ liệu chúng ta cần khai
báo n biến tương ứng với n tên gọi khác nhau -> khó khăn để có
thể nhớ và quản lý hết được tất cả các biến
Một bảng trong C/C++ là một tập hợp các phần tử dữ liệu liên
quan có cùng kiểu và được truy cập bởi một tên chung
Tất cả các phần tử của bảng chiếm một tập hợp các vị trí bộ
nhớ liền kề nhau, và sử dụng chỉ số để xác định từng phần tử
Chỉ số bảng bắt đầu từ 0
Mảng có thể có nhiều chiều
Ví dụ: danh sách sinh viên, danh sách điểm số của sinh viên,etc
2 TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
2
5/3/2015
Mảng một chiều
// mảng số nguyên một chiều có 10 phần tử
int A[10];
A[3]=1;
A
0
1
2
--
--
--
3
1
4
5
6
7
8
9
--
--
--
--
--
--
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
3
5/3/2015
Khai báo bảng (mảng) một chiều
Các đặc tính riêng của bảng (mảng) cần được định nghĩa.
Kiểu dữ liệu của các phần tử
Tên mảng:
đại diện cho vị trí phần tử đầu tiên
Kích thước mảng :
một hằng số
Khai báo mảng giống như cách khai báo biến. Chỉ khác là
tên mảng được theo sau bởi một hoặc nhiều biểu thức đặt
trong cặp dấu ngoặc vuông [], để xác định kích thước của
mảng.
int x[20];
// x có thể chứa 20 số nguyên
float price[10];
// price có thể chứa 10 số thực
char letter[70];
// letter có thể chứa tối ña 69 kí tự
do cần cần có kí tự kết thúc không (\0) cuối xâu
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
4
5/3/2015
Các qui tắc về bảng (mảng)
Các phần tử của mảng có cùng kiểu dữ liệu
Mỗi phần tử của mảng có thể được sử dụng như một biến
riêng lẻ
Kiểu dữ liệu của mảng có thể là int, char, float hoặc double
Mảng được “đối xử” không giống hoàn toàn với biến
Hai mảng có cùng kiểu và cùng kích thước cũng không
được xem là tương đương nhau
Không thể gán trực tiếp một mảng cho một mảng khác.
Không thể gán trị cho toàn bộ mảng, mà phải gán trị cho
từng phần tử của mảng
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
5
5/3/2015
Khởi tạo bảng (mảng) một chiều
Mỗi phần tử của một mảng cần được khởi tạo riêng rẽ.
Kiểu_dữ_liệu tên_bảng[kích_thước_mảng] = {ds_các_phần_tử_bảng};
Kiểu_dữ_liệu tên_bảng[] = {ds_các_phần_tử_bảng};
Ví dụ:
int id[7] = {1, 2, 3, 4, 5, 6, 7};
float x[] = {5.6, 5.7, 5.8, 5.9, 6.1};
char vowel[6] = {'a', 'e', 'i', 'o', 'u', '\0'};
// Kí tự NULL được trình biên dịch
tự động thêm vào, do đó vẫn phải dự trữ thêm một chỗ cho
NULL.
Các phần tử của mảng có thể được gán giá trị bằng cách sử
dụng vòng lặp for
char vowel[6] = "aeiou";
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
6
5/3/2015
Sử dụng bảng (mảng) một chiều
Để chỉ thành phần thứ i (hay chỉ số i) của một mảng ta viết
tên mảng kèm theo chỉ số trong cặp ngoặc vuông [].
int id[7] = {1, 2, 3, 4, 5, 6, 7};
cout<> a ;
// sai
mà phải nhập cho từng phần tử từ a[0] đến a[9] của a
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
7
5/3/2015
Ví dụ về mảng một chiều
Tìm số bé nhất của một dãy số. In ra số này và vị trí của nó
trong dãy
void main(){
float a[100], min;// a chứa tối ña 100 số
int i,n,k;
cout << “Nhap so phan tu cua day: " ; cin >> n;
for (i=0; i>
a[i]; }
min = a[0]; k = 0;
for (i=1; i[ñộ dài] ;
// không khởi tạo
char [ñộ dài] = xâu kí tự ;
// có khởi tạo
char [] = xâu kí tự ;
// có khởi tạo
Ví dụ:
char hoten[26] ;
// xâu họ tên chứa tối ña 25 kí tự
char monhoc[31] = "NNLT C++" ;
char thang[] = "Muoi hai" ;
// ñộ dài mảng = 9
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
9
5/3/2015
Sử dụng Xâu/mảng ký tự
Xâu kí tự có những đặc trưng như mảng, tuy nhiên chúng
cũng có những điểm khác biệt
Truy cập một kí tự trong xâu: cú pháp giống như mảng. Ví dụ:
char
phải
cout
'I'
s[1]
s[50] = "I\'m a student" ;/* chú ý kí tự '
ñược viết là \‘ */
<< s[0] ;// in kí tự ñầu tiên, tức kí tự
= 'a' ;
// ñặt lại kí tự thứ 2 là 'a'
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
10
5/3/2015
Sử dụng Xâu/mảng ký tự
Không được thực hiện các phép toán trực tiếp trên xâu như:
char s[20] = "Hello", t[20] ; /* khai báo hai
xâu s và t */
t = "Hello" ;// sai, chỉ gán ñược khi khai báo
t = s ;
// sai, không gán ñược toàn bộ mảng
if (s < t) … // sai, không so sánh ñược hai mảng
Các hàm thư viện xử lý xâu ký tự được khai báo trong file
nguyên mẫu
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
11
5/3/2015
Các hàm xử lý xâu ký tự (chuỗi)
Các hàm xử lý chuỗi được tìm thấy trong thư viện chuẩn
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
12
5/3/2015
Ví dụ về các hàm xử lý xâu ký tự (chuỗi)
Hàm strcpy(s1,s2): Hàm sao chép xâu s2 vào s1
char s[10], t[10] ;
t = "Face" ;
// không ñược dùng
s = t ;
// không ñược dùng
strcpy(t, "Face") ; // ñược, gán "Face" cho t
strcpy(s, t) ;
// ñược, sao chép t sang s
cout << s << " to " << t ;//in ra: Face to Face
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
13
5/3/2015
Ví dụ về các hàm xử lý xâu ký tự (chuỗi)
Hàm strncpy (s1,s2,n): Hàm sao chép n ký tự xâu s2 vào s1
char s[10], t[10] = "Steven";
strncpy(s, t, 5) ;// copy 5 kí tự "Steve" vào s
s[5] = '\0' ;
// ñặt dấu kết thúc xâu
// in câu: Steve is young brother of Steven
cout << s << " is young brother of " << t ;
strncpy(s1+5, s2+3, 2): Câu lệnh này có nghĩa: lấy 2 kí tự thứ
3 và thứ 4 của xâu s2 đặt vào 2 ô thứ 5 và thứ 6 của xâu s1 (chỉ
số bắt đầu từ 0)
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
14
5/3/2015
Ví dụ về các hàm xử lý xâu ký tự (chuỗi)
Hàm strcat (s1,s2): Hàm nối xâu s2 vào s1
char a[100] = “Ban", b[4] = “toi";
strcat(a, “ va ”);
strcat(a, b);
cout << a
// Ban và toi
char s[100] , t[100] = "Steve" ;
strncpy(s, t, 3); s[3] = '\0';
// s =
"Ste"
strcat(s, "p");
// s = "Step"
cout << t << " goes "<< s << " by " <
using namespace std;
double getAverage(int arr[], int size);
int main ()
{
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
avg = getAverage( balance, 5 ) ;
cout << “Gia tri trung binh: " << avg << endl;
return 0;
}
TRƯỜNG ĐẠI HỌC
BÁCH KHOA HÀ NỘI
20
- Xem thêm -