পাতা

*শর্ত প্রযোজ্য

ক্লাস তো অনেকদিন করলে। এরই মাঝে একদিন ক্লাস শুরু হতেই স্যার বলল, যেহেতু তোমাদের অনেকদিন ধরেই ক্লাস চলছে, তাই একটা ক্লাসটেস্ট নেয়া দরকার। কিন্তু, সামনের সপ্তাহেই তাকে একটা সেমিনারে জয়েন করতে গুয়াংঝৌ যেতে হবে। কিন্তু, তার জন্য ক্লাসটেস্ট বাদ যাবে না। যদি স্যার সেদিন ক্লাসে আসতে পারে, তাহলে বোর্ডে চারটা সংখ্যা লিখে দেবে। তোমাদের তার যোগফল আর গুণফল বের করতে হবে। আর যদি স্যার ক্লাসে আসতে না পারে, তাহলে তোমাদের ২৫৬ এর নামতা লিখতে হবে। অর্থাৎ, ব্যাপারটা এরকম - যদি একটা ঘটনা সত্যি হয় (স্যারের ক্লাসে আসা) তাহলে একটা ঘটনা ঘটবে। আর যদি সেটা মিথ্যে হয়, তাহলে অন্য একটা ঘটনা ঘটবে। প্রোগ্রামিংয়ে এই জিনিসটাকে if আর else নামের দু'টো শব্দ দিয়েই সামলে নেয়া যায়। তাহলে আমরা এই প্রোগ্রামটা লিখে ফেলি -

  1. #include <stdio.h>
  2.  
  3. int main(){
  4.     int sir_present = 1;
  5.     if(sir_present == 1){
  6.         int a, b, c, d;
  7.         scanf("%d %d %d %d"&a, &b, &c, &d);
  8.         printf("Summation: %d \n", a+b+c+d);
  9.         printf("Multiplication: %d\n", a*b*c*d);
  10.     }
  11.     else{
  12.         printf("%d X %d = %d\n"2561256*1);
  13.         printf("%d X %d = %d\n"2562256*2);
  14.         printf("%d X %d = %d\n"2563256*3);
  15.         printf("%d X %d = %d\n"2564256*4);
  16.         printf("%d X %d = %d\n"2565256*5);
  17.         printf("%d X %d = %d\n"2566256*6);
  18.         printf("%d X %d = %d\n"2567256*7);
  19.         printf("%d X %d = %d\n"2568256*8);
  20.         printf("%d X %d = %d\n"2569256*9);
  21.         printf("%d X %d = %d\n"25610256*10);
  22.     }
  23. }

মনে করি, আমাদের sir_present ভ্যারিয়েবলটার মধ্যে স্যার আছে কি'না সেই তথ্যটা আছে। যদি ভ্যারিয়েবলটার মান 1 হয়, তার মানে স্যার আছে। আর যদি অন্য কিছু হয় তাহলে স্যার নেই। তাহলে আমরা if এর পরে () এর মধ্যে আমাদের শর্তটা লিখেছি। এই শর্তটা যদি সত্য হয়, তাহলে if এর পরের {} বন্ধনীর মধ্যে লেখা প্রোগ্রামটুকু কাজ করবে। আর যদি শর্তটা মিথ্যে হয় তাহলে else এর পরের {} বন্ধনীর মধ্যে লেখা প্রোগ্রামটুকু কাজ করবে। এখানে যে জিনিসটায় সবচেয়ে বেশি ভুল করা হয় সেটা হচ্ছে, if এর ভেতরে যে শর্তটা লেখা আছে সেখানে একটা = চিহ্ন ব্যবহার করা। একটা = চিহ্ন ব্যবহার করে আমরা কোন ভ্যারিয়েবলের মান ঠিক করি। যেমনে প্রোগ্রামের প্রথম লাইনেই sir_present = 1 লিখে sir_present ভ্যারিয়েবলের মান 1 ঠিক করেছি। কিন্তু, যখন আমরা আবার লিখি sir_present == 1 এর মানে, আমরা sir_present ভ্যারিয়েবলের মান এবং 1 এর মধ্যে তুলনা করি। যদি এই দু'টোর মান সমান হয়, তাহলে আমাদের শর্তটা সত্য হয় এবং if এর পরের {} বন্ধনীর প্রোগ্রামটুকু কাজ করে। আর যদি সেটা মিথ্যে হয়, তাহলে else এর পরে লেখা {} বন্ধনীর প্রোগ্রামটুকু কাজ করবে।

আমরা if এর শর্ত হিসেবে যে কেবল == চিহ্নই ব্যবহার করতে পারি, এমনটা নয়। দু'টো ভ্যারিয়েবলের মান তুলনা করার জন্য ==, <, >, <=, >= এই পাঁচটা চিহ্নের যেকোনোটা ব্যবহার করা যায়। ধরা যাক, আমাদের একটা প্রোগ্রাম লিখতে হবে, যেটা একটা সংখ্যা ধনাত্মক না ঋণাত্মক, সেটা বলবে। তাহলে তার কোডটা নিচের মত হবে।

এবার আমরা প্রোগ্রামটা রান করিয়ে একটা সংখ্যা ইনপুট দিলেই সেটা ধনাত্মক না ঋণাত্মক, সেটা জানিয়ে দেবে। কিন্তু, আমাদের এই প্রোগ্রামটার একটা সমস্যা আছে। সেটা হচ্ছে, কোন সংখ্যা শূন্য থেকে ছোট না হলেই সেটা যে ধনাত্মক সংখ্যা হবে, এমন কোন কথা নেই। সেটা ধনাত্মক কিংবা শূন্য দু'টোই হতে পারে। তাহলে, যদি সংখ্যাটা শূন্যের চেয়ে ছোট নাও হয়, তারপরও আমাদের দেখতে হবে, সংখ্যাটা শুন্যের চেয়ে বড় কি'না। যদি হয়, তাহলে তো সংখ্যাটা ধনাত্মক সংখ্যা। আর যদি দু'টো শর্তের একটাও সত্যি না হয়, তার মানে সংখ্যাটা শূন্য নিজেই। সুতরাং, প্রোগ্রামটা আসলে হওয়া উচিৎ নিচের মত।

এখানে প্রথমে আমরা চেক করছি n ভ্যারিয়েবলের মান শূন্যের চেয়ে ছোট কি'না। যদি হয়, তাহলে আমরা প্রিন্ট করব, n এর মান ঋণাত্মক; তারপর আর কিছু করবে না। কিন্তু, যদি সেই মান শূন্যের চেয়ে ছোট না হয়, তাহলে আমরা চেক করব, n এর মান শূন্যের চেয়ে বড় কি'না। যদি সেটা হয়ে যায়, তাহলে আমরা প্রিন্ট করব, n এর মান ধনাত্মক। কিন্তু, যদি এই দু'টো শর্তের একটাও ঠিক না হয়, তার মানে n এর মান শূন্য। আমরা সেটাই প্রিন্ট করাব।

আরেকটা ব্যাপার হচ্ছে, if এর পরে যে আমাদের সবসময়ই একটা else বা else if রাখতে হবে, ব্যাপারটা এমনও নয়। চাইলে, আমরা শুধু if দিয়েও প্রোগ্রাম লিখতে পারি। ধরা যাক, আমাদের কোন একটা সংখ্যার পরমমান বের করতে হবে। কোন সংখ্যার পরমমান হচ্ছে, সংখ্যারেখায় শূন্য হতে ওই সংখ্যার দূরত্ব। যেমন, শূন্য থেকে চারের দূরত্ব হচ্ছে, চার। আবার শূন্য থেকে -৫ এর দূরত্ব হচ্ছে পাঁচ। কারণ, শূন্য থেকে পাঁচ ঘর বামে গেলে আমরা -৫ পাই। অর্থাৎ, কোন ধনাত্মক সংখ্যার পরমমান সংখ্যাটা নিজেই। আর ঋণাত্মক সংখ্যাকে যদি আমরা -১ দিয়ে গুণ করি, তাহলে তার পরমমান পাওয়া যায়। প্রোগ্রামটা লিখে ফেলা যাক।

এই প্রোগ্রামটায় যদি শর্তটা সত্য হয়, তাহলে আমরা একটা কাজ করব। কিন্তু, যদি সত্য না হয়, তাহলে আমাদের কিছুই করতে হবে না। তাই এখানে কোন else নেই।

তোমার হোমওয়ার্ক হচ্ছে, এমন একটা প্রোগ্রাম লিখতে হবে, যেটা একটা সাল ইনপুট নেবে তারপর সেটা লিপ ইয়ার (অধিবর্ষ) কি'না সেটা চেক করবে। এর জন্য তোমাদের অতিরিক্ত একটা জিনিস জানা থাকা ভাল। সেটা হচ্ছে % অপারেটর। এটাকে বলে মডুলাস অপারেটর। এটা দিয়ে দু'টো সংখ্যার ভাগশেষ বের করা যায়। যদি আমরা লিখি 23 % 3, তাহলে এর মান হচ্ছে 2 কারণ, 23 কে 3 দ্বারা ভাগ করলে ভাগশেষ থাকে 2.

No comments:

Post a Comment