– K t quả của bài toán không trả về giá trị nào hoặc trả về nhiều giá trị hoặc trả về kiểu dữ liệu có cấu trúc Array, Record, File.. - Sử dụng chƣơng trình con để tính giai thừa của [r]
(1)Trang: t : ………
: ………
TIN ỌC ỚP 11
CHƢƠNG VI: CHƢƠNG TRÌNH CON: THỦ TỤC VÀ HÀM Ti t
1 Khái iệm chươ g trì h co
Chƣơng trình đoạn chƣơng trình thực trọn vẹn hay chức Trong Pascal, có dạng chƣơng trình con:
Thủ tục PROCEDURE : Dùng để thực hay nhiều nhiệm vụ
Hàm FUNCTION : Trả giá trị có kiểu vơ hƣớng, kiểu string kiểu trỏ Hàm sử dụng biểu thức Ngồi ra, Pascal cịn cho phép CTC lồng vào
2 Cấu trúc chu g
PROGRAM Tên_chƣơng_trình; USES CRT;
CONST …………; TYPE …………; VAR …………;
PROCEDURE THUTUC[ Các tham số ]; [Khai báo Const, Type, Var] BEGIN
………… END;
FUNCTION HAM[ Các tham số ]:<Kiểu liệu>; [Khai báo Const, Type, Var]
BEGIN
………… HAM:=<Giá trị>; END;
BEGIN {Chƣơng trình chính} ………
(2)Trang: Các hái iệm
Biế cục (global variable : Còn đƣợc gọi bi n chung, bi n đƣợc khai báo đầu chƣơng trình, đƣợc sử dụng bên chƣơng trình bên chƣơng trình Bi n tồn cục tồn suốt trình thực chƣơng trình
Biế cục (local variable : Cịn đƣợc gọi bi n riêng, bi n đƣợc khai báo đầu chƣơng trình con, đƣợc sử dụng bên thân chƣơng trình bên thân chƣơng trình khác n m bên chƣơng trình lồng Bi n cục tồn chƣơng trình hoạt động, nghĩa bi n cục đƣợc cấp phát nhớ chƣơng trình đƣợc gọi để thi hành, đƣợc giải phóng sau chƣơng trình k t thúc
Tham số thực (actual parameter tham số mà bi n tồn cục, biểu thức giá trị số bi n cục sử dụng chƣơng trình lồng mà ta dùng chúng truyền giá trị cho tham số hình thức tƣơng ứng chƣơng trình
Tham số hì h thức (formal parameter bi n đƣợc khai báo sau Tên chương trình con, dùng để nhận giá trị tham số thực truyền đ n Tham số hình thức bi n cục bộ, ta xem nhƣ đối số hàm toán học
3 Thủ tục (Procedure)
Thủ tục đoạn cấu trúc chƣơng trình đƣợc chứa bên chƣơng trình Pascal nhƣ chƣơng trình Thủ tục đƣợc đặt tên chứa danh sách tham số hình thức formal parameters Các tham số phải đƣợc đặt trong dấu ngoặc đơn Ta truy xuất thủ tục b ng cách g i t thủ tục Chƣơng trình tự động truy xuất thủ tục tên gọi thực lệnh chứa thủ tục
Có loại thủ tục:
Thủ tục không tham số Thủ tục có tham số 2 Hàm (Function) :
Hàm chƣơng trình cho ta giá trị kiểu vô hƣớng Hàm tƣơng tự nhƣ thủ tục nhƣng trả giá trị thông qua tên hàm lời gọi hàm tham gia biểu thức
(3)Trang:
FUNCTION <Tên hàm> <Tham số hình thức : kiểu bi n> : <Kiểu k t quả> ;
{ khai báo h ng, bi n, kiểu cụcbbộ } BEGIN
{ khai báo nội hàm } END;
Trong đó:
- Tên hàm tên tự đặt cần tuân thủ theo nguyên tắc đặt tên Pascal - Kiểu ết kiểu vô hƣớng, biểu diễn k t giá trị hàm - Một hàm có hay nhiều tham số hình thức, có nhiều tham số hình thức kiểu giá trị ta vi t chúng cách b ng dấu phẩy , Trƣờng hợp tham số hình thức khác kiểu ta vi t chúng cách b ng dấu chấm phẩy ;
- Trong hàm sử dụng h ng, kiểu, bi n đƣợc khai báo chƣơng trình nhƣng ta khai báo thêm h ng, kiểu, bi n dùng riêng nội hàm Chú ý phải có biến trung gian có kiểu kết hàm để lƣu k t hàm q trình tính tốn để cuối ta có lệnh gán giá trị bi n trung gian cho tên hàm
Dùng hàm Dù g thủ tục
– K t toán trả giá trị kiểu vô hƣớng, kiểu string kiểu trỏ – Lời gọi CTC cần n m biểu thức tính tốn
(4)Trang: t : ………
………
TIN ỌC ỚP 11
CHƢƠNG VI: CHƢƠNG TRÌNH CON: THỦ TỤC VÀ HÀM (Ti t 2)
dụ chươ g trì h co
i t p : Vi t CTC để tính n! = 2…n Ý tƣởng:
- N u ngƣời dùng nhập số n < yêu cầu nhập lại - Sử dụng chƣơng trình để tính giai thừa số n! = n u n = 0;
n! = 2.3.4.5 n Tích n thừa số Program CTC_2;
uses crt;
var n:integer;x:longint;
Procedure Giai_Thua(var GT:longint; n:byte); begin
GT:=1; while n>0 begin
GT:=GT*n; n:=n-1; end; end; begin repeat clrscr;
write('Nhap so n: ');readln(n);
if n < then begin write('Nhap so n>=0');readln; end;
until n>=0; Giai_Thua(x,n);
writeln('Giai thua cua ',n,'la:',x); readln
(5)Trang:
Bài t Vi t chƣơng trình cho phép thực rút gọn phân số Ý tƣởng:
- Tìm UCLN tử số mẫu số
- Chia tử mẫu phân số cho UCLN vừa tìm đƣợc
Program Rut_gon_phan_so; uses crt;
var tu,mau:integer;
Function UCLN(a,b:integer):integer; var r: integer;
begin
r:= a mod b; while r <> begin
a:= b; b:= r; r:=a mod b; end;
UCLN:=b; end;
begin clrscr;
write('Nhap tu: '); readln(tu); write('Nhap mau: '); readln(mau);
write('Ket qua rut gon: ',tu,'/',mau,'=',tu div UCLN(tu,mau),'/',mau div UCLN(tu,mau)); readln