1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 4 - chương trình con, Hà Nội 20013

43 325 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 43
Dung lượng 397,32 KB

Nội dung

Chương 4 CHƯƠNG TRÌNH CON Khoa Hệ thống thông tin quản lý Hà Nội – 2013 7/5/15Chương 4 - Chương trình con2/43 Đặt vấn đề  Viết chương trình tính S = a! + b! + c! với a, b, c là 3 số nguyên dương nhập từ bàn phím. 7/5/15Chương 4 - Chương trình con Chương trình chính Nhập a, b, c > 0 Tính S = a! + b! + c! Xuất kết quả S Nhập a > 0 Nhập b > 0 Nhập c > 0 Tính s1=a! Tính s2=b! Tính s3=c! 3/43 Đặt vấn đề  3 đoạn lệnh nhập a, b, c > 0 7/5/15Chương 4 - Chương trình con do { printf(“Nhap mot so nguyen duong: ”); scanf(“%d”, &a); } while (a <= 0); do { printf(“Nhap mot so nguyen duong: ”); scanf(“%d”, &b); } while (b <= 0); do { printf(“Nhap mot so nguyen duong: ”); scanf(“%d”, &c); } while (c <= 0); 4/43 Đặt vấn đề  3 đoạn lệnh tính s1 = a!, s2 = b!, s3 = c! 7/5/15Chương 4 - Chương trình con { Tính s1 = a! = 1 * 2 * … * a } s1 = 1; for (i = 2; i <= a ; i++) s1 = s1 * i; { Tính s2 = b! = 1 * 2 * … * b } s2 = 1; for (i = 2; i <= b ; i++) s2 = s2 * i; { Tính s3 = c! = 1 * 2 * … * c } s3 = 1; for (i = 2; i <= c ; i++) s3 = s3 * i; 5/43 Đặt vấn đề  Giải pháp => Viết 1 lần và sử dụng nhiều lần  Đoạn lệnh nhập tổng quát, với n = a, b, c  Đoạn lệnh tính giai thừa tổng quát, n = a, b, c 7/5/15Chương 4 - Chương trình con do { printf(“Nhap mot so nguyen duong: ”); scanf(“%d”, &n); } while (n <= 0); // Tính s = n! = 1 * 2 * … * n s = 1; for (i = 2; i <= n ; i++) s = s * i; 6/43 4.1 Khái niệm  Chương trình con là:  Một đoạn chương trình có tên, đầu vào và đầu ra.  Có chức năng giải quyết một số vấn đề chuyên biệt cho chương trình chính.  Được gọi nhiều lần với các tham số khác nhau.  Được sử dụng khi có nhu cầu:  Tái sử dụng: có một số chương trình được thực hiện ở nhiều nơi, bản chất không đổi nhưng giá trị các tham số cung cấp khác nhau.  Chia để trị: chia chương trình lớn thành các chương trình nhỏ rồi ghép lại.  Giúp chương trình trong sáng, dễ hiểu, dễ phát hiện lỗi và cải tiến. 7/5/15Chương 4 - Chương trình con7/43 4.1 Khái niệm (tt)  Trong các ngôn ngữ khác, có 2 loại chương trình con:  Hàm (function): trả về giá trị thông qua tên hàm, sử dụng trong các biểu thức và không được gọi như một lệnh.  Thủ tục: không có giá trị trả về, có thể tồn tại độc lập và được gọi như là một câu lệnh.  Trong C: chỉ tồn tại chương trình con dưới dạng hàm, không có thủ tục.  Giá trị hàm có thể không cần dùng đến  Có thể không có giá trị nào gán vào tên hàm (void)  Cung cấp các giá trị không phải là vô hướng 7/5/15Chương 4 - Chương trình con8/43 4.2 Cách xây dựng hàm  Cú pháp  Trong đó  <kiểu trả về> : kiểu bất kỳ của C (char, int, long, float,…). Nếu không cần trả về thì kiểu trả về là void.  <tên hàm>: là tên gọi của hàm, đặt theo quy tắc đặt tên  <danh sách tham số> : tham số hình thức đầu vào giống khai báo biến, cách nhau bằng dấu , hàm có thể không có đối số nào  <giá trị> : trả về cho hàm qua lệnh return. 7/5/15Chương 4 - Chương trình con <kiểu trả về> <tên hàm>([danh sách tham số]) { <các câu lệnh> [return <giá trị>;] } 9/43 Các bước viết hàm  Cần xác định các thông tin sau đây:  Tên hàm.  Hàm sẽ thực hiện công việc gì.  Các đầu vào (nếu có).  Đầu ra (nếu có). 7/5/15Chương 4 - Chương trình con Tên hàm Đầu vào 1 Đầu vào 2 Đầu vào n Đầu ra (nếu có) Các công việc sẽ thực hiện 10/43 [...]... n>); 4. 5 Hàm đệ quy  Khái niệm    Một chương trình con có thể gọi một chương trình con khác Nếu gọi chính nó thì được gọi là sự đệ quy Số lần gọi này phải có giới hạn (điểm dừng)  Ví dụ     Tính GT(n) = n! = 1*2*…*(n-1)*n Ta thấy GT(n) = GT(n-1)*n Vậy thay vì tính GT(n) ta sẽ đi tính GT(n-1) Tương tự: tính GT(n-2), …, GT(2), GT(1), GT(0) = 1 Cấu trúc hàm đệ quy (TS) (TS)... cọc B Bài toán tháp Hà Nội N đĩa A  B = N-1 đĩa A  C + ? Đĩa N A  B + N-1 đĩa C  B 1 … N-1 N Cột nguồn A Cột trung gian C Cột đích B Bài toán tháp Hà Nội (tt)  Xây dựng hàm CHUYEN N_Đĩa TừCọc này TớiCọc khác thông qua CọcTrungGian: CHUYEN(N_Đĩa,TừCọc,TớiCọc,CọcTrungGian)  Với N, ta có các thao tác sau: CHUYEN(N-1,A,C,B); CHUYEN(1,A,B,C); CHUYEN(N-1,C,B,A); Bài toán tháp Hà Nội (tt) #include ... toán đang … Lời gọi Hàm … Lời gọi Hàm được định nghĩa … … } } Ví dụ hàm đệ quy  Ví dụ 1: Tính giai thừa int GT(int n) { if (n == 0) return 1; /*Phần dừng */ else return GT(n- 1) * n; /*Phần đệ quy*/ }  Ví dụ 2: Tính UCLN(x,y) int UCLN(int x, int y) { if (y == 0) return x; /*Phần dừng */ else return UCLN(y,x%y); /*Phần đệ quy*/ } Ví dụ hàm đệ quy (tt)  Ví dụ 3: Bài toán tháp Hà Nội   Có 3 cọc A,... thức   Lệnh return Tương đương lệnh =  return có thể trả lại giá trị cả một biểu thức  Ví dụ: return x*x + b*x + c  return có thể xuất hiện nhiều lần trong hàm Ví dụ: if (s>0) return (s); else return (-s); ; Một số quy tắc (tt)  Hàm không trả lại giá trị  Dùng từ khoá void để khai báo (Ví dụ 1)  Hàm không có tham số   Khai báo: Tên_hàm(void) Ví dụ: Nhập số nguyên, trả về... } main() { int n; printf(“Nhap n = “); scanf(“%d”,&n); printf(“\n %d! = %ld\n”,n,giai_thua(n)); } 4. 3 Tầm tác dụng của biến  Các loại biến   Toàn cục: khai báo trong ngoài tất cả các hàm và có tác dụng lên toàn bộ chương trình Cục bộ: khai báo trong hàm hoặc khối { } và chỉ có tác dụng trong bản thân hàm hoặc khối đó (kể cả khối con nó) Biến cục bộ sẽ bị xóa khỏi bộ nhớ khi kết thúc khối khai báo... thực hiện hàm Truyền địa chỉ hoặc truyền tham biến được sử dụng khi có nhu cầu thay đổi giá trị của tham số sau khi thực hiện hàm Lời gọi hàm  Cách thực hiện    Gọi tên của hàm đồng thời truyền các đối số (hằng, biến, biểu thức) cho các tham số theo đúng thứ tự đã được khai báo trong hàm Các biến hoặc trị này cách nhau bằng dấu , Các đối số này được được đặt trong cặp dấu ngoặc đơn ( ) ( . Chương 4 CHƯƠNG TRÌNH CON Khoa Hệ thống thông tin quản lý Hà Nội – 2013 7/5/1 5Chương 4 - Chương trình con2 /43 Đặt vấn đề  Viết chương trình tính S = a! + b! + c!. Giúp chương trình trong sáng, dễ hiểu, dễ phát hiện lỗi và cải tiến. 7/5/1 5Chương 4 - Chương trình con7 /43 4. 1 Khái niệm (tt)  Trong các ngôn ngữ khác, có 2 loại chương trình con:  Hàm (function):. trong hàm Ví dụ: if (s>0) return (s); else return (-s); ; 7/5/1 5Chương 4 - Chương trình con 14/ 43 Một số quy tắc (tt)  Hàm không trả lại giá trị  Dùng từ khoá void để khai báo (Ví dụ 1)  Hàm

Ngày đăng: 05/07/2015, 03:26

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w