آموزش برنامه نویسی به زبان ++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 اردی بهشت به روز شد، مطالعه کنید.

 

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

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

 

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