PDA

View Full Version : سوال: تعريف تابع



ravand
یک شنبه 16 بهمن 1390, 15:44 عصر
لطفاً تعاريفي كه از تابع و آرگومنت بلديد رو بگيد.
يكي از تعاريف تابع : شما مي تونيد در يك صفحه مقداري رو چند بار با تابع فراخواني كنيد.
متشكرم.

mbf5923
یک شنبه 16 بهمن 1390, 17:29 عصر
توابع یا Function ها که در برنامه نویسی مورد استفاده قرار میگیرند نوعی کتابخانه از عملیات خاص و تعریف شده میباشند که برای کاهش زمان کد نویسی و حجم کد برنامه و همچنین تسهیل در امر تحلیل کد برنامه مورد استفاده قرار میگیرند.هر تابع شامل آرگومان ها و پارامترها میباشد:
آرگومان تابع که به عنوان متغیری که ورودی های تابع را درخود نگه میدارد و در هدر تابع در روبروی نام تابع تعریف میشود.آرگومان ها از قوانین متغیر ها تبعیت میکنن و به چند صورت قابل تعریفند:
1-به صورت ByVal که یک کپی از مقدار ارسال شده به تابع درون آرگومان قرار میگیرد و تغییر در آرگومان بر روی عدد اصلی تاثیری نخواهد داشت.
2-به صورت ByRef که آدرس حافظه مقدار ارسال شده به تابع در آرگومان قرار میگیرد و هرگونه تغییر در آرگومان در مقدار اصلی نیز تاثیر گذار است.
3-تعریف به صورت Optional که به صورت پیشفرض مقداری به آرگومان نسبت داده میشود.
و اما پارامتر ها همان مقادیری هستند که توسط برنامه به آرگومان های تابع فرستاده میشوند.

ravand
یک شنبه 16 بهمن 1390, 17:34 عصر
خيلي ممنون
ولي اگه ميشد يه تعريف ساده تر براي تابع و آرگومنت مي گفتيد خيلي بهتر بود. اگه من به يه نفر كه هيچي از php نميدونه اينا رو بگم هنگ ميكنه . من از اين تعاريف رو زياد توي اينترنت ديدم يه تعريف ساده تر باشه خيلي بهتره.
متشكرم

MMSHFE
یک شنبه 16 بهمن 1390, 17:56 عصر
توی برنامه نویسی، گاهی اوقات شرایط طوری پیش میاد که میخوایم یکسری کارها رو چندبار انجام بدیم. حالا یا این کارها دقیقاً پشت سر هم انجام میشن (که میتونیم از حلقه ها برای تکرار دستورات استفاده کنیم) و یا اینکه در بخشهای مختلفی از برنامه که الزاماً پشت سر هم نیستن و یا حتی ممکنه در فایلهای مختلفی از برنامه باشن، قرار دارن که در این حالت، میتونیم دستورات تکرارشونده رو درون یک تابع قرار بدیم و هر زمان بهش نیاز داشتیم، با کمک اسمش، اون رو فراخوانی کنیم تا دستوراتش اجرا بشن. توابع میتونن دارای مقدار بازگشتی باشن یا نباشن، یعنی اینکه بعد از اجرا، یک مقدار رو بعنوان نتیجه اجرای خودشون به بخشی از برنامه که اون تابع رو صدا زده، برگردونن یا نه. همچنین میشه موقع فراخوانی توابع، یکسری مقادیر رو هم براش ارسال کنیم که بهشون میگیم ورودیهای تابع. اینجا دو تعریف پیش میاد: آرگومان و پارامتر. آرگومان، مقداری هست که موقع صدا زدن تابع، براش ارسال میکنیم و پارامتر، اون چیزی هست که توی تعریف تابع، درکنار اسمش توی پرانتز نوشتیم و توی بدنه تابع از اون استفاده میکنیم. مثلاً کد زیر رو درنظر بگیرین:


function test($x) {
$x *= 2;
echo $x;
}

$y = 5;
test($y);
// Output: 10

توی کد فوق، x$ پارامتر و y$ آرگومان هست. بنابراین میبینید که آرگومان و پارامتر با هم متفاوت هستند. در حالت عادی، موقع ارسال آرگومان برای تابع، یک کپی از مقدار اون در پارامتر قرار میگیره و توی تابع استفاده میشه و طبیعتاً تغییرات پارامتر در درون تابع، ربطی به آرگومان که خارج از تابع هست، نداره. به این حالت میگن استفاده مقداری یا ByVal که حالت رایج هست. اما در حالت ارجاعی یا ByRef، بجای اینکه یک کپی از آرگومان داخل پارامتر قرار بگیره، آدرس آرگومان در حافظه داخل پارامتر ذخیره میشه و اینطوری، آرگومان و پارامتر هر دو به یک محل از حافظه اشاره میکنن و طبیعتاً تغییرات روی پارامتر در درون تابع، مقدار آرگومان رو در خارج از تابع هم تغییر خواهد داد. مثال:


function byval_func($x) {
$x *= 2;
echo $x;
}

function byref_func(&$x) {
$x *= 2;
echo $x;
}

$y = 5;

byval_func($y);
echo $y;
// Output: 10 5

byref_func($y);
echo $y;
// Output: 10 10

نکته آخر اینکه میتونیم برای استفاده از توابع در فایلهای مختلف، اونها رو داخل یک فایل قرار بدیم و هرموقع لازم داشتیم، اون فایل رو ضمیمه کنیم و از توابع داخلش استفاده کنیم. به چنین فایلهایی که چند تابع داخلشون هست، کتابخانه توابع میگن و به توابع داخلشون، توابع کتابخانه ای گفته میشه.
اگه سؤالی بود یا جایی رو خوب توضیح ندادم و یا نکته از قلم افتاده، عذر میخوام و برای توضیح بیشتر در خدمتم.