বুধবার, ৭ জানুয়ারী, ২০১৫

নিয়ে এলাম সি প্রোগ্রামিং। যাদের বয়স ১৩+ শুধু তারাই এই জগতে আসেন।

·   0

ডাটা টাইপ কি?
নিচের ছকটি লক্ষ্য করুনঃ
Name Beginning letter of the name Age (year) Height
Benzir B 13 |4.4
Rony R 15 |5.5
Iyar Hossain16 |5.4
এখানে “benzir”কে আপনি word টাইপের
ডাটা বলতে পারেন।
একইভাবে বেনজিরের বয়সকে(১৩)আপনি
পূর্ণ সংখ্যা type এর
ডাটা বলতে পারেন এবং বেনজিরের
উচ্চতা (৫.৪)কে আপনি float বা দশমিক
টাইপের ডাটা বলতে পারেন।আর
সবগুলো নামের প্রথম বর্ন
(B,R,R,I,B)কে আপনি character বা বর্ণ
টাইপের ডাটা বলতে পারেন।এ
বিভিন্ন ধরনের ডাটাগুলোর ধরনকেই
ডাটা টাইপ বলে।সহজ
কথায় ডাটা টাইপ মানে হলো কোন
ধরনের বা কোন টাইপের ডাটা।
কম্পাইলার কে বিভিন্ন ডাটা টাইপ
কিভাবে বুঝবেন: প্রোগ্রাম এ যখন
আপনি বিভিন্ন ডাটা টাইপ লিখবেন
তখন কীওয়ার্ড ব্যবহার করতে হবে।
যেমনঃ প্রোগ্রাম এর কোথাও
যদি আপনি পূর্ন সংখ্যা টাইপের
ডাটা ব্যবহার করতে চান তাহলে পূর্ন
সংখ্যার ইংরেজি integer ব্যবহার
না করে ‘int’ কীওয়ার্ড টা ব্যবহার
করতে হবে।একইভাবে বর্ণ
বুঝাতে character
না লিখে ‘char’লিখতে হবে।
সি প্রোগ্রামিং এর গরুত্বপূর্ণ
ডাটা টাইপঃ
আপনি জানেন, ডাটা টাইপ ও
কীওয়ার্ড কি।
সি প্রোগ্রামিং করতে গিয়ে আপনাকে বিভিন্ন
ধরনের ডাটা টাইপ নিয়ে কাজ
করতে হবে। যেমন কখনো পূর্ণ
সংখ্যা ,কখনো বর্ণ
নিয়ে আপনাকে কাজ করতে হবে।
মনে করুন আপনি কীবোর্ড
থেকে দুটি পূর্ন সংখ্যা দিবেন
এবং সংখ্যা দুটি যোগ
করে দেখাবেন, এই
কাজটা আপনি সি প্রোগ্রামিং দিয়ে করতে চান।
এখন আপনি যে পুর্ন সংখ্যা ইনপূট
দিবেন এবং পূর্ন সংখ্যা নিয়ে কাজ
করবেন
সেটি সি প্রোগ্রামে কিভাবে লিখবেন?।
এজন্য কিছু কীওয়ার্ড ব্যবহার করতে হয়,
যেমন পূর্ণ সংখ্যা টাইপের
ডাটা বুঝাতে ‘int’ কীওয়ার্ড,দশমিক
সংখ্যা টাইপের ডাটা বুঝাতে ‘float’
কীওয়ার্ড, বর্ণ টাইপের
ডাটা বুঝাতে ‘char’ কীওয়ার্ড ব্যবহার
করা হয়।
ইতিমধ্যে আপনি জানেন,কীওয়ার্ড
কে কোন রকম পরিবর্তন
না করে লিখতে হয়। যেমন ‘char
’ কীওয়ার্ড টাকে ‘char’ ছাড়া অন্য
কোনভাবে (যেমন char বা CHAR)
লেখা যাবে না। এই কীওয়ার্ড
কে রসায়ন শাস্রের রাসায়নিক
সংকেতক এর সাথে চিন্তা করুন।রসায়ন
শিখতে যেমন আপনাকে বিভিন্ন
রাসায়নিক সংকেত
মনে রাখা লাগে,তেমনি সি প্রোগ্রামিং করার
জন্য কিছু কীওয়ার্ড
আপনাকে মনে রাখতে হবে।
তবে আপনাকে এ কীওয়ার্ড গুলো মুখস্ত
করতে হবে না। কারন
সি প্রোগ্রামিং এ যেসব
ডাটা টাইপ ব্যবহৃত হয় তার সংখ্যা খুবই
কম।তাছাড়া কয়েকদিন
প্রোগ্রামিং করার পর এমনিতেই
সব ডাটা টাইপ আপনার মুখস্ত
হয়ে যাবে।এখন নিছের ছকটি শুধু
একনজরে দেখে জান। এ
ছকটি দেখে আপনার মনে যেসব প্রশ্ন
জাগতে পারে সেগুলো একটু পরেই
আলোচনা করা হবে।
Main data type Division
of main
Data
type
কীওয়ার্ড কি ধরনের
ডাটা ইনপুট
দেওয়া যাবে?
Integer(পূর্ণ সংখ্যা)
Integer int ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা
Unsigned integer unsigned
int
ধনাত্মক পূর্ন সংখ্যা
Signed integer signed
int
ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা
Short integer short int ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা
Unsigned short integer unsigned
short int
ধনাত্মক পূর্ন সংখ্যা
Signed short integer signed
short int
ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা
Long integer long int ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা
signed long Integer signed
long int
ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা
Unsigned long Integer unsigned
long int
ধনাত্মক পূর্ন সংখ্যা
float float ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা বা ভগ্নাংশ
Double (ভগ্নাংশ) double double ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা বা ভগ্নাংশ
Long double long
double
ধনাত্মক বা ঋনাত্মক
পূর্ন সংখ্যা বা ভগ্নাংশ
Character (বর্ণ) Character char বড় হাতের বা ছোট হাতের বর্ণ
লক্ষ্য করুন “int” কীওয়ার্ড এর
আগে কখনো “signed”কখনো “unsigned”কখনো “short”কখনো “long
”modifier ব্যবহার করা হয়েছে।আপনার
প্রশ্ন হতে পারে modifier
কি এবং signed ,unsigned,short,long-এ
গুলোকে কেন modifier বলা হয়?
উত্তরঃ modifier হলো যা কোন
কিছুকে modify করে।
যেমনঃঘোড়া দ্রুত দৌড়ায় –এই
বাক্যে ‘দ্রত’শব্দটা ঘোড়ার
দৌড়ানোর ধরনটা modify করে।তাই
আপনি ‘দ্রত’কে modifier বলতে পারেন
(যদি ও ব্যাকরণের ভাষায় adverb
বলতে হবে)।একইভাবে “int”এর
আগে যদি “unsigned”লিখেন তাহলে int
টাইপের ডাটাটা অবশ্যই ধনাত্মক
হতে হবে। অর্থাৎ int টাইপ টা শুধুমাত্র
ধনাত্মক হবে এটা modify করে “unsigned”
শব্দটা।তাই “unsgned”একটা modifier
***একমাত্র “unsigned ”modifier
লিখলে আপনি শুধু ধনাত্মক ডাটা ইনপুট
দিতে পারবেন।বাকি যে কোন
modifier লিখলে ধনাত্মক ও ঋণাত্মক
যে কোন ডাটা ইনপুট দিতে পারবেন।
****উপরের ছক থেকে দেখা যায় “int”
কীওয়ার্ড লিখলেও পূর্ণ সংখ্যা ইনপুট
দেওয়া যায় আবার “long int” লিখলেও
পূর্ণ সংখ্যা ইনপুট দেওয়া যায়।
তাহলে কখন “int”আর কখন “long int”ব্যবহার
করব?
সংক্ষেপে উত্তর হলো -৩২৭৬৮
থেকে ছোট অথবা ৩২৭৬৭ থেকে বড়
মান ইনপুট দেওয়ার জন্য int ব্যবহার
না করে long int ব্যবহার করা হয়। আরও
বিস্তারিত
ব্যাখ্যা নিচে দেওয়া হলঃ
কম্পিউটারএর মেমরী
কে আপনি নিচের মত
পাশাপাশি সাজানো ছোট ছোট
বক্স হিসেবে চিন্তা করতে পারেন।
1 2 3 4 5 6 7 8
লক্ষ করুন, এখানে ৮ টি ছোট ছোট বক্স
আছে।এই ছোট
একটি বক্সকে আপনি একটি বিট
চিন্তা করুন।বিট হলো মেমরীর একক।৮
টি বিট মিলে হয় একটি বাইট।অর্থাৎ
১ বাইট=৮ বিট
int টাইপের ডাটার জন্য ২ বাইট
জায়গা নির্ধারিত হবে।
উপরের সম্পর্ক
থেকে আমরা লিখতে পারি,
২বাইট=৮*২=১৬ বিট।
অর্থাৎ int টাইপের ডাটার জন্য ১৬
টি ছোট ছোট ঘর সৃষ্টি হবে।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
এই ১৬ টি ঘরের মধ্যে সবচেয়ে বামের
ঘরটা হলো সাইন বিট।
সংখ্যাটি ধনাত্মক হবে না ঋণাত্মক
হবে তা নির্ধারণ করে সাইন বিট।
সাইন বিট টি ০
হলে সংখ্যাটি হবে ধনাত্মক আর সাইন
বিট 1 হলে সংখ্যাটি হবে ঋনাত্মক।
এখন বাকি থাকে ১৫টি ঘর। এখন
আপনাকে যদি বলি ১৫টি খালি ঘর
আছে।ঘরগুলোকে এমন ১৫ টি ডিজিট
দিয়ে পূরন করুন যেন ১৫টি
ডিজিট দিয়ে গঠিত
সংখ্যাটা সবচেয়ে বড় হয়। এখন
আপনি যে ডাটাই ইনপুট দেন না কেন
কম্পিউটা্রের মেমরীতে শুধু ০ এবং ১
কে স্টোর (সংরক্ষণ)করে রাখা যায়।
অর্থাৎ আপনার অপশনে দুটি ডিজিট
আছে- 0 এবং 1.
তাহলে আপনি নিশ্চয়ই
সবগুলো ঘরকে “1” দিয়ে পূরণ করবেন
এবং আপনার উত্তর
হবে-0111111111111111
এখানে সাইন বিট =
0.মানে সংখ্যাটি ধনাত্মক। এখন
0111111111111111 কে decimal এ প্রকাশ
করলে পাব,
0 * 2 15 + 1 * 2 14 + 1*2 13 + 1*2 12
+ 1*2 11 + 1*2 10 + 1*2 9 + 1*2 8 +1*2
7+ 1*2 6 +1*2 5 +1*2 4 +1*2 3 1*2 2 +1*2 1
+1*2 0
=0+16384+8192+4096+2048+1024+512+256+128+64+32+16+8+4+2+1
=32767
অর্থাৎ “int” ডাটা টাইপের সর্বোচ্চ
ধনাত্মক মান ৩২৭৬৭। এখান আপনার
যদি ৩২৭৬৭ থেকে বড় মান নিয়ে কাজ
করতে চান, তাহলে আপনাকে অব্যশই
এমন একটি ডাটা টাইপ
বেছে নিতে হবে যার জন্য ২ বাইটের
চেয়ে বেশি মেমরী সৃষ্টি হয়। long int
এর জন্য ৪ বাইট = ৪*৮ বিট =৩২ বিট
মেমরী তৈরি হয়।তাই ছোট মানের
জন্য int আর বড় মানের জন্য long int
ব্যবহার করা হয়।

কিছু বিশেষ বর্ন:
ইতিমধ্যে আপনি জানেন printf()
ফাংশনের ভিতরে ডাবল ইনভার্টেট
কমা দিয়ে কিছু লিখলে সেই
লেখাটি আউটপুট
স্ক্রিনে ভেসে উঠে। কিন্তু ডাবল
ইনভার্টেট কমার ভেতরে যেই
লেখাটি থাকে সেখানে কোথাও
যদি \n থাকে তাহলে \n এর পরের
লেখাটি নতুন লাইন থেকে প্রিন্ট হয়।
যেমনঃ
1 printf ("Hello beginner\nwell done!" );
লিখলে আউটপুট হবেঃ
Hello beginner
well done
নিচের প্রোগ্রামটি রান করেই
দেখুনঃ

1★#include
2★int main()
3★{
4★printf ("Hello beginner\nwell done!" );
5★return 0;
6★}

OUTPUT
Hello beginner
well done
একই ভাবে printf() ফাংশনের
ভিতরে ডাবল ইনভার্টেট কমার
মাঝে /t থাকলে /t এর পরের
পরবর্তী লেখাটি একটি ট্যাবের
সমপরিমান সামনে থেকে শুরু হয়।

1★#include
2★int main()
3★{
4★printf ("Hello beginner\nwell done!" );
5★return 0;
6★}
OUTPUT
Hello beginner well done
আজ এতোটুকি।পরের পোস্টএ দেখা হবে।
আজ আমি ইচ্ছা করে আপনাকে এত বড় একটি টিউন দিলাম।কিন্তু আমার কথা আপ্নারা ভাবেন না।সুধু পোস্ট টা পড়েই জান কোন কমেন্ট করেন না।আর ভাই পোস্টটি তে দেয়া প্রত্যেকটি লিন্ক এ একটি ক্লিক করবেন।তাহলেই আমি পরের পোস্টটি করব। পোস্ট কিন্তু অনেক গুলো হবে।

আজ এতোটুকি।পরের পোস্টএ দেখা হবে।
note:code গুলো রান দেয়ার সময় ১২৩৪৫৬ এবং ★ চিহ্ন গুলো দিবেন না।