SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Hàm - Function
Hàm - Function ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Một số nguyên tắc ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ví dụ: hàm tính x n double  Power(double x, int n) { double result; for(result = 1; n; n--) result *= x; return result; }  nhận vào 2 tham số khi được gọi kiểu của giá trị trả về giá trị được trả về qua lệnh return
Ví dụ: gọi thực hiện hàm Power #include <stdio.h> double Power(double, int); int  main() { double m = Power(2, 3); printf(“3.5 ^ 4 = %lf”, Power(3.5, 4)); return 0; } Chỉ thị cho chương trình biết prototype của hàm Power 3.5 và 4: 2 tham số thực sự
Một số lỗi thường gặp #include <stdio.h> int  main() { int m = Power(2, 3); printf(“3.5 ^ 4 = %lf”, Power(4)); return 1.0; } Compiler không hiểu được hàm Power giá trị trả về không khớp kiểu hàm Power thiếu tham số
Prototypes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hàm: dạng tổng quát kiểu trả về   tên hàm( danh sách tham số hình thức ) { //khai báo các biến của hàm //các lệnh thực thi return   giá trị trả về ;  //hàm void không có giá trị trả về }  header của hàm thân (body) hàm
Tầm tác dụng của biến ,[object Object],[object Object],float g=6.5; void  main() { int i = 5, j, k = 2; float f =  2.8F ; d = 3.7; } void  F(int v) { double d, e = 0.0, f; i++; g--; f = 0.0; } compiler không chấp nhận “d”, “i”  “ f” của hàm F, không phải của main
Truyền tham số cho hàm ,[object Object],[object Object],[object Object],[object Object],[object Object]
Truyền giá trị ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Truyền giá trị - ví dụ #include <stdio.h> void  change(int v); int main() { int var = 5; change(var); printf(&quot;main: var = %i&quot;, var); return 0; } void change(int v) { v *= 100; printf(&quot;change: v = %i&quot;, v); } change: v = 500 main: var = 5 hàm change không thay đổi giá trị của  “var”
Truyền địa chỉ ,[object Object],[object Object],[object Object],Ví dụ hàm có sẵn của C truyền địa chỉ: int scanf(const char *format, adr1, adr2, …); function inputs outputs
Truyền địa chỉ - ví dụ #include <stdio.h> void  change(int *v); int main() { int var = 5; change(&var); printf(&quot;main: var = %i&quot;, var); return 0; } void change(int *v) { (*v) *= 100; printf(&quot;change: *v = %i&quot;, (*v)); } change: *v = 500 main: var = 500 v: tham số địa chỉ của số int, khai báo với dấu  * truyền địa chỉ của “var” vào hàm change
Truyền tham chiếu ,[object Object],[object Object],[object Object],[object Object]
Truyền tham chiếu - ví dụ #include <stdio.h> void  change(int &v); int main() { int var = 5; change(var); printf(&quot;main: var = %i&quot;, var); return 0; } void change(int &v) { v *= 100; printf(&quot;change: v = %i&quot;, v); } change: v = 500 main: var = 500 v: tham số tham chiếu, khai báo với dấu & truyền “var” vào hàm change
Truyền tham số - ví dụ #include <stdio.h> void  function(int a, int *b, int &c); int main() { int x = 3, y = 4, z = 5; function(x, &y, z); printf(&quot;%i %i %i&quot;, x, y, z); return 0; } void  function(int a, int *b, int &c) { a *= 2; (*b) += a; c = a + (*b); printf(&quot;%i %i %i&quot;, a, *b, c); } 6 10 16 3 10 16 main function a b c
Phương thức trao đổi dữ liệu ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Phương thức trao đổi dữ liệu #include <stdio.h> double power(int, int); int main(void) { int x = 2; double d; d = power(x, 5); printf(&quot;%lf&quot;, d); return 0; } double power(int n, int p) { double result = n; while(--p > 0) result *= n; return result; } main: x 2 main: d ? power: p 5 power: n 2 power: result 32.0 32.0
Bài đọc thêm:  tổ chức dữ liệu ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Heap Data segment Stack
Tóm lược ,[object Object],[object Object],[object Object],[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

3 Function
3 Function3 Function
3 FunctionCuong
 
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inHuy Nguyễn
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhMinh Ngoc Tran
 
Tin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uTin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uXephang Daihoc
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08xcode_esvn
 
Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Huy Rùa
 
Session 4
Session 4Session 4
Session 4pnanhvn
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiHuynh MVT
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2pnanhvn
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiềuHuy Rùa
 

Was ist angesagt? (18)

Nmlt c06 ham
Nmlt c06 hamNmlt c06 ham
Nmlt c06 ham
 
Nmlt c07 mang1_chieu
Nmlt c07 mang1_chieuNmlt c07 mang1_chieu
Nmlt c07 mang1_chieu
 
3 Function
3 Function3 Function
3 Function
 
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
 
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
 
Nmlt c11 con_trocoban
Nmlt c11 con_trocobanNmlt c11 con_trocoban
Nmlt c11 con_trocoban
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanh
 
Nmlt c12 quan_lybonho
Nmlt c12 quan_lybonhoNmlt c12 quan_lybonho
Nmlt c12 quan_lybonho
 
Tin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uTin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4u
 
Chuong1 c
Chuong1 c Chuong1 c
Chuong1 c
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08
 
Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)
 
Session 4
Session 4Session 4
Session 4
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiều
 
Slide pointer sepro
Slide pointer seproSlide pointer sepro
Slide pointer sepro
 
Session 13
Session 13Session 13
Session 13
 

Ähnlich wie 3 Function

Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗipnanhvn
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdfKinHongnh
 
lap trinh c Phan2 chuong5
 lap trinh c Phan2 chuong5 lap trinh c Phan2 chuong5
lap trinh c Phan2 chuong5thanhyu
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàmLAnhHuy4
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functionsHồ Lợi
 
Các ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conCác ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conNhungoc Phamhai
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson04
Lap trinh huong_doi_tuong_cpp_dhct_lesson04Lap trinh huong_doi_tuong_cpp_dhct_lesson04
Lap trinh huong_doi_tuong_cpp_dhct_lesson04xcode_esvn
 
Nmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inNmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inHuy Nguyễn
 
Tóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cTóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cHồ Lợi
 
1 Gioi Thieu Chung
1 Gioi Thieu Chung1 Gioi Thieu Chung
1 Gioi Thieu ChungCuong
 

Ähnlich wie 3 Function (20)

Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
lap trinh c Phan2 chuong5
 lap trinh c Phan2 chuong5 lap trinh c Phan2 chuong5
lap trinh c Phan2 chuong5
 
Ctdl lab01
Ctdl lab01Ctdl lab01
Ctdl lab01
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàm
 
Session 15
Session 15Session 15
Session 15
 
Session 15
Session 15Session 15
Session 15
 
Bai 18
Bai 18Bai 18
Bai 18
 
Hàm can bản
Hàm can bảnHàm can bản
Hàm can bản
 
Session 13
Session 13Session 13
Session 13
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functions
 
Các ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conCác ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình con
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson04
Lap trinh huong_doi_tuong_cpp_dhct_lesson04Lap trinh huong_doi_tuong_cpp_dhct_lesson04
Lap trinh huong_doi_tuong_cpp_dhct_lesson04
 
Nmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inNmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_in
 
Session 09
Session 09Session 09
Session 09
 
Session 09
Session 09Session 09
Session 09
 
Tóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cTóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của c
 
1 Gioi Thieu Chung
1 Gioi Thieu Chung1 Gioi Thieu Chung
1 Gioi Thieu Chung
 
Bai 17
Bai 17Bai 17
Bai 17
 

Mehr von Cuong

Nmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuNmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuCuong
 
Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapCuong
 
Nmlt C04 Cau Lenh Dieu Kien Va Re Nhanh
Nmlt C04 Cau Lenh Dieu Kien Va Re NhanhNmlt C04 Cau Lenh Dieu Kien Va Re Nhanh
Nmlt C04 Cau Lenh Dieu Kien Va Re NhanhCuong
 
Nmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTCNmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTCCuong
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhCuong
 
5 Array
5 Array5 Array
5 ArrayCuong
 
4 Pointer String Struct
4 Pointer String  Struct4 Pointer String  Struct
4 Pointer String StructCuong
 
2 Cau Truc Dieu Khien
2 Cau Truc Dieu Khien2 Cau Truc Dieu Khien
2 Cau Truc Dieu KhienCuong
 

Mehr von Cuong (8)

Nmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuNmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky Tu
 
Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh Lap
 
Nmlt C04 Cau Lenh Dieu Kien Va Re Nhanh
Nmlt C04 Cau Lenh Dieu Kien Va Re NhanhNmlt C04 Cau Lenh Dieu Kien Va Re Nhanh
Nmlt C04 Cau Lenh Dieu Kien Va Re Nhanh
 
Nmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTCNmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTC
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
 
5 Array
5 Array5 Array
5 Array
 
4 Pointer String Struct
4 Pointer String  Struct4 Pointer String  Struct
4 Pointer String Struct
 
2 Cau Truc Dieu Khien
2 Cau Truc Dieu Khien2 Cau Truc Dieu Khien
2 Cau Truc Dieu Khien
 

3 Function

  • 2.
  • 3.
  • 4. Ví dụ: hàm tính x n double Power(double x, int n) { double result; for(result = 1; n; n--) result *= x; return result; } nhận vào 2 tham số khi được gọi kiểu của giá trị trả về giá trị được trả về qua lệnh return
  • 5. Ví dụ: gọi thực hiện hàm Power #include <stdio.h> double Power(double, int); int main() { double m = Power(2, 3); printf(“3.5 ^ 4 = %lf”, Power(3.5, 4)); return 0; } Chỉ thị cho chương trình biết prototype của hàm Power 3.5 và 4: 2 tham số thực sự
  • 6. Một số lỗi thường gặp #include <stdio.h> int main() { int m = Power(2, 3); printf(“3.5 ^ 4 = %lf”, Power(4)); return 1.0; } Compiler không hiểu được hàm Power giá trị trả về không khớp kiểu hàm Power thiếu tham số
  • 7.
  • 8. Hàm: dạng tổng quát kiểu trả về tên hàm( danh sách tham số hình thức ) { //khai báo các biến của hàm //các lệnh thực thi return giá trị trả về ; //hàm void không có giá trị trả về } header của hàm thân (body) hàm
  • 9.
  • 10.
  • 11.
  • 12. Truyền giá trị - ví dụ #include <stdio.h> void change(int v); int main() { int var = 5; change(var); printf(&quot;main: var = %i&quot;, var); return 0; } void change(int v) { v *= 100; printf(&quot;change: v = %i&quot;, v); } change: v = 500 main: var = 5 hàm change không thay đổi giá trị của “var”
  • 13.
  • 14. Truyền địa chỉ - ví dụ #include <stdio.h> void change(int *v); int main() { int var = 5; change(&var); printf(&quot;main: var = %i&quot;, var); return 0; } void change(int *v) { (*v) *= 100; printf(&quot;change: *v = %i&quot;, (*v)); } change: *v = 500 main: var = 500 v: tham số địa chỉ của số int, khai báo với dấu * truyền địa chỉ của “var” vào hàm change
  • 15.
  • 16. Truyền tham chiếu - ví dụ #include <stdio.h> void change(int &v); int main() { int var = 5; change(var); printf(&quot;main: var = %i&quot;, var); return 0; } void change(int &v) { v *= 100; printf(&quot;change: v = %i&quot;, v); } change: v = 500 main: var = 500 v: tham số tham chiếu, khai báo với dấu & truyền “var” vào hàm change
  • 17. Truyền tham số - ví dụ #include <stdio.h> void function(int a, int *b, int &c); int main() { int x = 3, y = 4, z = 5; function(x, &y, z); printf(&quot;%i %i %i&quot;, x, y, z); return 0; } void function(int a, int *b, int &c) { a *= 2; (*b) += a; c = a + (*b); printf(&quot;%i %i %i&quot;, a, *b, c); } 6 10 16 3 10 16 main function a b c
  • 18.
  • 19. Phương thức trao đổi dữ liệu #include <stdio.h> double power(int, int); int main(void) { int x = 2; double d; d = power(x, 5); printf(&quot;%lf&quot;, d); return 0; } double power(int n, int p) { double result = n; while(--p > 0) result *= n; return result; } main: x 2 main: d ? power: p 5 power: n 2 power: result 32.0 32.0
  • 20.
  • 21.