26 October, 2017

URI 1038 snack Solve

Problem: URI snack 1038:

Solve:

/* URI snack 1038*/

#include<stdio.h>
void main()
{
    int product_code,quantity;
    float total;
    scanf("%d %d",&product_code,&quantity);
    total = product_code*quantity;
    if(product_code == 1 )
    {
        total = 4.00 * quantity;
        printf("Total: R$ %0.2f\n",total);
    }
    else if (product_code == 2 ){
        total = 4.50 * quantity;
        printf("Total: R$ %0.2f\n",total);
    }
    else if (product_code == 3 ){
        total = 5.00 * quantity;
        printf("Total: R$ %0.2f\n",total);
    }
    else if (product_code == 4 ){
        total = 2.00 * quantity;
        printf("Total: R$ %0.2f\n",total);
    }
     else if (product_code == 5 ){
        total = 1.50 * quantity;
        printf("Total: R$ %0.2f\n",total);
    }

}

17 October, 2017

Programming,Web Developing & Software Engineering : Beginners Confusions From a Beginner

“ Hello World ” ; আসসালামু আলাইকুম।সবাইকে শুভেচ্ছা।আমি সানোয়ারুল ইসলাম, বেগম রোকেয়া ইউনিভার্সিটিতে ইলেকট্রনিক্স এন্ড টেলিকমিউনিকেশন ইঞ্জিনিয়ারিং-এ পড়ছি।আমি আজকে প্রোগ্রামিং ,ওয়েব ডেভেলপিং এবং সফটওয়ার ইঞ্জিনিয়ারিং ফিল্ডে একেবারে শুরুর দিকে আমরা বিগিনাররা যে সকল কনফিউশনে ভুগি সে সকল কনফিউশন নিয়ে আমার সামান্য অভিজ্ঞতার আলোকে কিছু বলব।
নতুন অবস্থায় আমাদের সবার মধ্যে যে কনফিউশনটা কাজ করে তা হলোঃ আমি তো কম্পিউটার সায়েন্সে পড়ি না, আমি কি একা একা কোডিং শিখতে পারবো? একাই শিখে কি ওয়ার্ল্ড ক্লাস ওয়েব ডেভেলপার বা সফটওয়ার ইঞ্জিনিয়ার হতে পারবো? সম্ভব? এর উত্তরে বলা যায়ঃ প্রোগ্রামিং বা কোডিং কিন্তু একটা স্কিল, এটাকে আমরা মিউজিকের সাথে তুলনা করতে পারি।মিউজিকে যেমন ইন্সট্রুমেন্ট সমন্ধে কিছু ধারনা থাকতে হয়, এবং প্রাকটিস করে করে এবং অভিজ্ঞতা অর্জনের পর ওয়ার্ল্ড ক্লাস মিউজিক ক্রিয়েট করতে পারা যায় ঠিক সেভাবেই প্রোগ্রামিংয়েও বিভিন্ন টুলস যেমনঃ প্রোগ্রামিং ল্যাঙ্গুয়েজ, বিভিন্ন ফ্রেমওয়ার্ক,লাইব্রেরী ইত্যাদি ইত্যাদি ব্যাবহার করে অভিজ্ঞতা অর্জের মাধ্যমেই ওয়ার্ল্ড ক্লাস ওয়েবসাইট, ওয়েব এপ্লিকেশন ও সফটওয়ার তৈরী করতে পারা যায়। তাই বলা যায়ঃ প্রোগ্রামিং এর জন্য আসলে কম্পিউটার সায়েন্সে পড়তেই হবে এমন কোন বাধ্যবাধকতা নাই।তবে, এই ফিল্ডে আসার জন্য অবশ্যই কঠোর পরিশ্রম করার ইচ্ছা থাকা চাই। প্রব্লেম সলভিংয়ে সময় দেয়ার ইচ্ছা থাকা চাই।ওয়ান ক্লিকে এত ডলার কামাই করা আর সফটওয়ার ইঞ্জিনিয়ারিং এক কথা না।এর জন্য প্যাশন থাকতে হয়।বিষয়টা ফিল করতে হয়।পরিবার, বন্ধু মহলের পাশাপাশি নিজের অনেক শখ আহ্লাদকে সেক্রিফাইজ করতে হয়।
১। প্রথমতঃ যে সমস্যাটা হয় সেটা হলঃ কোন ল্যাঙ্গুয়েজটা দিয়ে শেখা শুরু করব? - বেশীর ভাগ এক্সপার্টের মতে, এবং আমি নিজেও যতটুকু শিখেছি তাতে মনে করি নতুনরা যারা সত্যিই প্রোগ্রামিং শিখতে আগ্রহী তাদের অবশ্যই ‘সি’ ল্যাঙ্গুয়েজ দিয়ে শুরু করা উচিত।এতে নতুনরা মেমোরি, টাইম কম্পেক্সিটি,রান টাইম ইত্যাদি সম্পর্কে সর্বপরি সিনট্যাক্সের ক্ষেত্রে সতর্কতা জিনিসটা কি শিখতে পারবে।কারনঃ সি কেস সেনসেটিভ।অর্থাৎঃ "Hello" আর “HELLO" কিন্তু সি ল্যাঙ্গুয়েজে আলাদা জিনিস।’সি’ দিয়ে কেন শুরু করা উচিত এ সম্পর্কে জানতে গুগল করতে পারো। দ্বিতীয়তঃ শেখার সময় কোন আইডিই,এডিটর ও প্লাটফর্ম ইউজ করব? - এর উত্তরে বলবঃ আমরা যেহুতু উইন্ডোজের সাথে মোটামুটি পরিচিত, সুতরাং ‘নতু্ন কিছু’ ট্রাই করার জন্যই বলো আর শেখার জন্যই বলো আমার পরামর্শ থাকবে ‘লিনাক্স’ ট্রাই করার জন্য। এটা সম্পূর্ণ ফ্রি এবং ওপেন সোর্স। তুমি ইচ্ছে করলেই তোমার অপারেটিং সিস্টেমে নতুন কিছু যুক্ত করতেও পারবে।এ রকম হাজারো এডভান্টেজ আছে ‘লিনাক্স’-এর নেটে ঘাটলেই পাওয়া যায়।তৃতীয়তঃ ‘সি’ শেখার পাশাপাশি ‘ডিস্ক্রিট ম্যাথমেটিকস’ শেখা শুরু করে দিতে হবে।এবং এমন ভাবে শিখতে হবে যাতে পরবর্তীতে এগুলোর কন্সেপ্ট গুলো প্রোগ্রামে কাজে লাগানো যায়।
২। ‘সি’ এর ব্যাসিক সিনট্যাক্স শিখেই কোন একটা অনলাইন জাজে ( যেমনঃ URI OJ , UVA , Light OJ ) প্রব্লেম সলভ করা শুরু করে দিতে হবে। শুরুর দিকের কিছু প্রব্লেম সলভ করতে পারলেও পরে গিয়ে একটু হোচট খেতে হয়।এর জন্য আসলে ম্যাথমেটিকাল ও নিজের লজিক ডেভেলপ করেতে হবে। এর জন্য ‘ডাটা স্ট্রাকচার ও এলগরিদম’-এর কিছু বই/টিউটরিয়াল ঘেটে মোটামুটি ব্যাসিক বিষয় গুলো শিখে নিতে হবে। এবং এগুলো ইমপ্লিমেন্ট করতে জানতে হবে খুউউউব-ই ভালো করে।তারপর আবার অনলাইন জাজে প্রব্লেম সলভ করতে হবে এগুলো ব্যাবহার করে। আসতে আসতে নিজের ভেতর ‘প্রোগ্রামিং’ সত্ত্বা জেগে ওঠা শুরু করে দিবে এই পর্যায়ে।প্রব্লেম সল্ভের মজা পেয়ে গেলে , একটা প্রব্লেম নিয়ে ঘন্টার পর ঘন্টা কাটানোর পর সল্ভ এর আনন্দ পেতে পেতে হয়তঃ এডভানসড লেভেলের সলভার ও হয়ে যেতে পারো।আর যদি মনে কর আমি মোটামুটি ব্যসিক জিনিস গুলো শিখে ফেলছি । বুঝতে পারতেছি যে কিভাবে, কোন ওয়ে তে একটা প্রব্লেম সলভ করেতে হয়।এখন আমি ডিরেক্ট ডেভেলপমেন্টে যেতে চাই।সেটাও করতে পারো।
৩। এখন সফটওয়ার ডেভেলপমেন্টের জন্য যা শিখতে হবে তা হলঃ ‘অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং’ । এর জন্য ‘জাভা’ , ‘পাইথন’, বা ‘সি++’ শেখা যেতে পারে।আমার পরামর্শ থাকবে ‘জাভা’ ট্রাই করার জন্য। কারন , হালের ‘এন্ড্রয়েড’ অপারেটিং সিস্টেমের প্রায় সব এপ্লিকেশন-ই ‘জাভা’ ল্যাঙ্গুয়েজ দিয়ে বানানো।তাই ‘জাভা’ শেখার পর সরাসরি এন্ড্রোয়েড ডেভেলপিং এ যেতে পারবে।এর পর নিজেই বুঝতে পারবে কিভাবে কোন প্লাটফর্মের জন্য কোন পথে যেতে হবে।যেমনঃ এর পর যদি ‘আইওএস’ ডেভেলপমেন্টে যেতে চাও তাহলে ‘অব্জেক্টিভ সি’ বা ‘সুইফট’ ল্যাঙ্গুয়েজ শিখতে হবে।গেম ( ইউনিটি) সহ মাইক্রোসফট বেজড ডেভেলপমেন্টের দিকে যেতে চাইলে ‘সি শার্প’ ইত্যাদি শিখে নিতে পারবে।এ ছাড়াও ‘পাইথন’ ও শেখা যেতে পারে,এটা একটা পপুলার অবজেক্ট অরিয়েন্টেড ও স্ক্রিপ্টিং ল্যাঙ্গুয়েজ , হ্যাকিং শিখতেও অনেক কাজে লাগে।
৪। ওয়েব ডেভেলপমেন্ট এর জন্য যা জানতে হবেঃ ফ্রন্ট-এন্ডের জন্যঃ -HTML & CSS ( Bootstrap, W3.CSS etc. ) -Java Script ( jQuery, Angular.JS , JSON, AJAX, W3.JS etc. ) ব্যাক-এন্ডের জন্যঃ -PHP -SQL -Node.JS -ASP.NET -XML -Django এদের সব গুলোই যে শিখতে হবে তা নয়।ফ্রন্ট এন্ডের জন্য এইচটিএমএল এবং সিএসএস শিখতে হবে সাথে সিএসএস ও এদের বিভিন্ন লাইব্রেরী ও ফ্রেমওয়ার্ক গুলোর ব্যাবহার জানতে হবে অপর দিকে ব্যাক-এন্ডের জন্য যদি কেউ PHP শিখে তাহলে তার উচিত সেটাই ভালো করে শেখা।একই জিনিস PHP, ASP.NET , Node.JS দিয়ে করতে পারার চাইতে PHP দিয়ে যা ইচ্ছা তাই করার ক্ষমতা অর্জনের চেষ্টা করা উচিত।অর্থাৎ ব্যাক-এন্ডের জন্য একটা ল্যাঙ্গুয়েজ সিলেক্ট করে ( PHP টাই শেখা ভালো হবে) সেটা অনেক ভালো করে ইউজ করতে পারতে হবে।
৫। প্রোগ্রামিং কম্পিটিশন ছাড়া প্রোগ্রামার হওয়ার উপায় কি? -প্রোগ্রামিং কম্পিটিশন ছাড়াও ওপেন সোর্স প্রজেক্ট যেমনঃ GIT HUB এর বিভিন্ন ওপেন সোর্স প্রজেক্টে কন্ট্রিবিউশন করে ( যেমনঃ বাগ ফিক্সিং করে, বা কোন এক্সিসটিং প্রজেক্টে নতুন ও ইন্টারেস্টিং কোন ফিচার যুক্ত করে... ইত্যাদি) এবং অন্যের কোড এনালাইসিস করে শিখতে শিখতে মাস্টারি অর্জন করা সম্ভব।আর সেভাবে কন্ট্রিবিউশন রাখতে পারলে যে বা যারা প্রজেক্টের এডমিনিসট্রেটর আছেন তারা আপনাকেও তাদের প্রজেক্টে এড করে নেবে।পরবর্তীতে আপনি জবের ইন্টারভিউতে আপনার একাউন্টের লিংক ধরাই দিয়ে বলতে পারবেন আমি অমুক অমুক প্রজেক্টে এই এই কন্ট্রিবিউশন রাখছি।এপ স্টোরে ছোট্ট হোক বড় হোক বিভিন্ন এপ পাবলিশ করে নিজের কারিশমা দেখাই দিতে হবে।সফটওয়ার ইঞ্জিয়ারিং এর জবের ক্ষেত্রে এটা অনেক প্রভাব রাখে।যাই শিখি না কেন তা নিজের এপে ইমপ্লিমেন্ট করার ট্রাই করা উচিত।
আমি নিজেও কেবল শিখছি, কিচ্ছু পারি না বলা যায়। তাই আমার কন্সেপ্ট গুলোয় ভূল থাকা খুব স্বাভাবিক।ভূল থাকলে ধরিয়ে দেয়ার অনুরোধ করছি। আপনি থেকে তুমি,তুমি থেকে আপনি-র জন্য দুঃখিত।রিলেটেড কোন প্রশ্ন থাকলে করতে পারেন।জবাব দেয়ার চেষ্টা করব ইনশা আল্লাহ। ধন্যবাদ। You know, Peter Norvig told: “Teach Yourself Programming in Ten Years” So, no tension friends!. Click here for that popular writing on Programming carrier guideline & Follow: Sanoarul’s Blog #MidnightCoder

23 August, 2017

Understanding Stack with C

Stack: Stack is a linear data structure which follows a particular order in which the operations are performed. The order may be LIFO (Last In First Out) or FILO (First In Last Out).
Mainly the following three basic operations are performed in the stack:

  • Push: Adds an item in the stack. If the stack is full, then it is said to be an Overflow condition.
  • Pop: Removes an item from the stack. The items are popped in the reversed order in which they are pushed. If the stack is empty, then it is said to be an Underflow condition.
  • Peek or Top: Returns top element of stack.
  • isEmpty: Returns true if stack is empty, else fals.   
          

Figure: Stack operations

Here is a code,will be helpful to understanding operations of Stack.

#include<stdio.h>
#define N 10
int stack[N],top=-1;over=0;under=0;

int push(int n)
{
    if(top>=N-1)
    {
        printf("Overflow.\n");
        return over=1;
    }
    else stack[++top]=n;
}
int pop()
{
    if(top==-1)
    {
        printf("Underflow.\n");
        return under=1;
    }
    return stack[top--];
}
int main()
{
    int choice,n,i,item;
    for(;;)
    {
        printf("Select an operation\n1.Push\n2.Pop\n3.Show\n4.Exit\n");
        scanf("%d",&choice);
        if(choice==1)
        {
            printf("How many number you want to insert:\n");
            scanf("%d",&n);
            printf("Please enter number:\n");
            for(i=0;i<n;i++)
            {
                scanf("%d",&item);
                if(over==1)
                    break;
                push(item);
            }
        }
        else if(choice==2)
        {
            printf("How many number you want to delete:\n");
            scanf("%d",&n);
            for(i=0;i<n;i++)
            {
                pop();
                if(under==1)
                    break;
                printf("Deleted: %d\n",stack[top+1]);
            }
        }
        else if(choice==3)
        {
            if(top==-1)
                printf("Stack is empty.\n");
            else {
                printf("Stack is:\n");
                for(i=0;i<=top;i++)
                {
                    printf("%d\n",stack[i]);
                }
            }
        }
        else if(choice==4)
            break;
        else printf("Wrong choice!!");

    }
}

run these codes on your machine and insert choices to stack operations.
Thank you guys!!

17 June, 2017

প্রবলেম সলভিং ( Time Conversion || URI Online Judge 1019 )

আসাসালামু আলাইকুম। আমি সানোয়ারুল ইসলাম। এই টিউটোরিয়ালে আমি জনপ্রিয় অনলাইন জাজ URI এর একটি বিখ্যাত এবং তুলনামূলক সহজ প্রব্লেম Time Conversion | 1019  এর এলগরিদম নিয়ে আলোচনা করব।
(১) প্রথমেই আমরা প্রব্লেম টা ভালো ভাবে পড়ে নেই। ইনপুট এবং আউটপুটে কি চাচ্ছে সেটা দেখি। অনলাইন জাজে প্রব্লেম সলভ করতে ইনপুট ও আউটপুটে কি চাচ্ছে সেটা ভালো ভাবে বোঝা প্রয়োজন। প্রয়োজনীয় ভেরিয়েবল ডিক্লেয়ার করে নিই । এখানে int ডাটা টাইপের  year,month,day,input,reminder_1 ভেরিয়েবল গুলো ডিক্লায়ার করা হলো । অন্য নামেও করতে পারেন আপনারা ।
(২)  scanf() ইউজ করে ইউজারের থেকে আমরা input নামের ভেরিয়েবলের মানটা নিবো ।
(৩) ইনপুটে ইউজারের দেয়া সংখ্যাটা  ( input ) কে ৩৬৫ দিয়ে ভাগ করে যা পাবো সেটা year এর জন্য নির্ধারন করে দেব। আবার reminder_1 ভেরিয়েবলে ওই দিন সংখ্যাকে ৩৬৫ দিয়ে ভাগ করলে যেই ভাগশেষ থাকে সেটা বলে দেব। রিমাইন্ডার অপারেটর ( % )  ইউজ করে। যাকে (reminder_1) আবার ৩০ দিয়ে ভাগ করলে আমরা month পাবো। আবার, reminder_1 ভেরিয়েবল কে ৩০ দিয়ে ভাগ করলে যে ভাগ শেষ থাকবে তাই হবে day
(৪) printf() ইউজ করে আমরা যেভাবে আউটপুট টা চাওয়া হয়েছে , সেভাবে আউটপুটের জন্য কোড করব।
এক্ষেত্রে ফরম্যাট স্পেসিফায়ার , স্পেস , নিউ লাইন ইত্যাদি বিষয় খুবই গুরুত্ব সহকারে খেয়াল রাখতে হবে। যাতে যেভাবে চাওয়া হয়েছে , ঠিক সেভাবেই আউটপুট টা শো করে প্রোগ্রাম টা। বিশেষ করে নিউ লাইন  '\n' প্রিন্টের কথা ভূলে যাওয়া চলবে না। নাহলে কিন্তু Presentation Error!! দেখাবে। যদিও সব কিছু ঠিকই আছে বলে মনে হবে ।

Final Code :

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

      int input,day,month,year,reminder_1,rem2;
      scanf("%d",&input);

      year = input / 365;
      reminder_1=  input % 365;

      month = reminder_1 / 30;
      day  = reminder_1 % 30;

      printf("%d ano(s)\n",year);
      printf("%d mes(es)\n",month);
      printf("%d dia(s)\n",day);

      return 0;
  }



কোন ফিডব্যাক থাকলে কমেন্ট বক্সে জানাবেন। টিউটোরিয়াল টি দেখার জন্য ধন্যবাদ ।

31 May, 2017

First program in C++ language

Here is the first C++ program that will show the "Hello World" output to us.For executing this code on your machine,you have to a compiler that can execute C++ code.Use gcc compiler or other for execute your C++ code.you can use CodeBlock that is a IDE (Integrated Development Environment) provides Editing,Compiling and Executing the codes at one place without suffering.or download the gcc on your machine. I'm using LINUX environment,so for executing this C++ code i am gonna save it with .cpp extension and run the following commands in the saving directory...


g++ demo.cpp -o demo

and after the code being compiled,i am gonna execute that code by following command :


./demo

Here is the C++ code for showing "Hello World" output :

#include <iostream>
using namespace std;
int main()
{
   cout << "Hello World";
   return 0;
}

Solution of URI Online Judge | 1014 Consumption

Hey!! there today we gonna solve a very interesting problem (URI Online Judge | 1014 Consumption). here is the solution of this problem :

  #include<stdio.h>
  int main()
  { 
 int x;
 float y,km_perL;
 scanf("%d %f",&x,&y);
 km_perL=x/y;
 printf("%.3f km/l\n",km_perL);
 
 return 0;
  }