Ôn tập kỹ thuật lập trình

− Khi định nghĩa hàm, ta luôn khai báo tường minh giá trị trả về khi hàm thực hiện xong. − Cú pháp: (danh sách các tham số) { //Thân hàm return //cùng kiểu dữ liệu với hàm }

pdf16 trang | Chia sẻ: lylyngoc | Lượt xem: 1625 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Ôn tập kỹ thuật lập trình, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Ôn tập kỹ thuật lập trình GV: Nguyễn Hữu Thể Khoa CNTT – Đại Học Cửu Long CTDL1- Nguyễn Hữu Thể 2 NỘI DUNG Hàm và thủ tục1 Con trỏ2 5 CTDL1- Nguyễn Hữu Thể 3 I. Hàm và thủ tục I.1. Hàm − Khi định nghĩa hàm, ta luôn khai báo tường minh giá trị trả về khi hàm thực hiện xong. − Cú pháp: (danh sách các tham số) { //Thân hàm return //cùng kiểu dữ liệu với hàm } CTDL1- Nguyễn Hữu Thể 4 I.1. Hàm Ví dụ: tính tổng 2 số nguyên a, b. Trả về giá trị là tổng 2 số Gọi hàm trong main() int TinhTong(int a, int b) { int tong; tong = a + b; return tong; } int TinhTong(int a, int b) { return (a+b); } void main() { int a=4, b=5; int tmp; tmp = TinhTong(a,b); printf(“Tong 2 so:%d” ,tmp); } void main() { int a=4, b=5; printf(“Tong 2 so la: %d”, TinhTong(a,b)); } CTDL1- Nguyễn Hữu Thể 5 I.2. Thủ tục (Hàm không có giá trị trả về) − Thủ tục không trả về giá trị, ta dùng từ khóa void để khai báo kiểu dữ liệu. − Cú pháp: void (danh sách các tham số) { //Thân hàm, xử lý các dữ liệu //Nếu cần biết thông tin dl thì in ra màn hình } CTDL1- Nguyễn Hữu Thể 6 I.2. Thủ tục Ví dụ: tính tổng 2 số nguyên a, b. In kết quả ra màn hình Gọi hàm trong main() void TinhTong(int a, int b) { int tong; tong = a + b; printf(“%d”,tong); } void TinhTong(int a, int b) { printf(“%d”,(a+b)); } void main() { int a=4, b=5; TinhTong(a,b); } void main() { TinhTong(4,5)); } CTDL1- Nguyễn Hữu Thể 7 Cách tổ chức mã nguồn trong C Cách 1: khai báo prototype Cách 2: để hàm main sau cùng #include #include //khai báo prototype void TinhTong(int a, int b); void main() { int a=4, b=5; TinhTong(a,b); getch(); } void TinhTong(int a, int b) { int tong; tong = a + b; printf(“%d”,tong); } #include #include void TinhTong(int a, int b) { int tong; tong = a + b; printf(“%d”,tong); } void main() { int a=4, b=5; TinhTong(a,b); getch(); } CTDL1- Nguyễn Hữu Thể 8 II. Con trỏ II.1 Truy cập địa chỉ − Trong các ngôn ngữ lập trình, khi một biến được khai báo, ba thuộc tính cơ bản sau được liên kết đến nó:  Tên định danh của biến  Kiểu dữ liệu liên quan  Địa chỉ trong bộ nhớ Ví dụ: khai báo biến int n = 10; n là tên định danh của biến, có kiểu int và được lưu trữ đâu đó trong bộ nhớ máy tính.  Xuất: printf(“%d”,n); //in nội dung biến printf(“%0X”,&n);//in địa chỉ của biến … … … 10Địa chỉ: FFF0 Nội dung ô nhớ CTDL1- Nguyễn Hữu Thể 9 II.1 Truy cập địa chỉ Ví dụ: void main() { int n=10; printf(“%d”,n); //in nội dung biến printf(“%0X”,&n);//in địa chỉ của biến } Kết quả thực hiện như sau: • Ta thấy giá trị của n là 10 • Địa chỉ biến n theo số hexa là FFF0 10 FFF0 CTDL1- Nguyễn Hữu Thể 10 II.2 Biến tham chiếu − Dùng một biến khác truy cập đến cùng một địa chỉ với biến đã có, ta sử dụng biến tham chiếu (references) − Cú pháp: type& alias = name  type: kiểu dữ liệu  alias: tên biến tham chiếu  name: tên của biến mà biến alias tham chiếu đến void main() { int n=10; int& r=n; printf(“n=%d, r=%d”,n,r); n++; printf(“n=%d, r=%d”,n,r); } Kết quả n = 10, r = 10 n= 11, r = 11 CTDL1- Nguyễn Hữu Thể 11 II.3. Biến con trỏ − Dùng để lưu địa chỉ bộ nhớ của một đối tượng. − Cú pháp: type* var  type: kiểu dữ liệu  var: biến con trỏ Ví dụ: int x=10; int* p; p=&x; //p lưu địa chỉ của x, hay p trỏ đến x  Ghi chú: (*p): nội dung của p toán tử (*): toán tử đọc nội dung gián tiếp thông qua con trỏ. CTDL1- Nguyễn Hữu Thể 12 II.3. Biến con trỏ Ví dụ:void main() { int x=10; int* p=&x; //p tr? d?n x printf("Dia chi cua x: %0X \n",&x); printf("Noi dung cua x: %d \n",x); printf("Dia chi cua p: %0X \n",&p); printf("Noi dung cua p: %0X",p); printf("Noi dung tai dia chi ma p tro den: %d",*p); } FFEE (&p) FFF0 (&x) Địa chỉ FFF0 (&x hay p=&x) p 10 (x) x Nội dung (giá trị)Biến CTDL1- Nguyễn Hữu Thể 13 Ví dụ void HoanVi_1(int a, int b) { int tmp = a; a = b; b = tmp; } void HoanVi_2(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } void HoanVi_3(int &a, int &b) { int tmp = a; a = b; b = tmp; } void main() { int a = 1, b = 2; HoanVi_1(a, b); printf("a = %d",a); printf("b = %d",b); } void main() { int *a = 1, *b = 2; HoanVi_2(a, b); printf("a = %d",*a); printf("b = %d",*b); } void main() { int a = 1, b = 2; HoanVi_3(a, b); printf("a = %d", a); printf("b = %d", b); } CTDL1- Nguyễn Hữu Thể 14 II.4. Con trỏ và mảng − Con trỏ và mảng 1 chiều int a[] = {4,5,7,9}; Truy xuất phần tử thứ hai a[1]=5  Sử dụng con trỏ: • Tên mảng xem như con trỏ • Truy xuất phần tử thứ i: a[i] hay *(a+i) − Con trỏ và mảng 2 chiều int a[2][3]={{4,5,7}, {9,10,12}}; Truy xuất phần tử thứ i=1,j=1 là: a[1][1]=10  Sử dụng con trỏ: • Tên mảng xem như con trỏ • Truy xuất phần tử thứ i,j: a[i][j] hay *(*(a+i)+j) CTDL1- Nguyễn Hữu Thể 15 Bài tập 1. Cho mảng 1 chiều int a[] = {4,5,7,9} Viết thủ tục xuất giá trị mảng ra màn hình (sử dụng con trỏ truy xuất mảng). 2. Cho mảng 2 chiều int a[2][3]={{4,5,7},{9,10,12}}; Viết thủ tục xuất giá trị mảng ra màn hình (sử dụng con trỏ truy xuất mảng). 16