PDA

View Full Version : گرفتن چند خروجي از فانکشن



h_mohamadi
چهارشنبه 06 شهریور 1392, 09:27 صبح
سلام
من يک فانکشن دارم که 8 ورودي دارد و 4 خروجي حالا نمي دانم بايد اين 4 خروجي را چطور دريافت کنم؟
يک راه که بذهنم زد اين است که 4 متغير عموي داشته باشو و آن را پر کنم ولي مي خوام بدان راه بهتري وجود دارد؟؟

یوسف زالی
چهارشنبه 06 شهریور 1392, 09:51 صبح
سلام.
راههای بهتری هم وجود داره از جمله:

- گرفتن خروجی تابع بصورت یک رکورد - کلاس - مجموعه
- فرستادن پارامتر های Var به تابع (یا پردازه) و تغییر در اون در بدنه
- استفاده از محدوده حافظه اشتراکی (مثل همون متغیر های عمومی)

روش دوم برای پارامتر های غیر همسان مناسب تره.

h_mohamadi
چهارشنبه 06 شهریور 1392, 09:54 صبح
سلام.
راههای بهتری هم وجود داره از جمله:

- گرفتن خروجی تابع بصورت یک رکورد - کلاس - مجموعه
- فرستادن پارامتر های Var به تابع (یا پردازه) و تغییر در اون در بدنه
- استفاده از محدوده حافظه اشتراکی (مثل همون متغیر های عمومی)

روش دوم برای پارامتر های غیر همسان مناسب تره.

مي شود يکم بيشتر توضيح بدهيد؟؟
روش دوم که فرموده ايد بهتره؟

hadisalahi2
چهارشنبه 06 شهریور 1392, 10:07 صبح
به نظر من روش اول بهتره
چون محدودیتی در تعداد پارامتر ها نیست و پیاده سازیش هم راحت تره

یوسف زالی
چهارشنبه 06 شهریور 1392, 10:12 صبح
ارسال پارامتر بصورت ارجاع رو سرچ کنید مطلب روشنه.
بصورت سریع توضیح می دم باقیش با خودت:

هر پارامتری که فرستاده می شه رو می تونید به صورت مقدار بفرستید یا بصورت ارجاع،

نوع اول، ارسال بصورت مقدار:
در این حالت (عادی) یک کپی از روی پارامتر فرستاده شده به تابع پاس داده می شه و تغییرات روی اون هیچ تاثیری روی پارامتر اصلی نداره.
Function F(X: integer)..; // by value

نکته: برخی انواع بصورت پیش فرض همیشه بصورت ارجاع فرستاده می شن حتی اگر ظاهرا بصورت مقدار پاس داده بشن. مثل تمام آبجکت ها.

نوع دوم، ارسال بصورت ارجاع:
در این حالت آدرس خود متغیر فرستاده می شه و تغییر روی اون در اصل پارامتر ها تاثیر می گذاره.
Function F(var X: integer).. // by ref

موفق باشید.

h_mohamadi
چهارشنبه 06 شهریور 1392, 10:43 صبح
به نظر من روش اول بهتره
چون محدودیتی در تعداد پارامتر ها نیست و پیاده سازیش هم راحت تره
مي شود نمونه کدش را بگذاريد

hadisalahi2
چهارشنبه 06 شهریور 1392, 10:48 صبح
Function F(var X: integer).. // by ref

همین کدش هست دیگه
باید در عنوان تابع ، تعداد پارامتر ها رو با کلمه کلیدی Var تعریف کنی
خود همین پارامتر ها هم ورودی میشند و هم خروجی

Mahmood_M
چهارشنبه 06 شهریور 1392, 11:03 صبح
لطفا قبل از ارسال تاپیک جستجو کنید
مقاله : استفاده از آرایه به عنوان ورودی و خروجی تابع (http://barnamenevis.org/showthread.php?209414-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A2%D8%B1%D8%A7%D9%8A%D9%87-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%D9%88%D8%B1%D9%88%D8%AF%D9%8A-%D9%88-%D8%AE%D8%B1%D9%88%D8%AC%D9%8A-%D8%AA%D8%A7%D8%A8%D8%B9&p=928763)
یک تابع با دو خروجی (http://barnamenevis.org/showthread.php?322251-%DB%8C%DA%A9-%D8%AA%D8%A7%D8%A8%D8%B9-%D8%A8%D8%A7-%D8%AF%D9%88-%D8%AE%D8%B1%D9%88%D8%AC%DB%8C)

h_mohamadi
چهارشنبه 06 شهریور 1392, 11:10 صبح
Function F(var X: integer).. // by ref

همین کدش هست دیگه
باید در عنوان تابع ، تعداد پارامتر ها رو با کلمه کلیدی Var تعریف کنی
خود همین پارامتر ها هم ورودی میشند و هم خروجی

يعني اگر فانکشن من اين است
function Zaman(Day,v1,k1,v2,k2,v3,k3,ES:String)
براي که شامل 8 ورودي است و 4 خروجي
S,T,G,F:String
بايد چطوري نوشته شود؟؟

یوسف زالی
چهارشنبه 06 شهریور 1392, 11:20 صبح
دوست من شما بهتره یک کتاب مقدماتی مطالعه کنید اگر سوال داشتید دوباره بیایید و بپرسید.
توضیح بیشتر از حد دادن خوب نیست.
فکر می کنم شما دنبال کسی هستید که براتون کد بنویسه..

h_mohamadi
چهارشنبه 06 شهریور 1392, 11:27 صبح
دوست من شما بهتره یک کتاب مقدماتی مطالعه کنید اگر سوال داشتید دوباره بیایید و بپرسید.
توضیح بیشتر از حد دادن خوب نیست.
فکر می کنم شما دنبال کسی هستید که براتون کد بنویسه..
نه عزيزم دنبال کسي نيستم که کد بنويسه
ولي تا به حال با ايمن مدل کار نکرده ام به اين خاطر سئوالم مبتديانه است

Mahmood_M
چهارشنبه 06 شهریور 1392, 11:40 صبح
به لینکهایی که قرار دادم مراجعه کنید ، مشکلتون حل میشه

alaveh
چهارشنبه 06 شهریور 1392, 15:13 عصر
دوستان ببخشید من کدشو مینویسم
کد که نیست
فقط یک معرفی هست . خوب بنده خدا نیاز نداشته ندیده این مدلو تا حالا . این همه سوال میشه حالا شانس این بنده خدا هست عصبانی هستید ؟ :D سخت نگیرید :

function Zaman(Var s:string;var t:string;var g:string;var f:string;Day,v1,k1,v2,k2,v3,k3,ES:String)

حالا شاید هم بشه Var رو یک بار نوشت و بقیه رو با کاما جدا کرد که اینو نمیدونم چک کنید خودتون .

حالا این متغیرهای جدید که اضافه شده در واقع میشه ازشون به عنوان خروجی استفاده کرد . وقتی بهشون مقدار بدین و فانکشنتون تموم بشه مقدار جدید توشون میمونه .