Bài giảng Kỹ thuật lập trình: Bài 5 - TS. Đào Trung Kiên

pdf
Số trang Bài giảng Kỹ thuật lập trình: Bài 5 - TS. Đào Trung Kiên 22 Cỡ tệp Bài giảng Kỹ thuật lập trình: Bài 5 - TS. Đào Trung Kiên 823 KB Lượt tải Bài giảng Kỹ thuật lập trình: Bài 5 - TS. Đào Trung Kiên 0 Lượt đọc Bài giảng Kỹ thuật lập trình: Bài 5 - TS. Đào Trung Kiên 0
Đánh giá Bài giảng Kỹ thuật lập trình: Bài 5 - TS. Đào Trung Kiên
4.2 ( 5 lượt)
Nhấn vào bên dưới để tải tài liệu
Đang xem trước 10 trên tổng 22 trang, để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

Bài 5: Hàm và thư viện 1 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Hàm (functions) 2 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm Hàm là một khối các câu lệnh thực hiện một nhiệm vụ nhất định, và có thể được gọi khi cần Mỗi hàm có một tên (các hàm trong C không được trùng tên nhau), một số tham số, và một giá trị trả về Sử dụng hàm giúp:      Chia nhỏ chương trình thành nhiều bài toán con Sử dụng lại trong một hoặc nhiều chương trình Cách khai báo:   () { Khai báo các biến dùng cho hàm Các câu lệnh của hàm } Câu lệnh return dùng để thoát khỏi hàm và trả kết quả  3 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Ví dụ Hàm tính tổng hai số   double sum(double x, double y) { double z = x+y; return z; } int main() { double x = 10, y = sum(2,3); printf("x + y = %g", sum(x,y)); return 0; } Các tham số và các biến nội bộ chỉ giới hạn trong phạm vi của hàm  4 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Phạm vi của biến, hằng Biến toàn cục: được khai báo ở ngoài các hàm, có phạm vi trong toàn chương trình và tồn tại trong suốt quá trình chạy Biến địa phương: được khai báo ở trong một hàm hoặc một khối lệnh, chỉ có phạm vi trong hàm/khối đó, và bị huỷ sau khi kết thúc chạy hàm/khối đó    Khai báo biến địa phương sẽ “che” mất biến cùng tên khác có phạm vi rộng hơn  Trong C, biến địa phương phải được khai báo ở đầu hàm hoặc khối lệnh Ví dụ biến địa phương của hàm:   5 int x = 10, y = 20; int sum() { int z = x+y; return z; } int main() { int x = 1, y = 2; int z = sum(); return 0; } /* phải khai báo trước hàm sum() */ /* trả về: 10+20 */ EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Biến trong khối lệnh Trong một khối lệnh { … } ta có thể khai thêm biến, biến đó chỉ tồn tại từ khi chương trình chạy vào tới khi thoát khỏi khối lệnh đó Ví dụ:    6 int x = 1, y = 2; int sum(int x, int y) { return x+y; } int a = 1000, b = 2000; int main() { int x = 10, y = 20; { int x = 100, y = 200; x+y; } x+y; sum(a,b); return 0; } EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Biến trong khối lệnh: vòng lặp Chỉ có phạm vi trong một lần chạy của vòng lặp, mỗi lần lặp sẽ tạo ra biến mới và khởi tạo lại Ví dụ:    7 int x = 20; for (i=0; i<10; i++) { int y = 20; x++; y++; printf("%d %d\n", x, y); } EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Biến static Là biến chỉ có phạm vi địa phương nhưng vẫn tồn tại ngay cả khi chưa vào hoặc đã thoát khỏi hàm/khối Khai báo bằng cách thêm từ khoá static    int callCount() { static int count = 0; count++; return count; } Cũng có biến static toàn cục: thuộc nội bộ của một file nguồn   static int tic_time = 0; void tic() { tic_time = clock(); } int toc() { return clock() - tic_time; } Hàm static: tự tìm hiểu thêm  8 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Câu lệnh return Kết thúc hàm và trả về một giá trị cho nơi gọi nó   int find(int number, int a[], int n) { int i; for (i=0; i0; n--) *a++ = *b++; }  Câu lệnh return không có tham số Không cần lệnh return ở cuối hàm  9 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Tham số kiểu giá trị và kiểu tham chiếu  Tham số của hàm là biến tạm thời, tạo ra khi gọi và huỷ khi hàm kết thúc  gán giá trị cho tham số không ảnh hưởng tới biến nơi gọi  void assign10(int x) { x = 10; } x (int) int main() { int a = 20; copy assign10(a); printf("a = %d", a); a return 0; }  Dùng con trỏ nếu muốn thay đổi giá trị của biến ở nơi gọi   void assign10(int *x) { *x = 10; } int a = 20; assign10(&a); x (int*) copy &a a Tham số con trỏ thường được dùng như một cách khác để trả về thêm giá trị, vì mỗi hàm chỉ có một giá trị trả về theo đúng nghĩa 10 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.