# ক্যারেক্টার সেট

বর্তমানে আমরা বেশির ভাগ মানুষই ২ টা বা তিনটা ভাষার সাথে পরিচিত। আর এই বই টা যেহেতু বাংলাতেই লেখা, তাই ধরেই নেয়া যায় যে আমরা বাংলার সাথেও পরিচিত। আমরা লক্ষ্য করলে দেখব বাংলা ভাষায় নির্দিষ্ট কিছু চিহ্ন বা বর্ণমালা আছে। যেমন- স্বরবর্ণ, ব্যঞ্জনবর্ণ। বাংলাতে কোন কিছু লিখতে গেলে আমাদেরকে অবশ্যই এই বর্ণমালার বর্ণই ব্যবহার করতে হবে। এর বাহিরে অন্য কিছু ব্যবহার করলে তাকে আমরা আর শুদ্ধ বাংলা বলিনা। এই স্বরবর্ণ, ব্যঞ্জনবর্ণই হল বাংলা ভাষার ক্যারেক্টার সেট।

C ও এরকমই একটা ভাষা। এর ও কিছু নির্দিষ্ট ক্যারেক্টার সেট আছে যেগুলো ব্যবহার করে প্রোগ্রাম লেখা হয়।

C তে ব্যবহৃত সিম্বল বা ক্যারেক্টার গুলোকে সাধারণত ২ তা গ্রুপে ভাগ করা হয়-

     ক) সোর্স ক্যারেক্টার সেট (source character set)

     খ) এক্সিকিউশন ক্যারেক্টার সেট (execution character set)

ক) **সোর্স ক্যারেক্টার সেটঃ** আমরা C তে প্রোগ্রাম লেখার জন্য যে সকল বর্ণ (character) বা সিম্বল ব্যবহার করি সেগুলি সম্মিলিত ভাবে C এর সোর্স ক্যারেক্টার সেট নামে পরিচিত। C তে প্রোগ্রাম লেখার জন্য আমরা এই সকল ক্যারেক্টার সরাসরি ব্যবহার করতে পারি।

     ১। ইংরেজী ভাষায় ব্যবহৃত ছোট হাতের ও বড় হাতের সকল অক্ষর সমূহ (Uppercase and Lowercase Letters) অর্থাৎ A থেকে Z পর্যন্ত এবং a থেকে z পর্যন্ত যেকোনো লেটার।

     ২। ইংরেজী ভাষায় ব্যবহৃত 0 থেকে 9 পর্যন্ত যেকোনো ডিজিট (digit)।

     ৩। এগুলো ছাড়াও আরো কিছু ক্যারেক্টার ব্যবহৃত হয় C তে প্রোগ্রাম লেখার জন্য যেগুলো সাধারণত স্পেশাল ক্যারেক্টার নামে পরিচিত।

         + যোগ (Plus Sign)

         - বিয়োগ (Minus Sign)

         \_ আন্ডারস্কোর (underscore)

         \* এস্টেরিস্ক (asterisk)         

         / স্লাশ (slash)

         = সমান (equal to)

         % পারসেন্ট (percent sign)

         & অ্যাম্পারসেন্ড (ampersand)

         # হ্যাশ বা নাম্বার চিহ্ন

         ! এক্সক্লামেশন (exclamation mark)

         ? প্রশ্নবোধক Question mark)

         ^ ক্যারেট (Caret)

         " ডাবল কোটেশন (quotation mark)

         ′ এফস্টোরফ বা সিঙ্গেল কোটেশন (apostrophe)

         \~ টিলডি(tilde)

          ব্যাক স্লাশ (back slash)

         | ভারটিক্যাল বার (vertical bar)

         < ক্ষুদ্রতর (less than)

         < বৃহত্তর (greater than)

         ( লেফট প্যারেনথেসিস (left parenthesis)

         ) রাইট প্যারেনথেসিস (right parenthesis)

         { লেফট কারলি ব্রেছ (left curly brace)

         } রাইট কারলি ব্রেছ (right curly brace)

         \[ লেফট ব্রাকেট (left bracket)

         \[ রাইট ব্রাকেট (right bracket)

         : কোলন (colon)

         ; সেমিকোলন (semicolon)

         , কমা (comma)

         . ডট (dot)

         @ এট (at)

         $ ডলার (dollar)

     ৪। এই ক্যারেক্টার গুলো যথাযথ ভাবে ব্যবহার করে প্রোগ্রাম লিখতে হলে আমাদেরকে অবশ্যই স্পেস এর ব্যবহার করতে হবে যাতে প্রোগ্রাম এর এলিমেন্ট গুলো একটা আর একটার সাথে মিশে না যায়। C প্রোগ্রামে এই স্পেস নিচের যেকোনো ক্যারেক্টার ব্যবহার করে দেয়া যায়। এখানে যদিও ব্যাক স্লাশ এর সাথে আরো একটি করে ক্যারেক্টার যুক্ত কিন্তু এই ২ টা ক্যারেক্টার মিলিত ভাবে ১ টির মত কাজ করবে। এই ধরনের ক্যারেক্টার গুলো (ব্যাক স্লাশ এবং আর ১টি ক্যারেক্টার যুক্ত ভাবে) এস্কেপ সিকুয়েন্স নামে পরিচিত।

         \b ব্লাঙ্ক স্পেস (blank)

         \t হরাইজন্টাল ট্যাব (horizontal tab)

         \v ভারটিক্যাল ট্যাব (vertical tab)

         \r ক্যারিজ রিটার্ন (carriage return)

         \f ফরম ফিড (form feed)

         \n নিউ লাইন (new line)

     খ) **এক্সিকিউশন ক্যারেক্টার সেট:** C এর এক্সিকিউশন ক্যারেক্টার সেট বলতে সেই ক্যারেক্টার গুলোকে বুঝায় যেগুলো C তে লেখা কোন প্রোগ্রাম এক্সিকিউশন বা চলার সময় কাজ করে। এক্সিকিউশন ক্যারেক্টার সেট এর মধ্যে সোর্স ক্যারেক্টার সেট সহ আরো কিছু ক্যারেক্টার থাকে যেগুলো সাধারণত এস্কেপ সিকুয়েন্স এর মধ্যে পড়ে। এরকম কিছু ক্যারেক্টার হল - অ্যালার্ম বা বেল ক্যারেক্টার (\a), ব্যাক স্পেস (\b)।

আমাদের কম্পাইলার যদি C এর সর্বশেষ স্ট্যান্ডার্ড (ISO/IEC 9899:2011 যা C11 নামে পরিচিত) সাপোর্ট করে তাহলে এগুলোর পাশাপাশি আমরা C প্রোগ্রামে ইউনিকোড ক্যারেক্টারও অ্যাড (add) করতে পারব \uXXXX বা \UXXXXXXXX ফরম্যাট ব্যবহার করে (XXXX বা XXXXXXXX ইউনিকোড ক্যারেক্টার এর হেক্সাডেসিমাল কোড)।

তথ্যসুত্রঃ

১। ISO/IEC 9899:2011 C standard (C11) <http://www.open-std.org/jtc1/sc22/wg14/>

২। Programming with C by Byron Gotteried


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://c.howtocode.dev/undefined/character_set.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
