زیر برنامه ها: رویه ها و عملکردها - 2


یک تابع یک برنامه فرعی است که نتیجه ای (عدد، رشته کاراکتر و غیره) را برمی گرداند

تصور کنید که محصولی را از یک فروشگاه اینترنتی سفارش داده اید. از نقطه نظر برنامه نویسی، شما زیربرنامه خاصی را فراخوانی کرده اید، و برخلاف یک رویه، این زیربرنامه باید یک نتیجه را برگرداند - محصولی را که سفارش داده اید تحویل دهید. این زیر روال ها توابع نامیده می شوند.
یک تابع تقریباً به همان روشی قالب بندی می شود: <پیش> تابع <نام تابع> (فهرست پارامترها به عنوان <نام متغیر>:<نوع آن> جدا شده با نقطه ویرگول): <نوع مقدار بازگشتی>; شروع <بدنه عملکرد> پایان;
تفاوت بین یک تابع و یک رویه در این است که یک تابع باید مقداری را برگرداند. برای این کار باید از نام تابع به عنوان متغیر یا متغیر ویژه Result استفاده کنید: <پیش> تابع Sum(a, b:integer): عدد صحیح; شروع مجموع := a + b; پایان; یا <پیش> تابع Sum(a, b:integer): عدد صحیح; شروع نتیجه := a + b; پایان;
تابعی که میانگین حسابی دو عدد صحیح را برمی گرداند به شکل زیر است: <پیش> تابع میانگین(a, b: integer): real; شروع   میانگین := (a + b) / 2; پایان؛ باید بدانیم که چگونه این تابع را در برنامه اصلی فراخوانی کنیم:
شما نباید یک تابع را به همان روشی که یک رویه را فراخوانی می کنید: <پیش> میانگین (10, 5); مقدار بازگشتی توسط تابع از بین خواهد رفت. گویی اجناس فروشگاه اینترنتی به کسی داده نشده بلکه دور ریخته شده است. بعید است که مشتری آن را دوست داشته باشد.

صحیح تر است که نتیجه را در یک متغیر ذخیره کنید (یا آن را روی صفحه چاپ کنید): <پیش> a := میانگین (10, 5);

یا

<پیش> writeln(میانگین (10، 5));

اغلب برنامه نویسان از توابع بولی استفاده می کنند که مقادیر بولی را برمی گرداند: true یا false (True یا False)
چنین توابعی برای   برخی از ویژگی ها را بررسی کنید.
دو مثال از نوشتن یک تابع منطقی را در نظر بگیرید که یک عدد را برای یکنواختی بررسی می کند <بدن>
1)  روش بهتر:
نتیجه بیان
n % 2 == 0
درست (درست) یا نادرست (نادرست) خواهد بود
نیازی به نوشتن عبارت شرطی نیست!
2) این کار را نکنید!
شما می توانید آن را به همین شکل بنویسید، اما به نظر می رسد رکورد طولانی تری است، بنابراین بهتر است این کار را نکنید
<پیش> bool isEven(int n) { بازگشت (n % 2 == 0); } <پیش> bool isEven(int n) { اگر (n % 2 == 0) بازگشت درست؛ دیگر بازگشت نادرست; }

و آخرین نکته در مورد کار با توابع و رویه ها: تعداد توابع و رویه ها در برنامه محدود نیست. علاوه بر این، یک زیربرنامه می تواند زیربرنامه دیگری و حتی خودش را فراخوانی کند.