فصل ۲: متغیرها و انواع داده در C++
🎯 هدف این فصل
در پایان این فصل شما باید بتوانید:
- بفهمید متغیر چیست و چرا استفاده میشود.
- انواع دادههای اصلی در C++ را بشناسید.
- متغیرها را تعریف، مقداردهی و استفاده کنید.
- تبدیل نوع داده (Type Casting) را انجام دهید.
- با محدوده مقادیر (Range) هر نوع آشنا باشید.
۱. متغیر چیست؟
متغیر یک فضای حافظه در برنامه است که برای ذخیره یک مقدار استفاده میشود و با یک نام مشخص شناخته میشود.
📌 سه بخش مهم یک متغیر:
- نوع داده (Data Type) → مشخص میکند چه نوع اطلاعاتی میتواند ذخیره کند.
- نام متغیر (Variable Name) → برای دسترسی به آن.
- مقدار (Value) → دادهای که داخل متغیر ذخیره شده است.
مثال ساده:
#include <iostream>
using namespace std;
int main() {
int age = 25; // تعریف همزمان نام و مقدار
cout << "Age: " << age << endl;
return 0;
}
🔹 خروجی:
Age: 25
۲. قوانین نامگذاری متغیرها
- باید با یک حرف یا
_
شروع شود. - میتواند شامل حروف، اعداد و
_
باشد. - نمیتواند از کلمات کلیدی زبان (مثل
int
,if
,while
) استفاده کند. - حروف کوچک و بزرگ تفاوت دارند (
age
وAge
دو متغیر متفاوت هستند).
مثال نامهای معتبر:
int number, _count, price2;
مثال نامهای نامعتبر:
int 2ndNumber; // ❌ شروع با عدد
int float; // ❌ استفاده از کلمه کلیدی
۳. انواع دادههای پایه در C++
C++ چند نوع داده اصلی دارد:
نوع داده | توضیح | اندازه معمول (بایت) | محدوده تقریبی |
---|---|---|---|
int | عدد صحیح | 4 | -2,147,483,648 تا 2,147,483,647 |
float | عدد اعشاری (تکدقت) | 4 | ~ ±3.4E38 |
double | عدد اعشاری (دقت دو برابر) | 8 | ~ ±1.7E308 |
char | یک کاراکتر | 1 | 0 تا 255 یا -128 تا 127 |
bool | درست/غلط | 1 | true یا false |
string | رشته (متن) | متغیر | هر طولی |
📌 اندازهها ممکن است در سیستمهای مختلف متفاوت باشند.
مثال از استفاده:
#include <iostream>
#include <string>
using namespace std;
int main() {
int age = 30;
float weight = 65.5;
double height = 1.85;
char grade = 'A';
bool isStudent = true;
string name = "Ali";
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Weight: " << weight << endl;
cout << "Height: " << height << endl;
cout << "Grade: " << grade << endl;
cout << "Is Student: " << isStudent << endl; // true=1, false=0
return 0;
}
۴. مقداردهی متغیرها
سه راه برای مقداردهی:
int x = 10; // مستقیم
int y(20); // سینتکس قدیمی
int z{30}; // C++11: جلوگیری از از دست رفتن داده
۵. مقدار پیشفرض
متغیرهای محلی (داخل تابع) به طور پیشفرض مقداردهی نمیشوند و دارای مقادیر تصادفی هستند.
int x;
cout << x; // ❌ مقدار ناشناخته
📌 راه حل → همیشه مقدار اولیه بدهید.
۶. ثابتها (Constants)
برای ساخت متغیری که مقدارش تغییر نکند:
const double PI = 3.14159;
سعی در تغییر آن باعث خطا میشود.
۷. محدوده مقادیر دیتا تایپها
میتوان با sizeof
و <limits>
اندازه و محدوده را پیدا کرد:
#include <iostream>
#include <limits>
using namespace std;
int main() {
cout << "int size: " << sizeof(int) << " bytes\n";
cout << "int min: " << numeric_limits<int>::min() << endl;
cout << "int max: " << numeric_limits<int>::max() << endl;
}
۸. تبدیل نوع داده (Type Casting)
دو روش:
- ضمنی (Implicit) → خود زبان انجام میدهد:
int x = 5;
double y = x; // تبدیل از int به double
- صریح (Explicit) با Cast:
double pi = 3.14;
int n = (int)pi; // سبک C
int m = static_cast<int>(pi); // سبک مدرن C++
۹. نوع داده auto
(C++11)
خود کامپایلر نوع را تشخیص میدهد:
auto a = 42; // int
auto b = 3.14; // double
auto c = "Hi"; // const char*
۱۰. نکات و هشدارها
⚠ همیشه متغیر را قبل از استفاده مقداردهی کنید.
⚠ در محاسبات اعشاری از float
یا double
استفاده کنید.
⚠ برای کار با متن از std::string
استفاده کنید، نه char[]
(مگر در موارد خاص).
⚠ دقت کنید که تبدیل نوع ممکن است باعث از دست رفتن داده شود.
۱۱. اشتباهات رایج
- فراموش کردن مقدار اولیه:
int x;
cout << x; // ❌ خروجی تصادفی
- استفاده از نوع داده اشتباه:
bool b = 100; // ❌ تبدیل به true
- سرریز (Overflow):
int a = 2147483647;
a = a + 1; // ❌ مقدار منفی میشود
۱۲. تمرینها
تمرین ۱
متغیرهای name
، age
و salary
را تعریف کرده و از کاربر دریافت و چاپ کنید.
تمرین ۲
برنامهای بنویسید که شعاع دایره را بگیرد و محیط و مساحت را با const double PI
محاسبه کند.
تمرین ۳
اندازه (sizeof
) همه انواع داده پایه را چاپ کنید.
تمرین ۴ (چالش)
برنامهای که مسافت طیشده و زمان مصرفشده را بگیرد و سرعت متوسط را محاسبه کند (نوع داده مناسب انتخاب کنید).
۱۳. جمعبندی
- متغیرها برای ذخیرهسازی داده استفاده میشوند.
- انواع پایه شامل
int
,float
,double
,char
,bool
وstring
هستند. - همیشه مقدار اولیه بدهید.
- مراقب تبدیلهای نوع باشید.
- برای مقادیر ثابت از
const
استفاده کنید.