در این جلسه پس ازنوشتن برنامه هایی با حلقه های تودرتو با ساختارالگوریتمی این برنامه ها آشنا می شوید و می توانید درحل مسئله های موجود ساختارحلقه تودرتو را درک نمایید...
عکس نویسنده
عکس نویسنده
بازدید :
زمان تقریبی مطالعه :

گام ششم آموزش برنامه نویسی C++ 

 

اهداف کلی:

 تمایزحلقه های تودرتو از چندین حلقه درمسئله 

 

اهداف رفتاری و عمکردی:

در این جلسه پس ازنوشتن برنامه هایی با حلقه های تودرتو با ساختارالگوریتمی این برنامه ها آشنا می شوید و می توانید درحل مسئله های موجود ساختارحلقه تودرتو را درک نمایید و هم چنین با یادگیری مختصات قطبی برنامه هایی کاربردی قشنگ تری را بنویسید.

 

سرفصل های تئوری:

- توضیح حلقه تکرار تو در تو

-توضیح درمورد مختصات قطبی

- درک نحوه تغییر  شمارنده های حلقه های تو در تو 

 - نوع شمارشی enum

-  تبدیل نوع، گسترش نوع

 

سرفصل های عملی :

- محاسبة ریشه های یك چند جمله ای از درجة 3

-  جدول ضرب 10×10

- حركت ماه به دور زمین به دور خورشید

- مساحت اشغال شده توسط یک عبارت

مواد و تجهیزات لازم برای گام:

 

حلقه های تودرتو

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

برنامه زیر یك جدول ضرب چاپ می‌كند:

#include

#include

#include

using namespace std;

int main()

{  for (int x=1; x <= 10; x++)

   {  for (int y=1; y <= 10; y++)

         cout << setw(4) << x*y;

      cout << endl;

   }

    getch();

Return 0;

}

حال برای فهم بیشترمفهوم آرایه دوبعدی مثال زیر را نوشته وسپس آن را کامپایل نمایید و به حرکت دایره های آن دقت کنید این مثال شاید به فهم شما در مسایلی که با آرایه دوبعدی سرکاردارید کمک می کند

-مربع ها و دایره هایی که به دور آنها می چرخند:

#include

#include

#include

#include

using namespace std;

int main()

{

    int i, j;

int x, y, x1, y1, c;

    c = 5;

    initwindow(800,600);

    setfillstyle(1, 12);

    for(i = 4; i >= 0; i--)

    {

         x1 = 320;

         y1 = i*90+60;

         bar(x1-15 , y1-15, x1+15, y1+15);

    }

    delay(1500);

    for(i = 4; i >= 0; i--)

    {

         x1 = 320;

         y1 = i*90+60;

         for(j = 0; j < c; j++)

         {

             x = x1+35*cos(j*(360/c)*3.14/180);

             y = y1+35*sin(j*(360/c)*3.14/180);

             circle(x, y, 5);

             delay(1000/c);

         }

    }

    getch();

    return 0;

}

می‌دانیم که یک نقطه از صفحه را می‌توان به وسیله یک دستگاه مختصات مشخص کرد اینگونه مختصات به مختصات دکارتی موسوم هستند که به افتخار ریاضیدان و فیلسوف فرانسوی رنه دکارت (974-1028) که این روش را برای مشخص کردن یک نقطه در صفحه کشف کرد نامگذاری شده است. طریقه دیگری برای مشخص کردن محل یک نقطه در صفحه ، مختصات قطبی است.

 

 

 

 جهت درک مسایل حلقه های دوبعدی لازم است چندین مثال را حل کرده تا ساختاراینگونه مسایل در ذهن شما شکل گیرد.

مثال: برنامه ای بنویسید که رشته “C++” ‌ را روی صفحه چاپ کند و با استفاده از  getpixel و bar آن را به صورت بزرگ تری رسم نماید.

//Generating graphical characters

#include

#include

#include

using namespace std;

int main()

{

     int x, y, c;

     initwindow(800,600);

     cout<<"C++";

     setfillstyle(1, 2);

     for (x = 0; x < 24; x++)

          for (y = 1; y < 12; y++)

          {

              c = getpixel(x, y);

              if (c != 0)

bar((x-1)*10+20, (y-1)*10+10, x*10+20, y*10+10);

          }

     getch();

     return 0;

}

مثال: به کمکgetpixel  و حلقهfor  تودرتو مساحت اشغال شده توسط عبارت  “Hello World!”‌  بر روی صفحه را محاسبه کنید.

#include

#include

using namespace std;

int main (void)

{

     initwindow (800,600);

     cout<<"Hello World!\n”‌);

     int x, y;

     // area in pixels

     int area = 0;

     for (y = 0; y <= getmaxy (); y ++)

          for (x = 0; x <= getmaxx (); x ++)

              if (getpixel (x, y) != 0)

                   area ++;

cout<<"nArea is”‌;

getch();

     return 0;

}

مثال: برنامه ای بنویسید که حرکت ماه دور زمین و زمین دور خورشید را شبیه سازی کند.

هدف: بعضی مسایل ظاهر حلقه تو در تو دارند ولی ماهیت تو در تو ندارند.

توضیح: سیارات و مسیر حرکت آن ها را دایره ای فرض کنید.

// Rotate the Moon around the earth

#include

#include

#include

using namespace std;

int main()

{

     int i, x, x1, y, y1,xm,ym, r1, r2;

     initwindow(800,600);

     r1 = 200;

     r2 = 200;

     x1 = 320;

     y1 = 240;

     moveto(x1+r1+100,y1);

     setcolor(3);

     for (i = 0; i < 360; i++)

     {

          x = r1*cos(i*3.14/180);

          y = r2*sin(i*3.14/180);

          putpixel( x+x1, y+y1, WHITE);

          xm = x+ 100*cos(i*3.14/10);

          ym = y +100*sin(i*3.14/10);

          lineto(xm+x1,ym+y1);

          delay(10);

     }

     lineto(x1+r1+100,y1);

     getch();

     return 0;

}

 
 

بخش پژوهش های دانش آموزی سایت تبیان

 

منبع:

Ctalk.ir 

firststep.ir

 

مطالب مرتبط

دیگر جلسات آموزشی