![](images/graphics/blank.gif)
Bài giảng Tin học cơ sở 4: Hàm - TS. Vũ Thị Hồng Nhạn
lượt xem 3
download
![](https://tailieu.vn/static/b2013az/templates/version1/default/images/down16x21.png)
Bài giảng Tin học cơ sở 4: Hàm, cung cấp cho người học những kiến thức như định nghĩa hàm; Hàm có tham trị & tham chiếu; Đệ quy (recursion). Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Tin học cơ sở 4: Hàm - TS. Vũ Thị Hồng Nhạn
- Tin Học Cơ Sở 4: Hàm Vũ Thị Hồng Nhạn (vthnhan@vnu.edu.vn) Human Machine Interaction Lab. Vietnam National Univ., Hanoi
- Nội dung Đ nh nghĩa hàm Hàm có Tham Tr & Tham Chi u Đ quy (recursion) 03/03/2016 Functions Page 2
- Hàm trong math.h Có r t nhi u hàm đư c đ nh nghĩa trong math.h pow(a, b) - tính ab exp(a) – tính ea log(a) – Logarit cơ s e log10(a) – logarit cơ s 10 sqrt(a) – Tính căn b hai c a a fabs(a) – tính giá tr tuy t đ i |a| ceil/floor(x) – Làm tròn lên/xu ng cos(x) tính cosin(x) acos(x) tính cos-1(x) .... 03/03/2016 Functions Page 3
- Vì sao dùng hàm M c tiêu c a hàm Phân tách chương trình ra làm nh ng ph n nh và d hi u Giúp thu t toán đ quy d cài đ t Cho phép tái s d ng code Như c đi m c a hàm L i g i t i hàm làm tăng b nh và th i gian tính toán Hàm trong C Không thu c vào m t l p T t c các hàm có th nhìn th y b t c nơi đâu trong chương trình 03/03/2016 Functions Page 4
- Định nghĩa Hàm là m t chương trình con th c hi n m t void line(); // khai báo hàm mẫu kh i công vi c đư c l p đi l p l i nhi u l n int main() trong khi ch y chương trình ho c dùng tách { m t kh i công vi c c th đ chương trình đ line(); ph c t p printf("* Minh hoa ve ham *\n"); line(); } Ví d Hi n th hình nh sau trên màn hình void line() // hàm { int i; ***************** for(i = 0; i < 30; i++) * Minh hoa ve ham * printf("*"); ***************** printf("\n"); } 03/03/2016 Functions Page 5
- Định nghĩa (tiếp) tiếp) Hàm tr v giá tr N u hàm tr l i ki u “void”, không c n l nh tr v khi k t thúc hàm N u hàm tr v m t ki u khác, ph i có l nh tr v 03/03/2016 Functions Page 6
- Hàm không ñối Giải thích ví dụ 1 int main() Gọi thực hiện hàm void line() // ham in 1 dong dau { { line(); int i; printf("* Minh hoa ve ham *\n"); for(i = 0; i < 30; i++) line(); printf("*"); } Quay về chương trình chính, thực printf("\n"); hiện lệnh kế tiếp } Chú ý Nên khai báo prototype cho dù hàm đư c g i n m trư c hay sau câu l nh g i nó 03/03/2016 Functions Page 7
- Hàm có ñối là Tham Trị G i b i giá tr Các đ i c a hàm (function arguments) trong C đư c truy n b i “giá tr ” “Giá tr ” c a đ i đư c truy n, ch không ph i là m t tham chi u (reference) M t b n sao c a các đ i đư c cung c p cho hàm trong trư ng h p này Vì th hàm không th thay đ i giá tr c a bi n trong hàm g i (tr khi s d ng con tr ) 03/03/2016 Functions Page 8
- Hàm có ñối là tham trị Ví dụ 2 Viết chương trình tính hàm mũ xa //khai bao prototype int power(int, int); //dinh nghia ham mu int power(int x, int a){ int p=1,i; for( i=1; i
- Hàm có ñối là tham trị Giải thích ví dụ 2 Truyền giá trị vào hàm int main(){ int power(int x, int a){ Gọi thực hiện hàm printf("2 mu 3=%d.\n", power(2,3)); int p=1,i; printf("2 mu 4=%d.\n", power(2,4)); for(i=1; i
- Hàm có ñối là tham trị Luyện tập int foo(int a) void swap(int a, int b) // hoán v hai s { { a = 1; int t = a; return a; a = b; } b = t; } void main() void main() { { int a = 3, b; int a = 1, b = 2; b = foo(a); swap(a, b); printf("%d %d\n", a, b); printf("%d %d\n", a, b); } } Kết quả in ra? 03/03/2016 Functions Page 11
- Hàm có ñối là Tham Trị Ưu nhược Ưu đi m D dàng vi t m t s hàm & dùng nhi u l n Như c Đôi lúc ta mu n s a giá tr c a đ i s (ví d , hoán v hai s ) Kh c ph c b ng cách dùng con tr (h c sau) ho c dùng khái ni m tham chi u (ch t n t i trong C++ ch không có trong C) 03/03/2016 Functions Page 12
- Hàm có ñối dạng Tham Chiếu trong C++ Ví dụ 3 Vi t chương tr nh p vào s phút, in ra gi :phút Hàm time() có hai s void time(int &, int &); //function prototype truy n vào hour và min Hai tham s có toán t int main(){ đ a ch & đi trư c cho int h, m; bi t 2 tham s này là printf("Nhap vao so phut:"); scanf("%d", &m); d ng truy n tham chi u time(h,m); printf("%02d:%02d\n", h,m); } void time(int &hour, int &min){ //define function time() hour =min/60; min =min % 60; } 03/03/2016 Functions Page 13
- Hàm có đ i d ng Tham Chi u trong C++ Ví dụ 3 (tiếp) (tiếp) int main(){ Truyền giá trị vào hàm m=185 int h,m; h=# printf("Nhap vao so phut:"); void time(((int &hour, int &min){ scanf("%d", &m); Gọi thực hiện hàm hour = min/60; time( h, m); min = min%60; h=hour=3 } printf("%02d:%02d\n", h, m); m=min=5 } 03/03/2016 Functions Page 14
- Biến toàn cục Ví dụ 4 //function definition Nh p vào m t s , xác đ nh xem s void oddeven(){ là ch n hay l , có âm không? if(num % 2) //function prototype printf("%d la so le!\n", num); void oddeven(); else void negative(); printf("%d laf so chan!\n", num); //global variable declaration } int num; void negative(){ int main(){ if(num
- Đệ Quy • Ý nghĩa & ho t đ ng c a đ quy • Có th dùng thay vòng l p b ng đ quy
- Hàm ñệ quy M t hàm nào đó có th t g i chính mình g i là hàm đ quy Phương pháp đ quy thư ng dùng ph bi n trong nh ng ng d ng mà cách gi i quy t có th đư c th hiên b ng vi c áp d ng liên ti p cùng gi i pháp cho nh ng t p h p con c a bài toán 03/03/2016 Functions Page 17
- Ví dụ 5 Tính n! n! = 1*2*3*…*(n-2)*(n-1)*n v i n >= 1 và 0! = 1. //function prototype long giaithua(int); long giaithua(int n){ if(n==0) int main(){ int n; return (1L); printf("Nhap vao so n:"); else scanf("%d",&n); return ( n*giaithua(n-1) ); printf("%d!=%ld.\n“,n, giaithua(n)); } } Tính b ng cách không dùng đ quy? 03/03/2016 Functions Page 18
- Ví dụ 5 Tính n! Ví d truy n giá tr n=5 Th t g i hàm “giaithua” Khi tham s n=0, nh n đư c giá tr 1L(ki u long), các giá tr “?” b t đ u đ nh tr theo th t ngư c l i 03/03/2016 Functions Page 19
- Ví dụ 6 Dãy Fibonacci B t đ u b ng 0 và 1, các s ti p theo b ng t ng hai s đi trư c Dãy Fibonacci đư c khai báo đ quy như sau Số lần sinh số: 9 (n=9) Fibonacci series: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 03/03/2016 Functions Page 20
![](images/graphics/blank.gif)
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học cơ sở: Bài 16 - Đào Kiến Quốc
16 p |
145 |
13
-
Bài giảng Tin học cơ sở: Bài 3 - Đào Kiến Quốc
16 p |
146 |
13
-
Bài giảng Tin học cơ sở: Bài 1 - Thông tin và xử lý thông tin
19 p |
148 |
8
-
Bài giảng Tin học cơ sở (Basics of Informatics) - Chương 1: Thông tin và biểu diễn thông tin
18 p |
43 |
5
-
Bài giảng Tin học cơ sở 3 bài 1: Tổng quan về cơ sở dữ liệu quan hệ
11 p |
30 |
5
-
Bài giảng Tin học cơ sở 1 - Chương 0: Giới thiệu môn học
8 p |
156 |
5
-
Bài giảng Tin học cơ sở: Bài 14 - Đào Kiến Quốc
27 p |
110 |
5
-
Bài giảng Tin học cơ sở 2: Chương 0 - ThS. Nguyễn Mạnh Sơn
7 p |
124 |
4
-
Bài giảng Tin học cơ sở (Basics of Informatics) - Chương 5: Các vấn đề xã hội của công nghệ thông tin
13 p |
38 |
4
-
Bài giảng Tin học cơ sở 2: Chương 2 - ThS. Nguyễn Mạnh Sơn
38 p |
75 |
3
-
Bài giảng Tin học cơ sở: Bài 3 - Hà Nguyên Long
20 p |
65 |
3
-
Bài giảng Tin học cơ sở 2: Chương 0 - Nguyễn Ngọc Duy
4 p |
107 |
2
-
Bài giảng Tin học cơ sở: Chương 4 - Học viện Nông nghiệp Việt Nam (tt)
26 p |
69 |
2
-
Bài giảng Tin học cơ sở: Chương 2 - Học viện Nông nghiệp Việt Nam
4 p |
73 |
2
-
Bài giảng Tin học cơ sở: Chương 3 - Học viện Nông nghiệp Việt Nam
8 p |
52 |
1
-
Bài giảng Tin học cơ sở: Chương 2 - Học viện Nông nghiệp Việt Nam (TT)
37 p |
59 |
1
-
Bài giảng Tin học cơ sở - Chương 1: Giới thiệu chung
13 p |
58 |
1
-
Bài giảng Tin học cơ sở: Chương 4 - Học viện Nông nghiệp Việt Nam
4 p |
43 |
1
![](images/icons/closefanbox.gif)
![](images/icons/closefanbox.gif)
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
![](https://tailieu.vn/static/b2013az/templates/version1/default/js/fancybox2/source/ajax_loader.gif)