Ngôn ngữ lập trình - Bài 2: Mảng và con trỏ - Nguyễn Xuân Hùng

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 ...

pdf18 trang | Chia sẻ: putihuynh11 | Lượt xem: 519 | Lượt tải: 0download
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:

  • pdfnnlt_2_mang_contro_923_1993526.pdf
Tài liệu liên quan