ক্যারেক্টার এর ক্যারেক্টারিস্টিক

সাধারন কিছু কথাঃ

ক্যারেক্টার হচ্ছে ১ বাইট । ১ বাইট = ৮ বিট । যেহেতু কম্পিউটার ০ ও ১ ছাড়া কিছু বুঝে না । অর্থাৎ ১ বিট এ সর্বচ্চ ২ টা সংখ্যা(০,১) হইতে পারে । ২ বিট এ হইতে পারে ৪ টি (০০,০১,১০,১১)। এভাবে ৮ বিট এ সর্বচ্চ ২৫৬ টি সংখ্যা থাকতে পারে । এর অর্থ হল ১ বাইট এ থাকে মোট ২৫৬ টি সংখ্যা । কম্পিউটার এ মোট ২৫৬ টি ক্যারেক্টার । ০ থেকে ২৫৫ পর্যন্ত মোট ২৫৬ টি সংখ্যা দ্বারা ২৫৬ টি ক্যারেক্টার প্রকাশ পায় । এদেরকে ASCII মান বলে । প্রতিটি ক্যারেক্টার এর নির্দিষ্ট মান আছে যা দ্বারা ওই ক্যারেক্টারকে নির্দেশ করা হয় ।

যখন কী বোর্ড এ কোন কী চাপা হয় তখন কম্পিউটার আসলে সেই অক্ষরটির ASCII মান পায় এবং মানটাকে প্রসেস করে Video Adapter এর মাধ্যমে অক্ষরটির গঠন মনিটর এ দেখায় ।

ProgrammingErKhutinatifnlProgrammingErKhutinati2fnl

ASCII মানের মজার কথাঃ

Notepad ওপেন করুন । এবার Alt কী চেপে ক্যারেক্টার এর ASCII মান চাপুন । দেখবেন ক্যারেক্টারটি প্রিন্ট হইছে । যেমনঃ Alt চেপে ৬৫ চাপলে A দেখা যাবে ।

এবার facebook এ কাউকে চেট এ পেলে তাকে Alt +৩ চেপে পাঠিয়ে দিন । আরও মজা পাবেন …

 

ভেরিয়েবলে ক্যারেক্টার অ্যাসাইনঃ

একটি ক্যারেক্টার কোন ভেরিয়েবলে অ্যাসাইন করতে হলে ভেরিয়েবলটির ডাটাটাইপ char হতে হবে । ডিক্লিয়ার করার পদ্ধতি char ch; । এর অর্থ হল এখানে ch নামে একটি ক্যারেক্টার ভেরিয়েবল ডিক্লিয়ার করা হইছে ।

অ্যাসাইন করার পদ্ধতিঃ

  • সরাসরি অ্যাসাইন করাঃ

ch=A’; // অর্থাৎ ch এর মধ্যে A অ্যাসাইন হইল ।

আবার c=B’; ch=c; // প্রথমে c এর মধ্যে B অ্যাসাইন হইল । তারপর c এর ক্যারেক্টারটি ch এর মধ্যে অ্যাসাইন হল ।

  • ASCII মান দ্বারা অ্যাসাইন করাঃ

ch=65; // এর অর্থ ch এ সেই ক্যারেক্টার অ্যাসাইন হইছে যার ASCII মান ৬৫ ।

আবার একটি ইন্টিজার ভেরিয়েবলে ক্যারেক্টারের ASCII মান নিয়ে অ্যাসাইন করা যায় ।

উদাহরনঃ

int a=65; char ch=a;

[ ch এ সেই ক্যারেক্টার অ্যাসাইন হইছে যার ASCII মান i এর সমান অর্থাৎ 65 ।]

 

কিছু বিষয়ঃ
  • 1 ও 1’ এ দুটির মধ্যে পার্থক্য হল একটি ইন্টিজার অপরটি কেরেক্টার । 1 এর মান হল 1 । আর 1’ এর মান হল 49  যা ক্যারেক্টার 1 এর ASCII মান।
  • char ch; এখানে ch এ একটি মাত্র ক্যারেক্টার বসবে । ch=`ab’; লিখলে ভুল হবে । যদিও ব্যপারটি কম্পাইলার নির্ভর যে ch এ কোন ক্যারেক্টারটি বসবে , তবে কম্পাইল করে দেখেছি যে সবার শেষের ক্যারেক্টারটি অ্যাসাইন হয় । অর্থাৎ এক্ষেত্রে ch এর মান হবে b ।
  • যেহেতু ASCII মান সবসময় ইন্টিজার সেহেতু ইন্টিজার মান দ্বারা ক্যারেক্টার এর মান অ্যাসাইন করা যাবে । float, double…. দিয়ে না । char c=65.2; লিখলে ভুল হবে ।

 

ক্যারেক্টার ইনপুট আউটপুটঃ

ক্যারেক্টার ইনপুট নেওয়ার জন্য সর্বাধিক প্রচলিত দুটি পদ্ধতি হল scanf(“”);getchar();

scanf(“%c”,&ch);  getchar(ch);  এর অর্থ হল কী বোর্ড থেকে একটি ক্যারেক্টার ইনপুট নিবে যা ch ভেরিয়েবল এর মধ্যে অ্যাসাইন হবে ।

ক্যারেক্টার প্রিন্ট করার জন্যও পদ্ধতি দুটি ।

printf(“”);putchar();

printf(“%c”,ch);  putchar(ch); এর অর্থ হল ch ভেরিয়েবল এর মান স্ক্রিনে প্রিন্ট করে দেখাবে ।

 

ক্যারেক্টার এর ক্যারেক্টারিস্টিক

এইবার মূল আলচনায় আসা যাক । দুইটি ইন্টিজার ইনপুট নেওয়ার ক্ষেত্রে …

এখানে ইনপুটে a=5,b=6 নিতে চাইলে আমরা ইনপুট স্ক্রিনে লিখি 5<space>6<enter>  এর ফলে স্ক্রিনে 5,6 প্রিন্ট হবে ।

 

ক্যারেক্টার এর ক্ষেত্রে এভাবে কাজ করলে কি আমরা সঠিক ফলাফল পাব?

এখানে ইনপুটে a=m,b=n নিতে চাইলে আমরা ইনপুট স্ক্রিনে লিখি m<space>n<enter>  এর ফলে স্ক্রিনে m,n প্রিন্ট হওয়ার কথা । কিন্তু শুধু m প্রিন্ট হবে । কারন এখানে m, <space>, n, <enter>  মোট ৪টি ক্যারেক্টার ইনপুট এ নেওয়া হইছে । এর ফলে a তে m ও b তে <space> অ্যাসাইন হইছে।

 

এবার নিচের প্রোগ্রামটি দেখা যাক ।

 

cats

%ডাটাটাইপ      %c

মাঝে মাঝে ক্যারেক্টার ইনপুট নেওয়ার পদ্ধতি একটু আলাদা থাকে । যেমন আমরা তারিখ ইনপুট এইভাবে দিতে পারি । ২০/১২/২০১২ এখানে দুইটি ইন্টিজার এর মাঝে স্পেস না থেকে স্লেস (/) আছে । এই ধরনের ইনপুট নেওয়ার ক্ষেত্রে %d%c পাশাপাশি ব্যাবহার করা সহজ একটি পদ্ধতি ।

20-12-2012  এটা ইনপুট এ নিতে হইলে নিচের পদ্ধতি ব্যাবহার করতে পারেন ।

  • char c1,c2;
  • int date,month,year;
  • scanf(“%d%c%d%c%d”,&date,&c1,&month,&c2,&year);

এখানে  date=20;    c1=-;        month=12;              c2=-;        year=2012;

এখানে সাধারন ভাবে “-” এর কোন কাজ নাই । কিন্তু “-” এর জায়গায় অন্য ক্যারেক্টার থাকতে পারে যা প্রোগ্রাম এ ব্যাবহার করার প্রয়োজন হতে পারে । সে ক্ষেত্রে c1 ও c2 ব্যাবহার করা যাইতে পারে ।

  • শুধুমাত্র %d%c না %c%c, %s%c, %f%c, সব ব্যাবহার করা যায় ।

 

%*ডাটাটাইপ

যদি প্রোগ্রামের ইনপুট নেওয়ার সময় কিছু বাদ দিতে হয় তবে %* তারপর ডাটাটাইপ দিতে হয় । যেমন 20-12-2012 ইনপুট এ নেওয়ার সময় “-” এর কোন কাজ নাই । তাই আমরা চাইলে c1 ও c2 ব্যাবহার না করতে পারি ।

সে ক্ষেত্রে লিখতে হবে ।

  • char c1,c2;
  • int date,month,year;
  • scanf(“%d%*c%d%*c%d”,&date,&month,&year);

 

এক্ষেত্রে মাঝখানের দুটি “-” ইনপুটেই নিবে না ।

 

আমার আলোচনা এখানেই শেষ । এবার এমন একটি প্রোগ্রাম লিখতে পারেন যা ক্যালকুলেটর হিসেবে কাজ করবে ।

চেষ্টা করুনঃ

প্রোগ্রামিং সমস্যা বেসিক পর্ব ০৪ – যোগ বিয়োগ গুন ভাগ

 

 

3 comments

  1. milton says:

    vai ami codeblock downlode korci c programing ar jonno..but kaj korte parci na..ami windows8 use kori ata ki problem……..compailer kaj kore na..run korte gale……..it seems that this file has not been built yet.do you want to built it now? massage show kore ki korbo please help me……..

Leave a Reply

Your email address will not be published. Required fields are marked *