1. Trang chủ
  2. » Công Nghệ Thông Tin

Kỹ thuật lập trình C/C++-Chương: Hàm docx

21 404 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 323,76 KB

Nội dung

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

Trang 1

Hàm (function)

Trang 2

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:

 <kiểu trả về> <tên hàm>(<danh sách các tham số>) {

Khai báo các biến dùng cho hàm Các câu lệnh của hàm

Trang 4

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:

 int x = 10, y = 20; /* phải khai báo trước hàm sum() */ int sum() {

Trang 5

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 đó

sum(a,b);

return 0;

}

Trang 6

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

Trang 7

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

 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;

Trang 8

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) {

 Hàm void: không trả về giá trị gì

 void copy(int *a, int *b, int n) {

if (a==NULL || b==NULL || a==b || n==0)

return;

for (; n>0; n )

*a++ = *b++;

}

 Câu lệnh return không có tham số

 Không cần lệnh return ở cuối hàm

Đào Trung Kiên – ĐH Bách khoa Hà Nội

Trang 9

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ếtthúc  gán giá trị cho tham số không ảnh hưởng tới biến nơi gọi

assign10(&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

Trang 10

Hàm trả về con trỏ

 Vấn đề với hàm trả về biến địa phương

Trang 11

Nguyên mẫu (prototype) của hàm

 Là việc khai báo hàm trước, nội dung của nó được triển khai sau  thường khai báo ở đầu file hoặc trong file h

 Ví dụ:

 double tong(double x, double y);

double tich(double x, double y);

Trang 12

Hàm đệ quy (recursive function)

Trang 13

Con trỏ hàm

 Là con trỏ trỏ tới một hàm  là một kiểu dữ liệu trong C, thường

được dùng để gọi một hàm chưa biết trước

 double (*SomeOpt)(double, double);

 typedef double (*OptFunc)(double, double);

OptFunc SomeOpt;

 Ví dụ:

 double sum(double x, double y) { return x+y; }

double mul(double x, double y) { return x*y; }

Trang 14

return 0;

}

 Macro có thể được thay thế khi định nghĩa macro khác cùng tên

 Huỷ bỏ macro đã định nghĩa: #undef ERROR

 Kiểm tra xem macro đã định nghĩa chưa

Trang 15

Macro (tiếp)

 Macro có thể có tham số  đôi khi được dùng như hàm

 #define MIN(x,y) x<y ? x:y

Trang 16

Thư viện hàm

Đào Trung Kiên – ĐH Bách khoa Hà Nội

Trang 17

 Dùng thư viện hàm trong một file mã nguồn:

 #include <ten_file.h> /* trong đường dẫn mặc định */

 #include "ten_file.h" /* cùng thư mục với file dịch */

 Dẫn hướng #include có tác dụng như chèn nội dung file được khai báo vào file đang dịch ở vị trí xuất hiện

Trang 18

Lưu ý với tạo và sử dụng file h

 Trong file abcd.h

 Để tránh lỗi khi bị #include nhiều lần, thêm vào đầu và cuối

 #ifndef ABCD_H

#define ABCD_H

/* Nội dung file abcd.h */

#endif

 Các biến toàn cục phải được khai báo trong file c, nếu muốn

được export thì trong file h khai báo thêm bằng extern:

 extern int bien_toan_cuc;

 Sử dụng file abcd.h

 #include "abcd.h" /* h cùng thư mục */

 #include <abcd.h> /* h trong thư mục thư viện */

Đào Trung Kiên – ĐH Bách khoa Hà Nội

Trang 19

Ví dụ: Thư viện tính diện tích các hình

{ return r1*r2*PI; } double dt_vuong(double l)

{ return l*l; } double dt_chu_nhat(double l1, double l2)

Trang 20

Một số thư viện chuẩn

stdio.h Xuất, nhập với màn hình, file, bàn phím,…

ctype.h Kiểm tra các lớp ký tự (chữ số, chữ cái,…)

Trang 21

Bài tập

1. Viết hàm cấp phát bộ nhớ và nhập giá trị cho một mảng, trả về con

trỏ mảng và số phần tử

2. Viết hàm prime(…) trả về mảng các số nguyên tố bé hơn n

3. Định nghĩa mảng các struct MenuItem { Tiêu đề, Hàm xử lý }, in ra

màn hình menu, nhận lựa chọn của người dùng và thực hiện chức năng tương ứng

4. Viết hàm tính số Fibonacci thứ n được định nghĩa:

Fib0 = 0, Fib1 = 1 Fibn = Fibn-1 + Fibn-2 (n ≥ 2)

5. Định nghĩa kiểu chuỗi String và viết thư viện một số hàm xử lý

chuỗi: khởi tạo, copy, nối, tìm kiếm,…

6. Định nghĩa kiểu struct Shape rồi viết thư viện có hàm tính diện

tích, chu vi của hình tuỳ theo dạng của nó Dùng 2 cách: switch và con trỏ hàm

Ngày đăng: 16/03/2014, 09:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w