![]() |
|
|
#1 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
آموزش C++ سي پلاس پلاس از پايه
مي خواهيم در اين آموزش از ابتدا ، با دستورات سي ++ كار كنيم. C++
ولي مسلم است كه در بيشتر سينتكس ها ، سي، با سي++ ، مشابه است. . من تمامي برنامه هايي كه اينجا مي گذارم را با توربو سي چك مي كنم. توربو سي ورژن 3 حجم : 4 مگا. http://rapidshare.de/files/15927944/TurboCv3.rar.html ====================================== تاپيكهاي وابسته: كلاس در سي: http://forum.persiantools.com/showthread.php?t=35887 طرق احضار توابع: http://forum.persiantools.com/showthread.php?t=45911 ذخيره در فايل http://forum.persiantools.com/showthread.php?t=47476 تابع راندوم و زمان در سي http://forum.persiantools.com/showthread.php?t=11367 زمان http://forum.persiantools.com/showthread.php?t=46151 اسمبلي براي سي: http://forum.persiantools.com/showthread.php?t=37385 گرافيك در سي: http://forum.persiantools.com/showthread.php?t=35260 كامپايلرهاي سي http://forum.persiantools.com/showthread.php?t=38228 كتابهاي سي و ويژوال سي و كمي بحث http://forum.persiantools.com/showthread.php?t=41105 کتاب های سی http://forum.persiantools.com/showthread.php?t=39500 یک کتاب کامل در مورد ویژوال ُسی http://forum.persiantools.com/showthread.php?t=40777 ======================================
__________________
estefa va khoroj az forum. dostare hameye shoma.bye. Last edited by saalek; 06-09-2006 at 05:20 AM.. |
|
|
|
|
|
#2 |
|
مدیر برنامه نویسی وب
Join Date: Aug 2004
Location: Anywhere
Posts: 6,217
|
كاش ويژوال سي پلاس پلاس ياد ميداديد
![]()
__________________
I hate to love you Coming Soon With Special Services...
|
|
|
|
|
|
#3 |
|
Registered User
|
سلام بچه ها یه سوال داشتم فقط لطفا نخندید من امروز رفتم یک کتاب برنامه نویسی ++C نوشته مهندس قمی گرفتم بعد یه 20-30 صفحه ای ازش خوندم سوالم اینه که این کدهارو باید کجا نوشت یعنی باید تو برنامه خاصی این کدهای c++ رو نوشت
__________________
|
|
|
|
|
|
#4 |
|
Registered User
|
براي شروع ميتوني از كامپايلر تحت داس c++ يعني توربو سي ورژن 3.0 استفاده كني.
|
|
|
|
|
|
#5 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
پاسخ به
mehdvirus : انشا الله بعدا. البته شما شايد سي ++ را بلد باشيد ولي براي ويژوال سي ، دانستن سي ++ ضروري است و من اين تاپيك ، محيط تسلط يافتن خودمه براي سي++. بعدا انشا الله اقدام مي كنيم. قبلا من آموزش ويژوال سي داشتم ولي ناتمام ماند. و خودم هم خيلي علاقه مندم كه ياد بگيرم. ------------------------ در پاسخ به دوست گرامي كه مي خواهد سي را شروع كند. ويژوال سي بورلند سي كوئيك سي بورلند سي و خيلي هاي ديگر. . Last edited by saalek; 12-26-2005 at 03:05 AM.. |
|
|
|
|
|
#6 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
يك توضيح مقدماتي بدهم ابتدا.
شما كدها را مي توانيد در هر اديتوري بنويسيد. مثلا در ((نت پد)) بنويسيد و با پسوند مورد نظر save كنيد. ولي بهر حال بايستي يك كامپايلر داشته باشيد تا به فايل قابل اجرا يعني exe تبديل كنيد. من فعلا با توربو سي عمل تبديل را انجام مي دهم. به فايلي كه كدهاي شما در آن ذخيره شده ، سورس source مي گويند. پسوند در سي عبارت است از ((دات سي)) .c و در سي++ عبارت است از (( دات سي پي پي)) .cpp . من از codewhiz هم به عنوان اديتور استفاده مي كنم. كه فرقي با نت پد notepad ندارد. از اين اديتور مي توانيد براي ويرايش و ذخيره سورس در اسمبلي هم استفاده كنيد. و حتي زبانهاي ديگر. اگر از توربو سي و حتي كامپايلرهاي شبيه آن استفاده مي كنيد، براي اجرا و رفتن به محيط برنامه مي توانيد در پوشه bin فايل TC را اجرا كنيد. و بعد سورس خود را باهاش open كنيد و كار كنيد. اگه اولين باره كه با توربو سي و نرم افزارهاي مشابه اش داريد كار مي كنيد، نكته مهم اينه كه برويد به منوي option و بعد زير منوي Directories و آدرس پوشه include و lib (كه روي هارد كنار پوشه bin داريد) را در آنجا بدهيد. زيرا برنامه براي توانايي كامپايل كردن به اين دو پوشه نيازمند است. . Last edited by saalek; 12-11-2005 at 01:40 AM.. |
|
|
|
|
|
#7 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() در شكل بالا قالب ساده يك برنامه سي( ديگه ++ اش را نمي گم و فاكتور مي گيرم. هر چند با هم زياد فرقي هم ندارند.) را مي بينيد. قبل از باز شدن برنامه اصلي كه با كلمه main (يعني اصلي) شروع مي شود، بايستي بگوييم كه از چه فايلهاي header ئي استفاده خواهيم كرد. البته در اين برنامه ، هيچ دستوري داخل برنامه نيست و برنامه خالي است. و من فقط دو دستور احضار header را براي مشاهده بعنوان مثال باقي گذاشتم. كلا هر دستوري كه در سي استفاده ميشه ، يك تابع است. هر فايل header كه داخل پوشه include است، تعدادي از اين توابع را پشتيباني مي كند. از طرفي خود برنامه اصلي هم ، بعنوان يك تابع عمل مي كند. تابع به چيزي مي گوييم كه ورودي بگيرد و خروجي بدهد. در اينجا مي بينيد كه تابع main ورودي ندارد ، چون داخل پرانتز آن چيزي نوشته نشده. ولي مي شود نوشت. شايد بعدا طرز ورودي دادن به تابع main را هم گفتيم. ولي در سطح مبتدي زياد اين كار كاربرد نداره. و معمولا اين تابع ورودي نمي گيره. حالا مي رسيم به خروجي اش، كلمه return 0 مي گويد كه اين تابع صفر را برمي گرداند. يعني بعد پايان كار برنامه ما ، صفر به سيستم برگردانده مي شود و ما فعلا كاري نداريم كه سيستم با اين صفر چه كار مي كند. خلاصه اين كه برنامه اصلي هم مثل يك تابع عمل مي كند. شايد شما جور ديگر ديده باشيد قالب main را، مثلا return 0 را نداشته باشد، آنطور هم مي شود ولي بايستي main را از اول بگوييم كه خروجي ندارد. چون تابع هاي بدون خروجي هم مي دانيد كه داريم. ولي چون ما از كلمه int استفاده كرديم (كه به معني صحيح است ) ، پس خروجي هم بايد اعلام كنيم. يك نكته مهم هم اينه كه بعد هر دستور سي ، بايستي سمي كالن بگذاريد. و مي بينيد كه بعد return ، سمي كالن داريم. بعد main و include ها نمي خواهد. مواقعي هم هست كه نمي خواهد ولي خيلي كم است مواردش و هر جا پيش آمد مي گيم. فعلا شما هر دستوري در برنامه نوشتيد ، حواستان به سمي كالن انتهاي خط باشد. چون اگر نگذاريد خطا مي گيرد. تا اينجا من از آموزشهاي سايت استفاده نكردم. چون اون از كمي بعد تر شروع كرده بود و من مي خواستم از اول بگويم.ولي از پست بعد سعي مي كنم موبمو از روي آن جلو بروم. . مي بينيد كه من در codewhiz دارم كار مي كنم. بعد از نوشتن كدها ، با پسوند cpp ذخيره مي كنيم و با يك كامپايلر مثل توربو سي تبديل به فايل اجرايي مي كنم. البته خود توربو سي هم اديتور داره و نياز به اين كار نيست ولي ديگه سليقه اي است. ويژوال سي هم خوبه چون محيطش dos ئي نيست. ولي من به اين دليل با توربو سي كار مي كنم كه اگر مشكلي پيش قراره بياد ، براي من هم پيش بياد و توضيح بدهم. . Last edited by saalek; 02-13-2006 at 07:10 PM.. |
|
|
|
|
|
#8 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() ![]() اين اولين برنامه اي است كه كاري انجام مي دهد. و كارش اينه كه مي نويسد hello c . من از محيط توربو سي هم عكس گرفتم تا با شماي محيط آشنا بشويد. در برنامه توربو سي ، از منوي RUN ، گزينه اول RUN را بزنيد تا نتيجه اجرا را ببينيد. شرح برنامه: cout كارش چاپ متن و عدد است. در اينجا كلمه hello c را مي نويسد. به 2 علامت كوچكتر كه با shift+, ايجاد مي شود توجه كنيد ( << ) و به كوتيشنها دو طرف عبارتمان دقت كنيد. و به علامت سمي كالن در آخر جمله كه اجباري است حواستان باشه. دستور getch() كارش اين است كه زدن كليدي و دريافت آن كليد را طلب مي كند. علت استفاده از آن اينه كه اگر نباشه ، برنامه آنقدر سريع اجرا ميشه و بسته ميشه كه چيزي را ما نخواهيم ديد. پس با قرار دادن اين دستور تا ما كليدي را نزده ايم ، فرصت تماشاي نتيجه را داريم. كامنت گذاري: به نظر من اين اولين چيزيه كه در برنامه نويسي بايد ياد بگيريم. آنجا كه در شكل من نوشته ام yaddasht (يادداشت) دقت كنيد. قبلش دو تا مميز آمده. اين دو مميز باعث مي شود كه هر چه بعدش بياد ، موقع كامپايل ، خوانده نشه و ما آزاديم هر يادداشتي را بعد اين علامت بگذاريم. منظور من اين بود كه شما برويد يك امتحاني بكنيد، برويد هر بار قبل هر يك از include ها اين علامت(دو مميز) را بگذاريد. خواهيد ديد كه include اول اگر به شكل كامنت درآيد ( كه در حقيقت مثل پاك كردن اين خط برنامه است) دستور cout خطا خواهد داد. چون اين تابع در header ئي به نام iostream است و دومين include هم براي getch() لازمه. البته ممكنه چندين تابع با يك header پشتياني بشوند كه امر واضحي است. نكته: كامنت (يادداشت) هاي يك خطي را مي شود با // استفاده كرد ، ولي براي كامنتهاي چند خطي از شكل زير استفاده كنيد. ![]() يعني با /* شروع كنيد و با */ تمام كنيد. . Last edited by saalek; 02-13-2006 at 07:11 PM.. |
|
|
|
|
|
#9 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() حالا به برنامه بالا نگاه كنيد. Cin برعكس cout است. كارش گرفتن عددي از كاربر است. كاربر بايد عدد را تايپ كند و اينتر كند. چيز جديدي نداريم به جز long ، كه تعريف كردن متغير است. در خطي كه اين دستور آمده مي بينيد كه 4 متغير از اين نوع تعريف شده و دو تاي اول براي دريافت دو عددي است كه كاربر مي دهد و دو عدد بعدي براي قرار دادن حاصل تقسيم و باقيمانده درش است. توجه كنيد كه با cin علامت بزرگتر را داريم نه علامت كوچكتر. به دستور endl ((اند + حرف ال )) توجه كنيد. و همچنين توجه كنيد كه در پايان تمامي خط ها ، علامت سمي كالن موجود است. شايد بپرسيد كه endl كارش چيه. برويد برش داريد تا تفاوت را ببينيد. البته سمي كالن را اشتباهي برنداريد ، ولي علامت هاي كوچكتر را بايد برداريد. من رفتم الان امتحان كردم. عبارت ها به خط بعد نمي رود و در ادامه همان خط چاپ مي شود كه زيبا نيست. شايد بخواهيد بدانيد كه long چه نوع متغيري است ، كه بحث انواع متغيرها در سي ++ مطرح ميشه . شكل زير يك شمايي مفيد و مختصر به شما مي دهد. ![]() عدد صحيح integer و عدد اعشاري real . من رفتم يك امتحان كردم و در برنامه به آن عدد اعشاري دادم. برنامه از حالت اجرا خارج شد. چون ما گفتيم كه عددي كه كاربر مي دهد بايد عدديي صحيح باشد نه اعشاري. به حدود مجاز هر يك هم نگاه كنيد. اگر عدد شما بالاي 32 هزار است ، از short استفاده نكيند. زيرا تعداد بايتهايي كه در حافظه براي عدد شما در نظر گرفته ميشه محدوده و اگر عدد بزرگتر باشه ، حتي اگر برنامه دچار اختلال نشه ، معلوم نيست اضافه اش چه سرنوشتي پيدا مي كنه و مسلم است كه نتيجه محاسبات درست درنخواهد آمد. . #include <iostream.h> #include <conio.h> // yaddasht int main() { long aNum1, aNum2, aQuotient, aRemainder; cout << "Enter two numbers" << endl; cin >> aNum1 >> aNum2; aQuotient = aNum1 / aNum2; aRemainder = aNum1 % aNum2; cout << "The quotient of " << aNum1 << " and " << aNum2 << " is " << aQuotient << endl; cout << "and the remainder is " << aRemainder << end1; getch(); return 0; } Last edited by saalek; 02-13-2006 at 07:13 PM.. |
|
|
|
|
|
#10 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() كلا تا بحال برنامه هايي كه تابحال كرديم، شامل 3 قسمت بود. اول: گرفتن ورودي دوم: انجام محاسبات سوم: خروجي در شكل بالا اين 3 مرحله را نشان داده است. ![]() در شكل بالا ، ما قسمت ورودي را كار مي كنيم. هر داده اي كه مي خواهيم از كاربر بگيريم ، نياز به ظرفي دارد كه همان تعريف متغير برايش فراهم مي كند. در شكل بالا 3 نوع متغير تعريف كرده ايم و بعد از كاربر ، اطلاعات دريافت كرده ايم و در اين متغيرها ذخيره كرده ايم. ![]() در شكل بالا مي بينيد كه 3 متغير از يك نوع ( دابل) تعريف شده و براي راحتي با ويرگول و در يك خط نوشته ايم. براي ورودي گرفتن هم مي توانيم هم جدا و هم در يك خط ، عمل كنيم. ![]() در شكل بالا ، حالت غلط را مي بينيد. من رفتم نتيجه اين طور نوشتن را امتحان كردم. ولي شما امتحان نكنيد. فقط عدد اولي را درست مي گيره و دومي يك عدد عجيب و غريب خواهد شد. Last edited by saalek; 02-13-2006 at 07:15 PM.. |
|
|
|
|
|
#11 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() #include <iostream.h> به برنامه بالا نگاه كنيد. برنامه ساده اي است. 4 متغير تعريف شده. 3 متغير را كاربر مي دهد و متغير چهارم در قسمت محاسباتي ، نتيجه محاسبه را در خود خواهد داشت. #include <conio.h> // yaddasht int main() { double s, u, a, t; cout << "Enter initial velocity, acceleration, and time : "; cin >> u >> a >> t; s = u*t + 0.5*a*t*t; cout << "Distance travelled " << s << endl; getch(); return 0; } در آخر هم متغير چهارم كه نتيجه محاسبه است ، چاپ خواهد شد. اگر فيزيك يادتان باشد ، همان فرمول v0*t+1/2at^2 است. فرمولش از ضرب و جمع تشكيل شده و ساده است. فقط يك نكته كوچك در اينجا هست كه همه هم بلديد. و آن اين كه ضرب ، نسبت به جمع ، تقدم دارد. يعني اول ضربها انجام مي شوند و بعد جمع انجام مي شود. و اينجا هم ، ما همين را مي خواستيم. ولي اگر مي خواهيد كه اول جمع انجام بشه ، بايد از پرانتز استفاده كنيد. نوع متغير هم كه مي بينيد اعشاري است . . ![]() ![]() در شكل بالا ، 3 متغير تعريف كرديم و هر سه را مساوي عدد يك قرار داديم و چاپ كرديم. منظور اين بود كه بگوييم ميشه در يك خط چند متغير را مقدار دهي كرد. . Last edited by saalek; 02-13-2006 at 07:17 PM.. |
|
|
|
|
|
#12 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() در شكل بالا ، 4 عمل اصلي را داريم و باقيمانده را. ![]() امر واضحي را در شكل بالا مي بيند. علامت * الزامي است. و نبايد همان طور كه در رياضي عادت داريم عمل كنيم. ![]() به برنامه بالا نگاه كنيد. چند نكته دارد. نكته اول اينكه return ندارد. زيرا تابع main قبلش كلمه void آمده. يعني خروجي ندارد. پس نيازي به معرفي خروجي با return ندارد. نكته دوم اينكه جواب برنامه 2 است. كه اشتباه است. نويسنده برنامه آمده دو عدد صحيح را بر هم تقسيم كرده و نتيجه را چون اعشاري فرض مي كرده در يك عدد real (اعشاري) از نوع double ريخته. ولي اعشاري در كار نيست. و جواب تقسيم 2 شده. من آمدم دو عدد اول را هم double گرفتم. به شكل زير: ![]() و جواب اينبار (( دو و نيم )) درآمد كه درست است. #include <iostream.h> #include <conio.h> void main() { double i, j,result; i = 10; j = 4; result = i / j; cout << "result = " << result << endl; getch(); } Last edited by saalek; 02-13-2006 at 07:20 PM.. |
|
|
|
|
|
#13 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() در شكل بالا ، در جايي كه فلش آبي نشان مي دهد ، خطا دريافت مي كنيم. باقيمانده براي اعداد اعشاري بي معني است. ![]() ![]() ولي وقتي از long كه اعداد صحيح را نگه مي دارد استفاده مي كنيم ، كار درست است. تابع clrscr(); براي پاك كردن صفحه است. در شكلي كه تنيجه اجرا را نشان مي دهد ، مي بينيد كه خارج قسمت 10 بر 4 مساوي 2 است و باقيمانده اين تقسيم هم عدد 2 است. . #include <iostream.h> #include <conio.h> void main() { clrscr(); long i, j,result,reminder; i = 10; j = 4; result = i / j; reminder=i%j; cout << "result = " << result << endl; cout << "reminder = " << reminder << endl; getch(); } Last edited by saalek; 02-13-2006 at 07:22 PM.. |
|
|
|
|
|
#14 |
|
مدیر بازنشسته
Join Date: Sep 2003
Posts: 1,523
|
خيلي خوب بود خسته نباشي اميدوارم ادمه بدي
|
|
|
|
|
|
#15 |
|
مدیر بازنشسته
Join Date: May 2005
Location: در پاي كوهپايه ها
Posts: 654
|
![]() در شكل بالا 5 تابع رياضي را مي بيند. و همچنين مي بيند كه وروددي و خروجي ، هر دو ، double است. ![]() در شكل بالا ، ما از كاربر يك زاويه درخواست مي كنيم و بعد سينوس آن را به او برمي گردانيم. همان طور كه با فلش نشان داده شده ، header ئي به نام math براي استفاده از توابع رياضي لازم است. . #include <iostream.h> #include <conio.h> #include <math.h> void main() { clrscr(); double angle; double sine; cout << "Enter angle : "; cin >> angle; sine = sin(angle*3.141592/180.0); cout << "Sine(" << angle << ") = " << sine << endl; getch(); } Last edited by saalek; 02-13-2006 at 07:23 PM.. |
|
|
|
![]() |
| امکانات بيشتر | |
|
|