Tin học chương trình con

elisabeth.2507

Học sinh tiến bộ
Thành viên
19 Tháng tư 2017
536
582
156
21
Nghệ An
THPT DC2

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
m.n giúp mình phân biệt Procedure với Function với!
mình ko biết khi nào dùng Procedure khi nào dùng Function luôn á, mà lại sắp kiểm tra rồi:(:(
FunctionProcedure
- 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 ProcedureSử 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.







[TBODY] [/TBODY]
 

elisabeth.2507

Học sinh tiến bộ
Thành viên
19 Tháng tư 2017
536
582
156
21
Nghệ An
THPT DC2
FunctionProcedure
- 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 ProcedureSử 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.






[TBODY] [/TBODY]
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??
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
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
 
  • Like
Reactions: elisabeth.2507
Top Bottom