গত পর্বগুলো যারা পড়েন নি, তারা এই লিংক থেকে পড়ে আসতে পারেন।
পর্ব ১
পর্ব ২
পর্ব ৩.১
পর্ব ৩.২
পর্ব ৩.৩
পর্ব ৪.১
আজকের পর্বে আমরা শিখবো কন্ডিশনাল লজিক এর আরো char টাইপ নিয়ে ব্যবহার এবং কন্ডিশনাল লজিক এর AND ও OR অপারেটর এর ব্যবহার শিখে কন্ডিশনাল লজিক পর্ব শেষ করবো।
একটি সংখ্যা জোড় নাকি বিজোড় সেটা যাচাইকরণ প্রোগ্রাম কিভাবে লিখবেন?
সেজন্য আপনাকে শর্ত দিতে হবে কোনো সংখ্যাকে যদি ২ দিয়ে ভাগ করলে দশমিক সংখ্যা না আসে, তাহলে সেটা জোড়, নাহলে বিজোড়! এটাই ভেবেছেন? হ্যা, এটাও করা সম্ভব, কিন্তু তা বেশ জটিল হয়ে যাবে এবং বোকামিও হবে বটে। প্রোগ্রামিং যতো ক্রিয়েটিভ উপায়ে যতো সহজে লিখে একই রেজাল্ট পাওয়া যায়, ততোই সেরা বলে বিবেচিত হবে।
সহজ উপায় কী হতে পারে?
ছোটবেলায় আমরা পড়েছি যে কোনো সংখ্যাকে ২ দিয়ে ভাগ করলে যদি ভাগশেষ ০ আসে তাহলে জোড়, আর যদি ভাগশেষ ১ আসে, তাহলে বিজোড়।
এই নিয়মটাই কাজে লাগাবো।
সি প্রেগ্রামে আপনি 5/2 দিয়ে ভাগ করা শিখেছেন, তাহলে ভাগশেষ নির্ণয় কীভাবে? এজন্য আপনাকে ব্যবহার করতে হবে % চিহ্ন। অর্থাৎ আপনি যদি 5%2 লেখেন, তাহলে সেটার মান আসবে ১ এবং 10%2 এর মান আসবে ০।
তাহলে, আমাদের প্রোগ্রামটি কেমন হবে?
#include <stdio.h>
int main()
{
int x, r;
scanf(“%d”, &x);
r = x % 2;
if (r == 0) {
printf(“The number is even\n”);
}
else {
printf(“The number is odd\n”);
}
return 0;
}
উপরের প্রোগ্রামটি রান করলে নিচের মতো পাবেন।
এইতো।
সংখ্যা নিয়ে যথেষ্ট শিখেছি আমরা। এবার ইংরেজি বর্ণমালা নিয়ে শিখবো চলুন।
ইংরেজি বর্ণ নিয়ে কী প্রোগ্রাম বানানো যায়…. ?
আসুন একটা প্রোগ্রাম বানাই যেটায় কোনো বর্ণ লিখলে সেটা বড় হাতের অক্ষর নাকি ছোট হাতের অক্ষর সেটা বলে দিবে।
সেজন্য আমরা কী করবো? আপনাদের মাথায় হয়তো এই আইডিয়া আসবে যে যদি ইনপুট করা বর্ণ a,b,c,d,e ইত্যাদি হয় এবং তাহলে সেটা ছোট হাতের অক্ষর, নতুবা সেটা বড় হাতের অক্ষর। হ্যা, ঠিক ই ভাবছেন। তাহলে আমাদের এ পর্যন্ত যে ধারণা আছে সেটা নিয়ে যদি প্রোগ্রাম লিখি নিচের মতোন হবে-
int main()
{
char ch;
scanf(“%c”, &ch);
if (ch == ‘a’) {
printf(“%c is lower case\n”, ch);
}
else if (ch == ‘A’){
printf(“%c is upper case\n”, ch);
}
else if (ch == ‘b’){
printf(“%c is lower case\n”, ch);
}
printf(“%c is upper case\n”, ch);
}
…………….. এভাবে চলতে থাকবে Z পর্যন্ত।
এভাবে মোট ২৬ টা বর্ণের ছোট হাতের আর বড় হাতের মোট ৫২টা স্টেটমেন্ট লিখতে হবে। প্রোগ্রামটা লিখতে কত সময় লাগবে আর কত বড় হবে ভেবে দেখুন।
এই সমস্যা থেকে সমাধান পেতে আমরা শিখবো AND অপারেটর। এই অপারেটর ব্যবহার করে আমরা এক স্টেটমেন্টের মধ্যে একাধিক শর্ত দিবো। আর সব শর্তই যদি মানে তাহলেই শর্ত সম্পুর্ন হবে, নাহলে হবে না।
AND অপারেটর ব্যবহার করতে && লিখতে হয়।
তাহলে আমরা if(১ম শর্ত && ২য় শর্ত) এভাবে লিখবো।
নিচের কোড খেয়াল করুন-
#include <stdio.h>
int main()
{
char ch;
scanf(“%c”, &ch);
if (ch >= ‘a’ && ch = ‘A’ && ch <= 'Z'){
printf("%c is upper case\n", ch);
}
উপরের কোডটা রান করলে নিচের মতো রেজাল্ট পাবেন।
আসুন বুঝার চেস্টা করি যে কী করলাম আমরা।
ch নামক একটি ইনপুট নেয়ার অপশন তৈরী করলাম যেখানে ইউজার একটি ইংরেজি বর্ণ রাখতে পারবে।
এরপর,
if (ch >= ‘a’ && ch <= 'z')
এই স্টেটমেন্টে আমরা দুইটা শর্ত দিয়েছি যে যদি প্রাপ্ত বর্ণ a এর সমান বা এর থেকে বড় হতে হবে এবং সেই বর্ণ z এর সমান বা এর থেকে ছোট হতে হবে। এখন তাই ইউজার কোনো ছোট হাতের বর্ণ লিখলে সাথে সাথে printf() তার কাজ করে দিবে।
আবার,
if (ch >= ‘A’ && ch <= 'Z') এটাও একই শুধু বড় হাতের অক্ষরের জন্য আলাদা করেছি।
আশা করি এটা ক্লিয়ার।
এবার পরের ধাপে যাই।
OR অপারেটর এর কাজ হলো একাধিক শর্ত একটি স্টেটমেন্টে রাখা এবং তাদের মধ্যে যেকোনো ১টি শর্তও যদি সঠিক হয়, তাহলে পুরো স্টেটমেন্ট ই সত্য বলে রচিত হবে।
এই অপারেটর ব্যবহারের জন্য || চিহ্ন ব্যবহৃত হয়। আপ্নারা একে দুইটা দাড়ি ভেবে ভুল করবেন না। বাংলার দাড়ি চিহ্ন হলো । এইটা, কিন্তু আমরা যেটা ব্যবহার করবো সেটা হলো | যেটাকে বলা হয় ভার্টিক্যাল বার এবং এটার সাইজ দাড়ি থেকে বড়। এইটা দুইটা একত্রে || এভাবে লিখলে সেটা OR অপারেটর নির্দেশ করবে।
if(১ম শর্ত || ২য় শর্ত)
নিচের কোডটা দেখুন।
#include <stdio.h>
int main()
{
int x;
scanf(“%d”, &x);
if (x >= 25 || x <= 5) {
printf("Either %d is greater than 25 or it is less than 5\n", x);
}
return 0;
}
উপরের কোড টা রান করে নিচের মতো রেজাল্ট পাবো।
দেখুন এখানে যেকোনো একটি শর্ত মানলেই স্টেটমেন্ট সত্য হিসেবে কাজ করছে। আর ২০ সংখ্যা দেয়ায় কিছুই দেখায়নি, কারণ সেটা শর্ত মানে নি। আর আমরা else ব্যবহার করিনি তাই কিছুই শো করেনি।
এবার দেখি চলুন ইংরেজি ভাওয়েল যাচাই করার প্রোগ্রাম কেমন হবে।
#include <stdio.h>
int main()
char ch;
scanf(“%c”, &ch);
if(ch == ‘a’ || ch== ‘e’ || ch== ‘i’ || ch==’o’ ||ch == ‘u’) {
printf(“%c is vowel\n”, ch);
}
else {
printf(“%c is consonant\n”, ch);
}
return 0;
}
উপরের কোড টা রান করলে নিচের মতো রেজাল্ট আসবে।
কিন্তু একটা প্যারাডক্স এখানে রয়ে যায়।
দেখুন, আমি যদি ইংরেজি বড় হাতের অক্ষর A,E,I,O,U লিখি তাহলে সেটাকে কন্সট্যান্ট হিসেবে শো করতেছে।
কিন্তু আমরা জানি যে সেগুলোও ভাওয়েল।
তাহলে কী লিখবো?
নিচেরটা খেয়াল করুন।
#include <stdio.h>
int main()
{
char ch;
scanf(“%c”, &ch);
if(ch==’a’||ch==’e’||ch==’i’||ch==’o’||ch==’u’
||ch==’A’||ch==’E’||ch==’I’||ch==’O’||ch==’U’) {
printf(“%c is vowel\n”, ch);
}
else {
printf(“%c is consonant\n”, ch);
}
return 0;
}
উপরেরটা রান করলে একেবারে সঠিক ভাবে রেজাল্ট পাচ্ছি দেখুন।
ব্যাস।
আজ এ পর্যন্তই।
এই ছিল কন্ডিশনাল লজিক এর আপাতত সমাপ্তি।
এরপরে আমরা লুপ নিয়ে শিখবো। সেটা এটার থেকেও মজার।?
হোমওয়ার্কঃ
ভাওয়েল যাচাইয়ের জন্য যে প্রোগ্রামটি লিখেছি সেটাতে আপনি AND এবং OR দুই অপারেটর ই ব্যবহার করে লিখুন। যদি পারেন, তাহলেই আপনি কিছু শিখতে পেরেছেন এবং হ্যা, আপনি অবশ্যই বুদ্ধিমান। ?
রেস্পেক্ট রইলো।
10 thoughts on "অ্যান্ড্রয়েড দিয়ে সি-প্রোগ্রামিং শিখুন (পর্ব-৪.২) কন্ডিশনাল লজিক (২ম খন্ড)"