0

آموزش ++C - بخش 2

 
reza1371
reza1371
کاربر برنزی
تاریخ عضویت : مهر 1388 
تعداد پست ها : 168
محل سکونت : لرستان

آموزش ++C - بخش 2
چهارشنبه 25 فروردین 1389  9:22 AM

اصلاح برنامه

اين بخش ادامه‌دهنده معرفي برنامه‌نويسي C++ با دو مثال است، كه نحوه اصلاح برنامه مطرح شده در شكل 1-2 را نشان مي‌دهند. در مثال اول، متن در يك خط با استفاده از چندين عبارت چاپ مي‌شود. در مثال دوم همان متن توسط يك عبارت و در چندين خط چاپ مي‌گردد.

چاپ متن در يك خط توسط چند عبارت

رشته Welcome to C++! مي‌تواند به چندين روش چاپ شود. براي مثال، در برنامه شكل 3-2 از دو عبارت براي وارد كردن جريان (خطوط 8-9 )استفاده شده است، تا همان خروجي برنامه شكل 1-2 توليد شود. خروجي برنامه دوم دقيقاٌ همانند برنامه اول است، چرا كه هر عبارت از مكاني كه عبارت قبلي به عمل چاپ پايان داده، شروع به چاپ مي‌كند. عبارت اول كلمه Welcome و بدنبال آن يك فاصله چاپ كرده و عبارت دوم هم كار چاپ را از همان خط و پس از فاصله چاپ شده دنبال مي‌كند. بطور كلي، C++ به برنامه‌نويس امكان مي‌دهد تا عبارات را به روش‌هاي گوناگون بكار گيرد.

چاپ متن در چند خط توسط يك عبارت

همانند برنامه شكل 4-2 مي‌توان يك عبارت را در چندين خط به نمايش در آورد. هر بار كه عبارت ارسالي به خروجي با كاراكتر توالي \n مواجه شود، كرسر به ابتداي خط بعدي منتقل خواهد شد. براي ايجاد يك خط خالي در خروجي، دو كاراكتر خط جديد را پشت سرهم، همانند خط 8 قرار دهيد.


 
    1  // Fig. 2.3: fig02_03.cpp

2  // Printing a line of text with multiple statements.

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 ";

9     std::cout << "to C++!\n";

10   

11     return 0; // indicate that program ended successfully

12   

13  } // end function main

 


 

انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net

 

 

شكل 3-2 | چاپ متن در يك خط با چند عبارت.




            
1  // Fig. 2.4: fig02_04.cpp

2  // Printing multiple lines of text with a single statement.

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\nto\n\nC++!\n";

9   

10 return 0; // indicate that program ended successfully

11  

12 } // end function main


 
 
انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net
 

شكل 4-2 | چاپ متن در چند خط با يك عبارت.

 

 

4-2   يك برنامه ساده ديگر: جمع اعداد صحيح

در برنامه بعدي از شي جريان ورودي std::cin و عملگر استخراج >> ، براي بدست آوردن دو عدد صحيح تايپ شده از سوي كاربر از طريق صفحه‌كليد، جمع آنها و نمايش نتيجه بدست آمده با استفاده از std::cout مي‌پردازيم. برنامه شكل 5-2 عمل جمع و خروجي حاصل از اين برنامه را نشان مي‌دهد.



            
1   // Fig. 2.5: fig02_05.cpp

2  // Addition program that displays the sum of two numbers.

3  #include <iostream> // allows program to perform input and output

4   

5  // function main begins program execution

6  int main()

7  {

8  // variable declarations

9     int number1; // first integer to add

10     int number2; // second integer to add

11     int sum; // sum of number1 and number2

12   

13     std::cout << "Enter first integer: "; // prompt user for data

14     std::cin >> number1; // read first integer from user into number1

15   

16     std::cout << "Enter second integer: "; // prompt user for data

17     std::cin >> number2; // read second integer from user into number2

18   

19     sum = number1 + number2; // add the numbers; store result in sum

20   

21     std::cout << "Sum is " <<sum <<std::endl; //display sum; end line

22   

23     return 0; // indicate that program ended successfully

24   

25  } // end function main


 
انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net
 

 

شكل 5-2 | برنامه جمع كه مجموع دو عدد صحيح دريافتي از صفحه كليد را محاسبه مي‌كند.

 

 

توضيحات موجود در خطوط 1 و 2


         
        // Fig. 2.5: fig02_05.cpp
        

// Addition program that displays the sum of two numbers.


نشاندهنده نام فايل و هدف برنامه هستند. رهنمود پيش‌پردازنده C++



          
#include <iostream> // allows program to perform input and output
در خط 3 حاوي محتويات سرآيند فايل iostream در برنامه است.

همانطوري كه قبلاٌ هم گفته شد، هر برنامه‌اي با اجراي تابع main آغاز مي‌شود(خط 6 ). براكت سمت چپ (خط 7 ) ابتدا و آغاز بدنه main و براكت متناظر سمت راست (خط 25 )، انتها و پايان بدنه را نشان مي‌دهد.

خطوط 9-11

            
   int number1; // first integer to add

   int number2; // second integer to add

   int sum; // sum of number1 and number2


بخش اعلان مي‌باشند. كلمات number1 ، number2 و sum اسامي متغيرها هستند. متغيرها مكان‌هاي در حافظه كامپيوتر هستند كه مي‌توان مقاديري را براي استفاده برنامه در آنها ذخيره كرد. اين اعلان‌ها مشخص مي‌كنند كه متغيرهاي number1 ،  number2 و sum از نوع داده int هستند، به  اين معني كه اين متغيرها قادر به نگهداري مقادير صحيح همانند اعداد 7, -11, 0, 31914 و غيره مي‌باشند. تمامي متغيرها بايستي داراي نام و يك نوع داده باشند تا بتوان از آنها در برنامه استفاده كرد. چندين متغير از يك نوع را مي‌توان در خط يا چند خط مجزا از هم اعلان كرد. مي‌توانيم هر سه متغير فوق را در يك خط و بصورت زير اعلان كنيم:
          
int number1, number2, sum;

با اين همه، در اين حالت خوانائي برنامه كاهش يافته و مانع مي‌شود تا توضيحات مناسب براي هر متغير و هدف از آن متغير در برنامه را وارد سازيم. اگر بخواهيم بيش از يك متغير در يك خط  اعلان كنيم (همانند مورد بالا) بايد اسامي را با يك ويرگول (,) از يكديگر جدا كنيم. كه به اين حالت ليست جدا شده با ويرگول گفته مي‌شود.

برنامه‌نويسي ايده‌ال

پس از هر ويرگول( , ) يك فاصله قرار دهيد تا خوانائي برنامه افزايش يابد.

برنامه‌نويسي ايده‌ال

برخي از برنامه‌نويسان ترجيح مي‌دهند تا هر متغير را در يك خط جداگانه اعلان كنند. در اين حالت قراردادن يك توضيح در كنار هر اعلان به آساني صورت مي‌گيرد.

بزودي در مورد نوع داده double (خاص اعداد حقيقي، اعداد با نقطه اعشار همانند 3.4  و -11.19 ) و نوع داده char (خاص داده كاراكتري، يك متغير از نوع char فقط مي‌تواند يك حرف كوچك، يك حرف بزرگ، يك رقم يا يك كاراكتر خاص همانند $  يا * را در خود ذخيره سازد) صحبت خواهيم كرد.

غالباً به نوع‌هاي همانند double ، int و char نوع‌هاي بنيادين، نوع‌هاي اصلي يا نوع‌هاي توكار (built-in) مي‌گويند. انواع نوع‌هاي بنيادين از جمله كلمات كليدي هستند و از اينرو بايد تماماً با حروف كوچك به نمايش درآيند.

نام يك متغير (همانند number1 ) مي‌توانند هر شناسه معتبري كه يك كلمه كليدي نيست، باشد. يك شناسه متشكل از دنباله‌اي از كاراكترها شامل حروف، ارقام و خط زيرين ( _ ) است. يك شناسه نمي‌تواند با يك رقم آغاز شود. زبان C++ از جمله زبان‌هاي حساس به موضوع است، به اين معني كه مابين حروف كوچك و بزرگ تفاوت قائل مي‌شود. از اينرو شناسه‌هاي a1 و A1 با هم برابر نيستند.

قابليت حمل

زبان C++ به شناسه‌ها امكان مي دهد تا هر طولي داشته باشند، اما امكان دارد سيستم شما يا ساختار C++ بكار رفته محدوديت‌هائي بر روي طول شناسه‌ها اعمال كند. از اينرو براي حفظ سازگاري و قابليت حمل، از شناسه‌هائي با طول 31 كاراكتر يا كمتر استفاده كنيد.

برنامه‌نويسي ايده‌ال

انتخاب اسامي با معني به برنامه كمك مي‌كند كه خود به عنوان توضيحي بر برنامه باشد (self- documenting) . در چنين حالتي اگر متن برنامه در اختيار ديگران قرار داده شود، بدون اينكه نيازي به راهنما و توضيحات اضافي باشد، عملكرد برنامه مشخص خواهد بود.

برنامه‌نويسي ايده‌ال

از اختصار يا كوته‌سازي شناسه‌ها اجتناب كنيد، تا خوانايي برنامه افزايش يابد.

برنامه‌نويسي ايده‌ال

از ايجاد شناسه‌هاي كه با يك خط زيرين يا دو خط زيرين آغاز مي‌شوند اجتناب كنيد، چراكه امكان دارد كامپايلر C++ از اسامي مشابه‌اي براي انجام مقاصد داخلي خود استفاده كرده باشد. در اينصورت از ايجاد تداخل مابين خود و كامپايلر جلوگيري خواهيد كرد.

اجتناب از خطا

زبان‌هاي همانند C++ هميشه در حال بسط و گسترش هستند. امكان در زمان تكامل، كلمات كليدي جديدي به آنها افزوده شود. از كلمات مسئوليت آوري همانند object بعنوان شناسه اجتناب كنيد. حتي اگر امروز كلمه object جزء كلمات كليدي در C++ نباشد، اما مي‌تواند روزي تبديل به كلمه كليدي گردد و در آينده برنامه شما در زمان كامپايل با خطاي جديدي مواجه شود كه قبلا چنين چيزي وجود نداشت.

تقريباٌ مي‌توان اعلان متغيرها را در هر كجاي برنامه قرار داد، اما بايد قبل از اينكه توسط برنامه بكار گرفته شوند، اعلان گردند. براي مثال، در برنامه شكل 5-2، اعلان در خط 9

          
int number1; // first integer to add

مي‌توانست بلافاصله قبل از خط
          
std::cin >> number1; // read first integer from user into number1

قرار داده شود. اعلان موجود در خط 10
          
int number2; // second integer to add

مي‌توانست بلافاصله قبل از خط 17
          std::cin >> number2; // read second integer from user into number2
        

و اعلان خط 11
          int sum; // sum of number1 and number2
        

مي‌توانست بلافاصله قبل از خط 19
          sum = number1 + number2; // add the numbers; store result in sum
        

اعلان گردد.

برنامه‌نويسي ايده‌ال

بهتر است در ميان خطوط توضيحات از يك خط خالي استفاده شود. در اينصورت توضيحات از كد برنامه جدا شدة و خوانائي برنامه افزايش مي‌يابد .

برنامه‌نويسي ايده‌ال

اگر ترجيح مي‌دهيد كه اعلان‌ها را در ابتداي يك تابع قرار دهيد، آنها را از بخش عبارات اجرائي موجود در داخل بدنه تابع و با استفاده از يك خط خالي جدا كنيد تا اين دو بخش از هم متمايز شوند.

خط 13

          std::cout << "Enter first integer: "; // prompt user for data
        

مبادرت به چاپ رشته Enter first integer (بعنوان رشته ليترال نيز شناخته مي‌شود) بر روي صفحه نمايش مي‌كند. به چنين پيغام‌هاي prompt گفته مي‌شود، چراكه به كاربر مي‌گويند كه چه كاري بايد انجام دهد. خط 14

 

              
            
              std::cin >> number1; // read first integer from user into number1
            
          

با استفاده از شي ورودي cin (از فضاي نامي std ) و عملگر >> ، مقداري از صفحه‌كليد دريافت مي‌كند. با استفاده از عملگر >> به همراه std::cin كاراكترها از يك ورودي استاندارد كه معمولا صفحه‌كليد است، دريافت مي‌شوند. در واقع مي‌توان گفت كه std::cin مقداري براي number1 دريافت مي‌كند.

هنگامي كه برنامه اجرا شده و به عبارت فوق مي‌رسد، منتظر مي‌ماند تا كاربر مقداري براي متغير number1 وارد سازد. كاربر با تايپ يك مقدار صحيح و سپس فشردن كليد Enter (گاهاٌ به اين كليد، كليد Return هم مي‌گويند) به برنامه پاسخ مي‌دهد. با اين عمل مقدار تايپ شده به كامپيوتر ارسال مي‌شود. سپس كامپيوتر كاراكترهاي دريافت شده را به يك عدد صحيح تبديل و اين عدد (يا مقدار) را به متغير number1 نسبت مي‌دهد. از اين نقطه به بعد هر مراجعه‌اي به number1 در اين برنامه مترادف با استفاده از اين مقدار خواهد بود.

شي‌هاي std::cout و std::cin تعامل مابين كاربر و كامپيوتر را تسهيل مي‌بخشند. بدليل اينكه اين تعامل بفرم يك گفتگو است، غالباٌ به اينحالت محاسبه تعاملي يا محاوره‌اي گفته مي‌شود.

   خط 16

          std::cout << "Enter second integer: "; // prompt user for data
        

مبادرت به چاپ Enter second integer بر روي صفحه‌ نمايش مي‌كند. اين عبارت به كاربر اعلان مي كند كه چه كاري انجام دهد. خط 17

 

              std::cin >> number2; // read second integer from user into number2
          

مقداري براي متغير number2   از سوي كاربر بدست مي‌آورد.

عبارت تخصيص دهنده در خط 19

          sum = number1 + number2; // add the numbers; store result in sum
        

مجموع متغيرهاي number1 و number2 را محاسبه و نتيجه آنرا به متغير sum تخصيص مي‌دهد. از عملگر تخصيص = به اين منظور استفاده شده است. مفهوم عبارت فوق به اين مضمون است " sum مقدار خود را از number1 + number2 بدست مي‌آورد." اكثر محاسبات در بين عبارات تخصيصي صورت مي‌گيرند. به عملگر = و عملگر + ، عملگرهاي باينري گفته مي‌شود چرا كه هر كداميك از آنها داراي دو عملوند هستند. در مورد عبارت فوق، عملگر + ، داراي دو عملوند number1 و number2 است. همچنين عملگر = ، داراي دو عملوند sum و مقدار بدست آمده از number1 + number2 است.

برنامه‌نويسي ايده‌ال

در هر دو طرف يك عملگر باينري چند فاصله قرار دهيد. فاصله‌ها باعث متمايز شدن نقش عملگر شده و خوانائي عبارتا افزايش مي‌يابد.

خط 21

          std::cout << "Sum is " << sum << std::endl; // display sum; end line
        

مبادرت به چاپ   رشته كاراكتري Sum is و بدنبال آن مقدار عددي متغير sum توسط عبارت std::endl مي‌كند. end1 كوتاه شده “end line” بوده و متعلق به فضاي‌نامي   std مي‌باشد. كنترل كننده جريان std::endl يك خط جديد به خروجي منتقل و سپس "بافر خروجي را خالي مي‌كند." به اين معني كه، در برخي از سيستم‌ها خروجي در ماشين انباشته مي‌شود تا زمانيكه "ارزش" نمايش در صفحه نماش را پيدا كنند، عبارت std::endl خروجي‌هاي انباشته شده را مجبور مي‌كند تا در يكباره به نمايش در آيند.

دقت كند كه عبارت قبلي دو مقدار از انواع مختلف را خارج مي‌سازد. عملگر << از نحوه ارسال هر نوع داده به خروجي مطلع است. به روش استفاده از چندين عملگر << در يك عبارت، عمليات زنجير كردن، متصل كردن يا فرآيند آبشاري گفته مي‌شود. از اينرو، داشتن چندين عبارت خروجي براي خارج كردن چند داده متمايز ضروري نيست.

البته مي‌توان محاسبات را در بين عبارات خروجي هم انجام داد. مي‌توانيم عبارات موجود در خطوط 19 و 21 را در يك عبارت، بفرم زير داشته باشيم

          std::cout << “Sum is “ << numbeer1 + number2 << std::endl;
        

بنابر اين ديگر نيازي به متغير sum نخواهد بود. براكت راست، { ، به كامپيوتر اطلاع مي‌دهد كه به انتهاي تابع main رسيده است.

از جمله توانمنديهاي C++ اين است كه به كاربران اجازه مي‌دهد تا نوع داده‌هاي مورد نياز و متعلق به خود را ايجاد كنند (در فصل سوم در اين مورد و در فصل‌هاي نهم و دهم نگاهي دقيق به اين موضوع خواهيم داشت). سپس با نحوه رسيد‌گي C++ به هنگام كار با نوع داده‌هاي جديد با استفاده از عملگرهاي >> و << بيشتر آشنا خواهيد شد .

تشکرات از این پست
samsam iman_karbala ravabet_rasekhoon
دسترسی سریع به انجمن ها