ساختارهای تکرار،امکانات خوبی برای تکرار اجرای مجموعه ای از دستورات برنامه
می باشند .
اما اگر بخواهیم تحت شرایطی که در برنامه اتفاق می افتد تصمیم گیری
لازم را داشته باشیم بطوری که تحت شرایطی ، مجموعه ای از دستورات اجرا شوند و
مجموعه ای دیگر از دستورات اجرا نشده وکنترل اجرای برنامه بجای دیگر منتقل شود
به ابزار دیگری بنام ساختارهای تصمیم نیاز داریم .
این ساختارها در زبان های
برنامه سازی مختلف به اشکال متفاوتی وجود دارند که انواع مختلف آن را در زبان C
بررسی می کنیم .
ساختار تصمیم if
ساختار if ( که ساختار انتقال کنترل شرطی نیز نامگذاری میشود ) موجب میگردد
تا تحت شرایطی ، مجموعه ای از دستورات اجرا شده و یااز اجرای این مجموعه دستورات
صرفنظر گردد .
این ساختار بصورت های زیر مورد استفاده قرار می گیرد .
(َ1) ;دستور (شرط) if
(َ2) (شرط) if {
مجموعه دستورات 1 }
else
{
مجموعه دستورات 2 }
در روش (1) ، شرط ذکر شده بررسی می شود و در صورت برقرار بودن ، دستور بعد
از آن اجرا می شود و در غیر اینصورت کنترل اجرای برنامه به دستور بعد از if
منتقل می گردد .
در روش (2) ، شرط ذکر شده بررسی می شود و در صورت برقرار بودن ، مجموعه
دستورات (1) اجرا میشوند و در غیر اینصورت مجموعه دستورات (2) اجرا خواهند شد.
لازم به ذکر است که وجود else در ساختار if اختیاری است .
یعنی ساختار if را
بصورت زیر نیز می توان بکار برد :
(شرط) if {
مجموعه دستورات }
در روش فوق پس از این که کنترل اجرای برنامه به if رسید شرط مورد نظر بررسی
می شود .
چنانچه این شرط برقرار باشد ، مجموعه دستورات داخل {و }و ( که یک بلاک
نامیده می شود ) اجرا می گردد وگرنه کنترل اجرای برنامه به اولین دستور بعد از
بلاک if منتقل خواهد شد .
استفاده از ساختار if بصورت لانه ای ( تو در تو ) نیز
امکان پذیر است که در اینصورت اولین else به آخرین if بر می گردد .
مثال 1: برنامه ای که با خواندن یک جمله از ورودی ، تعداد کاراکترها و کلمات
موجود در جمله را محاسبه می کند .
کلمات با فاصله (blank) از یکدیگر جدا شده و
انتهای جمله به کلید enter ختم می گردد .
main)(
ساختارهای تصمیم ساختارهای تکرار،امکانات خوبی برای تکرار اجرای مجموعه ای از دستورات برنامه می باشند .
اما اگر بخواهیم تحت شرایطی که در برنامه اتفاق می افتد تصمیم گیری لازم را داشته باشیم بطوری که تحت شرایطی ، مجموعه ای از دستورات اجرا شوند و مجموعه ای دیگر از دستورات اجرا نشده وکنترل اجرای برنامه بجای دیگر منتقل شود به ابزار دیگری بنام ساختارهای تصمیم نیاز داریم .
این ساختارها در زبان های برنامه سازی مختلف به اشکال متفاوتی وجود دارند که انواع مختلف آن را در زبان C بررسی می کنیم .
ساختار تصمیم if ساختار if ( که ساختار انتقال کنترل شرطی نیز نامگذاری میشود ) موجب میگردد تا تحت شرایطی ، مجموعه ای از دستورات اجرا شده و یااز اجرای این مجموعه دستورات صرفنظر گردد .
(َ1) ;دستور (شرط) if (َ2) (شرط) if { مجموعه دستورات 1 } else { مجموعه دستورات 2 } در روش (1) ، شرط ذکر شده بررسی می شود و در صورت برقرار بودن ، دستور بعد از آن اجرا می شود و در غیر اینصورت کنترل اجرای برنامه به دستور بعد از if منتقل می گردد .
در روش (2) ، شرط ذکر شده بررسی می شود و در صورت برقرار بودن ، مجموعه دستورات (1) اجرا میشوند و در غیر اینصورت مجموعه دستورات (2) اجرا خواهند شد.
لازم به ذکر است که وجود else در ساختار if اختیاری است .
یعنی ساختار if را بصورت زیر نیز می توان بکار برد : (شرط) if { مجموعه دستورات } در روش فوق پس از این که کنترل اجرای برنامه به if رسید شرط مورد نظر بررسی می شود .
چنانچه این شرط برقرار باشد ، مجموعه دستورات داخل {و }و ( که یک بلاک نامیده می شود ) اجرا می گردد وگرنه کنترل اجرای برنامه به اولین دستور بعد از بلاک if منتقل خواهد شد .
استفاده از ساختار if بصورت لانه ای ( تو در تو ) نیز امکان پذیر است که در اینصورت اولین else به آخرین if بر می گردد .
مثال 1: برنامه ای که با خواندن یک جمله از ورودی ، تعداد کاراکترها و کلمات موجود در جمله را محاسبه می کند .
کلمات با فاصله (blank) از یکدیگر جدا شده و انتهای جمله به کلید enter ختم می گردد .
main)( { int charcount=0 ; int wordcount=0 ; char ch ; printf("type a statement:\n" ); while((ch=getche))(!='\r') { charcount ++ ; if(ch==' ') wordcount ++ ; } printf("\n character count is:"); printf("%d"/charcount ); printf("\n word count is:"); printf("%d"/wordcount ); } به نمونه ای از خروجی برنامه مثال 1 توجه نمایید : type a statement: this book is my fifth book.
character count is:27 word count is:6 مثال 2: برنامه ای که بااستفاده از ساختار تصمیم if یک شکل گرافیکی را به کمک کدهای اسکی DBو BOو رسم می کند .
main)( { int x/y ; for(y=1 ; y=47 && ch17) { printf("\n student is exelent"); printf("...
"); } } } به نمونه ای ازخروجی مثال 12 که برای دو نفر ازدانشجویان عمل نموده است توجه نمایید .
enter number of students :2 enter name of student 1: ali enter number of cours of this st:.2 enter unit of cours 1:2 enter grade of cours 1:19 enter unit of cours 2:3 enter grade of cours 2:20 aver is : 19 studnt is exelent...
enter name of student 2: reza enter number of cours of this st:.3 enter unit of cours 1:2 enter grade of cours 1:12 enter unit of