- Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô hướng, kiểu string).
- Lời gọi CTC cần nằm trong các biểu thức tính toán.
- 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).
- Lời gọi CTC không nằm trong các biểu thức tính toán.
[TBODY]
[/TBODY]
Em lấy VD khi tính giai thừa của n!
Qua VD chị có thể thấy Procedure thì nhập và in trong nó được còn function thì không, Khi sử dụng Function thì có thể sd nó như một biểu thức, và kết thúc Function là phải gán giá trị một biến nào đó cho chính tên Function đó
Sử dụng Procedure
Sử dụng Function
Mã:
Var
n:longint;x:integer;
Procedure nhap;
Begin
Repeat
write('nhap vao mot so:');readln(n);
If n<0 then begin write('nhap so n>=0');end;
Until n>=0;
end;
Procedure Giai_Thua(Var Gt:Longint;n:byte);
Begin
Gt:=1;
For i:=2 to n do
Gt:=Gt*i;
end;
Begin
nhap;
Giai_Thua(x,n);
write('giai thua cua',n,'la:',x);
readln
End.
Mã:
var n: longint;
Function Giai_Thua(n:longint):longint;
Var GT:Longint;
begin
GT:=1;
For i:=2 to n do
GT:=GT * n;
Giai_thua:=GT;
end;
begin
write('Nhap n: '); readln(n);
write(n,'!=',Giai_thua(n));
readln
end.
- Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô hướng, kiểu string).
- Lời gọi CTC cần nằm trong các biểu thức tính toán.
- 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).
- Lời gọi CTC không nằm trong các biểu thức tính toán.
[TBODY]
[/TBODY]
Em lấy VD khi tính giai thừa của n!
Qua VD chị có thể thấy Procedure thì nhập và in trong nó được còn function thì không, Khi sử dụng Function thì có thể sd nó như một biểu thức, và kết thúc Function là phải gán giá trị một biến nào đó cho chính tên Function đó
Sử dụng Procedure
Sử dụng Function
Mã:
Var
n:longint;x:integer;
Procedure nhap;
Begin
Repeat
write('nhap vao mot so:');readln(n);
If n<0 then begin write('nhap so n>=0');end;
Until n>=0;
end;
Procedure Giai_Thua(Var Gt:Longint;n:byte);
Begin
Gt:=1;
For i:=2 to n do
Gt:=Gt*i;
end;
Begin
nhap;
Giai_Thua(x,n);
write('giai thua cua',n,'la:',x);
readln
End.
Mã:
var n: longint;
Function Giai_Thua(n:longint):longint;
Var GT:Longint;
begin
GT:=1;
For i:=2 to n do
GT:=GT * n;
Giai_thua:=GT;
end;
begin
write('Nhap n: '); readln(n);
write(n,'!=',Giai_thua(n));
readln
end.
xin lỗi chớ nói thật thì c đọc đi đọc lại rồi mà cũng ko sáng cấy não ra đc
cho c hỏi là 1 bài toán lập CTC thì có thể dùng bằng 2 cách thủ tục vs hàm ko? nếu dùng đc thì cần lưu ý điều j v??
xin lỗi chớ nói thật thì c đọc đi đọc lại rồi mà cũng ko sáng cấy não ra đc
cho c hỏi là 1 bài toán lập CTC thì có thể dùng bằng 2 cách thủ tục vs hàm ko? nếu dùng đc thì cần lưu ý điều j v??
Được chị ạ, nếu dùng thì chị lưu ý mấy cái như:
Hàm thì viết được trong lệnh in luôn, Vd: write('giai thua cua',n,'la:',GT(n))
Mình gọi tên hàm trong đó được nhưng thủ tục thì không
Trong thủ tục thì in và nhập dữ liệu được còn hàm thì không
Khi kết thúc hàm thì thường gán giá trị cho tên hàm luôn, như cái em là trên đó ạ
...
Phần Thủ tục và hàm này hơi khó hiểu ạ, lúc đầu học em cũng không hiểu nhưng làm bt rồi cũng quen