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

این وبلاگ جهت آموزش برنامه نویسی به زبان ++C برای دانش آموزان دبیرستان فرزانگان ایجاد شده است.

۱۹ مطلب با موضوع «تمرین ها» ثبت شده است

برای دریافت به ادامه مطلب بروید

 

۲۵ سوال موافقین ۰ مخالفین ۰ ۲۷ خرداد ۹۱ ، ۲۳:۰۰
سارا نازاری

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

 

فرمت کلی حلقه ی شرطی به صورت زیر می باشد:

for(مقدار اولیه شمارنده  ; شرط ادامه ; گام حلقه)
{
}

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

 

برنامه­ی زیر ده ستاره را در خروجی نمایش می­دهد:


main()
{
    for(int i = 1 ; i <= 10 ; i++)
    {
       cout << "*";
    }
    getch();
}


برنامه­ی زیر از یک تا صد را در خروجی نمایش می­دهد:


main()
{
    for(int i = 1 ; i <= 10 ; i++)
    {
       cout << i;
    }
    getch();
}

با دقت به این دو برنامه متوجه می­شویم که متغیر شمارنده تعداد دفعات اجرای حلقه را کنترل می­کند و لازمه­ی یک حلقه­ی شمارشی می­باشد. اما در برنامه­ی دوم از متغیر شمارنده بهره برده­ایم و با نمایش مقدار آن در واقع اعداد یک تا ده را نمایش داده­ایم. در واقع شماره­ی دورهای حلقه را چاپ کرده­ایم.

در ادامه به حل چند تمرین از حلقه­ی شمارشی می­پردازیم.

 

مثال 1: برنامه ای بنویسید که ده بار در صفحه عبارن Hello World را نمایش دهد: 


main()
{
    int i;
    for( i = 1 ; i <= 10 ; i++)
    {
        cout << "Hello World! \t";
    }
    getch();
}
خروجی : 


مثال 2: برنامه ای بنویسید که در صفحه خروجی اعداد یک تا 100 را نمایش دهد: 


main()
{
    int i;
    for( i = 1 ; i <= 100 ; i++)
    {
        cout << i << "\t";
    }
    getch();
}



مثال 3: برنامه ای بنویسید که در گرافیک، 20 دایره ی متحدالمرکز را با افزایش شعاع رسم کند: 


main()
{
    int x = 300,y = 300, r = 50;
    initwindow(600, 600);
    
    for(int i = 1 ; i <= 20 ; i++)
    {
        setcolor(i % 16);
        circle(x, y, r);
        r = r + 10;
    }
    
    getch();
}



برنامه ی زیر را اجرا کنید و تفاوت کد و اجرای آن را با برنامه ی بالا بیان کنید: 


main()
{
    int x = 300,y = 300, r = 50;
    initwindow(600, 600);
    
    for(int i = 1 ; i <= 20 ; i++)
    {
        setcolor(i % 16);
        circle(x, y, r);
        delay(150);
        r = r + 10;
    }
    
    getch();
}


مثال 4: برنامه ای بنویسید که در محیط گرافیکی ده بیضی متحدالمرکز توپر را نمایش دهد: 


main()
{
    int x = 400,y = 300, r1 = 350, r2 = 250;
    initwindow(800, 600);
    
    for(int i = 1 ; i <= 20 ; i++)
    {
        setfillstyle(i % 11, i % 16);
        fillellipse(x, y, r1, r2);
        delay(150);
        r1 = r1 - 10;
        r2 = r2 - 10;
    }
    
    getch();
}



مثال 5: برنامه ای بنویسید که در گرافیک ده مستطیل توپر تو در تو را رسم کند: 


main()
{
    int x1 = 100,y1 = 100, x2 = 600, y2 = 500;
    initwindow(800, 600);
    
    for(int i = 1 ; i <= 20 ; i++)
    {
        setfillstyle(i % 11, i % 16);
        bar(x1, y1, x2, y2);
        delay(150);
        
        x2 = x2 - 10;
        y2 = y2 - 10;
        x1 = x1 + 10;
        y1 = y1 + 10;
    }
    
    getch();
}



مثال 6: برنامه ای بنویسید که در گرافیک شکل زیر را نمایش دهد: 



main()
{
    int x1 = 100,y1 = 100, x2 = 200, y2 = 150;
    initwindow(800, 600);
    
    for(int i = 1 ; i <= 20 ; i++)
    {
        setfillstyle(i % 11, i % 16);
        bar(x1, y1, x2, y2);
        delay(150);
        
        x2 = x2 + 10;
        y2 = y2 + 10;
        x1 = x1 + 10;
        y1 = y1 + 10;
    }
    
    getch();
}


مثال 7: برنامه ای بنویسید که در گرافیک شکل زیر را نمایش دهد:



main()
{
    int x = 100,y = 100, r = 50;
    initwindow(800, 600);
    
    for(int i = 1 ; i <= 20 ; i++)
    {
        setfillstyle(i % 11, i % 16);
        fillellipse(x, y, r, r);
        delay(150);
        
        x = x + 10;
        y = y + 10;
    }
    
    getch();
}


مثال 8: برنامه ای بنویسید که در گرافیک شکل زیر را نمایش دهد:



main()
{
    int x = 100,y = 100, r = 50;
    initwindow(800, 600);
    
    for(int i = 1 ; i <= 30 ; i++)
    {
        setcolor(i % 16);
        circle(x, y, r);
        delay(150);
        
        y = y + 10;
    }
    
    getch();
}


مثال 9: برنامه ای بنویسید که در گرافیک شکل زیر را نمایش دهد:


مثال 10: برنامه ای بنویسید که در گرافیک شکل زیر را نمایش دهد:


مثال 11: برنامه ی زیر اعداد یک تا n (که آن را از ورودی میگیرد) را در خروجی نمایش می دهند:


main()
{
    cout << "Please enter a number? \n";  
    int num;
    cin >> num;
    
    for(int i = 1 ; i <= num ; i++)
    {
        cout << i << "\t";
    }
   
    getch();
}

دقت کنید که در این برنامه دستور "n\"  همان کار endl را انجام میدهد.

 

خروجی: 


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


main()
{
    cout << "Please enter a number? \n";  
    int num;
    cin >> num;
    
    for(int i = 1 ; i <= num ; i++)
    {
        if(num % i == 0)
        {
            cout << i << '\t';
        }
    }
    
    getch();
}


مثال 12: برنامه ی زیر یک عدد را از ورودی گرفته و کامل بودن یا نبودن عدد را اعلام کند( عدد کامل عددی است که مجموع همه ی مقسوم علیه های خودش برابر با دو برابر خودش بشود.) 

 

main()
{
    cout << "Please enter a number? \n";  
    int num, sum = 0;
    cin >> num;
    
    for(int i = 1 ; i <= num ; i++)
    {
        if(num % i == 0)
        {
            sum = sum + i;
        }
    }
    
    if(sum == 2 * num)
        cout << "adad kamel ast. ";
    else
        cout << "adad kamel nist. ";
    
    getch();
}

 

مثال 13: برنامه ی زیر یک عدد را از ورودی گرفته و اول بودن یا نبودن عدد را اعلام کند. 


main()
{
    cout << "Please enter a number? \n";  
    int num, sum = 0;
    cin >> num;
    
    for(int i = 1 ; i <= num ; i++)
    {
        if(num % i == 0)
        {
            sum = sum + 1;
        }
    }
    
    if(sum == 2)
        cout << "adad aval ast. ";
    else
        cout << "adad aval nist. ";
    
    getch();
}


مثال 14: برنامه ی زیر دو عدد را از ورودی گرفته و ب.م.م و ک.م.م آن ها را بدست آورده و نمایش دهد: 


main()
{
    cout << "Please enter two number? \n";
    int a, b, c, bmm, kmm;
    cin >> a >> b;

    for(int i = a ; i >= 1 ; i--)
    {
        if(a % i == 0 && b % i == 0)
        {
            bmm = i;
            i = 0;
        }
    }
    kmm = a * b / bmm;

    cout << " B.M.M = "<< bmm << " K.M.M = " << kmm;

    getch();
}


مثال 15: برنامه ای بنویسید که یک عدد n را از ورودی رفته و حاصل جمع n جمله ی اول سری زیر را نمایش دهد:

 

main()
{
    cout << "Please enter a number? \n";  
    float n, s = 0, p = 1;   
    cin >> n;
     
    for(int i = 1 ; i <= n ; i++)
    {
        
        p = p * i;
        s = s + i / p;
    }
    
    cout << "the sum is: " << s << "\n";
   
    getch();
}

   

مثال 16: برنامه ی زیر یک عدد n را از ورودی گرفته و حاصل n جمله ی اول سری زیر را نمایش میدهد:

   

main()
{
    cout << "Please enter a number? \n";  
    float n, s = 0, p = 1, i;   
    cin >> n;
     
    for(i = 1 ; i <= n ; i++)
    {
        s = s + i * i / (i + 1);
    }
    
    cout << "the sum is: " << s << "\n";
    
    getch();
}

 

مثال 17: برنامه ی زیر n را از ورودی گرفته ومجموع  n جمله ی اول سری زیر را نمایش میدهد:

 

main()
{
    cout << "Please enter a number? \n";  
    float n, s = 0, f = 1, i, a, m = 1;    
    cin >> n;
     
    for(i = 1 ; i <= n ; i++)
    {
        a = (m * m) / ((m + 1) * (m + 1));
        s = s + f * a;
        f = f * -1;
        m = m + 2;
    }
    
    cout << "the sum is: " << s << "\n";
   
    getch();
}

توجه کنید که متغیر i فقط حکم شمارنده دارد و از یک تا n میشمرد و کار دیگری با آن انجام نمیدهیم.

سوال: اگر به جای m از i استفاده میکردیم چه اتفاقی رخ میداد؟ ...

   

 

مثال 18: برنامه ی زیر حاصل رشته ی زیر را نمایش میدهد:

نکته: در این برنامه ورودی نداریم!

 

main()
{
    cout << "Please enter a number? \n";  
    float s = 0, f = 1, i;   
     
    for(i = 100 ; i > 0 ; i--)
    {
        s = s + f * (i - (i - 1) / i);
        f = f * -1;
    }
    
    cout << "the sum is: " << s << "\n";
   
    getch();
    
}


 در دست تعمیرات :)  

 

 

۲۲ سوال موافقین ۰ مخالفین ۰ ۲۳ ارديبهشت ۹۱ ، ۱۲:۰۹
سارا نازاری

در تاریخ 24 اردی بهشت به روز شد، مطالعه کنید.

 

۸ سوال موافقین ۰ مخالفین ۰ ۱۳ ارديبهشت ۹۱ ، ۱۹:۱۵
سارا نازاری

برای حرکت در محیط گرافیکی نیازمندیم که حرکت را مانند ساخت فیلم و انیمیشن به چند مرحله تبدیل کنیم... 

 

۱۰ سوال موافقین ۰ مخالفین ۰ ۱۲ ارديبهشت ۹۱ ، ۰۹:۳۸
سارا نازاری

 گاهی در برنامه نویسی نیاز داریم که یک یا چند کار را چندین بار تکرار کنیم. برای این که از نوشتن مجدد خطوط برنامه جلوگیری کنیم از تکنیکی به نام حلقه­های تکرار استفاده می­کنیم.


۹۸ سوال موافقین ۰ مخالفین ۰ ۳۱ فروردين ۹۱ ، ۲۳:۰۴
سارا نازاری

نمونه سوال از مبحث شرط و گرافیک می باشد. 

 

۴۵ سوال موافقین ۰ مخالفین ۰ ۱۶ فروردين ۹۱ ، ۱۹:۴۹
سارا نازاری

در این قسمت می توانید سوالات تکمیلی تکنیک شرط را به همراه جواب مشاهده فرمائید. 

 

۱۷ سوال موافقین ۰ مخالفین ۰ ۱۰ فروردين ۹۱ ، ۱۴:۲۷
سارا نازاری

در این بخش ادامه ی سوالهای ورودی و خروجی که همراه با گرافیک هستند را حل خواهیم کرد

 

۲۰ سوال موافقین ۰ مخالفین ۰ ۰۶ فروردين ۹۱ ، ۱۷:۰۶
سارا نازاری

در این بخش سوالات مربوط به ورودی و خروجی و جواب آنها آمده است.

۲۲ سوال موافقین ۰ مخالفین ۰ ۰۸ اسفند ۹۰ ، ۰۷:۵۵
سارا نازاری