সি প্রোগ্রামিং এইচটিএমএল সিএসএস জাভাস্ক্রিপ্ট পিএইচপি এসকিউএল
ফোরাম
×

 সি টিউটোরিয়াল

সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার

সি কন্ট্রোল স্টেটমেন্ট

সি ইফ সি ইফ...ইলস সি ফর লুপ সি হোহাইল লুপ সি ডু...হোহাইল লুপ সি ব্রেক সি কন্টিনিউ সি সুইচ স্টেটমেন্ট সি goto স্টেটমেন্ট

 সি ফাংশন

সি ফাংশন পরিচিতি সি ইউজার কর্তৃক ফাংশন সি ফাংশন টাইপ সি রিকার্সন সি ভ্যারিয়েবল স্কোপ

 সি অ্যারে

সি অ্যারে পরিচিতি সি মালটি-ডাইমেনশনাল অ্যারে সি অ্যারে ফাংশন

 সি স্ট্রিং

সি স্ট্রিং সি স্ট্রিং ফাংশন

 সি পয়েন্টার

সি পয়েন্টার পরিচিত সি পয়েন্টার অ্যারে সি পয়েন্টার ফাংশন সি মেমোরি ম্যানেজমেন্ট

 সি ফাইল এবং স্ট্রাকচার

স্ট্রাকচার পরিচিত স্ট্রাকচার ও পয়েন্টার সি স্ট্রাকচার ও ফাংশন সি ইউনিয়ন ফাইল হ্যান্ডেলিং

 সি অতিরিক্ত টিউটোরিয়াল

সি লাইব্রেরী সি প্রিপ্রোসেসর এবং ম্যাক্রো সি ইনুমিরেশন সি এরর নিয়ন্ত্রণ সি টাইপ কাস্টিং সি বিট ফিল্ড সি ভ্যারিয়েবল আর্গুমেন্ট সি কমান্ড লাইন আর্গুমেন্ট

 

সি প্রোগ্রামিং অপারেটর


এরিথমেটিক(arithmetic), কন্ডিশনাল(conditional) এবং বিটওয়াজ(bitwise) অপারেশন সম্পন্ন করার জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর(oparetor) রয়েছে। এই অধ্যায়ে আপনি বিভিন্ন ধরণের সি অপারেটর এবং এদের ব্যবহার সম্মন্ধে জানবেন।

অপারেটর এক ধরণের প্রতীক(symbol) যা ভ্যালু(value) অথবা ভ্যারিয়েবলকে অপারেট করতে পারে। উদাহরণস্বরূপঃ +(যোগ চিহ্ন) একটি অপারেটর যা যোগের কাজে ব্যবহৃত হয়।

বিভিন্ন ধরণের অপারেশন সম্পাদনের জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর রয়েছে। ভালভাবে বুঝার জন্য অপারেটরসমূহকে নিম্নোক্ত উপায়ে বিভক্ত করা যায়ঃ


সি প্রোগ্রামিং অপারেটর

  1. এরিথমেটিক অপারেটর - Arithmetic Operator
  2. ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর- Increment and Decrement Operator
  3. এসাইনমেন্ট অপারেটর - Assignment Operator
  4. রিলেশনাল অপারেটর - Relational Operator
  5. লজিকাল অপারেটর - Logical Operator
  6. কন্ডিশনাল অপারেটর - Conditional Operator
  7. বিটওয়াইজ অপারেটর - Bitwise Operator
  8. স্পেশিয়াল অপারেটর - Special Operator

সি এরিথমেটিক অপারেটর

এরিথমেটিক অপারেটর গাণিতিক হিসাব নিকাশ যেমন- যোগ, বিয়োগ, গুন এবং ভাগ ইত্যাদি কার্য সম্পন্ন করে।

অপারেটর অপারেটেরের অর্থ উদাহরণ(int a=11, b=5) ফলাফল
+ যোগ বা ইউনারী(unary) যোগ a + b 16
- বিয়োগ বা ইউনারী বিয়োগ a - b 6
* গুন a * b 55
/ ভাগ a / b 2
% ভাগের পরে ফলাফল ভাগশেষ(মডিউলো অপারেটর) a % b 1

উদাহরণঃ এরিথমেটিক অপারেটর

// সি প্রোগ্রামে এরিথমেটিক অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 11,b = 5, c;
    
    c = a+b;
    printf("a+b = %d \n",c);

    c = a-b;
    printf("a-b = %d \n",c);
    
    c = a*b;
    printf("a*b = %d \n",c);
    
    c=a/b;
    printf("a/b = %d \n",c);
    
    c=a%b;
    printf("Remainder when a divided by b = %d \n",c);
    
    return 0;
}

আউটপুট

a+b = 16
a-b = 6
a*b = 55
a/b = 2
Remainder when a divided by b=1

+, - এবং * অপারেটর সঠিকভাবে যথাক্রমে যোগ, বিয়োগ এবং গুন করে।

সাধারনভাবে আপনি যদি 11 কে 5 (11/5)দিয় ভাগ করেন তাহলে ভাগফল পাবেন 2.2। কিন্তু আমাদের প্রোগ্রামের আউটপুট 2 পাওয়া গেছে।

কারণ উভয় ভ্যারিয়েবলের টাইপ ইন্টেজার। তাই আউটপুটও ইন্টেজার হয়েছে। কম্পাইলার দশমিক সংখ্যার দশমিকের পরের অংশকে কেটে ফেলেছে ফলে ফলাফল 2.2 এর পরিবর্তে 2 হয়েছে।

মডিউলো অপারেটর % এর মাধ্যমে ভাগশেষ পাওয়া যায়। উপরের উদাহরণে a = 11 কে b = 5 দিয়ে ভাগ করায় ভাগশেষ 1 পাওয়া গেছে। শুধুমাত্র ইন্টেজারের ক্ষেত্রেই % অপারেটর ব্যবহৃত হয়।

ধরুন a = 10.0, b = 4.0, c = 10 এবং d = 4 তাহলে সি প্রোগ্রামিং

a/b = 2.5  //কারণ উভয় অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। 
a/d = 2.5  //কারণ একটি অপারেন্ড  ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। 
c/b = 2.5  //কারণ একটি অপারেন্ড  ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। 
c/d = 2    // কারণ উভয় অপারেন্ড  ইন্টেজার ভ্যারিয়েবল।

ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর

কনস্ট্যান্ট অথবা ভ্যারিয়েবলের অপারেন্ডেকে ১ করে বৃদ্ধি বা হ্রাসের জন্য সি প্রোগ্রামিং এ যথাক্রমে দুটি অপারেটর আছে একটি হলো ইনক্রিমেন্ট(increment) ++ এবং অপরটি হলো ডিক্রিমেন্ট(decrement) --।

ইনক্রিমেন্ট অপারেটর ভ্যারিয়েবলের ভ্যালু এক করে বৃদ্ধি করে পক্ষান্তরে ডিক্রিমেন্ট অপারেটর ভ্যালু এক করে হ্রাস করে। এই দুটি অপারেটরকে ইউনারী(unary) অপারেটর বলা হয় কারণ এরা সিঙ্গেল অপারেন্ডকে অপারেট করতে পারে।


উদাহরণঃ ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর

// সি প্রোগ্রামে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 15, b = 150;
    float c = 50.5, d = 80.5;

    printf("++a = %d \n", ++a);

    printf("--b = %d \n", --b);

    printf("++c = %f \n", ++c);

    printf("--d = %f \n", --d);

    return 0;
}

আউটপুট

++a = 16
--b = 149
++c = 51.500000
--d = 79.500000

এখানে অপারেটর ++ এবং -- প্রিফিক্স(prefix) হিসাবে ব্যবহৃত হয়েছে। এই অপারেটর দুটি পোস্টফিক্স(postfix) হিসাবেও ব্যবহৃত হতে পারে। যেমন- a++ এবং a--। ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর সম্বন্ধে আরোও জানতে সি প্রোগ্রামে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর অধ্যায় ভিজিট করুন।


সি এসাইনমেন্ট অপারেটর

ভ্যারিয়েবলে ভ্যালু এসাইন করা বা জমা রাখার জন্য এসাইনমেন্ট(assignment) অপারেটর ব্যবহৃত হয়। সবচেয়ে বেশী ব্যবহৃত এসাইনমেন্ট অপারেটর হলো =

অপারেটর উদাহরন(int a=11, b=5) একই রকম ফলাফল
= a = b a = b 5
+= a += b a = a+b 16
-= a -= b a = a-b 6
*= a *= b a = a*b 55
/= a /= b a = a/b 2
%= a %= b a = a%b 1

উদাহরণঃ এসাইনমেন্ট অপারেটর

// সি প্রোগ্রামে এসাইনমেন্ট অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 10, c;

    c = a;
    printf("c = %d \n", c);

    c += a; // c = c+a
    printf("c = %d \n", c);

    c -= a; // c = c-a
    printf("c = %d \n", c);

    c *= a; // c = c*a
    printf("c = %d \n", c);

    c /= a; // c = c/a
    printf("c = %d \n", c);

    c %= a; // c = c%a
    printf("c = %d \n", c);

    return 0;
}

আউটপুট

c = 10
c = 20 
c = 10 
c = 100 
c = 10
c = 0

সি রিলেশনাল অপারেটর

সি প্রোগ্রামিং এ রিলেশনাল অপারেটর(relational operator) দুটি অপারেন্ডের মধ্যে সম্পর্ক যাচাই করে। রিলেশন সত্যি(true) হলে 1 রিটার্ন করে; রিলেশন মিথ্যা(false) হলে 0 রিটার্ন করে।

সিদ্ধান্ত গ্রহণ(decision making) এবং লুপ(loop) এ রিলেশনাল অপারেটর ব্যবহৃত হয়।

অপারেটর অপারেটরের অর্থ উদাহরণ(int a=11, b=5) ফলাফল
== Equal to a == b False
> Greater than a > b True
< Less than a < b False
!= Not equal to a != b True
>= Greater than or equal to a >= b True
<= Less than or equal to a <= b False

উদাহরণ: রিলেশনাল অপারেটর

// সি প্রোগ্রামে রিলেশনাল  অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10;

    printf("%d == %d = %d \n", a, b, a == b); // true
    printf("%d == %d = %d \n", a, c, a == c); // false

    printf("%d > %d = %d \n", a, b, a > b); //false
    printf("%d > %d = %d \n", a, c, a > c); //false


    printf("%d < %d = %d \n", a, b, a < b); //false
    printf("%d < %d = %d \n", a, c, a < c); //true


    printf("%d != %d = %d \n", a, b, a != b); //false
    printf("%d != %d = %d \n", a, c, a != c); //true


    printf("%d >= %d = %d \n", a, b, a >= b); //true
    printf("%d >= %d = %d \n", a, c, a >= c); //false


    printf("%d <= %d = %d \n", a, b, a <= b); //true
    printf("%d <= %d = %d \n", a, c, a <= c); //true

    return 0;

}

আউটপুট

5 == 5 = 1
5 == 10 = 0
5 > 5 = 0
5 > 10 = 0
5 < 5 = 0
5 < 10 = 1
5 != 5 = 0
5 != 10 = 1
5 >= 5 = 1
5 >= 10 = 0
5 <= 5 = 1
5 <= 10 = 1 

সি লজিক্যাল অপারেটর

সি প্রোগ্রামিং এ &&, || এবং ! অপারেটরসমূহকে লজিক্যাল(Logial) অপারেটর বলা হয়। সি প্রোগ্রামিং এ সিদ্ধান্ত গ্রহণে(in decision making ) সচারচর লজিক্যাল অপারেটর ব্যবহৃত হয়।

অপারেটর অপারেটরের অর্থ উদাহরণ(int a=11, b=5, c =15) ফলাফল
&& Logial AND - উভয় অপারেন্ড true হলে True  (a==b) && (b>c) True
|| Logical OR - যেকোনো একটি অপারেন্ড true হলে True (b==c) || (a>c) False
! Logical NOT - অপারেন্ড false হলে True !(b==c) True

উদাহরণঃ লজিক্যাল অপারেটর

//  সি প্রোগ্রামে লজিক্যাল  অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো।

#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10, result;

    result = (a = b) && (c > b);
    printf("(a = b) && (c > b) equals to %d \n", result);

    result = (a = b) && (c < b);
    printf("(a = b) && (c < b) equals to %d \n", result);

    result = (a = b) || (c < b);
    printf("(a = b) || (c < b) equals to %d \n", result);

    result = (a != b) || (c < b);
    printf("(a != b) || (c < b) equals to %d \n", result);

    result = !(a != b);
    printf("!(a == b) equals to %d \n", result);

    result = !(a == b);
    printf("!(a == b) equals to %d \n", result);

    return 0;
}

আউটপুট

(a = b) && (c > b) equals to 1 
(a = b) && (c < b) equals to 0 
(a = b) || (c < b) equals to 1 
(a != b) || (c < b) equals to 0 
!(a != b) equals to 1 
!(a == b) equals to 0 

উপরের উদাহরণের ব্যাখ্যা


বিটওয়াইজ অপারেটর

হিসাব নিকাশের সময় গাণিতিক অপারেশন যেমন- যোগ, বিয়োগ, গুণ এবং ভাগ বিট-লেভেলে রূপান্তরিত হলে দ্রুত প্রোসেসিং হয় এবং শক্তি(power) সংরক্ষিত হয়।

সি প্রোগ্রামিং এ বিট-লেভেল অপারেশন সম্পন্ন করার জন্য বিটওয়াইজ(Bitwise) অপারেটর ব্যবহৃত হয়।

মনেকরি, নিচের টেবিলে x = 10 (বাইনারিতে 0000 1010) এবং y = 4 (বাইনারিতে 0000 0100)

অপারেটর অপারেটরের অর্থ উদাহরণ(x=10 এবং y=4) ফলাফল
& Bitwise AND x& y = 0 (0000 0000) 0
| Bitwise OR x | y = 14 (0000 1110) 14
^ Bitwise exclusive OR x ^ y = 14 (0000 1110) 14
~ Bitwise complement ~x = -11 (1111 0101) -11
<< Shift left x<< 2 = 42 (0010 1000) 42
>> Shift right x>> 2 = 2 (0000 0010) 2

বিটওয়াইজ অপারেটর সম্মন্ধে আরোও জানতে আমাদের সি বিটওয়াইজ অপারেটর অধ্যায় ভিজিট করুন


অন্যান্য অপারেটর


কমা অপারেটর

সম্পর্কযুক্ত এক্সপ্রেশনসমূহকে একইসঙ্গে ডিক্লেয়ার(declare) করার জন্য কমা(comma) অপারেটর ব্যবহৃত হয়। উদাহরনস্বরুপঃ

int a, b = 10,  c = 5, d;

sizeof অপারেটর

sizeof অপারেটর হলো ইউনারী অপারেটর যা ডেটা যেমন- কনস্ট্যান্ট, ভ্যারিয়েবল, অ্যারে, স্ট্রাকচার ইত্যাদির সাইজ রিটার্ন করে

সিনট্যাক্স

sizeof(variable)

উদাহরণঃ sizeof অপারেটর

#include <stdio.h>
#include<conio.h>

void main()
{
int a;
float b;
double c;
char d;
printf("Size of Integer: %d bytes\n",sizeof(a));
printf("Size of float: %d bytes\n",sizeof(b));
printf("Size of double: %d bytes\n",sizeof(c));
printf("Size of character: %d byte\n",sizeof(d));
getch();
}

আউটপুট

Size of Integer: 2 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of character: 1 byte

 সি টারনারী অপারেটর (?:)

যখন কোনো অপারেটর তিনটি অপারেন্ড(oparend) নিয়ে কাজ করে তাকে টারনারী(ternary) অপারেটর বলে। টারনারী অপারেটর দেখতে ?: এমন। টারনারী অপারেটরকে কন্ডিশনাল অপারেটরও বলা হয়।


কন্ডিশনাল অপারেটর সিনট্যাক্স



কন্ডিশনাল অপারেটরের কাজের ধাপ নিম্নে বর্ণনা করা হলোঃ

উপরের সিনট্যাক্সে বুলিয়ান এক্সপ্রেশন হলো কন্ডিশন এবং true part ও false part হয় ভ্যালু অথবা ভ্যারিয়েবল অথবা স্টেটমেন্ট অথবা যেকোনো গাণিতিক এক্সপ্রেশন হতে পারে। কন্ডিশন True হলে True part সম্পাদিত হয় অন্যথায় false part সম্পাদিত হয়।


উদাহরনঃ সি টারনারী(কন্ডিশনাল) অপারেটর

#include <stdio.h>
#include<conio.h>

void main()
{
int a, b, c, large;
clrscr();
printf("Enter any three number: ");
scanf("%d%d%d",&a,&b,&c);
large=a>b ? (a>c?a:c) : (b>c?b:c);
printf("Largest Number is: %d",large);
getch();
}

আউটপুট

Enter any three number: 10 15 7
Largest number is 15

অন্যান্য অপারেটর যেমন- রেফারেন্স(reference) অপারেটর(&), ডিরেফারেন্স(dereference) অপারেটর(*) এবং মেম্বার(member) সিলেকশন অপারেটর (->) সি পয়েন্টার অধ্যায়ে আলোচনা করা হয়েছে।