intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Tin học cơ sở 4: Hàm - TS. Vũ Thị Hồng Nhạn

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:20

12
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tin học cơ sở 4: Hàm - TS. Vũ Thị Hồng Nhạn

  1. 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
  2. Nội dung Đ nh nghĩa hàm Hàm có Tham Tr & Tham Chi u Đ quy (recursion) 03/03/2016 Functions Page 2
  3. 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
  4. 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
  5. Đị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
  6. Đị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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. Đệ Quy • Ý nghĩa & ho t đ ng c a đ quy • Có th dùng thay vòng l p b ng đ quy
  17. 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
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2