.

.

শুক্রবার, ৪ ডিসেম্বর, ২০১৫

সি প্রোগ্রামিং শিখি (পর্ব৪) ---ডাটা ইনপুট ও আউটপুট ১

[৩য় পর্বের পর থেকেঃ] ডাটা ইনপুট এবং আউটপুট এর প্রারম্ভিকা
ডাটা ইনপুট এবং আউটপুটঃ ডাটা বলতে সাধারন বা আক্ষরিক অর্থে আমরা কি বুঝে থাকি? নথিপত্র বা ফাইল, দরকারি কাগজাদি। তাইতো? কিন্তু কম্পিউটারের ক্ষেত্রে ডাটা বলতে নির্দেশনা বা ইন্সট্রাকশন বুঝায়। মানে ডাটা ইনপুট বলতে কম্পিউটারকে ব্যবহারকারী তার ইচ্ছে অনুযায়ী নির্দেশনা দিবে মাউস কি-বোর্ডের মাধ্যমে সেটা ডাটা ইনপুট, আর কম্পিউটার ব্যবহারকারীর প্রদত্ত ডাটা ব্যবহার করে যে ফলাফল প্রদর্শন করবে সেটাই আউটপুট।
একটা উদ্ভট উদাহরন দিয়ে ব্যাপারটি তোমাদের কাছে পরিস্কার করিঃ
তোমরা নিশ্চয়ই ব্ল্যান্ডার মেশিন এর নাম শুনেছ। কি, শুনেছো তো? নাকি? আশা করব ব্ল্যান্ডার মেশিন সম্পর্কে ধারনা আছে। আচ্ছা, তাহলে ব্ল্যন্ডার মেশিনে তুমি একটি পাকা আম দিয়েছো, তাহলে কিছুক্ষন পর তুমি ব্ল্যান্ডার মেশিন থেকে কি পাবে? আমের জুস। তাইনা?
তাহলে চিন্তা কর, তুমি কি দিয়েছিলে, কী পেয়েছো? দিয়েছিলে আম, পেয়েছো আমের জুস।
তাহলে এখন যদি তুমি কম্পিউটার কে দুটো নাম্বার ৫ আর ১০ দাও এবং সাথে যদি বলে দাও যে এই নাম্বারগুলো যোগ কর, তাহলে কম্পিউটার তোমাকে কি দিবে উত্তর? নিশ্চয়ই ১৫।
এই যে তুমি কম্পিউটার কে দুটো নাম্বার ৫ এবং ১০ দিয়েছো, এদেরকে বলা হবে ডাটা ইনপুট এবং কম্পিউটার তোমাকে এই নাম্বার গুলো যোগ করে যে উত্তর দিলো মানে ১৫, সেটা হচ্ছে আউটপুট। আশা করি এখানে আর কোন সমস্যা নেই।
ডাটাটাইপ(Data-Type): ডাটা টাইপ বলে সাধারনত কম্পিউটারকে যে ইন্সট্রাকসন দেয়া হবে সেটা কোন ধরনের তাই বুঝায়। ডাটা টাইপ মুলত চার ধরনের হয়।
  • integer(পুর্নসংখা)
  • character(অক্ষর)
  • float(দশমিক বা ভগ্নাংশ)
  • double(দশমিক বা ভগ্নাংশ কিন্তু এর মেমোরি float টাইপের ডাটার চেয়ে বেশি)
Integer বা পুর্নসংখ্যা, দশমিক বা ভগ্নাংশ কি সেগুলো আশা করি বুঝাতে হবে না।
Identifiers and Keywords প্রোগ্রাম লেখার সময় ব্যাখ্যা করা হবে। ভেরিয়েবল সম্পর্কে প্রথম পর্বে বলা আছে। তার পর ও আরো কিছু কথা বলে নেই।
Interger(এটি একটি ডাটা টাইপঃ Short form - int) দ্বারা একটি ভেরিয়েবল এর মান শুধুমাত্র পুর্নসংখ্যা নির্দেশ করে। কোন একটি ভেরিয়েবল যদি x এবং এটি যদি পুর্ন সংখ্যা হয় তবে প্রোগ্রাম এর স্টেটমেন্ট(স্টেটমেন্ট কি সেটা আগের পর্বগুলো তে বর্নিত) হবে নিচের মতঃ
1
int x;
কোন ভেরিয়েবল যদি Letter বা অক্ষর হয় তবে স্টেটমেন্ট হবে নিচের মতঃ
1
char (variable);
মানে x যদি কোন Character Type Variable অর্থাৎ অক্ষর বুঝায় তবে স্টেটমেন্ট হবে নিচের মতঃ
1
char x;
আবার x যদি ভগ্নাংশ হয় তবে স্টেটমেন্ট হবে নিচের মতঃ
1
float x;
অথবা
1
double x;
তাহলে উপরের আলোচনা থেকে কি বুঝলে? Statement কেমন হবে?
দেখতো একটি statement এর সাধারন গঠন এই রকম হবে না?
1
Data Types (Variable);
তাহলে একটা প্রোগ্রাম এর গঠন কি রকম হবেঃ (নিচে দেখো)
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
       data types variables;
       printf(" ");
       return 0;
}
* না বুঝে থাকলে কমেন্ট করতে পারো।
এখন নিচের প্রোগ্রামটি কোডব্লকস এ লিখে রান করাওঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main()
{
      int x;
      int y;
      int total;
      x = 5;
      y = 10;
      total = x+y;
      printf("%d\n",total);
      return 0;
}
কি আউটপুট আসছে? ১৫। তাইনা? (নিচের ছবিতে দেখো:)
উপরের প্রোগ্রাম টিতে কি করেছি দেখো। x,y,total নামে তিনটা ভেরিয়েবল নিলাম। সাথে সাথে বলে দিলাম ভেরিয়েবল গুলো কোন ধরনের মানে Interger, float, char না double । দেখো, আমি উপরের প্রোগ্রামে int এর মাধ্যমে কম্পিউটারকে বলে দিয়েছি যে x, y, total এই তিনটা ভেরিয়েবলই Integer বা পুর্নসংখ্যা। এর সাথে সাথে কম্পিউটার তার মেমোরিতে এই তিনটি ভেরিয়েবল এর জন্য আলাদা আলাদা তিনটি ফাকা জায়গা তৈরী করবে।
কম্পিউটার এর ভেরিয়েবল মেমোরির হিসাব কিভাবে হয় সেই সম্পর্কে কোন ধারনা আছে? না থাকলে এখন আসি একটা ভেরিয়েবল এর জন্য কম্পিউটারে কত মেমোরি Reserve করে থাকে।
  • integer ভেরিয়েবল এর জন্য মেমোরি প্রয়োজনঃ ২ বাইটস
  • character ভেরিয়েবল এর জন্য মেমোরি প্রয়োজনঃ ১ বাইট
  • float ভেরিয়েবল এর জন্য মেমোরি প্রয়োজনঃ ৪ বাইটস
  • double ভেরিয়েবল এর জন্য মেমোরি প্রয়োজনঃ ৮ বাইটস
যখন ই আমরা কোন ভেরিয়েবল কে Integer হিসেবে নিবো মানে স্টেটমেন্ট হবে int x; (x= ভেরিয়েবল) তখন এই x এর জন্য কম্পিউটারের মেমোরিতে ২ বাইটস এর মেমোরি ফাকা হবে (মানে Reseve বা সংরক্ষিত হবে)।
যখন এই ভেরিয়েবল এর জন্য কোন মান দেবো তখন কম্পিউটার এই ভেরিয়েবল এর জন্য যে মেমোরি ফাকা করেছিল সেখানে বাইনারি আকারে রাখবে।
x এর জন্য ২ বাইটস এর জন্য ফাকা মেমোরি রাখবে।
8 bits = 1 Bytes (For Character Type Variable)
Integer এর Memory 2 Bytes মানে 16 Bits
16 Bits = 2 Bytes (For int Type Variable)
একই ভাবে
32 bits = 4 bytes (For float Type Variable)
64 bits = 8 bytes (For double Type Variable)
যেমনঃ উপরের প্রোগ্রামে প্রথমে কম্পিউটার কে বলেছি যে x একটি Integer Type এর ভেরিয়েবল। এতে কম্পিউটার উপরের চিত্রের মত ১৬ বিট এর ফাকা মেমোরি নিয়েছে x ভেরিয়েবল এর জন্য। তারপর আবার x এর মান 5 নিলাম। কম্পিউটার 0 আর 1 ছাড়া তো কিছুই বুঝেনা, মানে বাইনারি সংখ্যা ছাড়া কিছুই বুঝেনা। তাই কম্পিউটার x এর মান 5 কে প্রথমে বাইনারী তে কনভার্ট করবেঃ
Decimal 5 = 101 (In Binary)
এখন এই বাইনারি সংখ্যা টিকে ১৬ বিট এর ফাকা মেমোরিতে রাখবে।
নিচের ছবিতে দেখো, তাহলে ভালো ভাবে বুঝতে পারবে...
আশা করি উপরের ছবিটি দেখে বুঝতে পারছো কম্পিউটার ডেসিমাল সংখ্যাকে বাইনারী তে কনভার্ট করে তার মেমোরিতে কিভাবে সংরক্ষন করে।
প্রথম Variable x এর মান বাইনারীতে কনভার্ট করে উপরের চিত্রের মত করে x এর জন্য ফাকা মেমোরিতে সংরক্ষন করে। যে কয়টা ডিজিটই ফাকা থাকবে x =5 নেবার পরে, কম্পিউটার বাকি ফাকা ঘর গুলো কে 0(শুন্য) ধরে নিবে নিজ থেকে।
তারপর একই নিয়মে Variable y এর জন্য ১৬ বিট এর একটি ফাকা মেমোরি এবং যখন y এর মান 10 দিলাম কম্পিউটার 10 কে ডেসিমাল থেকে বাইনারী তে কনভার্ট করে 16 Bit এর ফাকা মেমোরিতে রাখে।
নিচের ছবিতে দেখতে পারোঃ
তারপর একই নিয়মে Variable total এর জন্য ১৬ বিট এর একটি ফাকা মেমোরি নিবে। এবার দেখো total এর মান আমি কি লিখেছি?
1
total = x + y;
মানে total হবে x এবং y এর যোগফল এর সমান। তাই এখন কম্পিউটার x এবং y এর বাইনারী মান গুলো যোগ করবে। এটা ভেবো না কম্পিউটার 5+10 করবে। কম্পিউটার মান গুলো মেমোরিতে বাইনারী হিসেবে রেখেছে। তাই যোগটাও কিন্তু বাইনারী তে ই করবে। বাইনারী যোগ-বিয়োগ পারো?? না পারলে Google.com এ গিয়ে বাইনারী যোগ বিয়োগ লিখে সার্চ করলে শত শত টিউটোরিয়াল পেয়ে যাবে। পারলে আয়ত্ত করে নাও।
হ্যা, কাজের কথায় আসি।
1
total = x + y;
মানে x এবং y এর বাইনারী মান যোগ করে total ভেরিয়েবল এর জন্য ফাকা মেমোরিতে রাখবে।
এখন এই 1111 কে total এর মান হিসেবে মেমোরিতে রাখবে।
তারপর প্রিন্ট করার সময় এই 1111 কে কম্পিউটার আবার ডেসিমালে কনভার্ট করে 15 প্রিন্ট করবে।
উপরে প্রোগ্রামে নিশ্চয়ই খেয়াল করেছ Printf ফাংশন টা। কেমন?
1
printf("%d\n",total);
এখানে %d মানে Display Integer অর্থাৎ পুর্নসংখ্যা দেখাবে। এখন দেখো তুমি যদি ভেরিয়েবল গুলো ইন্টিজার না নিয়ে float, character বা double নিতে তাহলে কি হত?
Character হলে "%c"
Integer হলে "%d"
float হলে "%f"
double হলে "%lf"
দিয়ে প্রিন্ট করতে হয়। এখানে %lf মানে হল Display double, %f মানে হল Display float আর %c মানে হল Display character
এখন আবার দেখো,
1
printf("%d\n",total);
স্টেটমেন্ট এ %d দিয়ে Integer প্রিন্ট করতে বলেছি, কিন্তু কোন ইন্টিজার??? এর পরেই দেখো ","(কমা) দিয়ে total লেখা আছে। মানে এখানে %d দিয়ে total এর মান প্রিন্ট করতে বলেছি। আশা করি বুঝতে পেরেছো।
এখন তুমি total এর জায়গায় x অথবা y বসিয়ে প্রোগ্রামটিকে রান করে দেখো। রান করে দেখলে ই বুঝতে পারবে এই ফাংশন এর কাজ টা।
মানে কোড টিকে মডিফাই করে নিচের মত কোড করে লিখঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main()
{
      int x;
      int y;
      int total;
      x = 5;
      y = 10;
      total = a+b;
      printf("%d\n",x);
      return 0;
}
আবার
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main()
{
      int x;
      int y;
      int total;
      x = 5;
      y = 10;
      total = a+b;
      printf("%d\n",y);
      return 0;
}
আশা করি %d এর ব্যবহার বুঝতে পেরেছো।
আবার বলিঃ
%d means Display Integer
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
      int a;
      a = 10;
      printf("%d\n", a);
      return 0;
}
আউটপুট এ %d, a ভেরিয়েবল এর মান দিয়ে রিপ্লেস হয়ে যাবে......

সংগৃহীতঃ
সৌজন্যেঃComputer programming LIVE

M05T4F4

About M05T4F4

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.

Subscribe to this Blog via Email :