1. Trang chủ
  2. » Công Nghệ Thông Tin

Hàm và kĩ thuật tổ chức chương trình

86 2,4K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 2,76 MB

Nội dung

Hàm & Kỹ thuật tổ chức chương trình Nhập mơn lập trình Trình bày: …; Email: …@fit.hcmus.edu.vn Nội dung  Giới thiệu  Truyền tham số cho hàm  Biến tồn cục biến cục  Các ví dụ ứng dụng hàm lập trình  Hàm chương trình nhiều tập tin mã nguồn  Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp  Thuật ngữ đọc thêm tiếng Anh 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Giới thiệu Tiếp cận top-down Chương trình Nhập liệu Xử lý Xử lý Xuất kết Xử lý Tiếp cận top-down lập trình cấu trúc 9/11/15 Chương trình lớn chia thành chương trình nhỏ nhằm dễ dàng phân chia kiểm tra công việc hay sử dụng lại phận hoàn tất Khoa CNTT - ĐH Khoa học tự nhiên Đặc điểm • Hàm có đặc điểm sau: – Có tên – Là thành phần độc lập – Thực công việc cụ thể – Có thể nhận đối số – Có thể trả giá trị Hàm chương trình gọi cho Các đối tượng có sẵn (đối số) 9/11/15 Thực cơng việc cụ thể Khoa CNTT - ĐH Khoa học tự nhiên Các kết Nguyên mẫu hàm return-type function_name(param-type param_name, …, param-type param_name); • Trong đó: – return-type: kiểu giá trị hàm trả về, khơng trả kiểu trả void – function_name: tên hàm, thể công việc hàm làm, nên bắt đầu động từ – param-name, param-type: tên kiểu tương ứng tham số hình thức (formal parameter) – Được kết thúc dấu chấm phẩy ; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Định nghĩa hàm return-type function_name(param-type param_name, …, param-type param_name) { // statements here… } • Trong đó: – Dịng đầu tiêu đề hàm (giống ngun mẫu hàm khơng có ; bắt buộc phải có tên tham số) – Tiếp theo thân hàm (đặt {}) chứa câu lệnh hàm thực (phải có lệnh return kiểu trả void) 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Phân biệt cách tương đối • Hàm có sẵn (trong ngơn ngữ hãng phần mềm viết để bán cho) như: – Hàm xuất, nhập thông tin: printf(), scanf(), … – Hàm toán học: sqrt(), pow(), abs(), sin(), … • Hàm người lập trình viết thêm như: – Hàm xuất, nhập thông tin: Nhập số dương, – Hàm tốn học: Tính bậc 3, tính bậc n, tính giai thừa, giải phương trình bậc 1, bậc 2, bậc đối xứng, … 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Ví dụ hàm có sẵn void main() Đối số { int a = 7, b = 5; float z = 9; printf(“a = %d\n”, a); printf(“b = ”); scanf(“%d”, &b); z = (float)pow((double)b, (double)a); } 9/11/15 Biến nhận giá trị trả hàm Khoa CNTT - ĐH Khoa học tự nhiên Ví dụ hàm tự viết thêm • Hàm tính () chưa có thư viện math.h • Lưu ý: • Khai báo hàm: 9/11/15 double sqrt3(double x); Khoa CNTT - ĐH Khoa học tự nhiên 10 Sự nhập nhằng, mơ hồ int f(int a) { return a*a; } int f(int a, int b = 1) { return a*b; } void main() { printf(“%d\n”, f(2912, 1706)); printf(“%d\n”, f(2912)); // ??? } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 72 Hàm có đối số mặc định • Khái niệm – Là hàm có hay nhiều tham số hình thức gán sẵn giá trị mặc định Các tham số nhận giá trị mặc định khơng có đối số tương ứng truyền vào – Các tham số mặc định phải dồn tận bên phải • Ví dụ void PrintFraction(int num, int denom = 1); 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 73 Hàm có đối số mặc định • Lưu ý: – Muốn truyền đối số khác thay cho đối số mặc định, phải truyền đối số thay cho đối số mặc định trước • Ví dụ: void SolveEq2(int a, int b = 0, int c = 0); • Giải phương trình: – Sai: SolveEq2(2, 3); // a=2, b=3, c=0 – Đúng: 9/11/15 SolveEq2(2, 0, 3); // a=2, b=0, c=3 Khoa CNTT - ĐH Khoa học tự nhiên 74 Hàm có đối số mặc định • Lưu ý: – Nếu thường xuyên xảy nên chuyển thành tham số có đối số mặc định Ví dụ, (Nam), – Nếu thường xuyên xảy thường xuyên nên đặt tham số mặc định sau Ví dụ, lớp học xảy nhiều nên đặt sau 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 75 Hàm có tham số hàm • Khái niệm – Hàm truyền vào hàm khác dạng đối số đầu vào – Việc khai báo tham số hàm tương tự khai báo nguyên mẫu hàm (không cần tên tham số hình thức) – Chỉ phép truyền hàm có nguyên mẫu hàm (sau bỏ tên tham số hình thức) giống với nguyên mẫu hàm tham số hình thức hàm khai báo 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 76 Ví dụ hàm có tham số hàm int FindBestNumber(int a, int b, int Better(int, int)) { int numBest = a; if (Better(b, a)) { numBest = b; } return numBest; } int MaxNumber(int x, int y) { return x > y; } int MinNumber(int x, int y) { return x < y; } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 77 Ví dụ hàm có tham số hàm int FindBestNumber(int a[], int n, int Better(int, int)) { int i, idBest = 0; for (i = 1; i < n; i++) { if (Better(a[i], a[idBest])) idBest = id; } return a[idBest]; } int MaxNumber(int x, int y) { return x > y; } int MinNumber(int x, int y) { return x < y; } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 78 Hàm đệ qui • Khái niệm – Đệ qui tình mà hàm gọi theo cách trực tiếp hay gián tiếp • Ví dụ – Tính giai thừa: – Do – Tương tự – Tiếp tục tính 1! ta có kết 1, ngược lại tính 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 79 Ví dụ hàm đệ qui • Khai báo hàm: unsigned int factorial(unsigned int n); • Định nghĩa hàm: unsigned int factorial(unsigned int n) { if (n == 1) return 1; else return n * factorial(n – 1); } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 80 So sánh với NNLT khác Tiêu chí so sánh/Ngơn ngữ C# Java      (kiểu sở)  (sử dụng &)  (sử dụng từ khóa ref, out)  (đối tượng mảng) Tham số có giá trị mặc định    Hàm trùng tên (nạp chồng hàm)    Khai báo hàm độc lập với thành phần khác C C++   Khai báo hàm (phương thức) lớp đối tượng (class) Truyền giá trị (tham trị)   Truyền địa   Truyền biến (tham biến/tham chiếu) 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 81 Thuật ngữ đọc thêm tiếng Anh Thuật ngữ tiếng Anh • function: hàm (chương trình con) • structured programming: lập trình cấu trúc • modular programming: lập trình đơn thể • parameter: tham số • argument : đối số • formal parameter: tham số hình thức, tương đương với parameter • actual parameter: tham số thực, tương đương với argument • function prototype: nguyên mẫu hàm • function header: tiêu đề hàm • function declaration: khai báo hàm • function definition: định nghĩa hàm 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 83 Thuật ngữ tiếng Anh • local variable: biến cục • extern varialbe: biến ngồi • global variable: biến tồn cục, tương tự extern variable • call by value: truyền đối số giá trị (tham trị) • call by reference: (tham chiếu) truyền đối số tham biến • scope: tầm vực, phạm vi hiệu • recursion: đệ qui • overload: nạp chồng, tải • ambiguity: nhập nhằng, mơ hồ 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 84 Bài đọc thêm tiếng Anh • Bradley L Jones and Peter Aitken, Teach Yourself C in 21 days, 6th Edition, SAMS, 2003 – Day Packaging Code in Functions, pp 97-122 – Day 12 Understanding Variable Scope, pp 285-303 – Day 21 Advanced Compiler Use – Programming with Multiple Source-Code Files, pp 593-600 • Bjarne Stroustrup, The C++ Programming Language, 3rd Edition, AT&T, 1997 – Chapter Functions, pp 143-164 – Chapter Source Files and Programs, pp 197-220 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 85 ... nhiên 15 Truyền tham số cho hàm Sự thực thi hàm • Các câu lệnh bên hàm thực thi hàm gọi từ phần khác chương trình • Khi gọi hàm, chương trình truyền đến hàm thông tin dạng hay nhiều đối số main()... giải phương trình bậc – Cách 2: Viết hàm nhiệm vụ giải phương trình bậc 1, hàm sử dụng lại chương trình 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 41 Khai báo hàm SolveEq1() • • Khai báo hàm: int... Truyền tham số cho hàm  Biến toàn cục biến cục  Các ví dụ ứng dụng hàm lập trình  Hàm chương trình nhiều tập tin mã nguồn  Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp  Thuật ngữ đọc thêm

Ngày đăng: 11/09/2015, 13:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w