درود مهمان گرامی! ثبت نام


امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
[ اموزش ] اموزش ++C به صورت قدم به قدم و کاربردی
#1
In The Name Of God We Blieve

اول یک سری نکاتی رو راجع به اموزش بگم :

1 -این اموزش کاربردی هست ولی قسمت های تئوری هم توش داریم .

2 - واژه های انگلیسی پرکاربرد رو به همون شکل انگلیسیشون میگم چون از نظر خودم خیلی بهتره و بعدا که میخواین با یکی صحبت کنین راجع به یک چیزی یا مقاله ای چیزی بخونین بدردتون میخوره

3 - لطفا سوالاتتون رو تو قسمت سوالات بپرسین و اینجا تنها چیزی که میتونه برای من دلگرمی باشه تشکر های شما زیر هر پست هست نه پست هایی از قبیل : " مرسی ادامه بده ؛ خیلی خوب بود ممنون و .... "

4 - اموزش ها از پایه هست ولی در رابطه با برنامه نویسی با ++C هست نه اینکه ++C از کجا اومده و چه امکاناتی داره و از این قبیل صحبت ها ! ( مثل خیلی از اموزش های دیگه )

نکته ی دیگه ای اگه به ذهنم رسید در این پست درج میشه wink
resim
پاسخ
 سپاس شده توسط Majid ، Majid1889 ، mohamadi.sepehr ، arix ، a.f.h ، bagher2g ، Danger ، sepehrk ، crow`s clown
#2
یک قطعه کد مثل x = 5 به قدر کافی واضح است ، همونطور که حدس زدید ما داریم مقدار 5 رو به x میدیم ، اما x در واقع چیست ؟ x یک متغیر است

یک متغیر در ++C یک نام برای قطعه ای از حافظه است که میتواند برای ذخیره کردن اطلاعات استفاده شود ، همه ی کامپیوتر ها دارای حافظه ای به نام RAM هستند که برای برنامه ها برای استفاده اماده شده است ، وقتی یک متغیر تعریف میشود قطعه ای از این حافظه برای این متغیر کنار گذاشته میشود .

در این بخش ما فقط به متغیر از نوع integer میپردازیم ، یک متغیر integer ( به اختصار int ) یک عدد صحیح است ، مثل : 3 ، 2 ، 1 ، 0 ، 1- ، 2- ، 3- ، یک متغیر int نوعی متغیر است که فقط میتواند اعداد صحیح را در خود جای دهد .

حال به سراغ یک مثال برای تعریف یک متغیر به عنوان یک int میپردازیم
کد:
X=5
وقتی CPU این کد را اجرا کرد یک قسمت از RAM برای این متغیر کتر گذاشته میشود حال بیایید این قسمت کنار گذاشته شده را " بلوک 140 در حافظه " بنامیم ، هر وقط CPU به قطعه ای از کد که دارای متغیر x در ان است میرسد میداند برای یافتن مقدار x باید به بلوک 140 در حافظه نگاه بیندازد .

حال میخواهیم این مقدار را در برنامه نشان دهیم
کد:
cout << x;  //چاپ مقدار x ( بلوک 140 حافظه ) در کنسول
در ++C متغیر ها هچنین با اسم l-values ( خوانده شود el-values ) نشان داده میشوند که علتش این است که هنگام تعریف انها فقط میتوانند در سمت چپ تعریف شوند یعنی کد
کد:
5=x
اشتباه است

در مقابل r-values ، l-values قرار دارند که به هر مقداری که میتواند به یک l-value داده شود اشاره میکنند مانند اعداد ، متغیر ها و عبارات ( x+2 )

مثال :
کد:
int y;      // تعریف y به عنوان یک متغیر int  
y = 4;      // 4 برای y مقدار دهی میشود
y = 2 + 5;  // 2 + 5 که همان 7 است برای y مقدار دهی میشود

در اینجا باید دو چیزو توضیح بدم اونم اینکه هیچ ضمانتی برای اینکه متغیر ها هر دفعه که برنامه رو اجرا میکنید در یک بلوک حافظه ذخیر شود نیست !
دوم اینکه اگه شما یک متغیری رو تعریف کنید ولی مقدار ندید در بعضی از کامپایبر ها ( compiler ) با ارور مواجه میشید و در بعضی یک عدد عجیب قریب که هر دفعه معلوم نیست چی از اب در میاد !!
بهترین راه برای رهایی از این مشکل اینه که شما هر وقط یک متغیری رو تعرف کردید همونجا بهش مقدار هم بدید
کد:
int x = 0;
این به شما اطمینان میده که متغیر شما همیشه یک مقداری خواهد داشت و باعث ارور کامپایل نمیشود و همچنین دیباگ برنامه رو سرعت میبخشه .
یکی از کارایی که برنامه نویس های با تجربه انجام میدن اینه که مقدار دهی اولیه رو یک عدد غیر منطقی برای اون متغیر میزارند یعنی مثلا اگه شما یک متغیر برای تعداد گربه ها داشته باشین ، با این مقدار دهی :
کد:
int cats = -1;
داشتن 1- گربه غیرمنطقیست س اگر در ادامه داشته باشیم :
کد:
cout << cats << " cats" << endl;
میفهمیم که در مقدار دهی متغیر cats اشتباه کرده ایم ، در نتیجه :
قانون : همیشه هنگام تعریف متغیر انهارا مقدار دهی میکنیم

cin

cin در مقابل cout قرار داره یعنی همانطور که کار cout چاپ داده روی کنسول هست ، کار cin دریافت داده از کنسول میباشد حالا که با متغیر ها اشنا شدیم میتونیم از cin استفاده کنیم تا از کاربر ورودی بگیریم و در یک متغیر ذخیره کنیم :
کد:
#include <iostream>

int main()
{
    using namespace std;
    cout << "Enter a number: "; // ask user for a number
    int x;
    cin >> x;
    cout << "You entered " << x << endl;
    return 0;
}
هنگام کامپایل این کد برنامه عبارت “Enter a number: ” را چاپ میکند و صبر میکند تا شما یک عدد را وارد کنید ، بعد از اینکه عدد را وارد کردید دکمه ی Enter را فشار داده و برنامه عبارت "You Entered " و عددی که وارد کردید را چاپ میکند

اموزش اول به پایان رسید امیدوارم استفاده کرده باشید
تا درودی دیگر بدرود
resim
پاسخ
 سپاس شده توسط bagher2g ، Majid1889 ، Majid ، Danger ، ALI_KA1
#3
میگم اگه میخای آموزش بسازی توش یه چیزای جدیدی یاد بده تا مثل بقیه آموزش ها نباشه
تو همه آموزشها اول متغیر هارو یاد میدن بعد if , else , while ,for بعد آرایه ها بعد تابع ها.
و تابع ها رو که درس دادن آموزش تموم میشه!
من زیاد برنامه نویسی کار نکردم ولی تا جایی که میدونم ++c خیلی گسترده تر از اینا هست و چیزای دیگه ای هم داره
پاسخ
#4
(28/8/1392، 04:31 عصر)BlacksuN137 نوشته است: میگم اگه میخای آموزش بسازی توش یه چیزای جدیدی یاد بده تا مثل بقیه آموزش ها نباشه
تو همه آموزشها اول متغیر هارو یاد میدن بعد if , else , while ,for بعد آرایه ها بعد تابع ها.
و تابع ها رو که درس دادن آموزش تموم میشه!
من زیاد برنامه نویسی کار نکردم ولی تا جایی که میدونم ++c خیلی گسترده تر از اینا هست و چیزای دیگه ای هم داره
اتفاقا به نظرم کارش درسته ...
یعنی کار همه درسته !
چون که ما توی فروم بازیسازی ُ برنامه نویسی رو برای کمک به برنامه نویسی بازی هامون یاد میگیریم
باهات شرط میبندم که توی بازیهات اصلا به پوینتر و کلاس و بقیه ی چیزها احتیاج پیدا نخواهی کرد !

ما هم بــــــــــله !

resim
پاسخ
 سپاس شده توسط mohamadi.sepehr ، bagher2g
#5
خیلی تشکر ها بالاست دلگرم میشه ادم :دی

در پاسخ به blacksun باید بگم که مجید درست میگه teeth
resim
پاسخ
 سپاس شده توسط ALI_KA1
#6
In The Name Of The God That We Believe In

نگاهی به فانکشن ها


یک فانکشن یک قطعه کد است که برای انجام کاری از پیش تعیین شده نوشته شده است ، همانطور که میدانید هر برنامه برای اینکه اجرا شود نیاز به فانکشنی به اسم main() دارد به هر حال هر برنامه ای دارای فانکشن های زیادی هست که همانند main() عمل میکنند.

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

برنامه های ++C هم به همین صورت کار میکنند ، یک برنامه وقتی به یک فانکشن برخورد میکند به پردازش کد های درون یک فانکشن میپردازد ، یک function call یک عبارت است که به CPU میفهماند کار یک فانکشن را قطع و به پردازش یک فانکشن دیگر بپردازد در این هنگام CPU ان قسمتی را که در فانکشن در خال پردازش است را به خاطر میسپارد و به پردازش فانکشن صدا زده شده میپردازد وقتی فانکشن دوم به طور کامل پردازش شد CPU دوباره به قسمتی که به حافظه سپرده بر میگردد و سپس کار خود را انجام میدهد .

اینک به مثال درباره ی چگونگی صدا زدن و تعریف یک فانکشن میپردازیم :
کد:
//#include <stdafx.h> // Visual Studio users need to uncomment this line
#include <iostream>

// Declaration of function DoPrint()
void DoPrint()
{
    using namespace std;  // we need this in each function that uses cout and endl
    cout << "In DoPrint()" << endl;
}

// Declaration of main()
int main()
{
    using namespace std;  // we need this in each function that uses cout and endl
    cout << "Starting main()" << endl;
    DoPrint(); // This is a function call to DoPrint()
    cout << "Ending main()" << endl;
    return 0;
}
این برنامه خروجی زیر را دارا میباشد :

Starting main()
In DoPrint()
Ending main()


این برنامه شروع به پردازش از بالای main() میکند و اولین خط برای نمایش Starting Main() میباشد ، خط دوم برای پردازش یک فانکشن به اسم DoPrint() میباشد که در اینجا CPU ابتدا به پردازش DoPrint میپردازد ، که اولین ( و تنها ) خط برای پردازش و نمایش در این قسمت In DoPrint() میباشد ، وقتی کار پردازش DoPrint() به اتمام رسید ، CPU دوباره پردازش Main() را از اولین خط بعد از DoPrint() از سر میگیرد ، همانطور که واضح است بقیه کد به نمایش Ending Main() میپردازد .

فانکشن ها میتوانند به طور مکرر استفاده شوند :
کد:
//#include <stdafx.h> // Visual Studio users need to uncomment this line
#include <iostream>

// Declaration of function DoPrint()
void DoPrint()
{
    using namespace std;
    cout << "In DoPrint()" << endl;
}

// Declaration of main()
int main()
{
    using namespace std;
    cout << "Starting main()" << endl;
    DoPrint(); // This is a function call to DoPrint()
    DoPrint(); // This is a function call to DoPrint()
    DoPrint(); // This is a function call to DoPrint()
    cout << "Ending main()" << end
    return 0;
}

این برنامه خروجی زیر را به نمایش میگذارد :

Starting main()
In DoPrint()
In DoPrint()
In DoPrint()
Ending main()

این برنامه در 3 جا کار main() را قطع میکند ، هر دفعه برای هر بار صدا زدن DoPrint()

main() تنها فانکشنی نیست که میتواند بقیه فانکشن هارا صدا بزند ، در مثال زیر میبینید که DoPrint() به فانکشن دیگر یعنی DoPrint2() را صدا میزند .
کد:
//#include <stdafx.h> // Visual Studio users need to uncomment this line
#include <iostream>

void DoPrint2()
{
    using namespace std;
    cout << "In DoPrint2()" << endl;
}

// Declaration of function DoPrint()
void DoPrint()
{
    using namespace std;
    cout << "Starting DoPrint()" << endl;
    DoPrint2(); // This is a function call to DoPrint2()
    DoPrint2(); // This is a function call to DoPrint2()
    cout << "Ending DoPrint()" << endl;
}

// Declaration of main()
int main()
{
    using namespace std;
    cout << "Starting main()" << endl;
    DoPrint(); // This is a function call to DoPrint()
    cout << "Ending main()" << endl;
    return 0;
}
این برنامه خروجی زیر را به نمایش میگزارد :

Starting main()
Starting DoPrint()
In DoPrint2()
In DoPrint2()
Ending DoPrint()
Ending main()

اموزش دوم ( بخش 1 ) به پایان رسید امیدوارم استفاده کرده باشید
تا درودی دیگر بدرود
resim
پاسخ
 سپاس شده توسط Majid1889 ، Majid ، ALI_KA1
#7
تابع رو خیلی پیچیده آموزش دادی ولی بازم دستت درد نکنه

راستی به نظرم نیازی به نوشتن using namespace std; در همه ی توابع نیست

بعد از #include ها یکبار بنویسی کفایت میکنه

ما هم بــــــــــله !

resim
پاسخ
#8
درسته ولی من اینجوری راحت ترم :دی کجاش پیچیدست ؟
resim
پاسخ
 سپاس شده توسط ALI_KA1
#9
تشکر از زحمتهایی که میکشی اموزنده است
من میخوام برنامه گیم درست کردن رو یاد بگیرم
اگه میشه تشکر
پاسخ
 سپاس شده توسط ALI_KA1




کاربرانِ درحال بازدید از این موضوع: 1 مهمان