1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ngôn Ngữ Lập Trình C Hàm

48 248 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 48
Dung lượng 545,91 KB

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

Nội dung

Nội dung Khai báo và định nghĩa hàm  Tham số trong lời gọi hàm  Địa chỉ và con trỏ  Con trỏ hàm Khái niệm Khai báo biến con trỏ hàm Tham số hình thức của hàm là con trỏ hàm  Đệ q

Trang 1

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

HÀM

Ninh Thị Thanh Tâm Khoa CNTT – HV Quản lý Giáo dục

Trang 3

Nội dung

 Khai báo và định nghĩa hàm

 Tham số trong lời gọi hàm

 Địa chỉ và con trỏ

 Con trỏ hàm

Khái niệm

Khai báo biến con trỏ hàm

Tham số hình thức của hàm là con trỏ hàm

 Đệ quy

Trang 4

Lời gọi hàm

Định nghĩa hàm

Trang 5

Khái niệm liên quan đến hàm

Trang 6

Tên_hàm là tên hợp lệ

Kiểu giá trị trả về là kiểu dữ liệu của kết quả trả

lại cho hàm gọi nó

 Nếu là void thì hàm không trả lại giá trị

 Nếu không xác định kiểu giá trị trả về trình biên dịch

sẽ ngầm định là int

Danh sách tham số: mô tả kiểu dữ liệu cùng

thứ tự của các tham số hàm nhận khi được gọi

 Nếu hàm không nhận tham số, danh sách tham số là

void

 Cần ghi rõ kiểu của tham số, nếu không ghi được

ngầm định là int

Trang 7

Khai báo và định nghĩa hàm

 Khai báo hàm (nguyên mẫu của hàm):

[kiểu giá trị trả về] Tên_hàm([danh sách tham số]);

Trang 8

 Có thể có nhiều câu lệnh return

 Giá trị của biểu thức trong câu lệnh return được gán cho hàm

 Có thể không sử dụng return

return; ~ hàm không trả về giá trị (có thể không có)

Trang 9

Ví dụ

Hàm trả về giá trị là một số nguyên Tham số là hai số nguyên

int max(int a, int b) {… }

Hàm trả về giá trị là một con trỏ thực Tham số là một số nguyên

float *nhap(int n) {… }

Hàm trả về một số thực Tham số

là một biến mảng thực hoặc một con trỏ thực

float sum(float *a) {… }

Hàm trả về giá trị là một số nguyên Tham số là một mảng số thực 20 phần tử

int count(float a[20]) {… }

Ý nghĩa Định nghĩa hàm

Trang 10

Hàm nguyên mẫu

 Thông báo cho trình biên dịch biết kiểu dữ liệu hàm trả lại, số lượng, kiểu và thứ tự của các tham số được truyền cho hàm

Dùng để kiểm tra lời gọi hàm

Không cần chỉ rõ tên của tham số hình thức

Trang 11

Tham số trong lời gọi hàm

 Khái niệm

Tham số hình thức: là các tham số được khai báo trong phần danh sách tham số trong định nghĩa hàm

Tham số thực: các thông tin được truyền cho hàm trong các lời gọi hàm

 Mỗi tham số thực tương ứng với một tham số hình thức

 Kiểu dữ liệu của tham số hình thức quyết định kiểu giá trị của tham số thực

Trang 13

Chú ý

 Hàm không cho giá trị thì dùng kiểu void

 Hàm không đối dùng void để khai báo đối

 Giá trị của biểu thức được chuyển kiểu

phù hợp với kiểu của hàm trước khi được gán cho hàm

Trang 15

Truyền thông tin cho hàm

 Truyền theo trị

 Tạo ra một bản sao giá trị của tham số thực

 Giá trị của tham số thực không bị thay đổi

 Tham số thực có thể là biến, hằng, biểu thức

 Truyền theo tham biến

 Truyền trực tiếp giá trị tham số cho hàm được gọi (tham số hình thức và thực là một)

 Tham số thực bắt buộc phải là biến

 Giá trị của tham số thực có thể bị thay đổi

Trang 16

Truyền tham số trong C

 Trong C, tất cả các tham số được truyền theo trị

Trang 17

void swap(int x, int y){

Trang 18

Địa chỉ

 Các khái niệm liên quan đến biến

Tên biến

Kiểu biến

Giá trị của biến

Địa chỉ của biến là số thứ tự của byte đầu

tiên trong một dãy các byte liên tiếp máy dành cho biến

Phép toán lấy địa chỉ: &

Trang 19

Con trỏ

 Khái niệm: con trỏ là một biến/hằng có giá trị là địa chỉ của một đối tượng khác

Đối tượng: biến hoặc hàm

Cho phép ta tham chiếu đến một biến thông qua địa chỉ

Trang 20

Khai báo biến con trỏ

 Cú pháp: type *ptr_name

type là kiểu dữ liệu của biến mà con trỏ chứa địa chỉ

ptr_name là tên của biến trỏ

type* là một kiểu dữ liệu con trỏ

Biến trỏ chưa chỉ đến địa chỉ nào có giá trị

NULL

Trang 21

Tham số hình thức của hàm là con trỏ

 Tham số hình thức của hàm là con trỏ

Tham số thực tương ứng phải là một địa chỉ

Có thể thay đổi giá trị của biến với địa chỉ

được truyền

Trang 23

Kết quả

Trang 24

Khi nào sử dụng đối con trỏ

Con trỏ kiểu int (float, double)

Địa chỉ kiểu int (float, double)

Biến kiểu int (float, double)

Giá trị kiểu int (float, double)

Đối tương ứng Tham số thực

Trang 26

void swap2(int *i, int *j){ int temp;

printf("%d\t%d",n,m); printf("\nswap2\n"); swap2(&n,&m);

printf("%d\t%d",n,m); getch();

}

Trang 27

Kết quả

Trang 28

Ví dụ

#include <stdio.h>

#include <conio.h>void nhap(char *c) {printf("Nhap ");

fflush(stdin);

scanf("%c",c);

}

void show(char c) {printf("%c\n",c);

Trang 30

Kết quả

Trang 32

Khái niệm hàm đệ quy

 Bên trong thân của hàm có lời gọi tới

chính hàm đó

 Khi gọi đệ quy

Máy tạo ra một tập các biến cục bộ độc lập với tập biến cục bộ đã được tạo ra trong các lần gọi trước

Có bao nhiêu lần gọi tới hàm thì cũng có bấy nhiêu lần thoát ra khỏi hàm

Trang 33

Cách dùng đệ quy

 Áp dụng cho lớp bài toán

Dễ dàng giải quyết trong trường hợp riêng

(trường hợp suy biến)

Trường hợp tổng quát:

 Đưa về bài toán cùng dạng, tham số thay đổi

 Sau một số hữu hạn bước biến đổi, dẫn tới trường hợp suy biến

Trang 34

else /*trường hợp tổng quát*/ {

Gọi đệ quy tới hàm (đang lập)với giá trị khác của tham số

}

Trang 35

}

Trang 37

Ví dụ - ước chung lớn nhất

int ucln(int x, int y){

if (x==y) return x;

else if (x>y) return ucln(x-y,y);

else return ucln(x,y-x);

}

Trang 38

Con trỏ hàm

 Con trỏ hàm là con trỏ trỏ đến điểm xâm nhập vào hàm

Có thể sử dụng thay cho tên hàm

Cho phép các hàm cũng được truyền như là các tham số cho các hàm khác

Trang 39

Khai báo biến con trỏ hàm

 Cú pháp:

[kiểu giá trị] (*tên biến con trỏ hàm)([danh sách tham số]);

 Con trỏ hàm nhận giá trị là tên của các

hàm có cùng kiểu giá trị trả về và kiểu giá trị của các tham số

Trang 40

Ví dụ

 float (*f)(float)

Khai báo f là con trỏ hàm kiểu float và có đối

là float

 double (*g)(int, double)

Khai báo g là con trỏ hàm kiểu double có các

đối int và double

Trang 41

Tác dụng của con trỏ hàm

 Chứa địa chỉ của hàm

Thực hiện phép gán tên hàm cho con trỏ hàm

Kiểu hàm và kiểu con trỏ phải tương thích

Trang 42

return 0;

}

Trang 43

Kết quả

Trang 44

Nếu đối được khai báo: float (*f)(float, int)

Sử dụng trong thân hàm: f(x,n) hoặc (f)(x,n) hoặc (*f)(x,n)

Trang 46

printf("TP4 = %f\n",tichphan(g,0,2.0));

getch();

}

Trang 47

Kết quả

Trang 48

Thư viện các hàm toán học

cos(0.0)=1 cos của x

cos(x)

tan(0.0)=0 tan của x

tan(x)

sin(0.0)=0 sin của x (x theo radian)

floor(-9.8)=-10 Làm tròn xuống

floor(x)

ceil(9.2)=10.0 Làm tròn lên

log10(x)

log(2.718282)=1.0 logarithm cơ số e của x

log(x)

exp(1.0)=2.718282 Hàm mũ ex

exp(x)

sqrt(9.00)=3.0 Căn bậc 2 của x

sqrt(x)

Ví dụ

Mô tả Hàm

Ngày đăng: 14/12/2016, 10:32

TỪ KHÓA LIÊN QUAN

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