Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
163,5 KB
Nội dung
Hàm Bài Mục tiêu học Tìm hiểu cách sử dụng hàm Tìm hiểu cấu trúc hàm Khai báo hàm nguyên mẫu hàm Tìm hiểu kiểu khác biến Hàm gọi Truyền giá trị Truyền tham chiếu Tìm hiểu qui tắc phạm vi hàm Các hàm chương trình có nhiều tập tin Các lớp lưu trữ Con trỏ hàm Elementary Programming with C/Session 9/ Slide of 20 Hàm Hàm đoạn chương trình thực tác vụ định nghĩa cụ thể Các hàm sử dụng để rút gọn cho chuỗi thị thực nhiều lần Hàm dễ viết dễ hiểu Việc gở lỗi chương trình trở nên dễ dàng cấu trúc chương trình rõ ràng với hình thức lậptrình theo module Chương trình cấu tạo từ hàm dễ dàng bảo trì, sửa đổi có yêu cầu giới hạn hàm củaElementary chương Programming trình with C/Session 9/ Slide of 20 Cấu trúc hàm Cú pháp tổng quát hàm C sau: type_specifier xác định kiểu liệu giá trị mà hàm trả Một tên hàm hợp lệ gán cho định danh hàm Các đối số xuất cặp dấu ngoặc () gọi tham số hình thức Elementary Programming with C/Session 9/ Slide of 20 Các đối số hàm Actual Arguments Formal Arguments Chương trình tính bình phương số từ đến 10 Dữ liệu truyền từ hàm main() đến hàm squarer() Hàm thao tác dữElementary liệu sử dụng đối with số C/Session Programming 9/ Slide of 20 Sự trở từ hàm Lệnh return chuyển điều khiển từ hàm trở chương trình gọi Giá trị đặt cặp dấu ngoặc () theo sau lệnh return trảElementary cho chương trìnhwith gọi Programming C/Session 9/ Slide of 20 Kiểu liệu hàm type_specifier không xuất trước hàm squarer(), squarer() trả giá trị kiểu số nguyên int type_specifier không bắt buộc kiểu giá trị trả số nguyên khơng có giá trị trả Tuy nhiên, để tránh không quán, kiểu liệu nên xác định Programming with C/Session Elementary 9/ Slide of 20 Gọi hàm Dấu chấm phẩy đặt cuối câu lệnh gọi hàm, không dùng cho định nghĩa hàm Cặp dấu ngoặc () bắt buộc theo sau tên hàm, cho dù hàm có đối số hay khơng Nhiều giá trị trả Chương trình có nhiều hàm Hàm gọi đến hàm khác gọi hàm gọi Hàm gọi đến gọi hàm gọi Elementary Programming with C/Session 9/ Slide of 20 Khai báo hàm Việc khai báo hàm bắt buộc hàm sử dụng trước định nghĩa #include Hàm address() gọi Main(){ trước định … nghĩa address() … Một số trình biên dịch C } thông báo lỗi hàm address(){ không khai báo trước … gọi } Điều đượcElementary gọi khai báo không tường Programming with C/Session minh 9/ Slide of 20 Nguyên mẫu hàm Xác định kiểu liệu đối số char abc(int x, nt y); Thuận lợi : Bất kỳ chuyển kiểu không hợp lệ đối số dùng để gọi hàm kiểu định nghĩa cho tham số hàm thông báo char noparam (void); Elementary Programming with C/Session 9/ Slide 10 of 20 Các biến Biến cục Được khai báo bên hàm Được tạo điểm vào khối bị hủy điểm khỏi khối Tham số hình thức Được khai báo định nghĩa hàm tham số Hoạt động biến cục bên hàm Biến toàn cục Được khai báo bên tất hàm Lưu giá trị tồn suốt thời gian thực thi chương trình Elementary Programming with C/Session 9/ Slide 11 of 20 Lớp lưu trữ Mỗi biến C có tính chất gọi lớp lưu trữ Lớp lưu trữ định nghĩa hai đặc tính biến: Thời gian sống biến khoảng thời gian trì giá trị xác định Tầm vực biến xác định phần chương trình nhận biến Elementary Programming with C/Session 9/ Slide 12 of 20 Lớp lưu trữ - tt auto extern static register Elementary Programming with C/Session 9/ Slide 13 of 20 Các qui luật phạm vi hàm Các qui luật phạm vi – qui luật định đoạn mã lệnh truy xuất đến đoạn mã lệnh hay liệu khác hay không Mã lệnh bên hàm cục với hàm Hai hàm có phạm vi khác Hai hàm có mức phạm vi Một hàm khơng thể định nghĩa bên hàm khác Elementary Programming with C/Session 9/ Slide 14 of 20 Gọi hàm Truyền tham trị Truyền tham chiếu Elementary Programming with C/Session 9/ Slide 15 of 20 Truyền giá trị Mặc nhiên C, tất đối số truyền giá trị Khi đối số truyền đến hàm gọi, giá trị truyền thông qua biến tạm Mọi thao tác thực biến tạm Các đối số gọi truyền giá trị giá trị biến truyền đến hàm gọi thay đổi giá trị không ảnh hưởng đến giá trị gốc biến truyền Elementary Programming with C/Session 9/ Slide 16 of 20 Truyền tham chiếu Với truyền tham chiếu, hàm cho phép truy xuất đến địa thực nhớ đối số thay đổi giá trị đối số hàm gọi Định nghĩa getstr(char *ptr_str, int *ptr_int); Gọi getstr(pstr,Elementary &var); Programming with C/Session 9/ Slide 17 of 20 Sự lồng lời gọi hàm main() { … palindrome(); … } palindrome() { … getstr(); reverse(); cmp(); … } Elementary Programming with C/Session 9/ Slide 18 of 20 Các hàm chương trình có nhiều tập tin Các hàm định nghĩa static external Các hàm tĩnh (static) nhận biết bên tập tin chương trình phạm vi khơng vượt khỏi tập tin chương trình static fn _type fn_name (argument list); Hàm ngoại (external) nhận biết tất tập tin chương trình extern fn_type fn_name list); Elementary(argument Programming with C/Session 9/ Slide 19 of 20 Con trỏ hàm Lưu địa bắt đầu hàm Hàm có vị trí vật lý nhớ, vị trí gán cho trỏ #include #include void check(char *a, char *b, int (*cmp)()); main() { void check(char *a, char *b, int (*cmp)()) char sl[80]; { int (*p)(); printf(“testing for equality \n”); p = strcmp; if (!(*cmp)(a,b)) printf(“Equal”); gets(s1); else gets(s2); printf(“Not Equal”); Elementary Programming with C/Session check(s1, s2, p); } 9/ Slide 20 of 20 } ... hàm C c hàm chương trình c nhiều tập tin C c lớp lưu trữ Con trỏ hàm Elementary Programming with C /Session 9/ Slide of 20 Hàm Hàm đoạn chương trình th c t c vụ định nghĩa c thể C c. .. để rút gọn cho chuỗi thị th c nhiều lần Hàm dễ viết dễ hiểu Vi c gở lỗi chương trình trở nên dễ dàng c u tr c chương trình rõ ràng với hình th c lập trình theo module Chương trình c u tạo từ... dàng bảo trì, sửa đổi c u c u giới hạn hàm c aElementary chương Programming trình with C /Session 9/ Slide of 20 C u tr c hàm C pháp tổng quát hàm C sau: type_specifier x c định kiểu liệu giá