Tuesday, 5 September 2017

লুপের ঘুরাঘুরি (Loop in C program)

যারা লুপ শব্দের অর্থ জানো তারা নিশ্চয়ই এর কাজ সমন্ধেও কিছুটা ধারণা করতে পারছো।

লুপ শব্দের আবিধানিক ( loop ) অর্থ চক্র।



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


মনেকরো তোমাকে  "Hello World" এই লেখাটা ৫ বার স্ক্রিনে দেখাতে বলা হলো। তাহলে তুমি কি করবে?

নিশ্চয়ই 
printf("Hello World\n");
printf("Hello World\n");
printf("Hello World\n");
printf("Hello World\n");
printf("Hello World\n");

এভাবে করতে পারবে।  কিন্তু যদি বলা হয় ১০০ বার বা ১০০০ বার করতে ? না এভাবে ১০০০ বার এক লাইন লিখে আর যা হোক , প্রোগামিং এর মতো মজার একটা জিনিসকে বিরক্তিকর করার মানে হয় না। আর এ বিরক্তিটা থেকে মুক্তি পাওয়ার জন্যই লুপের অবতারণা।

এবার নিচের প্রোগ্রামটা দেখোঃ

 
#include<stdio.h >
int main()
{
    int i=1;
    for(i=1; i<=5; i=i+1)
    {
        printf("Hello world\n");
    }
    return 0;
}



কি চমৎকার তাই না। মাত্র কয়টা লাইন লিখেই আমরা ৫ বার  Hello World  প্রিন্ট করে দিলাম।
শুধু ৫ বার নয় আমরা চাইলে এই সমান প্রোগ্রামে সামান্য একটু পরিবর্তন করেই ১০০ বার Hello World প্রিন্ট করতে পারবো। শুধু নিচের মতো একটু পরিবর্তন করে কোড টা রান করে দেখো।

for( i=1; i<=100; i= i+1)

হ্যা, 5 এর জায়গায় 100  বসিয়ে দিলেই আমাদের কাজ শেষ।

উপরের প্রোগ্রামটা আমরা for লুপ দিয়ে করেছি। সি তে সাধারণত ৩ ধরণের লুপ আছে, for , while এবং do-while loop.

ধীরে ধীরে আমরা সব গুলা লুপের সাথে পরিচিত হবো। 



প্রথমে আমরা একটা ইন্টিজার ভেরিয়েবল ডেক্লিয়ার করেছি, যার নাম দিয়েছি i. তুমি চাইলে a,b,c,d...... যেকোন নাম দিতে পারো। তবে সাধারণত প্রায় সব প্রোগ্রামে  i, j, k এভাবে নাম করণ দেখবে।  i কে এইখানে বলা হয় counter variable । কারণ লুপটি কতবার ঘুরছে  তা নির্ণয়ের জন্য এখানে i ব্যবহার করা হয়েছে।
আমরা i এর মান দিয়েছি 1.
তারপর
for( i=1 ;  i<=5;  i = i+1)
এই লাইনে i=1 এর পর একটা সেমিকোলন আছে, প্রথম অবস্থায় সবার ই এই সেমিকোলন নিয়ে একটু আধটু সমস্যা হয়। তবে একটু মাথা ঠান্ডা রেখে প্রোগ্রামিং করলে এসব সমস্যা সহযেই এড়ানো যায়।

তারপর আমরা দিয়েছি i<=5.
একে বলা হয় ব্রেকিং কন্ডিশন। যতক্ষণ পর্যন্ত এই কন্ডিশন সত্য থাকবে ততোক্ষণ পর্যন্ত লুপ চলবে।
এই শর্ত মিথ্যা হয়ে গেলে লুপ বন্ধ হয়ে যাবে। ।

তারপর আরেকটি সেমিকোলন (;) । এই সেমিকোলনের পর i=i+1 লেখা হয়েছে।
অর্থাৎ , প্রতিবার Hello World  প্রিন্ট করার পর i এর মান এক করে বাড়বে।


এবার চলো দেখে নেই উপরের প্রোগ্রামটি কিভাবে কাজ করছে।

প্রথমে  কম্পাইলার for লুপে আসার পর দেখবে for(i=1; ........)

একে বলা হয় "ইনিশিয়ালাইজড" (initialized) করা। সহজ কথায় i এর মান (কাউন্টার ভেরিয়েবল এর শুরুর মান) ঠিক করে দেওয়া।

তারপর কম্পাইলার i<=5 এইখানে আসবে, এবার চেক করবে i এর মান 5 এর চেয়ে ছোট বা সমান কি না?
যেহেতু i এর মান 1 এবং 1<=5 শর্তটি সত্য তাই for loop এর বডিতে আসবে।
{

     দুইটা দ্বিতীয় বন্ধনীর মধ্যবর্তী এই অংশকে বডি বলা হয়।
}

প্রথম অবস্থায় হয়তো মনে হতে পারে, i<=5 এর পর কম্পাইলার i=i+1 এই অংশে যাবে। কিন্তু না!
শর্ত সত্য হলে বডিতে আসবে এবং { } এর ভিতরের নির্দেশ অনু্যায়ী কাজ করবে।
বডির ভিতরে কমান্ড হলো printf("Hello World\n");

তাই একবার Hello World এই লেখাটা প্রিন্ট হবে।
 তারপর i=i+1 এ যাবে, এবং i  এর মান এক বেড়ে  1 থেকে 2  হবে।
এবার কম্পাইলার আর i=1 এই অংশে যাবে না। সরাসরি i<=5 এই অংশে চলে আসবে।
i=1  এই অংশটা শুধু মাত্র প্রোগ্রাম শুরুর পর প্রথম বার গ্রহণ হবে এবং i এর মান সেট হবে।


একবার লুপ ঘুরার পর যখন i=2 হবে তখন কম্পাইলার সরাসরি i<=5 এ আসবে , এবং পরীক্ষা করবে i এর মান 5 থেকে ছোট বা 5 এর সমান কি না ?


এখন i = 2 ; তাই i<=5 শর্তটি সত্য,   

তাই কম্পাইলার আবার for লুপের বডিতে আসবে এবং আবার প্রিন্ট হবে  Hello World. তারপর, i=i+1 হবে, এখন i এর মান 3. কম্পাইলার আবার কন্ডিশনে আসবে , এবং পরীক্ষা করবে  i<=5 কি না? যেহেতু i = 3 , এবং তা 5 এর চেয়ে ছোট তাই আবার প্রিন্ট হবে Hello World.

আবার, i=i+1 হবে, এখন i এর মান 4. কম্পাইলার আবার কন্ডিশনে আসবে , এবং পরীক্ষা করবে  i<=5 কি না? যেহেতু i = 4 , এবং তা 5 এর চেয়ে ছোট তাই আবার প্রিন্ট হবে Hello World.

এখন আবার, i=i+1 হবে, এখন i এর মান 5. কম্পাইলার আবার কন্ডিশনে আসবে , এবং পরীক্ষা করবে  i<=5 কি না? যেহেতু i = 5 , এবং তা 5 এর চেয়ে ছোট নয়, কিন্তু পাঁচ তো পাঁচ এর সমান, তাই এবার ও শর্ত সত্য এবং কম্পাইলার বডিতে যাবে,  এবন প্রিন্ট হবে Hello World.

এখন,  আবার, i =i+1 হবে, এখন i এর মান 6. কম্পাইলার আবার কন্ডিশনে আসবে , এবং পরীক্ষা করবে  i<=5 কি না?
যেহেতু,  i = 6 , এবং i এর মান 5 থেকে বড়, তাই এবার  i<=5 শর্তটি মিথ্যা। শর্তটি মিথ্যা হও্যার সাথে সাথে লুপ বন্ধ হয়ে যাবে।
কম্পাইলার return 0;  তে চলে আসবে এবনহ প্রোগ্রাম শেষ হয়ে যাবে।

Solution of If-else problem (part-2)




7.একটি অ্যালফাবেট VOWEL নাকি CONSONENT ? তা নির্ণয়ের প্রোগ্রাম লিখো।

#include <stdio.h>

int main()
{
    char ch;

    /* Input character from user */
    printf("Enter any character: ");
    scanf("%c", &ch);


    /* Condition for vowel */
    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.", ch);
    }
    else if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
    {
        /* Condition for consonant */
        printf("'%c' is Consonant.", ch);
    }
    else 
    {
        /*
         * If it is neither vowel nor consonant
         * then it is not an alphabet.
         */
        printf("'%c' is not an alphabet.", ch);
    }

    return 0;
}

8.যেকোন ক্যারেক্টার ইউজারের কাছ থেকে ইনপুট নাও। এবার ক্যারেক্টার টি  ALPHABET বা DIGIT বা Special Character  কিনা? তা নির্ণয়ের প্রোগ্রাম লিখো।
 
#include <stdio.h>

int main()
{
    char ch;

    /* Input character from user */
    printf("Enter any character: ");
    scanf("%c", &ch);


    /* Alphabet check */
    if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
    {
        printf("'%c' is alphabet.", ch);
    }
    else if(ch >= '0' && ch <= '9')
    {
        printf("'%c' is digit.", ch);
    }
    else 
    {
        printf("'%c' is special character.", ch);
    }

    return 0;
}


9.একটি অক্ষর বড় হাতের অক্ষর নাকি ছোট হাতের তা নির্ণয়ের প্রোগ্রাম লিখো।
#include <stdio.h>

int main()
{
    char ch;

    /* Input character from user */
    printf("Enter any character: ");
    scanf("%c", &ch);


    if(ch >= 'A' && ch <= 'Z')
    {
        printf("'%c' is uppercase alphabet.", ch);
    }
    else if(ch >= 'a' && ch <= 'z')
    {
        printf("'%c' is lowercase alphabet.", ch);
    }
    else
    {
        printf("'%c' is not an alphabet.", ch);
    }

    return 0;
}
10.ইউজারের কাছ থেকে ডলার ইনপুট নাও এবং টাকায় কনভার্ট করার প্রোগ্রাম লিখ। যদি ডলারের পরিমাণ $10 এর কম হয় তবে প্রতি ডলার ৮০ টাকা। আর যদি ডলারের পরিমাণ $5 এর বেশি হয় তবে প্রতি ডলার ৮৫ টাকা ধরে।

#include<stdio.h>
int main()
{
    int dollar;

    scanf("%d",&dollar);

    if (dollar<5)
    {
        printf("Taka = %d",dollar*80);
    }
    else
    {
        printf("Taka = %d",dollar*85);
    }
    return 0;
}


11. একটি ত্রিভুজ এর তিনটি কোণের মান ইনপুট নাও। এবং ত্রিভুজটি সবগুলা বাহু সমান কি না? তা নির্ণয়ের প্রোগ্রাম লিখো।



#include<stdio.h>

int main()

{

    int side1,side2,side3;



    scanf("%d %d %d",&side1,&side2,&side3);



    if((side1==side2) &&(side1==side3))

    {

        printf("All Sides are equal\n");

    }

    else

    {

        printf("Not equal\n");

    }

    return 0;

}
12. একজন ছাত্রের ৫ বিষয়ের পরীক্ষার নম্বর ইনপুট নাও।


  • যদি ৫ বিষয়ের নম্বরের গড় ৮০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও A+.
  • যদি ৫ বিষয়ের নম্বরের গড় ৭০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও A.
  • যদি ৫ বিষয়ের নম্বরের গড় ৬০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও A-.
  • যদি ৫ বিষয়ের নম্বরের গড় ৫০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও B.
  • যদি ৫ বিষয়ের নম্বরের গড় ৫০%  এর কম থাকে  তাহলে আউটপুট দেখাও    F .


#include
int main()
{
    int sub1,sub2,sub3,sub4,sub5;

    int sum,average;

    scanf("%d %d %d %d %d",&sub1,&sub2,&sub3,&sub4,&sub5);

    sum = sub1+sub2+sub3+sub4+sub5;
    average = sum/5;
    if(average>=80)
    {
        printf("A+\n");
    }
   else if(average>=70)
    {
        printf("A\n");
    }
   else if(average>=60)
    {
        printf("A-\n");
    }
   else if(average>=50)
    {
        printf("B\n");
    }
    else
    {
        printf("Fail\n");
    }
    return 0;
}



Solution of If-else problem (part-1)





Problem-1:
তিনটি সংখ্যার মধ্যে বড় সংখ্যা নির্ণয়ের প্রোগ্রাম লিখো।
Solution:

#include <stdio.h>

int main()
{
    int num1, num2, num3, max;

    /* Input three numbers from user */
    printf("Enter three numbers: ");
    scanf("%d%d%d", &num1, &num2, &num3);
    

    if(num1 > num2)
    {
        if(num1 > num3)
        {
            /* If num1 > num2 and num1 > num3 */
            max = num1;
        }
        else
        {
            /* If num1 > num2 but num1 > num3 is not true */
            max = num3;
        }
    }
    else
    {
        if(num2 > num3)
        {
            /* If num1 is not > num2 and num2 > num3 */
            max = num2;
        }
        else
        {
            /* If num1 is not > num2 and num2 > num3 */
            max = num3;
        }
    }
    
    /* Print maximum value */
    printf("Maximum among all three numbers = %d", max);

    return 0;
}

2.একটি সংখ্যা পজেটিভ , নেগেটিভ নাকি জিরো তা নির্ণয় করো।

#include <stdio.h>

int main()
{
    int num;
    
    /* Input number from user */
    printf("Enter any number: ");
    scanf("%d", &num);
    

    if(num > 0)
    {
        printf("Number is POSITIVE");
    }
    if(num < 0)
    {
        printf("Number is NEGATIVE");
    }
    if(num == 0)
    {
        printf("Number is ZERO");
    }

    return 0;
}
 
3.কোন সংখ্যাকে ৫ ও ১১ দিয়ে ভাগ করা যাবে কি না? তা নির্ণয়ের প্রোগ্রাম লেখো।

#include <stdio.h>

int main()
{
    int num;

    /* Input number from user */
    printf("Enter any number: ");
    scanf("%d", &num);


    /*
     * If  num modulo division 5 is 0 
     * and num modulo division 11 is 0 then
     * the number is divisible by 5 and 11 both
     */
    if((num % 5 == 0) && (num % 11 == 0))
    {
        printf("Number is divisible by 5 and 11");
    }
    else
    {
        printf("Number is not divisible by 5 and 11");
    }

    return 0;
}

4.কোন সংখ্যা জোড় কি বেজোড় তা নির্ণয়ের প্রোগ্রাম লিখো।



#include <stdio.h>

int main()
{
    int num;

    /* Input number from user */
    printf("Enter any number to check even or odd: ");
    scanf("%d", &num);
    
    /* Check if the number is divisible by 2 then it is even */
    if(num % 2 == 0)
    {
        /* num % 2 is 0 */
        printf("Number is Even.");
    }
    else
    {
        /* num % 2 is 1 */
        printf("Number is Odd.");
    }

    return 0;
}

5.একটি বছর লিপ ইয়ার কি না? তা নির্ণয়ের প্রোগ্রাম লিখো।





#include <stdio.h>

int main()
{
    int year;

    
    printf("Enter a year: ");
    scanf("%d", &year);
    
    
    if((year % 4 == 0)&&(year%200 !=0) ||(year%400==0))
    {
       
        printf("%d is a Leap Year.",year);
    }
    else
    {
        
        printf("%d is not a leap year",year);
    }

    return 0;
}
 
 
6.একটি ক্যারেক্টার অ্যালফাবেট কি না? তা নির্ণয়ের প্রোগ্রাম লিখো।

#include <stdio.h>

int main()
{
    char ch;
    
    /* Input a character from user */
    printf("Enter any character: ");
    scanf("%c", &ch);
    

    if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
    {
        printf("Character is an ALPHABET.");
    }
    else
    {
        printf("Character is NOT ALPHABET.");
    }

    return 0;
}


Monday, 4 September 2017

ইফ এলস নিয়ে কিছু সহজ সমস্যা!! (IF ELSE Exercise)





  1.  তিনটি সংখ্যার মধ্যে বড় সংখ্যা নির্ণয়ের প্রোগ্রাম লিখো।
  2. একটি সংখ্যা পজেটিভ , নেগেটিভ নাকি জিরো তা নির্ণয় করো।
  3.  কোন সংখ্যাকে ৫ ও ১১ দিয়ে ভাগ করা যাবে কি না? তা নির্ণয়ের প্রোগ্রাম লেখো।
  4. কোন সংখ্যা জোড় কি বেজোড় তা নির্ণয়ের প্রোগ্রাম লিখো। 
  5. একটি বছর লিপ ইয়ার কি না? তা নির্ণয়ের প্রোগ্রাম লিখো।
  6.  একটি ক্যারেক্টার অ্যালফাবেট কি না? তা নির্ণয়ের প্রোগ্রাম লিখো।
  7. একটি অ্যালফাবেট VOWEL নাকি CONSONENT ? তা নির্ণয়ের প্রোগ্রাম লিখো।
  8. যেকোন ক্যারেক্টার ইউজারের কাছ থেকে ইনপুট নাও। এবার ক্যারেক্টার টি  ALPHABET বা DIGIT বা Special Character  কিনা? তা নির্ণয়ের প্রোগ্রাম লিখো।
  9. একটি অক্ষর বড় হাতের অক্ষর নাকি ছোট হাতের তা নির্ণয়ের প্রোগ্রাম লিখো।
  10. ইউজারের কাছ থেকে টাকা ইনপুট নাও এবং ডলারে কনভার্ট করার প্রোগ্রাম লিখ। যদি ডলারের পরিমাণ $10 এর কম হয় তবে প্রতি ডলার ৮০ টাকা। আর যদি ডলারের পরিমাণ $5 এর বেশি হয় তবে প্রতি ডলার ৮৫ টাকা ধরে। 
  11. একটি ত্রিভুজ এর তিনটি কোণের মান ইনপুট নাও। এবং ত্রিভুজটি সবগুলা বাহু সমান কি না? তা নির্ণয়ের প্রোগ্রাম লিখো।
12. একজন ছাত্রের ৫ বিষয়ের পরীক্ষার নম্বর ইনপুট নাও।


  • যদি ৫ বিষয়ের নম্বরের গড় ৮০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও A+.
  • যদি ৫ বিষয়ের নম্বরের গড় ৭০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও A.
  • যদি ৫ বিষয়ের নম্বরের গড় ৬০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও A-.
  • যদি ৫ বিষয়ের নম্বরের গড় ৫০%  এর সামান বা  উপরে থাকে  তাহলে আউটপুট দেখাও B.
  • যদি ৫ বিষয়ের নম্বরের গড় ৫০%  এর কম থাকে  তাহলে আউটপুট দেখাও    F .

প্রোগ্রামে অপারেটরের ব্যবহার

আমরা আগের পোস্টে অপারেটর নিয়ে আলোচনা করেছিলাম। আজকে আমরা লজিক্যাল অপারেটর ব্যবহার করে কিছু প্রোগ্রাম দেখবো।

আমরা নেস্টেড ইফ এলস ব্যবহার করে ৩ টি সংখ্যা থেকে বড় সংখ্যা নির্ণয় করেছিলাম। program 3.1 এ।




বোঝার সুবিধার্তে আমি আগের প্রোগ্রামটি আবার হুবহু তুলে ধরছি ।


#include <stdio.h>

int main()
{
    /* ৩ টি ইন্টজার ভেরিয়েবল ডেক্লিয়ার */
    int num1, num2, num3;

    /* ইউজারের কাছ থেকে ইনপুট গ্রহণ */
    printf("Enter three numbers: ");
    scanf("%d%d%d", &num1, &num2, &num3);

    if(num1 > num2)
    {
        if(num1 > num3)
        {
            /* যদি num1>num2 এবং num1>num3 হয় */
            printf("Num1 is max.");
        }
        else
        {
            /* যদি num1>num2 হয় কিন্তু num1<num3 হয় */
            printf("Num3 is max.");
        }
    }
    else
    {
        if(num2 > num3)
        {
            /* যদি num1<num2 হয় এবং num2>num3 */
            printf("Num2 is max.");
        }
        else
        {
            /* যদি num1<num2 এবং num2<num3 */
            printf("Num3 is max.");
        }
    }

    return 0;
}
এই প্রগ্রামটি আমরা && অপারেটর ব্যবহার করেও করতে পারি।

#include<stdio.h>
int main()
{
   int num1,num2,num3;
   scanf("%d %d %d",&num1,&num2,&num3);

   if(num1>num2 && num1>num3)
   {
       printf("Num1 is max");
   }
   else if(num2>num1 && num2>num3)
   {
       printf("Num2 is max");
   }
   else
   {
       printf("Num3 is max");
   }
   return 0;
}
 
উপরের দুইটা প্রোগ্রামের কাজ একই। প্রথম প্রোগ্রামে (3.1) এ আমরা নেস্টেড কন্ডিশন ব্যবহার করেছি। কিন্তু প্রোগ্রাম (3.2) তে আমরা && (অ্যান্ড অপারেটর) ব্যবহার করে দুটি শর্ত একসাথে জোড়ে দিয়েছি। && এর পুর্বের এবং পরের দুইটি শর্ত সত্য হলেই তার পরের { } এর ভিতরের কাজ করবে। কোন একটি শর্ত মিথ্যা হলেই কম্পাইলার পরবর্তী ধাপে চলে যাবে। এবার দেখে নেই কিভাবে উপরের প্রোগ্রামটি (3.2) কাজ করছে।



  • মনেকরি,  num1 = 10, num2 = 20, num3 = 15
  •  কম্পাইলার  if(num1>num2 && num1>num3) এ আসার পর দেখবে num1>num2 এই অংশটা মিথ্যা num1>num3 এই অংশটাও মিথ্যা তাই এখানে কোন কাজ করবে না। else if  এ চলে যাবে।
  •  else if এ আসার পর (num2>num1 && num2>num3) এই কন্ডি↕শন চেক করবে। এবার দেখবে num2>num1 এই অংশ সত্য আবার num2>num3 এই অংশ ও সত্য। তাই { } এর ভিতরের কাজ করবে।
এরপর কম্পাইলার return 0; তে আসবে এবং প্রোগ্রাম বন্ধ হয়ে যাবে।


এবার আরেকটি প্রোগ্রাম দেখিঃ

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

   if(b>a && b>c)
   {
       printf("b is max");
   }
   else if(a>b && a>c)
   {
       printf("a is max");
   }
   else
   {
       printf("c is max");
   }
   return 0;
}
এখন তুমি বলো উপরের প্রোগ্রামের আউটপুট কী হবে?


  •  if(b>a && b>c)  এই লাইনে আসার পর কম্পাইলার দেখবে b>a কন্ডিশনের এই অংশটি সত্য। কিন্ত্য && এর পর b>c এই অংশটি মিথ্যা কারণ 10 তো 15 এর চেয়ে বড় নয়। তাই একটি মিথ্যা হওয়ার কারণে কম্পাইলার  এখানে কোন কাজ করবে না। && অপারেটরের উভয় পাশের শর্ত সত্য হলেই শুধুমাত্র কমান্ড গ্রহণ করবে।
  •   এবার কম্পাইলার else if এ চলে আসবে দেখবে , a>b শর্তটি মিথ্যা a>c শর্তটিও মিথ্যা কম্পাইলার এবার ও এখানে কোন কাজ করবে না।
  •   else এ চলে আসবে এবং { } এর ভিতরের নির্দেশ মতো কাজ করবে।


এবার আমরা আরেকটা অপারেটর নিয়ে কাজ করবো। একে বলা হয় অর অপারেটর। ( ।। )  পাশাপাশি দুইটা লম্বা দাড়ি একসাথে দিলে যেমন হয় অনেকটা সেরকম। অর অপারেটর এর দুইপাশের যেকোন একটি শর্ত সত্য হলেই সেটি নির্দেশ অনুসরণ করে কাজ করে।

 

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

   if(a==5 || b==5)
   {
       printf("This is 5\n");
   }
   else
   {
      printf("This is 10\n);
   } 
   return 0;
}
উপরের প্রোগ্রামের আউটপুট কী হবে বলো তো?
যেহেতু a==5 এই শর্তটি সত্য তাই || এর পর b==5 এই শর্ত মিথ্যা হওয়ার পরও আউটপুট আসবে

This is 5

এতক্ষণে নিশ্চয়ই অপারেটর , নেস্টেড ইফ এলস এবং ইফ এলস নিয়ে আর কোন শংশয় নেই।

তারপর ও কোন কিছু না বোঝলে কমেন্ট করবে।আগামী পর্বে থাকবে কিছু সহজ সমস্যা।

happy Coding ☺😎

অপারেটর দিয়ে অপারেশন (অপারেটর পরিচিতি)

টাইটেল দেখে কি কিছুটা আশর্য হয়েছো? না তোমাকে এবার কোন ডক্তারি অপারেশন করতে হবে না। তবে প্রোগ্রামিং এর কিছু অপারেশন আমরা করবো। আর মজার ব্যাপার হলো তোমরা আলরেডি অনেক অপারেশন করে ফেলেছো।



সি তে অনেকগুলা অপারেটর আছে।

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

সি প্রোগ্রামিং এ &&, || এবং ! অপারেটরসমূহকে লজিক্যাল(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

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

সি প্রোগ্রামিং এ রিলেশনাল অপারেটর(relational operator) দুটি অপারেন্ডের মধ্যে সম্পর্ক যাচাই করে।
অপারেটর অপারেটরের অর্থ উদাহরণ(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

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

ভ্যারিয়েবলে ভ্যালু এসাইন করা বা জমা রাখার জন্য এসাইনমেন্ট(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

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

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

Sunday, 3 September 2017

লজিক্যাল স্টেটমেন্ট (NESTED IF-ELSE)

গত পর্বের দেওয়া প্রোগ্রামগুলো আশা করি সবাই efficient  করে নতুনভাবে করেছো। আজকে আমরা আলোচনা করবো নেস্টেড ইফ এলস নিয়ে।



Nested if-else কি?
নাম শুনে কঠিন মনে হলেও আসলে এটা তেমন কিছু না। একটা if কিংবা else if অথবা else এর ভিতরে আরেকটা  if কিংবা else if অথবা else বসিয়ে দিলেই তা নেস্টেড হয়ে যায়।

নিচের প্রোগ্রামটি দেখোঃ

#include <stdio.h>

int main()
{
    /* ৩ টি ইন্টজার ভেরিয়েবল ডেক্লিয়ার */
    int num1, num2, num3;

    /* ইউজারের কাছ থেকে ইনপুট গ্রহণ */
    printf("Enter three numbers: ");
    scanf("%d%d%d", &num1, &num2, &num3);

    if(num1 > num2)
    {
        if(num1 > num3)
        {
            /* যদি num1>num2 এবং num1>num3 হয় */
            printf("Num1 is max.");
        }
        else
        {
            /* যদি num1>num2 হয় কিন্তু num1<num3 হয় */
            printf("Num3 is max.");
        }
    }
    else
    {
        if(num2 > num3)
        {
            /* যদি num1<num2 হয় এবং num2>num3 */
            printf("Num2 is max.");
        }
        else
        {
            /* যদি num1<num2 এবং num2<num3 */
            printf("Num3 is max.");
        }
    }

    return 0;
}
উপরের প্রোগ্রামে  scanf   পর্যন্ত নিশ্চয় বোঝতে পারছো। ধরে নেই ইউজার num1 = 5     num3 = 15  num2 = 10     ইনপুট দিয়েছেন।

  • প্রথমে কম্পাইলার বাইরের if কন্ডিশন (শর্ত) -> if(num1 > num2) চেক করবে। যেহেতু num1=5 এবং num2=10,সুতরাং num1>num2 এই শর্তটি মিথ্যা।
  • তাই কম্পাইলার এই if এ কোন কাজ করবেনা সম্পূর্ণ if ব্লকের পরে বাইরের else এ চলে যাবে।
  • এখন কম্পাইলার বাইরের else  কন্ডিশন (শর্ত) এ আসবে। তার পর else এর ভিতরের if(num2 > num3) চেক করবে। যেহেতু num2 = 10 এবং num3 = 15,সুতরাং num2 > num3 এই শর্তটি ও মিথ্যা হবে।
  • সুতরাং বাইরের else এর ভিতরের if মিথ্যা হবে, এখন কম্পাইলার ভিতরের else এ চলে যাবে।
  • এই else এ আসার পর দেখবে শুধু   printf("Num3 is max.");   এই স্টেটমেন্ট দেওয়া আছে। তাই আউটপুট আসবে   Num3 is max.
  •  কম্পাইলার return 0;  তে চলে যাবে , এবং প্রোগ্রাম শেষ হয়ে যাবে।
আশাকরি , বোঝতে পেরেছো। আর যদি কোন সমস্যা হয় তাহলে অবশ্যই কমেন্ট করবে।