এই পাঠ শেষে যা যা শিখতে পারবে-
- ১। ‘সি’ প্রোগ্রামিং ভাষার ডেটা টাইপ ও এর প্রকারভেদ ব্যাখ্যা করতে পারবে।
- ২। ডেটা টাইপের মেমোরি পরিসর এবং ফরম্যাট স্পেসিফায়ার ব্যাখ্যা করতে পারবে।
- ৩। ‘সি’ প্রোগ্রামিং ভাষার কিওয়ার্ড গুলো বর্ণনা করতে পারবে।
- ৪। ‘সি’ প্রোগ্রামিং ভাষার চলক ও ধ্রুবক ঘোষণা করতে পারবে।
- ৫। ‘সি’ প্রোগ্রামিং ভাষায় চলক ঘোষণার নিয়মাবলী বর্ণনা করতে পারবে।
ডেটা টাইপঃ ডেটা টাইপ ডেটার ধরনকে নির্দেশ করে; যেমন- পূর্ণসংখ্যা, ভগ্নাংশ, ক্যারেক্টার ইত্যাদি। প্রতিটি ডেটা টাইপের ভিন্ন ভিন্ন পরিমান মেমোরি প্রয়োজন হয় এবং প্রতিটি ডেটা টাইপের উপর নির্দিস্ট অপারেশন সম্পন্ন হয়।
‘সি’ প্রোগ্রামে নিমোক্ত ডেটা টাইপগুলো ব্যবহৃত হয়ঃ
Primary অথবা Basic অথবা Built-in ডেটা টাইপ:
- char: এই ডেটা টাইপ একটি ক্যারেকটার সংরক্ষণ করে। যেমন- ‘A’, ‘a’, ‘+’ ইত্যাদি।
- int: এই ডেটা টাইপ পূর্ণসংখ্যা সংরক্ষণ করতে ব্যবহৃত হয়। যেমন- 10, 300, 6000 ইত্যাদি।
- float: এই ডেটা টাইপ সিঙ্গেল প্রিসিশন বিশিষ্ট ডেসিম্যাল সংখ্যা( ভগ্নাংশ মান সহ) সংরক্ষণ করতে ব্যবহৃত হয়। যেমন- 9.81, 345.7633 ইত্যাদি।
- double: এই ডেটা টাইপ ডাবল প্রিসিশন বিশিষ্ট ডেসিম্যাল সংখ্যা( ভগ্নাংশ মান সহ) সংরক্ষণ করতে ব্যবহৃত হয়। যেমন- 843.345678, 3293.837234 ইত্যাদি।
‘void’ data type: ‘void’ ডেটা টাইপ বলতে বুঝায় কোন ভ্যালু নেই। একটি ফাংশন কোন কিছুই রিটার্ন করবে না বুঝাতে এই ডেটা টাইপ ব্যবহৃত হয়।
বিভিন্ন ডেটা টাইপের মেমোরি পরিসর, ডেটা রেঞ্জ এবং ফরম্যাট স্পেসিফায়ারঃ
DATA TYPE | MEMORY (BYTES) | RANGE | FORMAT SPECIFIER |
---|---|---|---|
char | 1 | −128 to 127 | %c |
unsigned char | 1 | 0 to 255 | %c |
int | 2 | −32,768 to 32,767 | %d |
unsigned int | 2 | 0 to 65,535 | %u |
long int | 4 | -2,147,483,648 to 2,147,483,647 | %ld |
unsigned long int | 4 | 0 to 4,294,967,295 | %lu |
float | 4 | %f | |
double | 8 | %lf | |
long double | 10 | %Lf |
ডেটা টাইপ মডিফায়ারঃ মডিফায়ার হলো কিওয়ার্ড যা মৌলিক ডেটা টাইপের( float ব্যতীত ) পূর্বে ব্যবহার করে ডেটার ব্যাপ্তি এবং চলকের মেমোরি পরিসর কমানো বা বাড়ানো যায়। যেমন- signed ও unsigned মডিফায়ার char ও int টাইপ ডেটার জন্য এবং long ও short মডিফায়ার int ও double টাইপ ডেটার জন্য ব্যবহৃত হয়।
টোকেনঃ যে কোন প্রোগ্রাম কতগুলো স্টেটমেন্ট নিয়ে গঠিত। আবার প্রতিটি স্টেটমেন্ট কতগুলো word বা character এর সমস্টি। ‘সি’ প্রোগ্রামে ব্যবহৃত word বা character সমূহকে একত্রে টোকেন বলে। অন্যভাবে বলা যায়; টোকেন হলো একটি প্রোগ্রামের ক্ষুদ্রতম উপাদান যা কম্পাইলারের কাছে অর্থবহ। বিভিন্ন টোকেন সমূহ –
- 1. Keywords ( eg: auto, break,int,short, while etc.)
- 2. Identifiers (eg: main, total, etc.)
- 3. Constants (eg: 9.81, 3.1416, 10, 20, etc.)
- 4. Strings (eg: “total”, “hello” etc.)
- 5. Special symbols (eg: (), {}, #, $, @, &, etc.)
- 6. Operators (eg: +, /,-,*, etc.)
কিওয়ার্ড(Keywords): কিওয়ার্ড হলো একটি প্রোগ্রামিং ভাষার পূর্ব-নির্ধারিত বা সংরক্ষিত কিছু শব্দ। প্রতিটি কিওয়ার্ড প্রোগ্রামে একটি নির্দিস্ট কাজ সম্পাদন করে থাকে। যেহেতু কিওয়ার্ডগুলো কম্পাইলারের কাছে পরিচিত তাই তাদেরকে চলকের নাম হিসেবে ব্যবহার করা যায় না। কিওয়ার্ড সবসময় ছোট হাতের অক্ষরে লেখা হয়। ‘সি’ ভাষা ৩২ কিওয়ার্ড সাপোর্ট করে যা নিচে দেওয়া হলঃ
আইডেন্টিফায়ার (Identifier): একটি প্রোগ্রামের প্রতিটি উপাদানের একটি নাম দেওয়া হয় যাকে বলা হয় আইডেন্টিফায়ার। প্রোগ্রামের একটি নির্দিস্ট উপাদানকে চিহ্নিত করতে বা চলক, ফাংশন, অ্যারে ইত্যাদির নাম দিতে এটি ব্যবহৃত হয়।আইডেন্টিফায়ার হলো ইউজার-ডিফাইন্ড নাম যা ‘সি’ এর স্ট্যান্ডার্ড ক্যারেক্টার সেটের সমন্বয়ে লেখা হয়। একটি প্রোগ্রামের প্রতিটি আইডেন্টিফায়ারের অদ্বিতীয় নাম থাকতে হয়।
আইডেন্টিফায়ার লেখার জন্য নিচের নিয়মগুলো অনুসরণ হয়ঃ
- ১। প্রথম ক্যারেক্টার অবশ্যই অ্যালফাবেট অথবা underscore( _ ) হতে হবে। যেমন: Count, a7, _number ইত্যাদি সঠিক। কিন্তু 22Roll সঠিক নয়।
- ২। কেবলমাত্র অ্যালফাবেটিক ক্যারেক্টার (A-Z, a-z) ,সংখ্যা(০-৯) এবং underscore( _ ) ব্যবহার করা যাবে। যেমন- roll_number, roll22 ইত্যাদি সঠিক। কিন্তু don’t_use, my@roll, &a ইত্যাদি সঠিক নয়।
- ৩। কোন কি-ওয়ার্ড বা রির্জাভ ওয়ার্ড ব্যবহার করা যাবে না। যেমন: for, while, if ইত্যাদি ব্যবহার করা যাবে না।
- ৪। কোন white space ক্যারেক্টার বা ফাঁকা স্থান গ্রহন যোগ্য নয়। যেমন: roll_number সঠিক। কিন্তু roll number সঠিক নয়।
- ৫। ছোট বা বড় হাতের অক্ষর ব্যবহার করা যায়। তবে ছোট এবং বড় হাতের অক্ষর ভিন্ন অর্থ বহন করে। যেমন: number এবং NUMBER এক নয়।
- ৬। ৩১ ক্যারেক্টারের অধিক হতে পারে। তবে প্রথম ৩১ ক্যারেক্টার তাৎপর্যপূর্ণ।
চলক (Variable): চলক বা ভেরিয়েবল হলো মেমরির লোকেশনের নাম বা ঠিকানা। প্রোগ্রামে যখন কোনো ডেটা নিয়ে কাজ করা হয়, প্রাথমিকভাবে সেগুলো কম্পিউটারের র্যামে অবস্থান করে। পরবর্তী সময়ে সেগুলো পুনরুদ্ধার বা পুনব্যবহারের জন্য ঐ নাম বা ঠিকানা জানা প্রয়োজন হয়। সুতরাং প্রোগ্রামে ডেটা নিয়ে কাজ করার সময় প্রতিটি ডেটার জন্য একটি চলক ব্যবহার করতে হয়। প্রতিবার প্রোগ্রাম নির্বাহের সময় মেমরিতে চলকগুলোর অবস্থান এবং সংরক্ষিত মান পরিবর্তন হয় বা হতে পারে বলে এদেরকে ভেরিয়েবল বা চলক বলা হয়। প্রোগ্রামে কোন চলক ব্যবহারের পূর্বে তা ঘোষণা করতে হয়। চলক ঘোষণার ক্ষেত্রে চলকের নাম লেখার সময় আইডেন্টিফায়ার লেখার নিয়মগুলো অনুসরণ করা হয়। চলক ঘোষণার ফরম্যাট –
- Data_type variable_name;
- যেমনঃ int number;
ডিক্লারেশনের উপর ভিত্তি করে ভেরিয়েবলকে দুই ভাগে ভাগ করা যায়। যথা:
- ১। লোকাল ভেরিয়েবল
- ২। গ্লোবাল ভেরিয়েবল
১। লোকাল ভেরিয়েবল: কোনো ফাংশনের মধ্যে ভেরিয়েবল ডিক্লেয়ার করলে তাকে উক্ত ফাংশনের লোকাল ভেরিয়েবল বা স্থানীয় চলক বলা হয়। ফাংশনের মধ্যে ঘোষণাকৃত চলক উক্ত ফাংশনের বাইরে ব্যবহার করা যায় না। লোকাল ভেরিয়েবলের কর্মকান্ড শুধুমাত্র সংশ্লিষ্ট ফাংশনেই সীমাবদ্ধ থাকে। ভিন্ন ভিন্ন ফাংশনে একই নামের লোকাল ভেরিয়েবল থাকতে পারে।
২। গ্লোবাল ভেরিয়েবল: সকল ফাংশনের বাইরে প্রোগ্রামের শুরুতে ঘোষণাকৃত ভেরিয়েবলকে গ্লোবাল ভেরিয়েবল বলা হয়। গ্লোবাল ভেরিয়েবল সাধারণত প্রোগ্রামের শুরুতেই ডিক্লেয়ার করা হয়। এ ধরনের ভেরিয়েবলের কর্মকান্ড কোনো ফাংশনের মধ্যে সীমাবদ্ধ নয় বলে একে গ্লোবাল বা সার্বজনীন ভেরিয়েবল বলে।
Constants (কনস্ট্যান্ট): প্রোগ্রাম নির্বাহের সময় “সি” প্রোগ্রামিং ভাষায় এমন কিছু মান আছে যা কখনো পরিবর্তন হয় না। যেমন π এর মান হলো বা ৩.১৪১৬ যা কখনো পরিবর্তন হয় না। প্রোগ্রাম নির্বাহের সময় যে রাশির মান অপরিবর্তীত থাকে তাকে কনস্ট্যান্ট বা ধ্রুবক বলে।
‘সি’ প্রোগ্রামিং ভাষায় দুইভাবে কনস্ট্যান্ট ঘোষণা করা যায়। যথা-
- ১। const কীওয়ার্ড ব্যবহার করে
- ২। #define প্রিপ্রসেসর ব্যবহার করে
const কীওয়ার্ড ব্যবহার করে ধ্রুবক ঘোষণার ফরম্যাট হলো:
- const ConstType ConstName = ConstValue;
- যেমনঃ const float PI=3.1416;
#define প্রিপ্রসেসর ব্যবহার করে ধ্রুবক ঘোষণার ফরম্যাট হলো:
- #define ConstName ConstValue
- #define PI 3.1416
স্ট্রিং(Strings): স্ট্রিং হলো কতগুলো ক্যারেক্টারের সমষ্টি যার শেষ উপাদান হলো null ক্যারেক্টার(\0)। এই null ক্যারেক্টার স্ট্রিং এর শেষ নির্দেশ করে। স্ট্রিং সবসময় ডাবল কোটেশনের (“ “) সাহায্যে আবদ্ধ থাকে।
স্ট্রিং ডিক্লারেশন করার পদ্ধতিঃ
- char string[20] = {‘s’,’t’,’u’,’d’,’y’, ‘\0’};
- char string[20] = “demo”;
- char string [] = “demo”;
Special symbols:
বিশেষ চিহ্ন (Special symbols): নিচের বিশেষ চিহ্নগুলো ‘সি’ ভাষায় ব্যবহৃত হয়; যার প্রত্যেকটির বিশেষ অর্থ আছে । তাই অন্য উদ্দেশ্য ব্যবহার করা যায় না। [] () {}, ; * = #
- Brackets[]: অ্যারে এলিমেন্টের রেফারেন্স বুঝাতে ওপেনিং এবং ক্লোজিং ব্র্যাকেট ব্যবহৃত হয়। এটি সিঙ্গেল এবং মাল্টি-ডাইমেনশনাল সাবস্ক্রিপ্ট নির্দেশ করে।
- Parentheses(): ফাংশন কল এবং ফাংশন প্যারামিটার নির্দেশ করতে এই বিশেষ চিহ্ন ব্যবহৃত হয়।
- Braces{}: ওপেনিং এবং ক্লোজিং কার্লি ব্রেস যথাক্রমে একটি কোড ব্লকের শুরু ও শেষ নির্দেশ করে।
- comma (,): একাধিক উপাদানকে পৃথক করতে এই চিহ্ন ব্যবহৃত হয়।
- semi colon(; ): একাধিক স্টেটমেন্টকে পৃথক করতে এই চিহ্ন ব্যবহৃত হয়।
- asterick (*): পয়েন্টার ভেরিয়েবল তৈরি করতে এই বিশেষ চিহ্ন ব্যবহৃত হয়।
- assignment operator: ভ্যালু অ্যাসাইন করতে এটি ব্যবহৃত হয়।
- pre processor(#): প্রোগ্রাম ফাইল লিঙ্ক করতে কম্পাইলার অটোমেটিক্যালি এই চিহ্ন ব্যবহার করে।
অপারেটর (Operators): পরবর্তী পাঠে অপারেটর সম্পর্কে বিস্তারিত আলোচনা করা হবে।
পাঠ মূল্যায়ন-
জ্ঞানমূলক প্রশ্নসমূহঃ
- ক। ডেটা টাইপ কী?
- ক। মডিফায়ার কী?
- ক। টোকেন কী?
- ক। কিওয়ার্ড কী?
- ক। আইডেন্টিফায়ার কী?
- ক। চলক কী?
- ক। লোকাল ভেরিয়েবল কী?
- ক। গ্লোবাল ভেরিয়েবল কী?
- ক। ধ্রুবক কী?
- ক। স্ট্রিং কী?
অনুধাবনমূলক প্রশ্নসমূহঃ
- খ। চলক তৈরির ক্ষেত্রে কিছু বিধিবদ্ধ নিয়ম কানুন রয়েছে- ব্যাখ্যা কর।
- খ। integer এর পরিবর্তে কখন long integer ব্যবহার করতে হয়-বুঝিয়ে লিখ।
- খ। ‘সি’ ভাষায় int roll@no; স্টেটমেন্টটি বৈধ/অবৈধ ব্যাখ্যা কর।
- খ। ‘সি’ ভাষায় float type বলতে কি বুঝ? উদাহরণসহ লেখ।
- খ। চলক ও ধ্রুবকের মধ্যে পার্থক্য লেখ।
- খ। প্রোগ্রামে ধ্রুবক ব্যবহারের সুবিধা লেখ।
সৃজনশীল প্রশ্নসমূহঃ
বহুনির্বাচনি প্রশ্নসমূহঃ
Written by,
- Mizanur Rahman (Mizan)
- Lecturer of ICT, Shaheed Bir Uttam Lt. Anwar Girls’ College ,Dhaka Cantonment
- Author at www.edupointbd.com
- Software Engineer at mands IT
- Former Lecturer of ICT, Cambrian College, Dhaka
- Email: mizanjust@gmail.com
- Cell: 01724351470