آموزش برنامه نویسی گام سوم
موضوع این گام:
اهداف کلی: شناخت انواع دستورالعملهای انتخاب و شیوه بهکارگیری هر یک
اهداف رفتاری و عمکردی:
انتظار میرود پس از پایان این جلسه بتوانید:
- نحوه دستور if..else را شناخته و آن را در برنامهها به کار ببرید.
- از ساختار else..if در تصمیمگیریهای پیچیده استفاده کنید.
- عملگرهای مقایسهای و عملگر عبارت شرطی را در دستورات شرطی به کار ببرید.
- از شرطهای مرکب استفاده کرده و ارزیابی میانبری را شرح دهید.
سرفصل های تئوری:
1- دستور if
2- دستور if..else
3- عملگرهای مقایسهای
4- بلوكهای دستورالعمل
5- شرطهای مركب
6- ارزیابی میانبری
7- توضیح درباره عملگرها
8- شرط های های تو در تو
9- وجود عبارتهای منطقی درگزاره شرط
سرفصل های عملی :
-نوشتن برنامه با ساختار شرط برای رسم خط و دایره در وسط صفحه
- رسم برنامه ای كه مختصات سه نقطه را بگیرد و در صورت تشكیل مثلث، آن را رسم كند. در غیر این صورت پیام مناسبی را نمایش دهد.
مواد و تجهیزات لازم برای گام:
در این جلسه نشان داده میشود چگونه از دستورالعملهای انتخاب جهت انعطافپذیری بیشتر برنامه استفاده کنیم. دستور if موجب میشود برنامه به شکل شرطی اجرا شود. نحوه آن به گونه ی زیر است:
Condition که شرط نامیده میشود یك عبارت صحیح است (عبارتی که با یک مقدار صحیح برآورد میشود) و statement میتواند هر فرمان قابل اجرا باشد. Statement وقتی اجرا خواهد شد كه condition مقدار غیر صفر داشته باشد. دقت كنید كه شرط باید درون پرانتز قرار داده شود
مثال: یافتن بزرگ ترین عدد از میان سه عدد.
#include
using namespace std;
int main()
{
int a, b, c, max;
cin >> a >> b >> c;
max = a;
if (ma x < b) max = b;
if (max < c) max = c;
cout << max;
return 0;
}
مثال: بررسی قرار داشتن یك عدد در یك بازه
#include
using namespace std;
int main()
{
int a;
cin >> a;
cout << “fail”;
cout << “invalid”;
if (a <= 20)
cout << “pass”;
return 0;
}
در C++ شش عملگر مقایسهای وجود دارد: < و > و => و <= و == و != هر یک از این شش عملگر به شکل زیر به کار میروند:
عدم استفاده از = به جای ==
دقت کنید كه در ++C عملگر جایگزینی با عملگر برابری فرق دارد. عملگر جایگزینی یک مساوی تکی " = " است ولی عملگر برابری، دو مساوی " = = " است. مثلا دستور x == 33; مقدار 33 را در x قرار میدهد ولی دستورx == 33; بررسی میکند که آیا مقدار x با 33 برابر است یا خیر. درک این تفاوت اهمیت زیادی دارد.
یك بلوك دستورالعمل زنجیرهای از دستورالعملهاست كه درون براكت {} محصور شده، مانند :
int temp=x;
x = y;
y = temp;
}
در برنامههای ++C یک بلوک دستورالعمل مانند یک دستورالعمل تکی است.
مثال:این برنامه دو عدد صحیح را گرفته و به ترتیب بزرگتری، آنها را چاپ میكند:
#include
using namespace std;
int main()
{ int x, y;
cout << "Enter two integers: ";
cin >> x >> y;
if (x > y) { int temp = x;
x = y;
y = temp;
} //swap x and y
cout << x << " <= " << y << endl;
شرط مرکب:
شرط هایی مانند n%d و x>=y میتوانند به صورت یك شرط مركب با هم تركیب شوند. این كار با استفاده ازعملگرهای منطقی && (and) و || (or) و ! (not) صورت میپذیرد. این عملگرها به شکل زیر تعریف میشوند:
سه عملگر منطقی && (and) و || (or) و ! (not) معمولا با استفاده از جداول درستی به گونه ی زیر بیان میشوند.
چون همۀ مقادیر صحیح ناصفر به معنای درست تفسیر میشوند، عبارات منطقی اغلب تغییر قیافه میدهند. برای مثال دستور
if (n) cout << "n is not zero";
وقتی n غیر صفر است عبارت n is not zero را چاپ میكند زیرا عبارت منطقی (n) وقتی مقدار n غیر صفر است به عنوان درست تفسیر میگردد.
استفاده از پرانتزها به دور هر شرط برای پرهیز از اشتباه در اولویت عملگرها كار خوبی است هرچند ضروری نیست.
عدم استفاده از دو عملگر مقایسه ای در یك شرط نتیجه اشتباهی می دهد: مثلا 5<=x<=10 یك عبارت همیشه درست است در حالی كه (5<=x && x<=10) بسته به مقادیر مختلف x نتایج متفاوتی دارد.
مثال: بررسی قرار داشتن یك عدد در یك بازه
#include
using namespace std;
int main()
{ int a;
cin >> a;
if (a < 10)
cout << “fail”;
if (a > 20)
cout << “invalid”;
if (a >= 10)
if (a <= 20)
cout << “pass”;
return 0;
}
مثال: بررسی قرار داشتن یك عدد در چند بازه
#include
#include
using namespace std;
int main()
{ int a;
cin >> a;
if (((10<=a)&&(20>=a))||(100 < a))
cout << “accepted”;
return 0;
}
if..elseدستور
دستور if..else تودرتو، اغلب برای بررسی مجموعهای از حالتهای متناوب یا موازی به كار میرود. در این حالات فقط عبارت else شامل دستور if بعدی خواهد بود. این قبیل کدها را معمولا با ساختار else if میسازند.
وقتی دستور if..else به شکل تو در تو به کار میرود، كامپایلر از قانون زیر جهت تجزیه این دستورالعمل مركب استفاده میكند:
« هر else با آخرین if تنها جفت میشود.
مثال: برنامه ای که دو عدد را بگیرد و بسته به خواسته کاربر، جمع یا تفریق آن ها را چاپ کند.
هدف: تمرین if و else
#include
#include
using namespace std;
int main()
{
char ch; // amal
int a, b, c; // adaad va hasel
cin >> a >> ch >> b;
if (ch == ‘+’) // jam’
c = a+b;
else
if (ch == ‘-’)
c = a-b;
cout << “= “ << c << endl;
return 0;
}
تذکر: گذاشتن سمیکالن (;) قبل از else درست نیست
برنامه ای برای رسم یک دایره و یک خط افقی در وسط صفحه، بنویسید. کاربر در ابتدا مشخص می کند که قرار است دایره رسم شود یا خط. در صورت نیاز به رسم دایره، شعاع آن و در صورت نیاز به رسم خط، طول آن پرسیده شود.
#include
using namespace std;
int main()
{
int gd, gm = DETECT;
int radius; // shoa-ye dayere
int d; // tool-e khat
char ch; // voroodi
initwindow(800,600);
// gereftan-e voroodi
cout << “Press ‘c’ to draw a Circle\nPress ‘l’ to draw a
cin >> ch;
// rasm
if ( ch == ‘c’ )
{
cout << “Radius? “;
cin >> radius;
x = getmaxx() / 2;
y = getmaxy() / 2;
circle(x, y, radius);
}
else
{
cout << “Length? “;
cin >> d;
x = ( getmaxx() – d ) / 2;
y = getmaxy() / 2;
line(x, y, x+d, y);
}
getch();
closegraph();
return 0;
}
برنامه ای بنویسید كه یك عدد از كاربر بگیرد و در صورتی كه این عدد از اعداد دو رقمی بود، پیام خاصی را روی صفحه چاپ كند.
#include
#include
using namespace std;
int main()
{ int a;
cin >> a;
if ( a >= 10 && a <= 99 )
cout << “accepted” << endl;
else
cout << “rejected” << endl;
return 0;
}
// mohasebe-ye markaz
cx = getmaxx() / 2;
cy = getmaxy() / 2;
// rasme dayere
circle(cx, cy, radius);
// yaftan-e noghteye tasadofi
cout << “Enter x y: “;
cin >> x << y;
putpixel(x,y,WHITE);
// yaftan-e fasele az markaz
d = (x–cx)*(x-cx) + (y-cy)*(y-cy);
// ta’yeen-e vaziat
if ( d < radius*radius )
cout << “Daroon-e dayere.”;
if ( d == radius*radius )
cout << “Roo-e dayere.”;
if ( d > radius )
cout << “Biroon-e dayere.”;
cout << endl;
getch();
closegraph();
return 0;
}
گام به گام با برنامه نویسی به زبان C++
|
بخش پژوهش های دانش آموزی سایت تبیان
منبع:
مطالب مرتبط: