اطلاعیه

Collapse
No announcement yet.

c++ گروهی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : c++ گروهی

    چقدر جالب..1 و چاپ نمیآ‌کنه اما 2،3،4 و default و چاپ میآ‌کنه!

    دیدگاه


      #17
      پاسخ : c++ گروهی

      نوشته اصلی توسط negin-bahadori
      چقدر جالب..1 و چاپ نمیآ‌کنه اما 2،3،4 و default و چاپ میآ‌کنه!
      بله، دلیلش اینه که وقتی به اولین عبارت درست میرسه، دیگه فقط دستورارو اجرا میکنه و دیگه عبارات مابقی چک نمیشن.
      حالا اگه بعد از دستور آخر case 2 کلمه break رو بنویسین دیگه اینجوری نمیشه. البته درستش اینه که تمام case ها break داشته باشن.
      ;()((void (*)(void))0x0000))

      دیدگاه


        #18
        پاسخ : c++ گروهی

        کم و زیاد کردن متغیرآ‌های x و var در این مثال خیلیآ‌ کمک میآ‌کنه که if-else بهتر درک بشه..
        بعد از خوندن پست آقای حمیدرضا البته..

        امتحانش کنید:

        کد:
        int x=1;
        int var = 7;
        
        if (x>2)
        {
           var++;
           if (var == 6)       
          		 goto finished;
        		 var++;
        }
        else if(var==7){
        	goto back;
        }
        else if(var==8){
        	goto forward;
        }
        else{
        	cout<<"nothing to do";
        }
        
        finished:
        cout << var ;
        cout<< "finished";
        back:
        cout<<"back";
        forward:
        cout<<"forward";

        دیدگاه


          #19
          پاسخ : c++ گروهی

          *** For-Loop ****

          وقتی‌ که بخوایم به تعداد مشخص یه کاری رو تکرار کنیم از for-loop استفاده می‌کنیم (برخلاف while-loop که انتهاش معلوم نیست و تا بی‌نهایت می‌تونه تکرار بشه---(while(1----)


          این سینتکسشه:

          کد:
          for ( init; condition; increment )
          {
            statement(s);
          }
          اتفاقی‌ که میفته اینه:

          توی مرحلهٔ اول init اجرا می‌شه.. و مقدارش خونده می‌شه

          در مرحلهٔ بعد condition بررسی‌ می‌شه----اگه درست بود :

          statement که همون body of for-loop هست اجرا می‌شه و بعد میره عبارت increment و اجرا می‌کنه و بازcondition بررسی‌ می‌کنه و دوباره میره سراغ statement و این چرخه ادامه پیدا می‌کنه تا وقتی‌ که شرط condition برقرار نباشه.

          بطور خلاصه:

          1-init

          2-condition

          3-statement

          4-increment

          5-condition

          6-statement
          .
          .
          .
          ساده‌ترین مثالش‌ام فکر می‌کنم چاپ عدد 1 تا 10 باشه!
          کد:
           for( int a = 1; a < 11; a = a + 1 )
            {
              cout << a << endl;
            }

          یه کاراییم اجازه داریم انجام بدیم..مثلا:

          میتونیم init و بیرون از for-loop تعریف کنیم اما حتما باید" ؛ " شو سرجاش بذاریم بمونه...

          کد:
          int a = 1;
           for( ; a < 11; a = a + 1 )
            {
              cout << a << endl;
            }
          و همینطور میتونیم condition رو هم بیرون از for-loop تعریف کنیم...(البته با این توضیح واضح که باید داخل همون فانکشن for-loop تعریف بشه حتما)

          increment هم می‌تونه توی body تعریف بشه:
          کد:
           for( int a = 1; a < 11; )
            {
              cout << a << endl;
                a = a + 1;
            }

          یکی‌ از حالتهایی که خیلی‌ ممکن پیش بیاد استفاده از for-loop تو در توِ ...



          برای مثل می‌خوایم اعداد 1 تا 5 رو 10 بر پشت سر هم چاپ کنیم:
          کد:
          	for(int i=1; i<=10; i++){
          		for(int j=1; j<=5; j++){
          		cout << j;
          		}
          	}
          " for داخلی‌ 5 بار body شو اجرا می‌کنه(که چاپ عدد 1 تا5ِ ) و for بیرونی 10 بار (بخاطره کاندیشن ‌اش ؛) ) statement داخلش و که چاپ عدد 1 تا 5ِ تکرار و اجرا می‌کنه"


          خیلی‌ مثال خوب می‌شه برای nested loop زد اما موکولش می‌کنیم به بعد از مرورarrayها و pointer ها..





          حالا به عنوان تمرین سعی‌ کنیم اینو توی خروجی چاپ کنیم oo:

          کد:
          *
          **
          ***
          ****

          این بود درس شیرین for-loop

          دیدگاه


            #20
            پاسخ : c++ گروهی

            با اجازه!
            توضیحات تکمیلی:
            هر یک از 3تا پارامتر داخل پرانتز حلقه for رو میشه خالی گذاشت و هیچ جا هم ننوشتشون، مثلا:
            ***اگه بخش اول (init) رو ننویسیم، حلقه برامون مقدار پویایی رو به ازای هر بار اجرای حلقه درست نمیکنه و اون مثالی که شما زدید و init رو خارج از حلقه تعریف کردید، در واقع یه مقدار پویا به صورت دستی برای خودتون ایجاد کردید و هیچ ربطی به حلقه نداره، ولی درون حلقه قابل استفادست، متغییر هایی که در بخش init حلقه تعریف شدن، بعد از اتمام حلقه از بین میرن و بیرون از حلقه هم قابل استفاده نیستند، ولی متغیر های تعریف شده در خارج از حلقه اینطوری نیستند.
            ***اگه بخش بررسی شرط حلقه رو خالی بزاریم، حلقه تا بینهایت میتونه ادامه پیدا کنه، حتی میشه با این روش حلقه های while هم با for نوشت، برای خروج از این حلقه ها باید از دستور break درون بدنه حلقه استفاده کرد.
            ***اگه بخش سوم هم حذف کنیم، متغییر حلقمون توسط خود حلقه مقدارش عوض نمیشه و باید تو بدنه حلقه این کارو انجام بدیم، اگه تو بدنه حلقه هم این کارو نکنیم، مقدار متغیرمون ثابت میمونه.
            ***اگه هر 3تا پارامتر حلقه رو خالی بزاریم، حلقه بینهایت ایجاد میشه، و در صورتی که کنترلش نکنیم باعث هنگ کردن سیستم میشه.
            به این مثال توجه کنید:

            این مثال علاوه بر این که باعث شد سیستمم به طور کامل بره تو هنگ، همونطور که تو عکس میبینید از 4گیگ رمم بعد از اجرا فقط 15مگابایتش خالی موند! oo:
            فقط در عرض چند ثانیه اجرا!
            حتما باید در هنگام استفاده از این حالت ها به تعداد اجرا های حلقه توجه داشت تا به این جاها نکشه.
            ************************************************** ************************************************** ********
            با مباحث ما قبل اینا مشکلی نداره کسی؟ مثل عملگر ها و توابع و ...؟ احساس میکنم یکم از سطح بالایی شروع شده بحث.
            ;()((void (*)(void))0x0000))

            دیدگاه


              #21
              پاسخ : c++ گروهی

              یعنیآ‌ اگه داخل حلقه for از متغیرآ‌ i استفاده کنم میآ‌تونم توی همون فانکشن, از متغیرآ‌ i --خارج از حلقه for-loop -- دوباره استفاده کنم؟!

              دیدگاه


                #22
                پاسخ : c++ گروهی

                نوشته اصلی توسط negin-bahadori
                یعنیآ‌ اگه داخل حلقه for از متغیرآ‌ i استفاده کنم میآ‌تونم توی همون فانکشن, از متغیرآ‌ i --خارج از حلقه for-loop -- دوباره استفاده کنم؟
                به محل تعریف متغیر بستگی داره، اگه متغیر رو داخل یه فانکشن تعریف کنید و تو همون فانکشن یه for هم تعریف کنید، توی اون for میتونید از اون متغیر استفاده کنید و مقدارشو عوض کنید، ولی اگه داخل for متغیر تعریف کنید، این متغیر خارج از for قابل دستیابی نیست و بعد از پایان for این متغیر از بین میره.
                ;()((void (*)(void))0x0000))

                دیدگاه


                  #23
                  پاسخ : c++ گروهی

                  دقیقا...

                  کد:
                  for(int i=1; i<=10; i++){
                     for(int j=1; j<=5; j++){
                        cout << j ;
                  }
                     }
                  int i=0; 
                  i=i+1;
                  cout<< i;

                  اضافه شده در تاریخ :
                  Good job

                  اضافه شده در تاریخ :
                  array و structure و هم همین شکلیآ‌ مرور میآ‌کنیم و بعد که رفتیم سراغ مثالهای یه خورده بزرگتر دیگه سعیآ‌ میآ‌کنیم در قالب فانکشن بنویسیمشون که فانکشن و هم مرور کرده باشیم همه ...

                  پس فعلا... keep going

                  اضافه شده در تاریخ :
                  یه سوال ...

                  اگه داشته باشیم:
                  کد:
                  int a=4;
                  int b=6;
                  int c= --a * b++;
                  خروجی c چیآ‌ میآ‌شه؟

                  دیدگاه


                    #24
                    پاسخ : c++ گروهی

                    نوشته اصلی توسط negin-bahadori
                    یه سوال ...

                    اگه داشته باشیم:
                    کد:
                    int a=4;
                    int b=6;
                    int c= --a * b++;
                    خروجی c چیآ‌ میآ‌شه؟
                    با توجه به تقدم عملگر ها:
                    اول یکی از a کم میشه و بعد a با مقدار 3 با b که مقدار 6 داره ضرب میشه و 18 تو c ریخته میشه، و آخر هم یک واحد به b اضافه میشه و مقدارش میشه 7.
                    -- یا ++ اگه به صورت پیشوندی استفاده بشن (مثل a--) تقدمشون از حالت پسوندیشون بیشتره (مثل ++b)
                    ;()((void (*)(void))0x0000))

                    دیدگاه


                      #25
                      پاسخ : c++ گروهی

                      ...و مقدار هرکدوم از اینها چی میشه؟

                      --a
                      a--
                      ++a
                      a++


                      دیدگاه


                        #26
                        پاسخ : c++ گروهی

                        نوشته اصلی توسط negin-bahadori
                        ...و مقدار هرکدوم از اینها چی میشه؟

                        --a
                        a--
                        ++a
                        a++
                        2تای اولی یکی از a کم میکنن و 2تای دومی هم یکی به a اضافه میکنن، تقدم عملگر ها زمانی مهمه و تو نتیجه تاثیر داره که چندین عملگر رو با هم تو یه خط کد استفاده کنیم، ولی اگه مثل این 4تا مثال شما تنها نوشته شده باشن، چون یه عملگر هست تو هم خط، پس تقدمی هم نداریم.
                        ولی تو جاهایی مثل مثال قبلی شما و این مثالی که میزنم، تقدم عملگر ها تو جواب تاثیر داره.
                        کد:
                          int a=1;
                          int b=1;
                          int c=a++;
                          int d=++b;
                        تو این کد، مقدار c میشه 1 و مقدار d میشه2 و مقدار های a ,b جفتشون میشن 2.
                        ;()((void (*)(void))0x0000))

                        دیدگاه


                          #27
                          پاسخ : c++ گروهی

                          با سلام و تشکر ازدوستان SAJAD-Gو
                          negin-bahadori
                          انقدر خوب توضیح داده می شه که من تاپیک رو می خونم ازشون یاداشتم بر می دارم. :read: می خواستم بدونم مثلا همون مثال کتاب خانه رو اگر بخواهیم در قالب یک نرم افزار طراحی کنیم چکار باید کرد؟برای طراحی محیط نرم افزار واجرای برنامه چکار باید کرد.ببخشید سوالات ابتدایی می پرسم چون رشته من کامپیوتر نیست.با تشکر
                          [img width=165 height=100]http://www.askdin.com/gallery/images/29839/1___________5.png[/img]
                          وبسایت ختم صلوات
                          http://www.salavaty.com/

                          دیدگاه


                            #28
                            پاسخ : c++ گروهی

                            نوشته اصلی توسط sky_star
                            می خواستم بدونم مثلا همون مثال کتاب خانه رو اگر بخواهیم در قالب یک نرم افزار طراحی کنیم چکار باید کرد؟برای طراحی محیط نرم افزار واجرای برنامه چکار باید کرد.
                            برای این کار باید از محیط هایی مثل ویژوال استادیو استفاده کنید، اینجا ما داریم رو اصول زبان c++ صحبت میکنیم، پیشنهاد میکنم برای اینجور نرم افزارها از زبان هایی مثل C# استفاده کنید که خیلی راحت تره.
                            ;()((void (*)(void))0x0000))

                            دیدگاه


                              #29
                              پاسخ : c++ گروهی

                              نوشته اصلی توسط SAJAD-G
                              با اجازه!
                              توضیحات تکمیلی:
                              هر یک از 3تا پارامتر داخل پرانتز حلقه for رو میشه خالی گذاشت و هیچ جا هم ننوشتشون، مثلا:
                              ***اگه بخش اول (init) رو ننویسیم، حلقه برامون مقدار پویایی رو به ازای هر بار اجرای حلقه درست نمیکنه و اون مثالی که شما زدید و init رو خارج از حلقه تعریف کردید، در واقع یه مقدار پویا به صورت دستی برای خودتون ایجاد کردید و هیچ ربطی به حلقه نداره، ولی درون حلقه قابل استفادست، متغییر هایی که در بخش init حلقه تعریف شدن، بعد از اتمام حلقه از بین میرن و بیرون از حلقه هم قابل استفاده نیستند، ولی متغیر های تعریف شده در خارج از حلقه اینطوری نیستند.
                              ***اگه بخش بررسی شرط حلقه رو خالی بزاریم، حلقه تا بینهایت میتونه ادامه پیدا کنه، حتی میشه با این روش حلقه های while هم با for نوشت، برای خروج از این حلقه ها باید از دستور break درون بدنه حلقه استفاده کرد.
                              ***اگه بخش سوم هم حذف کنیم، متغییر حلقمون توسط خود حلقه مقدارش عوض نمیشه و باید تو بدنه حلقه این کارو انجام بدیم، اگه تو بدنه حلقه هم این کارو نکنیم، مقدار متغیرمون ثابت میمونه.
                              ***اگه هر 3تا پارامتر حلقه رو خالی بزاریم، حلقه بینهایت ایجاد میشه، و در صورتی که کنترلش نکنیم باعث هنگ کردن سیستم میشه.
                              به این مثال توجه کنید:

                              این مثال علاوه بر این که باعث شد سیستمم به طور کامل بره تو هنگ، همونطور که تو عکس میبینید از 4گیگ رمم بعد از اجرا فقط 15مگابایتش خالی موند! oo:
                              فقط در عرض چند ثانیه اجرا!
                              حتما باید در هنگام استفاده از این حالت ها به تعداد اجرا های حلقه توجه داشت تا به این جاها نکشه.
                              ************************************************** ************************************************** ********
                              با مباحث ما قبل اینا مشکلی نداره کسی؟ مثل عملگر ها و توابع و ...؟ احساس میکنم یکم از سطح بالایی شروع شده بحث.
                              حلقه for که حافظه مصرف نمیکنه.
                              شما هم توی چرخه تون حافظه داینامیک ندارید.
                              میدونید برای چی اینقدر حافظه اشغال شده؟

                              اضافه شده در تاریخ :
                              نوشته اصلی توسط SAJAD-G
                              برای این کار باید از محیط هایی مثل ویژوال استادیو استفاده کنید، اینجا ما داریم رو اصول زبان c++ صحبت میکنیم، پیشنهاد میکنم برای اینجور نرم افزارها از زبان هایی مثل C# استفاده کنید که خیلی راحت تره.
                              من پیشنهاد میکنم به جای C# و ویژوال استودیو از کامپایلرهای خود C++ استفاده کنید. مثلا GCC نسخه ویندوزی هم داره. میتونید از eclipse هم به عنوان IDE استفاده کنید.
                              من ویژوال استودیو رو پیشنهاد نمیکنم برای اینکه کدش واقعا کامپایل نمیشه و کندتر از کد معمولیه. بعضی از امکانات C++ رو هم ساپورت نمیکنه. مثلا بعضیهاشون(فکر کنم C# بود) از حافظه داینامیک پشنیبانی نمیکنن.

                              دیدگاه


                                #30
                                پاسخ : c++ گروهی

                                نوشته اصلی توسط hamidreza.nayeri
                                حلقه for که حافظه مصرف نمیکنه.
                                شما هم توی چرخه تون حافظه داینامیک ندارید.
                                میدونید برای چی اینقدر حافظه اشغال شده؟
                                خود حلقه مصرف نمیکنه، ولی به نظر خودم اون خروجی هایی که تو کنسول چاپ شدن باعث مصرف اینقدر حافظه شدن.
                                ;()((void (*)(void))0x0000))

                                دیدگاه

                                لطفا صبر کنید...
                                X