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?

Sổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ CSổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ Cvncoding
 
Lập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnLập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnMr Giap
 
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
 
Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong Cpnanhvn
 
Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++tuandong_ptit
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiHuynh MVT
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtMôi Trường Việt
 
Nmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoNmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoMinh Ngoc Tran
 
Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Minh Ngoc Tran
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Congdat Le
 
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inHuy Nguyễn
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functionsHồ Lợi
 

Was ist angesagt? (17)

Nmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytuNmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytu
 
Sổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ CSổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ C
 
Lập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnLập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiển
 
Nmlt c06 ham
Nmlt c06 hamNmlt c06 ham
Nmlt c06 ham
 
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
 
Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong C
 
Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việt
 
Nmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoNmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucoso
 
Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-
 
Lesson04
Lesson04Lesson04
Lesson04
 
Lesson04
Lesson04Lesson04
Lesson04
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functions
 
String c++
String c++String c++
String c++
 

Andere mochten auch

Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapCuong
 
Nmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuNmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuCuong
 
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 HamCuong
 
3 Function
3 Function3 Function
3 FunctionCuong
 
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuCuong
 
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuCuong
 

Andere mochten auch (7)

Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh Lap
 
Nmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky TuNmlt C09 Chuoi Ky Tu
Nmlt C09 Chuoi Ky Tu
 
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 Ham
 
3 Function
3 Function3 Function
3 Function
 
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 Chieu
 
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 Chieu
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 

Ähnlich wie 3 Function

Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdfKinHongnh
 
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
 
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
 
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
 
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
 
1 Gioi Thieu Chung
1 Gioi Thieu Chung1 Gioi Thieu Chung
1 Gioi Thieu ChungCuong
 
Thdc3 Lap Trinh C
Thdc3 Lap Trinh CThdc3 Lap Trinh C
Thdc3 Lap Trinh Cquyloc
 
Session 4
Session 4Session 4
Session 4pnanhvn
 

Ähnlich wie 3 Function (20)

Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
 
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
 
Session 13
Session 13Session 13
Session 13
 
Session 13
Session 13Session 13
Session 13
 
Bai 18
Bai 18Bai 18
Bai 18
 
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
 
Nmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inNmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_in
 
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
 
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
 
Session 09
Session 09Session 09
Session 09
 
Session 09
Session 09Session 09
Session 09
 
1 Gioi Thieu Chung
1 Gioi Thieu Chung1 Gioi Thieu Chung
1 Gioi Thieu Chung
 
C9 templates
C9 templatesC9 templates
C9 templates
 
C9 templates
C9 templatesC9 templates
C9 templates
 
Bai 17
Bai 17Bai 17
Bai 17
 
Con tro ham c++
Con tro ham c++Con tro ham c++
Con tro ham c++
 
Thdc3 Lap Trinh C
Thdc3 Lap Trinh CThdc3 Lap Trinh C
Thdc3 Lap Trinh C
 
Session 4
Session 4Session 4
Session 4
 

Mehr von Cuong

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 (6)

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.