ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





صفحه 3 از 4 نخست 1234 آخرین
نمایش نتایج: از 21 به 30 از 34
  1. #21
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]نوع داده ای enum[/B]

    [B]نوع داده ای [/B][B]enum[/B]
    [B]enum[/B] يک نوع داده ای تعريف شده توسط برنامه نويس را که به آن نوع داده شمارش می گويند، ايجاد می کند. نحوه ايجاد يک نوع داده شمارش به صورت زير می باشد.
    کد:

    کد:
     enum {ثابت n و ... و ثابت 2 و  ثابت 1} نام نوع داده


    اين دستور به ترتيب در ثابت 1 ، ثابت 2 و ... و ثابتn اعداد صحيح متوالی [B]0 [/B]تا [B]n[/B] را قرار می دهد . به صورت پيش فرض مقداردهی متغيرها در اين دستور از صفر شروع می شود.
    کد:

    کد:
     enum TrueFalse  {FALSE , TRUE}


    دستور فوق به ثابت [B]FALSE[/B] ، عدد [B]صفر[/B] و به ثابت [B]TRUE[/B] عدد [B]1[/B] را تخصيص می دهد. حال اگر بخواهيم مقداردهی از عددی غير از صفر شروع شود بايد عدد مورد نظر را مشخص کنيم :
    کد:

    کد:
     enum Days {SAT  = 1, SUN, MON, TUE, WED, THU, FRI}


    دستور فوق به روزهای هفته به ترتيب اعداد [B]1[/B] تا [B]7[/B] را نسبت می دهد. توصيه می شود که نام ثابت های شمارشی را با حروف بزرگ بنويسيد ، بدين صورت اين ثابتها با متغيرهای برنامه ، اشتباه نمی شوند. ضمناً [B]enum[/B] را در ابتدای برنامه به کار ببريد.
    در حقيقت اين نوع داده به هر يک از موارد ليستی از اعداد نامی را نسبت می دهد. به عنوان نمونه در مثال روزهای هفته هر يک از اعداد [B]1[/B] تا [B]7 [/B]را با يکی از روزهای هفته نام گذاری کرديم.
    مقدار دهی موارد ليست به صورت های مختلف امکان پذير می باشد.
    کد:

    کد:
     enum Days {  MON, TUE, WED, THU, FRI, SAT , SUN = 0}


    دستور فوق [B]SUN[/B] را با عدد [B]صفر[/B] و [B]SAT[/B] را با عدد [B]1-[/B] و ... و [B]MON[/B] را با عدد [B]-6[/B] مقدار دهی می کند. کد:

    کد:
    enum Colors {BLACK = 2, GREEN = 4, RED = 3,
    BLUE = 5, GRAY,WHITE = 0}
    در دستور فوق هر يک از موارد با عدد نسبت داده شده مقدار دهی می شوند و [B]GRAY[/B] با عدد [B]6[/B] مقدار دهی می شود چون بعد از [B]BLUE = 5[/B] آمده است.
    به محض ساخته شدن ليست ، نوع داده نوشته شده توسط برنامه نويس قابل استفاده می گردد و می توان متغيرهايی را از نوع داده نوشته شده توسط برنامه نويس به همان شيوه ای که ساير متغيرها را تعريف می کرديم، تعريف کرد. به عنوان مثال :
    کد:

    کد:
    TrueFalse tf1,tf2;
    Days day1, day2 = SUN;
    Colors color1 = BLACK , color2 = GRAY;
    همچنين متغيرها را می توان هنگام ايجاد نوع داده، تعريف کرد. به عنوان مثال :
    کد:

    کد:
     TrueFalse  {FALSE, TRUE} tf1 ,tf2;


    [B]نکته :[/B] تبديل داده ای از نوع [B]enum[/B] به عدد صحيح مجاز می باشد ولی بر عکس اين عمل غير مجاز است. به عنوان مثال : کد:

    کد:
    enum MyEnum {ALPHA, BETA, GAMMA};
    int i = BETA;
    int j = 3+GAMMA;
    دستورات فوق مجاز می باشند، و اين دستورات عدد [B]1[/B] را در [B]i[/B] و [B]5[/B] را در [B]j[/B] قرار می دهند. کد:

    کد:
    enum MyEnum {ALPHA, BETA, GAMMA};
    MyEnum x = 2;
    MyEnum y = 123;
    ولی دستورات فوق غير مجاز می باشند. البته بعضی از کامپايلرها اين موضوع را ناديده می گيرند و تنها يک پيغام اخطار می دهند ولی توصيه می شود که برای پيشگيری از وقوع خطاهای منطقی در برنامه از به کار بردن دستوراتی مانند کدهای فوق خودداری کنيد.
    برنامه زير نحوه کاربرد نوع داده [B]enum[/B] را نشان می دهد. کد:

    کد:
    #include <iostream.h>
    int main()
    {
    enum PizzaSize{SMALL,MEDIUM,LARGE,EXTRALARGE};
    PizzaSize size;
    size=LARGE;
    cout<<"The small pizza has a value of "<<SMALL;
    cout<<"\nThe medium pizza has a value of "<<MEDIUM;
    cout<<"\nThe large pizza has a value of "<<size;
    return 0;
    }


    خروجی برنامه به صورت زير می باشد:
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  2. #22
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]توابع بدون خروجی و آرگومان -قسمت اول[/B]

    [B]توابع بدون خروجی و آرگومان[/B]
    در برنامه نويسی به توابعی نياز پيدا می کنيم که نياز ندارند چيزی را به عنوان خروجی تابع برگردانند و يا توابعی که نياز به آرگومان و ورودی ندارند ويا هر دو. زبان ++C برای امکان استفاده از چنين توابعی، کلمه [B]void[/B] را در اختيار ما قرار داده است. اگر بخواهيم تابعی بدون خروجی ايجاد کنيم کافی است به جای نوع داده خروجی تابع کلمه [B]void[/B] را قرار دهيم. به تابع زير توجه کنيد. کد:

    کد:
    void function (int num)
    {
    cout << "My input is" << num << endl;
    }
    همانطور که می بينيد اين تابع نيازی به استفاده از دستور [B]return[/B] ندارد چون قرار نيست چيزی را به عنوان خروجی تابع برگرداند. تابع فوق بر اساس مقدار داده ورودی، پيغامی را بر روی صفحه نمايش چاپ می کند.
    حال که با [B]void[/B] آشنا شديد می توانيم از اين به بعد تابع [B]main[/B] را از نوع [B]void[/B] تعريف کنيم. در اين صورت ديگر نيازی به استفاده از دستور [B]return 0;[/B]در انتهای برنامه نداريم : کد:

    کد:
    void main()
    {
    دستورات برنامه
    }
    به عنوان مثال برنامه برج هانوی را که در مبحث توابع بازگشتی نوشتيم با استفاده از نوع [B]void[/B] بازنويسی می کنيم. کد:

    کد:
    #include <iostream.h>
    void hanoi(int, char, char, char);
    void main( )
    {
    cout<<"Moving 4 disks form tower A to C."<<endl;
    hanoi(4,'A','B','C');
    }
    void hanoi(int n, char first, char help, char second) {
    if (n == 1) {
    cout << "Disk " << n << " from tower " << first
    << " to tower " << second << endl;
    } else {
    hanoi(n-1, first, second, help);
    cout << "Disk " << n << " from tower " << first
    << " to tower " << second << endl;
    hanoi(n-1, help, first, second);
    }
    }
    همانطور که در برنامه فوق می بينيد تابع [B]hanoi[/B] بدون دستور [B]return[/B] نوشته شده است، زيرا نوع تابع [B]void[/B] می باشد، يعنی تابع بدون خروجی است و توابع بدون خروجی را می توانيم مستقيماً همانند برنامه فوق فراخوانی کنيد. يعنی کافی است نام تابع را همراه آرگومانهای مورد نظر بنويسيم.
    برای ايجاد توابع بدون آرگومان می توانيد در پرانتز تابع کلمه [B]void[/B] را بنويسيد يا اينکه اين پرانتز را خالی گذاشته و در آن چيزی ننويسيد. کد:
    کد:
      
     
    void function1();
    int function2(void);
    در دو دستور فوق تابع [B]function1[/B] از نوع توابع بدون خروجی و بدون آرگومان ايجاد می شود. و تابع [B]function2[/B] از نوع توابع بدون آرگومان و با خروجی از نوع عدد صحيح می باشد، برای آشنايی با نحوه کاربرد توابع بدون آرگومان به برنامه زير توجه کنيد : کد:

    کد:
    #include <iostream.h>
    int function(void);
    void main( )
    {
    int num, counter = 0;
    float average, sum = 0;
    num=function();
    while (num != -1){
    sum += num ;
    ++counter;
    num=function();
    }
    if (counter != 0){
    average = sum / counter;
    cout << "The average is " << average << endl;
    }
    else
    cout << "No numbers were entered." << endl;
    }
    int function(void){
    int x;
    cout << "Enter a number (-1 to end):";
    cin >>x;
    return x;
    }
    همانطور که در برنامه فوق مشاهده می کنيد تابع [B]function[/B] از نوع توابع بدون آرگومان می باشد و دارای خروجی صحيح می باشد. اين تابع در برنامه دو بار فراخوانی شده است و وظيفه اين تابع دريافت متغيری از صفحه کليد و برگرداندن آن متغير به عنوان خروجی تابع می باشدو دستور [B]num=function()[/B] عدد دريافت شده از صفحه کليد را در متغير [B]num[/B] قرار می دهد اگر به ياد داشته باشيد اين برنامه قبلاً بدون استفاده از تابع در مبحث ساختار تکرار while نوشته بوديم. برای درک بهتر اين برنامه توصيه می شود آن را با برنامه موجود در مبحث ساختار تکرار while مقايسه کنيد، و متوجه خواهيد شد که تابع [B]function[/B] ما را از دوباره نويسی بعضی از دستورات بی نياز کرده است و نيز برنامه خلاصه تر و مفهوم تر شده است.
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  3. #23
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]توابع بدون خروجی و آرگومان -قسمت دوم[/B]

    [B]قوانين حوزه[/B]
    قسمتی از برنامه که در آن متغيری تعريف شده و قابل استفاده می باشد، حوزه آن متغير گفته می شود. در زبان ++C به قسمتی از برنامه که با يک علامت ( [B]}[/B] ) شروع شده و با علامت ( [B]{[/B] ) به پايان می رسد يک بلوک می گويند. به عنوان مثال هنگامی که متغيری را در يک بلوک تعريف می کنيم، متغير فقط در آن بلوک قابل دسترسی می باشد ولذا حوزه آن متغير بلوکی که در آن تعريف شده است ، می باشد. به مثال زير توجه کنيد : کد:
    کد:
     
    #include <iostream.h>
    void main( )
    {
    {
    int x= 1;
    cout << x;
    }
    cout << x;
    }


    اگر برنامه فوق را بنويسيم و بخواهيم اجرا کنيم پيغام خطای [B]Undefined symbol 'x'[/B] را دريافت خواهيم کرد ودليل اين امر اين است که متغير [B]x[/B] فقط در بلوک درونی تابع [B]main[/B] تعريف شده است، لذا در خود تابع قابل دسترسی نمی باشد. در اين مبحث به بررسی حوزه تابع، حوزه فايل و حوزه بلوک می پردازيم.
    متغیری که خارج از همه توابع تعریف می شود، دارای حوزه فایل می باشد و چنین متغیری برای تمام توابع، شناخته شده وقابل استفاده می باشد. به مثال زیر توجه کنید: کد:

    کد:
    #include <iostream.h>
    int x=1;
    int f();
    void main( )
    {
    cout << x;
    cout << f();
    cout << x;
    }
    int f(){
    return 2*x;
    }
    متغیر [B]x[/B] دارای حوزه فایل می باشد. لذا در تابع [B]main[/B] و تابع [B]f[/B] قابل استفاده می باشد. خروجی برنامه فوق به صورت زير می باشد.
    [B]121[/B]


    متغیری که درون توابع و یا به عنوان آرگومان تابع تعریف می گردد، دارای حوزه تابع می باشد و از نوع متغیرهای محلی است و خارج ازتابع قابل استفاده و دسترسی نمی باشد. توابعی که تا کنون نوشتیم ومتغیرهایی که در آن ها تعریف کردیم، همگی دارای حوزه تابع بودند. ضمنا این متغیرها، هنگامی که برنامه از آن تابع خارج می شود، مقادیر خود را از دست می دهند. حال اگر بخواهیم یک متغیر محلی تابع، مقدار خود را حفظ کرده و برای دفعات بعدی فراخوانی تابع نیز نگه دارد، زبان ++c کلمه [B]static[/B] را در اختیار ما قرار داده است. کلمه [B]static[/B] را باید قبل از نوع متغیر قرار دهیم. مانند:
    کد:

    کد:
     static int  x=1;


    دستور فوق متغیر [B]x[/B] را از نوع عدد صحیح تعریف می کند و این متغیر با اولین فراخوانی تابع مقدار دهی می شود و در دفعات بعدی فراخوانی تابع مقدار قبلی خود را حفظ می کند. به مثال زیر توجه کنید: کد:

    کد:
    #include <iostream.h>
    int f();
    void main( )
    {
    cout << f();
    cout << f();
    cout << f();
    }
    int f(){
    static int x=0;
    x++;
    return x;
    }
    خروجی برنامه فوق به صورت زیر می باشد:
    [B]123[/B]


    برنامه با اولین فراخوانی تابع f به متغیر محلی [B]x[/B] مقدار [B]0[/B] را می دهد، سپس به [B]x[/B] یک واحد اضافه می شود و به عنوان خروجی برگردانده می شود. پس ابتدا عدد[B]1[/B] چاپ می گردد. در بار دوم فراخوانی تابع [B]f[/B] ، متغیر [B]x[/B] دوباره مقداردهی نمی شود، بلکه به مقدار قبلی آن که عدد [B]1[/B] است، یک واحد اضافه گشته و به عنوان خروجی برگردانده می شود. پس این بار عدد [B]2[/B] چاپ می گردد و در نهایت با فراخوانی تابع [B]f[/B] برای بار سوم عدد [B]3[/B] چاپ خواهد شد. اگر برنامه فوق را بدون کلمه [B]static[/B] بنويسيم، خروجی [B]111[/B] خواهد بود.
    یکی از نکاتی که می توان در قوانین حوزه بررسی کرد، متغیرهای همنام در بلوک های تو در تو می باشد. به مثال زیر توجه کنید: کد:

    کد:
    #include <iostream.h>
    void main( )
    {
    int x=1;
    cout << x;
    {
    int x= 2;
    cout << x;
    }
    cout << x;
    }
    در برنامه فوق متغیر [B]x[/B] یک بار در تابع [B]main[/B] تعریف شده است و با دیگر در بلوک درونی. خروجی برنامه به صورت زیر می باشد:
    [B]121[/B]



    [B]ادامه دارد [/B]
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  4. #24
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]توابع بدون خروجی و آرگومان -قسمت سوم[/B]

    هنگامی که در بلوک درونی متغیری با نام [B]x[/B] را مجددا تعریف می کنیم، متغیر خارج از بلوک از دید برنامه پنهان می گردد و تنها متغير داخل بلوک قابل استفاده می شود. همچنین هنگامی که برنامه از بلوک خارج می گردد، متغیر [B]x[/B] بیرونی دوباره قابل استفاده می گردد. ضمنا توجه داشته باشید که مقدار متغیر x تابع [B]main[/B] تغییری نکرده است، یعنی با وجود استفاده از متغیری همنام و نیز مقداردهی آن، تاثیری روی متغیر [B]x[/B] تابع ایجاد نشده است. چون حوزه متغیر [B]x[/B] بلوک درونی تنها داخل آن بلوک می باشد.
    برنامه زیر تمام موارد ذکر شده در این مبحث را شامل می شود. بررسی آن و خروجی برنامه شما را در فهم بهتر این مبحث یاری می نماید. کد:

    کد:
    #include <iostream.h>
    void useLocal( void ); // function prototype
    void useStaticLocal( void ); // function prototype
    void useGlobal( void ); // function prototype
    int x = 1; // global variable
    void main()
    {
    int x = 5; // local variable to main
    cout <<"local x in main's outer scope is "<<x<<endl;
    { // start new scope
    int x = 7;
    cout <<"local x in main's inner scope is "<<x<<endl;
    } // end new scope
    cout <<"local x in main's outer scope is "<<x<< endl;
    useLocal(); //useLocal has local x
    useStaticLocal(); //useStaticLocal has static local x
    useGlobal(); //useGlobal uses global x
    useLocal(); //useLocal reinitializes its local x
    useStaticLocal();//static local x retains its prior value
    useGlobal(); //global x also retains its value
    cout << "\nlocal x in main is " << x << endl;
    } // end main
    //useLocal reinitializes local variable x during each call
    void useLocal( void )
    {
    int x = 25; //initialized each time useLocal is called
    cout << endl << "local x is " << x
    << " on entering useLocal" << endl;
    ++x;
    cout << "local x is " << x
    << " on exiting useLocal" << endl;
    } // end function useLocal
    // useStaticLocal initializes static local variable x
    // only the first time the function is called; value
    // of x is saved between calls to this function
    void useStaticLocal( void )
    {
    // initialized first time useStaticLocal is called.
    static int x = 50;
    cout << endl << "local static x is " << x
    << " on entering useStaticLocal" << endl;
    ++x;
    cout << "local static x is " << x
    << " on exiting useStaticLocal" << endl;
    } // end function useStaticLocal
    // useGlobal modifies global variable x during each call
    void useGlobal( void )
    {
    cout << endl << "global x is " << x
    << " on entering useGlobal" << endl;
    x *= 10;
    cout << "global x is " << x
    << " on exiting useGlobal" << endl;
    } // end function useGlobal
    خروجی برنامه به صورت زیر می باشد:
    کد PHP:
    local x in  main's outer scope is 5

     local x in  main'
    s inner scope is 7
     local x in  main
    's outer scope is 5
     local x is 25  on entering useLocal
     local x is 26  on exiting useLocal
     local static x  is 50 on entering useStaticLocal
     local static x  is 51 on exiting useStaticLocal
     global x is 1  on entering useGlobal
     global x is 10  on exiting useGlobal
     local x is 25  on entering useLocal
     local x is 26  on exiting useLocal
     local static x  is 51 on entering useStaticLocal
     local static x  is 52 on exiting useStaticLocal
     global x is 10  on entering useGlobal
     global x is 100  on exiting useGlobal
     local x in main  is 5 
    در برنامه فوق سه تابع با نام های [B]useLocal[/B] ,[B]useGlobal[/B] ,[B]useStaticLocal[/B] داریم. متغیر x تعریف شده در ابتدای برنامه با مقدار [B]1[/B] به عنوان یک متغیر عمومی می باشد و دارای حوزه فایل است. در تابع [B]main[/B]، متغیر [B]x[/B] با مقدار [B]5[/B] تعریف شده است. لذا متغیر عمومی [B]x[/B] با مقدار [B]1[/B] نادیده گرفته می شود و هنگام اجرای دستور [B]cout[/B]، متغير [B]x[/B] با مقدار [B]5[/B] در خروجی چاپ می شود. در بلوک درونی، متغیر [B]x[/B] با مقدار [B]7[/B] تعریف شده است. لذا [B]x[/B] عمومی و [B]x[/B] محلی تابع [B]main[/B] نادیده گرفته می شوند و تنها [B]x[/B] با مقدار [B]7[/B] توسط دستور [B]cout[/B] چاپ می گردد. پس از آنکه بلوک حوزه [B]x[/B] با مقدار [B]7[/B] به اتمام می رسد، دوباره [B]x[/B] محلی تابع [B]main[/B] با مقدار [B]5[/B] نمایان می گردد.
    تابع [B]useLocal[/B] متغیر محلی [B]x[/B] را با مقدار [B]25[/B] در خود تعریف می کند. هنگامی که این تابع در برنامه فراخوانی می شود، تابع ، متغیر [B]x[/B] را چاپ می کند، سپس یک واحد به آن اضافه کرده و دوباره [B]x[/B] را چاپ می کند. هر بار که این تابع فراخوانی می شود، متغیر [B]x[/B] با مقدار [B]25[/B] در آن تعریف می شود و هنگام خروج از تابع از بین می رود.
    تابع [B]useStaticLocal[/B] متغیرمحلی [B]x[/B] را از نوع [B]static[/B] تعریف کرده و با عدد [B]50[/B] مقداردهی می کند و سپس آن را چاپ کرده و یک واحد به آن اضافه می کند و دوباره چاپش می کند. اما هنگام خروج از تابع مقدار [B]x[/B] از بين نمی رود. و با فراخوانی مجدد تابع ، مقدار قبلی متغير [B]x[/B] محلی ، برای اين تابع موجود می باشد و دوباره از نو مقداردهی نمی شود. در اينجا هنگامی که تابع دوباره فراخوانی می شود، [B]x[/B] حاوی [B]51[/B] خواهد بود.
    تابع [B]useGlobal[/B] هيچ متغيری را در خود تعريف نمی کند. لذا هنگامی که به متغير [B]x[/B] مراجعه می کند ، متغير[B]x[/B] عمومی مورد استفاده قرار می گيرد. هنگامی که اين تابع فراخوانی می شود مقدار متغير [B]x[/B] عمومی چاپ می شود. سپس در [B]10[/B] ضرب شده و دوباره چاپ می گردد. هنگامی که برای بار دوم تابع [B]useGlobal[/B] فراخوانی می شود [B]x[/B] عمومی حاوی عدد [B]100[/B] می باشد.
    پس از اينکه برنامه هر يک از توابع فوق را دوبار فراخوانی کرد ، مجددا متغير [B]x[/B] تابع [B]main[/B] با مقدار [B]5[/B] چاپ می گردد و اين نشان می دهد که هيچ يک از توابع ، تاثيری روی متغير محلی تابع [B]main[/B] نداشتند.
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  5. #25
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]آرگومانهای پیش فرض توابع و عملگرهای حوزه و ارسال آرگومان به توابع[/B]

    [B]آرگومانهای پیش فرض توابع و عملگرهای حوزه و ارسال آرگومان به توابع[/B]

    در برنامه نويسی ممکن است تابعی را به دفعات با آرگومانهای يکسانی صدا بزنيم . در چنين حالتی ، برنامه نويس می تواند برای آرگومانهای تابع ، مقداری را به عنوان پيش فرض قرار دهد . هنگامی که در فراخوانی توابع ، آرگومان دارای مقدار پيش فرض حذف شده باشد ، کامپايلر مقدار پيش فرض آن آرگومان را به تابع خواهد فرستاد .
    آرگومان های پيش فرض بايد سمت راستی ترين آرگومان های تابع باشند . هنگامی که تابعی با بيش از يک آرگومان فراخوانی می شود ، اگر آرگومان حذف شده سمت راستی ترين آرگومان نباشد ، آنگاه همه آرگومانهای سمت راست آن آرگومان نيز بايد حذف شوند . آرگومان های پيش فرض بايد در اولين جايی که نام تابع آورده می شود ( که معمولاً در پيش تعريف تابع است ) مشخص شوند .
    مقادير پيش فرض می توانند اعداد ، مقادير ثابت ، متغيرهای عمومی و يا خروجی تابع ديگر باشند .
    برنامه زير نحوه مقدار دهی به آرگومان های پيش فرض و نيز نحوه فراخوانی تابع با مقدار پيش فرض را نشان می دهد . در اين برنامه حجم جعبه ای محاسبه می شود . کد:

    کد:
    #include
    // function prototype that specifies default arguments
    int boxVolume(int length=1, int width=1, int height=1);
    int main()
    {
    //no arguments--use default values for all dimensions
    cout <<"The default box volume is: "<
    //specify length; default width and height
    cout <<"\n\nThe volume of a box with length 10,\n"
    <<"width 1 and height 1 is: "<
    //specify length and width; default height
    cout <<"\n\nThe volume of a box with length 10,\n"
    <<"width 5 and height 1 is: "<
    //specify all arguments
    cout <<"\n\nThe volume of a box with length 10,\n"
    <<"width 5 and height 2 is: "<
    <
    return 0; // indicates successful termination
    } //end main
    // function boxVolume calculates the volume of a box
    int boxVolume( int length, int width, int height )
    {
    return length * width * height;
    } // end function boxVolume
    خروجی برنامه فوق به صورت زير می باشد .
    کد PHP:
    The default box  volume is1

     The volume of a  box with length 10
    ,
     
    width 1 and  height 1 is10
     The volume of a  box with length 10
    ,
     
    width 5 and  height 1 is50
     The volume of a  box with length 10
    ,
     
    width 5 and  height 2 is100 
    در پيش تعريف تابع [B]boxVolume[/B] به هر يک از سه آرگومان تابع مقدار پيش فرض 1 داده شده است . توجه داشته باشيد که مقادير پيش فرض بايد در پيش تعريف تابع نوشته شوند ، ضمناً نوشتن نام آرگومان های تابع در پيش تعريف الزامی نيست و در برنامه فوق اينکار تنها برای خوانايی بيشتر انجام گرفته است ، البته توصيه می شود که شما نيز از اين شيوه استفاده کنيد . به عنوان مثال پيش فرض تابع [B]boxVolume[/B] در برنامه فوق را می توانستيم به صورت زير نيز بنويسيم :
    کد:

    int boxVolume (int = 1 , int = 1 , int = 1 );


    در اولين فراخوانی تابع [B]boxVolume[/B] در برنامه فوق هيچ آرگومانی به آن داده نشده است لذا هر سه مقدار پيش فرض آرگومان ها مورد استفاده قرار می گيرد و حجم جعبه عدد 1 می شود . در دومين فراخوانی آرگومان [B]length[/B]ارسال می گردد ، لذا مقادير پيش فرض آرگومان های [B]width[/B]و [B]height[/B]استفاده می شوند . در سومين فراخوانی آرگومان های [B]width[/B] و [B]length[/B] ارسال می گردند لذا مقادير پيش فرض آرگومان [B]height[/B] مورد استفاده قرار می گيرد . در آخرين فراخوانی هر سه آرگومان ارسال می شوند لذا از هيچ مقدار پيش فرضی استفاده نمی شود .
    پس هنگامی که يک آرگومان به تابع فرستاده می شود ، آن آرگومان به عنوان [B]length[/B] در نظر گرفته می شود و هنگامی که دو آرگومان به تابع [B]boxVolume[/B] فرستاده می شود تابع آنها را به ترتيب از سمت چپ به عنوان آرگومان [B]length[/B] و سپس [B]width[/B] در نظر می گيرد و سرانجام هنگامی که هرسه آرگومان فرستاده می شود به ترتيب از سمت چپ در [B]length[/B] و [B]width[/B] و [B]height[/B] قرار می گيرند .


    [B]عملگر يگانی تفکيک حوزه[/B]
    همانطور که در مبحث قوانين حوزه ديديد تعريف متغيرهای محلی و عمومی با يک نام در برنامه امکان پذير می باشد . زبان [B]++[/B][B]C[/B] عملگر يگانی تفکيک دامنه ([B]::[/B]) را برای امکان دستيابی به متغير عمومی همنام با متغير محلی ، در اختيار ما قرار داده است . توجه داشته باشيد که اين عملگر تنها قادر به دستيابی به متغير عمومی در حوزه فايل می باشد . ضمناً متغير عمومی بدون نياز به اين عملگر نيز قابل دستيابی می باشد ؛ به شرط آنکه متغيرمحلی همنام با متغير عمومی ، در برنامه به کار برده نشود . استفاده از عملگر ([B]::[/B]) همراه نام متغير عمومی ، در صورتی که نام متغير عمومی برای متغير ديگری به کار برده نشده باشد ، اختياری است . اما توصيه می شود که برای اينکه بدانيد از متغير عمومی استفاده می کنيد از اين عملگر همواره در کنار نام متغير عمومی استفاده کنيد . برنامه زير نحوه کاربرد عملگر ([B]::[/B]) را نشان می دهد . کد:

    کد:
    #include
    float pi=3.14159;
    void main( )
    {
    int pi=::pi;
    cout << "Local pi is : " << pi << endl;
    cout << "Global pi is : " << ::pi << endl;
    }
    خروجی برنامه به صورت زير می باشد :
    [B]Local pi is : 3[/B]

    [B]Global pi is : 3.14159[/B]


    در برنامه فوق متغير عمومی [B]pi[/B] از نوع [B]float[/B] تعريف شده است و در تابع متغير محلی [B]pi[/B] از نوع [B]int[/B] با مقدار اوليه [B]pi[/B] عمومی مقدار دهی می شود . توجه داشته باشيد که برای دستيابی به مقدار [B]pi[/B] عمومی از عملگر يگانی تفکيک حوزه ([B]::[/B]) استفاده شد . پس از مقدار دهی به [B]pi[/B] محلی ، توسط دستور [B]cout[/B] ، متغير [B]pi[/B] محلی که حاوی عدد [B]3[/B] است چاپ می گردد و در خط بعدی متغير [B]pi[/B] عمومی که حاوی [B]3.14159[/B] می باشد چاپ خواهد شد .


    [B]ادامه دارد....[/B]
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  6. #26
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]ارسال آرگومان ها به تابع ، با ارجاع[/B]

    [B]ارسال آرگومان ها به تابع ، با ارجاع[/B]
    تا به حال ، در تمام توابعی که نوشتيم آرگومان ها با مقدار به توابع فرستاده می شدند . اين بدان معناست که هنگامی که توابع با آرگومانها فرا خوانی می شدند ، چيزی که ما به عنوان ورودی تابع ارسال می کرديم مقدار يا عدد بود و هرگز خود متغير به تابع فرستاده نشد ، به عنوان مثال تابع [B]maximum[/B] درمبحث تعريف توابع را به صورت زير فراخوانی می کنيم :


    کد:
     int a=5, b=6,  c=7, max; کد:
    کد:
     max =  maximum(a,b,c);

    کاری که در اينجا صورت می گيرد فراخوانی تابع و فرستادن مقادير موجود در [B]a[/B] و[B]b[/B] و[B]c[/B] يعنی 5 و 6 و 7 به تابع می باشد . و خود متغيرها فرستاده نمی شوند .

    بدين صورت هنگامی که تابع [B]maximum[/B] فراخوانی می شود ، مقدار متغيرهای [B]x[/B] و[B]y[/B] و[B]z[/B] به ترتيب برابر [B]5[/B] و [B]6[/B] و [B]7[/B]خواهند شد و هرگونه تغييری روی متغيرهای [B]x[/B] و[B]y[/B] و[B]z[/B] در تابع ، تأثيری روی متغيرهای [B]a[/B] و[B]b[/B] و[B]c[/B] نخواهد داشت . زيرا خود متغيرهای [B]a[/B] و[B]b[/B] و[B]c[/B] به تابع فرستاده نشده اند بلکه مقادير موجود در آنها به تابع ارسال گشته اند .
    در برنامه نويسی مواردی پيش می آيد که بخواهيد از داخل تابع ، مقادير متغيرهای خارجی را تغيير دهيم ، به عنوان مثال در تابع [B]maximum[/B] مقدار متغير [B]a[/B]را از داخل تابع تغيير دهيم . برای نيل به اين هدف بايد از روش ارسال آرگومان ها با ارجاع استفاده کنيم . برای آنکه آرگومان تابعی با ارجاع فرستاده شود ، کافی است در پيش تعريف تابع بعد از تعيين نوع آرگومان يک علامت ([B]&[/B]) بگذاريم و نيز در تعريف تابع قبل از نام آرگومان يک علامت ([B]&[/B]) قرار دهيم . برای آشنايی با نحوه ارسال آرگومان ها با ارجاع به برنامه زير توجه کنيد .


    کد:

    کد:
     #include void duplicate  (int & , int & );void main (  ){    int a=1 , b=2 ;    cout << "a = " << a << "  and b = " << b << endl;    duplicate (a,b);    cout << "a = " << a << "  and b = " << b << endl;}void duplicate  (int &x , int &y){    x*=2;    y*=2; }

    خروجی برنامه به صورت زير می باشد .


    [B]a = 1 and b = 2[/B][B]a = 2 and b = 4[/B]

    در برنامه فوق متغيرهای [B]a[/B] و[B]b[/B] به تابع ارسال می گردند و سپس در دو ضرب می شوند. در اين برنامه مقدار متغيرهای [B]a[/B] و[B]b[/B] فرستاده نمی شود بلکه خود متغير فرستاده می شود و لذا هنگامی که دستورهای


    x*=2;y*=2;

    اجرا می گردند مقادير دو متغير[B]a[/B] و[B]b[/B] دو برابر می شود . در حقيقت [B]x[/B] و[B]y[/B]مانند نام مستعاری برای [B]a[/B] و[B]b[/B] می باشند .

    هنگامی که متغيری با ارجاع فرستاده می شود هر گونه تغييری که در متغير معادل آن در تابع صورت گيرد عيناً آن تغيير بر روی متغير ارسالی نيز اعمال می گردد .
    [B]مثال :[/B] تابعی بنويسيد که دو متغير را به عنوان ورودی دريافت کرده و مقادير آنها را جابه جا کند . از اين تابع در برنامه ای استفاده کنيد .


    کد:

    کد:
     #include void change  (int & , int &);int main (  ) {      int a=1 , b=2 ;      cout << "a is " << a <<  " and b is " << b << endl;      change (a,b);      cout << "a is " << a <<  " and b is " << b << endl;      return 0;  }void change  (int &x , int &y) {      int temp;       temp = y;      y = x;      x = temp; }

    خروجی برنامه به صورت زير است :


    [B]a is 1 and b is 2[/B][B]a is 2 and b is 1[/B]

    برنامه فوق مقادير دو متغير [B]a[/B] و[B]b[/B] را توسط [B]change[/B] با شيوه ارسال آرگومان با ارجاع جابه جا می کند .
    يکی ديگر از کاربردهای ارسال با ارجاع ، دريافت بيش از يک خروجی از تابع می باشد ، به عنوان مثال تابع [B]prevnext[/B] در برنامه زير مقادير صحيح قبل و بعد از اولين آرگومان را به عنوان خروجی بر می گرداند .



    کد:

    کد:
     #include void prevnext  (int ,int & , int &);void main (  ){    int x = 100 , y , z ;    cout << "The input of prevnext  function is "         << x <<  endl;    prevnext (x,y,z) ;    cout << "previous =" << y  <<",Next =" << z;}void prevnext  (int input , int & prev , int & next){    prev = input - 1 ;    next = input + 1 ;}

    خروجی برنامه فوق به صورت زير می باشد .


    [B]The input of prevnext function is 100[/B][B]previous =99,Next =101[/B]

    همانطور که مشاهده می کنيد آرگومان [B]input[/B] مقدار داده موجود در متغير [B]x[/B] را دريافت می کند ولی آرگومان های [B]prev[/B] و[B]next[/B] خود متغيرهای [B]y [/B]و[B]z[/B] را دريافت می کنند . لذا تغييرات روی متغير[B]prev[/B] و[B]next[/B] بر روی [B]y [/B]و[B]z[/B] انجام می گيرد و توسط تابع مقدار دهی می شوند


    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  7. #27
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]گرانبار کردن توابع (استفاده از يک نام برای چند تابع) [/B]
    [B]++[/B][B]C[/B] استفاده از يک نام را برای چند تابع ، هنگامی که توابع از نظر نوع آرگومان ها ، تعداد آرگومان ها يا ترتيب قرار گرفتن نوع آرگومان ها با هم متفاوت باشند را امکان پذير کرده است اين قابليت ، گرانبار کردن توابع ناميده می شود . هنگامی که يک تابع گرانبار شده فراخوانی می شود کامپايلر با مقايسه نوع ، تعداد و ترتيب آرگومان ها تابع درست را انتخاب می کند . معمولاً از توابع گرانبار شده برای ايجاد چند تابع با نامهای يکسان که کار يکسانی را بر روی انواع داده ای متفاوتی انجام می دهند استفاده می شود . به عنوان مثال اکثر توابع رياضی زبان [B]++[/B][B]C[/B] برای انواع داده ای متفاوت گرانبار شده اند . گرانبار کردن توابعی که کار يکسانی را انجام می دهند برنامه را قابل فهم تر و خواناتر می سازد . برنامه زير نحوه به کار گيری توابع گرانبار شده را نشان می دهد . کد:

    #
    کد:
    include
    کد:
     
    int square( int );
    double square( double );
    void main()
    {
    // calls int version
    int intResult = square( 7 );
    // calls double version
    double doubleResult = square( 7.5 );
    cout << "\nThe square of integer 7 is "
    << intResult
    << "\nThe square of double 7.5 is "
    << doubleResult
    << endl;
    } // end main
    // function square for int values
    int square( int x )
    {
    cout <<"Called square with int argument: "
    << x << endl;
    return x * x;
    } // end int version of function square
    // function square for double values
    double square( double y )
    {
    cout <<"Called square with double argument: "
    << y << endl;
    return y * y;
    } // end double version of function square
    خروجی برنامه به صورت زير می باشد .
    کد PHP:
    Called square  with int argument7

     Called square  with double argument
    7.5
     The square of  integer 7 is 49
     The square of  double 7.5 is 56.25 
    برنامه فوق برای محاسبه مربع يک عدد صحيح [B]([/B][B]int[/B][B])[/B] و يک عدد اعشاری ([B]double[/B]) از تابع گرانبارشده [B]square[/B] استفاده می کند .هنگامی که دستور:
    کد:

    کد:
     int intResult =  square (7) ;


    اجرا می گردد تابع [B]square[/B] با پيش تعريف :
    کد:

    کد:
     int square  (int) ;


    فراخوانی می شود و هنگامی که دستور :
    کد:

    کد:
     double  doubleResult = square (7.5) ;


    اجرا می گردد تابع [B]square[/B] با پيش تعريف :
    کد:

    کد:
     double square  (double );


    فراخوانی می شود .
    [B]نکته : [/B]توجه داشته باشيد که توابع گرانبار شده الزامی ندارند که وظيفه يکسانی را انجام دهند . و ممکن است کاملاً با هم تفاوت داشته باشند ، ولی توصيه می شود که توابعی را گرانبار کنيد که يک کار را انجام می دهند .

    [B]ادامه دارد..[/B]
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  8. #28
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]اعلان آرايه ها[/B]
    يک آرايه مجموعه ای از خانه ها متوالی حافظه می باشد که دارای يک نام و يک نوع می باشند . به هر يک از اين خانه ها يک عنصر آرايه گفته می شود . برای دستيابی به يک عنصر آرايه ، بايد نام آرايه و شمارنده آن خانه را مشخص کنيم . لذا عناصر آرايه توسط متغيری به نام انديس مشخص می شوند به همين دليل، آرايه ها را متغيرهای انديس دار نيز می گويند . نام آرايه ، از قواعد نام گذاری متغيرها پيروی می کند .اعلان آرايه ها به صورت زير است :
    کد:

    کد:
      طول آرايه]  نام آرايه   نوع داده آرايه];


    به عنوان مثال دستور زير آرايه ای به طول [B]6[/B] ، با نام [B]num[/B] را از نوع [B]int[/B] ايجاد می کند .
    کد:

    کد:
     int num  [6];


    توجه داشته باشيد که تمام عناصر دارای نام يکسانی می باشند و تنها با انديس از هم تفکيک می شوند . به عنوان مثال عنصر با انديس [B]2[/B] دارای مقدار [B]23560-[/B] می باشد ، ضمناً انديس عناصر از [B]0[/B] شروع می شود .
    استفاده از يک عبارت محاسباتی به جای انديس عناصر امکان پذير می باشد ، به عنوان مثال با فرض اينکه متغير [B]a[/B] حاوی [B]2[/B] و متغير [B]b[/B] حاوی [B]3[/B] باشد ، دستور زير:
    کد:

    کد:
     num [a+b] + =  3;


    سه واحد به عنصر [B]num [5][/B] اضافه خواهد کرد و اين عنصر حاوی عدد [B]3[/B] می گردد . برای چاپ مجموع سه عنصر اول آرايه می توانيد از دستور زير استفاده کنيد :
    کد:

    کد:
     cout <<  num[0] + num[1] + num[2] << endl;


    برای تقسيم عنصر چهارم آرايه بر [B]2[/B] و قرار دادن حاصل در متغير [B]x[/B] از دستور زير می توانيد استفاده کنيد :
    کد:

    کد:
     x =  num[3]/2;


    [B]نکته :[/B]توجه داشته باشيد که عنصر چهارم آرايه با عنصر شماره چهار ( با انديس چهار ) متفاوت می باشد . همانطور که در دستور فوق ديديد عنصر شماره چهار دارای انديس سه می باشد ، دليل اين امر اينست که انديس گذاری از صفر شروع می شود . در آرايه فوق عنصر چهارم آرايه [B]num[3]=-50[/B] می باشد ولی عنصر شماره چهار ( با انديس چهار ) [B]num[4]=32500[/B] می باشد .
    همانند متغيرها چند آرايه را نيز می توان توسط يک دستور تعريف کرد :
    کد:

    کد:
     int b[100] ,  x[27] ;


    دستور فوق [B]100[/B] خانه از نوع عدد صحيح را برای آرايه با نام [B]b[/B] و [B]27[/B] خانه از نوع عدد صحيح را برای آرايه با نام [B]x[/B] در نظر می گيرد .
    برای مقدار دهی اوليه به هر يک از عناصر آرايه می توانيد از شيوه زير استفاده کنيد :
    کد:

    کد:
     int n[5] = {32  , 27 , 64 , 18 , 95 }


    دستور فوق عناصر آرايه [B]n[/B] را به صورت زير مقدار دهی می کند .
    اگر طول آرايه هنگام تعريف آرايه تعيين نشده باشد و ليست مقدار عناصر نوشته شود ، همانند دستور زير :
    کد:

    کد:
     int n[] = { 1 ,  2 , 3 , 4 , 5 }


    در اين صورت کامپايلر به تعداد عناصر ليست ، خانه حافظه برای آرايه در نظر می گيرد ، مثلاً در دستور فوق [B]5[/B] خانه حافظه برای آرايه [B]n[/B] در نظر گرفته می شود .
    راه ديگری که برای مقدار دهی اوليه به عناصر آرايه وجود دارد استفاده از روش زير است :
    کد:

    کد:
     int num[10] =  {0}


    دستور فوق [B]10[/B] خانه حافظه برای آرايه [B]num[/B] در نظر می گيرد و مقادير همه آنها را صفر می کند . توجه داشته باشيد که اگر از دستور زير استفاده کنيم :
    کد:

    کد:
     int num[10] =  {1}


    تمامی عناصر مقدار [B]1[/B] را نمی گيرند بلکه عنصر اول آرايه يک می شود و بقيه عناصر مقدار صفر را می گيرند .
    در تعريف آرايه ديديد که طول آرايه را با عدد صحيح ثابتی تعيين می کنيم . هر جا که از عدد ثابتی استفاده می شود ، متغير ثابت نيز می توان به کار برد . متغيرهای ثابت به صورت زير تعريف می شوند :
    کد:

    کد:
     const   مقدار متغير =  نام متغير ثابت     نوع داده متغير ;


    به عنوان مثال :
    کد:

    const int arraySize = 10;


    دستور فوق عدد [B]10[/B] را به متغير [B]arraySize[/B] ثابت انتساب می دهد . توجه داشته باشيد که مقدار يک متغير ثابت را در طول برنامه نمی توان تغيير داد و نيز متغير ثابت در هنگام تعريف شدن ، مقدار اوليه اش نيز بايد تعيين گردد . به متغيرهای ثابت ، متغيرهای فقط خواندنی نيز گفته می شود . کلمه "متغير ثابت" يک کلمه مرکب ضد و نقيض می باشد چون کلمه متغير متضاد ثابت می باشد و اين اصطلاحی است که برای اينگونه متغيرهای در اکثر زبانهای برنامه نويسی به کار می رود . برنامه زير نحوه تعريف يک متغير ثابت را نشان می دهد : کد:

    #
    کد:
    include
    کد:
     
    void main()
    {
    const int x = 7;
    cout << "The value of constant variable x is: "
    << x << endl;
    }
    برنامه فوق عدد [B]7[/B] را در متغير ثابت [B]x[/B] قرار می دهد و توسط دستور [B]cout[/B] آنرا چاپ می کند . همانطور که گفتيم مقدار متغير ثابت در هنگام تعريف بايد تعيين گردد و نيز ثابت قابل تغيير نمی باشد ، به برنامه زير توجه کنيد . کد:

    کد:
    #include
    void main()
    {
    const int x;
    x=7;
    }
    برنامه فوق هنگام کامپايل شدن دو پيغام خطا خواهد داد ، چون متغير ثابت هنگام تعريف مقدار دهی نشده و نيز در برنامه دستوری برای تغيير مقدار آن آورده نشده است .
    کد PHP:
     Compiling  C:\TCP\BIN\CONST1.CPP:

     
    Error :  Constant variable 'x' must be initialized
     Error 
    Cannot  modify a const object 
    [B]مثال :[/B] در برنامه زير طول آرايه توسط متغير ثابتی تعيين می گردد و عناصر آرايه توسط حلقه [B]for[/B] مقدار دهی شده و سپس توسط حلقه [B]for[/B] ديگری ، مقدار عناصر آرايه چاپ می گردد . کد:

    کد:
    #include
    void main()
    {
    const int arraySize = 10;
    int s[ arraySize ];
    for ( int i = 0; i < arraySize; i++ )
    s[ i ] = 2 + 2 * i;
    cout << "Element Value" << endl;
    for ( int j = 0; j < arraySize; j++ )
    cout << j << "\t " << s[ j ] << endl;
    }
    خروجی برنامه فوق به صورت زير می باشد :
    [B]Element Value[/B]

    [B]0 2[/B]

    [B]1 4[/B]

    [B]2 6[/B]

    [B]3 8[/B]

    [B]4 10[/B]

    [B]5 12[/B]

    [B]6 14[/B]

    [B]7 16[/B]

    [B]8 18[/B]

    [B]9 20[/B]
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  9. #29
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    [B]چند مثال از آرايه ها و کاربرد آنها[/B]

    [B]چند مثال از آرايه ها و کاربرد آنها[/B]
    [B]مثال :[/B] برنامه ای بنويسيد که 10 عدد صحيح را ورودی دريافت کرده و در آرايه ای قرار داده سپس مجموع عناصر آرايه را محاسبه کرده و درخروجی چاپ نمايد . کد:

    #
    کد:
    include
    کد:
     
    void main()
    {
    const int arraySize = 10;
    int total = 0,i;
    int a[ arraySize ];
    for (i = 0; i < arraySize; i++)
    {
    cout << "Enter number " << i << " : ";
    cin >> a[ i ];
    }
    for (i = 0; i < arraySize; i++ )
    total += a[ i ];
    cout << "Total of array element values is "
    << total << endl;
    }
    خروجی برنامه به صورت زير می باشد :
    کد PHP:
    Enter number 0  12

     Enter number 1  
    3
     Enter number 2  
    4
     Enter number 3  
    654
     Enter number 4  
    34
     Enter number 5  
    2
     Enter number 6  
    123
     Enter number 7  
    794
     Enter number 8  
    365
     Enter number 9  
    23
     Total of 
    array  element values is 2014 
    [B]مثال :[/B] برنامه ای بنويسيد که توسط آرايه ، نمودار ميله ای افقی برای اعداد {1 و17 و5 و13 و9 و11 و7 و15 و3 و19 } رسم کند . کد:

    کد:
    #include
    int main()
    {
    const int arraySize = 10;
    int n[ arraySize ] = { 19, 3, 15, 7, 11,
    9, 13, 5, 17, 1 };
    cout << "Element" << " Value" << endl;
    for ( int i = 0; i < arraySize; i++ ) {
    cout << i << "\t " << n[ i ] << "\t";
    for ( int j = 0; j < n[ i ]; j++ )
    cout << '*';
    cout << endl;
    }
    return 0;
    }
    خروجی برنامه به صورت زير می باشد :
    کد PHP:
    Element  Value

     0        19      
    *******************
     
    1        3       ***
     
    2        15      ***************
     
    3        7       *******
     
    4        11      ***********
     
    5        9       *********
     
    6        13      *************
     
    7        5       *****
     
    8        17      ***************** 
    [B]9 1 *[/B]


    [B]مثال :[/B] برنامه ای بنويسيد که يک تاس را [B]6000[/B] بار پرتاب کرده و توسط آرايه ای تعداد دفعات آمدن هر وجه را حساب کند .( تعداد دفعات آمدن هر وجه را يک عنصر آرايه ای در نظر بگيريد ) کد:

    کد:
    #include
    #include
    #include
    void main()
    {
    const int arraySize = 7;
    int frequency[ arraySize ] = { 0 };
    srand( time( 0 ) );
    for ( int roll = 1; roll <= 6000; roll++ )
    ++frequency[ 1 + rand() % 6 ];
    cout << "Face Frequency" << endl;
    for ( int face = 1; face < arraySize; face++ )
    cout << face << "\t" << frequency[face] << endl;
    }
    خروجی برنامه به صورت زير می باشد :
    کد PHP:
    Face  Frequency

     1       1023
     2       990
     3       1008
     4       971
     5       1025
     6       983 
    دستور [B]++frequency [rand()%6 + 1];[/B] ، مقدار عنصر مربوط به هر وجه را يک واحد اضافه می کند ، زيرا [B]rand()%6 + 1[/B] عددی بين 1 تا 6 توليد می کند ، پس هر بار به طور تصادفی تنها مقدار عنصر مربوط به يکی از وجوه افزايش می يابد .
    ادامه دارد
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  10. #30
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,589
    759
    429
    يکی از کار برد های آرايه ها ، استفاده از آنها برای ذخيره رشته ای از حروف می باشد . تا به حال متغيرهايی که از ورودی دريافت می کرديم و يا آرايه هايی که تا به اينجا ديديد تنها شامل اعداد می شدند در اينجا به عنوان مثال نحوه دريافت يک نام از ورودی و چاپ آن در خروجی را بررسی می کنيم .(در فصل بعد يعنی اشاره گرها و رشته ها ، به طور مفصل تر راجع به رشته ها صحبت خواهيم کرد )
    يک عبارت رشته ای مانند: [B]"[/B][B]hello[/B][B]"[/B] در واقع آرايه ای از حروف می باشد.
    کد:

    کد:
     char  string1[]="hello";


    دستور فوق آرايه ای به نام [B]string1[/B]را با کلمه [B]hello[/B] مقدار دهی می کند. طول آرايه فوق برابر است با طول کلمه [B]hello[/B]يعنی [B]5[/B] بعلاوه يک واحد که مربوط است به کاراکتر پوچ که انتهای رشته را مشخص می کند. لذا آرايه [B]string1[/B] دارای طول [B]6[/B] می باشد. کاراکتر پوچ در زبان ++C توسط [B]'\0'[/B] مشخص می گردد. انتهای کليه عبارات رشته ای با اين کاراکتر مشخص می شود.
    کد:

    کد:
     char  string1[]={'h','e','l','l','o','\0'}


    دستور فوق عناصر آرايه string1 را جداگانه مقدار دهی می کند. توجه داشته باشيد که عناصر آرايه در دستور فوق داخل (') قرار گرفتند و نيز انتهای رشته با [B]'\0'[/B] تعيين شد. نتيجه همانند دستور [B]char string1[]="hello";[/B] می باشد.
    چون عبارت رشته ای، آرايه ای از حروف می باشند، لذا به هر يک از حروف رشته، توسط انديس عنصری که شامل آن حرف می باشد، می توان دسترسی پيدا کرد. به عنوان مثال [B]string1[0][/B] شامل [B]'[/B][B]h[/B][B]'[/B] و [B]string1[3][/B] شامل [B]'[/B][B]l[/B][B]'[/B] و [B]string1[5][/B] شامل [B]'\0'[/B] می باشد.
    توسط دستور cin نيز می توان به طور مستقيم کلمه وارد شده از صفحه کليد را در آرايه ای رشته ای قار داد.
    کد:

    کد:
     char  string2[20];


    دستور فوق يک آرايه رشته ای که قابليت دريافت کلمه ای با طول [B]19[/B] به همراه کاراکتر پوچ را دارا می باشد.
    کد:

    کد:
     cin >>  string2;


    دستور فوق رشته ای از حروف را از صفحه کليد خوانده و در [B]string2[/B] قرار می دهدو کاراکتر پوچ را به انتهای رشته وارد شده توسط کاربر اضافه می کند. به طور پيش فرض دستور cin کاراکتر ها را از صفحه کليد تا رسيدن به اولين فضای خالی در يافت می کند. به عنوان مثال اگر هنگام اجرای دستور [B]cin >> string2;[/B] کاربر عبارت "[B]hello there[/B]" را وارد کند، تنها کلمه [B]hello[/B] در [B]string2[/B] قرار می گيرد. چون عبارت وارد شده شامل کاراکتر فاصله است. برنامه زير نحوه به کار گيری آرايه های رشته ای را نشان می دهد. کد:

    کد:
    #include
    void main()
    {
    char name[ 20 ];
    cout << "Please Enter your name : ";
    cin >> name;
    cout << "Welcome, " << name
    << " to this program. \n" ;
    cout << "Your separated name is\n";
    for ( int i = 0; name[ i ] != '\0'; i++ )
    cout << name[ i ] << ' ';
    }
    خروجی برنامه به صورت زير می باشد :
    کد PHP:
    Please Enter  your name Mohammad

     Welcome
    ,  Mohammad to this program.
     
    Your separated  name is
     M o h a m m a  d 
    در برنامه فوق حلقه for ، حروف نام وارد شده توسط کاربر را جدا جدا در خروجی چاپ می کند. ضمنا شرط حلقه [B]name[ i ] != '\0'[/B] می باشد و تا وقتی اين شرط برقرار است که حلقه به انتهای رشته نرسيده باشد.
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
صفحه 3 از 4 نخست 1234 آخرین
نمایش نتایج: از 21 به 30 از 34

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ: 9
    آخرين نوشته: 2015-08-29, 07:18 PM
  2. پاسخ: 6
    آخرين نوشته: 2013-12-17, 12:00 AM
  3. دانلود كتاب اموزش راهنماي برنامه نويسي جاوا
    توسط MspSoft در انجمن JavaScript و Framework های مبتنی بر آن
    پاسخ: 0
    آخرين نوشته: 2012-12-06, 10:21 AM
  4. دانلود كتاب اموزشي فارسي mvc
    توسط MspSoft در انجمن ASP.NET
    پاسخ: 0
    آخرين نوشته: 2012-07-06, 10:17 AM
  5. آشنايي و آموزش مقدماتي با زبان نويسي دلفي
    توسط MspSoft در انجمن برنامه نویسی در Delphi
    پاسخ: 8
    آخرين نوشته: 2011-11-25, 10:23 AM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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

Content Relevant URLs by vBSEO 3.6.0 RC 2