# GÓC SÁNG TẠO > Khu vực lập trình > Pascal/Delphi/Kylix >  Vấn đề về tham biến, tham trị

## hong nt

*Các bạn hãy giúp mình:*
Nêu khái niệm đầy đủ nhất về tham biến, tham trị.
Còn mình thấy định nghĩa trong SGK Tin học 11 như sau thì mình chưa thấy rõ lắm
- Trong lệnh gọi chương trình con, các tham số hình thức được thay bằng các tham số thực sự tương ứng là các giá trị cụ thể được gọi là các tham số giá trị.
- Trong lệnh gọi chương trình con các tham số hình thức được thay thế bởi các tham số thực sự tương ứng là tên các biến chứa dữ liệu ra được gọi là các tham số biến.
Theomình hiểu cách nhận biểt và khai báo tham biến là sau từ khóa Var , còn tham trị khai báo sau tên chương trình con không có từ khóa Var.
Khi truyền tham biến chỉ các biến
Còn khi truyền tham trị thì các tham số thực sự có thể là hằng, biến, biểu thức

----------


## huongcao

Đúng rồi đó, chỉ cần hiểu thế là làm được bài rồi. Ở cái tham biến tham trị này bạn chỉ cần nhớ: sau khi thực hiện ctc, tham biến sẽ bị thay đổi giá trị tùy vào các phép tính trong ctc, còn tham trị thì không thay đổi, nó chỉ thay đổi trong ctc, thoát ra khỏi ctc thì nó sẽ lại có giá trị như cũ.

----------


## Thinhquang chemi

> *Các bạn hãy giúp mình:*
> Nêu khái niệm đầy đủ nhất về tham biến, tham trị.
> Còn mình thấy định nghĩa trong SGK Tin học 11 như sau thì mình chưa thấy rõ lắm
> - Trong lệnh gọi chương trình con, các tham số hình thức được thay bằng các tham số thực sự tương ứng là các giá trị cụ thể được gọi là các tham số giá trị.
> - Trong lệnh gọi chương trình con các tham số hình thức được thay thế bởi các tham số thực sự tương ứng là tên các biến chứa dữ liệu ra được gọi là các tham số biến.
> Theomình hiểu cách nhận biểt và khai báo tham biến là sau từ khóa Var , còn tham trị khai báo sau tên chương trình con không có từ khóa Var.
> Khi truyền tham biến chỉ các biến
> Còn khi truyền tham trị thì các tham số thực sự có thể là hằng, biến, biểu thức


 Trong 1 topic mình đã giải thích về phần tham số trong chương trình con rồi đó bạn, bạn kiểm tra lại thử xem.

----------


## lebachit

Mình thấy vấn đề tham số của chương trình con thật là phức tạp
Mà tại sao các tham số của hàm thì là tham trị, sao không là tham biến.
Có phải do các tham số trong hàm chỉ đóng vai trò là dữ liệu đầu vào còn kết quả trả về qua tên hàm. Các bạn hãy giải thích giúp mình nhé!

----------


## thuhongnt

Bạn hiểu đúng rồi mà. Mục đích của hàm là trả lại giá trị thông qua tên hàm, do đó tham số dùng cho hàm không cần thiết phải thay đổi giá trị. Tuy nhiên trong 1 số trường hợp, để kết hợp tìm giá trị và thực hiện 1 số công việc, ta vẫn có thể dùng cả tham biến, tham trị trong hàm. Trong hàm sẽ chứa cả thủ tục và cả tính toán. 1 công đôi việc mà.

----------


## thanhlydongden02

Thường thì trong thân hàm chỉ dùng 1 lệnh gán giá trị trả về cho tên hàm hay có thể sử dụng nhiều lệnh gán giá trị trả về cho tên hàm
Ví dụ sau thì dùng 2 lần lệnh gán giá trị trả về cho hàm
program Minbaso;
Var a,b,c:Integer;
Function Min(a,b:Integer):Integer;
Begin
if a<b then Min:=a else min:=b;
end;
BEGIN
write('Nhap vao 3 so:');
Readln(a,b,c);
Writeln('So nho nhat trong ba so la:',Min(min(a,b),c));
Readln
End.

----------


## thaonguyenxanh_9x

Cái này khó hiểu đây, lần đầu tiên mình chú ý tới lỗi này. Có ai biết vì sao không?
Khi chạy chương trình thì báo lỗi 122. tham chiếu biến không hợp lệ.
Có thể min(a,b) và c không cùng kiểu chăng? 
Mấy bạn am hiểu về vấn đề này vô nói thử nghe nào!

----------

