সি++ পর্ব ৩.১ – কন্ডিশনাল লজিক

0
58

One small step for a programmer, one giant leap for a lifetime!

এ পর্যন্ত যা শেখা হয়েছে, তা অল্প হলেও বিশাল তাৎপর্যপূর্ণ। তবে এটুকু শিখেই বসে থাকলে তো হবে না। শুধু ইনপুট আর আউটপুট নেওয়া জেনে কীই বা করা যাবে আর! আমাদের তো ইনপুট নিয়ে কাজ-কারবারও করতে হবে! আর এই কাজ-কারবার করার জন্য প্রথমেই আমাদের বুঝতে হবে কন্ডিশনাল লজিক সম্পর্কে!

কন্ডিশনাল লজিক হল তোমার প্রোগ্রামে কী দিলে কী হবে সেটার শর্ত। ধর তুমি এমন একটা প্রোগ্রাম লিখতে চাও, যেখানে প্রথমে তুমি ইউজারকে একটা ইন্টিজার দিতে বলবে। এখন সে যদি ০-এর চেয়ে বড় ইন্টিজার দেয়, তাহলে তুমি তাকে বলবে যে, সে একটা পজিটিভ ইন্টিজার দিয়েছে।

অর্থাৎ, যদি ইন্টিজার ০ থেকে বড় হয়, প্রিন্ট করবে “Your input is a positive integer!”

এখন এই ব্যাপারটাই যদি তুমি সি++ কিংবা সি-তে লিখতে চাও, তাহলে তোমাকে লিখতে হবে,

হ্যা, এতটাই সহজ। 😀 কী? বিশ্বাস হচ্ছে না? নিচের কোডটি রান করে নিজেই দেখে নাও!

সি কোডের জন্য এখানে ক্লিক কর।  

এটা রান করলে প্রথমেই স্ক্রীনে লেখা উঠবে “A number please?”

এরপর তুমি একটা পজিটিভ ইন্টিজার ইনপুট দিলে লেখা উঠবে “Your input is a positive intger!”

Snap 2015-05-05 at 21.09.19

কিন্তু একটা সমস্যা কি খেয়াল করেছ? তুমি যদি একটা নেগেটিভ ইন্টিজার ইনপুট দাও, তাহলে এটা কিছু না বলেই প্রোগ্রাম টার্মিনেট করে দিচ্ছে!

Snap 2015-05-05 at 21.10.40

আর করবেই বা কেন! তুমি তো বল নি নেগেটিভ ইন্টিজার দিলে সে কী করবে! আর কম্পিউটারকে যা বলা হয়, তার বাইরে সে একটা কাজও করে না! তো আমাদেরকে এখন কী বলতে হচ্ছে?

যদি ইন্টিজার ০ থেকে বড় হয়, প্রিন্ট করবে “Your input is a positive integer!”

অথবা যদি ইন্টিজার ০ থেকে ছোট হয়, প্রিন্ট করবে “Your input is a negative integer!”

অথবা যদি“-র ইংরেজি কি?

  • else if

তো এই লাইন দু’টি এখন সি++ কিংবা সি-তে লিখলে হয়ে যাবে এরকমঃ

অনেক বেশি সোজা না? তো পুরো কোডটি লিখে এবার রান করে ফেল!

সি কোডের জন্য এখানে ক্লিক কর

এবার রান করলে দেখবে ০-এর চেয়ে বড় ইন্টিজারের ক্ষেত্রে এক ধরণের আউটপুট আর ০-এর চেয়ে ছোট ইন্টিজারের জন্য আরেকধরণের আউটপুট আসছে।

কিন্তু তারপরও একটা সমস্যা থেকে গেল। ইউজার যদি ০ ইনপুট দেয়, তাহলে কী হবে? আগের মত কিছু না বলেই টার্মিনেট! 🙁

কিন্তু চিন্তার কিছুই নেই! আমরা এখন আরও একটা else if ব্যবহার করবো! তবে কথা আছে, এখন কিন্তু (number = 0)  লিখে দিলেই হবে না!

এখন আমরা পরিচিত হব একটা আজব অপারেটরের সাথে, যার সাথে আগে কখনো দেখা হয় নি! এটা হল “==” অপারেটর। এই অপারেটর দিয়ে চেক করা হয় দুই পাশের ভ্যারিয়েবল, সংখ্যা কিংবা যাই হোক – সমান কি না! তো এবার আমাদের পুরো কোডটি লিখে ফেলা যাক।

সি কোডের জন্য এখানে ক্লিক কর

এখন যে ধরণের ইন্টিজারই দেওয়া হোক না কেন, আমাদের প্রোগ্রাম ঠিক আউটপুট দিবে। তো আজ আমরা শিখলাম তিনটা অপারেটর। এছাড়াও “Greater than or equal to”-এর জন্য আছে “>=”, “Less than or equal to”-এর জন্য আছে “<=”, আর “Not equal”-এর জন্য আছে “!=”। নিচে পুরো লিস্টটা দিয়ে দিলাম, আশা করি বুঝতে সমস্যা হবে না। কোনো সমস্যা হলে অবশ্যই জানাবে!

11210279_10202714118134297_1737590330_n

এখন, আমরা আমাদের আগের কোডটিকে এভাবেও লিখতে পারতামঃ

সি কোডের জন্য এখানে ক্লিক কর

কিন্তু সেটা হবে বোকামি! একটা সংখ্যা যদি ০-এর চেয়ে বড় হয়, তাহলে নিশ্চয় সেটা ০ কিংবা ০-এর চেয়ে ছোট হতে পারে না! কিন্তু আমরা যেহেতু বারবার চেক করতে বলেছি, কম্পিউটারও বার বার চেক করে সময় নষ্ট করবে। যদিও শর্ত পূরণ না হওয়ায় ভেতরের কাজ হবে না, তবুও শুধু শুধু চেকটা করার মানে হয় না!

শেষ করার আগে আমরা আরও কিছু অপারেটর দেখে নিব। এগুলো হল ম্যাথমেটিকাল অপারেটর। নিচের লিস্টটা দেখ।

math-operators-for-c-1

এখানে প্রথম চারটা নিয়ে আসলে কিছু বলার নেই। শেষটা হল ভাগশেষ বের করার অপারেটর। অর্থাৎ আমরা যদি লিখি int a = 9%4; তাহলে ৯ কে ৪ দিয়ে ভাগ করলে যে ভাগশেষ থাকে, তা a-তে অ্যাসাইন(সেভ) হয়ে থাকবে! নিচের কোডটা রান করলে আরও ভাল মত বুঝতে পারবেঃ

সি কোড এখানে

এখানে আমরা আগেই a আর b-এর মান অ্যাসাইন করে দিয়েছি ৭ এবং ১৩। এখন কোডটি রান করলে আউটপুট হবে এরকমঃ

Snap 2015-05-05 at 21.39.52

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

ফাঁকিবাজি না করলে ধরতে পারার কথা যে, এখানে বাকি মানগুলো ঠিক থাকলেও ভাগফলটা ঠিক মত আসে নি! এর কারণ হল আমরা ইন্টিজার ভ্যারিয়েবল ডিক্লেয়ার করেছি, আর দুইটি ইন্টিজার ভাগ করেছি। এ ব্যাপারে আমরা পরে আরও জানবো। আপাতত এটুকু জেনে রাখ! 🙂

আজকের মত এখানেই শেষ। তবে যাওয়ার আগে কিছু বাড়ির কাজ! নিচের কোডগুলো লেখার চেষ্টা করঃ

(১) তুমি একটা ইন্টিজার ইনপুট নিবা। এরপর প্রিন্ট করে বলে দিবা সেই ইন্টিজার জোড় নাকি বিজোড়।

(২) একটা ইন্টিজার ইনপুট নিবা। এরপর সেটা ২, ৩ আর ৫ দিয়ে ভাগ যায় নাকি সেটা প্রিন্ট করবা।

(৩) একটা নির্দিষ্ট ক্যারেক্টার ইউজারকে ইনপুট দিতে বলবা। এরপর ইনপুট দেওয়ার পর তাকে বলে দিবা সে ঠিক ইনপুট দিছে নাকি ভুল!

আশা করি কিছুক্ষণ চেষ্টা করলেই কোডগুলো লিখে ফেলতে পারবে। কোনো সমস্যা হলে আমাকে বলবে। অবশ্যই সাহায্য করবো।

হ্যাপি কোডিং। 🙂

LEAVE A REPLY

Please enter your comment!
Please enter your name here