منو
 کاربر Online
377 کاربر online

روالها و توابع

تازه کردن چاپ
علوم ریاضی > علو م رایانه
(cached)


این مطلب از بخش آموزش وب‌سایت المپیاد کامپیوتر رشد،انتخاب شده که با فرمت pdf نیز در وب‌سایت المپیاد رشدموجود می‌باشد. برای مشاهده این موضوعات در وب‌سایت المپیاد، به آدرس فهرست مطالب کامپیوتر مراجعه کنید. همچنین می‌توانید با کلیک اینجا‌ ، با ویژگی‌های بخش آموزش این وب‌سایت آشنا شوید.


روالها و تابع ها


در مورد زیر برنامه ها و نقش آنها در تسهیل برنامه نویسی و همچنین فواید این ایده در نحوه نوشتن برنامه صحبت شد. اینک به پیاده سازی این ایده ها در محیطمی پردازیم.
قبل پرداخت به ساختار تعریف زیر برنامه ها که در اکثر زبانهای برنامه نویسی به دو دسته توابع و روالها تقسیم می شوند – چند نکته تکنیکی را با هم بررسی کنیم.
در تعبیر و تبیین راهبرد پیمانه ای گفتیم که اصولاً در چه مواردی زیر برنامه ها مفیدند، یکی در هنگام انجام یکسری کارهای تکراری بود و دیگری کارهایی که قالب یکسان دارند ولی بر روی داده های متفاوتی عمل می کنند، از دسته اول می توان به یک برنامه اشاره کرد که در جایگاه های متفاوت باید یک وسیله الکترونیکی را خاموش کند، حال اگر تعداد زیادی دستور جهت خاموش کردن دستگاه لازم باشد. این کار را یک بار به عنوان زیر برنامه می نویسیم و سپس در جایگاههای مورد نیاز آنرا اجرا می کنیم. مثال از دسته دوم همان تابع محاسبه عددی انتگرال معین است که با ورودیهای متفاوت حدود بالا و پایین و تابع مورد نظر نتیجه را محاسبه کرده و بر می گرداند. در مکالمات روزمره هم از کارهای روتین زیاد نام می بریم که همین زیر برنامه ها هستند و روتین نام دیگر همین زیر برنامه است.
بنابراین یک مساله جابجا شدن سرنخ اجرای برنامه به یک زیربرنامه و سپس بازگشت از آن و مساله دیگر انتقال داده ها از برنامه به زیر برنامه و بالعکس است.
در فصل اول اشاره کردیم که هم برنامه و هم داده ها در حافظه ذخیره می شوند و از طرفی پر واضح است که پارامترها و سرنخ فراخوانی زیر برنامه ها هم در حافظه ذخیره می شوند به این علت نیاز به یک راهکار برای ساماندهی به این موارد ذخیره شده در حافظه است. از تاریخچه تحول راهکارها که بگذریم در حال حاضر این ساماندهی به عهده پردازشگر مرکزی است، نتیجه انجام راهکار این است که سیستم عامل بخشی از حافظه را به نحوی به پارامترها و سرنخ فراخوانیها اختصاص می دهد، به این بخش پشته می گویند، این بخش حافظه خود یک ساختار دارد که در فصل پنجم به آن خواهیم پرداخت این نشان می دهد که اگر به دفعات بسیار زیاد زیر برنامه تو و تو حساب کنید سرنخ از دست در می رود!
بدین معنا که حافظه پشته کفاف ذخیره اطلاعات لازم را نمی دهد به این حال گویند، هر چند این خطا در زمان برنامه نویسی در سیستم عامل اهمیت داشت و با استراتژی های جدید کار با حافظه بسیار بعید است که بتواند برنامه ای را بصورت مذکور دچار خطا کنید!
برای نوشتن یک زیر برنامه یکی از دو ساختار زیر استفاده می شود اولی برای رولها و دومی برای توابع:

ساختار 1:




ساختار 2:





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








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






مزیت روش دوم این است که می توان از متغیر در هر دو سوی عبارت انتساب استفاده کرد مثلاً
img/daneshnameh_up/7/7b/com0111a.jpg

ولی از نمی توان چون در سمت راست = معادل فراخوانی خود تابع است:
img/daneshnameh_up/8/8f/com0111b.jpg


اما نکته دیگر اینکه همانند اینکه برنامه را بر چند زیر برنامه تقسیم کردید می توانید زیر برنامه ها را به چند تکه کوچکتر تقسیم کنید که البته برای این سطح زیر برنامه اسمی نمی گذاریم فقط توضیح زیر را که در مورد کار با توابع و روالها ضروری است در نظر بگیرید. در فاصله بین تعریف صورت تابع و می توان عیناً مانند فاصله بین زیر برنامه تعریف کرد تعریف کرد و متغیر تعریف کرد. متغیرها و ها و زیر برنامه های تعریف شده در این بخش فقط در ی زیر برنامه قابل استفاده اند. به این محدودیت گفته می شود. عبارت قبلی را به این نحو می توان بیان کرد که متغیرها و روالها و ... تعریف شده در فاصله بین نام زیر برنامه و فقط خود زیر برنامه است. لذا عبارتی مانند زیر مجازند.








حال به این بپردازیم که در برنامه چگونه می توان از این زیر برنامه های نوشته شده استفاده کرد.
یک روش عبارت مقابل است:

که برای هر دوی تابع و رول مشترک است مثلاً:







و حالت دوم

که منظور از عبارت بالا فقط انتساب نیست بلکه در هر جایگاهی که مشابه نسبت دهی است قابل استفاده است مثلاً:







و یا









که جایگاه استفاده از توابع را بخوبی نشان می دهد.
اگر دقت کرده باشید سؤالی پیش می آید. وقتی که روال ها یا تابع ها با پارامترها فراخوانی می شود تاثیر روالها و توابع بر متغیرها ی استفاده شده به عنوان پارامتر چیست؟این سؤال وقتی مطرح است که عدد ثابت به عنوان پارامتر داده نشده باشد.
برای روشنتر شدن بحث روال و فراخوانی نمونه زیر را در نظر بگیرید.











در نحوه تعریف پارامتر دقت کنید، این نوع تعریف پارامتر هم مجاز است اشتباهی نشده!
فراخوانی چه تاثیری بر دارد؟
حال مساله همان سه نوع پارامتر پیش می آید دریک حالت که حالت فوق است برنامه اجرا می شود ولی هیچ تاثیری بر ندارد. در این حالت یک کپی از ایجاد می شود و زیر برنامه با این کپی ها کار می کند و لذا هیچ تاثیری بر برنامه اصلی ندارد.

حالت دوم است.



در این حالت قبل اجرای برنامه پیغام خطا دریافت خواهید کرد لذا در این حالت پارامترها به عنوان ثوابت درون برنامه هستند و از دست نخوردن آنها در طول برنامه مطمئن هستیم.

حالت سوم حالت :


در این حالت خود پارامترها به برنامه منتقل می شوند و هر تغییری در پارامترها عیناً تغییر در متغیرهایی از برنامه است که به عنوان پارامتر منتقل شده اند. در این نوع تعریف پارامترها نمی توانید عدد ثابت به عنوان پارامتر به برنامه انتقال دهید یعنی مثلاً قابل قبول نیست.
این بحث مفصل را در همین جا به پایان می بریم ولی جهت بهتر تفهیم شدن بحث به مثالهای آتی توجه کنید.
مثالهای زیر را بررسی و تحلیل کنید:
برای اجرای آنها دقت کنید که به روش زیر عمل کنید که ابتدا پروژه حاضر در دلفی را ببندید و سپس یک پروژه جدید از نوع ایجاد کنید و کد نوشته شده را وارد کنید برای آشنایی با نحوه انجام این کارها فصل هفتم را مطالعه کنید.
در نهایت برای فهم برنامه این را در نظر بگیرید که دستور هر چه به آن داده شود روی صفحه چاپ می کند و دستور منتظر ورود یک کد ( فشردن کلید) می شود.




































پیوند های خارجی

http://Olympiad.roshd.ir/computer/content/pdf/0206.pdf




تعداد بازدید ها: 9396


ارسال توضیح جدید
الزامی
big grin confused جالب cry eek evil فریاد اخم خبر lol عصبانی mr green خنثی سوال razz redface rolleyes غمگین smile surprised twisted چشمک arrow



از پیوند [http://www.foo.com] یا [http://www.foo.com|شرح] برای پیوندها.
برچسب های HTML در داخل توضیحات مجاز نیستند و تمام نوشته ها ی بین علامت های > و < حذف خواهند شد..