Chương 4: Sử dụng hàm trong C Mục tiêu của bài học Khái niệm hàm. Cấu trúc của một hàm trong C. Sử dụng hàm. Nguyên mẫu hàm. Định nghĩa hàm. Gọi hàm. Truyền tham số cho hàm Truyền theo tham trị. Truyền theo tham chiếu. Các qui tắc về phạm vi của hàm. Hàm trong các chương trình có nhiều tập tin. Các lớp lưu trữ.
Chương 4 Sử dng hm trong C Mục tiêu của bài học Khi nim hm. Cấu trúc của mt hàm trong C. S dng hm. Nguyên mu hm. Đnh ngha hm. Gi hm. Truyền tham s cho hm Truyền theo tham tr. Truyền theo tham chiu. Cc qui tắc về phạm vi của hm. Hm trong cc chương trình có nhiều tập tin. Cc lớp lưu trữ. 1. Khi nim hm Hàm là mt đoạn chương trình thực hin mt tác v được đnh ngha c thể. Dng để rút gn cho mt chuỗi cc chỉ th được thực hin nhiều lần Hm dễ vit v dễ hiểu Vic g lỗi chương trình trở nên dễ dng hơn . Dễ dng bảo trì (sự sa đổi khi có yêu cầu được giới hạn trong từng hm của chương trình). 2. Cấu trúc hàm Cú pháp của hm: Hm không trả về gi tr: Kiu tr v được xc đnh l void. Hm có thể trả về cc gi tr thuc cc kiểu dữ liu sau: Kiểu dữ liu cơ sở: char, int, float, double. Kiểu con tr. Kiểu dữ liu nâng cao: class, struct. <Kiểu giá trị trả về> Tên_hàm (Danh sách các tham số) { Khai báo: biến, hằng; . . . Các câu lệnh xử lý; . . . Lệnh return; } 2. Cấu trúc hàm S tr v t mt hm: Lnh return: Kt thúc hm, trả về 1 giá tr cho hm gi nó. Sử dng lnh return: return; return (hằng); return (bin); return (biểu thức); return (câu lnh đnh gi); V d: return ( (a>b) ? a:b ); 3. Sử dụng hm Mt chương trình C luôn bắt đầu từ hm main(). Mi hm trong C bắt buc phải được gi trực tip hoc gin tip từ hm main(). V d: Mt chương trình có 4 hm: main, func1, func2, func3. main() { func1(…); func2 (…); } func1(…) { . . . func3 (…); } Hm func1, func2 được gi trực tip từ hm main(). Hm func3 được gi gin tip từ hm main(). Hm phải được đnh ngha hoc khai bo trước khi được gi. 3.1 Nguyên mu hm, đnh ngha hm Mi hm phải được khai bo nguyên mu hoc đnh ngha trước khi được gi (trước hm gi nó). func1 ( ); int main(){ func1(); } func1( ) { return ( ); } func1( ) { return ( ); } int main(){ func1(); } Hoc: Khai bo nguyên mu hm Đnh ngha hm Gi hm 3.2 Gọi hàm C php: Tên_hm (gi tr ca cc đi s truyn vo hm); Hm gi có thể khai bo 1 bin cng kiểu để lưu lại gi tr trả về của hm được gi, v d: int func1(…) { . . . return (…); } int main(){ int s; . . . s = func1(…); } Hm gi Hm được gi Mt li gi hm có thể đt trong mt biểu thức tnh ton hoc mt câu lnh hiển th: printf (“Ket qua = %d”, func(…)) 3.3 Truyn đi số vo hm Truyền tham tr Truyền tham chiu A. Truyn tham tr Mc đnh trong C, tất cả các đi s được truyền bằng tham tr. Giá tr của bin được truyền tới hm gi thông qua bin tạm. Mi sự thao tác chỉ được thực hin trên các bin tạm. Bất k sự thay đổi bo trên gi tr ny đều không ảnh hưởng đn gi tr của bin gc được truyền. V d: [...]... Ví dụ: Ca c biến Biến cu c bộ Tham số hình th c Đư c khai báo bên trong một hàm Đư c tạo tại điểm vào c a một khối và bị hủy tại điểm ra khỏi khối đó Đư c khai báo trong định nghĩa hàm Hoạt động như một biến cu c bộ bên trong một hàm Biến toàn cu c Đư c khai báo bên ngoài tất c c c hàm Lưu c c giá trị tồn tại suốt thời gian th c thi c a chương trình Lớp... c thể truy xuất đến một đoạn mã lệnh hoă c dữ liệu kh c hay không? Mã lệnh bên trong một hàm là cu c bộ với hàm đó Hai hàm c phạm vi kh c nhau Hai hàm c c ng m c phạm vi Một hàm không thể đư c định nghĩa bên trong một hàm kh c Sự lồng nhau c a lời gọi hàm main() { … Sum(); … } Sum() { … CheckPrime(); Display(); … } Ca c hàm trong chương trình c nhiều tập tin C c hàm c ng... C c hàm c ng c thể đư c định nghĩa là static (hàm tĩnh) hoă c external (hàm ngoại) Hàm tĩnh: static Tên hàm (danh sách đối số); Chỉ đư c nhận biết bên trong tập tin chương trình Phạm vi c a hàm không vượt ra khỏi tập tin chương trình Hàm ngoại: extern Tên hàm (danh sách đối số); Đư c nhận biết bởi tất c c c tập tin c a chương trình Hàm đệ quy... 1: Viết chương c chứa hàm đệ quy cho phép tính giai thừa c a một số nguyên dương n n * (n - 1)! n! 0! 1 Bài 2: Viết chương c chứa hàm đệ quy cho phép tính ra số Fibonacy thứ n 1, n = 1,2 Fn= Fn-2 + Fn-1 , n>2 Bài tập về hàm đệ quy Bài 3: Viết chương c chứa hàm đệ quy cho phép tính c ng th c đệ quy lặp sau: 1, n = 1,2 Fn= Fn-2 + Fn-1 , n>2 Bài 4: Viết chương c chứa hàm... lưu trữ Mỗi biến trong C có một tính chất đư c gọi là lớp lưu trữ Lớp lưu trữ định nghĩa hai đă c tính c a biến: Thời gian sống: Là khoảng thời gian biến duy trì một giá trị xa c định Phạm vi: Xa c định ca c phần c a một chương trình c thể nhận ra biến đó Lớp lưu trữ - tt auto extern static register Ca c qui luật phạm vi c a hàm Ca c qui luật phạm vi: Quyết... Truyền tham chiếu Truyền thông qua con trỏ (đề c p trong chương 6) Truyền biến tham chiếu A Truyền tham chiếu (tt) Biến tham chiếu (reference) Là bí danh c a một đối tượng Dùng để tham chiếu tới một biến c ng kiểu trong bộ nhớ C c thao ta c trên biến tham chiếu th c chất là thao ta c đến biến mà nó tham chiếu đến Khai báo: & =