نوع داده و عملگرهای اصلی
در اين بخش قصد داريم در موارد زير مطالبي را ارائه دهيم:
الف)انواع داده در سي پلاس پلاس
+ تعريف متغيرها در بلوك هاي مختلف
داده ممكن به صورت هاي مختلف باشند مثل عدد، كاراكتر و… براي استفاده از يك داده از نوع عدد ما مي توانيم مستقيماً به كامپيوتر بگوييم براي مثال عدد ۲ را براي ما چاپ كند و يا اينكه ۲+۳ را چاپ كند كه در واقع عدد ۵ را چاپ مي كند اما در اينجا ما نمي توانيم مقدار حاصل جمع را نگه داريم. براي نگهداري يك داده مي بايست يك نماد به آن داده نسبت دهيم. اينگونه مي توانيم مقدار آن را نگه داريم. مثلا عدد ۲ را به نماد a نسبت دهيم و بگوييم كه a را با عدد ۳ جمع كن و مقدار آن را در b ذخيره كن.
نماد ها در سي پلاس پلاس محدود نمي باشند و هرچيزي مي تواند باشد، فقط مي بايست در تعريف آن ها به موارد زير توجه شود:
۱. در نام نماد نمي توان از space استفاده نمود.
۲. نماد ها نمي توانند شامل عملگرها(+، -و…) باشند.
۳. نام يك نماد نمي تواند با يك عدد شروع شود.
در سي پلاس پلاس همانطور كه اشاره شده انواع مختلفي از داده وجود دارد،پس ابتدا به بررسي انواع اصلي داده ها مي پردازيم:
int: يا همان integer است كه شامل اعداد صحيح مي شود و ۴ بايت حافظه اشغال مي كند.
float: همان اعداد اعشاري است. با ۴ بايت حافظه اشغالي.
double: اين نوع هم مثل نوع قبل براي اعداد اعشاري به كار مي رود با اين فرق كه دقت بيشتري دارد.
char: شامل نوع داده كاركتري مي باشد كه كد اسكي* آن بين ۰ تا ۲۵۵ مي باشد. و تنها يك بيت حافظه مي گيرد.
bool: ارزش منطقي درست(true) و غلط(false) مي باشد و يك بايت حافظه مي گيرد.
حال كه انواع داده را شناختيد بايستي بدانيد كه نمي توان يك نماد را در آنِ واحد به دو نوع داده اي نسبت داد. از آنجا كه نمادها قابل تغيير هستند به آنها متغير مي گويند. طرز نسبت دهي متغير به نوع داده اي به شكل زير است:
نام متغير نوع داده;
به عنوان مثال:
int a;
float b;
double ab;
char a1b;
bool b0;
امكان دارد بر حسب نياز شما بخواهيد در زمان تعريف يك متغير، به آن مقدار اوليه دهيد. به اين منظور كافي است در مقابل نام آن يك علامت = بگذاريد و سپس آن را مقدار دهي كنيد:
int a=5;
float b=1.232;
double ab=2;
char a1b='t';
bool b0=false;
تنها نكته قابل ذكر در نوع مقدار دهي يك متغير از نوع كاراكتري است كه بايد مقدار اوليه را در داخل ‘ ‘ بگذاريم.
اگر شما بخواهيد چند متغير از يك نوع داده اي بسازيد كافي است با ذكر يك بار نوع داده اي و گذاشتن ويرگول بين متغيرها آن ها را تعريف كنيد. مثل زير:
int a=5, a1,a2,a3=4,a5=0;
گاهي ممكن است نياز باشد به يك نماد يك مقدار دهيم كه در تمام طول اجراي برنامه مقدار آن ثابت بماند. اين كار به دو صورت قابل اجرا است.
۱. در ابتداي برنامه يا همان header اين گونه بنويسيم:
# define مقدار اوليه اسم متغير
# define Num 10
۲. آوردن كلمه const در main برنامه، به اين صورت:
const مقدار اوليه= اسم متغير نوع متغير;
const int a=4;
بايد توجه داشت كه در تعريف ثوابت نمي توان روي آن متغيرهاي اعمال رياضي و… انجام داد. فقط مي توان از آن استفاده نمود.
در اين نوع مقدار دهي، حافظه تعلق گرفته در CPU ذخيره مي شود نه در memory (كه در اينجا ram مي باشد).
نوع تعريف آن به صورت زير است:
register اسم متغير نوع داده اي;
register int x;
اين كار باعث افزايش سرعت پردازش مي شود. چرا كه در حالت عادي ابتدا از ram متغير به cpu فرستاده مي شود و سپس روي آن پردازش صورت مي گيرد ولي در اينجا مستقيماً پردازش صورت مي گيرد. بايد توجه داشت كه حافظه رجيستر محدود است پس نمي توان تعداد زيادي متغير در آن تعريف كرد.
تعريف متغيرها در بلوك هاي مختلف
اگر هر تابع،كلاس،حلقه، دستور شرطي و … را يك بلوك در برنامه نويسي در نظر بگيريم. مي توانيم در هر كدام از آنها يك متغير تعريف كنيم. اما بايد توجه داشت با پايان يافتن بلوك ها،متغيرها نيز از بين مي روند. بنابراين مي توانيم در يك برنامه در بلوك هاي مختلف متغيرهايي با نام يكساني داشت.مثال:
int main(){ int i; for(int i=0;i<20;i++) cout<<i; for(int i=10;i>0;i--) cout<<i; return 0; }//end main
منظور از عملگرها نماد هايي مثل =و+و-و… است كه در يك يا چند متغير تأثير مي گذارد.انواع عملگر ها عبارتند از:
فرض كنيدa,b,c از نوع int تعريف شده باشندو به ترتيب داراي مقدار اوليه ۵و۲۰و۲ باشند:
عملگر هايي كه باعث تغيير مي شوند:
+: دو عملوند سمت راست و چپ خود را با هم جمع مي كند. مثال a+b كه مقدار آن ۲۲ مي شود.
-: عملوند راست را از چپ كم مي كند. مثال b-a كه مقدار آن ۱۸ مي شود.
*: عملوند راست و چپ را در هم ضرب مي كند. مثال a*b كه مقدار آن برابر ۴۰ مي شود.
^: عملوند سمت چپ را به توان عملوند سمت راست مي رساند. مثال a^c كه مقدار آن برابر ۳۲ مي شود.
/: اين عملگر نياز به توجه خاصي نسبت به عملگر هاي ديگر دارد.اين عملگر را در دو وضعيت مورد ارزيابي قرار مي دهيم:
وضعيت ۱: اگر دو عملوند چپ و راست آن هر دو از نوع int باشند. حاصل برابر با خارج قسمت آن دو مي شود. براي مثال c/a كه برابر ۲ مي شود.
وضعيت ۲: اگر يكي از دوعملوند چپ يا راست از نوع اعشار باشند حاصل برابر تقسيم آن دو مي شود. مثلا اگر d از نوع float با مقدار ۵ باشد حاصل
d/a برابر ۲.۵ مي شود.
%: دو عملگر چپ و راست بايد از نوع int باشد و مقدار برابر با باقيمانده مي شود. مثال c%a كه مقدار آن ۱ مي شود.
=: كه مقدار سمت راست را در سمت چپ مي ريزد. مثال b=a كه مقدار b برابر ۲ مي شود.
=+: كه مقدار سمت چپ و سمت راست را باهم جمع مي كند و در سمت چپ مي ريزد. مثال b+=a كه مقدار b برابر ۲۲ مي شود.
=-: كه مقدار سمت راست را از سمت چپ كم مي كند و در سمت چپ مي ريزد. مثال b-=a كه مقدار b 18 مي شود.
=* , =/, =%: كه توضيحاتش مثل دو نمونه قبل است.
++: كه تنها يك عملوند مي پذيرد. اگر عملوند در سمت چپ آن قرار گيرد در محاسبات طولاني ابتدا يك واحد به عملوند اضافه مي شود و سپس آن عملوند در محاسبات ديگر وارد مي شود. و اگر در سمت راست قرار گيرد ابتدا آن عملوند در محاسبه نقش خود را ايفا مي كند و سپس يك واحد به آن اضافه مي شود.مثال:
//(۱)
b=c*a++;
//(۲)
b=c*++a;
در شماره ۱ حاصل b برابر ۱۰ مي شود و سپس مقدار a برابر ۳ مي شود.
در شماره ۲ ابتدا a برابر ۳ مي شود و بنابراين حاصل b برابر ۱۵ مي شود.
–: مانند دستور قبل مي ماند با اين تفاوت كه از عملوند يك واحد كم مي كند.
!: مقدار صحيح را غلط و غلط را صحيح مي كند.
==: چك مي كند كه آيا مقدار چپ و راست با هم برابر است يا خير.
=!: چك مي كند كه آيا مقدار چپ و راست با هم نابرابر است يا خير.
>:چك مي كند كه آيا سمت چپ از راست كوچكتر است يا خير.
<:چك مي كند كه آيا سمت چپ از راست بزرگ است يا خير.
=>: چك مي كند كه آيا سمت چپ از راست كوچكتر مساوي است يا خير.
=<: چك مي كند كه آيا سمت چپ از راست بزرگتر مساوي است يا خير.
&&: بين دو شرط مي آيد و زماني درست است كه هر دو شرط درست باشند.(همان “و” منطقي است)
||: بين دو شرط مي آيد و زماني درست است كه يكي از دو شرط درست باشند.(همان “يا” منطقي است). هركدام از اين خط ها با گرفتن دكمه shift و \ ايجاد مي شود.
تبديل انواع در سي پلاس پلاس در انجام محاسبات به طور خودكار:
اين بخش خيلي مهم است و بي توجهي به آن باعث بروز مشكلات بعدي مي شود. وقتي دو نوع داده اي مختلف را با هم در يك عبارت مي آوريم. مثلا جمع مي كنيم حاصل نوعي از داده است كه بزرگتر است. مثلاً وقتي int را با float جمع مي كنيم حاصل float مي شود.توجه داشته باشيد كه int به float تبديل نمي شود بلكه حاصل به صورت اعشاري خواهد بود.
وقتي يك مقدار اعشاري را برابر يك متغيري قرار مي دهيد كه از نوع int است مقدار صحيح آن عدد اعشاري در آن ريخته مي شود.
و….
شما مي توانيد خودتان به طور دستي امتحان كنيد و ببينيد مثلاً اگر يك مقدار صحيح را مساوي يك مقدار كاراكتري قرار دهيد چه اتفاقي مي افتد و …
يادتان باشد هيچ آموزشي بدون تمرين مثمر ثمر نخواهد بود. پس هر چه زودتر شروع به تمرين عملي كنيد!!!
در صورت داشتن هر گونه سوال و یا اشکال مي توانيد آن را از طریق افزودن نظر در همین بخش عنوان نمایید.
منبع: مرجع کامل فارسی سی پلاس پلاس به آدرس Cplusplus.ir
نویسنده: تمدن
لازم به ذکر است که دامنه cplusplus.ir توسط من تهیه شده و در حال حاضر محتوای سایت را روی وبلاگ بارگذاری کرده ام ;)
ممنون از مطالب خوبتون