View Full Version : دورهی آموزشی ++C
SAM FISHER
11 February 2008, 04:41 PM
:icon_surpمدتی بود که تو فکر راهاندازی چنین تاپیکی بودم:icon_surp
از این پس آموزش زبان برنامه نویسی C++ رو این تاپیک قرار میدهم
امیدوارم مفید باشد
هچنین میتوانید سوالات خودتون رو در همین تاپیک اعلام کنید تا در اسرع وقت پاسخ داده بشه
در پست بعدی اولین جلسه آموزشی ما آغاز خواهد شد
SAM FISHER
11 February 2008, 05:19 PM
C++ چیست؟
همانطور که میدانید کامپیوتر فقط قابلیت فهم زبان 0و1 را داراست. پس ما فقط میتوانیم از طریق صفر یک با آن رابطه برقرار کنیم. در گذشته های دور و در اوایل ساخت این ماشین پیچیده یعنی کامپیوتر نیز از صفر و یک برای بکار گرفتن آن استفاده میشد. اما این روش بسیار وقت گیر بوده و همچنین فقط عدهی کمی از افراد قادر به استفاده از آن بودهاند.
پس از مدتی برای سهولت در کار برنامه نویسی برای کامپیوتر زبان جدیدی به نام اسمبلی ابداع شد که کار را بسیار ساده تر کرده بود ولی باز هم معایب بزرگی داشت که مهم ترین آن ها نا مفهوم بودن دستورات آن برای انسان بود.
انسان ها همواره بدنبال زبانی بودند که دستورات آن به زبان انسان ها شباهت بیشتری داشته و فراگیری آن نیز آسان تر باشد و این باعث شد که انسان ها زبان های سطح بالا را بوجود آورند. از جمله این زبان ها Basic نام داشت که واقعا ساختاری روان داشته و فراگیری آن بسیار ساده تر و سریع تر از اسمبلی بود. از دیگر زبان های سطح بالا میتوان به Pascal و فرترن اشاره نمود.
در سال 1970 در آزمایشگاهی به نام بل زبانی ایجاد شد که c نام گرفت. دستورات این زبان بر خلاف زبان های سطح بالای قبلی به طور کامل به زبان انسانی شبیه نبود بلکه در آن امکان استفاده از فرمان ها و دستوراتی بسیار شبیه به زبان های سطح پایین(صفر و یک و اسمبلی) وجود داشت، این قابلیت باعث میشد که ما بتوانیم برنامه های سیستمی و بسیار سریعی ایجاد کنیم که از عهده زبان های سطح بالا بر نمیآمد. در واقع ما در زبان c هم سرعت بالا و همچنین قدرت نوشتن برنامه های سیستمی را همراه با زبان شبیه به زبان انسان ها در اختیار داشتیم که این باعث شد که به C یک زبان ((سطح میانی)) گفته شود.
زبان ++C که از نسل C میباشد ، تمام توانایی های زبان C را با قابلیت شی گرایی همراه دارد. در دروس مربوط به شی گرایی در این باره بیشتر سخن خواهیم گفت.
پس از ++C زبان #C (بخوانید سی شارپ) پا به عرصه گذاشت. این زبان جدید در زمینه شی گرایی پیشرفت های بسیاری کرده است و این موضوع سبب پیچیدگی آن شده است. ولی برای یادگیری راحت تر آن شما میبایست ابتدا ++C را فرا گیرید. در واقع کلید ورود به #C در میان کد های ++C نهفته است.
EbliiS
11 February 2008, 11:54 PM
به نظر من سوالاتي كه مربوط به اين درسها ميشه در همين تاپيك و سوالات كلي ++C را در تاپيك ديگر ايجاد نماييد.
متشكرم.
farzad-sany
21 February 2008, 10:01 PM
با تشكر از شما دوست عزيز منتظريم.
PAYAM
22 February 2008, 01:37 AM
باتشکر از دوست عزیزمون جناب Esperto ، تاپیک گفتگوی مهم شد.
SAM FISHER
22 February 2008, 07:24 PM
با سلام خدمت دوستان عزیز.
ببخشید اگر دیر شد. آموزش 2 رو در پست بعدی میذارم.:icon_cool
SAM FISHER
24 February 2008, 02:49 PM
به نام خدا
جلسهی دوم آموزش ++C
همانطور که گفته شد زبان های برنامه نویسی برای ارتباط با کامپیوتر بکار میروند. حالا ما اطلاعات کافی برای شروع را داریم.
اما قبل از شروع باید این نکته رو هم ذکر کرد که هیچ زبان برنامه نویسی به خودی خود (به جیز صفر و یک) نمیتواند برنامه ای ایجاد کند مانند ساخت یک ساختمان که حتی با وجود بهترین مصالح بازهم باید کارگری وجود داشته باشد تا این مواد اولیه را به ساختمان تبدیل کند.
این کار در کامپیوتر به عهدهی کامپایلر میباشد. کامپایلر دستورات نوشته شده توسط ما را به زبان 0 و 1 تبدیل می کند. هر زبان برنامه نویسی هم به کامپایلر مخصوص خود احتیاج دارد. در ++C نیز همینطور.
کامپایلر های مختلفی برای ++C در بازار وجود دارد که از معروف ترین و بهترین آن ها میتوان به Visual C++ 6.0 و Borland C++ 4.0 اشاره کرد که بسیار سریع بوده و سازگار با محیط ویندوز نیز هستند. همچنین کامپایلری به نام Dev C++ Bloodshed وجود دارد که کار با آن نیز ساده و تحت ویندوز میباشد. من در پست بعدی لینک دانلود این کامپایلر را قرار میدهم.
کامپایلر های تحت داس نیز موجود اند ولی متاسفانه نمیتوان بوسیلهی آن ها برنامه های مخصوص ویندوز را کامپایل کرد.
farzad-sany
24 February 2008, 04:26 PM
ممنون از شما لطفا ميشه كتابي در اين زمينه معرفي كنيد ..
EbliiS
24 February 2008, 08:11 PM
ممنون از شما لطفا ميشه كتابي در اين زمينه معرفي كنيد ..
كتاب فارسي ميخوايد يا انگليسي؟
farzad-sany
24 February 2008, 08:16 PM
فرقي نميكنه ........ فقط خود آموز باشه و اگه انگليسي شو معرفي ميكنيد در بازار ايران افست اون موجود باشه.
ممنون
عرفنا
25 February 2008, 12:37 AM
فرقي نميكنه ........ فقط خود آموز باشه و اگه انگليسي شو معرفي ميكنيد در بازار ايران افست اون موجود باشه.
ممنون
دوست عزیز اگر کتاب ترجمه و در دسترس می خواید به نظر من بهترین انتخاب c++ how to program نوشته ی deitel است.
اما اگر کتاب انگلیسی بخواید من کتاب C++ primer plus مال انتشارات sams رو پیشنهاد می کنم و به جرات می گم کتاب به این خوبی در مورد c++ ندیدم :icon_cool (متاسفانه من افست اون رو در ایران ندیدم اما ارزش داره اگر می تونید سفارش بدید تا براتون بیارن)
مورد دیگه هم اینکه به نظر من به هیچ عنوان کتاب هایی که به هر صورت به مهندس جعفرنژاد قمی مربوط می شه رو انتخاب نکنید :icon_mad:
موفق باشید :icon_excl
EbliiS
25 February 2008, 01:44 AM
با تاييد صحبتهاي جناب عرفنا شما چرا مشكل آفست داري؟PDF شو دانلود كن پرينت كن،اگه هم خواستي خوشگل بشه ببر صحافيشم كن،خيلي ارزونتر برات در مياد تا اينكه بخاي سفارش بديhttp://asefsoft.com/qsimages/157.gif
فقط جعفرنژاد قمی نخـــر !!!
epsi1on
25 February 2008, 02:24 AM
با سلام!
با تاييد صحبتهاي جناب عرفنا شما چرا مشكل آفست داري؟PDF شو دانلود كن پرينت كن،اگه هم خواستي خوشگل بشه ببر صحافيشم كن،خيلي ارزونتر برات در مياد تا اينكه بخاي سفارش بديhttp://asefsoft.com/qsimages/157.gif
فقط جعفرنژاد قمی نخـــر !!!
یعنی این قد افتضاحه؟
من که کتاب c شو داشتم (البته برای سال 74ش) چیز بدی نبود...
-----------------------
اینهم لیستی از کتابهای الکترونیکیی در مورد cpp که به نظر میاد مشکل شما رو برطرف کنه:
C (http://www.flazx.com/category2.php)++ (http://www.flazx.com/category2.php)
Visual cpp (http://www.flazx.com/category73.php)
Visual cpp.net (http://www.flazx.com/category126.php)
فرقي نميكنه ........ فقط خود آموز باشه شاید من منظور شما رو درست نفهمیده باشم...!
همه کتابهای آموزشی باید خودآموز باشند دیگه.نه؟
----------------------
این کتاب ظاهرش خیلی شبیه کتاب مورد علاقه من در مورد c هست اگه ناشر یا نویسندش همون باشن فکر کنم برای شما ارزش دانلود رو داشته باشه....:
http://ecx.images-amazon.com/images/I/61T8TMRB0AL._AA240_.jpg
http://rapidshare.com/files/56040949/0131857576.zip
X_Man
25 February 2008, 12:43 PM
کسی یه Ebook خوب از Deitel (http://www.amazon.com/s/ref=nb_ss_gw/102-3094133-2526530?url=search-alias%3Daps&field-keywords=c%2B%2B+deitel&x=0&y=0)سراغ نداره؟
EbliiS
25 February 2008, 02:02 PM
کسی یه Ebook خوب از Deitel (http://www.amazon.com/s/ref=nb_ss_gw/102-3094133-2526530?url=search-alias%3Daps&field-keywords=c%2B%2B+deitel&x=0&y=0)سراغ نداره؟
در پست قبلي دوست خوبمون گذاشتند كه :
http://ecx.images-amazon.com/images/I/61T8TMRB0AL._AA240_.jpg
http://rapidshare.com/files/56040949/0131857576.zip
X_Man
25 February 2008, 04:59 PM
در پست قبلي دوست خوبمون گذاشتند كه :
ایشون این ورژن رو گذاشتند:
C++ How to Program, 5/e
©2005
http://www.prenhall.com/deitel/images/CppHTP5e.gif (http://www.prenhall.com/academic/product?ISBN=0131857576)
اما این ورژن مال سال 2007 هستش:
C++ How to Program, 6/e
©2008
http://www.prenhall.com/deitel/images/cppHtp6e.gif (http://vig.prenhall.com/catalog/academic/product?ISBN=0136152503)
گفتم ببینم کسی این رو داره؟
SAM FISHER
25 February 2008, 05:41 PM
کتاب دایتل کتاب های خوب و مفیدی هستن. من 2005 (اولی) رو به طور کامل مطالعه کردم.کتاب های مهندس عین الله جعفر نژاد قمی هم کتاب های مفیدی هستند که من به شخصه بسیار استفاده کردم.
farzad-sany
25 February 2008, 08:50 PM
دوستان داره تاپيك خوبي ميشه .. من خودم كمي C كار كردم ( در مورد برنامه نويسي ميكروكنترولر ها ) .و حالا
يه سوال اينكه فرق بين C و ++C چي هستش ؟
آموزش رو كي شروع ميكنيد ؟؟
عرفنا
25 February 2008, 10:48 PM
دوستان داره تاپيك خوبي ميشه .. من خودم كمي C كار كردم ( در مورد برنامه نويسي ميكروكنترولر ها ) .و حالا
يه سوال اينكه فرق بين C و ++C چي هستش ؟
آموزش رو كي شروع ميكنيد ؟؟
تفاوت اصلی سر شیء گرایی (object orientation) است که بالاترین سطح داده ای در C ساختمان ها هستند و در C++ بحث کلاس ها،وراثت و ... مطرح می شه :icon_cool
احتمالا اساتید کامل تر بتونن توضیح بدند :icon_excl
EbliiS
25 February 2008, 11:26 PM
ایشون این ورژن رو گذاشتند:
C++ How to Program, 5/e
©2005
http://www.prenhall.com/deitel/images/CppHTP5e.gif (http://www.prenhall.com/academic/product?ISBN=0131857576)
اما این ورژن مال سال 2007 هستش:
C++ How to Program, 6/e
©2008
http://www.prenhall.com/deitel/images/cppHtp6e.gif (http://vig.prenhall.com/catalog/academic/product?ISBN=0136152503)
گفتم ببینم کسی این رو داره؟
اينها ورژن نيستن،edition هستند.الان تو نت همه جا همين اديشن 5 هست.اديشن 6 نسبت به 5 فرق زيادي نكرده.هر اديشن يك تعداد چاپي داره و وقتي تقاضا بيشتر ميشه اديشن بعدي مياد.من خودم اديشن 4ام اين كتاب را خوندم،زياد سخت نگيريد.:icon_cool
XredMan
9 March 2008, 03:21 AM
سلام به دوستان
کسی PDF کتاب زبان برنامه نویسی C
نویسندگان : برایان کرنیگان، دنیس ریچی
مترجم : حسین ابراهیم زاده قلزم
نداره ؟
EbliiS
9 March 2008, 01:31 PM
سلام به دوستان
کسی PDF کتاب زبان برنامه نویسی C
نویسندگان : برایان کرنیگان، دنیس ریچی
مترجم : حسین ابراهیم زاده قلزم
نداره ؟
نسخه خلاصه شده انگليسي رو از اينجا (http://flp.cs.tu-berlin.de/%7Eww/fhtw/ai/prgm1/dokumente/bwk-tutor.pdf) ميتونيد بگيريد.ترجمه شدش هم به قيمت 5500 از كتاب فروشي ها ميتونيد بخريد.(ترجمه شدش تو اينترنت نيست.)
X_Man
9 March 2008, 10:26 PM
من کتاب#C لازم دارم.
ممنون میشم یه Ebook خوب از #C معرفی کنید با لینک دانلود.
epsi1on
9 March 2008, 11:08 PM
با سلام!
من کتاب#C لازم دارم.
ممنون میشم یه Ebook خوب از #C معرفی کنید با لینک دانلود.
من این ebook (http://www.parsaspace.com/mohsennowruzi/ebook/csharpfarsi/LearnVisualCsharpFarsi.pdf) فارسی رو دیدم و از فهرستش چیز خوبی به نظر میاد.
اگر هم انگلیسی میخواید که من هیچکدومو مطالعه نکردم...!
کسی PDF کتاب زبان برنامه نویسی C
نویسندگان : برایان کرنیگان، دنیس ریچی
مترجم : حسین ابراهیم زاده قلزماگر شما هم مشکل من رو دارید و بعضی وقتها حوصله از خونه بیرون رفتن(دیگه چه برسه برای کاری غیر از تفریح باشه) رو ندارید، برای خرید اینترنتی کتاب فارسی من سایت http://www.adinebook.com/ رو بهتون پیشنهاد میکنم....
EbliiS
9 March 2008, 11:13 PM
من کتاب#C لازم دارم.
ممنون میشم یه Ebook خوب از #C معرفی کنید با لینک دانلود.
C# 3.0 (http://rapidshare.com/files/91070273/OReilly.C.Sharp.3.0.Cookbook.3rd.Edition.Jan.2008. eBook-BBL.rar) از انتشارات خوب O'Reilly خدمت شما.
http://pixhost.eu/avaxhome/avaxhome/2008-02-10/51ZmNHK2BBuHL.jpg_.jpg
farzad-sany
9 March 2008, 11:28 PM
آقا اسم تاپيك چي بود.............. :icon_razz
X_Man
10 March 2008, 12:27 AM
>>>دریافت کتاب مقدمه ای بر زیان سی شارپ نوشته وحید نصیری به صورت PDF (http://ace-tju.ir/dl/pdf/cs/csinfo1.pdf) <<<
>>>دریافت بررسی تخصصی 5 تغییر آخرین نگارش سی شارپ به صورت PDF (http://ace-tju.ir/dl/pdf/cs/csinfo2.pdf) <<<
منبع: انجمن علمی مهندسی کامپیوتر تهران جنوب (http://ace-tju.ir/dl/pdf/cs/)
faezeh_67
10 March 2008, 09:02 AM
ببخشید اینجا ظاهرا قرار بود تاپیکی برای اموزش ++c باشه اما انگار دوستان یادشون رفته......
نکنید این کارو خوب ما اینهمه وقت می ذاریم می یایم تو تاپیک تمام پستها رو می خونیم که یه چیزی حالیمون بشه اما همه چیز می بینیم جز آموزش.....
مرسی
EbliiS
10 March 2008, 11:39 AM
نکنید این کارو خوب ما اینهمه وقت می ذاریم می یایم تو تاپیک تمام پستها رو می خونیم که یه چیزی حالیمون بشه اما همه چیز می بینیم جز آموزش.....
دوست عزيز اين كتابهايي هم كه ما ميذاريم جزء آموزشه ديگه،فعلا كسي كه پيشنهاد اينكار را داده نيست.حالا براي بقيه خيلي فرق داره كه مطالب آموزشي را به صورت پست به پست در تاپيك ياد بگيرنده يا به صورت يك فايل كامل آموزشي PDF داشته باشند؟!
X_Man
18 March 2008, 04:03 AM
C# 3.0 (http://rapidshare.com/files/91070273/OReilly.C.Sharp.3.0.Cookbook.3rd.Edition.Jan.2008. eBook-BBL.rar) از انتشارات خوب O'Reilly خدمت شما.
http://pixhost.eu/avaxhome/avaxhome/2008-02-10/51ZmNHK2BBuHL.jpg_.jpg
خودتون این رو دانلود کردید؟ سالم بود؟
EbliiS
18 March 2008, 09:45 PM
خودتون این رو دانلود کردید؟ سالم بود؟الان ديدم مشكل داره،اين لينك مستقيم (http://debian.yaako.org/ebook/O%27Reilly%20-%20Programming%20C%23%202nd.zip) 2nd editionخدمت شما،اينم يك كالكشن بوك از C#:icon_cool (http://muebook.blogspot.com/2008/01/collection-of-ebooks-in-c.html)
SAM FISHER
18 March 2008, 10:44 PM
به نام خدا
با عرض معذرت اين چند وقته به دليل مشكلاتي كه براي كامپيوترم بوجود آمده بود نتونستم آپ بشم ولي از امروز دیگر وارد ماجرای زبان ++C میشویم و اول از همه با ساختار برنامه نویسی آشنا خواهیم شد. هر برنامه ای به زبان سی یک سری آداب و رسوم دارد که باید به جا آورده شود و گرنه آن برنامه نویسی قبول نمی باشد!
اصولا برنامه های زبان سی از چهار قسمت عمده تشکیل میشوند که ترتیب عبارت اند از :
قسمت "دستورات پیش پردازنده"
قسمت " پیش تعریف توابع و متغیر های گلوبال"
قسمت "تابع اصلی"
قسمت "بدنه توابع"
دقیقا همین قسمت ها در زبان C++ ( بخوانید سی پلاس پلاس! - مترجم!) هم مورد استفاده هستند منتها با اندکی تغییرات که بعدا سر وقتش توضیح میدهم.
امروز قرار است با هم کاملا این قسمتها با هم مرور میکنیم و از دفعه بعد هم رسما شروع میکنیم به برنامه نویسی و تا زمانی هم که توی برنامه نویسی کولاک نکرده باشیم بی خیال قضیه نخواهیم شد!!
* * *
ما چون همیشه عادت داریم "خرق عادت" بکنیم، اول از سوم شروع میکنیم!
یعنی از قسمت " تابع اصلی":
البته این کار ما خیلی هم بی دلیل نیست چون اگر ما هر کدام از سه قسمت دیگر را نداشته باشیم، برنامه ما ممکن است کار بکند، اما همچین که این قسمت را نداشته باشیم، انگاری که اصلا برنامه ای ننوشته ایم!!
آداب و رسوم این قسمت به این ترتیب میباشد:
int main()
{
......
......
return 0;
}
جای سه نقطه باید دستورات زبان سی بنویسیم، مثلا اگر بخواهیم دو تا عدد از "کاربر" گرفته و میانگین آنها را حساب کنیم برنامه ما اینشکلکی خواهد شد:
int main()
{
int a,b;
cin>>a>>b;
cout<<(a+b)/2;
return 0;
}
خوب همانطور که ملاحظه میفرمایید، ما در انتهای هر دستور باید یک دانه"؛" بگذاریم ( بخوانید "سیمی کالن" یا " نقطه ویرگول") ما در "تابع" main یا تابع اصلی میتوانیم کامپیوتر را به ملغ زدن هم وادار کنیم، منتها بعد از دستور ملغ زدن هم باید باز از "؛" استفاده کنیم. استثنا ندارد!
حالا این ها که اینجا نوشته ایم چه معنی میدهد را بعدا یاد میگیریم، فعلا داستان این است که ببینیم چی به چی هست.... در حقیقت امروز فقط عملیات شناسایی داریم، حمله اصلی میماند برای بعدا!!
* * *
حالا دوم میرویم سراغ اول!
قسمت بعدی قسمت پیشپردازنده ها است.
برای اینکه بتوانیم از برخی از دستورات و "توابع" استفاده کنیم باید یک چیزهایی را بالای برنامه مان بنویسیم. این دستورات در حقیقت به کامپایلر بیچاره کمک میکنند تا بتواند دستورات ما را برای کامپیوتر ترجمه بکند.
هر دستوری که ما مینویسیم، مثلا فرض کنیم همین دستور cin یا cout که ما برای دریافت اطلاعات از کاربر و یا نشان دادن اطلاعات به او به کار می بریم، همیجوری قابل قبول نیست. برای استفاده از این دستورات باید این عبارت را بالای برنامه بنویسیم:
#include <iostream.h>
در حقیقت نحوه ترجمه شدن دستور cin و cout توی یک فایل به نام iostream.h ذخیره شده است، ما با نوشتن عبارت فوق، فایل مذکور را به برنامه خودمان اضافه میکنیم و از دستوراتی که توی آن تعریف شده است استفاده میفرماییم!
یک مثال دیگر میزنم، مثلا دستور sin یا tan که دستورات مثلثاتی سینوس و تانژانت هستند توی فایل math.h تعریف شده اند و برای استفاده از این دستورات (و یک دوجین دستور ریاضی دیگر!) باید این فایل را به برنامه خودمان اینکلود(!) کنیم ( همان یعنی اضافه بفرماییم!)
این یک لیست از "هدر فایل" های به درد بخور هست:
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
در این قسمت همچنین میتوانیم از "ماکرو" ها هم استفاده کنیم، به دستور پیش پردازنده زیر توجه کنید:
#define W 640
#define H 480
این دو دستور یعنی اینکه، پیش از کامپایل شدن برنامه، هر جا W دیدی، جای آن را با 640 عوض کن و هر جا هم H دیدی، جای آن را با 480 عوض کن.
از اینجا معلوم میشود که چرا به دستوراتی که با # (بخوانید شارپ ساین) شروع میشود، میگویند دستورات پیش پردازنده. چون اینها قبل از کامپایل شدن، یا همان به زبان ماشین ترجمه شدن، اجرا میشوند، و بعد از آن فایل حاصل به زبان ماشین ترجمه میشود.
یک نکته دیگر هم وجود دارد که این دستورات به "؛" نیازی ندارند. سوتی ندهید ها!
* * *
قسمتهای بعدی قسمت "پیش تعریف توابع و متغیر های گلوبال" و قسمت " بدنه توابع" است
دیگر خودم هم قاطی کردم که چندم داریم میرویم سراغ چندم! ... ولش کن!
این دو قسمت ربط کاملی با هم دارند و عملا تا پیش از درس دادن "توابع" استفاده زیادی از این دو تا نداریم. به صورت خلاصه باید بگویم که ما خودمان هم میتوانیم یک سری تابع یا دستور بسازیم و هم خودمان استفاده کنیم و هم بدهیم دوستان و آشنایان بهرهمند شوند!
جای نوشتن این توابه در این دو جا است، اول باید آنها را معرفی کنیم و بعد باید بدنه آنها را بنویسیم. چون دیگر دارد پیچیده میشود و قیافه های شما هم بعد از یاد گرفتن این همه چیز دیگر دیدنی شده، فلذا من به شما رحم میکنم و دیگر ادامه نمیدهم!!
SAM FISHER
19 March 2008, 02:40 PM
به نام خدا
آشنایی با متغیر های زبان سی پلاس پلاس
مفهوم متغیر یکی از مهمترین مفاهیم در زبانهای برنامه سازی است و اصلا هم چیز سختی نیست نگران نباشید. تا آخر این مطلب را که بخوانید عینهو آب خوردن غال غضیه کنده میشود میرود پی کارش!
* * *
همانطور که میدانید، RAM کامپیوتر به خانه هایی به نام "بیت" تقسیم شده و هر 8 بیت را هم به نام "بایت" نامگذاری کرده اند. بایت کوچکترین قطعه از حافظه است که میتوان به آن دست رسی داشت. یعنی برای هر بایت یک آدرس وجود دارد که CPU آن را صدا کرده و از محتوای آن استفاده میفرماید.
هر بیت میتواند محتوای 0 تا 1 باشد. یعنی دو حالت بیشتر ندارد. حالا وقتی 8 تا از اینها را کنار هم قرار دهیم میبینیم که یک بایت میتواند بین 00000000 تا 11111111 را در خود ذخیره کند. این یعنی 256 حالت مختلف.
اعداد در کامپیوتر بر مبنای دو ذخیره میشوند. همه شما احتمالا اعداد مبنای 2 را به خاطر می آورید ( اگر هم نمی آورید یه نیمچه مطالعه بفرمایید چون خوب است!) در مبنای دو، ما دو تا رقم بیشتر نداشتیم، 0 و 1 ( همانطور که در مبنای 10، 10 تا رقم داریم، 0 تا 9)
برای اینکه کمی بیشتر یاد مبنای دو بیفتیم:
عدد در مبنای 16 (هگزا دسیمال)
عدد در مبنای 2 (باینری)
عدد معمولی مبنای 10 خودمان
همانطور که در جدول بالا نیز مشاهده میفرمایید ما یک گونه دیگر از مبنا های مفید، غیر از دو و ده هم داشته ایم که تا به حال از شما پنهان نگه داشته شده و آن هم مبنای 16 یا هگزادسیمال بوده است!
و البته خوب، خیلی هم فعلا مهم نمیباشد!!!
همانطور که میبینید، عدد های گنده-گنده باید در دو یا سه باید جا شوند و در یک باید جا نمیشوند. برای همین زبان سی از انواع داده های مختلفی پشتیبانی میکند تا تکلیف عدد های قلمبه-سلمبه را نیز مشخص کرده باشد. همه این جنگولک بازی ها برای این است که ما بتوانیم یک عدد را در حافظه ذخیره کنیم و بعد دوباره بازیابی بکنیم.
متغيير ها انواع مختلفي دارند كه مهم ترين اونها شامل int,bool,char,float,double,long,unsigned int هستن كه هر كدم مقدار خاصي رو ذخيره ميكنن كه در پست بعدي به طور كامل مقدارشون رو معرفي ميكنم.
خوب اصلا چه طوری از این ها استفاده کنیم؟
در زبان سی قبل از استفاده کردن از یک متغیر باید نوع آن را به سیستم اعلام کنیم و اصطلاحا آن را تعریف کنیم.
برای مثال:
int felani;
char bahmani;
float bisari;
همانطور که مشاهده میفرمایید، برای تعریف کردن یک متغیر کافی است یک اسم برای اسم انتخاب کنید و نوع آن را هم پشتش بنویسید. و بعد هم مثل همیشه یک نقطه ویرگول بگزارید آخرش!
الان ما یک متغیر داریم به نام felani که اعداد صحیح را ذخیره میکند، یک متغیر داریم به نام bahmani که کاراکتر های روی کیبورد را ذخیره میکند و یکی هم داریم به نام biasri که اعداد اعشاری را ذخیره میکند. ببینید:
felani=123;
bisari=1.0235;
در این تکه از کد ما به متغیر های مقدار دادیم. این مقدار تا وقتی که تغییری توی آنها ندیم باقی میماند، حالا اگر گفتید کد زیر چه کار میکند؟
int i,j,k;
i=2;
j=3;
k=(i+j)/2;
میتوانید حدس بزنید توی متغیر k چه عددی ذخیره شده است؟
تا مطلب بعدی!!!
SAM FISHER
21 March 2008, 09:44 AM
همونطور كه ميگفتم مقدار متغيير ها رو مينويسم مثل آب خوردنه !!! :
از int براي ذخيره اعداد صحيح مثبت و منفي كه 2 بايت مصرف ميكند و محدوده آن بين 32767 تا -32768 ميباشد
از float براي ذخيره اعداد اعشاري با ميزان دقت متوسط كه 4 بايت مصرف ميكند و محدوده آن تا 7 رقم اعشار است
از double براي ذخيره اعداد اعشاري با ميزان دقت بالا كه 8 بايت مصرف ميكند و محدوده آن تا 15 رقم اعشار است:icon_sad:
از long براي ذخيره اعداد صحيح مثبت و منفي گنده !! كه 4 بايت مصرف ميكند و محدوده آن از 2147483647 تا -2147483648 ميباشد
از Unsigned int براي ذخيره اعداد صحيح كه اون هم فقط مثبت كه 2 بايت مصرف ميكند و محدوده آن بين 0 تا 65535 ميباشد
از char براي ذخيره كاراكتر هاي كي بورد كه 1 بايت مصرف ميكند و محدوده آن 256 حالت ميباشد
از bool براي ذخيره دو مقدار درست يا غلط استفاده ميشود كه 1 بايت مصرف ميكند و محدوده آن بين 0 تا 1 و يا همان True و False ميباشد
خوب اينم از متغيير ها كه البته خيلي زياد هستند و اين يك چهارم اون ها هست و در ضمن شما در آينده ياد ميگيريد كه خودتون متغيير بسازيد!!
چون اين جدول بالا خيلي براي شما حفظش مشكله و زمان ميبره و ديگه ادامه نيدم تا وقت بيشتري براي حفظشون داشته باشيد. جدا از شوخي چيزي حفظ نكنيد !!! بلكه با تمرين و استفاده از اين متغيير ها ياد بگيريد .
تا بعد!!!!
عرفنا
22 March 2008, 08:06 PM
دوستان بنده با اجازه ی نگارنده ی این مطالب،قسمت های مختلف این چند صفحه را به دو فرمت pdf و doc دراوردم و آپلود کردم تا استفاده ی دوستان راحت تر باشه:
: DOC
http://erfna.persiangig.com/Learning%20C%2B%2B/Learning%20C%2B%2B.p1.phalls.doc
http://rapidshare.com/files/101490647/Learning_C__.p1.phalls.docPDF:
http://erfna.persiangig.com/Learning%20C%2B%2B/Learning%20C%2B%2B.p1.phalls.pdf
http://rapidshare.com/files/101404721/Learning_C__.p1.phalls.pdfموفق باشید :icon_excl
SAM FISHER
26 March 2008, 08:11 AM
دستورات ورودی و خروجی
امروز قرار است باهم به دستورات ورودی و خروجی بپردازیم.
مهمترین دستور ورودی و خروجی در ++c دستور cin و cout است. بیایید با هم یک برنامه ساده بنویسیم:
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
int main()
{
int a,b;
cin>>a>>b;
cout<<(a+b)/2;
getch();
return 0;
}
این برنامه دو عدد صحیح را گرفته و بعد میانگین آن ها را چاپ میکند، به خروجی آن توجه کنید:
1
3
2
cin بعد از هر متغیر ورودی به یک بار اینتر زدن نیاز دارد، بنابر این بعد از تایپ کردن عدد 1 باید اینتر را فشار دهیم و بعد عدد 3 را بزنیم و مجدد اینتر کنیم، نتیجه بلافاصله بر روی صفحه ظاهر خواهد شد.
همانطور که میبینید، عدد 1 در متغیر a ذخیره شده و عدد 3 در متغیر b. دستور cout هم حاصل محاسبات را به راحتی قبول کرده و در خروجی به نمایش گذاشته است.
بنابر این حالا می توانید نحوه گرفتن اطلاعات را از کاربر به درستی استفاده کنید.
cin>>[motrghayere aval!]>>[moteghayere dovom];
برای نشان دادن اطلاعات بر روی صفحه مانیتور هم از دستور cout میتوانید به راحتی آب خوردن استفاده کنید:
cout<<[moteghayere aval!]<<[moteghayere dovom!];
به جای متغیر میتوانید از رشته ها هم استفاده کنید و پیامی را چاپ کنید:
cout<< '' in yek payam ast! '';
این دستور عبارت مسخره "in yek payam ast" را به همان مسخرگی که در کد دیده میشود، روی مانیتور هم چاپ میکند!
نکته: هرگاه یک سری کاراکتر را بین کوتیشن قرار دهید، یک رشته حاصل میشود. رشته ها جنگولک بازی های بیشماری دارند که بعدا توضیح داده میشود!! عجله نکنید!
علاوه بر این با cout میتوانید از کاراکتر های کنترلی هم استفاده کنید
برای اینکه نحوه استفاده از اين كاراكتر ها مشخص شود یک مثال میزنم:
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
int main()
{
int a,b;
cin>>a>>b;
cout<< ''in miyangin ast : ''<<(a+b)/2<< ''\t inja 8 ja jelootar ast! '';
cout<< ''hala ye satr paeen miravimn ''<< ''didi paeen raftim! '';
getch();
return 0;
}
حاصل چنین چیزی است:
1
3
in miyangin ast :2 inja 8 ja jelootar ast! hala ye satr paeen miravim
didi paeen raftim!
به طور كلي بايد قبل از هر كاراكتر كنترلي از \ استفاده كرد. مثلا اگر ما عبارت a\ را درون دستور خروجي cout قرار دهيم كامپيوتر يك بوق 1 ثانيه اي خواهد زد!!
توجه => براي استفاده از كاراكتر هاي كنترلي بايد آن ها را حتما بين دو علامت " قرار داد.
حالا شما برنامه ای بنویسید که 4 تا عدد از کاربر دریافت کرده و میانگین و حاصل ضرب و حاصل جمع همه آنها را جداگانه چاپ کند. سعی کنید با کمک پیغامهای که چاپ میکنید کاربر را راهنمایی کنید و تا حد امکان او را بخندانید!! ... برنامه های بامزه خود را برای من هم بفرستید!!
موفق باشید.
SAM FISHER
2 June 2008, 02:32 PM
نميخوام بهونه بيارم كه چرا اينقدر دير شد. فقط ميگم بي مسئوليتي كردم و سعي ميكنم جبران كنم.
درس ششم – مرحله اول
آشنایی با دستورات شرطی
خوب امروز قرار است با یکی از مهم ترین دستورات زبان C آشنا شویم. دستورات شرطی.
اصولا اگر دستورات شرطی را از زبانهای برنامه نویسی حذف کنیم تقریبا هیچ چیزی دیگر از آنها باقی نمیماند! یک جورهایی دستورات شرطی مهمترین بخش از برنامه نویسی هستند ... همه این هندوانه های را زیر بغل دستورات شرطی گذاشتم که بگویم درس امروز از تمام درس های گذشته و آینده مهمتر است!!
مهمترین دستور شرطی زبان C دستور if میباشد. شکل کلی آن این است:
if(شرط)
{
دستورات;
}
خوب حالا چرا اینجوری به من نگاه میکنید؟ الان یک مثال میزنم تا بهتر متوجه بشوید!
int a;
cin>>a;
if( a>10)
{
cout<<”a bozorg tar az 10 mibashad!”;
}
همانطور که میبینید بر اساس این برنامه اگر عدد ورودی بیشتر از 10 باشد پیغام مناسبی چاپ میشود.
بیایید همین برنامه فسقلی را بیشتر مورد مطالعه و کنکاش قرار دهیم:
1 – داخل پرانتز روبه روی if یک شرط نوشته ایم: a>10 ، اگر تخیل قویی داشته باشیم میتوانیم حدس بزنیم که شروط دیگری نیز میتوانند اینجا قرار بگیرند، مثلا:
a<10
a==10(آیا مساوی هست؟)
a<=10
a>=10
a!=10(آیا نامساوی هست؟)
توجه کنید که ممکن است هر آدم حرفه ای و خفنی هم به اینجا که میرسد دچار اشتباهات فاحش شود، مثلا به جای a==10 بنویسدa=10 که حسابی غلط است!
در زیر لیست غلطهای مورد تایید اینجانب آمده است! لطفا فراموش نكنيد :
شرط مساوي : (درست : a==10)(غلط:a=10)
شرط نامساوي: (درست: a!=10)(غلط : a=!10)
2 – بین } و { میتوانیم هر چند تا که دلمان خواست دستورات مختلف بیاورید. حتی اگر دلمان خواست میتوانیم یک if دیگر هم آنجا بیاوریم که برای خودش دوباره دو تا آکولاد داشته باشد!
به این مثال توجه بفرمایید:
int a;
cin>>a;
if( a>10)
{
cout<<”a bozorg tar az 10 mibashad!”;
if(a>15)
{
cout<<”a az 15 ham bozorg tar mibashad … kojasho didi taze!”;
}
}
همانطور که ملاحظه میفرمایید داخل آکولاد باز و بسته اولی یک دستور شرطی دیگر قرار دارد که برای خودش دوباره یک آکولاد باز و بسته دیگر دارد ... من شخصا امتحان کرده ام، اگر بیشتر از 3 تا از این دستورات شرطی تو در تو داشته باشید خیلی خر تو خر میشود، در حدی که حساب کار از دست آدم در میرود!!
3 – لابد تا به حال به فکرتان رسیده که اگر بخواهیم در صورت درست نبودن شرط یک کار دیگر بکنیم باید چه کار کنیم!؟
چاره اش یک دستور دوست داشتنی به نام else است! ملاحظه بفرمایید:
int a;
cin>>a;
if( a>10)
{
cout<<”a bozorg tar az 10 mibashad!”;
}
else
{
cout<<”a kochiktar tar az 10 mibashad!”;
}
بر اساس این برنامه اگر ورودی کمتر یا مساوی با 10 بود پیغام دوم و اگر نه پیغام اول چاپ میشود ... اصلا چرا دارد میپیچانم ... if یعنی "اگر" و else یعنی "و اگر نه" !
توجه داشته باشید به صورت طبیعی برای هر if فقط یک else تعریف میشود.
تا بعد.:icon_cool
XredMan
20 June 2008, 09:43 AM
سلام به دوستان
این روزا روزای امتاحانما و من تو برنامه C مشکل دارم البته با الگوریتم مشکل دارم 2 تا سوال دارم ممنون می شم اگه جواب بدید ، اگه جواب بدید منم 1 میلیون شاهی پیهالز هدیه می دم ، البته سخت نیست ؛ باید ببخشید که اینجا بیان کردم . جای بهتری پیدا نکرم و ارزش تاپیک باز کردن نداشت.
1- برنامه بنویسید که عددی را از ورودی گرفته و مقلوب آن را محاسبه کند (با استفاده ار آرایه)(658=856 مثال)
2-برنامه ای بنویسید که مجموع 10 عدد اول سری اعداد فیبوناچی را بیابد؟
Cheekyboy
23 June 2008, 10:12 PM
1- برنامه بنویسید که عددی را از ورودی گرفته و مقلوب آن را محاسبه کند (با استفاده ار آرایه)(658=856 مثال)
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int m=0,n;
cout<<"enter a positive integer:";
cin>>n;
while(n>0)
{
m=m*10+n%10;
n=n/10;
}
cout<<"the inverse="<<m<<endl;
getch();
}
البته این بدون آرایه است...سعی می کنم با آرایه هم برات بذارم...
Orion
23 June 2008, 11:08 PM
دوستان تا حد امكان سعي كنيد براي كمك به افراد از كد نوشتن خودداري كنيد. منظورم اينه كه بيشتر رو الگوريتم مانور بدين نه اينكه مستقيم كد رو بنويسين.
در مورد فيبوناچي اگه يادم باشه هر عدد از مجموع دو عدد قبليش به دست مياد. مثلاً: 1-1-2-3-5-8-13 و ...
خب توليد اين سري كاري نداره. شما تو تا متغير تعيين ميكني و براي بار اول جفتشون رو مقدار 1 ميدي. بعد براي پيدا كردن عدد بعدي، مجموع دو تا عدد رو ميريزي تو متغير دوم و اين كار رو ده بار ادامه ميدي.
كه البته ميشه هم بصورت Recursive اين كار رو انجام داد هم بصورت عادي.
Orion
23 June 2008, 11:23 PM
براي به دست آوردن مقلوب از طريق آرايه فرض كن عددت 3 رقميه. مثلاً 854. اول بايد يه آرايه كه از سه تا عضو كاراكتر ساخته شده رو بسازي. بعد صدگان و دهگان و يكان عددت رو بدست بياري و به ترتيب داخل آرايه بذاري و بعد آرايه رو برعكس چاپ كني.
براي بدست آوردن صدگان بايد عدد رو تقسيم بر 100 كرد. خارج قسمت اين تقسيم ميشه صدگان. براي دهگان بايد باقيمانده تقسيم قبل رو تقسيم بر 10 كني و دوباره خارج قسمتش رو دهگان حساب كني و باقيمانده رو يكان.
SAM FISHER
30 June 2008, 12:39 PM
براي نوشتن سري فيبوناچي در تابع بازگشتي بايد در كد هاي قسمت else تابع بازگشتي عبارت زير رو تايپ كني :
با فرض اين كه شماره سري متغييري با نام number باشه و نام تابع fibonacci باشه :
return number+fibonacci(number-1);
vBulletin v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.