زمان کنونی: ۰۷ اردیبهشت ۱۴۰۳, ۰۶:۴۳ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

فراخوانی با نام

ارسال:
  

mahsa.tsi پرسیده:

فراخوانی با نام

سلام
در زیر تابع فراخوانی با نام دارد:
B[0]=2;
B[1]=3
I=0;
f(B[I])//call by name
در تابع f مقدار I تغییر بکنه روی I تاثیر نمیزاره نه؟
و اینکه تنها تغییرات بر روی B[0] صورت میگیره؟درسته؟
نقل قول این ارسال در یک پاسخ

۲
ارسال:
  

mp1368 پاسخ داده:

RE: فراخوانی با نام

سلام .

شما باید توجه کنی که اینجا تنها آرایه B رو به صورت "فراخونی با نام" به زیر برنامه میفرستی و داخل زیر برنامه هم شما با یه متغیر مثل x که به جای آرایه میشینه میتونی به آرایه اصلی دسترسی داشه باشی . ولی در مورد متغیر i باید بگیم که این متغیر رو که شما به زیر برنامه نفرستادی چطور تابع F باید بهش دسترسی داشته باشه؟
پس برای رجوع به i داخل زیر برنامه باید حتما اونو به صورت سراسری تعریف کنی. مثال زیر رو ببین :

[tex]Var $ i : integer[/tex]

[tex]function $ f(x:integer):interger;[/tex]
[tex] i=1;[/tex]
[tex] x=1;[/tex]
[tex] i=3;[/tex]
[tex] x=3;[/tex]
[tex] end[/tex]

[tex] begin[/tex]
[tex] B:array[1..10] of integer[/tex]
[tex] i=1;[/tex]
[tex] f(B[i]);[/tex]
[tex] End.[/tex]

توی این مثال ما فقط آرایه B رو به صورت "فراخونی با نام" به زیر برنامه F فرستادیم و متغیر i رو هم برای ارتباط این دو تابع به صورت سراسری تعریف کرده ایم . اگر ما متغیر i رو به صورت سراسری تعریف نمیکردیم قطعا خطا وجود داشت چون داخل تابع F متغیر i تعریف نشده است . پس اونو به صورت سراسری تعریف میکنیم و به دلیل اینکه متغیر سراسری هستش پس داخل تابع F یا هر جای دیگه ای که مقدارش رو تغییر بدیم روش تاثیر میگذاره و مقدارش عوض میشه . یعنی بعد از اجرای این برنامه متغیر i هم مقدارش با ۳ تغییر میکنه فقط به خاطر اینکه به صورت سراسری تعریف شده است.

در واقع اگه بخوایم خیلی خلاصه بگیم متغیر i کلید ارتباط این دو تابع است که میخوان به صورت "فراخوانی با نام" و به کمک آرایه B با هم ارتباط داشته باشن و میدونیم برای ایجاد همچین ارتباطی باید i رو به صورت سراسری تعریف کنیم.
نقل قول این ارسال در یک پاسخ

ارسال:
  

mahsa.tsi پاسخ داده:

RE: فراخوانی با نام

(۲۰ آذر ۱۳۹۱ ۱۰:۴۱ ق.ظ)mp1368 نوشته شده توسط:  سلام .

شما باید توجه کنی که اینجا تنها آرایه B رو به صورت "فراخونی با نام" به زیر برنامه میفرستی و داخل زیر برنامه هم شما با یه متغیر مثل x که به جای آرایه میشینه میتونی به آرایه اصلی دسترسی داشه باشی . ولی در مورد متغیر i باید بگیم که این متغیر رو که شما به زیر برنامه نفرستادی چطور تابع F باید بهش دسترسی داشته باشه؟
پس برای رجوع به i داخل زیر برنامه باید حتما اونو به صورت سراسری تعریف کنی. مثال زیر رو ببین :

[tex]Var $ i : integer[/tex]

[tex]function $ f(x:integer):interger;[/tex]
[tex] i=1;[/tex]
[tex] x=1;[/tex]
[tex] i=3;[/tex]
[tex] x=3;[/tex]
[tex] end[/tex]

[tex] begin[/tex]
[tex] B:array[1..10] of integer[/tex]
[tex] i=1;[/tex]
[tex] f(B[i]);[/tex]
[tex] End.[/tex]

توی این مثال ما فقط آرایه B رو به صورت "فراخونی با نام" به زیر برنامه F فرستادیم و متغیر i رو هم برای ارتباط این دو تابع به صورت سراسری تعریف کرده ایم . اگر ما متغیر i رو به صورت سراسری تعریف نمیکردیم قطعا خطا وجود داشت چون داخل تابع F متغیر i تعریف نشده است . پس اونو به صورت سراسری تعریف میکنیم و به دلیل اینکه متغیر سراسری هستش پس داخل تابع F یا هر جای دیگه ای که مقدارش رو تغییر بدیم روش تاثیر میگذاره و مقدارش عوض میشه . یعنی بعد از اجرای این برنامه متغیر i هم مقدارش با ۳ تغییر میکنه فقط به خاطر اینکه به صورت سراسری تعریف شده است.

در واقع اگه بخوایم خیلی خلاصه بگیم متغیر i کلید ارتباط این دو تابع است که میخوان به صورت "فراخوانی با نام" و به کمک آرایه B با هم ارتباط داشته باشن و میدونیم برای ایجاد همچین ارتباطی باید i رو به صورت سراسری تعریف کنیم.

ببخشید که خیلی دیر تشکر میکنم توضیحتون خیلی خوب بودممنون
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

csharpisatechnology پاسخ داده:

فراخوانی با نام

اولا باید مشخص کنی توی تابع دقیقا چه چیزهایی داریم.
چون ممکنه I متغیری سراسری بیرون تابع باشه.ممکن هست یه I دیگه داخل خودشم تعریف کرده باشیم.
به نظر میاد سراسری هست و توی تابع تعریف نشده.پس اگه از توی تابع بیایم دستکاریش کنیم باید دستکاری اعمال بشه.
ضمنا فراخوانی با نام به جای ورودی تابع شما عبارت [۰]B دقیقا ابتدا جایگزین تمام متغیرهای منتسب میشه. و در نهایت روی خود [۰]B هم تغییرات اعمال میشه(زیرا شبیه فراخوانی ارجاعی هست)
---
مثال اگه میخواید :

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

Engineer پاسخ داده:

فراخوانی با نام

(۲۰ آذر ۱۳۹۱ ۱۰:۴۱ ق.ظ)mp1368 نوشته شده توسط:  
[tex]Var $ i : integer[/tex]

[tex]function $ f(x:integer):interger;[/tex]
[tex] i=1;[/tex]
[tex] x=1;[/tex]
[tex] i=3;[/tex]
[tex] x=3;[/tex]
[tex] end[/tex]

[tex] begin[/tex]
[tex] B:array[1..10] of integer[/tex]
[tex] i=1;[/tex]
[tex] f(B[i]);[/tex]
[tex] End.[/tex]

توی این مثال ما فقط آرایه B رو به صورت "فراخونی با نام" به زیر برنامه F فرستادیم و متغیر i رو هم برای ارتباط این دو تابع به صورت سراسری تعریف کرده ایم . اگر ما متغیر i رو به صورت سراسری تعریف نمیکردیم قطعا خطا وجود داشت چون داخل تابع F متغیر i تعریف نشده است . پس اونو به صورت سراسری تعریف میکنیم و به دلیل اینکه متغیر سراسری هستش پس داخل تابع F یا هر جای دیگه ای که مقدارش رو تغییر بدیم روش تاثیر میگذاره و مقدارش عوض میشه . یعنی بعد از اجرای این برنامه متغیر i هم مقدارش با ۳ تغییر میکنه فقط به خاطر اینکه به صورت سراسری تعریف شده است.

در واقع اگه بخوایم خیلی خلاصه بگیم متغیر i کلید ارتباط این دو تابع است که میخوان به صورت "فراخوانی با نام" و به کمک آرایه B با هم ارتباط داشته باشن و میدونیم برای ایجاد همچین ارتباطی باید i رو به صورت سراسری تعریف کنیم.
ببخشید آخرش اگه فراخوانی با نام بشه جوابش چی میشه؟
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

csharpisatechnology پاسخ داده:

فراخوانی با نام

نه تاثیر نمیذاره چون ورودی B[0 جایگزینه میشه نه b[I
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  فراخوانی یک متغیر سی شارپ در جاوا اسکریپت niloofar2016 ۰ ۱,۷۴۶ ۳۰ خرداد ۱۳۹۵ ۱۲:۱۲ ب.ظ
آخرین ارسال: niloofar2016
  فراخوانی یک متغیر سی شارپ در جاوا اسکریپت niloofar2016 ۰ ۱,۸۷۶ ۳۰ خرداد ۱۳۹۵ ۱۲:۰۹ ب.ظ
آخرین ارسال: niloofar2016
  شیوه نامه اجرایی آیین نامه آزمون ورودی دکتری (Ph.D) سال ۱۳۹۵ به دانشگاهها ابلاغ گردید SAJDEHGAR ۱ ۲,۳۵۵ ۱۳ آبان ۱۳۹۴ ۱۱:۴۶ ق.ظ
آخرین ارسال: f.b
  خروجی برنامه با استفاده از روش فراخوانی با نام ldns0098 ۲۲ ۱۰,۶۴۳ ۰۲ بهمن ۱۳۹۳ ۱۰:۲۳ ق.ظ
آخرین ارسال: Ametrine
  نتایج کدوم یک از روش فراخوانی باهم یکسانند؟؟ afagh.msm ۶ ۲,۷۳۵ ۳۰ دى ۱۳۹۳ ۱۰:۲۲ ب.ظ
آخرین ارسال: amin1371
  فراخوانی بازگشتی تودرتو روی بچه های درخت mostafa2012 ۰ ۱,۰۱۱ ۲۷ دى ۱۳۹۳ ۰۱:۰۶ ق.ظ
آخرین ارسال: mostafa2012
  تعداد فراخوانی sharareh_moradi ۴ ۲,۳۷۵ ۱۶ دى ۱۳۹۳ ۱۱:۱۲ ب.ظ
آخرین ارسال: sharareh_moradi
  ثبت نام قبولی کارشناسی ارشد آزاد ، تاریخ فارغ التحصیلی بعد از تاریخ ثبت نام plusdeck ۰ ۲,۰۱۸ ۰۲ دى ۱۳۹۳ ۱۱:۵۰ ب.ظ
آخرین ارسال: plusdeck
  فراخوانی ضمنی/ صریح ldns0098 ۲ ۱,۹۱۷ ۲۱ آبان ۱۳۹۳ ۰۸:۲۳ ب.ظ
آخرین ارسال: ldns0098
  شرط معدل برای پذیرش بدون کنکور دکترای آزاد/ ۱۷ با پایان نامه یا بدون پایان نامه gnostic ۶ ۴,۸۶۹ ۲۴ تیر ۱۳۹۳ ۱۱:۴۱ ق.ظ
آخرین ارسال: taha.maten

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close