در این قسمت به مفاهیم اولیه کدنویسی به زبان ++C میپردازیم.
ما برای کدنویسی برنامههایمان، به نرم افزارهای دیگری نیاز داریم تا کدهای برنامه را درون آن بنویسیم و نتایج آنها را برایمان نمایش بدهد، به این برنامهها مترجم (Compiler) گفته میشود، که عبارتند از:
Microsoft visual studio, Borland C++, Turbo C++, Notepad ++
که من استفاده از Microsoft visual studio 2010 را پیشنهاد میکنم، زیرا نوشتن و ویرایش کد در این محیط راحتتر است.
ابتدا به روش ساختن یک پروژه جدید در Visual Studio 2010 میپردازیم:
پس از باز کردن نرم افزار Visual Studio 2010 همانند شکل زیر بر روی گزینه File کلیک کرده، سپس با رفتن به روی دکمهی New، گزینهی Project را انتخاب میکنیم:
سپس در سمت چپ قسمت ++Visual C را انتخاب کرده و از قسمت سمت راست گزینه Empty Project را انتخاب میکنیم، همچنین در پایین در کادر name بک نام به پروژهی خود اختصاص دهید و محل ذخیره پروژه را با استفاده از دکمهی browse مشخص کنید:
پس از درست شدن پروژه جدید همانند شکل زیر بر روی Source Files کلیک راست کرده و گزینه New item را انتخاب میکنیم:
سپس در پنجرهی باز شده در سمت راست همانند شکل زیر روی گزینهی (C++ File(.cpp کلیک میکنیم و نام مناسب منبع کد را نیز در قسمت name (پایین صفحه) مشخص میکنیم:
در نهایت همانند شکل زیر محیط سفید رنگ کد نویسی باز میشود، که شما در اینجا کدهای خود را مینویسید:
در شکل زیر کد یک برنامه وجود دارد که پیغام !++welcome to c را برای ما در مانیتور، چاپ میکند:
حال به توضیح قسمت های مختلف کد بالا میپردازیم:
نتیجه اجرای این کد نمایش جملهی !++welcome to c است.
خط 1 و 2 دستور های پیش پردازنده است، یعنی قبل از کامپایل (کار تبدیل کدهای برنامه به دستورهای قابل فهم کامپیوتر) برنامه این خط اجرا میشود، به عبارت دیگر هر خطی که با # شروع میشود یک دستور پیش پردازنده است.
دستور خط 1 به پیش پردازنده میگوید که محتوای سرفایل جریان ورودی/ خروجی را در برنامه قرار دهد.(خودمم نفهمیدم چی گفتم! در نکات تکمیلی توضیح میدم)
عبارت سبز رنگی که با علامت // شروع میشود، توسط کامپایلر نادیده گرفته میشود، زیرا از این نوع خطوط برای وضوح بخشیدن به برنامه استفاده میشود، همان طور که مشاهده میکنید، روبروی خط 1 توضیحی برای علت استفاده از این خط نوشته شده است.(در این باره در نکات تکمیلی توضیح میدهم)
خط 3 یک خط خالی است که کامپایلر آن را نادیده میگیرد؛ در کل خطوط خالی در کامپایل برنامه خللی ایجاد نمیکند و همچینی به خوانایی کد کمک میکند.
خط 4 به این معنی است که ما از دستورهای استاندارد استفاده میکنیم، که باید در تمام برنامهها وجود داشته باشد.
از خط 6 تا 12، بدنهی اصلی برنامه را تشکیل میدهد، که هر برنامهی ما حداقل باید یک بدنهی اصلی داشته باشد.
کلماتی که به رنگ آبی نمایش داده شده است، دستور های اصلی ++C هستند، دستور int نوع متغیر است. (که در قسمتهای بعد توضیح داده خواهد شد.)
دستور ()main یک تابع است که نمایانگر بدنهی اصلی برنامه است، که گیومه خالی به این علت است که برنامه مقداری را برنمیگرداند، همین طور بدنهی اصلی باید بین دو کروشه باز و بسته {} (خطوط 7 و 12) قرار گیرد. (البته در قسمتهای بعد به توضیح این تابع میپردازیم.) در حالت کلی دستورهای شامل گیومه، تابع هستند.
خط 8، خطی است که جملهی !++welcome to c را در مانیتور نمایش میدهد. (این همه خط کد برای نمایش همین چند یه جمله!) دستور cout همراه با علامت >> قسمت بعد از این علامت را در خروجی نمایش میدهد، که میتواند شامل متن (همانند این مثال)، یک متغیر و … باشد، همچنین دستور n\ باعث میشود، مکان نما به خط جدید برود. (دربارهی این نوع دستورها در نکات تکمیلی توضیح خواهم داد)
خط 10 به این دلیل به کار میرود تا پنجرهای که خروجی برنامه را نمایش میدهد تا زمانی که ما کاری برای بستن آن انجام ندهیم، بسته نشود، حتما الان این سوال را از خود پرسیدهاید که مفهموم بسته نشدن برنامه یعنی چه؟ ببینید به علت اینکه حاصل نتایج کار شما بر روی یک صفحه سیاه! نمایش داده میشود و به عبارت دیگر خروجی برنامه به حالت dos است شما باید از پایه تمام کارهای برنامه را بنویسید (همون طور که در قسمت قبل به دقیق بودن کدهای برنامه اشاره کردم)، به همین دلیل باید این دستور هم برای بسته نشدن پنجره بنویسید. (برای درک بهتر میتوانید این کد را یک بار حذف کرده و نتیجه را ببینید، البته میدونم که یه کم فهم این قسمت سخته به همین دلیل شما فقط برای بسته نشدن پنجره این دستور رو در هر حالت بنویسید!)
خط 11، دستوری است که نشان میدهد برنامه به پایان رسیده است، و عملیات ترجمه کد باید خاتمه یابد، البته این خط بیشتر زمانی به کار میرود که قرار است شما برنامهی خود را بر روی فضایی اجرا کنید که دارای حافظهی بسیار محدود است، ولی با توجه به اینکه فضای کامپیوتر شما بسیار زیاد است میتوانید این کد را ننویسید. (از این خط بیشتر در برنامههایی استفاده میشود که بر روی چیپ ها نوشته میشوند)
نکات تکمیلی
1. ++C به بزرگی و کوچکی حروف حساس است، یعنی main و Main دو معنی جدا از هم دارند، که تمام دستورهای ++C با حروف کوچک نوشته میشوند.
2. تمام دستورهای ++C با علامت ; (سِمی کالِن) به پایان میرسند، به جز دستورهای پیش پردازنده.
3. تفاوت “ و ’ : هرگاه متنی بین ” ” (دابِل کوتِیشِن) بیاید به آن رشته یا لیتِرال گفته میشود، ولی بین ‘ ‘ (کوتِیشِن) یک متن نمیتواند بیاید، زیرا این علامت برای نمایش یک کاراکتر به کار میرود.
4. به کاراکتر \ کاراکتر کنترلی یا کاراکتر گریز گفته میشود، که نشاندهندهی کاراکتر خاصی بر روی خروجی است (این کاراکترها در دستور cout استفاده میشوند)، که چند نمونه از این نوع کاراکترها عبارتند از:
n\ خط جدید: مکان نما را به ابتدای خط بعد منتقل میکند.
t\ جدول بندی افقی: مکان نما را به محل ستون بعدی (به اندازهی 1/4 اینچی) میبرد.
r\ برگشت به اول سطر: مکان نما را در ابتدای خط فعلی قرار میدهد ولی آن را تا خط بعد جلو نمیبرد.
a\ زنگ: صدای سیستم به صدا در میآید. (عموما برای نوشتن کد خطا به کار میرود، البته استفاده های دیگه ای هم داره که میتونید خودتون پیدا کنید!)
\\ \: برای چاپ کاراکتر \ به کار میرود.
’\ ‘: برای چاپ کاراکتر ‘ به کار میرود.
“\ ”: برای چاپ کاراکتر ” به کار میرود.
5. دستور های جریان ورودی/ خروجی به ترتیب شامل دستورهای cin/cout هستند، که استفاده از این دستورها را در برنامه های بعدی که مینویسیم، توضیح خواهیم داد، البته این دستورها را با این علامت ها به کار میروند: >>cout و <<cin
6. برای اینکه کدی که شما مینویسید خوانا باشد و اگر روزی آن را به شخص دیگری بدهید، بتواند آن را بخواند، بهتر است از علامت های توضیحی استفاده کنید که شامل // و /* */ است، علامت // برای توضیح یک خطی به کار میرود و علامت های /* */ برای توضیح چند خطی به کار میروند، که توضیح های چند خطی با علامت */ شروع و با علامت /* به پایان میرسد، یعنی هر عبارتی بین این دو علامت قرار بگیرد، توسط برنامه توضیح تلقی میشود.
7. دستورهایی که با علامت # شروع میشوند، که به آنها پیش پردازنده میگویند، در اصل هرکدام از آنها یک کتابخانه (library) سی پلاس پلاس را فراخوانی میکنند. حال کتابخانه چیست؟ منظور از کتابخانه در ++C یعنی مجموعه تابع ها و دستورهایی که ما با فراخواندن یکی از دستورهای پیش پردازنده آن ها را در اختیار برنامه قرار میدهیم، به بیان سادهتر، وقتی شما یک دستور پیش پردازنده مثل iostream را در برنامه به عنوان کد پیش پردازنده مینویسید، تمام دستورها و تابع های مربوط به کتابخانه ورودی/خروجی در اختیار برنامه قرار میگیرد (همون طور که در توضیح خط 1 کد گفتم، محتوای سرفایل ورودی/خروجی، منظورم همین بود!) به عنوان مثالی دیگر اگر دستور پیش پردازنده math.h را به صورت زیر در برنامه قرار دهید، تمام تابع ها و عملگرهای ریاضی مثل توان، سینوس، کسینوس و… در برنامه قرار میگیرد:
موضوع قسمت بعدی: مفاهیم حافظه، متغیرها و عملگرها