Hàm là một đoạn chương trình độc lập thực hiện trọn vẹn một công việc nhất định sau đó trả về giá trị cho chương trình gọi nó, hay nói cách khác hàm là sự chia nhỏ của chương trình.
Mục đích sử dụng hàm:
Khi có một công việc giống nhau cần thực hiện ở nhiều vị trí.
Khi cần chia một chương trình lớn phức tạp thành các đơn thể nhỏ (hàm con) để chương trình được trong sáng, dễ hiểu trong việc xử lý, quản lý việc tính toán và giải quyết vấn đề.
41 trang |
Chia sẻ: phuongt97 | Lượt xem: 375 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Nhập môn lập trình - Chương 4: Hàm con, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 4HÀM CON8/13/2021112CẤU TRÚC CHƯƠNG TRÌNHKhai báoCài đặt hàmHàm main()CHƯƠNG TRÌNH CKhai báo thư viện hàmKhai báo hàmKhai báo hằng số Cài đặt tất cả những hàm con đã được khai báoGọi thực hiện các hàm theo yêu cầu của bài toán3int Tong(int a, int b){ int s=a+b; return s;}void main(){ int kq = Tong (12, 3); cout TênHàm([ds các tham số]);Trong đó:Kiểu dữ liệu trả về của hàm (kết quả của hàm/ đầu ra), gồm 2 loạivoid: Không trả về giá trịfloat / int / long / char */ kiểu cấu trúc / : Trả về giá trị kết quả có kiểu dữ liệu tương ứng với bài toán (chỉ trả về được 1 giá trị theo kiểu dữ liệu)6TênHàm: Đặt tên theo qui ước sao cho phản ánh đúng chức năng thực hiện của hàmDanh sách các tham số (nếu có): đầu vào của hàm (trong một số trường hợp có thể là đầu vào và đầu ra của hàm nếu kết quả đầu ra có nhiều giá trị - Tham số này gọi là tham chiếu) 7HÀM KHÔNG TRẢ VỀ GIÁ TRỊCài đặtvoid TênHàm([danh sách các tham số]){ Khai báo các biến cục bộ Các câu lệnh / khối lệnh hay lời gọi đến hàm khác.}Gọi hàmTênHàm(danh sách tên các đối số);Những phương thức loại này thường rơi vào những nhóm chức năng: Nhập / xuất dữ liệu , thống kê, sắp xếp, liệt kê8VÍ DỤ 1Viết chương trình nhập số nguyên dương n và in ra màn hình các ước số của nPhân tích bài toán: Input: n (Để xác định tham số) Kiểu dữ liệu: số nguyên dương (int).Output: In ra các ước số của n (Để xác định kiểu dữ liệu trả về của hàm)Xuất ra màn hình Không trả về giá trị Kiểu dữ liệu của hàm là void .Xác định tên hàm: Hàm này dùng in ra các ước số của n nên có thể đặt là LietKeUocSvoid LietKeUocSo(int n);9#include void LietKeUocSo(int n);void LietKeUocSo(int n){ for (int i = 1; i >n; cout TênHàm([danh sách các tham số]){ kq; Khai báo các biến cục bộ Các câu lệnh / khối lệnh hay lời gọi đến hàm khác. return kq;}Gọi hàm Tên biến = TênHàm (danh sách tên các đối số);Những phương thức này thường rơi vào các nhóm: Tính tổng, tích, trung bình, đếm, kiểm tra, tìm kiếm 12VÍ DỤ 2 Viết chương trình nhập số nguyên dương n và tính tổng Phân tích bài toán: Input: n (Để xác định tham số)Kiểu dữ liệu: số nguyên dương (int). Output: Tổng S (Để xác định kiểu dữ liệu phương thức)Trả về giá trị của S.S là tổng các số nguyên dương nên S cũng là số nguyên dương Kiểu trả về của hàm là int (hoặc long). Xác định TênHàm: Dùng tính tổng S nên có thể đặt là TongSint TongS(int n);13#include int TongS(int n);int TongS(int n){ int kq = 0; for (int i = 1; i >n; S = TongS(n); cout>a;cout>b;}void main(){int c;Nhap();c=a+b;cout TenHam (){ if (điều kiện dừng) { . . . //Trả về giá trị hay kết thúc công việc } //Thực hiện một số công việc (nếu có) . . . TenHam (); //Thực hiện một số công việc (nếu có)}28Ví dụ: Tính - Điều kiện dừng: S(0) = 0.- Qui tắc (công thức) tính: S(n) = S(n-1) + n.long TongS (int n){ if(n==0) return 0; return ( TongS(n-1) + n );}29ĐỆ QUI NHỊ PHÂNTrong thân của hàm có hai lời gọi hàm gọi lại chính nó một cách tường minh. TenHam (){ if (điều kiện dừng) { . . . //Trả về giá trị hay kết thúc công việc } //Thực hiện một số công việc (nếu có) . . .TenHam (); //Giải quyết vấn đề nhỏ hơn //Thực hiện một số công việc (nếu có) . . . TenHam (); //Giải quyết vấn đề còn lại //Thực hiện một số công việc (nếu có)}30Ví dụ: Tính số hạng thứ n của dãy Fibonaci được định nghĩa như sau:f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1)Điều kiện dừng: f(0) = f(1) = 1.long Fibonaci (int n){ if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2);}31ĐỆ QUI PHI TUYẾNTrong thân của hàm có lời gọi hàm gọi lại chính nó được đặt bên trong vòng lặp. TenHam (){ for (int i = 1; i); } }}32Ví dụ: Tính số hạng thứ n của dãy {Xn} được định nghĩa như sau:X0 =1 ; Xn = n2X0 + (n-1)2X1 + + 12Xn-1 ; (n≥1)Điều kiện dừng:X(0) = 1.long TinhXn (int n){ if(n==0) return 1; long s = 0; for (int i=1; i TenHam2 (); TenHam1 (){//Thực hiện một số công việc (nếu có)TenHam2 (); //Thực hiện một số công việc (nếu có)} TenHam2 (){//Thực hiện một số công việc (nếu có)TenHam1 (); //Thực hiện một số công việc (nếu có)}35Ví dụ: Tính số hạng thứ n của hai dãy {Xn}, {Yn} được định nghĩa như sau:X0 =Y0 =1 ; Xn = Xn-1 + Yn-1; (n>0)Yn = n2Xn-1 + Yn-1; (n>0)- Điều kiện dừng:X(0) = Y(0) = 1.long TinhYn(int n);long TinhXn (int n){ if(n==0) return 1; return TinhXn(n-1) + TinhYn(n-1);}long TinhYn (int n){ if(n==0) return 1; return n*n*TinhXn(n-1) + TinhYn(n-1);}36CÁCH HOẠT ĐỘNG HÀM ĐỆ QUIVí dụ tính n! với n=53738BÀI TẬP 1Xác định các khai báo hàm của các bài toán sau:1.Viết chương trình tính diện tích và chu vi của hình chữ nhật với chiều dài và chiều rộng được nhập từ bàn phím.2.Viết chương trình tính diện tích và chu vi hình tròn với bán kính được nhập từ bàn phím.3.Nhập vào 3 số thực a, b, c và kiểm tra xem chúng có thành lập thành 3 cạnh của một tam giác hay không? Nếu có hãy tính diện tích, chiều dài mỗi đường cao của tam giác và in kết quả ra màn hình.4.Viết chương trình nhập 2 số nguyên dương a, b. Tìm USCLN và BSCNN của hai số nguyên đó39BÀI TẬP 1 (tt)Công thức tính diện tích s = sqrt(p*(p-a)*(p-b)*(p-c) ) với p là nửa chu vi của tam giácCông thức tính các đường cao: ha = 2s/a, hb=2s/b, hc=2s/c.40BÀI TẬP 21. Viết chương trình tất cả các bài tập 1 2. Viết chương trình nhập số nguyên dương n, tính tổng các ước số dương của n. Ví dụ: Nhập n=6 Tổng các ước số từ 1 đến n: 1+2+3+6=12.3. Nhập vào giờ, phút, giây. Kiểm tra xem giờ, phút, giây đó có hợp lệ hay không? In kết quả ra màn hình.4. Viết chương trình nhập số nguyên dương n gồm k chữ số, đếm xem n có bao nhiêu chữ số là số nguyên tố.415. Viết chương trình tính tiền thuê máy dịch vụ Internet và in ra màn hình kết quả. Với dữ liệu nhập vào là giờ bắt đầu thuê (GBD), giờ kết thúc thuê (GKT), số máy thuê (SoMay). Điều kiện cho dữ liệu nhập: 6<=GBD<GKT<=21. Giờ là số nguyên.Đơn giá: 2500đ cho mỗi giờ máy trước 17:30 và 3000đ cho mỗi giờ máy sau 17:30.6. Viết chương trình tính tiền lương ngày cho công nhân, cho biết trước giờ vào ca, giờ ra ca của mỗi người. Giả sử rằng:Tiền trả cho mỗi giờ trước 12 giờ là 6000đ và sau 12 giờ là 7500đ.Giờ vào ca sớm nhất là 6 giờ sáng và giờ ra ca trễ nhất là 18 giờ (Giả sử giờ nhập vào nguyên).
Các file đính kèm theo tài liệu này:
- bai_giang_nhap_mon_lap_trinh_chuong_4_ham_con.ppt