এখন আমরা প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ জিনিস জানব ।
কোন শর্তে কি করতে হবে তা কম্পিউটারকে প্রোগ্রামিং করে বোঝাব ।
ধরো, তোমাকে আমি একটি সংখ্যা দিলাম । এখন সংখ্যাটি ধনাত্মক ( positive ) কি না তা তুমি কিভাবে বলতে । আমি তো দেখতাম সংখ্যাটি শূন্যের চেয়ে বড় নাকি ছোট । যদি বড় হয় তবে সংখ্যাটি ধনাত্মক আর ছোট হলে ঋণাত্মক ।
এসো এই কাজটিই আমরা প্রোগ্রামিংয়ের মাধ্যমে করি ।
আমরা এখানে if নামের একটি কন্ডিশন ব্যবহার করেছি । if -এর সাথে একটি শর্ত দিয়েছি if (num > 0) , মানে যদি num, 0 -এর চেয়ে বড় হয় । লক্ষ করো শর্তটি প্রথম বন্ধনীর ভেতর লিখতে হবে । শর্তটি সত্য হলে কি করতে হবে তা দ্বিতীয় বন্ধনীর ভেতর লিখে দিতে হবে । এখানে শর্তটি সত্য হলে আমরা বলে দিচ্ছি num একটি ধনাত্মক সংখ্যা ।
এখানে দ্বিতীয় বন্ধনীর পর ইন্ডেটেশনের ব্যাপারটি খেয়াল করো । if কন্ডিশনের দ্বিতীয় বন্ধনীর পর printf() ফাংশনটি চারটি স্পেস দিয়ে শুরু করেছি ।
এখন তোমরা num -এর মান 0 , 0 -এর চেয়ে ছোট ( যেমন -3 ) দিয়ে দেখো কি হয় ?
তোমরা আউটপুটে কিছুই দেখতে পাবে না । কারণ তখন num > 0 শর্তটি মিথ্যা হয়ে যাবে । কন্ডিশনে দেওয়া শর্ত সত্য হলেই কেবল তার ভেতরের অংশের কাজ হবে ।
if কন্ডিশনে দেওয়া শর্ত মিথ্যা হলে কি করতে হবে তাও আমরা বলে দিতে পারি :
যদি if কন্ডিশনে দেওয়া শর্ত মিথ্যা হয় তবেই কেবল else -এর ভেতরের অংশের কাজ হবে ।
আবার সংখ্যাটি 0 হলে কি করতে হবে তাও আমরা বলে দিতে পারি :
else -এর সাথে শর্ত জুড়ে দেবার জন্য else if ব্যবহার করতে হয়েছে ।
ভালো করে দেখো , দুটি সংখ্যা সমান সমান কি না তা পরীক্ষার জন্য দুটি সমান চিহ্ন দিয়েছি । শুরুর দিকে অনেকেই একটি সমান চিহ্ন দিয়ে বিপদে পড়ে । আসলে একটি সমান চিহ্ন দিয়ে ভেরিয়েবলে কোনো কিছু অ্যাসাইন করা হয় ।
আচ্ছা , আমাদের ৩.৩ প্রোগ্রামে else if (n == 0) শর্তটি পরীক্ষা না করলে হত না ? কোনো সংখ্যা 0 -এর চেয়ে বড়ও না আবার ছোটও না হয় তবে কি হবে ? সংখ্যাটি অবশ্যই শূন্যের সমান হবে ।
এখন নিচের প্রোগ্রামটি দেখে বলো তো আউটপুট কি হবে :
প্রোগ্রামটির আউটপুট হবে : 13 is less than 31
যদিও else if (num < 51) এটিও সত্য কিন্তু যেহেতু if (num < 31) সত্য হয়ে গেছে , তাই এর সঙ্গে বাকি যত else if কিংবা else সেগুলো আর পরীক্ষা করা হবে না ।
এখন তোমরা নিশ্চয়ই নিচের প্রোগ্রামটির আউটপুট বলতে পারবে ।
আচ্ছা , আমরা যদি আমাদের প্রোগ্রামে কোনো সংখ্যা আরেকটি সংখ্যার সমান অথবা বড় , কিংবা সমান অথবা ছোট পরীক্ষা করতে চাইতাম তবে কি করতাম ? আবার দুটি সংখ্যা অসমান কি না এটিও যদি পরীক্ষা করতে চাইতাম তাহলেই বা কি করতাম ? এভাবে করা যেত :
এখন আমরা কোনো সংখ্যা জোড় না বিজোড় তা বের করার জন্য একটি প্রোগ্রাম লিখব ।
তোমাকে একটি সংখ্যা ধরো 17 দেওয়া হলো । সংখ্যাটি জোড় না বিজোড় তা তুমি কিভাবে বলবে ?
প্রথমে সংখ্যাটিকে 2 দিয়ে ভাগ দেব । কোনো ধনাত্মক পূর্ণসংখ্যাকে 2 দিয়ে ভাগ দিলে তার দুটি ভাগশেষ সম্ভব । ভাগশেষ হয় 0 হবে নয়তো 1 । ভাগশেষ 1 হলে সংখ্যাটি বিজোড় আর 0 হলে জোড় ।
সি ল্যাঙ্গুয়েজে ভাগশেষ বের করার জন্য মডুলাস অপারেটর ( modulus operator ) আছে । একে '%' চিহ্ন দিয়ে প্রকাশ করা হয় ।
remainder = number % 2;
যদি remainder -এর মান 0 হয় তবে সংখ্যাটি জোড় তা প্রিন্ট করো । 0 না হলে প্রিন্ট করো -সংখ্যাটি বিজোড় ।
তাহলে তোমরা পুরো প্রোগ্রামটা লিখে ফেলো ।
আচ্ছা, আমাদের যদি শুধু জোড় সংখ্যা নির্ণয় করতে হতো তাহলে আমরা কি করতাম ? else ব্লকটা বাদ দিয়ে দিতাম !
এখন তোমাদের জন্য দুটি ছোট্ট সমস্যা ।
৩.৭ প্রোগ্রামটি তোমরা remainder ভেরিয়েবল ব্যবহার না করে করো (মানে শুধু একটি ভেরিয়েবল ব্যবহার করে করতে হবে আর কি) ।
৩.৭ প্রোগ্রামটি কিন্তু মডুলাস অপারেটর (%) ব্যবহার না করেও করা যায় । কাজটি করার জন্য মাঠে নেমে পড়ো । তোমদের যদি ডাটা টাইপ সম্পর্কে পরিষ্কার ধারণা থাকে তাহলে এক কিকেই গোল !
এবার আরেকটা প্রোগ্রাম দেখা যাক । কোনো একটা অক্ষর ছোট হাতের ( small letter / lower case letter ) নাকি বড় হাতের ( capital letter / upper case letter ) , সেটি বের করতে হবে ।
এর জন্য সবচেয়ে সহজ সমাধানটা হতে পারে এই রকম যে আমরা একটি character টাইপের ভেরিয়েবলের ভেতরে অক্ষরটা রাখতে পারি । তারপর একে একে সেটিকে 26টি lower case letter এবং 26টি upper case letter -এর সঙ্গে তুলনা করে দেখতে পারি। যখনই মিলে যাবে , তখনই বলে দেওয়া যায় , অক্ষরটা কোন ধরনের ।
কিন্তু এই সমস্যার সমাধান করার জন্য এত কোড লিখার দরকার নেই । এটি সহজে করার জন্য আমাদের জানতে হবে অ্যান্ড অপারেটরের ( AND operator ) ব্যবহার । সি ল্যাঙ্গুয়েজে একে '&&' চিহ্ন দিয়ে প্রকাশ করা হয় ।
'&&' -এর বাঁ পাশে একটি কন্ডিশন এবং ডান দিকে আরেকটি কন্ডিশন থাকবে । দুটি কন্ডিশন সত্য হলেই কেবল পুরো কন্ডিশনটা সত্য হবে এবং ভেতরের কাজ হবে । একটি সত্য একটি মিথ্যা হলে কিন্তু আর ভেতরের কাজ হবে না ।
এখন কম্পিউটার প্রতিটি অক্ষর বোঝার জন্য যেই কোড ব্যবহার করে তাতে a -এর চেয়ে b -এর মান এক বেশি , b থেকে c -এর মান এক বেশি , c থেকে d -এর মান এক বেশি... এই রকম ।
তাই কোনো অক্ষর lower case হলে সেটি অবশ্যই 'a' -এর সমান কিংবা বড় হতে হবে । আবার সেটি 'z' -এর সমান কিংবা ছোট হতে হবে ।
অনুরূপভাবে কোনো ক্যারেক্টারের মান 'A' থেকে 'Z' -এর মধ্যে হলেই আমরা বলতে পারি অক্ষর টি upper case ।
আরেকটি ব্যাপার । দ্বিতীয় if -এর আগে else ব্যবহার করা উচিত । তাহলে কম্পাইলার প্রথম if -এর শর্ত সত্য হলে আর পরের if -এর কন্ডিশন পরীক্ষা করবে না । এতে সময় বাঁচবে ।
এখন আমরা আরেকটি অপারেটরের ব্যবহার দেখব । সেটি হচ্ছে অর ( OR ) অপারেটর । একে প্রকাশ করা হয় '||' চিহ্ন দিয়ে (পরপর দুটি '|' ) । '&&' -এর ক্ষেত্রে যেমন দুইপাশের শর্ত সত্য হলেই কেবল পুরো শর্তটা সত্য হয় , '||' -ক্ষেত্রে যেকোনো এক পাশের শর্ত সত্য হলেই পুরো কন্ডিশনটা সত্য হবে ।
এখন তোমাদের জন্য একটি সমস্যা । কোনো অক্ষর vowel নাকি consonant , সেটি বের করতে হবে ।
পরবর্তী অংশ -
কোন শর্তে কি করতে হবে তা কম্পিউটারকে প্রোগ্রামিং করে বোঝাব ।
ধরো, তোমাকে আমি একটি সংখ্যা দিলাম । এখন সংখ্যাটি ধনাত্মক ( positive ) কি না তা তুমি কিভাবে বলতে । আমি তো দেখতাম সংখ্যাটি শূন্যের চেয়ে বড় নাকি ছোট । যদি বড় হয় তবে সংখ্যাটি ধনাত্মক আর ছোট হলে ঋণাত্মক ।
এসো এই কাজটিই আমরা প্রোগ্রামিংয়ের মাধ্যমে করি ।
#include <stdio.h> int main() { int num = 13; if (num > 0) { printf("%d is a positive
number\n", num); } return 0; } প্রোগ্রাম : ৩.১
আমরা এখানে if নামের একটি কন্ডিশন ব্যবহার করেছি । if -এর সাথে একটি শর্ত দিয়েছি if (num > 0) , মানে যদি num, 0 -এর চেয়ে বড় হয় । লক্ষ করো শর্তটি প্রথম বন্ধনীর ভেতর লিখতে হবে । শর্তটি সত্য হলে কি করতে হবে তা দ্বিতীয় বন্ধনীর ভেতর লিখে দিতে হবে । এখানে শর্তটি সত্য হলে আমরা বলে দিচ্ছি num একটি ধনাত্মক সংখ্যা ।
এখানে দ্বিতীয় বন্ধনীর পর ইন্ডেটেশনের ব্যাপারটি খেয়াল করো । if কন্ডিশনের দ্বিতীয় বন্ধনীর পর printf() ফাংশনটি চারটি স্পেস দিয়ে শুরু করেছি ।
এখন তোমরা num -এর মান 0 , 0 -এর চেয়ে ছোট ( যেমন -3 ) দিয়ে দেখো কি হয় ?
তোমরা আউটপুটে কিছুই দেখতে পাবে না । কারণ তখন num > 0 শর্তটি মিথ্যা হয়ে যাবে । কন্ডিশনে দেওয়া শর্ত সত্য হলেই কেবল তার ভেতরের অংশের কাজ হবে ।
if কন্ডিশনে দেওয়া শর্ত মিথ্যা হলে কি করতে হবে তাও আমরা বলে দিতে পারি :
#include <stdio.h> int main() { int num = 13; if (num > 0) { printf("%d is a positive
number\n", num); } else { printf("%d is a negative
number\n", num); } return 0; } প্রোগ্রাম : ৩.২
যদি if কন্ডিশনে দেওয়া শর্ত মিথ্যা হয় তবেই কেবল else -এর ভেতরের অংশের কাজ হবে ।
আবার সংখ্যাটি 0 হলে কি করতে হবে তাও আমরা বলে দিতে পারি :
#include <stdio.h> int main() { int num = 13; if (num > 0) { printf("%d is a positive
number\n", num); } else if (num < 0) { printf("%d is a negative
number\n", num); } else if (num == 0) { printf("The number is zero !
\n"); } return 0; } প্রোগ্রাম : ৩.৩
else -এর সাথে শর্ত জুড়ে দেবার জন্য else if ব্যবহার করতে হয়েছে ।
ভালো করে দেখো , দুটি সংখ্যা সমান সমান কি না তা পরীক্ষার জন্য দুটি সমান চিহ্ন দিয়েছি । শুরুর দিকে অনেকেই একটি সমান চিহ্ন দিয়ে বিপদে পড়ে । আসলে একটি সমান চিহ্ন দিয়ে ভেরিয়েবলে কোনো কিছু অ্যাসাইন করা হয় ।
আচ্ছা , আমাদের ৩.৩ প্রোগ্রামে else if (n == 0) শর্তটি পরীক্ষা না করলে হত না ? কোনো সংখ্যা 0 -এর চেয়ে বড়ও না আবার ছোটও না হয় তবে কি হবে ? সংখ্যাটি অবশ্যই শূন্যের সমান হবে ।
#include <stdio.h> int main() { int num = 13; if (num > 0) { printf("%d is a positive number
\n", num); } else if (num < 0) { printf("%d is a negative
number\n", num); } else { printf("The number is zero !
\n"); } return 0; } প্রোগ্রাম : ৩.৪
এখন নিচের প্রোগ্রামটি দেখে বলো তো আউটপুট কি হবে :
#include <stdio.h> int main() { int num = 13; if (num < 31) { printf("%d is less than 31\n",
num); } else if (num < 51) { printf("%d is less than 51\n",
num); } return 0; } প্রোগ্রাম : ৩.৫
প্রোগ্রামটির আউটপুট হবে : 13 is less than 31
যদিও else if (num < 51) এটিও সত্য কিন্তু যেহেতু if (num < 31) সত্য হয়ে গেছে , তাই এর সঙ্গে বাকি যত else if কিংবা else সেগুলো আর পরীক্ষা করা হবে না ।
এখন তোমরা নিশ্চয়ই নিচের প্রোগ্রামটির আউটপুট বলতে পারবে ।
#include <stdio.h> int main() { int num = 13; if (num < 31) { printf("%d is less than 31\n",
num); } if (num < 51) { printf("%d is less than 51\n",
num); } return 0; } প্রোগ্রাম : ৩.৬
আচ্ছা , আমরা যদি আমাদের প্রোগ্রামে কোনো সংখ্যা আরেকটি সংখ্যার সমান অথবা বড় , কিংবা সমান অথবা ছোট পরীক্ষা করতে চাইতাম তবে কি করতাম ? আবার দুটি সংখ্যা অসমান কি না এটিও যদি পরীক্ষা করতে চাইতাম তাহলেই বা কি করতাম ? এভাবে করা যেত :
if (num >= 13) { //সমান অথবা বড় পরীক্ষার
জন্য } if (num <= 13) { //সমান অথবা ছোট
পরীক্ষার জন্য } if (num != 13) { //অসমান কি না পরীক্ষার
জন্য }
এখন আমরা কোনো সংখ্যা জোড় না বিজোড় তা বের করার জন্য একটি প্রোগ্রাম লিখব ।
তোমাকে একটি সংখ্যা ধরো 17 দেওয়া হলো । সংখ্যাটি জোড় না বিজোড় তা তুমি কিভাবে বলবে ?
প্রথমে সংখ্যাটিকে 2 দিয়ে ভাগ দেব । কোনো ধনাত্মক পূর্ণসংখ্যাকে 2 দিয়ে ভাগ দিলে তার দুটি ভাগশেষ সম্ভব । ভাগশেষ হয় 0 হবে নয়তো 1 । ভাগশেষ 1 হলে সংখ্যাটি বিজোড় আর 0 হলে জোড় ।
সি ল্যাঙ্গুয়েজে ভাগশেষ বের করার জন্য মডুলাস অপারেটর ( modulus operator ) আছে । একে '%' চিহ্ন দিয়ে প্রকাশ করা হয় ।
remainder = number % 2;
যদি remainder -এর মান 0 হয় তবে সংখ্যাটি জোড় তা প্রিন্ট করো । 0 না হলে প্রিন্ট করো -সংখ্যাটি বিজোড় ।
তাহলে তোমরা পুরো প্রোগ্রামটা লিখে ফেলো ।
#include <stdio.h> int main() { int number, remainder; number = 17; remainder = number % 2; if (remainder == 0) { printf("The number is even\n"); } else { printf("The number is odd\n"); } return 0; } প্রোগ্রাম : ৩.৭
আচ্ছা, আমাদের যদি শুধু জোড় সংখ্যা নির্ণয় করতে হতো তাহলে আমরা কি করতাম ? else ব্লকটা বাদ দিয়ে দিতাম !
এখন তোমাদের জন্য দুটি ছোট্ট সমস্যা ।
৩.৭ প্রোগ্রামটি তোমরা remainder ভেরিয়েবল ব্যবহার না করে করো (মানে শুধু একটি ভেরিয়েবল ব্যবহার করে করতে হবে আর কি) ।
৩.৭ প্রোগ্রামটি কিন্তু মডুলাস অপারেটর (%) ব্যবহার না করেও করা যায় । কাজটি করার জন্য মাঠে নেমে পড়ো । তোমদের যদি ডাটা টাইপ সম্পর্কে পরিষ্কার ধারণা থাকে তাহলে এক কিকেই গোল !
এবার আরেকটা প্রোগ্রাম দেখা যাক । কোনো একটা অক্ষর ছোট হাতের ( small letter / lower case letter ) নাকি বড় হাতের ( capital letter / upper case letter ) , সেটি বের করতে হবে ।
এর জন্য সবচেয়ে সহজ সমাধানটা হতে পারে এই রকম যে আমরা একটি character টাইপের ভেরিয়েবলের ভেতরে অক্ষরটা রাখতে পারি । তারপর একে একে সেটিকে 26টি lower case letter এবং 26টি upper case letter -এর সঙ্গে তুলনা করে দেখতে পারি। যখনই মিলে যাবে , তখনই বলে দেওয়া যায় , অক্ষরটা কোন ধরনের ।
char ch = 's'; 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); } else if (ch == 'B') { printf("%c is upper case\n", ch); } else if (ch == 'c') { printf("%c is lower case\n", ch); } else if (ch == 'C') { printf("%c is upper case\n", ch); } ...এভাবে চলবে
কিন্তু এই সমস্যার সমাধান করার জন্য এত কোড লিখার দরকার নেই । এটি সহজে করার জন্য আমাদের জানতে হবে অ্যান্ড অপারেটরের ( AND operator ) ব্যবহার । সি ল্যাঙ্গুয়েজে একে '&&' চিহ্ন দিয়ে প্রকাশ করা হয় ।
#include <stdio.h> int main() { char ch = 'L'; if (ch >= 'a' && ch <= 'z') { printf("%c is lower case.\n",
ch); } if (ch >= 'A' && ch <= 'Z') { printf("%c is upper case.\n",
ch); } return 0; } প্রোগ্রাম : ৩.৮
'&&' -এর বাঁ পাশে একটি কন্ডিশন এবং ডান দিকে আরেকটি কন্ডিশন থাকবে । দুটি কন্ডিশন সত্য হলেই কেবল পুরো কন্ডিশনটা সত্য হবে এবং ভেতরের কাজ হবে । একটি সত্য একটি মিথ্যা হলে কিন্তু আর ভেতরের কাজ হবে না ।
এখন কম্পিউটার প্রতিটি অক্ষর বোঝার জন্য যেই কোড ব্যবহার করে তাতে a -এর চেয়ে b -এর মান এক বেশি , b থেকে c -এর মান এক বেশি , c থেকে d -এর মান এক বেশি... এই রকম ।
তাই কোনো অক্ষর lower case হলে সেটি অবশ্যই 'a' -এর সমান কিংবা বড় হতে হবে । আবার সেটি 'z' -এর সমান কিংবা ছোট হতে হবে ।
অনুরূপভাবে কোনো ক্যারেক্টারের মান 'A' থেকে 'Z' -এর মধ্যে হলেই আমরা বলতে পারি অক্ষর টি upper case ।
আরেকটি ব্যাপার । দ্বিতীয় if -এর আগে else ব্যবহার করা উচিত । তাহলে কম্পাইলার প্রথম if -এর শর্ত সত্য হলে আর পরের if -এর কন্ডিশন পরীক্ষা করবে না । এতে সময় বাঁচবে ।
এখন আমরা আরেকটি অপারেটরের ব্যবহার দেখব । সেটি হচ্ছে অর ( OR ) অপারেটর । একে প্রকাশ করা হয় '||' চিহ্ন দিয়ে (পরপর দুটি '|' ) । '&&' -এর ক্ষেত্রে যেমন দুইপাশের শর্ত সত্য হলেই কেবল পুরো শর্তটা সত্য হয় , '||' -ক্ষেত্রে যেকোনো এক পাশের শর্ত সত্য হলেই পুরো কন্ডিশনটা সত্য হবে ।
#include <stdio.h> int main() { int n = 26; if (n>0 || n<10) { printf("yes\n"); } else { printf("no\n"); } return 0; } প্রোগ্রাম : ৩.৯
এখন তোমাদের জন্য একটি সমস্যা । কোনো অক্ষর vowel নাকি consonant , সেটি বের করতে হবে ।
if ( ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u') { printf("%c is vowel\n", ch); } else { printf("%c is consonant\n", ch); }
পরবর্তী অংশ -
পেজে প্রবেশের সময় : Fri May 16 2025 09:07:07 GMT+0000 (Coordinated Universal Time)
No comments:
Post a Comment