শুরু হোক প্রোগ্রামিং এ পদযাত্রা চলুন শিখি প্রোগ্রামিং ইন সি অধ্যায় তিন- Operators and Expressions

0
243

শুরু হোক প্রোগ্রামিং এ পদযাত্রা চলুন শিখি প্রোগ্রামিং ইন সি অধ্যায় তিনের আজকের বিষয় – অপারেটর এবং এক্সপ্রেশন ।প্রোগ্রামিং এ ভালো করতে হলে অবশ্যই ম্যথমেটিক্স ভালো বুঝতে হবে। আমরা জানি অপারেটর মানে অংকের যোগ, বিয়োগ, গুন, ভাগ চিহ্ন গুলো । তেমনি প্রোগ্রামিং এ অংকের অপারেটর গুলো তো রয়েছেই পাশাপাশি আরো কয়েক ধরণের অপারেটর রয়েছে এই গুলো সম্পর্কে নিচে আলোচনা করব।

প্রোগ্রামিং এ অপারেটর সমূহঃ

১ Arithmetic Operators: +, -, /, *, %.

2.Relational Operators: Example:- <, <=, >=, ==, !=.

3.Logical Operators: Example:- &&, ||, !.

4.Assignment Operators. Example:-   =, +=,-=, /=, %=.

5.Increment and Decrements Operators. Example:- ++, –.

6.Conditional Operators. Example:-   Z=(x>y)? x+2: x+3;

7. Bit-wise Operators. Example:-  &, |, ^, <<, >>.

8. Special Operators. Example:- ;

এবার অপারেটরের এক্সপ্রেশন গুলো দেখে নেই কিভাবে প্রোগ্রামিং এ ব্যবহার করা হয়ঃ

Arithmetic Operators:  প্রোগ্রামিং এ (+, -, *,/, %) এই অপারেটর গুলো দ্বারা যথাক্রমে যোগ, বিয়োগ, গুন,ভাগ, এবং ভাগশেষ নির্ণয়ের কাজে ব্যবহার করা হয়।

উদাহরণঃ y=5/2; Answer: y =2 ইন্টেজার টাইপ হওয়া এখানে ভাগফলে দশমিক ঘররে সংখ্যা আসবে না।

y=5%2; Answer: y=1 এখানে % অপারেটরের কাজ হচ্ছে ভাগশেষ বের করা । ৫ কে ২ দ্বারা ভাগ করলে ভাগশেষ ১ থাকে । ১ মানটি y এর ভিতরে সংরক্ষণ হবে।

#include<stdio.h>
int main()
{
int a=10,b=6,A,M,Mult, Divi, Modu;

A=a+b;
M=a-b;
Mult=a*b;
Divi=a/b;
Modu=a%b;
printf(“Add:%d\nMinus:%d\nMultiply:%d\nDivision:%d\nModulus:%d”, A,M,Mult,Divi,Modu);
return 0;
}

OUTPUT:

Add:16
Minus:4
Multiply:60
Division:1
Modulus:4

Relational Operators: প্রোগ্রামিং এ (<, <=, >=, ==, !=) এই অপারেটর গুলো দ্বারা যথাক্রমে Less Than, Less than equal, Grater than equal, equal, not equal. সম্পর্ক গুলো যাচাই করা হয়।

উদাহরণঃ a<b এর মধ্যে বড় অথবা ছোট সংখ্যা বের করা। a<=b এখানে a এবং b এর মধ্যে ছোট এবং সমান সংখ্যা বের করার জন্য।a ==b দ্বারা দুইটি সংখ্যা সমান কিনা a!=b দুইটি সংখ্যা অসমান কিনা যাচাই করার জন্য এই অপারেটর গুলো ব্যবহৃত হয়।

Logical Operators: প্রোগ্রামিং এ (&&, ||, !) এই অপারেটর গুলো যথাক্রমে And, OR, Not গেটের লজিকের মত কাজ করে। অর্থাৎ মাঝখানে লজিক্যাল অপারেটর যুক্ত দুইটি স্টেটমেন্টের সত্য মিথ্যা হওয়ার ঘটনার উপর নির্ভর করে কাজ করে। && এই And অপারেটরের ক্ষেত্রে দুইটি স্টেটমেন্টই সত্য হলে And অধীনের কাজটি করবে।  Or (||) অপারেটরের ক্ষেত্রে দুইটি স্টেটমেন্টের যেকোনো একটি ঘটনা সত্য হলেই OR অপারেটরের অধীনের কাজটি হবে। Logical Not (!) স্টেটমেন্টটি অবশ্যই মিথা হতে হবে আর মিথা হলেই লজিক্যাল নটের অধীনের কাজটি হবে।

উদাহরণঃ

#include<stdio.h>
int main()
{
int m=85;

if(m>=80 && m<=100) //1st and 2nd statement are true then output A+
printf(“A+”);

return 0;
}

Assignment Operators: প্রোগ্রামিং এ (=, +=,-=, /=, %=) এই অপারেটর গুলো value assign করতে ব্যবহৃত হয়। যেমন a=b; b এর মান a তে রাখা, a+=b; এটা a=a+b; এর শর্ট ফর্ম যা a আর b এর মান যোগ করে আবার a তে assign করা হয়। বাকি গুলোও একি ভাবে বিয়োগ, ভাগ, ভাগশেষ বা মডুলাস করা হয়।

Increment and Decrements Operators: প্রোগ্রামিং এ (++, –) এই অপারেটর গুলো দ্বারা কোন কিছুর মান এক করে বাড়াতে বা কমাতে ব্যবহার করা হয়। যেমনঃ  x=4; y=++x; এখন এখানে x এর বাম পাশে ++ দেয়াতে y মান প্রথমেই এক বাড়িয়ে ৫ assign হবে। x=4; y=- -x; এখানেও একই ভাবে বাম পাশে — দেয়াতে y এর মান প্রথমেই এক কমিয়ে ৩ assign হবে।

এখন আশা যাক ++ অথবা — ডান পাশে দিলে কি ঘটনা ঘটবে? x=4; y=x++; এখানে x এর মান আগেই এক বাড়বে না y এর মান ৪ প্রথম অপারেশন assign হবে ২য় অপারেশন থেকে y এর মান এক বেড়ে ৫ হবে। x=4; y=x–; এখানেও — Decrements অপারেটর এর ক্ষেত্রে আগেই এক না কমে ৪ assign হবে পরের বার এক কমে ৩ হবে। চলুন increment and decrements নিয়ে একটা প্রোগ্রাম দেখিঃ

#include<stdio.h>
int main()
{
int x=4,y=5,a,b;

x=x++;
y=++y;

printf(“%d %d\n”, x,y);
return 0;
}

আউটপুটঃ

4 6

Conditional Operators:  কন্ডিশনাল অপারেটর Z=(x>y)? x+2: x+3; এ মূলত একটি কন্ডিশনের সত্য মিথ্যার উপর নির্ভর করে অপারেশন সম্পন্ন করে । (x>y) কন্ডিশন সত্য হলে : এই চিহ্নের বাম পাশের অপারেশন করবে অথবা মিথা হলে : এর ডান পাশের অপারেশন চালাবে। (কন্ডিশনের পরে অবশ্যই ? প্রশ্নবোধক চিহ্ন দিতে হবে) যেমন:

#include<stdio.h>
int main()
{
int x=5,y=8,z;
//scanf(“%d %d”, &x, &y);

z=(x>y)? x+2 : x+3;
printf(“%d”, z);

return 0;
}

OUTPUT: 8

এখানে x এর মান y এর থেকে ছোট, অর্থাৎ কন্ডিশন মিথ্যা তাই ( : )এই চিহ্নের ডান পাশের অপারেশন x এর মান ৫ এর সাথে ৩ যোগ করে z এর মান ৮ প্রিন্ট করে আউটপুটে দেখাবে।

Bit-wise Operators:  প্রথমে ( &, |, ^, <<, >>) এই অপারেটর গুলোর নাম জেনেই

OperatorsOperators Name
&Bitwise AND
|Bitwise OR
^Bitwise exclusive OR
<<Shift left
>>Shift right

 

Bit-wise অপারেটর মূলত বাইনারি সংখ্যা পদ্ধতির কাজ। যেহেতু আমরা কিবোর্ড থেকে ডেসিমাল সংখ্যা ইনপুট দেই । তাই Bit-wise অপারেটর এর ক্ষেত্রে ডেসিমাল সংখ্যাটিকে কম্পাইলার আগে বাইনারি সংখ্যা রূপান্তর করে। তারপর আমদের দেয়া অপারেটর অনুযায়ী কাজ করে আউটপুট প্রদান করে। যেমনঃ

#include<stdio.h>
int main()
{
int x=3,y=2,z;

z=x&y;
printf(“%d”, z);

return 0;
}

OUTPUT: 2

এই প্রোগ্রাম টিতে এন্ড অপারেটর ব্যবহার করা হয়েছে। উপরের কথা অনুযায়ী প্রথমে  x=৩ এর বাইনারি ০০১১ এবং y=২ এর বাইনারি ০০১০ কনভার্ট হবে। তারপর এন্ড অপারেটর করবে । আউটপুটি ও বাইনারি থেকে কনভার্ট করে ডেসিমাল এ দেখাবে। আমরা জানি, এন্ড অপারেটর এ ইনপুট সবগুলো হাই বা ১ হলে, আউটপুট হাই বা ১ হবে।

০০১১ =3

০০১০ =২


০০১০ =২ আউটপুট (এখানে ইনপুটের দুই নাম্বার বিট দুইটাই হাই বা ১ হওয়ায় আউটপুটের ২ নাম্বার বিট ১ হয়েছে যা কিনা এন্ড অপারেটরের নিয়ম হিসেবে আমরা জানি)

Or অপারেটরের ক্ষেত্রে যে কোনো একটি ইনপুট হাই হলেই আউটপুট হাই হবে। উদাহরণঃ

০০১১ =3

০০১০ =২


০০১১ =৩ ( এখানে প্রথম বিটটিতে একটি ১ থাকায় আউটপুটে ১ বসলো এবং পরের বিটটিতে দুইটিতেই ১ থাকায় আউটপুটে ১ বসলো। ) আউটপুটকে বাইনারি থেকে কনভার্ট করলে পাওয়া যাচ্ছে ৩।

#include<stdio.h>
int main()
{
int x=3,y=2,z;

z=x|y;
printf(“%d”, z);

return 0;
}

OUTPUT: 3

Shift Left (<<) এই অপারেটর এর কাজ হচ্ছে বাইনারি সংখ্যাকে << চিহ্নের পরে দেয়া সংখ্যা অনুযায়ী বিট বামে সরানো । বামে সরালে খালি স্থানে ০ বসিয়ে হিসাব করতে হয়। যেমনঃ

#include<stdio.h>
int main()
{
int x=7;
x=x<<1;
printf(“%d”, x);

return 0;
}

OUTPUT: 14

উপরের প্রোগ্রামে ৭ দেয়া আছে যার বাইনারি ০১১১ । x<<1 অপারেটর দেয়ার ফলে ১ বিট বামে সরে যাবে বা এভাবেও বলা যায় শেষে একটি ০ যোগ হবে ০১১১০ যার ডেসিমাল সংখ্যা ১৪ ।

Shift Right (>>) এই অপারেটর এর ক্ষেত্রে ডান দিকে সরে যাবে অর্থাৎ সামনে ০ যোগ হবে। শেষের দিকে সমান সংখক বিট বাদ হয়ে যাবে।  যেমনঃ

#include<stdio.h>
int main()
{
int x=7;
x=x>>1;
printf(“%d”, x);

return 0;
}

OUTPUT: 3

৭ এর বাইনারি ০১১১। ডান দিকে সরে গেলে বা সামনে (x>>1) অপারেটরের পর সংখ্যা অনুযায়ী একটি বিট যোগ হলে হবে ০০১১ যার ডেসিমাল ৩। এখানে অবশ্যই মনে রাখতে হবে শেষে (>>) অপারেটর সংখ্যা অনুযায়ী বিট বাদ যাবে। নিয়ম অনুযায়ী ০০১১১ এর ১ বাদ গিয়ে ০০১১ হয়েছে।

এই অধ্যায়ের আলোচনা এই পর্যন্তই । কোথাও কোনো বিষয় বুঝতে না পারলে কমেন্ট বক্সে অবশ্যই কমেন্ট করে জানাবেন। ধন্যবাদ সবাইকে আইটিডক্টর২৪ এর সঙ্গেই থাকুন।

ফেসবুকে আমি

Series Navigation<< শুরু হোক প্রোগ্রামিং এ পদযাত্রা চলুন শিখি প্রোগ্রামিং ইন সি অধ্যায় দুই – Constant, Variables and Data Types

Please comment Here (ভাল লাগলে কমেন্ট করুন)