







































Preview text:
lOMoAR cPSD| 40425501 Nội dung NMLT - H m (Function) NMLT - H m (Function) lOMoAR cPSD| 40425501 & & VC VC BB BB Đặt vấn ề printf( Nhap mot so nguyen duong: ); scanf( %d , &a); printf( Nhap mot so nguyen duong: ); scanf( %d , &b); printf( Nhap mot
so nguyen duong: ); scanf( %d , &c); NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB Đặt vấn ề Đặt vấn ề
3 oạn lệnh t nh s1 = a!, s2 = b!, s3 = c!
Giải phÆp => Viết 1 lần v sử dụng nhiều lần
{ T nh s1 = a! = 1 * 2 * * a } s1 = 1; for
Đoạn lệnh nhập tổng quÆt, với n = a, b,
(i = 2; i <= a ; i++) c s1 = s1 * i;
do { printf( Nhap mot so nguyen duong: );
{ T nh s2 = b! = 1 * 2 * * b } s2 = 1; for scanf( %d , &n);
(i = 2; i <= b ; i++) } while (n <= 0); s2 = s2 * i;
Đoạn lệnh t nh giai thừa tổng quÆt, n = a, b,
{ T nh s3 = c! = 1 * 2 * * c } s3 = 1; for (i = 2; i <= c ; i++) c s3 = s3 * i;
{ T nh s = n! = 1 * 2 * * n } NMLT - H m (Function)
s = 1; for (i = 2; i <= n ; i++) s = s * i; NMLT - H m (Function) && NMLT - H m (Function) NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB VCVCBBBB H m NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB KhÆi niệm
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. Sửa lỗi v cải tiến. && NMLT - H m (Function) NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB VCVCBBBB H m NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB Cœ phÆp
([danh sÆch tham số]) { [return ;] } Trong
: kiểu bất kỳ của C (char, int,
long, float, ). Nếu kh ng trả về th l void. h m>: theo quy tắc ặt tŒn ịnh danh. : tham số h nh thức ầu
v o giống khai bÆo biến, cÆch nhau bằng H m V dụ 1 TŒn h m: XuatTong
C ng việc: t nh v xuất tổng 2 số nguyŒn
Đầu v o: hai số nguyŒn x v y Đầu ra: kh ng c
void XuatTong(int x, int y) { int s; s = x + y;
printf( %d cong %d bang %d , x, y, s); } NMLT - H m (Function)
dấu , : trả về cho h m qua lệnh return. NMLT - H m (Function) NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB && NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB VCVCBBBB H m NMLT - H m (Function) NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB V dụ 2 TŒn h m: TinhTong
C ng việc: t nh v trả về tổng 2 số nguyŒn
Đầu v o: hai số nguyŒn x v y
Đầu ra: một số nguyŒn c giÆ trị x + y
int TinhTong(int x, int y) { int s; s = x + y; return s; } && NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB
VCVCBBBB Chương tr nh con - Function NMLT - H m (Function) NMLT - H m (Function) & lOMoAR cPSD| 40425501 & VC VC BB BB V dụ 3 TŒn h m: NhapXuatTong
C ng việc: nhập v xuất tổng 2 số nguyŒn
Đầu v o: kh ng c Đầu ra: kh ng c void NhapXuatTong()
{ int x, y; printf( Nhap 2 so nguyen: );
scanf( %d%d , &x, &y); printf( %d cong
%d bang %d , x, y, x + y); } NMLT - H m (Function) lOMoAR cPSD| 40425501 & & VC VC BB BB Tầm vực KhÆi niệm L
phạm vi hiệu quả của biến v h m. Biến:
To n cục: khai bÆo trong ngo i tất cả cÆc h m
(kể cả h m main) 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 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 n . NMLT - H m (Function) && NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501
VCVCBBBB Một số lưu NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) & lOMoAR cPSD| 40425501 & VC VC BB BB
Th ng thường người ta thường ặt phần tiŒu ề
h m/nguyŒn mẫu h m (prototype) trŒn h m
main v phần ịnh nghĩa h m dưới h m main.
void XuatTong(int x, int y); // prototype void main() { }
void XuatTong(int x, int y)
{ printf( %d cong %d bang %d , x, y, x + y); } NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501
VCVCBBBB&& CÆc cÆch truyền ối số NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) & lOMoAR cPSD| 40425501 & VC VC BB BB
Truyền GiÆ trị (Call by Value)
CÆc cÆch truyền ối số
Truyền ối số cho h m ở dạng giÆ trị.
Truyền Địa chỉ (Call by Address)
C thể truyền hằng, biến, biểu thức
Truyền ối số cho h m ở dạng ịa chỉ
nhưng h m chỉ sẽ nhận giÆ trị. (con trỏ).
Được sử dụng khi kh ng c nhu cầu
Kh ng ược truyền giÆ trị cho tham
thay ổi giÆ trị của tham số sau khi thực hiện số n y. h m. Được sử dụng khi c nhu cầu
void TruyenGiaTri(int x)
thay ổi giÆ trị của tham số sau khi thực { hiện h m. x++;
void TruyenDiaChi(int *x) { } *x++; } NMLT - H m (Function) NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501
CÆc cÆch truyền ối số
Truyền Tham chiếu (Call by Reference) (C++)
Truyền ối số cho h m ở dạng ịa chỉ (con
trỏ). Được bắt ầu bằng & trong khai bÆo.
Kh ng ược truyền giÆ trị cho tham số n y.
Đượ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.
void TruyenThamChieu(int &x) { NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) & lOMoAR cPSD| 40425501 & VC VC BB BB x++; NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501 } NMLT - H m (Function) && NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) & lOMoAR cPSD| 40425501 & VC VC BB BB
VCVCBBBB Lưu khi truyền ối số NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501 Lưu &&
Trong một h m, cÆc tham số c thể truyền theo nhiều cÆch.
void HonHop(int x, int &y) { x++; y++; } NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) & lOMoAR cPSD| 40425501 & VC VC BB BB
VCVCBBBB Lưu khi truyền ối số NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501 Lưu
Sử dụng tham chiếu l một cÆch
ể trả về giÆ trị cho chương tr nh.
int TinhTong(int x, int y) { return x + y; }
void TinhTong(int x, int y, int &tong) { tong = x + y; }
void TinhTongHieu(int x, int y, int &tong, int &hieu)
{ tong = x + y; hieu = x y; } NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) & lOMoAR cPSD| 40425501 & VC VC BB BB BBBB Lời gọi h m NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501 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 ( ) (<ối số 1>, , <ối số n>); NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) & & VC VC BB BB l O M o A R c P S D | 4 0 4 2 5 5 0 1 NMLT - H m (Function) NMLT - H m (Function) D o w nl oa de d by M ai Le Th i N gu ye t (h oa th an vu 72 9 @ g m ail .c o m) l O M o A R c P S D | 4 0 4 2 5 5 0 1 Lời gọi h m NMLT - H m (Function) D o w nl oa de d by M ai Le Th i N gu ye t (h oa th an vu 72 9 @ g m ail .c o NMLT -Hm (Function ) m) & & VC VC BB BB l O M o A R c P S D | 4 0 4 2 5 5 0 1 && NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) l O M o A R c P S D | 4 0 4 2 5 5 0 1
VCVC Lời gọi chương tr nh con NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet NMLT -Hm (Function ) (hoathanvu729@gmail.com) & & VC VC BB BB l O M o A R c P S D | 4 0 4 2 5 5 0 1 BBBB NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501
VCVCBBBB&& Đệ quy NMLT - H m (Function) NMLT -Hm (Function )
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) & & VC VC BB BB lOMoAR cPSD| 40425501 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 S(n) = n! = 1*2* *(n-1)*n Ta thấy S(n) = S(n-1)*n
Vậy thay v t nh S(n) ta sẽ i t nh S(n-1) NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501
Tương tự t nh S(n-2), , S(2), S(1), NMLT - H m (Function) NMLT -Hm (Function )
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) & & VC VC BB BB lOMoAR cPSD| 40425501 S(0) = 1 NMLT - H m (Function) NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501 BBBB Đệ quy NMLT - H m (Function) NMLT -Hm (Function )
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501 V dụ
a. Viết h m ổi một k tự hoa sang k tự thường. int GiaiThua(int n) b. { if (n == 0) return
Viết thủ tục giải phương tr nh bậc nhất. 1;
c. Viết thủ tục giải phương tr nh bậc hai.
else return GiaiThua(n 1) * n; } int GiaiThua(int
d. Viết h m trả về giÆ trị nhỏ nhất của 4 số n) nguyŒn.
{ if (n > 0) return GiaiThua(n 1) * n; else return 1;
e. Viết thủ tục hoÆn vị hai số nguyŒn. }
f. Viết thủ tục sắp xếp 4 số nguyŒn NMLT - H m (Function) tăng dần. B i tập thực h nh NMLT - H m (Function)
5. B i 4, 5, 6, 7, 8 trang 140-141 chương 8 (C u
lệnh iều kiện v rẽ nhÆnh) NMLT - H m (Function) NMLT -Hm (Function )
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) lOMoAR cPSD| 40425501
VCVCBBBB&& B i tập thực h nh NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) lOMoAR cPSD| 40425501
6. B i tập 3 trang 155 chương 9 (C u lệnh lặp). H m
nhận v o một số nguyŒn dương n v thực hiện: a. Trả về số ảo của số . b. C phải l số
ối xứng (Trả về True/False)
c. C phải l số ch nh phương.
d. C phải l số nguyŒn tố.
e. Tổng cÆc chữ số lẻ.
f. Tổng cÆc chữ số nguyŒn tố.
g. Tổng cÆc chữ số ch nh phương. && NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) lOMoAR cPSD| 40425501 VCVC B i tập thực h nh NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function ) lOMoAR cPSD| 40425501 BBBB
7. B i tập 4 trang 156 chương 9 (C u lệnh lặp). H m
nhận v o một số nguyŒn dương n v thực hiện: a. S = 1 + 2 + + n b. S = 12 + 22 + + n2 c. S = 1 + 1/2 + + 1/n d. S = 1 * 2 * * n e. S = 1! + 2! + + n!
8. H m trả về USCLN của 2 số nguyŒn.
9. In ra n phần tử của dªy Fibonacy. NMLT - H m (Function)
Downloaded by Mai Le Thi Nguyet (hoathanvu729@gmail.com) NMLT -Hm (Function )