সি প্রোগামের অপারেটর কি??? কিভাবে কাজ করে?? বিস্তারিত জানুন-smsakib5
- Get link
- X
- Other Apps
অধ্যায় ২ - অপারেটর
এ অধ্যায় থেকে জানা যাবেঃ
অপারেটর গুলো যে ভ্যারিয়েবল বা যে ডেটার উপর কাজ করে, তাকে আমরা বলি অপারেন্ড(Operand)। কিছু কিছু অপারেটরের জন্য একটা অপারেন্ড লাগে। কিছু কিছু অপারেটরের জন্য লাগে দুইটা অপারেন্ড।
সি প্রোগ্রামিং এ অপারেটর গুলোঃ
Identifier = expression
এখানে Identifier হচ্ছে ভ্যারিয়েবলটি, যেখানে আমরা মানটি রাখব। আর expression হচ্ছে যে কোন ভ্যালু। যেমনঃ
Pi = 3.1416;
ডান দিকের মান যে কোন expression ও হতে পারে। যেমনঃ
Pi = 22/7;
Equal to এসাইনমেন্ট অপারেটর আমরা এর আগে ব্যবহার করেছি। এটি ছাড়াও আরো অনেক গুলো Assignment operator রয়েছে। যেমনঃ
1) = (Equal to)
2) +=(Plas equal to)
3) -=(Mainus equal to)
4) *=(Product equal to)
5) /=(Division equal to)
6) %= (Mode equal to) etc তবে সবচেয়ে ব্যবহৃত Assignment operator হচ্ছে = (Equal to)। এটি নিচের from এ লিখা হয়।
আমরা এর আগেই assignment operator ব্যবহার করে এসেছি।
আগের একটি প্রোগ্রামই দেখি, যেখানে আমরা আয়াতাকার জমির আয়তন বের করেছি।
+= (Plas equal to) Assignment operator:
এটা নিচের মতো করে লেখা হয়
Expression1 += Expression2;
যা (Expression1 = Expression1 + Expression2 ) এর সমান।
ব্যাখ্যাঃ মনে করি x=3 , y=5.
যদি লেখা হয়: x+=y তাহলে x এর মান হবে x = x+y অর্থাৎ x = 8.
আউটপুটে কোন পার্থ্যক্য নেই। কম কোড লেখার জন্য প্রায় সময়ই += অপারেটর ব্যবহার করা হয়।
-= (Mainus equal to) Assignment operator
-= এর ক্ষেত্রে নিচের মতো করে লেখা হয়
Exprission1 -= Expression2;
যা (Expression1 = Expression1 - Expression2 ) এর সমান।
ব্যাখ্যাঃ মনে করি x=8 , y=5.
যদি লেখা হয়ঃ x-=y তাহলে x এর মান হবে x=x-y অর্থাৎ x=3.
নিচের প্রোগ্রামটা দেখিঃ
উপরের প্রোগ্রামের সাথে আউটপুটে কোন পার্থ্যক্য নেই। += অপারেটর এর মতই কম কোড লেখার জন্য প্রায় সময় -= ব্যবহার করা হয়।
একই ভাবে *= এর মানে হচ্ছেঃ
Exprission1 *= Expression2;
যা (Expression1 = Expression1 * Expression2 ) এর সমান।
/= এর মানে হচ্ছেঃ
Expression1 /= Expression2;
যা (Expression1 = Expression1 / Expression2 ) এর সমান।
%= এর মানে হচ্ছেঃ
Expression1 %= Expression2;
যা (Expression1 = Expression1 % Expression2 ) এর সমান।
এর আগের প্রোগ্রাম গুলোতে আমরা এই এরিথম্যাটিক অপারেটর গুলো ব্যবহার করেছি। এগুলো গণিতে আমরা যেভাবে কাজ করে, সেভাবে সি প্রোগ্রামিং এ ও কাজ করবে। উপরের সকল Operator সম্পর্কে ই আমরা জানি শুধু % অপারেটর ছাড়া। একে Reminder অথবা Mode বলে। % এর কাজ একটি উদাহরণ দিয়ে ব্যাখ্যা করি।
মড মূলত ভাগশেষ ভ্যালু। এই Mode (%) নিয়ে কাজ করার একটা সুন্দর নাম রয়েছে, যাকে বলেModulus Arithmetic। Mode এর অনেক কাজ রয়েছে।
বাস্তব একটা উদাহরন দেওয়া যাক।
আমরা সময় হিসেব করি, তা একটা মডুলাস এরিথম্যাটিক বা মডুলাস পাটীগণিত। আমরা যদি ১২ ঘন্টার ঘড়ির কথা চিন্তা করি, তাহলে দেখব ১২ এর পর ১৩ না হয়ে ১ টা ধরি আমরা। আর ঘড়ির এই হিসাবকে বলা যায় ১২ এর মডুলাস এরিথম্যাটিক। আমরা করি কি, প্র্যতকটা ঘন্টাকে ১২ দিয়ে ভাগ করে দি। ১ টা বাজলেও ১২ দিয়ে ভাগ করি। ২ টা বাজলেও। তেমনি ১৫টা বাজলেও। তো যখন ১৫টা বাজে, তখন আমরা মুলত দেখি (১৫%১২) = ৩ বা তিনটা। আস্তে আস্তে আমরা এরকম অনেক গুলো মডুলাস এরিথম্যাটিক নিয়ে কাজ করতে পারব।
মূলত মডের কাজ হচ্ছে একটা লিমিট সেট করে দেওয়া। ঐ লিমিট ক্রস করলে আবার প্রথম থেকে কাউন্ট শুরু হবে। ঘড়ির টাইমের ক্ষেত্রে যেমন, তেমনি।
২৪ ঘন্টার ঘড়ি গুলোতে ২৪ হচ্ছে সর্বোচ্চ ভ্যালু। তো ২৪ এর পর ২৫ না হয়ে হয় (২৫%২৪) = ১।
১৫%৪ = কত হবে?
১৫%৪ এটার উত্তর হবে ৩ কারন ১৫ কে ৪ দ্বারা ভাগ করলে ভাগশেষ থাকে ৩।
মড এর মান সব সময় পূর্ন সংখা হবে। অর্থাৎ ১৫.৫%৪ এর ভাগ শেষ হচ্ছে ৩.৫ কিন্তু এর মান হবে ৩।
মড সব সময় পজেটিভ হবে। ১৫%-৪ এর মান হবে ৩। -১৫%৪এর মান হবে -৩। -১৫%-৪এর মান হবে-৩। ইত্যাদি।
নিচের প্রোগ্রামটা দেখিঃ
প্রধান দুটি Unary Operators হচ্ছে Increment operator(++) ও Decrement operator(- -) ।
Increment operator: Increment operator কে ++ চিহ্ন দিয়ে প্রকাশ করা হয়। অর্থাত ++ কে increment operator বলে। এটি একটি variable এর উপর বসে এর মান 1 বাড়িয়ে দেয়। এটি variable এর আগে ও বসতে পারে পরেও বসতে পারে। যেমনঃ মনে করি x একটি variable যার মান 5 । ++X এর মান হবে 6 । তেমনি X++ মান ও হবে 6 ।
এখন যদি আমরা x আগে ++ দিয়ে প্রিন্ট দি, তাহলেও আমরা একই মান পাবো।
x++ এর মানে হচ্ছে আগে x এর মান এক্সিকিউট হবে এবং তারপর এর মান ১ বাড়বে। আর ++x এর মানে হচ্ছে আগে এর মান এক বাড়বে এবং পরে এক্সিকিউট হবে। এখনো যদি বুঝতে অসুবিধে হয় সমস্যা নেই। নিচের প্রোগ্রামটা দেখিঃ
কিন্তু y এর ক্ষেত্রে আগে y এর মান এক বাড়িয়েছে, এবং পরে এর মান প্রিন্ট করেছে। তাই আমরা আউটপুট পেয়েছি 7
এখানে দুটা ভ্যারিয়েবল নিয়েছি, এবং পরে তাদের প্রিন্ট করেছি। একটার আগে ++ ব্যবহার করেছি একটার পরে।
Decrement operator: - - [Minus Minus] কে Decrement operator বলে। এটি একটি variable এর উপর বসে এর মান 1 কমিয়ে দেয়। এটি variable এর আগে ও বসতে পারে পরেও বসতে পারে। যেমনঃ মনে করি x একটি variable যার মান 5 । - -X এর মান হবে 4 । তেমনি X- - মান ও হবে 4 ।
মনে করি x, y দুটি ভ্যারিয়েবল। x এর মান 5, y এর মান 6। x<y দিয়ে দেখা হয় x কি y থেকে ছোট কিনা। যেহেতু x y থেকে ছোট, তাই x<y expression টি সত্য এবং এর মান হবে 1। আবার x>y expression টি মিথ্যে এবং এর মান হবে 0। কারণ x y থেকে বড় নয়।
Relational Operator ব্যবহার করে আমরা সহজেই দুটি সংখ্যার মধ্যে কোনটা ছোট তা বের করে ফেলতে পারি। যা আমরা এর পরের অধ্যায় if - else অংশে দেখব।
Equality Operator:
Relational Operators এর সাথে সম্পর্ক যুক্ত দুটি Equality Operator রয়েছে। নিচে এদের দেওয়া হলঃ
এখানে প্রথম টি হচ্ছে দুটি সমান চিহ্ন। দুটি মিলেই Equal to Operator প্রকাশ করে। দ্বিতীয় টি হচ্ছে একটি !(উচ্চারন নট) ও একটি সমান চিহ্ন নিয়ে Not Equal to Operator প্রকাশ করে।
উদাহরনঃ মনে করি x, y দুটি ভ্যারিয়েবল। x এর মান 5। Y এর মান 6। সুতরাং x==y এর মানে হচ্ছে x এবং y এর মান সমান। কিন্ত আমদের x এবং y এর মান সমান নয়। সুতরাং x==y expression টি মিথ্যে এবং এর মান হবে 0। আবার যদি x!=y (উচ্চারন x not equal to y) হয় তাহলে expression টি সত্য হয় এবং এর মান হবে ।
এখানে মনে রাখতে হবে যে Assignment operator = এবং Equality Operator == সম্পূর্নই ভিন্ন। কোন ভ্যালু কোন ভ্যারিয়েবলের মধ্যে এসাইন করার assignment operator ব্যবহার করা হয়। আর দুইটা Expression এর মান সমান কিনা, তা দেখার জন্য Equality Operator (==) ব্যবহার করা হয়। এখানে একটার স্থানে আরেকটা কোন অবস্থাতেই বসানো যাবেনা। তাহলে Program এ বিশাল ভুল আসবে। প্রথম প্রথম অনেকেই এই ভুল করে।
Logical Operator:
C প্রোগ্রামিং এ দুটি Logical Operator রয়েছে। তাদের নিচে দেওয়া হলঃ
&& কে বলা হয় Logical and এবং || কে বলা হয় Logical Or.
&& ( পড়া হয় And operator) :
মনে করি x,y,z তিনটি চলক। এখন (x<y)&& (y<z) হচ্ছে একটি expression. এখন এর মান সত্য হবে যদি (x<y) এবং (y<z) সত্য হয়। (x<y) এবং (y<z) এর যে কোন একটি মিথ্যা হলে (x<y)&& (y<z) এর মান মিথ্যে হবে।
||( পড়া হয় Or Operator ):
মনে করি x,y,z তিনটি চলক। এখন (x<y)||(y<z) হচ্ছে একটি expression। এখন এর মান সত্য হবে যদি (x<y) এবং (y<z) সত্য হয়। অথবা (x<y) এবং (y<z) এর যে কোন একটি সত্য হয়। (x<y) এবং (y<z) দুটি একসাথে মিথ্যা হলে (x<y)||(y<z) এর মান মিথ্যে হবে।
Relational and Logical Operators এর কয়েকটি উদাহরন নিচে দেওয়া হল:
মনে করি x, y, z তিনটি চলক। x এর মান 5, y এর মান 6 এবং z এর মান 7।
অর্থাৎ সকল true এর মান 1 এবং false এর মান ০।
Conditional Operator: একটা condition দিয়ে দুটি মান থেকে একটি পছন্দ করার একটা পদ্ধতি। এটি নিচের মতো করে লেখা হয়ঃ
Condition ? Expression2: Expression3
এখানে condition হচ্ছে যে কোন একটা শর্ত। যা সত্য হলে Expression1 নির্বাচিত হবে। আর কন্ডিশন ভুল হলে Expression2 টি নির্বাচিত হবে।
মনে করি i=5, তাহলে নিচের Conditional Operator টা দেখিঃ
Z=(i<8)?10:100;
এখানে Z এর জন্য Conditional Operator টা লেখা হয়েছে। এখানে লিখা হয়েছেঃ Z=(i<8)?10:100; অর্থাৎ যদি i এর মান 8 থেকে ছোট হয় তাহলে Z এর মান হবে 10। আর তা না হলে z এর মান হবে 100.
- অপারেটর এবং অপারেন্ড
- Assignment অপারেটর
- গাণিতিক অপারেটর
- লজিক্যাল অপারেটর
- ইউনারী অপারেটর
- কন্ডিশনাল অপারেটর
অপারেটর এবং অপারেন্ড
আগের অধ্যায় গুলোতে আমরা একটা ভ্যারিয়েবলে কোন ভ্যালু এসাইন করেছি। আমরা সমান সমান চিহ্ন ব্যবহার করেছি। এই সমান সমান চিহ্ন হচ্ছে অপারেটর, যাকে বলা হয় Equal to অপারেটর। Equal to ছাড়াও আরো অনেক ধরণের অপারেটর রয়েছে। এ অধ্যায় আমরা সেগুল সম্পর্কে জানব।অপারেটর গুলো যে ভ্যারিয়েবল বা যে ডেটার উপর কাজ করে, তাকে আমরা বলি অপারেন্ড(Operand)। কিছু কিছু অপারেটরের জন্য একটা অপারেন্ড লাগে। কিছু কিছু অপারেটরের জন্য লাগে দুইটা অপারেন্ড।
সি প্রোগ্রামিং এ অপারেটর গুলোঃ
- Assignment অপারেটর
- গাণিতিক অপারেটর
- ইউনারী অপারেটর
- লজিক্যাল অপারেটর
- কন্ডিশনাল অপারেটর
Assignment operator
ভ্যারিয়েবলে কোন ভ্যালু এসাইন করা হচ্ছে এসাইনমেন্ট অপারেটরের কাজ। নিচের মত করে এসাইনমেন্ট ব্যবহার করা হয়ঃIdentifier = expression
এখানে Identifier হচ্ছে ভ্যারিয়েবলটি, যেখানে আমরা মানটি রাখব। আর expression হচ্ছে যে কোন ভ্যালু। যেমনঃ
Pi = 3.1416;
ডান দিকের মান যে কোন expression ও হতে পারে। যেমনঃ
Pi = 22/7;
Equal to এসাইনমেন্ট অপারেটর আমরা এর আগে ব্যবহার করেছি। এটি ছাড়াও আরো অনেক গুলো Assignment operator রয়েছে। যেমনঃ
1) = (Equal to)
2) +=(Plas equal to)
3) -=(Mainus equal to)
4) *=(Product equal to)
5) /=(Division equal to)
6) %= (Mode equal to) etc তবে সবচেয়ে ব্যবহৃত Assignment operator হচ্ছে = (Equal to)। এটি নিচের from এ লিখা হয়।
Identifier=expression
এখানে Identifier বলতে সাধারনত ভ্যারিয়েবলকে বুঝানো হয়। আর expression বলতে যে কোন মান যেমন constant বা অন্য কোন ভ্যারিয়েবলকে বুঝানো হয়। নিচে কিছু Assignment operator এর উদাহরণ দেওয়া হলোঃ- X=5;
- Y=10;
- Pi=3.1416
- Z=x+y+pi
আমরা এর আগেই assignment operator ব্যবহার করে এসেছি।
আগের একটি প্রোগ্রামই দেখি, যেখানে আমরা আয়াতাকার জমির আয়তন বের করেছি।
#include <stdio.h>
int main()
{
int volume;
int length = 5 class="token punctuation" style="color: #999999;">;
int width = 8;
volume = length * width;
printf("%d", volume);
return 0;
}
যেখানে length নামক একটি ভ্যারিয়েবল এ আমরা একটি মান [5] রেখেছি। এবং width ভ্যারিয়েবলে রেখেছি 8.+= (Plas equal to) Assignment operator:
এটা নিচের মতো করে লেখা হয়
Expression1 += Expression2;
যা (Expression1 = Expression1 + Expression2 ) এর সমান।
ব্যাখ্যাঃ মনে করি x=3 , y=5.
যদি লেখা হয়: x+=y তাহলে x এর মান হবে x = x+y অর্থাৎ x = 8.
#include <stdio.h>
int main()
{
int x =3;
int y = 5;
x +=y;
printf("%d", x);
return 0;
}
উপরের প্রোগ্রামটা রান করিয়ে দেখলে আমরা আউটপুট পাবোঃ 8 নিচের প্রোগ্রামটা দেখিঃ
#include <stdio.h>
int main()
{
int x =3;
int y = 5;
x = x+y;
printf("%d", x);
return 0;
}
এ প্রোগ্রামও রান করিয়ে দেখলে আমরা আউটপুট পাবোঃ 8আউটপুটে কোন পার্থ্যক্য নেই। কম কোড লেখার জন্য প্রায় সময়ই += অপারেটর ব্যবহার করা হয়।
-= (Mainus equal to) Assignment operator
-= এর ক্ষেত্রে নিচের মতো করে লেখা হয়
Exprission1 -= Expression2;
যা (Expression1 = Expression1 - Expression2 ) এর সমান।
ব্যাখ্যাঃ মনে করি x=8 , y=5.
যদি লেখা হয়ঃ x-=y তাহলে x এর মান হবে x=x-y অর্থাৎ x=3.
#include <stdio.h>
int main()
{
int x =8;
int y = 5;
x -=y;
printf("%d", x);
return 0;
}
উপরের প্রোগ্রামটা রান করিয়ে দেখলে আমরা আউটপুট পাবোঃ 3নিচের প্রোগ্রামটা দেখিঃ
#include
int main()
{
int x =8;
int y = 5;
x = x-y;
printf("%d", x);
return 0;
}
এ প্রোগ্রামও রান করিয়ে দেখলে আমরা আউটপুট পাবোঃ 3উপরের প্রোগ্রামের সাথে আউটপুটে কোন পার্থ্যক্য নেই। += অপারেটর এর মতই কম কোড লেখার জন্য প্রায় সময় -= ব্যবহার করা হয়।
একই ভাবে *= এর মানে হচ্ছেঃ
Exprission1 *= Expression2;
যা (Expression1 = Expression1 * Expression2 ) এর সমান।
/= এর মানে হচ্ছেঃ
Expression1 /= Expression2;
যা (Expression1 = Expression1 / Expression2 ) এর সমান।
%= এর মানে হচ্ছেঃ
Expression1 %= Expression2;
যা (Expression1 = Expression1 % Expression2 ) এর সমান।
গাণিতিক অপারেটর
পাটি গণিতে আমরা যে সকল Operators ব্যাবহার করছি তাই হল Arithmetic Operators। যেমন যোগ, গুন, ভাগ ইত্যাদি।Operator | ব্যাবহার |
+ | যোগ |
- | বিয়োগ |
* | গুণ |
/ | ভাগ |
% | ভাগশেষ |
এর আগের প্রোগ্রাম গুলোতে আমরা এই এরিথম্যাটিক অপারেটর গুলো ব্যবহার করেছি। এগুলো গণিতে আমরা যেভাবে কাজ করে, সেভাবে সি প্রোগ্রামিং এ ও কাজ করবে। উপরের সকল Operator সম্পর্কে ই আমরা জানি শুধু % অপারেটর ছাড়া। একে Reminder অথবা Mode বলে। % এর কাজ একটি উদাহরণ দিয়ে ব্যাখ্যা করি।
মড মূলত ভাগশেষ ভ্যালু। এই Mode (%) নিয়ে কাজ করার একটা সুন্দর নাম রয়েছে, যাকে বলেModulus Arithmetic। Mode এর অনেক কাজ রয়েছে।
বাস্তব একটা উদাহরন দেওয়া যাক।
আমরা সময় হিসেব করি, তা একটা মডুলাস এরিথম্যাটিক বা মডুলাস পাটীগণিত। আমরা যদি ১২ ঘন্টার ঘড়ির কথা চিন্তা করি, তাহলে দেখব ১২ এর পর ১৩ না হয়ে ১ টা ধরি আমরা। আর ঘড়ির এই হিসাবকে বলা যায় ১২ এর মডুলাস এরিথম্যাটিক। আমরা করি কি, প্র্যতকটা ঘন্টাকে ১২ দিয়ে ভাগ করে দি। ১ টা বাজলেও ১২ দিয়ে ভাগ করি। ২ টা বাজলেও। তেমনি ১৫টা বাজলেও। তো যখন ১৫টা বাজে, তখন আমরা মুলত দেখি (১৫%১২) = ৩ বা তিনটা। আস্তে আস্তে আমরা এরকম অনেক গুলো মডুলাস এরিথম্যাটিক নিয়ে কাজ করতে পারব।
মূলত মডের কাজ হচ্ছে একটা লিমিট সেট করে দেওয়া। ঐ লিমিট ক্রস করলে আবার প্রথম থেকে কাউন্ট শুরু হবে। ঘড়ির টাইমের ক্ষেত্রে যেমন, তেমনি।
২৪ ঘন্টার ঘড়ি গুলোতে ২৪ হচ্ছে সর্বোচ্চ ভ্যালু। তো ২৪ এর পর ২৫ না হয়ে হয় (২৫%২৪) = ১।
১৫%৪ = কত হবে?
১৫%৪ এটার উত্তর হবে ৩ কারন ১৫ কে ৪ দ্বারা ভাগ করলে ভাগশেষ থাকে ৩।
মড এর মান সব সময় পূর্ন সংখা হবে। অর্থাৎ ১৫.৫%৪ এর ভাগ শেষ হচ্ছে ৩.৫ কিন্তু এর মান হবে ৩।
মড সব সময় পজেটিভ হবে। ১৫%-৪ এর মান হবে ৩। -১৫%৪এর মান হবে -৩। -১৫%-৪এর মান হবে-৩। ইত্যাদি।
নিচের প্রোগ্রামটা দেখিঃ
#include <stdio.h>
int main()
{
int x =11%3;
printf("%d", x);
return 0;
}
11 কে ৩ দিয়ে ভাগ করলে ভাগশেষ ২ থাকার কথা, তাই না? তাই আমাদের পোগ্রামের আউটপুট হচ্ছে। 2
#include <stdio.h>
int main()
{
int x =12%3;
printf(“%d”, x);
return 0;
}
12 কে 3 দিয়ে ভাগ করলে ভাগশেষ ০ থাকার কথা, তাই আমাদের আউটপুটও ০;ইউনারী অপারেটর
Unary Operators: সি প্রোগ্রামিং এ যে সকল Operator একটি চলকের উপর কাজ করে নতুন মান দেয় তাদের Unary Operators বলে। সবচেয়ে ব্যবহৃত Unary Operators হচ্ছে – (minus sign)। একটা নাম্বার পজেটিভ নাকি নেগেটিব, তা বুঝানোর জন্য আমরা তার আগে + অথবা - চিহ্ন বসাই। যদিও কোন চিহ্ন না বসানো মানে হচ্ছে ঐ সংখ্যাটি পজেটিভ।
#include <stdio.h>
int main()
{
int x =-3;
printf("%d", x);
return 0;
}
যেখানে x এর মান -3 ;প্রধান দুটি Unary Operators হচ্ছে Increment operator(++) ও Decrement operator(- -) ।
Increment operator: Increment operator কে ++ চিহ্ন দিয়ে প্রকাশ করা হয়। অর্থাত ++ কে increment operator বলে। এটি একটি variable এর উপর বসে এর মান 1 বাড়িয়ে দেয়। এটি variable এর আগে ও বসতে পারে পরেও বসতে পারে। যেমনঃ মনে করি x একটি variable যার মান 5 । ++X এর মান হবে 6 । তেমনি X++ মান ও হবে 6 ।
#include <stdio.h>
int main()
{
int x =6;
x++;
printf("%d", x);
return 0;
}
উপরে আমাদের x এর মান 6, এর পর আমরা এর মধ্যে চ্ছে Increment operator(++) ব্যবহার করেছি। এবং শেষে তা প্রিন্ট করেছি। আমরা আউটপুট পেয়েছি 7.এখন যদি আমরা x আগে ++ দিয়ে প্রিন্ট দি, তাহলেও আমরা একই মান পাবো।
#include <stdio.h>
int main()
{
int x =6;
++x;
printf("%d", x);
return 0;
}
তবে x++ এবং ++x এর মধ্যে একটু পার্থ্যক্য রয়েছে।x++ এর মানে হচ্ছে আগে x এর মান এক্সিকিউট হবে এবং তারপর এর মান ১ বাড়বে। আর ++x এর মানে হচ্ছে আগে এর মান এক বাড়বে এবং পরে এক্সিকিউট হবে। এখনো যদি বুঝতে অসুবিধে হয় সমস্যা নেই। নিচের প্রোগ্রামটা দেখিঃ
#include <stdio.h>
int main()
{
int x =3;
int y =6;
printf("%d \n", x++);
printf("%d \n", ++y);
return 0;
}
উপরের প্রোগ্রামটা যদি আমরা রান করি, তাহলে আমরা আউটপুট পাচ্ছি 3 এবং 7। Increment operator ভ্যারিয়েবল এর পরে রয়েছিল, আমাদের printf ফাংশন আগে x এর মানটা প্রিন্ট করেছে, এর পর এর মান এক বাড়িয়েছে। তাই আমরা আউটপুট পাচ্ছি 3.কিন্তু y এর ক্ষেত্রে আগে y এর মান এক বাড়িয়েছে, এবং পরে এর মান প্রিন্ট করেছে। তাই আমরা আউটপুট পেয়েছি 7
এখানে দুটা ভ্যারিয়েবল নিয়েছি, এবং পরে তাদের প্রিন্ট করেছি। একটার আগে ++ ব্যবহার করেছি একটার পরে।
Decrement operator: - - [Minus Minus] কে Decrement operator বলে। এটি একটি variable এর উপর বসে এর মান 1 কমিয়ে দেয়। এটি variable এর আগে ও বসতে পারে পরেও বসতে পারে। যেমনঃ মনে করি x একটি variable যার মান 5 । - -X এর মান হবে 4 । তেমনি X- - মান ও হবে 4 ।
#include <stdio.h>
int main()
{
int x =6;
x--;
printf("%d", x);
return 0;
}
উপরের প্রোগ্রামে আমরা x এর মান সেট করেছি 6 এবং পরে Decrement operator এর উপর প্রয়োগ করেছি। এর পরে এর মান এক কমে গিয়েছে। আমরা পরে x এর মান প্রিন্ট করেছি এবং এর মান পেয়েছি 5.লজিক্যাল অপারেটর
Relational and Logical Operators গুলো হল:- Relational Operators
- Equality Operator
- Logical Operator
Operator | Meaning |
< | Less then |
<= | Less then or equal to |
> | Greater then |
>= | Greater then or equal to |
Relational Operator ব্যবহার করে আমরা সহজেই দুটি সংখ্যার মধ্যে কোনটা ছোট তা বের করে ফেলতে পারি। যা আমরা এর পরের অধ্যায় if - else অংশে দেখব।
Equality Operator:
Relational Operators এর সাথে সম্পর্ক যুক্ত দুটি Equality Operator রয়েছে। নিচে এদের দেওয়া হলঃ
Operator | Meaning |
== | Equal to |
!= | Not Equal to |
উদাহরনঃ মনে করি x, y দুটি ভ্যারিয়েবল। x এর মান 5। Y এর মান 6। সুতরাং x==y এর মানে হচ্ছে x এবং y এর মান সমান। কিন্ত আমদের x এবং y এর মান সমান নয়। সুতরাং x==y expression টি মিথ্যে এবং এর মান হবে 0। আবার যদি x!=y (উচ্চারন x not equal to y) হয় তাহলে expression টি সত্য হয় এবং এর মান হবে ।
এখানে মনে রাখতে হবে যে Assignment operator = এবং Equality Operator == সম্পূর্নই ভিন্ন। কোন ভ্যালু কোন ভ্যারিয়েবলের মধ্যে এসাইন করার assignment operator ব্যবহার করা হয়। আর দুইটা Expression এর মান সমান কিনা, তা দেখার জন্য Equality Operator (==) ব্যবহার করা হয়। এখানে একটার স্থানে আরেকটা কোন অবস্থাতেই বসানো যাবেনা। তাহলে Program এ বিশাল ভুল আসবে। প্রথম প্রথম অনেকেই এই ভুল করে।
Logical Operator:
C প্রোগ্রামিং এ দুটি Logical Operator রয়েছে। তাদের নিচে দেওয়া হলঃ
Operator | Meaning |
&& | And |
|| | Or |
&& ( পড়া হয় And operator) :
মনে করি x,y,z তিনটি চলক। এখন (x<y)&& (y<z) হচ্ছে একটি expression. এখন এর মান সত্য হবে যদি (x<y) এবং (y<z) সত্য হয়। (x<y) এবং (y<z) এর যে কোন একটি মিথ্যা হলে (x<y)&& (y<z) এর মান মিথ্যে হবে।
||( পড়া হয় Or Operator ):
মনে করি x,y,z তিনটি চলক। এখন (x<y)||(y<z) হচ্ছে একটি expression। এখন এর মান সত্য হবে যদি (x<y) এবং (y<z) সত্য হয়। অথবা (x<y) এবং (y<z) এর যে কোন একটি সত্য হয়। (x<y) এবং (y<z) দুটি একসাথে মিথ্যা হলে (x<y)||(y<z) এর মান মিথ্যে হবে।
Relational and Logical Operators এর কয়েকটি উদাহরন নিচে দেওয়া হল:
মনে করি x, y, z তিনটি চলক। x এর মান 5, y এর মান 6 এবং z এর মান 7।
Expression | ব্যাখ্যা | মান |
X<y | True | 1 |
X==5 | True | 1 |
y==4 | False | 0 |
(X+y)>z | True | 1 |
(X+y)<=z | False | 0 |
X!=y | True | 1 |
(X<y)&&(y==6) | True | 1 |
(X<y)&&(z!=y) | True | 1 |
(X>y)||(z!=y) | True | 1 |
(X>y)&&(z!=y) | False | 0 |
(X<y)&&(z==y) | False | 0 |
(X<y)||(z==y) | True | 1 |
কন্ডিশনাল অপারেটর
Conditional Operator: একটা condition দিয়ে দুটি মান থেকে একটি পছন্দ করার একটা পদ্ধতি। এটি নিচের মতো করে লেখা হয়ঃ
Condition ? Expression2: Expression3
এখানে condition হচ্ছে যে কোন একটা শর্ত। যা সত্য হলে Expression1 নির্বাচিত হবে। আর কন্ডিশন ভুল হলে Expression2 টি নির্বাচিত হবে।
মনে করি i=5, তাহলে নিচের Conditional Operator টা দেখিঃ
Z=(i<8)?10:100;
এখানে Z এর জন্য Conditional Operator টা লেখা হয়েছে। এখানে লিখা হয়েছেঃ Z=(i<8)?10:100; অর্থাৎ যদি i এর মান 8 থেকে ছোট হয় তাহলে Z এর মান হবে 10। আর তা না হলে z এর মান হবে 100.
#include <stdio.h>
int main()
{
int x, y , result;
scanf("%d %d", &x , &y);
result = (x>=y) ? x : y ;
printf("max is %d", result);
return 0;
}
একই প্রোগ্রাম, কন্ডিশন পরিবর্তন করে দুটি সংখ্যার মধ্যে ছোটটা নির্বাচিত করা হয়েছে।
#include <stdio.h>
int main()
{
int x, y , result;
scanf("%d %d", &x , &y);
result = (x<=y) ? x : y ;
printf("min is %d", result);
return 0;
}
যদিও একই কাজ if -else বা অন্য অনেক ভাবে করা যায়।- Get link
- X
- Other Apps
Comments
Post a Comment
আপনার গুরুত্বপূর্ণ মতামত দিয়ে আমাদের সাহায্য করুন।