در اين قسمت به معرفي برنامهنويسي
C++
ميپردازيم، كه طراحي برنامهها را تسهيل خواهد بخشيد. اكثر برنامههاي كه در اين سري آموزشي با آنها مواجه خواهيد شد، مبادرت به پردازش اطلاعات و نمايش نتايج ميكنند. در اين فصل، به معرفي يك مثال ميپردازيم كه نحوه نمايش پيغام و همچنين دريافت داده از كاربران را به شما نشان ميدهند.براي اينكه درك مناسب و آساني از برنامهنويسي
C++
بدست آوريد، خط به خط هر برنامه را تحليل ميكنيم. براي اينكه مهارتهاي كسب كرده خود از اين فصل را بكار گيريد، چند مسئله برنامهنويسي در بخش تمرينات در نظر گرفتهايم.
2
-2
يك برنامه ساده: چاپ يك عبارت متني
زبان
C++
از نمادهاي استفاده ميكند كه ممكن است براي غير برنامهنويسان عجيب و غريب بنظر برسند. در اين بخش به بررسي برنامهاي ميپردازيم كه عبارتي را در يك خط چاپ ميكند. برنامه و خروجي آن در شكل1-2 آورده شده است. اين برنامه حاوي چندين ويژگي مهم زبان
C++
است. براي آشنايي بهتر شما، به توضيح خط به خط برنامه ميپردازيم.
در خطوط
1
و
2
// Fig. 2.1: fig02_01.cpp
// Text-printing program.
كه با //، آغاز شدهاند، نشاندهنده اين مطلب هستند كه اين خطوط توضيح ميباشند.
برنامهنويسان توضيحات را در برنامه يا ليست كد قرار ميدهند تا خوانايي كدهاي خود را افزايش دهند. توضيحات ميتوانند در خط متعلق به خود جاي داده شوند كه آنها را توضيحات تمام خط ميناميم يا در انتهاي يك خط از كد
كه آنها را توضيحات انتهاي خط ميناميم، قرار بگيرند. كامپايلر
C++
توضيحات را ناديده ميگيرد، به اين معني كه توضيحات هيچ تأثيري در اجراي برنامه ندارند. توضيح بكار رفته در خط
1
فقط نشاندهنده شماره تصوير و نام فايل اين برنامه است.
البته برخي از برنامهنويسان عبارات توضيحي خود را مابين كاراكترهاي
/*
و
*/
قرار ميدهند.
1
// Fig. 2.1: fig02_01.cpp
2
// Text-printing program.
3
#include <iostream> // allows program to output data to the screen
4
5
// function main begins program execution
6
int main()
7
{
8
std::cout << "Welcome to C++!\n"; // display message
9
10
return 0; // indicate that program ended successfully
11
12
} // end function main
شكل 1-2 | برنامه چاپ عبارت.
برنامهنويسي ايدهال
هر برنامهاي بايد با يك يا چندين توضيح در ارتباط با اهداف برنامه
و همچنين نام برنامهنويس، تاريخ و زمان
آغاز شود.
خط
3
#include <iostream> // allows program to output data to the screen
يك رهنمود پيشپردازنده است، كه پيغامي براي پيشپردازنده
C++
ميباشد. خطوطي كه با نماد
#
آغاز ميشوند، قبل از اينكه برنامه كامپايل شود توسط پيشپردازنده پردازش ميشوند. اين خط به پيشپردازنده اعلان ميكند تا محتويات سرآيند جريان ورودي/خروجي فايل
<iostream>
را در برنامه وارد سازد. بايستي اين فايل در هر برنامهاي كه ميخواهد دادهاي به صفحه نمايش انتقال دهد، يا اينكه از صفحهكليد و با استفاده از جريان ورودي/خروجي
C++
دادهاي دريافت نمايد، وارد شود. در شكل1-2 خروجي برنامه آورده شده است. در فصل ششم با فايلهاي سرآيند در فصل پانزدهم با محتويات
iostream
آشنا خواهيد شد.
خطاي برنامهنويسي
در صورتيكه افزودن فايل سرآيند
<iostream>
به برنامهاي كه مبادرت به دريافت داده از صفحه كليد يا ارسال داده به صفحه نمايش ميكند، فراموش شود، كامپايلر يك پيغام خطا ارسال خواهد كرد.
خط
4
فقط يك خط خالي است. برنامهنويسان براي اينكه قرائتهاي خود را آسانتر كنند از خطوط خالي، كاراكترهاي فاصله
(space)
و تب
(tab)
استفاده ميكنند. به مجموعه اين كاراكترها،
white space
ميگويند. معمولاً اين كاركترها توسط كامپايلر ناديده گرفته ميشوند. در اين فصل و چند فصل بعدي، در ارتباط با قواعد رايج در استفاده از كاراكترهاي
white-space
صحبت خواهيم كرد تا خوانايي برنامهها افزايش يابد.
برنامهنويسي ايدهال
با استفاده از خطوط خالي و كاراكترهاي فاصله، خوانايي برنامهها را افزايش دهيد.
خط
5
// function main begins program execution
هم يك خط توضيحي تمام خط است كه اعلان ميكند برنامه از خط بعدي شروع ميشود.
خط
6
int main()
بخشي از هر برنامه
C++
است. پرانتزهاي واقع پس از
main
نشان ميدهند كه
main
يك بلوك برنامه بنام تابع است. برنامههاي
C++
ميتوانند حاوي يك يا چندين تابع و كلاس باشند، اما بايستي يكي از آنها حتما
main
باشد، حتي اگر
main
اولين تابع در برنامه نباشد. كلمه كليدي
int
كه در سمت چپ
main
قرار گرفته، بر اين نكته دلالت دارد كه
main
يك مقدار صحيح "برميگرداند" (عدد بدون اعشار). كلمهكليدي، كلمهاي در كد است كه توسط
C++
رزرو شده است. ليست كامل كلمات كليدي
C++
در جدول شكل 3-4 آورده شدهاند. به هنگام مطالعه فصل سوم و ششم به توضيح مفهوم دقيق "مقدار برگشتي" از سوي يك تابع خواهيم پرداخت. اما براي اين لحظه، كافيست بدانيد كه كلمه كليدي
int
در سمت چپ برنامههاي شما قرار خواهد گرفت.
بايستي براكت چپ، }، (خط
7
) در ابتداي بدنه هر روالي قرار داده شود. براكت متناظر، براكت راست، {، (خط
12
) است،كه بايد آنرا در انتهاي بدنه هر روالي قرار داد. خط
8
std::cout << "Welcome to C++!\n"; // display message
به كامپيوتر فرمان ميدهد تا رشتهاي از كاراكترها را كه مابين جفت گوتيشن قرار دارند بر روي صفحه نمايش چاپ كند. گاهي اوقات رشته بنام رشته كاراكتري، پيغام يا رشته ليترال هم خوانده ميشود. كاراكترهاي
white space
توسط كامپايلر ناديده گرفته ميشوند.
كل خط
8
، شامل
std::cout
،
عملگر
<<
، رشته
“Welcome to C++ ! \n”
و يك سيميكولن
(;)
است، كه به كل اين خط يك عبارت گفته ميشود. هر عبارتي در
C++
بايد با يك سيميكولن خاتمه پذيرد (كه به آن خاتمهدهنده عبارت هم گفته ميشود). رهنمودهاي پيشپردازنده (همانند
#include
) با سيمكولن خاتمه نمييابند. خروجي و ورودي در
C++
با جرياني
(stream)
از كاراكترها پيادهسازي ميشود. بنابر اين، زمانيكه عبارت قبلي اجرا ميشود، مبادرت به ارسال جرياني از كاراكترهاي
Welcome to C++ !
به شي جريان خروجي استاندارد (
std::cout
) كه معمولا با صفحه نمايش مرتبط است ميكند. در فصل پانزدهم به بررسي بيشتر
std::cout
خواهيم پرداخت.
دقت كنيد كه
std::
قبل از
cout
قرار گرفته است. انجام اين عمل به هنگام استفاده از رهنمود پيشپردازنده
#include <iostream>
الزامي است. نماد
std::cout
نشان ميدهد كه در حال استفاده از يك نام هستيم، كه اين نام در اين مورد
cout
ميباشد، كه متعلق به "فضاينامي"
std
است. فضاهاينامي از ويژگيهاي پيشرفته
C++
هستند. در فصل بيستوچهارم بطور كامل با فضاهاينامي آشنا خواهيد شد. اما براي اين لحظه، بايد بخاطر داشته باشيد كه كلمه
std::
را قبل از هر كداميك از نمادهاي
cout
،
cin
و
cerr
در يك برنامه قرار دهيد. در برنامه شكل 13-2 از اين نمادها به همراه عبارت
using
استفاده شده است، كه ما را قادر به حذف
std::
قبل از هر استفاده از فضاي نامي
std
ميكند.
عملگر
<<
نشاندهنده، عملگر درج جريان است. هنگامي كه اين برنامه اجرا ميشود، مقدار موجود در سمت راست اين عملگر، عملوند سمت راست، وارد جريان خروجي ميگردد. دقت كنيد كه عملگر مستقيماٌ به مكاني اشاره ميكند كه داده بايد به آنجا برود. معمولا كاراكترهاي قرار گرفته در سمت راست عملگر به همان شكلي كه مابين جفت گوتيشها آورده شدهاند، چاپ ميشوند. با اين وجود، توجه نمائيد كه كاراكتر
\n
بر روي صفحه
نمايش چاپ نميشود. كاراكتر
\
كاراكتر
escape
ناميده ميشود. اين كاراكتر نشان ميدهد كه يك كاراكتر ويژه چاپ خواهد شد. زمانيكه در دنبالهاي از رشتههاي كاراكتري يك كاراكتر
\
وارد شود، كاراكتر پس از آن بعنوان يك توالي
escape
در نظر گرفته خواهد شد. در اين برنامه توالي
escape
كاراكتر
\n
است، كه به مفهوم خط جديد يا
newline
ميباشد. اين كاراكتر سبب ميشود تا كرسر به ابتداي خط بعدي در صفحه نمايش منتقل شود. در جدول شكل 2-2 تعدادي از تواليهاي
escape
كه از كاربرد بيشتري برخوردار هستند آورده شدهاند.
خطاي برنامهنويسي
فراموش كردن سيميكولن در پايان يك عبارت، خطاي نحوي
(syntax error)
بدنبال خواهد داشت. اين نوع خطا زماني رخ ميدهد كه كامپايلر با عبارتي مواجه شود و نتواند مفهوم آنرا تشخيص دهد. معمولا در چنين حالتي كامپايلر يك پيغام خطا ارسال ميكند تا به برنامهنويس در يافتن مكان خطا و رفع آن كمك نمايد. خطاهاي نحوي به هنگام خروج از قواعد نگارش زبان رخ ميدهند. گاهاٌ به اين خطاها، خطاهاي كامپايل هم گفته ميشود، چراكه اين خطاها در زمان فاز كامپايل شدن برنامه رخ ميدهند.
خط
10
return 0; // indicate that program ended successfully
در پايان هر تابع
main
وجود خواهد داشت. كلمه كليدي
return
يكي از چندين روش موجود براي خروجاز يك تابع است. زمانيكه عبارت
return
در پايان تابع
main
بكار گرفته ميشود، همانند اين برنامه، مقدار
0
نشاندهنده اين مطلب است كه برنامه با موفقيت به كار خود پايان داده است. در فصل ششم، با جزئيات عملكرد توابع و دلايل افزودن چنين عباراتي به آنها بيشتر آشنا خواهيد شد. اما براي اين لحظه، كافيست بدانيد كه اين عبارت در انتهاي هر برنامهاي قرار داده ميشود. براكت راست،
{
، (خط
12
) انتهاي تابع
main
را نشان ميدهد.
برنامهنويسي ايدهال
بسياري از برنامهنويسان در انتهاي آخرين كاراكتر چاپ شده توسط يك تابع، كاراكتر
\n
را قرار ميدهند. با اين عمل مطمئن ميشوند كه تابع در پايان كار خود، كرسر را در ابتداي خط بعدي قرار خواهد داد. اين عمل ميتواند در راستاي ايجاد برنامههايي با قابليت استفاده مجدد موثر باشد.
برنامهنويسي ايدهال
به دندانهدار بودن خطوط
كد
دقت كنيد. اين عمل يكي از قواعد بكارگيري فاصلهها در برنامه است. دندانهدار كردن كد برنامهها، باعث افزايش خواناي
و گرامر آن
ميشود
.
برنامهنويسي ايدهال
براي حفظ ظاهر آراسته و مرتب در ميان كدهاي نوشته شده، بهتر است ميزان دندانهگذاري مورد نظر خود را از همان ابتدا مشخص سازيد. پيشنهاد ميكنيم تا از كليد
tab
با فاصله گذاري
¼
اينچ يا سه فاصله
(space)
از سطح دندانهگذاري شده فوقاني استفاده كنيد.