Tài liệu Ngôn ngữ lập trình - Bài 2: Mảng và con trỏ - Nguyễn Xuân Hùng: Giảng viên: Nguyễn Xuân Hùng
Mobile: 0908 386 366
Email: nguyenxuanhung@wru.vn
BÀI 2. MẢNG VÀ CON TRỎ
NGÔN NGỮ LẬP TRÌNH
Nguyễn Xuân Hùng – Khoa CNTT – Trường Đại học Thủy Lợi
NỘI DUNG
1. Giới thiệu về mảng.
2. Mảng một chiều và mảng nhiều chiều.
3. Mảng trong hàm
4. Kiểu con trỏ
10/17/20142 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.1 Khai báo mảng
• Cú pháp khai báo mảng:
Tên_Kiểu Tên_Mảng[Kích_thước];
Ví dụ:
int a[5];
double x[10];
10/17/20143 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.1 Khai báo mảng
• Chỉ số của mảng: Đối với mảng trong C++ chỉ số mảng
luôn bắt đầu từ 0.
Ví du: với int a[5]; chỉ số của mảng từ 0 đến 4
• Khởi tạo giá trị cho mảng
a[0] = 10;
a[1] = 20; a[4] = 45;
• Duyệt mảng: chúng ta dùng vòng lặp để duyệt từng giá trị
cho mảng
Ví dụ: for(int i = 0; i < 5; i++)
cout<<a[i]<<“\t”;
10/17/20144 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.1 Khai báo mảng
• Các bài tập với mảng 1 chiều:
• Bài 1: Viết một chương trình ...
18 trang |
Chia sẻ: putihuynh11 | Lượt xem: 697 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Ngôn ngữ lập trình - Bài 2: Mảng và con trỏ - Nguyễn Xuân Hùng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Giảng viên: Nguyễn Xuân Hùng
Mobile: 0908 386 366
Email: nguyenxuanhung@wru.vn
BÀI 2. MẢNG VÀ CON TRỎ
NGÔN NGỮ LẬP TRÌNH
Nguyễn Xuân Hùng – Khoa CNTT – Trường Đại học Thủy Lợi
NỘI DUNG
1. Giới thiệu về mảng.
2. Mảng một chiều và mảng nhiều chiều.
3. Mảng trong hàm
4. Kiểu con trỏ
10/17/20142 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.1 Khai báo mảng
• Cú pháp khai báo mảng:
Tên_Kiểu Tên_Mảng[Kích_thước];
Ví dụ:
int a[5];
double x[10];
10/17/20143 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.1 Khai báo mảng
• Chỉ số của mảng: Đối với mảng trong C++ chỉ số mảng
luôn bắt đầu từ 0.
Ví du: với int a[5]; chỉ số của mảng từ 0 đến 4
• Khởi tạo giá trị cho mảng
a[0] = 10;
a[1] = 20; a[4] = 45;
• Duyệt mảng: chúng ta dùng vòng lặp để duyệt từng giá trị
cho mảng
Ví dụ: for(int i = 0; i < 5; i++)
cout<<a[i]<<“\t”;
10/17/20144 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.1 Khai báo mảng
• Các bài tập với mảng 1 chiều:
• Bài 1: Viết một chương trình chấp nhận một mảng số nguyên A có
tối đa 100 phần tử. Hiển thị các phần tử trong mảng và tìm phần tử
lớn nhất của mảng.
• Bài 2: Viết một chương trình chấp nhận một mảng số thực B có tối
đa 200 phần tử. Hiển thị các phẩn tử của mảng và sắp xếp mảng
theo chiều tang dần và hiển thị ra màn hình.
10/17/20145 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.2 Mảng nhiều chiều
• Cú pháp:
Kiểu Tên_mảng[size_dim_1][size_dim_2]..[size_dim_last];
Ví dụ:
char page[30][100];
int matrix[2][3];
double threeDPicture[10][20][30];
10/17/20146 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.2 Mảng nhiều chiều
• Thực thi với mảng nhiều chiều: chúng ta cũng sử dụng
vòng for để nhập các phần tử vào mảng và hiển thị chúng
ra màn hình.
• Ví dụ đối với mảng hai chiều: chúng ta sử dụng 2 vòng
for như sau (với n là số hàng, m là số cột).
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
cout<<a[i][j]<<“\t”;
cout<<endl;
}
10/17/20147 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.2 Mảng nhiều chiều
• Các bài tập với mạng nhiều chiều:
• Bài 1: Cho một mảng hai chiều số thực với tối đa 100 hàng
và 100 cột, tính tổng các phần tử chẵn trong mảng và hiển
thị ra màn hình
• Bài 2: Cho một mảng hai chiều số nguyên với đối đa 100
hàng và 100 cột, xét xem mảng có đối xứng qua đường chéo
chính hay không?
10/17/20148 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.3 Mảng trong hàm
Mảng là đối số của hàm: khi hàm có tham số làm một mảng,
tham số này không phải là tham chiếu cũng không phải tham trị nó
được gọi là tham số mảng.
Cú pháp:
Kiểu_Trả_Về Tên_Hàm(..., Kiểu_cơ_sở Tên_mảng[],...);
Ví dụ: void fillUp(int a[], int size);
//Tiền điều kiện: size là kích thước của mảng a. Người dùng sẽ gõ vào một số nguyên cho biến
size.
//Hậu điều kiện: Mảng a được điền với size số nguyen từ bàn phím
void fillUp(int a[], int size)
{
cout << " Enter " << size << " numbers:\n";
for (int i = 0; i < size; i++)
cin >> a[i];
cout << "Chỉ The last array index used is:" <<(size - 1) << endl;
}
10/17/20149 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.3 Mảng trong hàm
Mảng là đối số của hàm: khi hàm có tham số làm một
mảng, tham số này không phải là tham chiếu cũng không phải
tham trị nó được gọi là tham số mảng.
Ví dụ:
Khi gọi hàm fillUp chúng ta cần truyền đối số tương ứng.
int score[5], numberOfScore = 5;
fillUp(score, numberOfScore);
10/17/201410 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.4 Kiểu con trỏ
Con trỏ: Con trỏ là địa chỉ bộ nhớ của một biến
Biến con trỏ: Một biến dùng để chứa một con trỏ phải được khai
báo kiểu con trỏ.
Cú pháp:
Tên_kiểu *tên_biến1, *tên_biến2,...;
Ví dụ: double * p;
biến p có thể chứa một con trỏ đến một biến kiểu double.
Chúng ta sử dụng toán tử & để xác định địa chỉ của một biến và
có thể gán địa chỉ này cho một biến con trỏ
Ví dụ: p = &v;
biến v được trỏ đến bởi p.
10/17/201411 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.4 Kiểu con trỏ
Ví dụ:
v1 = 0; //gán v1 = 0;
p1 = &v1; //biến con trỏ p1 trỏ tới v1
*p1 = 42; //giải tham chiếu p1 và gán 42
cout << v1 << “\t”;
cout << *p1 << endl;
Kết quả: 42 42
Toán tử * và &
Toán tử * khi đặt trước một biến con trỏ sẽ tạo ra một biến mà con trỏ
đấy trỏ đến. Khi sử dụng theo cách này thì toán tử * được gọi là toán tử
giải tham chiếu.
Toán tử & khi đứng trước một biến thì sẽ cho ta điạ chỉ của biến đó; tức
là nó tạo ra một con trỏ trỏ đến biến đó. Toán tử & thường được gọi là
toán tử địa chỉ.
10/17/201412 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.4 Kiểu con trỏ
Minh họa:
10/17/201413 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.4 Kiểu con trỏ
Toán tử new: tạo ra một biến động của một kiểu xác
định và trả về một con trỏ trỏ đến biến đó.
Ví dụ:
int *p;
p = new int;
Khởi tạo biến con trỏ p, trỏ tới 1 biến kiểu int.
10/17/201414 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.4 Kiểu con trỏ
Minh họa:
10/17/201415 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.4 Kiểu con trỏ
Toán tử delete: sẽ hủy bỏ một biến động và trả về
vùng nhớ mà biến đó chiếm giữ.
Ví dụ: delete p;
biến cn trỏ p là không xác định
10/17/201416 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
5.4 Kiểu con trỏ
Định nghĩa kiểu con trỏ: chúng ta có thể định nghĩa
một tên kiểu con trỏ sao cho các biến con trỏ có thể
khai báo giống như các biến khác.
Ví dụ:
typedef int* IntPtr;
IntPtr p; // tương đương với int* p;
10/17/201417 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
EOF!
10/17/2014Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi18
Các file đính kèm theo tài liệu này:
- nnlt_2_mang_contro_923_1993526.pdf