سه شنبه 3 اسفند 1395 - 24 جمادي الاول 1438 - 21 فوريه 2017
برای این که بتوانیم هنگام اجرای برنامه مقادیری را وارد کنیم از عملگر ورودی >> استفاده می‌کنیم...
عکس نویسنده
عکس نویسنده
بازدید :
زمان تقریبی مطالعه :

عملگر ورودی


در جلسه گذشته مطالب کلی در مورد انواع عدد صحیح، ممیز شناور و ... آموختیم و هم چنین دانستیم که برای این که بتوانیم هنگام اجرای برنامه مقادیری را وارد کنیم از عملگر ورودی استفاده می‌کنیم.

; نام متغیر << cin

برنامه ی زیر یک عدد از کاربر گرفته و همان عدد را دوباره در خروجی نمایش می‌دهد:

#include
#include
using namespace std;
int main()
   int  m;
   cout << "Enter a number: ";
   cin >> m;
   cout << "your number is: " << m << endl;
   return 0;
}

 

عملگر ورودی و عملگر خروجی به شکل جریانی رفتار می‌کنند. یعنی در عملگر خروجی می‌توانیم چند عبارت را با استفاده از چند عملگر << به صورت پشت سر هم چاپ کنیم، در عملگر ورودی نیز می‌توانیم با استفاده از چند عملگر >> چند مقدار را به صورت پشت سر هم دریافت کنیم. مثلا با استفاده از دستور:

cin >> x >> y >> z;

سه مقدار x و y و z به ترتیب از ورودی دریافت می‌شوند. برای این کار باید بین هر ورودی یک فضای خالی (space) بگذارید و پس از تایپ کردن همۀ ورودی‌ها، کلید enter را بفشارید.


توضیح:

صفحه متنی (Text) از 25 سطر و 80 ستون تشکیل شده است که هر حرف یا عدد (کلا کاراکتر) در یک خانه صفحه جای می گیرد. این 80 ستون از لحاظ منطقی به 10 قسمت 8 ستونی تقسیم شده است که با چاپ \t دستور cout مکان نما را به ابتدای قسمت بعدی می برد (یا در صورت لزوم به ابتدای سطر بعد)
در C++  دو نوع اصلی داده وجود دارد: «نوع صحیح» و «نوع ممیز شناور». همۀ انواع دیگر از روی این دو ساخته می‌شوند (به شکل زیر دقت کنید).

 

نوع صحیح برای نگهداری اعداد صحیح (اعداد 0 و 1 و 2 و ...) استفاده می‌شود. این اعداد بیشتر برای شمارش به کار می‌روند و دامنه محدودی دارند.
نوع ممیز شناور برای نگهداری اعداد اعشاری استفاده می‌شود. اعداد اعشاری بیشتر برای اندازه‌گیری دقیق به کار می‌روند و دامنۀ بزرگ‌تری دارند. یک عدد اعشاری مثل 187/352را می‌توان به شکل 18/7352×10   یا 102×1/87352  یا 

1873/52 ×10-1   یا  18735/2 ×10-2  و یا ... نوشت.

به این ترتیب با کم و زیاد کردن توان عدد 10 ممیز عدد نیز جابه‌جا می‌شود. به همین دلیل است که به اعداد اعشاری «اعداد ممیز شناور» می‌گویند.
C++  شش نوع متغیر عدد صحیح دارد تفاوت این شش نوع مربوط به میزان حافظه ی مورد استفاده و محدودۀ مقادیری است که هر کدام می‌توانند داشته باشند.
این میزان حافظه ی مورد استفاده و محدوده ی مقادیر، بستگی زیادی به سخت‌افزار و هم چنین سیستم عامل دارد.

در ادامه خواهیم دانست....

محدوده مجاز برای مقادیر متغیرها

 


char -> -128…127 (0x00…0xFF ASCII Characters)
int -> -32768…32767
float-> ±10-38…±10+38   (دقت 7 رقم اعشار)
double-> ±10-308…±10308  (دقت 15 رقم اعشار)

 

دستورات ++و --
عملگر می تواند قبل از نام متغیر بیاید
 مثل m++ یا n—        ابتدا متغیر، متناسب با عملگر، افزایش یا کاهش می یابد
 ونیز می تواند عملگر بعد از نام متغیر بیاید
 مثل. ++m یا --n .      ابتدا مقدار متغیر در محاسبات به کار می‌رود و پس از آن مقدار متغیر یک واحد افزایش یا کاهش می‌یابد
درمرحله اول 
 عملگرهای دیگری نیز داریم.
همانند زیرکه درمحاسبات استفاده می شود

+=   و   -=   و   *=   و   /=   و     =%
m += 8; → m = m + 8;
m -= 8;  → m = m - 8;
m *= 8;  → m = m * 8;
m /= 8;  → m = m / 8;
m %= 8; → m = m % 8;

 

تفاوت نوع float با نوع double در این است که نوع double دو برابر float از حافظه استفاده می‌کند. پس نوع double دقتی بسیار بیشتر از float دارد. به همین دلیل محاسبات double وقت‌گیرتر از محاسبات float است.
 

نوع bool

نوع bool یک نوع صحیح است که متغیرهای این نوع فقط می‌توانند مقدار true یا false داشته باشند. true به معنی درست و false به معنی نادرست است.
   اما این مقادیر در اصل به صورت 1 و 0 درون رایانه ذخیره می‌شوند: 1 برای true و 0 برای false.


نوع کاراکتر(char)

یک کاراکتر یک حرف، رقم یا نشانه است که یک شمارۀ منحصر به فرد دارد. به عبارت عامیانه، هر کلیدی که روی صفحه‌کلید خود می‌بینید یک کاراکتر را نشان می‌دهد.
   مثلا هر یک از حروف 'A' تا 'Z' و 'a' تا 'z' و هر یک از اعداد '0' تا '9' و یا نشانه‌های '~' تا '+' روی صفحه‌کلید را یک کاراکتر می‌نامند.

تبدیل نوع

در محاسباتی که چند نوع متغیر وجود دارد، جواب همیشه به شکل متغیری است که دقت بالاتری دارد. یعنی اگر یک عدد صحیح را با یک عدد ممیز شناور جمع ببندیم، پاسخ به شکل ممیز شناور است به این عمل گسترش نوع می‌گویند.مثلا   برای این که مقدار یک متغیر از نوع ممیز شناور را به نوع صحیح تبدیل کنیم از عبارتint()  استفاده می‌کنیم به این عمل تبدیل نوع گفته می شود.

‌«خطای زمان کامپایل»

 این قبیل خطاها که اغلب خطاهای نحوی هستند، توسط کامپایلر کشف می‌شوند و به راحتی می‌توان آن‌ها را رفع نمود.  
 

«خطای زمان اجرا»

کشف اینگونه خطاها به راحتی ممکن نیست و کامپایلر نیز چیزی راجع به آن نمی‌داند. برخی از خطاهای زمان اجرا سبب می‌شوند که برنامه به طور کامل متوقف شود و از کار بیفتد.
 

سرریزی عددی

یک متغیر هر قدر هم که گنجایش داشته باشد، بالاخره مقداری هست که از گنجایش آن متغیر بیشتر باشد.  اگر سعی کنیم در یک متغیر مقداری قرار دهیم که از گنجایش آن متغیر فراتر باشد، متغیر «سرریز» می‌شود،در چنین حالتی می‌گوییم که خطای سرریزی رخ داده است.
وقتی یک عدد صحیح سرریز شود، عدد سرریز شده به یک مقدار منفی «گردانیده» می‌شود اما وقتی یک عدد ممیز شناور سرریز شود، نماد inf به معنای بی‌نهایت را به دست می‌دهد.
هیچ‌گاه از متغیر ممیز شناور برای مقایسه برابری استفاده نکنید. زیرا در متغیرهای ممیز شناور خطای گرد کردن سبب می‌شود که پاسخ با آن چه مورد نظر شماست متفاوت باشد. خطای‌ گرد كردن‌ نوع‌ دیگری‌ از خطاست‌ كه‌ اغلب‌ وقتی‌ رایانه‌ها روی‌ اعداد حقیقی‌ محاسبه‌ می‌كنند، رخ‌ می‌دهد.
برای‌ مثال‌ عدد 1/3ممكن‌ است‌ به‌ صورت‌0/333333 ذخیره‌ شود كه‌ دقیقا معادل‌ 1/3 نیست‌ این خطا از آن‌جا ناشی می‌شود که اعدادی مثل 1/3 مقدار دقیق ندارند و رایانه نمی‌تواند این مقدار را پیدا کند، پس نزدیک‌ترین عدد قابل محاسبه را به جای چنین اعدادی منظور می‌کند.
 

بخش پژوهش های دانش آموزی سایت تبیان