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