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
255,5 KB
Nội dung
Hàm Chương 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ập trì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 chương trình Elementary Programming 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 Formal Arguments Actual 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 liệu sử dụng đối số Elementary Programming with C/Session 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ả cho chương trình gọi Elementary Programming with 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ố ngun khơng có giá trị trả Tuy nhiên, để tránh không quán, kiểu liệu nên xác định Elementary Programming with C/Session 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 gọi khai báo không tường minh Elementary Programming with C/Session 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ó mức phạm vi Một hàm đị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, &var); Elementary 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 (argument list); Elementary 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]; printf(“testing for equality \n”); int (*p)(); if (!(*cmp)(a,b)) p = strcmp; printf(“Equal”); else gets(s1); printf(“Not Equal”); gets(s2); } check(s1, s2, p); Elementary Programming with C/Session 9/ Slide 20 of 20 }