نمایش نتایج 1 تا 13 از 13

نام تاپیک: آموزش زبانC++‎ (برای آشنایان با C )

  1. #1

    Cool آموزش زبانC++‎ (برای آشنایان با C )

    سلام بر همه دوستان و کاربران
    در این تاپیک قصد دارم که زبان برنامه نویسی C++‎ رو برای افرادی که با زبان برنامه نویسی c آشنایی دارند آموزش بدم
    این آموزش در واقع بیشتر برای دانشجوییانی است که در یک ترم زبان C را فرا گرفته و می خواهند با زبان C++‎ نیز آشنا و برنامه بنویسند, ولی کلیه افرادی که با زبان c آنایی دارن و برنامه نوشتند
    نیز امید وارم مفید واقع شود.
    از اساتید و بزرگان خواهش دارم اگر در بخشی این بنده دچار اشتباه شدم به بنده اطلاع بدن (در پروفایلم تو این سایت).
    از مدیران هم تقاضا دارم به این موضوع توجه نشون بدن .چون واقعا خیلی بدهکه سایت برنامه نویسی باشه یه تاپیک ثابت و مهم برای آموزش برنامه نویسی تو هیچ کدوم از بخش هاش نباشه و کسی همه بر روش مدیریت نکنه و همه ی تاپیک ها بی سرپرست باشند و...
    امید وارم این آموزش برای جامعه برنامه نویسی مفید باشه.

  2. #2

    Cool نقل قول: آموزش زبانC++‎‎‎‎ (برای آشنایان با C )

    جلسه اول :
    اشاره گر:
    بخشی از حافظه که فقط آدرسی دارد.(آدرس ها 16 بیتی هستند=2بایت )

    نحوه تعریف اشاره گر:
    ; نام اشاره گر* نوع اشاره گر
    مثال:
    int *p;

    در مثال بالا ما یک اشاره گر از نوع صحیح (اینتیجر)ساختیم

    انواع حالاتی که اشاره گر در یک برنامه دارد:
    p*
    محتوای جایی که اشاره گر به آن اشاره میکند.
    p&
    آدر س خانه ای از حافظه که اشاره گر در آن قرار دارد.
    p
    محتوای اشاره گر(توش آدرس هست )

    مثال:
    خروجی قطعه کد زیر چیست ؟
    }()main
    در این قسمت ما یک متغییر از نوع اینت میسازیم و مقدار 7 را توش میریزیم int i=7;
    در این قسمت یک اشاره گر از نوع اینت میسازیم int *p;
    در این بخش هم آدرس خونه یi رو در اشاره گر p میریز ه p=&i;
    cout<<i<<*p;
    مقدار i رو نمایش بده و نیز دراین قسمت هم میگیم محتوای جایی که اشاره گر به اون اشاره میکند را نمایش بده باp*(از اونجایی که آدرس خونه i در اشاره گر p قرار دارد پس اشاره گر p به خونه i اشاره میکند و محتوای خونه i نیز همان 7 یعنی مقداری است که در i ریخته شده)
    خروجی:
    7 7
    که اولی برای i ودومی برای p*
    در اشاره گر ها زمانی که با p* کار میکنید بدانید که این یعنی همان متغییری که آدرسش را وارد این میکنید

    مثلا در مثال بالا p* یعنی همون i و هر کاری و هر اتفاقی که روی p* بیفتد روی i نیز می افتد که از این امکان می توان

    برای استفاده یک متغییر در توابع مختلف و برگرداندن مقدار های مختلف توسط یک تابع و...استفاده کرد(تنها فرقی که

    این p* و i با هم دارند در این می تواند باشد که خانه هر دو با هم متفاوت هست مثالا p در خانه 100 و i ممکن است در

    خانه 70 قرار داشته باشد که در بالا اگر به جای *(در بخش cout) علامت&بود یعنی آدرس خانه ای از حافظه که در اشاره

    گر p قرار دارد رو نشون بده ,که آدرس خونه i تو p وجود داره پس p& در بخش cout آدرس خونهiرو که مثال زدیم 70 رو

    چاپ میکنه , دقت کنید در i مقدار 7 و لی در p آدرس خونه i قرار دارد که با قرار گرفتن * در پشت p به صورت p* محتوای iمورد بررسی قرار میگیرد)
    آخرین ویرایش به وسیله friendchp : یک شنبه 06 تیر 1389 در 07:14 صبح

  3. #3
    کاربر تازه وارد آواتار sadegh-hut
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    شهركرد
    پست
    46

    Smile نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    نقل قول نوشته شده توسط friendchp مشاهده تاپیک
    سلام بر همه دوستان و کاربران
    در این تاپیک قصد دارم که زبان برنامه نویسی C++‎‎ رو برای افرادی که با زبان برنامه نویسی c آشنایی دارند آموزش بدم
    این آموزش در واقع بیشتر برای دانشجوییانی است که در یک ترم زبان C را فرا گرفته و می خواهند با زبان C++‎‎ نیز آشنا و برنامه بنویسند.

    اتفاقا منم مي خواستم اين بحث رو شروع كنم البته به عنوان كسي كه مي خواد ياد بگيره نه كسي كه بخواد ياد بده !
    چون منم ‍C رو خوندم و مي خوام ++ ‍C ياد بگيرم .حالا داري از اولش ميگي ديگه ؟؟ آره؟؟؟

    ممنون!

  4. #4

    Cool نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    // حاشیه ها{
    سلام دوست عزیز وممنون بابت حمایتتون
    بنده فرض رو بر این گرفتم که شما ها در c توابع و آریه ها و رو خونده باشید
    وبنده از اشاره گر شروع کردم
    درضمن با این آموزش شما هیچ وقت نمی تونید بشید یه برنامه نویس حر فه ای(این کار فقط با یاد گیری کامل و جامع و تجربه در امر نوشتن برنامه ها ی مختلف از کوچک به بزرگ در طی چند سال محقق می شود)
    ولی برای درک بهتر زودتر مفاهیم C++‎ و یاد گیری و نوشتن برنامه ها به زبان شیرین C++‎
    امید وارم مفید واقع شود.}

  5. #5

    Cool نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    جلسه دوم:
    ادامه اشاره گر:

    خروجی قطعه کد زیر چیست؟
    main(){
    1. int i=6,j=9;
    2. int *p,*q;
    3. p=&i;
    4. q=&j;
    5. i++;
    6. cout<<i<<j<<*p<<*q<<endl;
    7. *p=*q+1;
    8. cout<<i<<j<<*p<<*q<<endl;
    9. p=q;
    10. cout<<i<<j<<*p<<*q<<endl;


    خروجی:
    9 7 9 7
    9 10 9 10
    9 9 9 10


    در خط اول دومتغییر از نوع اینتیجر(صحیح) تعریف کرد و دو مقدار 6 و 9 رو به ترتیب در i, j ریخته است و سپس در خط دوم

    دو اشاره گر از نوع اینتیجر ساخت
    در خط سوم آدرس خانه i را در اشاره گر p قرار می دهد و در خط چهارم آدرس j را در q میریزد
    در خط پنجم مقدار موجود در خانه i رو یک مقدار افزایش می دهدیعنی مقدارش از 6 به هفت افزایش میابد
    در خط ششم نیز مقادیر را چا پ میکند:
    i که همون مقدارش یعنی 7چاپ میشه ,j هم همینطور9 , در بخش بعدی p* اومده پس اشاره میکنه به محتوای آدرسی که در خود p وجود داره و اون محتوا یعنی مقدار 7 که در i هست رو نشون میده یعنی7 چون آدرس i در p قرار دارد وp* به محتوای خونه i اشاره میکنه
    در q* نیز به همین صورت حالا برایj یعنی مقدار 9


    در خط هفتم: گفتیم که p* یعنی همون متغییری که آدرسشو توش ریختیم پس در اینجا یعنی i -> پس در اینجا داریم =i و q* هم مثل بالا یعنی j در نتیجه یعنی i=j+1 در نتیجه مقدار i برابر می شود با مقدار j+1 که یعنی 10
    در خط هشتم نمایش میدهد 9 10 9 10

    در خط نهم هم خود p رو برابر با q قرار می دهد و از اونجایی که ما در بالا آدرس j رو در اشاره گر ً q قرار دادیم پس الان مقدار موجود در q همون ادرس خونه j هست که در این خط این ادرس به درون p ریخته میشه در نتیجه هر دو اشاره گر دارای یک آدرس در خودشون و یعنی به یک ادرس یعنی همون آدرس خونه q اشاره میکنند.
    در خط دهم هم مقدار 10 برای i مقدار 9 برای j و مقدار 9 برای p* و مقدار9 برای q* چاپ میشود



  6. #6

    Cool نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    جلسه سوم:
    نکته:
    اشاره گر فرقی نمی کند از چه نوعی باشد, چون فقط آدرس می گیرد همیشه 2بایتی هست.
    اما وقتی که می خواهیم دوتا اشاره گر یکی از نوع اینت و دیگری از نوع فلوت رابرابر هم قرار دهیم (مثلا pاینت و q فلوت وبنویسم)p=q , خوب گفتیم که ادرس همیشه دوبایتی هست و طبق این موضوع این عبارت باید درست باشد و درست عمل کند , اما در واقع این عمل نادرست است چون :
    1. دو متغییر اشاره گر از دو نوع مختلف هستند
    2.اگر هم کامپایلر اشکالی ایجاد نمی کرد یعنی ارور نمی داد باز هم در برنامه مشکلات منطقی پیش میومد .(مثلا فرض کنید q++ شود آنگاه آدرسی که در q وجود داشت به اندازه 4بایت به جلو میرود, اما اگر p++ شود آدرس مورد نظر 2بایت به جلو میرود )
    این تفاوت بین دو نوع از تعریف اشاره گر می باشد.

  7. #7

    نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    call by refrence(فراخوانی با ارجاع, از طریق اشاره گر):
    زمانی که یک تابع را تعریف میکنیم ممکن است تابع بسته به نوع استفاده اش مقداری برنگرداند یا یک مقدار را برگرداند و یا توسط یک تابع چند مقدار برگردانده شود .
    اما گاهی نیاز به این داریم که در یک تابع چند مقدار تغییر کرده و مورد استفاده در main قرار گیرند,(یعنی وقتی که یک متغییر در یک تابع تعریف میشود در تابع دیگری قابل استفاده نیست مثلا اگر i در main تعریف شود در تابع دیگری قابل استفاده و دستکاری نیست ولی این کار با اشاره گر امکان پذیر خواهد بود.
    به مثال زیر توجه کنید:
    #include <iostream>

    using namespace std;
    1. void test ( int *p,int *q)
    {
    2. cout<<*p<<*q<<endl;
    3. *p=*p+2;
    4. *q=*q-2;
    5. cout<<*p<<*q<<endl;
    }
    int main()
    {
    6. int a,b;
    7. cin>>a>>b;
    8. cout<<a<<b<<endl;
    9. test(&a,&b);
    10. cout<<a<<b<<endl;
    return 0;
    }

    مثلا وارد کردیم به ترتیب 5 برای a و 2برای b
    خروجی:
    5 2
    5 2
    7 0
    7 0
    خوب همونطور که دیدید متغییر های a ,b نیز دچار تغییر شدند ,همونطور که گفته بودیم p* یعنی همون a پس در تابع دیگر نیز ما در واقع همون a رو دستکاری میکردیم
    اما اگر در خط1 متغییر های p q را اشاره گر تعریف نمی کردیم او نوقت خروجی این میشد :
    5 2
    5 2
    7 0
    5 2
    علتشم اینه که اونوقت p q دومتغییر محلی که در تست تعریف شده و دو مقدار در خود دارند که فقط تغییرات بر خودشون اعمال میشه
    اما همونطور که دیدین توسط تابع تست که دو اشاره گر تعریف کردیم توانستیم دو مقدار را دستکاری کرده و و به تابع مین برگردانیم
    به این عمل توسط یه تابع ,فراخوانی با ارجاع میگویند حالا چه بخواد یه متغییر باشه چه 100تا
    که برای یک تابع بدون اشاره گر حداکثر یک مقدار ولی برای یک تابع با با وجود اشاره گر می توان هر میزان که نیاز داشته باشیم مقدار برگردونیم به تابع مین(مقدار برگردوندن هم یعنی اینکه مثلا در مثال بالا متغییر اشاره گر p دارای یک مقدار نهایی در تابع تست شده است و می خواهیم این مقدار به یک متغییر موجود در مین مثل A ریخته شود که اینکار در تابع تست توسط همین اشاره گر انجام شده است )
    آخرین ویرایش به وسیله friendchp : یک شنبه 06 تیر 1389 در 08:36 صبح

  8. #8

    Cool نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    جلسه چهارم:
    نکته:
    اسم یک آرایه اشاره گری است به خانه اول آرایه(یعنی مثلا در [100]s خود اسم آرایه یعنی s اشاره میکند به خانه اول آرایه یعنی [0]s )
    .به مثال زیر توجه کنید:

    void temp(int[])
    main(){
    int s[5]={2,9,7,3,6};
    temp(s);
    for(int i=0;i<5;i++)
    cout<<s[i];
    }
    ///////
    void temp (int p[])
    {
    for (int i=0;i<3;i++)
    p[i]=p[4-i];
    for(int j=0;j<5;j++)
    cout<<p[i];
    }


    خروجی:
    6 3 7 3 6
    6 3 7 3 6
    خوب در این قطعه کد
    ابتدا یک ارایه 5 خانه ای s را تعریف میکنیم و به ترتیب یه سری مقدار را وارد ان میکنیم
    وسپس توسط تابع tempکه فراخوانی میشود
    s را به عنوان آرگومان ورودی به آن تحویل می دهیم
    همانطور گفتیم
    در یک آرایه اسم آرایه (در اینجا s)به اولین خانه آرایه اشاره میکند یعنی اینکه S یا همون اسم آرایه حاوی آدرس اولین خانه آرایه میباشد
    ما در واقع این ادرس را به عنوان ورودی دادیم کهp که خود یک آرایه می باشد (که آرایه هم یک اشاره گر)آدرس را دریافت کرده و سپس مانند یک اشاره گر هر خانه از آرایه جدید به خانه مربوطخه از آرایه اولیه اشاره میکند و تغییرات اعمال میشود .

  9. #9

    Cool نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    مثالی برای نشان دادن اینکه آرایه یک اشاره گر میباشد:
    به قطعه کد زیر توجه کنید :

    int *p;
    int s[5]={2,3,7,5,6};
    p=s;
    cout<<s[0]<<*p;//mishe be jaie *p ino ham nevesht ke bazam hamone:*(p+0)
    cout<<s[1]<<*(p+1);
    cout<<s[2]<<*(p+2);


    خروجی:
    2 2
    3 3
    7 7
    (البته می تونستیم از حلقه فور برای نوشتن برنامه استفاده کنیم ولی خوب برای درک بهتر این کارو کردم)
    خوب ما یک اشاره گر p و یک ارایه [5]s
    رو تعریف کردیمکه همونطوری که گفتیم S که حاوی آدرس خونه s[0] می باشد رو درون اشاره گر p ریختیم
    در نتیجه p حاوی آدرس خونه s[0] می باشد
    در cout اول مقدار s[0] که 2 بود چاپ میشود و اشاره گر p هم که ادرس این خانه را دارا بود همین مقدار را نمایش می دهد
    در cout بعدی s[1] مقدارش چاپ میشود
    و p که دارای آدرس خانه اول بود و هم آرایه و هم اشاره گر هر دو از نوع اینتیجر بودند هر خانه به فاصله دوبایت از خانه بعدی در آرایه اینتیجر قرار دارد که با p+1 یعنی اینکه 1خانه دوبایتی(چون اینتیجرهست وگرنه اگر فلوت بود 1 خانه 4بایتی جلو میرفت)برو به جلو تر
    که این یک خانه جلو تر رفتین ادرس خانه s[1] می باشد (چون s هم اینتیجر هست پس هر خانه دوبایت دوبایت به جلو میرود مثلا آدرس خانه s[0] اگر باشد 100 آدرس خانه s[1] میشود 102 یعنی در دوبایت بعدی قرار دارد)
    و در نتیجه مقدار *(p+1) چاپ میشود و به همین صورت برای باقی مقادیر..

  10. #10

    Cool نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    مبحث آخر از اشاره گر:
    نکته:
    توابع را نیز میتوان به صورت یک تابع اشاره گر تعریف کرد یعنی تابع نیز بتواند یک آردس را دریافت کند یا اینکه به یه جایی اشاره کند.
    به مثال زیر توجه کنید:برای این مثال توضیحی نمی دم, اما اگر متوجه نشدید اطلاع بدید تا براتون توضیح بدم)

    int *temp (int []);
    main ()
    {
    int a[10];
    for(int i=0; i<10; i++)
    cin>>a[i];
    cout<<temp(a);
    }
    //////
    int *temp(int a[])
    {
    int max=a[0];
    int k;
    for(int i=0; i<10; i++)
    if(max<a[i])
    {
    max=a[i];
    p=i;
    }
    return &a[p];
    }

  11. #11
    کاربر تازه وارد آواتار sadegh-hut
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    شهركرد
    پست
    46

    نقل قول: آموزش زبانC++‎‎‎ (برای آشنایان با C )

    يه سوال داشتم :++c رو مي شه با ++ Turbo c اجرا كرد ؟؟؟؟


    بعد اينكه ; using namespace std چيه ؟؟؟ چون اگه تو برنامه ام باشه خودش عامل اروره !!؟؟؟

  12. #12

    Cool نقل قول: آموزش زبانC++‎‎ (برای آشنایان با C )

    سلام
    ممنون با بت توجهتون
    (این چند روزی که نتونستم بیام اینجا ادامه درس رو بگم بابت این بود که یه سری مشکل برام پیش اومده بود ازتون عذر میخوام.این مشکلم که برطرف بشه حتما دوباره با پشتکار بیشتر آموزش رو ادامه میدم .)


    دوست عزیز جناب صادق
    بله میشه با turboC++‎ هم اجرا کرد
    منتها چون توربو خیلی قدیمی هست شامل استاندارد های جدید نمیشه
    و اون using namespace std; هم جز و همین استاندارد های جدید هست
    تو برنامه تون در محیط توربو می تونید اون رو حذف کنید و یه .h هم به هدر اضافه کنیدتا برنامه اجرا بشه.


    using چیه اصلا ؟

    using namespace std
    در واقع یک فضای نام هست, که, فضای نام std شامل یک سری کتابخانه ها هست,که ما به صورت روزمره و منظم از اونا در برنامه ها مون می خواهیم استفاده کنیم.


    بنابراین هروقت نیاز داشتیم,از کتابخانه ای که بخشی از فضای نام std است,استفاده کنیم به جای تایپ کتابخانه با پسوندش,بطوریکه iostream.h می باشد,به سادگی نام کتابخانه را مانند iostream تایپ می کنیم.سپس در خط بعدی using namespace تایپ می کنیم.
    برای مثال به جای تایپ:
    #include <iostream.h>
    #include <conio.h>
    #include <string.h>

    تایپ می کنیم:
    #include <iostream>
    #include <conio>
    #include <string>

    using namespace std;
    زیرا روش دوم با استاندارد C++‎ مطابقت دارد,و ما هنگامی که به کتابخانه ها نیاز داشته باشیم از آن استفاده میکنیم.

    این

  13. #13

    Cool نقل قول: آموزش زبانC++‎‎‎ (برای آشنایان با C )

    کلاس:class:

    تعریف:

    تا قبل از کلاس ما همیشه از انواع داده ای مثل int,float ,char , ... استفاده میکردیم و میکنیم
    کلاس نیز نوع جدید برای تعریف داده ها و متغییر های مورد نیاز ما هست که این نوع داده ای (کلاس رو) نیز خودمون تعریف میکنیم که چه ویژگی هایی رو داشته باشه واسه دستگاه یا هر بخشی یک کلاس طبق نیازمون تعریف میکنیم.


    دلایل و نیاز به تعریف کلاس:

    1-در زبان برنامه نویسی تعداد انواع داده ای بسیار کم است و برای هر کاری نمی شه به سادگی استفاده کرد در صورتی که با تعریف کلاس مورد نیاز میتونیم متغییر هایی با ویژگی هایی که در اون کلاس هست تعریف کرده(مثلا int x ایکس متغییری از اینت هست که ویژگی های اینت رو داره که یعنی صحیح بودن عدد و حداکثر و حداقل مقداری برای اینت. کلاس نیز همینطوری مثل اینت و اشیا هم مثل همون ایکس هستند)و استفاده کنیم.

    2-ایجاد نظم و سادگی و خوانایی بیشتر در یک برنامه و...


    صورت کلی یک کلاس:

    }نام کلاس class

    توابع و متغییر هاوکلاس های دیگر(معمولا friendها اینجا نوشته میشوند)

    public:

    توابع و متغییر های عمومی

    private:


    توابع و متغییر های خصوصی که فقط برای این کلاس شناخته میشوند(وغیر مستقیم برای friend هاش و مستقیم برای
    ارث برندگان private این کلاس...البته در این بخش بیشتر متعییر های خصوصی تعریف میشوند)

    protected:

    داده های محافظت شده(که البته زیاد بکار نرفته.در واقع یه چیزی بین private ,public.البته من خودم تا بحال از ش استفاده نکردما)

    ;اشیا کلاس{





قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •