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

Bài giảng Lập trình cơ bản: Bài 5 - TS. Ngô Quốc Việt

Chia sẻ: You Can | Ngày: | Loại File: PDF | Số trang:39

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

Bài giảng Lập trình cơ bản - Bài 5 cung cấp những kiên thức về thủ tục và hàm. Các nội dung chính trong bài này gồm: Khái niệm thủ tục và hàm, cách khai báo và sử dụng hàm, khái niệm prototype, cách truyền tham số - tham biến, biến cục bộ - toàn cục. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình cơ bản: Bài 5 - TS. Ngô Quốc Việt

  1. THỦ TỤC VÀ HÀM NGÔ QUỐC VIỆT TP.HCM-2011
  2. NỘI DUNG 1. Khái niệm thủ tục và hàm. 2. Cách khai báo và sử dụng hàm 3. Khái niệm prototype 4. Cách truyền tham số, tham biến. 5. Biến cục bộ, toàn cục Ngô Quốc Việt-Lập trình cơ bản 2
  3. SỰ CẦN THIẾT CỦA TÁCH NHỎ  Thực tế: luôn tách vấn đề lớn thành các vấn để nhỏ hơn. Vấn đề “nhỏ hơn” lại có thể tách thành các “nhỏ hơn nữa”.  Mỗi “nhỏ không chia nữa” đảm nhiệm một nhiệm vụ/chức năng  thuật ngữ task/function  Các task/function ghép lại để có được bộ phận lớn hơn. Nnlt gọi là hàm-function.  Khái niệm hàm trong nnlt đóng vai trò tương tự.  Mỗi “hàm” đảm nhiệm một vai trò.  Kết nối các hàm để thành một chương trình. Ngô Quốc Việt-Lập trình cơ bản 3
  4. SỰ CẦN THIẾT CỦA TÁCH NHỎ  Nhắc lại hàm main trong ngôn ngữ C.  Chứa điểm bắt đầu và lệnh kết thúc của chương trình (lệnh return cuối hàm main).  Mọi ngôn ngữ đều có quy ước tương tự như hàm main() nhưng tên có thể khác.  Tất cả lệnh đặt trong “main” ?  Ưu điểm: ???  Nhựợc điểm: quá dài; không dễ đọc; khó bảo trì ?  Không thể hiệu quả nếu tất cả đặt trong main.  Cần tách “main” thành những phần nhỏ  hàm.  Đơn giản nhất: mỗi hàm thực hiện một phần code của main(). Ngô Quốc Việt-Lập trình cơ bản 4
  5. THỦ TỤC VÀ HÀM  Thủ tục – procedure. Hàm – function.  Phần lớn nnlt sử dụng thuật ngữ ‘hàm’.  Hàm là một “đoạn mã” được “đóng gói” thực hiện một khối công việc nhất định của chương trình.  “Đóng gói” : mỗi hàm có tên và viết theo quy cách nhất định tuỳ theo nnlt.  Ví dụ: hàm main() trong C/C++ là một hàm. Là hàm chính trong kiểu chương trình Console. Ngô Quốc Việt-Lập trình cơ bản 5
  6. CÁCH KHAI BÁO MỘT HÀM (arg1, arg2, ...)  Tên hàm: đặt theo quy cách đặt tên của nnlt. Theo cách đặt tên biến/hằng.  Kiểu trả về: các kiểu dữ liệu cơ bản của nnlt hoặc các kiểu dữ liệu có cấu trúc (thảo luận sau). Mỗi hàm chỉ trả về một giá trị mỗi lần thực hiện. Một hàm chỉ có một OUTPUT.  (arg1, arg2, ...): danh sách các tham số dùng làm INPUT cho hàm. Không có ba dấu chấm.  Không có dấu chấm phẩy sau tên hàm, phải có cặp dấu ngoặc ( ) sau tên hàm nếu hàm không có tham số truyền vào. Ngô Quốc Việt-Lập trình cơ bản 6
  7. CÁCH KHAI BÁO MỘT HÀM  Chú thích đầu hàm  Name: tên hàm  Description: hàm làm gì – what  Tham số: xác định từng tham số của hàm  Giá trị trả về: mô tả output của hàm  Tên hàm cùng các tham số  Thân hàm: phần nằm giữa cặp dấu { }. Lệnh cuối cùng của hàm là return. Ngô Quốc Việt-Lập trình cơ bản 7
  8. CÁCH KHAI BÁO MỘT HÀM Ngô Quốc Việt-Lập trình cơ bản 8
  9. Hàm không có tham số ()  Ví dụ khai báo hàm không tham số int get_value() ; hoặc int get_value(void); //chỉ dùng trong nnlt C  Hàm không có OUTPUT được gọi là thủ tục. Ví dụ void print_answer(int answer) ; Usage print_answer(45); //gọi hàm print_answer Ngô Quốc Việt-Lập trình cơ bản 9
  10. KHAI BÁO VÀ SỬ DỤNG HÀM  Hàm có thể không cần trả về kết quả. Mục tiêu cần thực hiện một tác vụ nhưng hàm gọi không cần lấy kết quả.  Sử dụng kiểu trả về void. void myGioPhut(int phut) Không có lệnh { return trước int gio; dấu } ??? gio = phut/60; phut = phut % 60; printf(“Bay gio la %d:%d”, gio, phut); }  Cuối hàm kiểu trả về void có thể có hay không lệnh return. Ngô Quốc Việt-Lập trình cơ bản 10
  11. KHAI BÁO VÀ SỬ DỤNG HÀM int myFunction(int arg1) //Hàm myFunction đặt trên main. Có cách //nào để đặt ở bất kỳ chỗ nào? { arg1++ ; return arg1; Hàm main gọi hàm myFunction. Lúc này, } hàm main được gọi là hàm gọi. int main(int argc, char* argv[ ]) { int x, y ; y = 0; x = myFunction(y); //Giá trị y trả về là y++ (=1). return 0; Hàm myFunction chạy } xong, chạy tiếp lệnh kế trong main. Lúc này, myFunction là hàm bị gọi Ngô Quốc Việt-Lập trình cơ bản 11
  12. KHAI BÁO VÀ SỬ DỤNG HÀM #include #include int power(int ix, int in) { int i, ip = 1; for(i = 1; i
  13. KHAI BÁO VÀ SỬ DỤNG HÀM void main(void) Truyền tham số { printf("2 mu 2 = %d.\n", power(2, 2)); int power(int ix, int in) Gọi hàm power printf("2 mu 3 = %d.\n", power(2, 3)); { int i, ip = 1; getch(); Kết thúc lần chạy. } for(i = 1; i
  14. PROTOTYPE HÀM  Prototype: phần khai báo hàm không chứa phần mã nguồn bên trong  Thường được đặt trên đầu tập tin mã nguồn. Có dấu ; int myFunction(int arg1); int main(int argc, char* argv[ ]) Hàm main gọi hàm { myFunction nên int y = myFunction(x); được đặt sau return 0; } int myFunction(int arg1) Hàm myFunction đặt { sau hàm main. }  Đối với nnlt C, các khai báo hàm được viết trong tập tin .H có cùng tên. Ngô Quốc Việt-Lập trình cơ bản 14
  15. PROTOTYPE CỦA HÀM  Các nnlt hướng đối tượng không sử dụng khái niệm “prototype”.  Mọi hàm đều bao gồm thân hàm.  Thảo luận trong học phần “Lập trình hướng đối tượng”. Ngô Quốc Việt-Lập trình cơ bản 15
  16. TẬP TIN .H TRONG NNLT C/C++  Chứa khai báo các prototype (không có mã nguồn bên trong).  Được #include từ các tập tin CPP. ptbac2.h ptbac2. cpp #include “ptbac2.h” double tinhDelta(int a, b, c); double tinhDelta(int a, int b, int c) { main.cpp return b*b-4*a*c; } #include “ptbac2.h” int main() Không viết hàm { tinhDelta ở đây int a, b, c; scanf(“% %d $d”, &a, &b, &c); double delta = tinhDelta(a, b, c); } Ngô Quốc Việt-Lập trình cơ bản 16
  17. SỬ DỤNG THƢ VIỆN BUILT-IN  Sử dụng #include trong C/C++ cho các tập mã nguồn .CPP để sử dụng các hàm có sẵn.  Ví dụ #include “conio.h” //dùng các hàm nhập xuất #include “stdio.h” //một số hàm chuẩn #include “math“ //các hàm toán học: sqrt, pow...  Sinh viên đọc thêm các tài liệu về các hàm setw, printf, scanf, sqrt, pow, và một số hàm toán học khác.  Sử dụng import trong ngôn ngữ JAVA. Sử dụng using trong C#. Sinh viên đọc thêm tài liệu. Ngô Quốc Việt-Lập trình cơ bản 17
  18. THAM SỐ  Tham số - Parameters.  Dùng để truyền và nhận giữa hàm gọi và hàm bị gọi.  Tham số! Nhưng không phải chỉ truyền/nhận số.  Truyền: OK. Vì hàm bị gọi cần có INPUT để xử lý.  Nhận: ???. Mỗi hàm chỉ trả về một OUTPUT. Nếu cần nhiều hơn?  Thảo luận sau.  Số lượng tham số của hàm: không nên nhiều quá. Ngô Quốc Việt-Lập trình cơ bản 18
  19. THAM TRỊ  Các giá trị đầu vào cho một hàm. Giá trị có thể là  Một hằng tường minh.  Một biến đã được gán giá trị.  Giá trị của biến (nếu được sử dụng) sẽ không bị thay đổi bởi bất cứ lệnh nào trong hàm bị gọi.  Cách khai báo (style1 arg1, style2 arg2) Ngô Quốc Việt-Lập trình cơ bản 19
  20. THAM TRỊ int myFunction(int x) { x +=10 ; return x; } int main(int argc, char* argv[ ]) { int x = 0, y ; int y = myFunction(x); //Giá trị y trả về là 10. printf(“Gia tri cua x va y la” %d %d”, x, y); //x vẫn là zero y = myFunction(5); //Giá trị y trả về là 15. printf(“Gia tri cua x va y la” %d %d”, x, y); //x vẫn là zero return 0; } Ngô Quốc Việt-Lập trình cơ bản 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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