Ads

Monday, March 23, 2015

জাভা প্রোগ্রামিং :: ইনহেরিটেন্স (টিউন-১৩)

আসসালামু আলাইকুম। কেমন আছেন সবাই। আজকে আমরা যে জিনিসটি নিয়ে আলোচনা করব তা হল জাভাতে ইনহেরিটেন্স। যেকোন অব্জেক্ট অরিয়েন্টেড প্রোগ্রামিং লাংগুয়েজেই এই জিনিসটি অনেক গুরুত্যপুর্ন।

ইনহেরিটেন্স বলতে বুঝায় উত্তরাধিকারি হওয়া। যেমন আপনি আপনার বাবার উত্তরাধিকারি।মানে আপনি চাইলে আপনার বাবার সম্পত্তি ব্যবহার করতে পারেন। ঠিক তেমনি প্রোগ্রামিং এ যখন একটি ক্লাস আরেকটি ক্লাসের সম্পত্তি(ভেরিয়েবল অথবা ফাংশন) ব্যবহার করে  তখন তাকে ইনহেরিটেন্স বলে।

আগে জেনে নেই ইনহেরিটেন্স এর গুরুত্য কতটুকু।এর জন্য নিচের প্রোগ্রামটি দেখুনঃ

1
2
3
4
5
6
7
public class facebook {
    public void who()
    {
        System.out.println("I am the best IT company");
    }
}

এখানে facebook ক্লাস ডিক্লায়ার করা হয়েছে। এবং এর একটি who() নামে ফাংশন ও ডিক্লয়ার করা হয়েছে।এবার নিচের কোডটা দেখি।

1
2
3
4
5
6
7
public class microsoft {
    public void who()
    {
        System.out.println("I am the best IT company");
    }
}

এখানে microsoft ক্লাস ডিক্লায়ার করা হয়েছে। এবং এর একটি who() নামে ফাংশন ও ডিক্লয়ার করা হয়েছে।এবার ধরুন আমাদের এরকম facebook এবং Microsoft এর মত ১০ টি ক্লাস আছে যার প্রতিটি ক্লাস এই who() ফাংশনটি আছে এবং প্রতিটি who() ফাংশন এর কাজ একিই। অর্থাৎ “I am the best IT company” বাক্যটি প্রিন্ট করা। এবার আপানাকে কেউ এসে বলল যে প্রতিটি ক্লাসের who() ফাংসন এর যে বাক্যটি প্রিন্ট করার কথা তা না করে “Google is the best IT company” বাক্যটি প্রিন্ট করতে বলা হল। তাহলে চিন্তাই করতে পারছেন আপনাকে কত কস্ট করতে হবে।প্রতিটি ক্লাসের who() ফাংশন কে পরিবর্তন করতে হবে।যেটি অনেক সময় সাপেহ্ম এবং কস্ট সাধ্য। এর থেকে পরিত্রানের উপায়ই হল ইনহেরিটেন্স।এর জন্য আমরা নিচের ক্লাস টি লহ্ম্য করিঃ

1
2
3
4
5
6
7
public class apple {
    public void who()
    {
        System.out.println("I am the best IT company");
    }
}

এখানে apple নামক ক্লাস ডিক্লায়ার করা হয়েছে।এবং এর ভিতর who() নামক ফাংশন ডিক্লায়ার করা হয়েছে।
এবার আগে আনাদের লেখা facebook এবং Microsoft ক্লাসের কিছু পরিবর্ত্ন আনি।

1
2
3
public class facebook extends apple{
}

1
2
3
public class microsoft extends apple {
}

অর্থাৎ আমরা শুধু who() নামক ক্লাস টা সরিয়ে দিয়েছি এবং extends কিওয়ার্ড এর সাহায্যে apple ক্লাস কে ইনহেরিট করা হয়েছে।এখানে বলে রাখা ভাল যে ক্লাসকে ইনহেরিট করা হয় তাকে বলে parent class আর যে ইনহেরিট করে তাকে বলে child class এখানে apple হল parent class facebook, microsoft হল child class। এবার আমরা আরেকটি ক্লাস তৈরি করব google নামে। দেখে নেই গুগল ক্লাসের কোডঃ

1
2
3
4
5
6
7
8
9
10
11
public class google {
    public static void main(String[] args)
    {
        facebook fb=new facebook();
        microsoft ms=new microsoft();
        fb.who();
        ms.who();
    }
}

এখানে গুগল ক্লাসে facebook Microsoft ক্লাসের আলাদা আলাদা অব্জেক্ট তৈরি করা হয়েছে।পরে ওই অব্জেক্ট এর সাহায্যে who() ফাংশনকে কল করা হয়েছে। খেয়াল করলে দেখবেন যে Microsoft অথবা facebook এই দুটির কোনটিতেই কিন্তু who() ফাংশনটি লেখা নেই।তাও প্রোগ্রামটি সঠিক আউটপুট দিচ্ছেঃ
I am the best IT company
I am the best IT company

আজ এ পর্যন্তই। সবাই ভাল থাকবেন।

জাভা প্রোগ্রামিং :: জাভাতে this অপারেটর এর ব্যবহার (টিউন-১২)

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

প্রথমেই আসি this অপারেটর  নিয়ে আলোচনায়। তার আগে আমরা নিচের প্রোগ্রামটি দেখিঃ

public class facebook {
	int x;
	int y;
	int z;

	facebook(int x,int y,int z)
	{
		x=x;
		y=y;
		z=z;
	}
	void show_me()
	{
		System.out.println("The value of x is: "+x + " value of y is:" +y +" value of z is: "+z );
	}
}

এখানে facebook নামক একটি ক্লাসে কিছু কোড লিখা হয়েছে। এবার আবার নিচের কোডটি দেখুন।

public class microsoft {
	public static void main(String[] args)
	{

		facebook ob3=new facebook(10,15,20);

		ob3.show_me();
	}
}

এবার কোড টি রান করালে নিচের মত আউটপুট দেখতে পারবেঃ

The value of x is: 0 value of y is:0 value of z is: 0

আসলে আমরা যেই প্রোগ্রামটি তৈরি করেছি তার কাজ হলঃপ্রথমে facebook ক্লাস তার জন্য একটি কন্সট্রাক্টর ডিক্লায়ার করেছে। এবং কন্সট্রাক্টর এ যেই ভেরিএয়েবল গুলি আসছে তা প্রিন্ট করছে show_me() ফাংশন। আর Microsoft ক্লাস facebook ক্লাসের একটি অব্জেক্ট  তৈরি করেছে। অব্জেক্ট তৈরির সময় প্যারামিটার হিসাবে কিছু ভ্যালু পাঠানো হয়েছে। পরে এই অব্জেক্ট এর সাহায্যে show_me() ফাংশন কে কল করা হয়েছে। হিসাবে আউটপুট দেখানোর কথা আমাদের যেই ভ্যালুগুলি আমরা প্যারামিটার হিসাবে অব্জেক্ট এর সাথে পাস করেছি তা কিন্তু x,y,z তিনটির ভ্যলুই ০ দেখাচ্ছে। কারন টা কি বলতে পারবেন??

আসলে এখানে facebook কন্সট্রাক্টরে আরগুমেন্ট হিসাবে যেই ভেরিয়েবল ব্যবহার করা হয়েছে আবার লোকাল ভেরিয়েবলেও একি জিনিস ব্যাবহার করা হয়েছে। তাই x=x,y=y,z=z বলতে কি বুঝানো হচ্ছে তা কন্সট্রাক্টর বুঝতে পারছেনা। তাই মান হিসাবে Garbage ভ্যালু দেখচ্ছে।

এর থেকে পরিত্রান এর উপায় হল this অপারেটর এর ব্যবহার।এবার নিচের facebook ক্লাসের প্রোগ্রামটি দেখিঃ

public class facebook {
	int x;
	int y;
	int z;

	facebook(int x,int y,int z)
	{
		this.x=x;
		this.y=y;
		this.z=z;
	}
	void show_me()
	{
		System.out.println("The value of x is: "+x + " value of y is:" +y +" value of z is: "+z );
	}
}

দেখতেই পাচ্ছি যে কন্সট্রাক্টরে x,y,z এর মান লোকাল ভেরিয়েবল এ কিভাবে বসানো হয়েছে। এখানে this.x বলতে বুঝানো হয়েছে যে এই ক্লাসের x সোজা কথায় this বলতে বুঝায় এই ক্লাসের একটি রিপ্রেজেন্টেটিভ।ঠিক একি ভাবে this.y বলতে বুঝায় এই ক্লাসের y.

আজ এ পর্যন্তই।সবাই ভাল থাকবেন।

প্রোগ্রামিং :: কন্সট্রাক্টর ওভার রাইডিং (টিউন-১১)

আসসালামু আলাইকুম আশা করি সবাই ভাল আছেন আজকে আমরা জাভাতে কন্সট্রাক্টর কিভাবে ওভাররাইড করতে হয় তা আমরা জানব।

ওভার রাইড বলতে বুঝায় কোন ফাংশন এর নাম একি রেখে শুধু প্যারামিটার পরিবর্তন করে দিয়ে কিভাবে একি নামের ভিন্ন ভিন্ন ফাংশন তৈরি করা যায়।

কথাটা কি একটু বেশি কঠিন হয়ে গেল?? আচ্ছা তাহলে একটু কস্ট করে নিচের কোডটা দেখিঃ

public class facebook {
	int x;
	int y;
	int z;
	facebook(int i)
	{
		x=i;
		y=0;
		z=0;
	}
	facebook(int i,int j)
	{
		x=i;
		y=j;
		z=0;
	}
	facebook(int i,int j,int k)
	{
		x=i;
		y=j;
		z=k;
	}
	void show_me()
	{
		System.out.println("The value of x is: "+x + " value of y is:" +y +" value of z is: "+z );
	}
}

এখানে facebook নামের ৩ টি আলাদা আলাদা কন্সট্রাক্টর তৈরি করা হয়েছে।খেয়াল করলে দেখতে পারবেন ১ম টিতে ১টি প্যারামিটার,২য় টিতে ২টি প্যারামিটার ,৩য় টিতে ৩টি প্যারামিটার দেওয়া হয়েছে। ১ম তিতে একটি প্যারামিটার দেওয়া হয়েছে বলে y,z এর মান আমার নিজেথেকে বসিয়ে দিতে হয়েছে,২য় কন্সট্রাক্টর এ আবার z এর ভ্যালু নিজে থেকে বসিয়ে দিতে হয়েছে। পরে ৩য় কন্সট্রাক্টরটিতে ৩টি প্যারামিটার থাকায় কোন ভেরিয়েবল এর মান ম্যানুয়ালী করা লাগেনি।একেবারে শেষে আরেকটি ফাংসন বানানো হয়েছে যাতে আমরা আমাদের ভেরিয়েব গুলোর মান প্রিন্ট দিতে পারি।

এবার আসি আমরা আরেকটি ক্লাশ তৈরি করব যেখানে আমরা ৩টি আলাদা আলাদা facebook ক্লাস এর জন্য অব্জেক্ট তৈরি করব।নিচের প্রোগ্রামটি দেখিঃ

public class microsoft {
	public static void main(String[] args)
	{
		facebook ob1=new facebook(10);
		facebook ob2=new facebook(10,15);
		facebook ob3=new facebook(10,15,20);

		ob1.show_me();
		ob2.show_me();
		ob3.show_me();
	}
}

এখানে ৩টি আলাদা আলাদা অব্জেক্ট তৈরি হয়েছে।১ম অব্জেক্ট তৈরির সময় প্যারামিটার হিসাবে একটি ভ্যালু পাঠানো হয়েছে।২য় টিতে ২টি এবং ৩য় টিতে ৩টি ভ্যালুওই পাঠানো হয়েছে।

পরের লাইনগুলো তে খালি আমরা যেই কয়টি অব্জেক্ট তৈরি করেছিলাম তাদের প্রতিটির সাহায্যে show_me() function কে কল করা হচ্ছে।১ম অব্জেক্ট এর জন্য ১ম কন্সট্রাক্টর কল হয়েছে,২য় অব্জেক্ট এর জন্য ২য় কন্সট্রাক্টর কল হয়েছে,এবং ৩য় অব্জেক্ট এর জন্য ৩য় কন্সট্রাক্টর কল হয়েছে, এবার রান করলে নিচের মত আউটপুট দেখতে পারবেনঃ

The value of x is: 10 value of y is:0 value of z is: 0

The value of x is: 10 value of y is:15 value of z is: 0

The value of x is: 10 value of y is:15 value of z is: 20

আজ এ পর্যন্তই। সবাই ভাল থাকবেন।

জাভা প্রোগ্রামিং :: কন্সট্রাক্টর (টিউন-১০)

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

কন্সট্রাক্টর হল কোন ক্লাসের মেম্বার ভেরিয়েবল গুলোর মান বসানোর জন্য ব্যবহ্রত একটি ফাংশন। সাধারনত এর সাহায্যে মেম্বার ভেরিয়েবল এর মান বসানো হয়। আমরা যখন কোন ক্লাসের অব্জেক্ট তৈরি করি তখন আর কোন ফাংশন কল হয় না,কোন ভেরিয়েবল এ মান বসানো হয়না,শুধু কন্সট্রাক্টর কল হয় তাই এই কন্সট্রাক্টর এর মধ্যে ভেরিয়েবল গুলোর মান বসানো হয়।

কন্সট্রাক্টর একটা ফাংশন। শুধু অন্যান্য ফাংশন এর সাথে এর পার্থক্য হচ্ছে কন্সট্রাক্টর এর নাম অবশ্যই তার ক্লাসের নামে হবে। যেমন আপনার ক্লাস এর নাম যদি myclass হয় তাহলে আপনার কন্সট্রাক্টর এর নাম ও myclass হতে হবে।

এখন আসুন নিচের প্রোগ্রামটি দেখে নেইঃ

public class facebook {
	public String name;

	public facebook(String myname)
	{
		name=myname;
	}
	public void setname(String myname)
	{
		name=myname;
	}
	public String getname()
	{
	 return name;
	}
	public void show_name()
	{
		System.out.printf("My name is %s \n", getname());
	}
}

এখানে facebook নামক ক্লাস এর facebook নামক কন্সট্রাক্টর তৈরি করা হয়েছে।এবং সেখানে ভেরিয়েবল “name” এর মান বসানো হয়েছে।পরে আরেকটি মেথড Show_name() এর সাহায্যে এর মান  আউটপুট করা হয়েছে।

এবার আসুন ২য় আরেকটি ক্লাস এর প্রোগ্রাম এর দিকে লহ্ম্য করি যেখানে main() মেথড লেখা আছেঃ

public class microsoft {
	public static void main(String[] args)
	{
		facebook fb=new facebook("Avy");
		fb.show_name();

    }
}

এখানে প্রথমে facebook ক্লাস এর একটি অব্জেক্ট তৈরি করা হয়েছে। খেয়াল করলে দেখবেন আমি এখানে অবজেকট তৈরির সময় প্যারামিটার হিসাবে আমার নাম দিয়েছি। এই মানটাই কন্সট্রাক্টর এর name ভেরিয়েবলে গিয়ে বসবে। ৬ষ্ঠ লাইনের দিকে তাকালে আমরা দেখতে পারব যে facebook ক্লাস এর যেই অবজেক্ট আমরা তৈরি করে ছিলাম তার সাহায্যে facebook ক্লাসের show_name()  মেথড কে কল করা হচ্ছে। এবার ২য় ক্লাস থেকে প্রোগ্রামকে রান করালে নিচের মত আউটপুট পাওয়া যাবেঃ

My name is Avy 
আরেকটি কথা জেনে রাখা ভাল,আমরা যত গুলি ক্লাসই তৈরি করি না কেন আমাদের প্রোগ্রাম সবসময় রান করাতে হবে সেই ক্লাস থেকে যেখানে আমাদের main() মেথড আছে।যেমন আমাদের এখানে আছে microsoft ক্লাস এ তাই আমরা microsoft ক্লাস থেকে প্রোগ্রামকে রান করাবো।

আমরা আজকে বেশ গুরত্যপুর্ন একটা জিনিস সম্পর্কে জানলাম, তাহল কন্সট্রাক্টর। এই টিউট্রিয়াল এর কিছু না বুঝতে পারলে জানাবেন।আমরা আস্তে আস্তে জাভার ভিতরে প্রবেশ করছি। তাই যদি ব্যাসিক এ প্রব্লেম থাকে তাহলে সামনের টিউটরিয়াল গুলো বুঝতে আরো কস্ট হবে।

আজ এ পর্যন্তই। সবাই ভাল থাকবেন।

জাভা প্রোগ্রামিং :: অবজেক্ট এবং ক্লাস নিয়ে সাধারন কিছু কথা (টিউন-০৯)

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

এই পর্বে আমি তেমন ভিতরে যাবনা। শুধু ব্যাসিক কিছু জিনিস নিয়ে আলাপ আলোচনা করব।

আগেই জেনে নেই অবজেক্ট কি জিনিস। অবজেক্ট হল অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর পিলার বা খুটি। যদি অবজেক্ট এর ধারনা আমাকে বলতে বলেন তাহলে আমরা প্রত্যেকেই এক এক টা অবজেক্ট।আমরা মানুষ,গাছপালা ,সকল প্রানী, সব জড় বস্তু সবাই এক এক টা অবজেক্ট।কিন্তু আমরা এবং যতগুলো উদাহরন দিলাম সবই হল বাস্তব জীবনের উদাহরন(Real world example)।প্রত্যেকটি অবজেক্ট এর ২ টি জিনিস থাকবেই তাহলঃ

১)অবস্থা(State)।

২)গুনাগুন বা ব্যবহার(Behavior)।

অবস্থা বলতে বুঝায় এই যেমন মানুস এর ২ টা চোখ আছে ,কান আছে,হাত আছে, পা আছে  ইত্যাদি এই সবই হল এক এক টা স্টেট(State)।আবার মানুস চোখ দিয়ে দেখতে পারে ,কান দিয়ে শুনতে পারে সবই হল তার ব্যবহার(Behavior)।

প্রোগ্রামিং এর অবজেক্ট এর কন্সেপ্টটাও  অনেকটা এমনই। প্রোগ্রামিং এও প্রতিটা অবজেক্ট এর State এবং Behavior  আছে। প্রোগ্রামিং State  বলতে বেশিরভাগ হ্মেত্রেই বিভিন্ন ভেরিয়েবল কে বুঝায়। আর Behavior  বলতে বুঝায় ফাংশনকে। এই ছিল মোটামোটি অবজেক্ট নিয়ে আলোচনা। এবার আসি ক্লাস এ।

ক্লাসঃ সোজা কথায় বলতে গেলে আমরা মানুষরা যদি এক একটা অবজেক্ট হই তাহলে আমাদের সমাজ হল একটা ক্লাস। আবার ভেঙ্গে বলতে গেলে আমাদের বাস্তব জীবনের এমন অনেক আলাদা আলাদা অবজেক্ট পাব যারা প্রায় একি প্রকারের।যেমন হাজার হাজার সাইকেল আছে যারা প্রায় একি রকমের দেখতে ।প্রতিটি বাইসাইকেল একই ব্লুপ্রিন্ট কে মাথায় রেখে তৈরি হয়,তাই দেখতে একই রকম,বৈশিষ্ট ও প্রায় একই।আমাদের অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এ এক একটি বাইসাইকেল কে বলা হয় পুরো বাইসাইকেল গোস্টহির instance। ক্লাস হচ্ছে একটি নীল নকশা যার সাহায্যে আলাদা আলাদা অবজেক্ট তৈরি হয়।

এবার আসি ক্লাস কিভাবে তৈরি করবেন। এনিয়ে আমি আমার ৩য় টিউনেই বিস্তারিত আলোচনা করেছি। খুবই সোজা পদ্ধতি। এবার আসি আমরা একটু নিচের কোডটার দিকে তাকাইঃ

class Bicycle {

    //Member variable
    int cadence = 0;
    int speed = 0;
    int gear = 1;

   //Member function
   void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" +
             speed + " gear:" + gear);
    }
}
 

এবার ২য় আরেকটি ক্লাস তৈরি করিঃ

class BicycleDemo {
    public static void main(String[] args) {

        // Create two different
        // Bicycle objects
        Bicycle bike1 = new Bicycle();
        Bicycle bike2 = new Bicycle();

        // Invoke methods on
        // those objects
        bike1.changeCadence(50);
        bike1.speedUp(10);
        bike1.changeGear(2);
        bike1.printStates();

        bike2.changeCadence(50);
        bike2.speedUp(10);
        bike2.changeGear(2);
        bike2.changeCadence(40);
        bike2.speedUp(10);
        bike2.changeGear(3);
        bike2.printStates();
    }
}

এবার ২য় প্রোগ্রামটার দিকে তাকাই এই প্রোগ্রামটিতে আগের প্রোগ্রামের ২টি অবজেক্ট তৈরি করা হয়েছে।পরের লাইনে অবজেক্ট গুলোর সাহায্যে যেই ক্লাসের অব্জেক্ট তৈরি করা হয়েছে সেই ক্লাসের বিভিন্ন মেম্বার ভেরিয়েবল এবং ফাংশঙ্কে Access করা হয়েছে।খেয়াল করলে দেখবেন main ফাংশন খালি ১টি ক্লাস এই রয়েছে। আর main ফাংশন থেকেই প্রোগ্রামকে রান করাতে হবে। মেইন ফাংশন থেকে রান করালে আউটপুট এমন আসতে পারেঃ

cadence:50 speed:10 gear:2

cadence:40 speed:20 gear:3

১ম ক্লাসে আমরা যতগুলি ভেরিয়েবল দেখতে পাচ্ছি এদের কে বলে মেম্বার ভেরিয়েবল আর যতগুলি ফাংশন দেখতে পাচ্ছি এদের কে বলে মেম্বার ফাংশন।

প্রতিটা ফাংশন এবং ভেরিয়েবল এর আবার আলাদা আলাদা Access হ্মমতা দেওয়া যায়। এইরকম Access করার হ্মমতা কে ৩ ভাগে ভাগ করা যায়ঃ

১)পাবলিক

২)প্রাইভেট

৩)প্রটেক্টেড

পাবলিক মেম্বার যারা তাদের কে চাইলেই অন্য একটি ক্লাসথেকে Access করা যায়। প্রাইভেট শুধু ওই ক্লাসের মেম্বাররাই Access করতে পারবে। আর প্রোটেক্টেড শুধু মাত্র যেই সকল ক্লাস এই ক্লাস্কে ইনহেরিট করবে তারাই ব্যবহার করতে পারবে।

কি?? বুঝতে সমস্যা হচ্ছে??? চিন্তার কোন কারন নেই সামনে এগুলো সব নিয়ে বিশদ আলোচনা করব। তখন সব কিছু পরিস্কার হয়ে যাবে।

আজ এ পর্যন্তই।সবাই ভাল থাকবেন।

জাভা প্রোগ্রামিং :: জাভাতে Array এর ব্যবহার (টিউন-০৮)

আসসালামু আলাইকুম। আশা করি সবাই ভাল আছেন। আজকে আমি যে টপিকটি নিয়ে কথা বলব তাহল  Array। যেকোন প্রগ্রামিং লাঙ্গুয়েজই  Array বেশ গুরুত্যপুর্ন একটি জিনিস। আগেই Array এর গুরুত্য কি তা আমরা জেনে নেই।

public class facebook {
	public static void main(String[] args)
	{

		int a,b,c;
		a=10;
		b=30;
		c=a+b;
		System.out.println("Sum is:" + c);
}
}

উপরের প্রোগ্রামটি লহ্ম্য করি। এখানে প্রথমে ৩ টি ভেরিয়েবল ডিক্লায়ার করা হয়েছে । পরবর্তিতে এদের মধ্যে ২ টিতে মান নিয়ে এদের যোগফল ৩য় ভেরিয়েবল এ রাখা হয়েছে। খুবই সাধারান একটা প্রোগ্রাম।

কিন্ত এখন কেউ যদি আপনাকে বলে যে ১০১ টি ভেরিয়েবল ডিক্লায়ার কর এবং ১০০ টি ভেরিয়েবলে ইনপুটের সাহায্যে মান নিয়ে এদের যোগফল ১০১ তম  ভেরিয়েবল এ রাখুন। তাহলে ১০১ টি ভেরিয়েবল ডিক্লায়ার করতে করতে ১২ টা বেজে যাবে। চিন্তার কোন কারন নেই।আমাদের আছে Array। Array হল  Sequence of variable । একসাথে অনেক গুলো ভেরিয়েবল একবারেই ডিক্লায়ার করা যায়। এই যেমন আমি যদি লিখি :

int[] anArray;

        // allocates memory for 10 integers
        anArray = new int[10];

তাহলে int টাইপের ১০ টা ভেরিয়েবল ডিক্লয়ার হয়ে গেছে। সোজা না??এবার আসুন আরেকটু ভিতরে যাই। আগের প্রোগ্রামটি যেখানে শুধু Array ডিক্লায়ার করেছিলাম ওইটাই আরেকটু মোডিফাই করি।নিচের প্রোগ্রামটি দেখুনঃ

int[] anArray;

        // allocates memory for 10 integers
        anArray = new int[10];
       // initialize first element
       anArray[0]=100;

এখানে int টাইপের ১০ টা ভেরিয়েবল ডিক্লয়ার হয়েছে। পরের লাইনে মান বসানো হয়েছে। মনে রাখতে হবে যে আমরা যেই Array  টা ডিক্লায়ার করে ছিলাম তার প্রথম Address টা ০ তারপরের আড্রেস টা হল 1 এভাবে করতে করতে শেস Address টা হবে 9 এরকম কোন একটা Array এর ভিতর প্রতিটা Address কে index বলে। আমাদের এই

Array এর সাইজ কত বলতে পারবেন? আমি এখানে সাইজ বলতে বুঝাতে চেয়েছি দৈর্ঘ্য কত? সোজা হিসাব ১০, কারন আমরা ১০ সাইজের একটা Array ডিক্লায়ার করেছিলাম। মানে এই Array টা তে আমরা সর্বচ্চ ১০ টি মান রাখতে পারব।এবং তাদের Address হবে ০-৯ পর্যন্ত। নিচের ছবিটি দেখি তাহলে অনেক কিছু পরিস্কার হয়ে যাবেঃ


এবার আসুন Array দিয়ে ঝটপট একটি পুর্ন প্রোগ্রাম দেখে ফেলিঃ

class ArrayDemo {
    public static void main(String[] args) {
        // declares an array of integers
        int[] anArray;

        // allocates memory for 10 integers
        anArray = new int[10];

        // initialize first element
        anArray[0] = 100;
        // initialize second element
        anArray[1] = 200;
        // etc.
        anArray[2] = 300;
        anArray[3] = 400;
        anArray[4] = 500;
        anArray[5] = 600;
        anArray[6] = 700;
        anArray[7] = 800;
        anArray[8] = 900;
        anArray[9] = 1000;

        System.out.println("Element at index 0: "
                           + anArray[0]);
        System.out.println("Element at index 1: "
                           + anArray[1]);
        System.out.println("Element at index 2: "
                           + anArray[2]);
        System.out.println("Element at index 3: "
                           + anArray[3]);
        System.out.println("Element at index 4: "
                           + anArray[4]);
        System.out.println("Element at index 5: "
                           + anArray[5]);
        System.out.println("Element at index 6: "
                           + anArray[6]);
        System.out.println("Element at index 7: "
                           + anArray[7]);
        System.out.println("Element at index 8: "
                           + anArray[8]);
        System.out.println("Element at index 9: "
                           + anArray[9]);
    }
}

প্রোগ্রামটা খুবই সোজা ১০ সাইজের একটি Array ডিক্লায়ার করা হয়েছে এবং এদের মান বসানো হয়েছে index অনুসারে পরে এই সব মান আবার আউটপুট করা হয়েছে। প্রোগ্রামটির আউটপুট নিচের মত আসবেঃ

Element at index 0: 100

Element at index 1: 200

Element at index 2: 300

Element at index 3: 400

Element at index 4: 500

Element at index 5: 600

Element at index 6: 700

Element at index 7: 800

Element at index 8: 900

Element at index 9: 1000

এবার নিচের প্রব্লেমটি চেস্টা করুনঃ

১)একটা ১০ সাইজের array ডিক্লয়ার করুন।এদের মধ্যে ১০ টি আপনি নিজে ইনপুট নিন এবং এদের যোগফল আউপুট করুন।

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

সবাই ভাল থাকবেন।

জাভা প্রোগ্রামিং :: জাভাতে ইনপুট নেওয়া (টিউন-০৭)

আসসালামু আলাইকুম। আজকে আমি খুব ছোট একটি টিউন করব তা হল জাভাতে কিভাবে ইনপুট নিতে হয় তা নিয়ে।

নরমালি জাভাতে ইনপুট নেওয়া যায় দুভাবে একটি command line ইনপুট আর আরেকটি পদ্ধতি হল Graphical user interface ইনপুট। আমি আজকে শুধু command line ইনপুট নিয়ে কথা বলব।

এবার আসি কাজের কথায়, command line ইনপুট নেওয়ার হ্মেত্রে আপনাকে প্রথমেই জাভার একটি লাইব্রেরি ইম্পর্ট করতে হবে। যেমন C/C++ কোড করার সময় আমরা যেমন শুরুতেই লেখে নিতাম যে #include <stdio.h>। এটা হচ্ছে C/C++ এর ইনপুট আউটপুট এর লাইব্রেরি। ঠিক তেমনি জাভাতেও ইনপুট নেওয়ার সময় একটি লাইব্রেরি ইম্পর্ট করতে হয় আর তাহল java.util.Scanner । আসুন তাহলে কথা না বাড়িয়ে ঝটপট করে একটি প্রোগ্রাম দেখে নেই।
























import java.util.Scanner;

public class facebook {
	public static void main(String[] args)
	{

		Scanner avy= new Scanner(System.in);
		System.out.println("What is your name?");
		String a=avy.nextLine();
	    System.out.print("My name is: ");
		System.out.println(a);
		System.out.println("How old are you?");
		int x=avy.nextInt();
		System.out.println("I am:" + x + " years old" );
}
}

উপরের প্রোগ্রামে প্রথমে java.util.Scanner কে ইম্পর্ট করা হয়েছে। তারপর Scanner ক্লাস এর একটি অবজেক্ট avy তৈরি করা হয়েছে

তারপর ৯ম লাইনে প্রথম String টাইপ এর ভেরিয়েবল এ ইনপুট নেওয়া হয়েছে।১১ তম লাইনে আবার যে ইনপুট টি নেওয়া হয়েছিল তা আউপুট করা হয়েছে।আবার ১৩তম লাইনে আরেকটি int টাইপ এর ভেরিয়েবল X এর ভিতর ইনপুট নেওয়া হয়েছে। এবং ১৪ তম লাইনে তা আবার আউটপুট করে দেওয়া হয়েছে।

একটা জিনিস খেয়াল রাখেতে হবে  আমরা যেই টাইপের ভেরিয়েবলে ইনপুট নিব সেই টাইপের .next[আমাদের টাইপ] দিতে হবে যেমন আমি এখানে  a এর ভিতর স্ট্রিং টাইপের ইনপুট নিয়েছি তাই লিখেছি .nextLine() আবার X এর ভিতর int টাইপের ভেরিয়েবল নিয়েছি তাই এহ্মেত্রে দিয়েছি .nextInt(). যদি float টাইপ ভেরিয়েবলে মান নিতাম তাইলে লিখতাম .nextFloat();

এখন আসুন নিচের প্রোগ্রাম গুলি চর্চা করুনঃ

১) একটা সংখা ইনপুট নিন তা জোড় না বিজোড় তা যাচাই করুন।

২)একটা সংখা ইনপুট নিন এবং সেই সংখার নামাতা প্রিন্ট করুন।

আজ এ পর্যন্তই। সবাই ভালো থাকবেন।