Monday, November 11, 2013

C প্রোগ্রামিং দ্বিতীয় অধ্যায় - Character Type Data- PART - 5

Character Type Data:
সাধারনত Character Type Data বলতে A-Z, a-z, 0-9 এবং অন্যান্য চিন্হগুলো (যেমনঃ সেমিকোলন, কোলন এবং এপ্রকার চিন্হ সমুহ ) কেই বুঝিয়ে থাকে।

নিচের দেখতে পারোঃ
☺ ☻ ♥ ♦ ♣ ♠ ♫ ☼ ► ◄ ↕ ‼ ¶ § ▬ ↨ ↑ ↓ → ← ∟ ↔ ▲ ▼ ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d
e f g h i j k l m n o p q r s t u v w x y z { | } ~ ⌂ Ç ü é â ä à å ç ê ë è ï î ì Ä Å É æ Æ ô ö ò û ù ÿ Ö
Ü ¢ £ ¥ ₧ ƒ á í ó ú ñ Ñ ª º ¿ ⌐ ¬ ½ ¼ ¡ « » ░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ ┴ ┬ ├ ─ ┼ ╞
╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌ ▐ ▀ α ß Γ π Σ σ µ τ Φ Θ Ω δ ∞ φ ε ∩ ≡ ± ≥
≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■

উপরের A-Z, a-z, 0-9 এবং অন্যান্য চিন্হগুলো একেকটা Character যখন Data Type Character হবে মানেঃ
আশা করি বুঝতে পেরেছো।
একটা Char Data Type একটা মাত্র Character একবারে প্রিন্ট করতে পারে।
Character Variable এর মান যেভাবে ইনপুট নিতে হয়ঃ
1
2
char a;
a = 'input/Data';
না বুঝতে পারলে নিচের ছবিটি দেখোঃ

ধর, আমরা Integer Data Type এর ক্ষেত্রে a=50 নিয়ে থাকি, কিন্তু Character এর ক্ষেত্রে 50 নিলে কি হবে??
এবার নিচের প্রোগ্রাম টা লিখে রান করাওঃ
1
2
3
4
5
6
7
8
9
#include
int main()
{
      char a;
      a = 'K';
      printf("%c\n", a);
      return 0;
}
আউটপুট কি আসে?
K
তাহলে নিচের প্রোগ্রামটি লিখে রান করাওঃ
1
2
3
4
5
6
7
8
9
#include
int main()
{
      char a;
      a = 'KF';
      printf("%c\n", a);
      return 0;
}
আউটপুট কি আসে?
F

কিন্তু আমি তো ইনপুট হিসেবে KF দিলাম, তাহলে আউটপুট F আসে কেনো??
ব্যাখ্যাঃ
Character Type এর ভেরিয়বল এর মেমোরি কত মনে আছে?? মনে থাকলে খুব ভালো তবে না থাকলেও চলবে কারন আস্তে আস্তে যত বেশী কোড প্র্যাকটিস করবে তত বেশী অভিজ্ঞতা হবে এবং সাথে সাথে কোন ধরনের ডাটার মেমোরি কত সেটা মাথার মধ্যে এমনিতে ই একতা জায়গা করে নিবে। যাদের Character Type এর ভেরিয়েবল এর মেমোরি মনে নেই তাদেরকে আরো একবার মনে করানোর জন্যে বলতে চাই Character Type এর ভেরিয়েবল এর মেমোরি মাত্র 1 Byte ।

একটি বিশেষ কথাঃ
কম্পিউটার এর গননা শুরু হয় ০ থেকে। মানে আমরা ১ থেকে প্রথম উপাদান গুনে থাকি কিন্তু কম্পিউটার ০ থেকে প্রথম উপাদান গুনে থাকে।
Character Type Data ভেরিয়াবল এর মধ্যে একসাথে একটি মাত্র Character Store(সংরক্ষন) করে রাখতে পারে। উপরের কোড এ কম্পিউটার প্রথম উপাদান হিসেবে KF এর মধ্যে F কে নিবে কিন্তু যেহেতু কম্পিউটার একটি মাত্র Character একবারে একটি ভেরিয়েবল এর মাঝে রাখতে পারে তাই F নেবার পর আর K কে সংরক্ষন করতে পারবে না। তাই KF দিলেও শুধুমাত্র F ই প্রিন্ট করবে।

ASCII Value of Character Type Data:

প্রতিটা Character Type Data র জন্য একটি করে Decimal Code অ্যাসাইন করেয়া আছে। মানে একটা Character এর জন্য একটা নির্দিষ্ট মান কম্পিউটারের জন্য আগে থেকেই নির্ধারন করে গেছেন কম্পিউটার সি প্রোগ্রাম এর জনকগন । এই মানগুলোকে ASCII (The American standard code for information interchange) Value বলা হয়ে থাকে। মুলত Character '0'(Zero বা শুন্য) এর ASCII Value ডেসিমাল নাম্বার ৪৮ বা 48 । এভাবে '1' এর ASCII Value 49 বা ৪৯, '২' এর ASCII Value ৫০ বা 50 , 'A' এর ASCII Value ৬৫ বা 65 ।
নিচের ছবিতে ASCII Value গুলোর মান দেখতে পারোঃ (ছবিগুলো নেট থেকে সংগৃহীত)
Letter সমুহের ASCII Value:





Extended ASCII Character's value:







এখন চল তাহলে ASCII Value থেকে Character বা Letter প্রিন্ট করি। দুটো Letter বা Character যোগ ও বিয়োগ করে নতুন Character প্রিন্ট করি।
নিচের প্রোগ্রামটি লিখে রান করাওঃ
1
2
3
4
5
6
7
8
9
#include
int main()
{
     char a;
     a = 97;
     printf("%c\n", a);
     return 0;
}
আউটপুট কি আসে?
নিচের ছবিতে দেখোঃ
আউটপুট আসে ইংরেজী বর্নমালার ছোট হাতের অক্ষর 'a'

এর কারন কি?
প্রথমত আমরা ইনপুট নিয়েছি
1
2
char a;
a = 97;
এবং প্রিন্ট করেছি
1
printf("%c", a);
এখানে a = 97 এবং প্রিন্ট করতে বলেছি Data Type Character। কিন্তু উপরের ASCII Value এর Chart টা ভালো করে দেখলে ই দেখতে পাবে যে a এর ASCII Value 97 । তাই এখানে যখন a = 97 সেক্ষেত্রে 97 কে %c দিয়ে Character Type প্রিন্ট করতে বলায় সে
a
প্রিন্ট করেছে।
তাহলে নিচের কোড টা লিখে রান করাওঃ
1
2
3
4
5
6
7
8
9
10
11
#include
int main()
{
      char x;
      char y;
      x = 'A';
      y = 'z';
      printf("%c\n", y-x);
      return 0;
}
আউটপুট কত আসে?
9
তাইনা?
কিভাবে? নিচে দেখোঃ
প্রথমে আমরা নিয়েছি x = 'A' এবং y = 'z' এবং printf এর ভেতরে বলেছি y-x
এখানে যেহেতু y এবং x character Type variable, তাহলে y-x মানে x এর মান 'z' এর ASCII value থেকে y এর মান 'A' এর ASCII Value বিয়োগ করা।
A এর ASCII Value = 65
z এর ASCII Value = 122
y - x = 122-65 = 57
আর 57 কার ASCII Value??
নিশ্চয়ই 9 এর এবং তাই আউটপুট 9 এসেছে। আশা করি ব্যপারগুলো বুঝতে পেরেছো।