Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Tin học Bài giảng Ngôn ngữ lập trình C và C++: Bài 5 - TS. Đỗ Đăng Khoa...

Tài liệu Bài giảng Ngôn ngữ lập trình C và C++: Bài 5 - TS. Đỗ Đăng Khoa

.PDF
63
557
61

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[ñộ 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 -

Tài liệu liên quan