Responsive Ads Here

Friday, November 8, 2013

C প্রোগ্রামিং দ্বিতীয় অধ্যায় - দুটি সংখ্যা যোগ করার প্রোগ্রাম- PART - 4

এ অধ্যায়ে আমরা কিছু ছোট ছোট প্রোগ্রাম লিখব। সবগুলো প্রোগ্রাম অবশ্যই কম্পিউটারে চালিয়ে দেখবে এবং একটু পরিবর্তন করে কম্পাইল ও রান করার চেষ্টা করবে।
আমাদের প্রথম প্রোগ্রামটি হবে দুটি সংখ্যা যোগ করার প্রোগ্রাম। এখন কথা হচ্ছে, সংখ্যাগুলো তো কম্পিউটারের মেমোরিতে রাখতে হবে, সেই জটিল কাজটি কীভাবে করব? চিন্তা নেই! সব প্রোগ্রামিং ল্যাঙ্গুয়েজে ভেরিয়েবল বলে একটি জিনিস আছে যেটি কোন নির্দিষ্ট মান ধারণ করার জন্য ব্যবহার করা হয়। ভেরিয়েবলের একটি নাম দিতে হয়, তারপর ভেরিয়েবল = কোনো মান  লিখে দিলে ভেরিয়েবলের ভেতর সেটি ঢুকে যায়। এটির সঙ্গে গাণিতিক সমীকরণের কিন্তু কোনো সম্পর্ক নেই। চলো, প্রোগ্রামটি লিখে রান করাই, তারপর ব্যাখ্যা করা যাবে।


নিচের কোড টি কোডব্লকস এ লিখে রান করাওঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
#include
int main()
{
       int a;
       int b;
       int sum;
       sum = a+b;
       a = 5;
       b = 15;
       printf("%d", sum);
       return 0;
}
আউটপুট কত আসে?
56
নিচের ছবিতে দেখতে পারোঃ
আমরা ইনপুট দিয়েছি 5 এবং 15 এবং এর যোগফল চাই । তাহলে আউটপুট কত আশার কথা? নিশ্চয়ই 20 ।
কিন্তু আউটপুট তো 56 । এর কারন কি? কিছু বুঝতে পেরেছো?

না বুঝলেও চলবে। এখন বুঝে নাও। কারন হলঃ

প্রথমে কম্পিউটার কে তিনটা ভেরিয়েবল a,b,sum দিয়েছি। এতে কম্পিউটার a,b এবং sum এর জন্য তিনটা ফাকা মেমোরি (এই মেমোরি গুলোতে যেকোন মান থাকে,তবে নির্দিষ্ট নয়। এই মানগুলোকে গারবেজ বলে থাকে) নিয়েছে। এখনো কিন্তু a এবং b এর জন্য কোন মান ইনপুট হিসেবে দেয়া হয়নি। তারমানে এখন a এবং b এর মান গারবেজ সংখ্যা হিসেবে আছে। তারপর sum এর মান a এবং b এর যোগফল বলে দিলাম। কিন্তু আমি তো a আর b এর জন্য কোন মান ই দেই নি, তাহলে যোগ করবে কোন দুই মানের?
বলতে পারবে কোন দুটি মান যোগ হবে?
আশা করি বুঝতে পেরেছো? a এবং b এর গারবেজ মানের যোগ হবে। তারপর আবার দিলামঃ
1
2
a = 5;
b = 15;
কম্পিউটার এই মান গুলোকে a আর b এর মেমোরিতে রাখবে। এবার sum এর মান প্রিন্ট করার পালা।
প্রিন্ট করলাম কিন্তু মান আসলো 56 । কারন আমরা a আর b এর গারবেজ মান যোগ করে sum এ রেখেছি, তারপর আর sum এর মান পরিবর্তন হয়নি a এবং b এর মান 5 এবং 15 দেয়ার পরেও। তাই যখনঃ
1
printf("%d", sum);
দিলাম, sum তাই a আর b এর গারবেজ মানের যোগফল টাই প্রিন্ট করেছে।
আশা করি বুঝতে পেরেছো।
তারমানে Input প্রোগ্রাম প্রসেসিং করার আগেই নিতে হবে।
তাহলে উপরের কোডটি ঠিক করে লিখতে পারোঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
#include
int main()
{
       int a;
       int b;
       int sum;
       a = 5;
       b = 15;
       sum = a+b;
       printf("%d", sum);
       return 0;
}
উপরের কোড টিকে নিচের মত করেও লিখা যাবেঃ
1
2
3
4
5
6
7
8
9
10
11
#include
int main()
{
       int a,b,sum;
       a = 5;
       b = 15;
       sum = a+b;
       printf("%d", sum);
       return 0;
}
একাধিক একই ডাটাটাইপের ভেরিয়ল নিতে চাইলে ডাটা টাইপ একবার লিখে একাধিক ভেরিয়েবল নিতে পারো, তবে এক্ষেত্রে ভেরিয়েবল গুলোর মাঝে কমা দিয়ে আলাদা করে দিতে হবে।
যেমনঃ
1
int a,b,c,d,e,f;
1
double a,b,c,d,sum;
1
char a,b,c,d,e;
1
float a,sum,rahim,karim;
আশা করি বুঝেছো।
এখন নিচের কোড টি লিখো আর রান করাওঃ
1
2
3
4
5
6
7
8
9
10
11
#include
int main()
{
       int a,b,sum;
       a = 12.25;
       b = 15.85;
       sum = a+b;
       printf("%d", sum);
       return 0;
}
আউটপুট কি আসে?
27
কিন্তু আমাদের মতে আউটপুট কত আসার কথা?
28.10

তাইনা? এর কারন কি? আমরা এতক্ষন Integer Data Type ব্যবহার করেছি। তাই কম্পিউটার a = 12.25 বলতে 12 এবং b = 15.85 বলতে 15 ই নিবে কারন Integer শুধু মাত্র পুর্নসংখ্যা ই Input হিসেবে নিয়ে থাকে। তাই a = 12.25 দিলেও কম্পিউটার কেবল 12 ই মেমোরিতে সংরক্ষন করে । এভাবে b = 15.85 দিলেও 15 ই মেমোরিতে রাখতে পারে।
তাই ভগ্নাংশ Input নিতে হলে আমাদেরকে float অথবা double ডাটাটাইপ ব্যবহার করতে হবে।
নিচের প্রোগ্রামটি লিখে রান করাওঃ
1
2
3
4
5
6
7
8
9
10
11
#include
int main()
{
       float a,b,sum;
       a = 12.25;
       b = 15.85;
       sum = a+b;
       printf("%d", sum);
       return 0;
}
আউটপুট কি এসেছে? নিচের ছবিতে দেখোঃ
আউটপুট কত আসার কথা?
28.10
কিন্তু এসেছে কত?
-1610612736
তার মানে আমি একটা ভুল করেছি?
ভুলটা কি খুজে বের করতে পারবে? কিছুক্ষন চেষ্টা করে দেখতে পারো ভুল টা বের করতে পারো কিনা।

যদি না বের করতে পারো তাহলে নিচের ব্যাখ্যাটা পড়ঃ


আমরা এখানের সবগুলো ভেরিয়াবল নিয়েছি float Data type এর কিন্তু যখন আউটপুট ডিক্লেয়ার করেছি তখন কি করেছি? মানে printf ফাংশনের ভেতরে আমি %d দিয়ে float Data type এর অউতপুট ডিক্লেয়ার করেছি। ভুলটা এখানেই হয়েছে।
কোন ফাংশনের জন্য কোন ধরনের ডিক্লেয়ারেশন ব্যবহার করতে হয়। তা আবার ও দিয়ে দিলাম
Character হলে "%c"
Integer হলে "%d"
float হলে "%f"
double হলে "%lf"
তাহলে উপরের কোড টি ঠিক করে লিখে রান করাও। নিচে ছবিতে দেখোঃ
আশা করি এই ব্যাপারটি মাথায় রাখবে আর কি বলেছি বুঝতে পেরেছো।
উপরের কোড টাকে নিচের মত করেও লিখতে পারিঃ
1
2
3
4
5
6
7
8
9
10
#include
int main()
{
       float a,b;
       a = 12.25;
       b = 15.85;
       printf("%f", a+b);
       return 0;
}
উপরের কোড এ দেখো a+b এর মান আলাদা কোন ভেরিয়াবল এ না রেখে printf ফাংশন এর ভেতরে যোগ করে ই আউটপুট দিয়ে দিয়েছি। এতে a আর b এর মান সরাসরি printf ফাংশন এর ভেতরে যোগ করেই প্রিন্ট করে দিবে। আশা করি বুঝতে পেরেছো। আগের কোড গুলোতে Sum ভেরিয়েবল না নিয়ে এভাবে সরাসরি করে দেখতে পারো। যত বেশী কোড প্র্যাকটিস করবে অভিজ্ঞতা তত বেশী বাড়বে। কোড গুলা অবশ্যই নিজে টাইপ করে রান করাবে।

No comments:

Post a Comment

php4

<?php    // Start the session  session_start();  ?>  <!DOCTYPE html>  <html>  <head>       <link rel=&q...