Giáo trình Lập trình cơ bản với mục tiêu giúp các bạn có thể trình bày được các thành phần cơ bản trong giao diện làm việc của phần mềm Turbo C; trình bày được công dụng của ngôn ngữ lập trình, ý nghĩa, cú pháp của các câu lệnh dùng trong ngôn ngữ lập trình C; biết được một số thuật toán để xử lý một số yêu cầu đơn giản; trình bày được ý nghĩa, cách khai báo, cách truy xuất với một số cấu trúc dữ liệu. Mời các bạn cùng tham khảo phần 2 giáo trình sau đây.
BÀI 5: SỬ DỤNG HÀM MÃ BÀI: MĐ10/05 Giới thiệu: Trong chƣơng trình lớn, có đoạn chƣơng trình viết lặp lặp lại nhiều lần, để tránh rƣờm rà thời gian viết chƣơng trình; ngƣời ta thƣờng phân chia chƣơng trình thành nhiều module, module giải cơng việc Các module nhƣ gọi chƣơng trình (trong C gọi hàm) Một tiện lợi khác việc sử dụng chƣơng trình ta dễ dàng kiểm tra xác định tính đắn trƣớc ráp nối vào chƣơng trình việc xác định sai sót để tiến hành hiệu đính chƣơng trình thuận lợi Mục tiêu: - Trình bày đƣợc khái niệm, phân loại hàm; - Trình bày đƣợc qui tắc xây dụng hàm, cách sử dụng hàm chƣơng trình; - Trình bày đƣợc khái niệm tham số, tham trị cách truyền tham số; - Viết đƣợc số hàm đơn giản sử dụng hàm chƣơng trình cụ thể; - Nghiêm túc, tỉ mỉ, sáng tạo trình học vận dụng vào thực hành Nội dung chính: XÂY DỰNG HÀM 1.1 Khái niệm hàm C Trong ngơn ngữ lập trình C, chƣơng trình đƣợc gọi hàm Hàm C trả kết thơng qua tên hàm hay khơng trả kết Hàm có hai loại: hàm chuẩn hàm tự định nghĩa Trong chƣơng này, ta trọng đến cách định nghĩa hàm cách sử dụng hàm Một hàm đƣợc định nghĩa sử dụng đâu chƣơng trình Trong C, chƣơng trình bắt đầu thực thi hàm main Ví dụ 1: Ta có hàm max để tìm số lớn số nguyên a, b nhƣ sau: int max(int a, int b) { return (a>b) ? a:b; } Ví dụ 2: Ta có chƣơng trình (hàm main) dùng để nhập vào số nguyên a,b in hình số lớn số #include #include int max(int a, int b) { return (a>b) ? a:b; 73 } int main() { int a, b, c; printf("\n Nhap vao so a, b,c "); scanf("%d%d%d",&a,&b,&c); printf("\n So lon la %d",max(a, max(b,c))); getch(); return 0; } a Hàm thư viện Hàm thƣ viện hàm đƣợc định nghĩa sẵn thƣ viện đó, muốn sử dụng hàm thƣ viện phải khai báo thƣ viện trƣớc sử dụng lệnh #include * Một số thƣ viện: alloc.h assert.h bcd.h bios.h complex.h conio.h ctype.h dir.h dirent.h dos.h errno.h fcntl.h float.h fstream.h grneric.h graphics.h io.h iomanip.h iostream.h limits.h locale.h malloc.h math.h mem.h process.h setjmp.h share.h signal.h stdarg.h stddef.h stdio.h stdiostr.h stdlib.h stream.h string.h strstrea.h sys\stat.h sys\timeb.h sys\types.h time.h values.h * Ýnghĩa số thƣ viện thƣờng dùng: stdio.h : Thƣ viện chứa hàm vào/ chuẩn (standard input/output) Gồm hàm printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), putw()… conio.h : Thƣ viện chứa hàm vào chế độ DOS (DOS console) Gồm hàm clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),… math.h: Thƣ viện chứa hàm tính tốn gồm hàm abs(), sqrt(), log() log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),… alloc.h: Thƣ viện chứa hàm liên quan đến việc quản lý nhơ Gồm hàm calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(), … io.h: Thƣ viện chứa hàm vào cấp thấp Gồm hàm open(), _open(), read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(), lock(),… graphics.h: Thƣ viện chứa hàm liên quan đến đồ họa Gồm initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(), … 74 Muốn sử dụng hàm thƣ viện ta phải xem cú pháp hàm sử dụng theo cú pháp (xem phần trợ giúp Turbo C) b Hàm người dùng Hàm ngƣời dùng hàm ngƣời lập trình tự tạo nhằm đáp ứng nhu cầu xử lý 1.2 Xây dựng hàm a Định nghĩa hàm Cấu trúc hàm tự thiết kế: Tên hàm ([ ][,][…]) { [Khai báo biến cục câu lệnh thực hàm] [return [];] } Giải thích: - Kiểu kết quả: kiểu liệu kết trả về, : int, byte, char, float, void… Một hàm có khơng có kết trả Trong trƣờng hợp hàm khơng có kết trả ta nên sử dụng kiểu kết void - Kiểu t số: kiểu liệu tham số - Tham số: tham số truyền liệu vào cho hàm, hàm có khơng có tham số Tham số gọi tham số hình thức, gọi hàm phải truyền cho tham số thực tế Nếu có nhiều tham số, tham số phân cách dấu phẩy (,) - Bên thân hàm (phần giới hạn cặp dấu {}) khai báo câu lệnh xử lý Các khai báo bên hàm đƣợc gọi khai báo cục hàm khai báo tồn bên hàm mà - Khi định nghĩa hàm, ta thƣờng sử dụng câu lệnh return để trả kết thông qua tên hàm Lệnh return dùng để thoát khỏi hàm trả giá trị Cú pháp: return ; /*không trả giá trị*/ return ; /*Trả giá trị biểu thức*/ return (); /*Trả giá trị biểu thức*/ Nếu hàm có kết trả về, ta bắt buộc phải sử dụng câu lệnh return để trả kết cho hàm Ví dụ 1: Viết hàm tìm số lớn số nguyên a b int max(int a, int b) { return (a>b) ? a:b; } Ví dụ 2: Viết hàm tìm ƣớc chung lớn số nguyên a, b Cách tìm: đầu 75 tiên ta giả sử UCLN hai số số nhỏ hai số Nếu điều khơng ta giảm đơn vị giảm nhƣ tìm thấy UCLN int ucln(int a, int b) { int u; if (a