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

NGÔN NGỮ LẬP TRÌNH C - Hàm, Chương trình con docx

57 862 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Hàm – Chương trình con
Trường học Trường Cao Đẳng Công Nghiệp Tuy Hòa
Chuyên ngành Lập trình C
Thể loại Tài liệu hướng dẫn
Năm xuất bản 2024
Thành phố Tuy Hòa
Định dạng
Số trang 57
Dung lượng 526 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hàm - CT conĐịnh nghĩa hàm thân hàm Vị trí: • Sau phần khai báo toàn cục • Trước hoặc sau hàm main • Thứ tự của các hàm là không quan trong nếu nguyên mẫu của chúng đã được khai báo đầ

Trang 1

Hàm – Chương trình con

NGÔN NGỮ LẬP TRÌNH C

Trang 3

Hàm - CT con

Giới thiệu

• Chương trình sẽ thế nào nếu có 1000

lệnh, tất cả đều nằm trong hàm main?

• Nếu có nhiều người cùng viết 1

chương trình thì phân chia ra sao?

• Nếu muốn thực hiện cùng 1 đoạn lệnh,

1 chức năng nhiều lần, tại nhiều thời

điểm khác nhau trong chương trình thì phải làm thế nào?

Trang 4

Hàm - CT con

Giới thiệu(2)

• Vấn đề có thể được giải quyết nếu ta

chia chương trình ra thành nhiều phần nhỏ.

Trang 5

• Ưu điểm của cách tiếp cận này:

– Giảm độ phức tạp của chương trình

– Tối ưu hóa mã chương trình

– Tăng tính tái sử dụng của CT

– Hỗ trợ khả năng làm việc tập thể

Trang 6

• Thường được đặt ở đầu CT, sau các

khai báo tiền xử lý

• Mỗi hàm chỉ có 1 nguyên mẫu, được viết

trên 1 dòng duy nhât

• Còn được gọi là khai báo hàm

• Có thể có hay không có

Trang 8

– ret_type có thể là void , 1 kiểu bình

thường hay 1 kiểu tự định nghĩa.

– Kiểu trả về mặc định (không chỉ định rõ)

là int.

– FuncName : Tên hàm, do LTV tự đặt.

Trang 9

Hàm - CT con

Nguyên mẫu hàm(4)

– Parameter list là tùy chọn, có thể không

có nếu hàm không cần thêm thông tin gì.

– Các tham số được ngăn cách nhau

bằng dấu phẩy (,) và có dạng như sau:

typename parametername – Tên tham số là tùy chọn trong nguyên

mẫu hàm, nhưng là bắt buộc trong phần định nghĩa hàm

Trang 10

4 int USCLN(unsigned a, unsigned b);

5 void GB2(float a, float b, float c);

Trang 11

Hàm - CT con

Định nghĩa hàm (thân hàm)

Vị trí:

• Sau phần khai báo toàn cục

• Trước hoặc sau hàm main()

• Thứ tự của các hàm là không quan

trong nếu nguyên mẫu của chúng đã

được khai báo đầy đủ

• Không có khái niệm hàm lồng nhau

trong C

Trang 12

Hàm - CT con

Định nghĩa hàm (2)

Cấu trúc chung của 1 hàm:

[ret_type] FuncName([parameter list])

Trang 13

Hàm - CT con

Định nghĩa hàm (3)

Giải thích:

• ret_type : kiểu trả về của hàm, là 1

trong các kiểu cơ bản.

• ret_type cannot be an array

• ret_type là void nếu hàm không trả về

1 giá trị cụ thể nào.

• FuncName : tên tự đặt, theo nguyên tắc

đặt tên.

Trang 14

Hàm - CT con

Định nghĩa hàm (4)

Giải thích :

• parameter list : tập các giá trị mà hàm cần có

để thực hiện công việc của nó.

• Khai báo cục bộ : Khai báo tất cả các hằng,

biến, … được sử dụng trong hàm, không được biết đến bởi các hàm khác.

• Câu lệnh return : trả về kết quả cuối cùng, sau khi hàm đã tính toán xong.

Trang 16

}

Trang 17

outputs

Trang 18

Hàm - CT con

Danh sách tham số (2)

Chú ý quan trọng:

• Tất cả các thông tin cần cho hàm để

nó làm việc cần được truyền cho nó

thông qua tham số.

• Hạn chế tối đa việc dùng các lệnh

nhập trong hàm

• Hạn chế việc sử dụng các biến toàn

cục bên trong hàm

Trang 19

Hàm - CT con

Danh sách tham số (3)

Chú ý quan trọng:

• Tất cả các kết quả của hàm cần được

trả ra bên ngoài , thông qua tham số

và thông qua câu lệnh return

• Hạn chế tối đa việc dùng các lệnh

xuất trong hàm

Trang 22

int i, flag;

flag = (N<2)?0:1;

for(i=2; flag&&i<N; i++)

if (N%i==0) flag = 0;

if (flag) printf(“%d is prime”,N);

else printf(“%d is not prime”,N);

}

Trang 23

if (flag) printf(“%d is prime”,N);

else printf(“%d is not prime”,N);

}

Trang 24

– Nêu tên của hàm cần thực thi.

– Truyền cho nó tất cả các tham số

mà nó cần.

– Nhận lấy kết quả trả về của hàm

(nếu có)

Trang 25

• Hàm gọi: hàm gọi thực hiện hàm khác

và nhận kết quả.

• Hàm bị gọi: hàm bị hàm khác gọi thực

thi để phục vụ hàm đó

Trang 26

void main(){

int i,kq, N=100;

for(i=1; i<N; i++){

kq = isPrime(i); //function call

if (kq) printf(“%5d”, i);

} }

Hàm bị gọi

Hàm gọi

Trang 27

B(…); //calls

}

void B(…) { //declarations

}

Trang 28

trong lời gọi hàm.

• Tham số giữa hàm gọi và hàm bị

gọi phải khớp nhau về số lượng,

về kiểu và thứ tự.

Trang 29

Hàm - CT con

Truyền tham số cho hàm (2)

Các kiểu truyền tham số:

• Tham trị : tham số truyền cho hàm

sẽ không bị thay đổi bởi hàm bị

gọi.

• Tham biến : tham số truyền cho

hàm có khả năng bị hàm làm thay đổi.

Trang 30

void main(){

int x=15, y=6, uc;

// before call x=15 and y=6

uc = USCLN(x,y); //function call

// after call, which value of // x and y do we expect?

printf(“MCD of %d and %d is %d”,x,y,uc);

}

Trang 31

int x=15, y=6;

// before call x=15 and y=6

Swap(x,y); //function call

// after call, which value of // x and y do we expect?

}

Trang 32

Hàm - CT con

Truyền tham số cho hàm (5)

Truyền theo tham trị:

• Cú pháp:

[ret_type] FuncName( type name )

• Một bản sao sẽ được tạo ra để lưu trữ

giá trị của tham số truyền vào.

• Tất cả các thay đổi đều được ghi nhận

lên bản sao.

• Bản sao bị hủy đi khi hàm kết thúc.

• Tất cả các thay đổi không được ghi

nhận lên bản chính

Trang 33

Hàm - CT con

Truyền tham số cho hàm (6)

Truyền theo tham biến:

• Cú pháp:

[ret_type] FuncName( type &name )

• Một tên khác được gán cho tham số

truyền cho hàm bị gọi

• Tất cả thay đổi được thực hiện trực

tiếp trên tham số truyền cho hàm.

• Tất cả thay đổi sẽ được ghi nhận lại.

Trang 34

int x=15, y=6;

// before call x=15 and y=6

Swap(x,y); //function call

// after call, which value of // x and y do we expect?

}

Trang 35

[ret_type] FuncName( type arr[ ] )

[ret_type] FuncName( type arr[MAX] )

• Cú pháp gọi hàm :

[var=]FuncName( arrName );

Trang 36

• Việc truyền mảng cho hàm luôn

luôn là truyền theo tham biến

• Không có dấu ngoặc vuông trong lời

gọi hàm.

Trang 38

// Output M

}

Trang 41

[ret_type] FuncName( type arr[ ][MAXC] )

[ret_type] FuncName( type arr[MAXD][MAXC] )

• Cú pháp gọi hàm :

[var=]FuncName( arrName );

Trang 43

[ret_type] FuncName( char s[ ] )

[ret_type] FuncName( char s[MAX] )

• Cú pháp gọi hàm :

[var=]FuncName( strName );

Trang 44

Hàm - CT con

Tham số là mảng (10)

Chuỗi ký tự:

• Tương tự như mảng 1 chiều, với

kiểu dữ liệu là char

• Không cần truyền chiều dài chuỗi,

có thể được tính bên trong hàm

(dùng strlen ).

Trang 45

return num;

}

Trang 46

– Nếu có, kiểu của giá trị đó là gì?

– Hàm cần bao nhiêu tham số?

– Kiểu của từng tham số là gì?

– Kiểu truyền của từng tham số là gì

(tham trị hay tham biến)?

Trang 47

Hàm - CT con

Các bước xây dựng hàm (2)

– Xây dựng nguyên mẫu hàm sau khi

trả lời tất cả các câu hỏi trên.

– Xây dựng thân hàm bằng cách cài đặt

giải thuật cho nó.

– Chạy thử và kiểm tra hàm – Sửa lỗi (nếu có) và chạy lại cho đến

khi nào hàm không còn lỗi nữa.

Trang 48

• Tìm giá trị lớn nhất, đồng thời cho biết

vị trí xuất hiện đầu tiên của nó

• Chuẩn hóa 1 chuỗi

• Đếm số lần xuất hiện của chuỗi con

trong chuỗi lớn

Trang 50

Hàm - CT con

Các loại biến trong CT (2)

Toàn cục Cục bộ Tĩnh Trong main

Vị trí khai

báo - At the top of the program

- Outside all functions

- At the beginning of the function

- Inside each function

- At the beginning of the function

- Inside each function

- At the beginning of main()

- Inside main function

Vị trí lưu trữ Static Stack Static Stack

Thời điểm

được tạo ra When the program

begins executing

When the function begins executing

When the function executes for the first time

When the program begins executing

Trang 51

Hàm - CT con

Các loại biến trong CT (3)

Toàn cục Cục bộ Tĩnh Trong main

Thời gian

sống During the program

execution time

During the

function

execution time

From creation till program termination

During the

program

execution time

Khả năng

sử dụng - - Globally Can be

accessed in all functions

- Locally

- Only be accessed in one function

- Locally

- Only be accessed in one function

- Locally

- Only be accessed in main()

Trang 52

•Kích thước: 64KB

Code

Static Heap Free Stack

0000 FFFF

Trang 57

– Thân hàm chứa tất cả các câu lệnh để

hàm có thể làm được công việc của nó.

– Các tham số cần được truyền cho hàm

để nó có thể làm việc được.

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm