গত পর্বগুলো যারা পড়েন নি, তারা এই লিংক থেকে পড়ে আসতে পারেন।
পর্ব ১
পর্ব ২
পর্ব ৩
আজকের পর্বে প্রথমে আমরা জানবো যে কতগুলো মান আমরা ডাটা হিসেবে এন্ট্রি করতে পারি, তারপর জানবো দশমিক সংখ্যার যোগফল নির্ণয় করা।
প্রথমে নিচের প্রোগ্রামটি খেয়াল করুন।
#include <stdio.h>
int main()
{
int a;
a = 1000;
printf(“Value of a is %d\n”, a);
a = -21000;
printf(“Value of a is %d\n”, a);
a = 10000000;
printf(“Value of a is %d\n”, a);
a = -10000000;
printf(“Value of a is %d\n”, a);
a = 100020004000503;
printf(“Value of a is %d\n”, a);
a = -4325987632;
printf(“Value of a is %d\n”, a);
return 0;
}
ইনপুট-
আউটপুট-
এখানে দেখুন লাস্টের দুটো সংখ্যার সঠিক মান রেজাল্ট এ দেখায় নি। এর কারণ হলো একটা নির্দিষ্ট লিমিট আছে যার বাইরে প্রোগ্রাম আমাদের সংখ্যা দেখাবে না।
যেসব মান -2147483648 থেকে 2147483647 এর মধ্যে আছে, শুধু সেই মানগুলোই ঠিকঠাক শো করবে। কারণ এই রেঞ্জের বাইরের সংখ্যা int টাইপের ভ্যারিয়েবলে রাখা যায় না। এটি হলো int টাইপের সংখ্যার লিমিট।
সি প্রোগ্রামিং এ int টাইপের ডাটার জন্য মেমোরিতে ৪ বাইট (4 byte) জায়গা ব্যবহৃত হয়। ৪ বাইট মানে ৩২ বিট (1 byte = 8 bit)।
প্রতি বিটে 0 অথবা 1 যেকোনো একটি জিনিস রাখা যায়।
তাহলে একটি বিট দিয়ে আমরা মোট দুটি সংখ্যা প্রকাশ করতে পারি: 0 আর 1।
তাহলে, দুটি বিট দিয়ে প্রকাশ করা যায় চারটি সংখ্যাঃ 00, 01, 10, 11
এভাবে 32 বিট দিয়ে প্রকাশ করা যাবে 232 টি সংখ্যা।
232 = 4294967296
এখন, যদি অর্ধেক ধনাত্মক আর অর্ধেক ঋণাত্মক সংখ্যা
হয়,
–2147483648 থেকে –1 পর্যন্ত মোট 2147483648টি সংখ্যা
আবার,
0 থেকে 2147483647 পর্যন্ত মোট 2147483648টি সংখ্যা।
অর্থাৎ সহজ ভাষায়, 32বিটে 4294967296টি ভিন্ন সংখ্য রাখা যায় যার মধ্যে ধনাত্মক ও ঋণাত্মক সংখ্যা সমান সংখ্যক থাকবে।
আরো সহজ ভাবে বললে, int টাইপের ভ্যারিয়েবলে আমরা –2147483648 থেকে 2147483647 পর্যন্ত
সংখ্যাগুলো রাখতে পারি। এর বাইরে নয়।
এই গেল প্রোগ্রামিং এ সংখ্যার সীমা।
এবার,
গতকাল যে আমরা সংখ্যা নিয়ে বেশ কয়েকটা প্রোগ্রাম করলাম, আপনাদের মাথায় নিশ্চয় প্রশ্ন জেগেছে যে দশমিক সংখ্যা ব্যবহার করলে কী হতো?!
অনেকে হয়তো নিজে নিজেই চেস্টা করেছেন এবং বুঝতেও পেরেছেন।
আসুন এবার আমরাও চেস্টা করি।
#include <stdio.h>
int main ()
{
int a;
int b;
int sum;
a=10.55;
b=20.33;
sum=a+b;
printf(“Total %d”, sum);
return 0;
বুঝতে পারলেন? তারমানে, দশমিক এর পরের সংখ্যা গুলো যোগ করে নি আমাদের প্রোগ্রাম। আমরা 10.55 ও 20.33 লিখেছি কিন্তু কম্পিউটার সেটাকে 10 ও 20 বলেই বিবেচনা করেছে।
এর কারণ কী?
এর কারণ হলো টাইপ কাস্টিং। বাস্তব সংখ্যা রাখার জন্য সি প্রোগ্রামিং এ double নামক একটি ডাটা টাইপ রয়েছে। যার ফলে টাইপ কাস্টের মাধ্যমে double টাইপের সংখ্যাটিকে int টাইপে নেয়া হয়েছে, এটি আপনা-আপ্নিই ঘটে।
অর্থাৎ, double টাইপ থেকে int টাইপে টাইপ কাস্ট করলে দশমিক এর পরের অংশগুলো কম্পিউটার বিবেচনা করবে না।
তাহলে, প্রশ্ন হলো এখন আমরা কীভাবে দশমিক সংখ্যার যোগফল করতে পারবো?
হ্যা, আমরা int এর পরিবর্তে double ভ্যারিয়েবল ব্যবহার করবো।
দেখুন।
#include <stdio.h>
int main ()
{
double a, b, sum;
a=10.55;
b=20.33;
printf(“Total %lf”, sum);
return 0;
}
ইনপুট-
আউটপুট-
এখানে আমরা int এর বদলে double ব্যবহার করেছি এবং নির্দেশকও পরিবর্তন করেছি।
আমরা জানি যে %d হলো int এর নির্দেশক, তেমনি double এর নির্দেশক %lf (এল এফ)।
তাই, %d এর জায়গায় %lf লিখেছি।
রেজাল্টে খেয়াল করে দেখুন এখানে দশমিক এর পর ৬ ঘর পর্যন্ত আসছে, যেটা ডিফল্ট ভাবেই আসছে, অথচ ২ ঘর ই যথেষ্ট ছিল।
এখন দেখবো কীভাবে দশমিক এর পর শুধু দুই ঘর পর্যন্ত আনা যায়।
ইনপুট-
আউটপুট-
বেশি কিছু নয়। শুধু %lf এর জায়গায় %0.2lf লিখে দিয়েছি। তাহলে দশমিকের পর যদি ৩ ঘর আনতে চান তাহলে কী লিখেবন?
হ্যা, %0.3lf
এবার চলুন গতকালের মতো দুইটা একত্র করে সংক্ষেপে লিখি।
ইনপুট-
আউটপুট-
ব্যাস।
আজ এ পর্যন্তই।
আগামী পর্বে আমরা scanf() ফাংশনের ব্যবহার শিখবো, যেটার কাজ হলো আউটপুট এর মধ্যে ইউজার ডাটা ইনপুট অপশন দেয়া যেটার ভিত্তিতে রেজাল্ট আসবে।
অনেকটা ক্যালকুলেটর এর মতো। ☺️
আরেকটা কথা,
আমি এখানে সফটওয়্যার বানানো শেখাচ্ছি না। অনেকে হয়তো এই আশাতে রয়েছেন যে আমি ধীরে ধীরে প্রোগ্রামিং শিখিয়ে সেখান থেকে সফটওয়্যার বানানো শেখাবো, ?
এমন কিছু না।
আমি শুধু সি-প্রোগ্রামিং এর ব্যাসিক গুলো শেখাচ্ছি। এটাকে এমন মনে করতে পারেন যে আমি বর্ণমালা শেখাচ্ছি, এরপর সে বর্ণমালা শিখে আপনি লেখা বুঝতে বা পড়তে পারবেন এবং লিখতে পারবেন। এখন আপনি আপনি শুধু বর্ণমালা শিখেই তো আর সাহিত্য লিখতে বসতে পারবেন না, তাই না?!
এরকম ই। এখানে শুধু সি প্রোগ্রামিং এর হাতেখড়ি হবে। সফটওয়্যার ডেভেলপমেন্ট শিখতে শুধু এই একটা সি-প্রোগ্রামিং ভাষা আয়ত্ত করাই যথেষ্ট নয়। আবার, আমি আপনাকে লিখে লিখে বা ছবির মাধ্যমেও সঠিকভাবে তা শেখাতে পারবো না। বিভিন্ন কোর্স আছে, সেগুলো কিনবেন, শিখবেন। এখানে নয়। ?
ধন্যবাদ ভাই,
আমার সামনে HSC, তাই তার আগে আমি লুপ পর্যন্ত শেষ করে নভেম্বর মাস বিরতি নিয়ে বাকি গুলো চালিয়ে যাওয়ার ইচ্ছা আছে। ?
পরীক্ষার আগ পর্যন্ত চালিয়ে যাবো।