Toneka Code
Toneka Code
Code
1
Contents
2
3
این انواع داده را کاراکترها ،اعداد صحیح ،بولینها و اعداد اعشاری و نوع خاصی به نام
voidتشکیل میدهد.
مشخصات
در جدول زیر مقدار حافظهای که برای نگهداری هر نوع داده نیاز است و بازهی مقادیری
که در آن میتوان ذخیره کرد را میبینید.
هر متغیر بخشی از حافظهی کامپیوتر را با نامی که برای آن مشخص میکنیم در
اختیار ما قرار میدهد .می توانیم در آن بخش از حافظه مقداری را ذخیره کنیم و مقدار
ذخیره شده در آن را بخوانیم .هر متغیر نوعی دارد که میزان حافظهی مورد نیاز آن و
4
نحوهی ذخیرهی مقدارش در حافظه ،بازهی مقادیری که میتواند ذخیره کند و
عملگرهای تعریف شده روی آن را مشخص میکند.
نامگذاری
نام یک متغیر میتواند شامل حروف التین ،ارقام و کاراکتر _ باشد .حرف اول نام متغیر
نمیتواند یک رقم باشد .همچنین حروف کوچک و حروف بزرگ در نام متغیرها تفاوت
دارند.
همواره سعی کنید که نام هر متغیر را متناسب با کاربرد آن در برنامه و مقداری که قرار
است ذخیره کند ،انتخاب کنید .این گونه احتمال رخ دادن خطا در برنامهی شما کمتر
میشود و برنامه خواناتر میشود.
تعریف متغی
برای تعریف یک متغیر جدید باید نوع و نام متغیر را مشخص کنیم.
5
در مثال باال میبینید که میتوان چند متغیر از یک نوع را همزمان تعریف کرد.
عملگرها و عبارات
یک عبارت متشکل از یک یا چند عملوند است .ساده ترین عبارت میتواند یک متغیر
باشد و یا یک مقدار ثابت .حاصل چنین عبارتی برای با مقدار متغیر یا مقدار ثابت
میباشد .عبارات پیچیدهتر را میتوان به کمک عملگرها و تعدادی عملوند ساخت،
مانند.b * b - 4 * a * c :
عملگر تخصیص
در مثال باال اگر aو bطول دو ضلع قائم یک مثلث قائم الزاویه باشند ،در cطول وتر
آن مثلث را حساب کردهایم.
حاصل عملگر = برابر با RHSمیباشد .این عملگر وقتی به صورت متوالی استفاده شود ،از
راست به چپ محاسبه میشود.
عملگرهای حساب
عملگر %نیز باقیماندهی تقسیم LHSبر RHSرا محاسبه میکند .برای مثال حاصل
11%3برابر با 2میباشد.
تخصیص مرکب
بعضی اوقات میخواهیم مقدار متغیر را ۵واحد اضافه کنیم .میتوانیم با نوشتن عبارت
a = a + 5این کار را انجام دهیم .اما برای کاهش احتمال اشتباه میتوان از عملگرهای
تخصیص مرکب استفاده کرد .برای مثال میتوان به جای عبارت a = a + 5از عبارت
a += 5استفاده کرد .از نگاهی دیگر ،عبارت اخیر خالصه شدهی عبارت اولیه است.
کاهش و افزایش
بعضی از عبارات را میتوان خالصهتر نوشت .عملگر کاهش (–) و عملگر افزایش ()++
مقدار یک متغیر را یک واحد کاهش یا افرایش میدهند .این عملگرها به ترتیب معادل
-=1و +=1هستند.
در دو مثال باال مقدار نهایی yمتفاوت است .در صورتی که عملگر کاهش یا افزایش بعد
از متغیر بیاید ،حاصل عبارت برابر با مقدار اولیهی متغیر میشود ،ولی در صورتی که
این عملگرها قبل از متغیر استفاده شوند ،حاصل عبارت برابر با مقدار تغییر کردهی
متغیر میشود.
عملگرهای مقایسه
عملگرهای مقایسه در صورت برقراری رابطهای بین LHSو RHSمقدار trueو در غیر
این صورت مقدار falseرا بر میگردانند.
9
توضیح عملگر
اگر LHSبا RHSبرابر باشد LHS == RHS
اگر LHSبا RHSفرق کند LHS != RHS
اگر LHSکوچکت از RHSباشد LHS < RHS
اگر LHSبزرگت از RHSباشد LHS > RHS
اگر LHSکوچکت از یا مساوی با RHSباشد LHS <= RHS
اگر LHSبزرگت یا مساوی با RHSباشد LHS >= RHS
به مثال زیر توجه کنید.
توضیح عملگر
اگر LHSو RHSهر دو trueباشند LHS && RHS
اگر دست کم ییک از LHSو RHSمقدارش trueباشد LHS || RHS
مقدار نقیض ( RHSاین عملگر یک ورودی دارد) !RHS
به مثال زیر توجه کنید.
11
میتوان عملگر شرطی را به صورت زنجیرهای از چند شرط به کار برد.
عملگرهای بیت
عملگرهای بیتی بر حسب الگوی بیتهای نشان دهندهی ورودیهایشان ،خروجیای با
بیتهای تغییر یافته تولید میکنند.
با مثال زیر و رجوع به بهش عملگرهای منطقی میتوانید کارکرد دقیق این عملگرها
حدس بزنید.
12
برای مطالعهی بیشتر به صفحهی عملیات بیتی در ویکیپدیا مراجعه کنید.
پیشنهاد میشود تبدیلهای مقادیر مختلف را با نوشتن قطعه کدهایی به شکل باال
آزمایش کنید و به صورت تجربی یاد بگیرید.
ورودی و خروج
این بخش را با مثال زیر آغاز میکنیم:
13
کتابخانهی استاندارد iostreamرا برای خواندن ورودی و نوشتن خروجی از .1
طریق رابط کاربری متنی ( cmdدر ویندوز و terminalدر لینوکس) فراخوانی
میکنیم.
برای استفادهی آسانتر از دستورات کتابخانهی استاندارد C++از این دستور .2
استفاده میکنیم .توضیح بیشتر این خط در بخش مقدماتی نمیگنجد.
هر برنامه با اجرای تابع mainشروع میشود .این تابع نقطهی شروع برنامه است .3
و پس از اتمام مقداری را به عنوان کد خروج برنامه برمیگرداند.
متغیری به نام ageاز نوع intتعریف میکنیم .قصد داریم سن کاربر را در این .4
متغیر ذخیره کنیم.
با دستور cinبه همان شکلی که در کد استفاده شدهاست ،میتوانیم از کاربر .۵
ورودی بگیریم و مقدار وارد شده را در یک متغیر ذخیره کنیم .برای مثال در اینجا از
کاربر میخواهیم تا عددی را به عنوان سن خود وارد کند .عدد وارد شده در متغیر age
ذخیره میشود.
14
تعداد روزهایی که کاربر زندگی کردهاست را با ضرب عدد سن او در ،36۵حساب .6
میکنیم و در متغیر daysذخیره میکنیم.
با دستور coutبه همان شکلی که در کد استفاده شدهاست ،میتوانیم مقادیری .7
را در خروجی چاپ کنیم .برای مثال در اینجا تعداد روزهای عمر کاربر را در قالب یک
جمله به او نمایش میدهیم .چاپ کردن عبارت endlبا دستور coutباعث میشود تا
خط فعلی خروجی تمام شود و ادامهی خروجی در خطهای بعدی نمایش داده شود.
در آخرین خط برنامه ،مقدار 0را به عنوان کد خروج برنامه بازمیگردانیم .کد .8
خروج 0معموال به معنای پایان صحیح و بدون مشکل برنامه است .استفاده از این
دستور اجباری نیست .هرچند رعایت این نکات غیر ضروری از پیشآمدن اتفاقات
پیشبینی نشده جلوگیری میکند.
15
دستور انتخاب
برخی مواقع نیاز داریم با توجه به شرایط موجود (برای مثال با توجه به مقدار یک متغیر)
بین چند عمل مختلف برای اجرا ،انتخاب انجام دهیم و یا این که در مورد اجرای یک
عمل تصمیم بگیریم که انجام بشود یا نه .این کار به کمک دستورات انتخاب قابل انجام
است .این دستور یکی از پرکاربرد ترین دستورات است که تقریبا در هر برنامه ای به کار
می رود.
یک مثال
فرض کنید در حین اجرای یک برنامه به قسمتی رسیده ایم که باید با توجه به مثبت
بودن یک متغیر به نام Varعملیاتی اجرا شود .اگر مقدار این متغیر منفی باشد نمی
خواهیم که این عملیات اجرا شود .تکه کد زیر این عمل را به کمک دستور انتخابی if
انجام می دهد.
)if(condition
{
//Statement
}
16
در کد باال اگر conditionبرقرار باشد آنگاه دستورات statementاجرا خواهند شد.
در غیر این صورت دستورات داخل بالک ifاجرا نخواهند شد و ادامه ی اجرای برنامه
بعد از ifخواهد بود.
ifو else
گاهی اوقات نیاز داریم تا چند شرط مختلف را بررسی کنیم و در صورت برقرار بودن هر
کدام عمل مختلفی انجام شود .صورت کلی این دستور در زیر آمده است.
else
{
//statement 3
}
17
تعداد دستورات else ifمی تواند به دلخواه افزایش یابد.اگر شرط اول برقرار باشد،
دستورات بلوک اول ،اگر شرط دوم برقرار باشد ،دستورات بلوک دوم …،و در نهایت اگر
هیچ کدام از شرط ها برقرار نباشد ،دستورات بلوک elseاجرا خواهند شد.
مثال دیگر
18
دقت کنید که اگر بلوک دستورات ،ifشامل یک دستور باشد نیازی به گذاشتن آکوالدها
نیست.
تکه کد زیر را در نظر بگیرید .فرض کنید میخواهیم اگر مقدار متغیر aبرابر 1باشد،
مقدار bبرابر 10گردد و در غیر این صورت مقدار bبرابر -10گردد.
حلقه ها در C++
حلقه های شرطی
بر خالف دستور شرطی که شرط خود را تنها یک بار چک می کند و اگر برقرار باشد
دستورات بلوک خود را اجرا می کند ،حلقه های شرطی به این صورت عمل می کنند
که شرط داخل خود را بررسی می کنند و تا زمانی که شرطشان برقرار باشد دستورات
داخل بلوکشان اجرا خواهند شد .این حلقه ها از دو نوع هستند که در زیر به توضیح آن
ها می پردازیم.
while
تکه کد زیر را که صورت کلی این نوع حلقه است ،در نظر بگیرید.
)while(condition
{
//statement
}
عملکرد این حلقه شرطی به این صورت است :ابتدا شرط حلقه چک می شود ،اگر شرط
آن برقرار باشد داخل حلقه شده و دستورات آن اجرا می شود .بعد از اجرای دستورات
دوباره شرط حلقه چک می شود و اگر برقرار باشد باز هم داخل حلقه شده و دستورات
آن را اجرا می کند و این روند تا زمانی که شرط حلقه برقرار باشد ادامه می یابد .
do while
این نوع حلقه شرطی هم همانند حلقه شرط whileاست با این تفاوت که دستورات
داخل بلوک آن حداقل یک بار اجرا می شوند .برای درک این مسعله صورت کلی آن را
در نظر بگیرید.
20
{ do
//statement
;)} while(condition
همان طور که از صورت کلی این حلقه هم نمایان است ،زمانی که برنامه به این قسمت
می رسد وارد حلقه شده و دستورات را انجام می دهد و سپس شرط حلقه را چک می
کند .بنابراین واضح است که در این حالت دستورات حداقل یک بار اجرا می شوند .به
عالمت نقطه ویرگول( )semicolonبعد از پرانتز دقت کنید .این نقطه ویرگول اجباری
است و در صورت نگذاشتن آن با syntax errorمواجه می شوید.
مثال:
21
در کد اول چون شرط حلقه برقرار نیست بنابراین برنامه وارد حلقه نشده و هیچ چیزی
چاپ نمی کند .در کد دوم ابتدا وارد حلقه می شویم و چون مقدار iبرابر 0است پس
وارد بلوک ifشده و مقدار iبرابر -10می شود .بعد از چاپ شدن ،iشرط حلقه چک
می شود و چون برقرار است ،به اول بلوک حلقه بر می گردد .با کمی دقت مشاهده می
کنیم که در این حلقه اعداد -10تا -1چاپ می شوند و سپس از حلقه خارج می
شویم.
در زیر می توانید شکل کلی این نوع حلقه را مشاهده کنید.
(عمل افزایشی یا کاهشی ; شرط حلقه ; تعریف و مقداردهی متغیر های حلقه)for
{
//statement
}
نحوهی عملکرد حلقه شمارشی باال به این صورت است که ابتدا وارد قسمت تعریف
میشود و به متغیر ها مقدار می دهد.سپس شرط حلقه چک میشود و در صورت برقرار
بودن آن ،وارد حلقه شده و دستورات داخل آن را انجام میدهد.پس از اجرای دستورات
داخل حلقه به قسمت تغییر مقدار متغیرها(افزایش یا کاهش آن ها) رفته و پس از
اجرای این تغییرات ،دوباره شرط حلقه را چک میکند و در صورات برقرار بودن وارد
حلقه میشود .این کار آنقدر تکرار میشود تا شرط حلقه دیگر برقرار نباشد و از حلقه
خارج شویم.
دقت کنید که قسمت « تعریف و مقداردهی متغیر های حلقه » تنها یک بار اجرا
میشود.
23
پیاده سازی حلقه شمارش به کمک حلقه شط
شبه کد نشان داده شده در زیر نحوه ی پیاده سازی حلقه شمارشی به کمک حلقه
شرطی را نشان میدهد.
break
این دستور ،یکی از دستور های کنترلی است که در حلقه ها استفاده می شود(.این
دستور هم در حلقههای شمارشی استفاده میشود و هم درحلقههای شرطی) نحوهی
عملکرد این دستور به این صورت است که هرگاه در حلقهها به این دستور برسیم،
بالفاصله از حلقه خارج میشویم و ادامهی کار را از دستورات پس از حلقه پی میگیریم.
در واقع با گذاشتن این دستور در مکان مناسب در حلقه میتوانیم هر زمان که
خواستیم از حلقه خارج شویم و برای اتمام حلقه ،به انجام کل حلقه نیازی نباشد.
24
continue
دستور کنترلی دیگری که در حلقه کاربرد دارد ،دستور continueاست .نحوهی
عملکرد این دستور به این صورت است که هرگاه در طول اجرای حلقه به این دستور
رسیدیم ،ادامه ی برنامه از ابتدای حلقه پی گرفته میشود .به عبارت بهتر دستوراتی که
بعد از continueقرار دارند ،در صورت رسیدن به این دستور کنترلی اجرا نمیشوند.
در این حلقه مقدار اولیهی iبرابر 0است وطبق حلقه تا مقدار 20پیش میرود .اگر
اولین ifرا در نظر بگیریم ،مشاهده می شود ،تا زمانی که مقدار iاز 6کمتر است ،شرط
اول برقرار می شود و دستور continueاجرا می شود.طبق توضیحات باال به اول حلقه
باز میگردیم و مقدار iرا اضافه میکنیم .پس از تکرار این عمل و بعد از این که مقدار i
به 6رسید دیگر شرط اول برقرار نیست و مقدار 6چاپ میشود .چون شرط دوم هم
برقرار نیست پس این عمل آنقدر ادامه مییابد تامقدار iبه 13برسد.بعد از این حالت
شرط دوم برقرار شده ،و دستور breakاجرا می شود .پس از اجرای این دستور حلقه
تمام میشود .بنابراین در این حلقه اعداد 6تا 13چاپ میشوند.
25
مثال دیگر
در این کد آنقدر از ورودی ،داده میگیرد تا کاربر عدد -1را وارد کند .در این صورت از
حلقه خارج میشود.
تابع
تابع چیست؟
در برنامه نویسی میتوانیم از توابع استفاده کنیم تا هم به ساختار کد نظم ببخشند و هم
اینکه از تکرار کد جلوگیری کنیم .هنگامی که یک تابع تعریف میشود ما میتوانیم بدون
توجه به ساختار داخلی آن بارها از آن استفاده کنیم .در واقع میتوان به آن به عنوان
26
یک BlackBoxنگاه کرد که با دادن ورودی به آن از آن خروجی مورد نظر را انتظار
داشت .
تعریف تابع
برای تعریف تابع باید از قاعده زیر پیروی کرد
نوع خروجی : ReturnTypeدر اینجا نوع خروجی را انتخاب می کنیم که یکی ▪
از Typeهای c++است یا اگر می خواهیم تابع خروجی نداشته باشد از void
استفاده می کنیم
اسم تابع : NameOfFunctionنامی است که روی تابع میگذارید و ازین پس ▪
▪
;)return (ret_Value
27
استفاده میکنیم که بعد از اجرای آن مقدار خروجی بازگردانده میشود و اجرای تابع به
پایان میرسد اگر نوع خروجی voidباشد دستور:
; return
اجرای تابع را به پایان میرساند .
مثال
به عنوان مثال میخواهیم تابعی بنویسیم که جمع دو عدد را محاسبه کند