در هر برنامه دستورالعملهای اجرایی باید بعد از تعریف متغیرها درج شوند . دستوری قابلیت اجرا دارد که در پایان آن دستور، یک علامت سمی کولون (;) نوشته شود . برای فهم بهتر این موضوع اولین برنامه را ارائه و سپس به تشریح آن میپردازیم . مثال - برنامهای بنویسید که مساحت مستطیلی به طول 6 و عرض 3 را محاسبه کرده و چاپ کند. حل : برنامه مورد نظر بشکل زیر میباشد : #include<stdio.h> main( ) { int length , width , S ; length = 6 ; width = 3 ; S = length * width ; printf ("area = %d", S) ; } پس از اجرای برنامه ، خروجی برنامه بصورت زیر نمایش داده میشود : area = 18 حال به تشریح برنامه می پردازیم . خط اول برنامه اعلان میکند که کتابخانه مربوط به توابع ورودی و خروجی برای دستیابی به توابع آن آماده شود. C یکی از زبانهایی است که به لحاظ داشتن توابع توکار (از پیش فرض شده) بسیار غنی میباشد. هر مجموعه توابعی که عملیات ویژهای را انجام میدهد در یک مجموعه تحت عنوان کتابخانه یا library قرار میگیرد . توابعی که عملیات ورودی و خروجی را انجام میدهند در کتابخانهای به نام stdio.h قرار دارند که در آن stdio به معنی standard input output (ورودی و خروجی استاندارد) بوده و h نیز معرف header یا عنوان است. تابع printf نیز یکی از توابع خروجی میباشد . حال به توضیح #include میپردازیم . برنامههای نوشته شده به زبان C قبل از اینکه بهوسیله کامپایلر ترجمه گردد در اختیار یک برنامه دیگری تحت عنوان پیشپردازنده یا preprocessor قرار میگیرد . یکی از کاربردهای اصلی این برنامه آن است که کتابخانههای مورد نیاز برنامه منبع را یعنی کتابخانههایی را که توابع بکار رفته در برنامه منبع را شامل است برای استفاده آماده مینماید . این کار بوسیله دستور include که در ابتدای آن علامت # و به دنبال آن نام کتابخانه در داخل علامت : <> یا " " میآید انجام میگیرد که اولین عبارت در برنامه بالا همین کار را برای ما انجام میدهد . در خط بعد تابع اصلی تعریف شده است . پنج خط بعدی متن برنامه اصلی را تشکیل میدهند که از پنج دستور ساده تشکیل شده است. پایان هر دستور را سمی کولون (;) مشخص مینماید چون متن برنامه بیش از یک دستور است مجموع آنها بعنوان دستور مرکب یا یک بلاک در داخل یک زوج آکولاد قرارداده میشود. درواقع هر آکولاد چپ برای کامپایلر C به معنی شروع بلاک و هر آکولاد راست معرف پایان آن است . البته در بعضی مواقع برحسب مورد آکولادها را میتوان بصورت تودرتو نیز بکار برد . اولین دستور در متن برنامه یا همان شروع آکولاد ، توصیف متغیرها است. سه دستور بعدی دستورات محاسباتی و جایگزینی میباشند و در آخر نیز دستور خروجی است که در آن تابع printf برای چاپ فرمت دار میباشد . اولین آرگومان تابع مذکور متن داخل گیومه میباشد که تابع آن را به همان صورت در خروجی چاپ میکند البته در بعضی از قسمتهای متن که شامل علامت % باشد مانند %d به کامپایلر اطلاع میدهد که اولین متغیر بعد از بسته شدن گیومه که در این مثال S است مقادیر صحیح میپذیرد . در اینجا d معرف decimal است و %d فرمت متغیر در خروجی را تعریف میکند. در فصلهای بعدی بطور کامل به بحث فرمت متغیرها خواهیم پرداخت . مثال - برنامهای بنویسید که طول و عرض مستطیلی را که به ترتیب a و b نامیده میشود از طریق دستگاه ورودی استاندارد خوانده و با فراخواندن تابعی به نام rectangle مساحت آن محاسبه گردیده ، سپس طول ، عرض و مساحت در برنامه یا تابع اصلی روی دستگاه استاندارد خروجی ، نمایش داده شود . حل : برنامه مورد نظر در زیر نشان داده شده است : # include <stdio . h> main ( ) { int a , b , area ; int Rectangle (int a , int b) ; scanf ("%d %d" , &a , &b) ; area = Rectangle (a , b); printf ("\n length = %d width = %d area = %d" , a , b , area) ; } int Rectangle (int a , int b) { int s ; s = a * b ; return (s) ; } اگر 5 = a و 4 = b باشد ، خروجی برنامه مذکور بصورت زیر خواهد بود : length = 5 width = 4 area = 20 توضیح - خط اول تا چهارم مانند برنامه قبلی است . در خط پنجم تابع فرعی Rectangle اعلان شده است که مقدار صحیح برمیگرداند و آرگومانهای آن نیز a و b میباشند که مقادیر صحیح هستند . در خط ششم ، تابع ورودی استاندارد scanf بکار رفته است . این تابع که جزء کتابخانه stdio.h است ، اطلاعات را از طریق ورودی استاندارد که صفحه کلید میباشد ، دریافت میکند . فرمت و مکانیسم کار این گونه توابع بعد تشریح خواهد شد . در اینجا یادآور میشویم که فرم کلی تابع مزبور بصورت: scanf (control string , argl , arg2 , ... , argn) ; است که در آن رشتة کنترلی (control string) که در داخل گیومه (" ")بکار برده میشود ، اطلاعات مورد نیاز دربارة فرمت اقلام دادههای ورودی را شامل است و عناصر : arg1 , arg2 , ... argn نیز آرگومانهایی هستند که اقلام داده های ورودی را معرفی مینمایند . در این دستور حرف Ampersand ، یعنی "&" اپراتور یا عملگر آدرس است . پس &a و &b اشارهگر میباشند و معرف آنند که دو مقدار به آدرسهایی از حافظه به نامهای a و b خوانده شود . در رشته کنترلی نیز که در داخل گیومه قرار دارد ، از چپ به راست %d اول معرف فرمت اولین آرگومان یا داده ورودی بعنوان عدد صحیح است و بدنبال آن %d دوم نیز معرف فرمت دومین آرگومان بعنوان عدد صحیح است . درواقع آرگومانها ، معرف اشارهگرهایی هستند که آدرس اقلام دادهها را در داخل حافظه کامپیوتر مشخص میسازند .علامت \n در رشته کنترلی تابع printf ، موجب انتقال به سطر جدید میگردد . بنابراین اطلاعات بعدی در سطر جدید نشان داده خواهد شد .
•· تمرین و پاسخ تمرین 1 - کدامیک از اسامی زیر مجاز است بعنوان نام متغیردر برنامه بکار برده شود؟ حل : پاسخ مورد نظر در مقابل هر اسم در جدول زیر نمایش داده شده است : مجاز است | Integer | مجاز نیست بدلیل وجود کاراکتر(-) | -19 | مجاز نیست بدلیل وجود کاراکتر غیر مجاز فاصله | Lesson four | مجاز است. | Unit_25 | مجاز نیست .بدلیل کلمه کلیدی بودن | Define | مجاز است. | Loop2 | مجاز است. | Star565void | مجاز نیست.بدلیل کاراکتر غیر مجاز(؟) | Please? | مجاز است. | Computer_p_q | مجاز نیست.بدلیل کاراکتر غیر مجاز(+) | C++ | مجاز نیست.بدلیل کاراکتر غیر مجاز(#) | S# | مجاز نیست.بدلیل کاراکتر غیر مجاز($) | Five$ |
تمرین 2 - برنامه زیر مساحت مربعی به ضلع 5 را محاسبه کرده و چاپ می کند . قسمتهای مختلف آنرا شرح دهید . #include<stdio.h> main( ) { int x , S ; x = 5 ; S = x * x ; printf ("area = %d", S) ; } حل : خط اول برنامه اعلان میکند که کتابخانه مربوط به توابع ورودی و خروجی زبان C برای دستیابی به توابع آن آماده شود . خط بعد نام تابع اصلی است . آکولاد باز شروع تابع است . در خط بعد متغیرهای x وS برنامه از نوع عدد صحیح تعریف شده اند . سه خط بعد دستورات اصلی برنامه است که شامل مقدار دهی اولیه متغیرx ، محاسبه مساحت درمتغیر S وچاپ آن در خروجی میباشد . آکولاد بسته پایان تابع اصلی است . تمرین 3 - ویژگیهای یک برنامه ایده آل را شرح دهید . حل : پاسخ مورد نظر به شرح زیر است : تمامیت یا جامعیت : به معنای درستی محاسبه است . باید مشخص باشد که هر چیز دیگری که به برنامه افزوده می شود اگر در درسـتی اجرای برنامه نقشی نداشته باشد بی معنی است . وضوح : به معنای خوانا بودن برنامه با تاکید بر اهمیت منطقی آن است . در اینصورت تعقیب منطق برنامه بدون نیاز به تشریح برای هر برنامه نویس دیگر امکان پذیر خواهد بود . سادگی : وضوح و درستی برنامه که معمولاً با آسان نوشتن آن حفظ میشود از جمله موضوعات مرتبط با شکل برنامه هستند . کارآیی : مربوط به سرعت اجرا و بهره وری کار حافظه میباشد . ماژولار یا پیمانه ای بودن : بسیاری از برنامه ها میتوانند به مجموعه ای از زیر برنامه ها تجزیه شوند . این کار امکان تغییرات آتی برنامه را افزایش میدهد . عمومیت : در برنامه از پارامترهایی استفاده شود که بتواند با مقادیر مختلف داده ها به درستی کار کند . تمرین 4 - چند نمونه از زبانهای سطح بالا ، سطح پایین و سطح میانی را نام ببرید . حل : پاسخ مورد نظر به شرح زیر است : زبان سطح بالا : پاسکال ، فرترن ، کوبول ، بیسیک زبان سطح پایین : زبان ماشین و اسمبلی زبان سطح میانی : زبان C و forth
|