Tiết 42 - §18VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON Giáo viên thực hiện: Nguyễn Anh Hoà... Cách viết và sử dụng hàmSo sánh hàm và thủ tục: Giống nhau: Đều là CTC, nên cùng có cấ
Trang 2Kiểm tra bài cũ
var a,b:integer;
procedure tinh(x:integer; var y:integer);
begin
x:=x+1;
y:=y+1;
end;
begin
a:=2;
b:=5;
writeln(a,' - ', b);
tinh(a,b);
writeln(a,' - ', b);
end
Kết quả khi chạy CT:
2 – 5
2 – 6
- a vẫn giữ nguyên giá trị là do a là tham trị
- b thay đổi giá trị do b
là tham biến
Trang 3Tiết 42 - §18
VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON
Giáo viên thực hiện: Nguyễn Anh Hoà
Trang 42 Cách viết và sử dụng hàm
a. Khai báo
Function <tên hàm>[(<ds tham số>)]:<kiểu dữ liệu>; [<khai báo>];
Begin
[<thân hàm>];
<tên hàm> := <biểu thức>;
End;
Cách sử dụng hàm:
- Việc sử dụng hàm hoàn toàn tương tự việc sử dụng
hàm chuẩn
- Lệnh gọi hàm có thể tham gia vào biểu thức như
một toán hạng hoặc có thể là tham số cho lời gọi của hàm hay thủ tục khác
Trang 52 Cách viết và sử dụng hàm
So sánh hàm và thủ tục:
Giống nhau:
Đều là CTC, nên cùng có cấu trúc chung.
Đều có thể chứa tham số, có cùng cách thức
dùng để khai báo các ts này.
Khác nhau:
Hàm luôn trả về một giá trị qua tên của nó.
Bắt đầu bằng từ khoá function.
Sau tên và ds tham số có kiểu dữ liệu trả về.
Trong thân hàm có câu lệnh gán giá trị cho tên hàm
Trang 62 Cách viết và sử dụng hàm
b Ví dụ
1) Ví dụ 1:
2) Ví dụ 2:
3) Ví dụ 3:
4) Ví dụ 4:
VD2 SGK trang 102.
Trang 7Ví dụ 2
var tuso,mauso,a:integer;
function ucln(x,y:integer):integer;
var sodu:integer;
begin
while y<>0 do
begin
sodu := x mod y;
x :=y;
y := sodu;
end;
ucln := x;
End;
begin write('Nhap tu so va mau so '); readln(tuso,mauso);
a := ucln(tuso,mauso);
if a > 1 then begin
tuso := tuso div a;
mauso := mauso div a;
end;
Write('Phan so thu duoc: ',
tuso,'/',mauso);
End.
Trang 8Ví dụ 3
var a,b,c:real;
function Min(a,b:real):real;
begin
if a<b then Min := a
else Min := b;
end;
begin
write('Nhap 3 gia tri');
readln(a,b,c);
writeln('So nho nhat la: ', Min(Min(a,b),c):4:2); readln
end
var a,b,c:real;
function Min(a,b:real):real;
begin
if a<b then Min := a
else Min := b;
end;
begin
write('Nhap 3 gia tri');
readln(a,b,c);
writeln('So nho nhat la: ', Min(Min(a,b),c):4:2); readln
end
Trang 9Ví dụ 4
var a:integer;
ch:char;
Function
NguyenTo(X:integer):boolean;
var j:integer;
begin
NguyenTo := false;
for j:=2 to Trunc(sqrt(X)) do
If X mod j = 0 then exit;
NguyenTo := X > 1;
end;
Procedure NhapA(var b:integer);
begin
Repeat
readln(b);
Until (b>=2);
Begin Repeat NhapA(a);
If NguyenTo(a) then Writeln('So ban da nhap la nguyen to')
Else Writeln('So da nhap khong phai nguyen to');
Writeln('Ban co muon thu tiep (C/K)?');
readln(ch);
Until (ch = 'K') or (ch = 'k'); End.
Trang 10Bài tập về nhà
Em hãy lập trình nhập vào một mảng A có n phần
tử nguyên Tính và đưa ra màn hình tổng các
phần tử của mảng là chia hết cho 3.
HD:
- Viết một thủ tục tạo và nhập dữ liệu cho mảng A.
- Viết một hàm kiểm tra xem phần tử đó có chia hết cho 3 không.
- Viết một hàm tính tổng các phần tử của mảng chia hết 3.
- In kết quả đó ra màn hình.
Trang 11Củng cố
Cách khai báo hàm
Cách sử viết hàm
Cách sử dụng hàm
Trang 12Xin chân thành cảm ơn thầy cô
và các em