
এর আগের প্রোগ্রামে আমরা মাত্র এক লাইন এর একটা আউটপুট দেখিয়েছি। যা শুধু মাত্র প্রোগ্রামিং শুরু করার জন্যই যথেষ্ট ছিল। বাস্তবে আমাদের জটিল কিছু প্রোগ্রাম লিখতে হবে। যার জন্য দরকার আমাদের ভ্যারিয়েবল এর ধারনা।
ভ্যারিয়েবল হচ্ছে একটি নাম, যা দিয়ে কম্পিউটারের মেমরিতে কোন ডেটা রাখা হয়। এ ডেটা হতে পারে নিউম্যারিক (যে কোন সংখ্যা) অথবা একটি character মান। এ ভ্যারিয়েবল এর মধ্যে কি ধরনের ডেটা রাখব আমরা তাই হচ্ছে ডেটা টাইপ। ভ্যারিয়েবল সম্পর্কে আমরা পরে আবার জানব। এবার একটু এ ডেটা টাইফ সম্পর্কে জানি।
সি প্রোগ্রামিং এ অনেক প্রকারের ডাটা টাইপ আছে। তার মধ্য প্রধান চারটি হচ্ছেঃ
int data type
char data type
float data type
double data type
int data type বলতে integer quantity(অবিভাজ্য সংখা যেমনঃ ১, ২, ৩ ইত্যাদি) বুঝায়। এর সাইজ ২ বাইট বা ১৬ বিট(১বাইট=৮বিট)এবং রেঞ্জঃ -৩২৭৬৮ থেকে +৩২৭৬৭ পর্যন্ত। কিছু কিছু কম্পাইলারে int ডেটার জন্য ৪ বাইট মেমরি দেয়। অর্থাৎ একটা int ডেটা টাইফের জন্য সর্বোচ্চ ৪ বাইট ডেটা রাখা যাবে। যার রেঞ্জ হচ্ছে -2,147,483,648 থেকে 2,147,483,647 এ রেঞ্জ এর মানে হচ্ছে এর থেকে বড় মানের সংখ্যা যদি আমরা ব্যবহার করি তাহলে কম্পাইলার সঠিক মান দিবে না। এ সাইজ এবং রেঞ্জ কম্পাইলার ভেদে ভিন্ন হতে পারে। তাই আমরা এটা নিয়ে মাথা গামাচ্ছি না।
int data type এর উদাহরন হিসেবে আমরা একটা প্রোগ্রাম দেখতে পারি। একটি আয়াতাকার জমির দৈর্ঘ্য এবং প্রস্থ জানলে আমরা তার আয়তন বের করতে পারি। তাই না? মনে করে নিচ্ছি দৈর্ঘ্য ৫ একক এবং প্রস্থ ৮ একক। আমরা এর আয়তন হবে ৫*৮ = ৪০ একক। প্রোগ্রামে আমরা কিভাবে তা বের করতে পারি? নিচের প্রোগ্রামটি দেখি।
#include <stdio.h>
int main()
{
int volume;
int length = 5;
int width = 8;
volume = length * width;
printf("%d", volume);
return 0;
}
প্রোগ্রামটি রান করলে আমরা আউটপুট দেখতে পাবো 40
এটা অবশ্যই আমাদের প্রথম প্রোগ্রাম থেকে দেখতে অনেক জটিল। এবং কিছুটা বড়। তবে অবশ্যই অনেক সহজ। কিছুক্ষন আগে আমরা ভ্যারিয়বল নামে একটা বস্তুর নাম শুনছি যা কোন কিছু স্টোর করে রাখে কম্পিউটার মেমরিতে।
আমাদের হিসেব করা জমির আয়তন বের করে ও তো কম্পিউটার মেমরিতে রাখতে হবে তাই না? কম্পিউটার মেমরিতে রাখার জন্য আমাদের দরকার একটা ভ্যারিয়েবল। আয়তন রাখার জন্য আমাদের ভ্যারিয়েবল এর নাম দিয়েছি volume, কিন্তু volume এ আমরা কি ধরনের ডেটা রাখব তা কম্পিউটারকে জানতে হবে না? আমরা যেহেতু একটা আয়তন রাখব এবং তা হচ্ছে একটা সংখ্যা। কিছুক্ষন আগে int নামে আমরা একটা ডেটা টাইপ সম্পর্কে জেনেছি। যা দিয়ে কম্পিউটারে Integer/ পূর্ণসংখ্যা কম্পিউটারে সংরক্ষন করা যায়। তাই আমরা int ব্যবহার করেছি। আর এর সব টুকু লিখছি একটা লাইনের মধ্যে int volume; যাকে বলা হয় ভ্যারিয়েবল ডিক্লারেশন। অর্থাৎ একটা ভ্যারিয়েবল ব্যবহার করার আগে একে ডিক্লেয়ার করতে হয়। ডিক্লেয়ারেশন শেষ আমরা একটা সেমি কোলন দিয়েছি। একটি ভ্যারিয়েবল ডিক্লেয়ারেশন শেষে তা শেষ করার জন্য একটা সেমিকোলন ব্যবহার করতে হয়। অর্থাৎ একটি ভ্যারিয়েবল ডিক্লেয়ার করতে হয় নিচের মত করেঃ
data_type variable_name;
কম্পিউটারকে তো আমাদের জানাতে হবে যে আমাদের জমির দৈর্ঘ্য এবং প্রস্থ কত, তাই না? এর জন্য আমরা আরো দুটি ভ্যারিয়েবল নিয়েছি length এবং width নামে। এ দুটি আবার int volume; থেকে একটু ভিন্ন। আমরা এ দুটি ভ্যারিয়েবল ডিক্লেয়ার করার সাথে সাথে একটি মান সেট করে দিয়েছি। যাকে বলে ভ্যালু এসাইন করা। মান সহ ভ্যারিয়েবল ডিক্লেয়ার করার নিয়ম হচ্ছেঃ
data_type variable_name = value;
এর পর বর্তীতে আমরা লিখছি volume = length * width; এর মানে হচ্ছে length ভ্যারিয়েবল এর মান এবং width ভ্যারিয়েবল এর মান গুন করে volume এ রাখা।
এর পরবর্তী লাইন এর সাথে আমরা কিছুটা পরিচিত। printf(“%d”, volume); যা হচ্ছে printf() ফাংশন।
printf() ফাংশন এর কাজ হচ্ছে কোন কিছু প্রিন্ট করা। একটা লেখা প্রিন্ট করার জন্য printf() এর ভেতর ডাবল কোটেশন এর মধ্যে কিছু লিখলেই তা প্রিন্ট করে দেয়, তা আমরা এর আগেই জেনে এসেছি।
কিন্তু এবার আমরা একটা ইন্টিজার ভ্যালু প্রিন্ট করব এবং একট ভ্যারিয়েবল এর থেকে। এর জন্য কিছু নিয়ম আমাদের ফলো করতে হবে। একটি ইন্টিজার প্রিন্ট করার জন্য printf() এর ভেতর ডাবল কোটেশন দিয়ে লিখতে হয় %d, এটিকে বলে placeholder। প্রত্যেকটি ডেটা টাইপের জন্য আলাধা আলাধা placeholders রয়েছে। %d মানে হচ্ছে display integer। ডাবল কোটেশনের পর আমরা একটি কমা দিয়েছি। এর পর লিখছি আমাদের ইন্টিজার ভ্যারিয়েবলটি। যা আমাদের জমির আয়তন প্রিন্ট করে দিয়েছে।
এ কাজটা তো আমরা মুখেই করতে পারতাম তাই না? ভালো হতো যদি প্রোগ্রামটা রান হওয়ার পর দৈর্ঘ্য এবং প্রস্থ নেওয়া যেত। তাহলে আমরা যে কোন জমির আয়তন বের করতে পারতাম। আমরা এমন কিছুই শিখব। তার আগে আরো কিছু ব্যাসিক ধারনা নিয়ে নি।
এবার আমরা character data type সম্পর্কে একটু জানতে পারি।
char data type বলতে single character( একটি বর্ন যেমন a, b, z, A, N ইত্যাদি) বুঝায়। এর সাইজ ১ বাইট বা ৮ বিট।বিট(১বাইট=৮বিট)এবং রেঞ্জঃ -১২৮ থেকে +১২৭ পর্যন্ত। আমাদের কীবোর্ডের প্রত্যেকটি চিহ্নই এক একটা character। কারেকটার ভ্যারিয়েবল ডিক্লেয়ার করার নিয়ম হচ্ছেঃ
char variable_name;
character ভ্যারিয়েবলে মাত্র একটি কারেকটার সংরক্ষন করা যায়।
float data type:
integer ডেটা টাইফে শুধু মাত্র পূর্ণ সংখ্যা গুলো সংরক্ষন করা যায়। আপনি একটা integer ভ্যারিয়েবলে একটি দশমিক মান যেমনঃ ৮.৯ বা ইচ্ছে মত কিছু রাখুন। এর পর ঐ ভ্যারিয়েবলটি প্রিন্ট করুন। কি দেখলেন? দশমিকের পরের অংশ নেই তাই না? নিচের প্রোগ্রামটা আপনি রান করিয়ে দেখতে পারেনঃ
#include <stdio.h>
int main()
{
int n = 8.9;
printf("%d", n);
return 0;
}
এটা শুধু আমাদের 8 দেখাবে। যদিও আমরা ভ্যারিয়েবলটির মধ্যে রেখেছি 8.9 । এর কারন হচ্ছে int শুধু মাত্র পূর্ণ সংখ্যা গুলোকে কম্পিউটার মেমরিতে সংরক্ষিত করতে পারে। দশমিক মান কম্পিউটারে রাখার জন্য আমাদের দরকার আরেকটি ডেটা টাইফ, যার নাম float ।
float data type বলতে floating point number( দশমিক সংখা যেমনঃ ১০.৫, ১.৮, ৫.৬ ইত্যাদি) বুঝায়। floating point ডেটা টাইফ দশমিকের পর ৬ ঘর পর্যন্ত নির্ভুল মান দিতে পারে। উপরের প্রোগ্রামটার ভ্যারিয়েবল n এর Data Type পরিবর্তন করে float দিয়ে রান করিয়ে দেখুনঃ
#include <stdio.h>
int main()
{
float n = 8.9;
printf("%d", n);
return 0;
}
এটি এবার সঠিক মান দিবে।
বৃত্তের ক্ষেত্রফলের জন্য দরকার এর ব্যাসার্ধের মান। ধরে নিচ্ছি একটি বৃত্তের ব্যাসার্ধ 7.6 একক। আমরা এর ক্ষেত্রফল বের করার একটা প্রোগ্রাম লিখে ফেলিঃ
#include <stdio.h>
int main()
{
float radius = 7.6;
float area = (radius*radius * 3.1416);
printf("%f", area);
return 0;
}
আমরা radius নামে একটা floting point ভ্যারিয়েবল নিয়েছি। এর মধ্যে বৃত্তের ব্যাসার্ধ রেখেছি। area নামে আরেকটি ভ্যারিয়েবল নিয়েছি যার মধ্যে ক্ষেত্রফল বের করে রেখেছি।
আমরা যানি বৃত্তের ক্ষেত্রফল হচ্ছে ব্যাসার্ধ*ব্যাসার্ধ্য * পাই এর মান। তাই লিখছি এবং মানটি প্রিন্ট করেছি।
এর আগে integer এর উদাহরনে printf ফাংশনে placeholder হিসেবে ব্যবহার করেছি %d, floating point এর জন্য placeholder হচ্ছে %f । বাকিটা তো সহজ তাই না?
আমরা জেনেছি যে floating point দশমিকের পর ৬ ঘর পর্যন্ত নির্ভুল মান দিতে পারে। এর থেকে বেশি ঘর পর্যন্ত নির্ভুল মান পেতে হলে আমাদের আরেকটি ডেটা টাইফ ব্যবহার করতে হবে যার নাম হচ্ছে double ।
double data type
double data type বলতে Double precision floating point number বুঝায়।এটা float data type এর মতোই তবে সাইজ বিশাল। এর সাইজ ৮ বাইট বা ৬৪ বিট। এবং এটি দশমিকের পর ১৫ ঘর পর্যন্ত নির্ভুল মান দিতে পারে।