توابع (Functions)

تابع که مقدار برمی‌گرداند: سه روش تعیین خروجی (نام تابع، Result، exit) و فراخوانی در عبارات.

تابع = رویه‌ای که جواب می‌دهد

فرق اصلی: تابع (Function) یک مقدار برگشتی دارد. مثل ماشین‌حساب: ورودی می‌گیرد، جواب می‌دهد — و شما جواب را هر جا می‌توانید استفاده کنید.

ساختار

function اسم(پارامترها): نوع_خروجی;
begin
  ...
  اسم := مقدار;   { تعیین مقدار برگشتی }
end;

اولین تابع

program FuncDemo;

function Add(a, b: integer): integer;
begin
  Add := a + b;    { مقدار برگشتی = اسم تابع }
end;

begin
  writeln(Add(3, 5));         { 8 — مستقیم در writeln }
  writeln(Add(10, 20) * 2);   { 60 — در محاسبه }
end.

سه روش تعیین مقدار برگشتی

روش ۱: اسم تابع (کلاسیک)

function Square(x: integer): integer;
begin
  Square := x * x;
end;

روش ۲: Result (مدرن — Free Pascal)

function Square(x: integer): integer;
begin
  Result := x * x;
end;
مزیت Result: می‌توانید مقدارش را بخوانید و چند بار تغییرش دهید — اما اسم تابع فقط قابل نوشتن است.

روش ۳: exit(مقدار) — خروج فوری

function Max(a, b: integer): integer;
begin
  if a > b then
    exit(a)    { برگرد و تمام کن }
  else
    exit(b);
end;

تابع در عبارات

چون تابع «مقدار» است، هر جا مقدار می‌رود می‌تواند باشد:

var
  x, y: integer;
begin
  x := Square(5);           { تخصیص }
  y := Square(3) + Square(4);  { محاسبه: 9+16=25 }
  if Square(2) = 4 then     { شرط }
    writeln('درست!');
  writeln(Square(Square(2)));  { تابع توی تابع: 16 }
end;

توابع واقعی

program MathTools;

function IsEven(n: integer): boolean;
begin
  Result := (n mod 2 = 0);
end;

function Factorial(n: integer): integer;
var
  i, f: integer;
begin
  f := 1;
  for i := 2 to n do
    f := f * i;
  Result := f;
end;

function Power(base, exp: integer): integer;
var
  i, p: integer;
begin
  p := 1;
  for i := 1 to exp do
    p := p * base;
  Result := p;
end;

var i: integer;
begin
  for i := 1 to 6 do
    writeln(i, '! = ', Factorial(i));

  writeln('2^10 = ', Power(2, 10));
  writeln('7 even? ', IsEven(7));
end.

تابع در برابر رویه

ویژگیprocedurefunction
مقدار برگشتیندارددارد (با نوع مشخص)
فراخوانیبه‌عنوان دستور مستقلداخل عبارات
کاربردانجام یک کار (چاپ، تغییر)محاسبه و برگرداندن جواب

خلاصه

این مبحث بخشی از دوره آموزش کامل پاسکال است.

ابزارهای مرتبط