C প্রোগ্রামিং এ if ….. else এর ব্যবহার (Updated)


Published: 2019-04-28 21:52:31 BdST, Updated: 2019-05-24 15:36:51 BdST

Professor Dr. Chowdhury Mofizur Rahman: যে কোনো প্রোগ্রামিং ভাষাতে দুটো প্রধান নিয়ন্ত্রক স্টেটমেন্ট থাকে। প্রথম টি হচ্ছে if/else জাতীয় conditional statement আর দ্বিতীয়টি হচ্ছে while/do while/for জাতীয় looping statement. এই দুই ধরনের স্টেটমেন্ট use করে অনেক জটিল প্রোগ্রাম লেখা সম্ভব।

প্রোগ্রাম এক:

কীবোর্ড থেকে একটি বিষয় এর মার্কস ইনপুট নেয়া হলো। মার্কস টি কে গ্রেড এ কনভার্ট করতে হবে। গ্রেডে কনভার্ট করার নিয়মটি দেয়া আছে এরকম:

মার্ক্স 90 বা তার বেশি হলে A, 80 থেকে 90 এর মধ্যে হলে B, 70 থেকে 80 এর মধ্যে হলে C এবং 70 এর নিচে হলে F. ধরা যাক মার্কস টি xyz নামক variable এ ইনপুট নেয়া হলো। xyz এর মধ্যে যে কোনো ভ্যালু থাকতে পারে। ধরা যাক মার্ক্ কে কনভার্ট করে grade er value আমরা result নামক আর একটি variable এ রাখবো। যদি xyz এর value >= 90 এবং <= 100 হয় তবে result = ‘A’ হবে। যদি xyz এর value >= 80 এবং < 90 হয় তবে result = ‘B’ হবে। যদি xyz এর value >= 70 এবং < 80 হয় তবে result = ‘C’ হবে। আর এগুলোর কোনো টি ও না হলে xyz এর value অবশ্যই 70 এর থেকে কম হবে এবং result = ‘F’ হবে। এখানে প্রতিটি result এর value দুটো কন্ডিশন এর উপর নির্ভর করছে। দুটো কন্ডিশন এর প্রতিটি কন্ডিশন পূরণ হলেই কেবলমাত্র result এর value assign করা যাবে। এরকম দুটো কন্ডিশন কে আমরা && দিয়ে connect করি। && দিয়ে কোনেক্ট করা কন্ডিশন কে প্রোগ্রামিং এর ভাষা তে নিম্ন রূপে লেখা যায়:

if (xyz >= 90 && xyz <= 100 )

result = ‘A’ অর্থাৎ দুটো কন্ডিশন সত্যি হলেই কেবলমাত্র result এর value ‘A’ হবে। এখন আমরা পুরো প্রোগ্রামটা লেখার চেষ্টা করি।

#include <stdio.h>

void main (void)
{
int xyz;
char result;

printf (“Please input marks from keyboard”);
scanf (“%d”, &xyz);
if (xyz >= 90 && xyz <= 100 )
result = ‘A’;
else if (xyz >= 80 && xyz < 90 )
result = ‘B’;
else if (xyz >= 70 && xyz < 80 )
result = ‘C’;
else
result = ‘F’;
printf (“ The converted grade is %c”, result);
}

প্রোগ্রাম দুই:

তিনটি সরল রেখার দৈর্ঘ্য আমরা কীবোর্ড থেকে তিনটি ভ্যারিয়েবল a, b আর c এর মধ্যে ইনপুট নেব। এখন আমরা চেক করে দেখব এই তিনটি সরল রেখা দিয়ে কোনো ত্রিভুজ আঁকা যায় কিনা। জ্যামিতি র নিয়ম অনুযায়ী যে কোনো দুই বাহুর যোগফল যদি তৃতীয় বাহু অপেক্ষা বড় হয় তবেই ত্রিভুজ টি আকা যাবে। অর্থাৎ যদি a+b> c বা b+c>a বা c+a >b হয় তবেই ত্রিভুজ টি আঁকা যাবে। তিনটি কন্ডিশন এর একটি সঠিক হলেই ত্রিভুজ টি আঁকা যাবে। এইরকম একাধিক কন্ডিশন OR দিয়ে কানেক্টেড আছে বলা হয়। যা প্রোগ্রামিং এ a+b>c || b+c>a || c+a>b রূপে লেখা হয়। এখন পুরো প্রোগ্রামটি লেখা যাক।

include <stdio.h>

void main (void)
{
int a, b, c;
printf (“Please input three arms of a triangle from keyboard”);
scanf (“%d%d%d”, &a, &b, &c);
if ( a+b>c || b+c>a || c+a>b)
printf( “Triangle can be drawn”);
else
printf( “Triangle cannot be drawn”);
}
প্রোগ্রাম তিন:

আমরা ছোট বেলার একটা অঙ্ক C প্রোগ্রামিং দিয়ে সমাধানের চেষ্টা করছি। ধরা যাক আমরা 12 ঘন্টা 40 মিনিট 35 সেকেন্ড এর সাথে 10 ঘন্টা 45 মিনিট 40 সেকেন্ড যোগ করতে চাই। যখন আমরা প্রোগ্রাম লিখবো সেই প্রোগ্রামটা যেন যেকোনো দুটি সময় কে যোগ করতে পারে। অর্থাৎ আমাদের প্রোগ্রামটা উপরের দুটো সময়কে যোগ করতেতো পারবেই, সাথে সাথে অন্য যে কোনো দুটো সময়কে যোগ করতে পারবে। আরো পরিষ্কার করে বলতে গেলে আমাদের কে এমন ভাবে প্রোগ্রাম লিখতে হবে যাতে করে প্রোগ্রামটি যে কোনো দুটি সময় ডাটা কে যোগ করতে পারে। আমরা যদি 19 ঘন্টা 39 মিনিট 10 সেকেন্ড এর সাথে 10 ঘন্টা 10 মিনিট 15 সেকেন্ড যোগ করতে চাই অথবা অন্য যে কোনো দুটি সময় কে যোগ করতে চাই তা যেন আমাদের প্রোগ্রাম টি করতে পারে। অর্থাৎ একটা প্রোগ্রাম যেকোনো ডাটা র উপর কাজ করতে সক্ষম হবে। তাহলে শুরু করা যাক। প্রথম সময় ডাটা টি আমরা hr1, min1, sec1 এই তিনটি variables er মধ্যে রাখবো। Variable হচ্ছে মেমোরির জায়গা যেখানে আমরা ডাটা স্টোর করে রাখতে পারি। দ্বিতীয় সময় ডাটা টি আমরা hr2, min2, sec2 এই তিনটি variables মধ্যে রাখতে পারি। দুটো সময় ডাটা যোগ করে আমরা ফলাফল hr3, min3, sec3 variables মধ্যে রাখবো। প্রোগ্রাম এর কোড আমরা পরে লিখবো। প্রথমে আমাদের প্রোগ্রাম ইউজার কে দুটো সময় ডাটা ইনপুট করতে বলবে। ইউজার প্রথম সময় ডাটার ঘন্টা মিনিট সেকেন্ড কীবোর্ড থেকে ইনপুট দেবে। আর ইনপুট দেয়া ডাটা গুলো hr1, min1, sec1 এ জমা হবে। এরপর ইউজার দ্বিতীয় সময় ডাটার ঘন্টা মিনিট সেকেন্ড কীবোর্ড থেকে ইনপুট দেবে আর সেগুলো hr2, min2, sec2 যে জমা হবে। আমরা কিন্তু জানিনা ইউজার কি ইনপুট দিয়েছে। আমাদের কে এমনভাবে প্রোগ্রামটি লিখতে হবে যেন আমাদের প্রোগ্রামটি ইউজারের যে কোনো ইনপুট ডাটা র উপরেই কাজ করতে পারে। আমরা প্রথমে sec1 and sec2 যোগ করব। যোগফল টা sec3 te রাখবো। প্রোগ্রামিংয়ের ভাষাই যেটাকে লেখা হয় sec3 = sec1 +sec2; যদি যোগফল 60 থেকে বেশি হয় অর্থাৎ যদি sec3 এর value 60 এর থেকে বেশি হয় তবে sec3 থেকে 60 বিয়োগ করতে হবে এবং min1 বা min2 এর সাথে 1 যোগ করতে হবে। আর যদি sec3 এর value 60 এর কম হয় তাহলে কিছু করার দরকার নাই। এখানে sec3 এর value কে 60 এর সাথে compare করা হচ্ছে। যদি sec3 >60 হয় তবে sec3 থেকে 60 বিয়োগ করতে হবে এবং min1 বা min2 er সাথে 1 যোগ করতে হবে। এটাকে আমরা প্রোগ্রামিং এর ভাষাই লিখতে পারি

if (sec3 > 60)
{
sec3 = sec3 – 60;
min1 = min1 + 1;
}
উপরে যদি condition টা সত্যি হয় তবে { } এর ভেতর এর কাজগুলো হবে। আর যদি সত্যি না হয় তবে { } এর ভেত রের কাজগুলো হবে না।

আমরা এখন min1 and min2 যোগ করব। যোগফল টা min3 te রাখবো। প্রোগ্রামিংয়ের ভাষাই যেটাকে লেখা হয় min3 = min1 +min2; যদি যোগফল 60 থেকে বেশি হয় অর্থাৎ যদি min3 এর value 60 এর থেকে বেশি হয় তবে min3 থেকে 60 বিয়োগ করতে হবে এবং hr1 বা hr2 এর সাথে 1 যোগ করতে হবে। আর যদি min3 এর value 60 এর কম হয় তাহলে কিছু করার দরকার নাই। এখানে min3 এর value কে 60 এর সাথে compare করা হচ্ছে। যদি min3 >60 হয় তবে min3 থেকে 60 বিয়োগ করতে হবে এবং hr1 বা hr2 er সাথে 1 যোগ করতে হবে। এটাকে আমরা প্রোগ্রামিং এর ভাষাই লিখতে পারি

If ( min3 > 60)
{
min3 = min3 – 60;
hr1 = hr1 + 1;
}
উপরে যদি condition টা সত্যি হয় তবে { } এর ভেতর এর কাজগুলো হবে। আর যদি সত্যি না হয় তবে { } এর ভেত রের কাজগুলো হবে না।

অবশেষে আমরা hr1 and hr2 যোগ করে যোগফল hr3 তে রাখবো। তাহলে পুরো প্রোগ্রাম টা নিচের মত হবে।

#include <stdio.h>
void main(void)
{
int hr1, min1, sec1, hr2, min2, sec2, hr3, min3, sec3;
printf (“please input time1”);
scanf (“%d%d%d”, &hr1, &min1, &sec1);
printf(“please input time2”) ;
scanf (“%d%d%d”, &hr2, &min2, &sec2);
sec3 = sec1+sec2;
If ( sec3 > 60)
{
sec3 = sec3 – 60;
min1 = min1 + 1;
}
min3 = min1 + min2;
If ( min3 > 60)
{
min3 = min3 – 60;
hr1 = hr1 + 1;
}
hr3 = hr1 +hr2;
printf(“Hour = %d, Minute = %d, Second = %d”, hr3, min3, sec3) ;
}
আমি ধরে নিয়েছি যে পাঠক scanf এবং printf statement জানেন যাদের মাধ্যমে আমরা ডাটা ইনপুট করতে পারি এবং রেজাল্ট ডিসপ্লে করতে পারি। যদি জানা না থাকে তবে অনুরোধ পেলে এই দুটো স্টেটমেন্ট পরে ব্যাখ্যা করবো। প্রোগ্রাম রান করার সময় যদি আমরা 12 hour, 30 min, 45 sec এবং 13 hour, 15 min, 25 sec ইনপুট দিই তবে প্রোগ্রাম টিতে প্রথম if টা কাজ করবে কিন্তু দ্বিতীয় টা কাজ করবে না। কেন?

প্রোগ্রাম রান করার সময় যদি আমরা 12 hour, 40 min, 45 sec এবং 13 hour, 25 min, 25 sec ইনপুট দিই তবে প্রোগ্রাম টিতে প্রথম if টা কাজ করবে এবং দ্বিতীয় টাও কাজ করবে। কেন?

ঢাকা, ২৮ এপ্রিল (ক্যাম্পাসলঅইভ২৪.কম)//আরএইচ

ক্যাম্পাসলাইভ২৪ডটকম-এ (campuslive24.com) প্রচারিত/প্রকাশিত যে কোনো সংবাদ, তথ্য, ছবি, আলোকচিত্র, রেখাচিত্র, ভিডিওচিত্র, অডিও কনটেন্ট কপিরাইট আইনে পূর্বানুমতি ছাড়া ব্যবহার করা আইনত অপরাধ।