Bài giảng Lập trình nâng cao: Bài 2+3 - Trương Xuân Nam
lượt xem 3
download
Bài giảng Lập trình nâng cao: Bài 2+3 Hàm trong C/C++ cung cấp cho người học những kiến thức như: Cấu chúc chung của hàm; Hiểu về cách hàm hoạt động; Các hàm có sẵn; Phạm vi của biến và của hàm; Truyền tham số trong hàm; Nạp chồng hàm; Hàm đệ quy. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình nâng cao: Bài 2+3 - Trương Xuân Nam
- LẬP TRÌNH NÂNG CAO Bài 2+3: Hàm trong C/C++ TRƯƠNG XUÂN NAM 1
- Nội dung chính 1. Cấu chúc chung của hàm 2. Hiểu về cách hàm hoạt động 3. Các hàm có sẵn 4. Phạm vi của biến và của hàm 5. Truyền tham số trong hàm 6. Nạp chồng hàm 7. Hàm đệ quy 8. Bài tập Trương Xuân Nam - Khoa CNTT 2
- Phần 1 Cấu chúc chung của hàm TRƯƠNG XUÂN NAM 3
- Cấu chúc chung của hàm #include ▪ Đã học trong Nhập môn using namespace std; Lập trình ▪ Định nghĩa hàm (function // hàm mu3: tính a^3 definition) gồm 2 phần: int mu3(int a) ▪ Phần khai báo (function { declaration / function int b = a * a * a; prototype) return b; ▪ Phần thân (function body) } ▪ Gọi hàm: int main() { ▪ Thông qua tên cout
- Cấu chúc chung của hàm #include ▪ Phần khai báo hàm có thể using namespace std; tách riêng // hàm mu3: tính a^3 ▪ Thường viết ở phần đầu int mu3(int a); của file hoặc tách riêng thành một file (gọi là file int main() { header) cout
- Cấu chúc chung của hàm #include ▪ Phần khai báo hàm không using namespace std; cần viết tên tham số // hàm mu3: tính a^3 ▪ Vẫn phải viết kiểu trả về và int mu3(int); tên hàm. Riêng phần tham số chỉ cần viết kiểu và bỏ int main() { qua phần tên cout
- Cấu chúc chung của hàm #include ▪ Phần khai báo hàm không using namespace std; cần viết tên tham số // hàm mu3: tính x^3 ▪ Thậm chí tên tham số ở int mu3(int x); trên viết một đằng ở dưới viết một nẻo vẫn được int main() { chấp nhận cout
- Cấu trúc của một chương trình C/C++ #include ▪ Tiền xử lý: using namespace std; ▪ #include const int MAX = 100; ▪ #define double PI = 3.1415; ▪ Khai báo, định nghĩa: int mu3(int); ▪ Hằng số int main() { ▪ Biến cout
- Quy tắc ▪ Khai báo hàm: cung cấp thông tin nguyên mẫu của hàm ▪ Mô tả đủ thông tin để có thể phát lời gọi hàm ▪ Phải viết trước bất kỳ lời gọi hàm nào ▪ Phải có kiểu trả về của hàm ▪ Phải có tên hàm ▪ Phải có kiểu của từng tham số ▪ Không nhất thiết phải có tên tham số ▪ double mu_x(int, double); ▪ double mu_x(int a, double d); ▪ Gọi hàm: gọi tên hàm và các đối số cần thiết ▪ d = mu_x(3, 0.5); ▪ Những giá trị thực sự được dùng trong lời gọi hàm được gọi là đối số (argument) hoặc tham số thực (actual parameter) TRƯƠNG XUÂN NAM 9
- Quy tắc ▪ Định nghĩa hàm: viết đầy đủ cả phần khai báo và phần thân hàm ▪ Tất nhiên phải viết đầy đủ tên các tham số (parameter) để có thể sử dụng được chúng trong phần thân hàm ▪ Còn gọi là các tham số hình thức (formal parameter) ▪ Trả về kết quả thông qua lệnh return ▪ Nếu hàm không có kết quả tính toán (chẳng hạn hàm in N số ra màn hình), thì khai báo kiểu void và không cần return nữa ▪ double mu_x(int a, double d) { double k = 1; for (int i = 0; i < a; i++) k *= d; return k } TRƯƠNG XUÂN NAM 10
- Thảo luận ▪ Mục đích của việc sử dụng hàm? ▪ Tái sử dụng: Mã được viết một lần, sử dụng nhiều lần ▪ Giảm chi phí: Sửa lỗi, nâng cấp ở một đoạn mã ▪ Dễ phát triển: Chia chương trình phức tạp thành nhiều đơn thể, giảm độ phức tạp khi viết các khối mã ▪ Tại sao phải tách phần nguyên mẫu và phần thân hàm? ▪ Tập trung vào các chức năng ▪ Phát triển song song ▪ Hàm: hiện thực hóa ý tưởng “trừu tượng hóa chức năng” (functional abstraction) ▪ Người dùng chỉ cần biết đến chức năng của mã ▪ Người dùng không cần quan tâm đến chi tiết của mã TRƯƠNG XUÂN NAM 11
- Phần 2 Hiểu về cách hàm hoạt động TRƯƠNG XUÂN NAM 12
- Hiểu về cách hàm hoạt động #include ①Phát lời gọi hàm using namespace std; ②Gán giá trị thực cho double mu_x(int, double); tham số: a = 3, d = 0.5 int main() { ③Vào thân hàm cout
- Phần 3 Các hàm có sẵn TRƯƠNG XUÂN NAM 14
- Các hàm có sẵn ▪ Các hàm có sẵn do các lập trình viên khác viết ra và cung cấp cho chúng ta sử dụng ▪ Hàm chuẩn của C/C++ đi kèm với trình biên dịch ▪ Hàm do các đồng nghiệp trong cùng dự án viết cho chúng ta ▪ Cung cấp ở dạng thư viện, chỉ việc khai báo và sử dụng ▪ Thư viện thường gồm 2 loại file: • File header: chỉ chứa các khai báo hàm (.h, .hpp hoặc không đuôi) • File source: chứa phần thân hàm (.c, .cpp) ▪ Khai báo thư viện thông qua phát biểu #include ▪ Phát biểu #include phải chỉ ra file header sẽ sử dụng ▪ #include ← tìm file trong thư mục chuẩn ▪ #include "mylib" ← tìm file trong thư mục hiện tại TRƯƠNG XUÂN NAM 15
- Các hàm có sẵn TRƯƠNG XUÂN NAM 16
- Các hàm có sẵn TRƯƠNG XUÂN NAM 17
- Tạo số ngẫu nhiên ▪ Một trong những vấn đề thú vị nhất ▪ Tạo các tình huống ngẫu nhiên trong chương trình, trò chơi ▪ Tạo các biến ngẫu nhiên trong tính toán khoa học ▪ Chỉ là giả-ngẫu-nhiên ▪ Một số kĩ thuật lưu ý: ▪ rand(): trả về giá trị nguyên giữa 0 & RAND_MAX • RAND_MAX tùy thuộc vào từng thư viện và trình biên dịch ▪ Thu hẹp phạm vi: rand() % 6 • Trả về số ngẫu nhiên giữa 0 & 5 ▪ Tịnh tiến: rand() % 6 + k • Trả về số ngẫu nhiên giữa k & 5+k ▪ Số thực ngẫu nhiên: rand() / (double) RAND_MAX ▪ Khởi tạo nhân cho việc tạo số ngẫu nhiên: srand(time(0)) TRƯƠNG XUÂN NAM 18
- Phần 4 Phạm vi của biến và của hàm TRƯƠNG XUÂN NAM 19
- Quy tắc ▪ Biến chỉ có thể truy cập sau khi đã khai báo ▪ Biến được khai báo bên trong khối nào (giữa cặp ngoặc {} nào) thì chỉ được truy cập bên trong khối đó ▪ Biến không nằm trong bất kỳ cặp ngoặc nào: biến toàn cục (global variable) ▪ Biến nằm trong hàm: biến cục bộ (local variable) ▪ Biến tham số của hàm được sử dụng trong hàm ▪ Biến global: ▪ Có thể truy cập từ bất kỳ đâu trong chương trình ▪ Chú ý: một chương trình có thể gồm nhiều file ▪ Có thể truy cập biến ở trong file khác: từ khóa extern ▪ Rất cẩn thận khi sử dụng TRƯƠNG XUÂN NAM 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình nâng cao với Java
170 p | 98 | 14
-
Bài giảng Lập trình nâng cao: Giới thiệu môn học - Trần Quốc Long
16 p | 74 | 7
-
Bài giảng Lập trình nâng cao: Hàm - Trần Quốc Long
34 p | 63 | 6
-
Bài giảng Lập trình nâng cao: Phát triển chương trình - Trần Quốc Long
38 p | 78 | 6
-
Bài giảng Lập trình nâng cao: Hoạt hình, tách file - Trần Quốc Long
28 p | 66 | 6
-
Bài giảng Lập trình nâng cao: Hướng đối tượng - Nguyễn Thị Tú Mi
117 p | 65 | 5
-
Bài giảng Lập trình nâng cao: Bài 7 - Lý Anh Tuấn
33 p | 67 | 5
-
Bài giảng Lập trình nâng cao: Tìm kiếm và đếm - Trần Quốc Long
54 p | 70 | 5
-
Bài giảng Lập trình nâng cao - Chương 0: Giới thiệu môn học
6 p | 80 | 4
-
Bài giảng Lập trình nâng cao: Bài 6 - Lý Anh Tuấn
28 p | 48 | 4
-
Bài giảng Lập trình nâng cao: Bài 4+5+6 - Trương Xuân Nam
25 p | 34 | 4
-
Bài giảng Lập trình nâng cao: Bài 0 - Hoàng Thị Điệp
7 p | 83 | 3
-
Bài giảng Lập trình nâng cao: Chương 5 - Lý Anh Tuấn
54 p | 27 | 2
-
Bài giảng Lập trình nâng cao: Chương 1 - Lý Anh Tuấn
26 p | 35 | 2
-
Bài giảng Lập trình nâng cao - Chương 0: Giới thiệu môn học, Warm up Game over
16 p | 5 | 1
-
Bài giảng Lập trình nâng cao - Chương 1: Simple Calculator (Ôn tập)
18 p | 5 | 1
-
Bài giảng Lập trình nâng cao - Chương 2: Game Guess it (Hàm)
34 p | 4 | 1
-
Bài giảng Lập trình nâng cao - Chương 3: Game Hangman (Phát triển chương trình)
38 p | 8 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn