KM ANIK
Learning to C PROGRAMMING
24 UPDATE
Learning to C PROGRAMMING
BANGLA VERSION
Lecture 8
সি প্রোগ্রামিং আইডেন্টিফায়ার
সি আইডেন্টিফায়ার
কোনো সত্ত্বা(entity) যেমন ভ্যারিয়েবল, ফাংশন, স্ট্রাকচার ইত্যাদিকে সনাক্ত করার জন্য ব্যবহৃত নামই হলো আইডেন্টিফায়ার।
সি প্রোগ্রামিং এ আইডেন্টিফায়ারকে অবশ্যই ইউনিক(unique) হতে হবে। প্রোগ্রাম সম্পাদন(execution)-এর সময় কোনো সত্ত্বাে(entity)-কে একটি ইউনিক নামের মাধ্যমে সনাক্ত করার জন্যই মূলত এদের সৃষ্টি। উদাহরণস্বরূপঃ
int money;
double accountBalance;
এখানে money এবং accountBalance হলো আইডেন্টিফায়ার
মনে রাখবেন, আইডেন্টিফায়ার এর নাম দেওয়ার জন্য কখনোই সি কীওয়ার্ডসমূহ ব্যবহার করা যাবে না।
যেমন- আপনি ইচ্ছা করলেই double কে আইডেন্টিফায়ার হিসাবে ব্যবহার করতে পারবেন না কারণ ইহা কীওয়ার্ড।
আইডেন্টিফায়ারের নাম রাখার নিয়মাবলী
- 1 একটি বৈধ আইডেন্টিফায়ারে বর্ণমালা(বড় হাতের বর্ণ বা ছোট হাতের বর্ণ) , ডিজিট(digits) এবং আন্ডারস্কোর(_) থাকতে পারে।
- 2 আইডেন্টিফায়ার এর নাম বর্ণ অথবা আন্ডারস্কোর দিয়ে শুরু হতে হবে। তবে আন্ডারস্কোর দিয়ে আইডেন্টিফায়ারের নাম শুরু করাকে অনুৎসাহিত করা হয়।
- 3 আইডেন্টিফায়ারের নাম যেকোনো দৈর্ঘের হতে পারে। তবে কম্পাইলার প্রথম ৩১ বর্ণ কে আইডেন্টিয়ায়ারের নাম হিসাবে বেছে নেয়।
উত্তম পন্থায় প্রোগ্রামিং
কীওয়ার্ড ছাড়া আইডেন্টিফায়ারের জন্য আপনি যেকোনো নাম পছন্দ করতে পারেন। যাইহোক, আপনি যদি আইডেন্টিফায়ারকে অর্থপূর্ণ নাম দেন তাহলে ইহা আপনার এবং আপনার অনুসারী প্রোগ্রামারদের জন্যও বুঝা সহজ হবে।
Lecture 9
সি প্রোগ্রামিং কনস্ট্যান্ট
কনস্ট্যান্ট(constant) এবং লিটারেল
কনস্ট্যান্ট হলো ভ্যালু বা আইডেন্টিফায়ার। প্রোগ্রাম সম্পাদনের সময় যার ভ্যালু পরিবর্তন হয় না। উদাহরনস্বরুপঃ "SATT Academy", 1, 2 ইত্যাদি।
তাহলে আমরা দেখলাম যে, আইডেন্টিফায়ারকে কনস্ট্যান্ট হিসাবেও ডিফাইন্ড করা যায়।
const double PI = 3.14
এখানে PI একটি কনস্ট্যান্ট যার অর্থ এই প্রোগ্রামে PI এবং 3.14 একই।
সি প্রোগ্রামিং এ ব্যবহৃত বিভিন্ন ধরণের কনস্ট্যান্ট এবং তাদের বর্ণনা নিম্নে তুলে ধরা হলোঃ
ক্যারেক্টার কনস্ট্যান্ট
ক্যারেক্টার কনস্ট্যান্ট(character constant) হলো সিঙ্গেল ক্যারেক্টার বিশিষ্ট্য কনস্ট্যান্ট যা সিঙ্গেল কোটেশন(' ') দিয়ে ঘেরা থাকে। উদাহরনস্বরুপঃ 'a', 'M', 'T', 's' ইত্যাদি
ইন্টেজার কনস্ট্যান্ট
Integer এর বাংলা অর্থ পূর্ণসংখ্যা।
ইন্টেজার কনস্ট্যান্ট(integer constant) হলো দশমিক এবং সূচক অংশ ব্যতীত গাণিতিক পূর্ণ সংখ্যা বিশিষ্ট কনস্ট্যান্ট বা ধ্রুবক। সি প্রোগ্রামিং এ তিন ধরণের ইন্টেজার কনস্ট্যান্ট রয়েছেঃ
- 1 ডেসিমাল কনস্ট্যান্ট-decimal constant(১০ ভিত্তিক কনস্ট্যান্ট)
- 2 অক্ট্যাল কনস্ট্যান্ট-octal constant(৮ ভিত্তিক কনস্ট্যান্ট)
- 3 হেক্সাডেসিমাল কনস্ট্যান্ট- hexadecimal constant(১৬ ভিত্তিক কনস্ট্যান্ট)
উদাহরণস্বরূপঃ
৮ ভিত্তিক কনস্ট্যান্টঃ 070, 055, 099 ইত্যাদি
১০ ভিত্তিক কনস্ট্যান্টঃ 0, 20, 100 ইত্যাদি
১৬ ভিত্তিক কনস্ট্যান্টঃ 0x7f, 0x2a, 0x521 etc
সি প্রোগ্রামিং এ অক্ট্যাল কনস্ট্যান্ট শুরু হয় 0(zero) দিয়ে এবং হেক্সাডেসিমাল কনস্ট্যান্ট শুরু হয় 0x দিয়ে।
ফ্লোটিং পয়েন্ট কনস্ট্যান্ট
floating point এর বাংলা অর্থ দশমিক(.) সংখ্যা।
ফ্লোটিং পয়েন্ট কনস্ট্যান্ট(floating point constant) হলো দশমিক এবং সূচক অংশ যুক্ত গাণিতিক কনস্ট্যান্ট।
10.05
0.03487
-0.15E-4
নোটঃ E-4 = 10-4
স্পেইপ সিকুয়েন্স
মাঝে মাঝে এমন কিছু ক্যারেক্টার ব্যবহার করতে হয় যেগুলো টাইপ করা যাইনা অথবা সি প্রোগ্রামিং এ বিশেষ অর্থ বহন করে। যেমন- backspace, tab, backslash ইত্যাদি। এগুলো ব্যবহার করতে হলে স্কেইপ সিকুয়েন্স(escape sequence) ব্যবহার করতে হয়।
উদাহরণস্বরূপঃ নতুন লাইন(Newline) এর জন্য
\n
ব্যবহৃত হয়। ব্যাকস্পেস(Backspace) এর জন্য \b
ব্যবহৃত হয়।স্কেইপ সিকুয়েন্স | নাম |
---|---|
\b | Backspace |
\f | Form feed |
\n | Newline |
\r | Return |
\t | Horizontal tab |
\v | Vertical tab |
\\ | Backslash |
\' | Single quotation mark |
\" | Double quotation mark |
\? | Question mark |
\0 | Null character |
স্ট্রিং কনস্ট্যান্ট
স্ট্রিং কনস্ট্যান্ট(String constant) হলো কনস্ট্যান্ট যা ডাবল কোটেশন(" ") দিয়ে ঘেরা থাকে। উদাহরনস্বরুপঃ
"" //null স্ট্রিং কনস্ট্যান্ট
"SATT" //স্ট্রিং কনস্ট্যান্ট
" " //৫ টি ফাঁকা স্পেস বিশিষ্ট স্ট্রিং কনস্ট্যান্ট
"t" //সিঙ্গেল ক্যারেক্টার বিশিষ্ট স্ট্রিং কনস্ট্যান্ট
"Love is heaven\n" //একটি নতুন লাইনসহ স্ট্রিং প্রিন্ট করবে
ইনুমিরেশন কনস্ট্যান্ট
enum কীওয়ার্ড দিয়ে ইনিউমিরেশন টাইপ ডিফাইন্ড( defined) করা হয়। উদাহরণস্বরূপঃ
enum color {teal, green, orange, white};
এখানে color একটি ভ্যারিয়েবল এবং purple, green, black ও white হলো ইনিউমিরেশন কনস্ট্যান্ট(Enumeration constants) যাদের ভ্যালু যথাক্রমে 0, 1, 2 এবং 3 । ইনিউমিরেশন সম্মন্ধে আরো জানতে আমাদের সি ইনুমিরেশন অধ্যায় ভিজিট করুন।
সি প্রোগ্রামে কনস্ট্যান্ট ডিফাইন করা
সি প্রোগ্রামে কনস্ট্যান্ট ডিফাইন করার জন্য দুটি সাধারণ পদ্ধতি রয়েছে।
- const কীওয়ার্ড ব্যবহার করে
- #define প্রিপ্রোসেসর ব্যবহার করে
const কীওয়ার্ড
একটি নির্দিষ্ট টাইপের কনস্ট্যান্ট ডিক্লেয়ার করার জন্য আপনি const কীওয়ার্ডকে প্রিফিক্স(prefix) হিসাবে ব্যবহার করতে পারেন।
সিনট্যাক্স
const type variable = value;
উদাহরনঃ নিচের উদাহরণে const কীওয়ার্ডের ব্যবহার দেখানো হলোঃ
#include <stdio.h>
int main() {
const char NEWLINE = '\n';
const int LENGTH = 5;
const int WIDTH = 4;
int area;
area = LENGTH * WIDTH;
printf("Total area: %d", area);
printf("%c", NEWLINE);
return 0;
}
উপরের প্রোগ্রামটি যখন কম্পাইল এবং এক্সিকিউট করা হবে তখন ইহা নিচের মত আউটপুট দেখাবেঃ
আউটপুট
Total area : 20
#define প্রিপ্রোসেসর
আপনি #define প্রিপ্রোসেসর ব্যবহার করেও কনস্ট্যান্ট ডিফাইন(define) করতে পারেন।
সিনট্যাক্স
#define identifier value
উদাহরনঃ নিচের উদাহরণে #define প্রিপ্রোসেসর এর ব্যবহার দেখানো হলোঃ
#include <stdio.h>
#define NEWLINE '\n'
#define LENGTH 5
#define WIDTH 4
int main() {
int area;
area = LENGTH * WIDTH;
printf("Total area : %d", area);
printf("%c", NEWLINE);
return 0;
}
উপরের প্রোগ্রামটি যখন কম্পাইল এবং এক্সিকিউট করা হবে তখন ইহা নিচের মত আউটপুট দেখাবেঃ
20 is Output
Lecture 10
সি প্রোগ্রামিং ডেটা টাইপ
এই অধ্যায়ে আপনি সি প্রোগ্রামিং ডেটা টাইপ(data type) এবং ভ্যারিয়েবল ডিক্লেয়ারেশন(declaration) পদ্ধতি সম্মন্ধে জানবেন।
ডেটা টাইপ দ্বারা ভ্যারিয়েবলের মধ্যে সংরক্ষিত ডেটার টাইপ নির্ধারণ করা হয়।
সি প্রোগ্রামিং এ ভ্যারিয়েবল বা মেমোরি লোকেশন(location)-কে ব্যবহারের পূর্বে ডিক্লেয়ার করতে হয়। একইভাবে ফাংশনকেও ব্যবহারের পূর্বেই ডিক্লেয়ার(declare) করতে হয়।
ডেটা টাইপ যুক্ত ভ্যারিয়েবল এবং ফাংশন ডিক্লেয়ারেশন দ্বারা সাধারণত ডেটার সাইজ এবং টাইপ নির্ধারণ করা হয়।
ডেটা টাইপ
- 01 মৌলিক(Fundamental) ডেটা টাইপ
- ## ইন্টেজার টাইপ(Integer type)
- ## ফ্লোটিং টাইপ(Floating type)
- ## ক্যারক্টার টাইপ(Character type)
- 02 প্রাপ্ত(Derived) ডেটা টাইপ
- ## অ্যারে(Arrays)
- ## পয়েন্টার(Pointers)
- ## স্ট্রাকচার(Structures)
- ## ইনুমিরেশন(Enumeration)
এই অধ্যায়ে আমরা মৌলিক ডেটা টাইপের প্রতি বেশী নজর দিয়েছি। আপনি ডিরাইভ ডেটা টাইপ সম্মন্ধে জানতে আমাদের ডিরাইভ(Derived) ডেটা টাইপ সম্পর্কিত অধ্যায় ভিজিট করুন।
char - ক্যারেক্টার ডেটা টাইপ
ক্যারেক্টার টাইপের ভ্যারিয়েবল ডিক্লেয়ার করার জন্য char কীওয়ার্ড ব্যবহৃত হয়। উদাহরণস্বরূপঃ
char alphabet ='a'
এখানে alphabet হলো ক্যারেক্টার ভ্যারিয়েবল এবং alphabet এর ভ্যালু 'a'।
ক্যারেক্টার ভ্যারিয়েবলের সাইজ 1 বাইট।
int - ইন্টেজার ডেটা টাইপ
দশমিক(.) সংখ্যা ব্যতীত সকল ধনাত্মক এবং ঋণাত্মক পূর্ণ সংখ্যা এই টাইপের মধ্যে পড়ে। যেমন- 0, -10, 10 ইত্যাদি
সি প্রোগ্রামিং এ ইন্টেজার টাইপের ভ্যারিয়েবল ডিক্লেয়ার করার জন্য int কীওয়ার্ড ব্যবহৃত হয়। উদাহরণস্বরূপঃ
int roll_roll;
float - ফ্লোটিং টাইপ
ফ্লোটিং টাইপ ভ্যারিয়েবলে যেকোনো বাস্তব সংখ্যা থাকতে পারে। যেমন- 3.1416, -5.382, 10.0 ইত্যাদি। ফ্লোট টাইপের ভ্যারিয়েবল ডিক্লেয়ার(declare) করার জন্য আপনি হয়
float
অথবা double
কীওয়ার্ড ব্যবহার করতে পারেন। উদাহরনস্বরুপঃfloat accountBalance;
double bookPrice;
এখানে accountBalance এবং bookPrice উভয়েই ফ্লোটিং টাইপ ভ্যারিয়েবল।
সি প্রোগ্রামিং এ ফ্লোটিং ভ্যালুকে এক্সপনেনশিয়াল(exponential) ফর্মেও উপস্থাপন করা যায়। উদাহরনস্বরুপঃ
float normalizationFactor = 22.442e2;
ফ্লোট এবং ডাবলের মধ্যে পার্থক্য
float টাইপ | double টাইপ |
---|---|
ফ্লোট(float) ভ্যারিয়েবলের সাইজ ৪ বাইট | ডাবল(double) ভ্যারিয়েবলের এর সাইজ ৮ বাইট |
সিঙ্গেল প্রিসিশন(single precision) এর ক্ষেত্রে ফ্লোট ডেটা টাইপ ব্যবহৃত হয় | ডাবল প্রিসিশন(double precision) এর ক্ষেত্রে double ডেটা টাইপ ব্যবহৃত হয়। |
ফ্লোটিং পয়েন্ট ভ্যারিয়েবলের প্রিসিশন ৬ ডিজিট | ডাবলের প্রিসিশান ১৪ ডিজিট। |
চলুন এক নজরে ডেটা টাইপসমূহ দেখে নিই। এখানে ৩২ বিট আর্কিটেকচারের উপর ভিত্তিকরে ডেটার সাইজ দেওয়া হোল।
ডেটা টাইপ | মেমোরি সাইজ | রেঞ্জ |
---|---|---|
char | 1 বাইট | −128 থেকে 127 |
signed char | 1 বাইট | −128 থেকে 127 |
unsigned char | 1 বাইট | 0 থেকে 255 |
short | 2 বাইট | −32,768 থেকে 32,767 |
signed short | 2 বাইট | −32,768 থেকে 32,767 |
unsigned short | 2 বাইট | 0 থেকে 65,535 |
int | 2 বাইট | −32,768 থেকে 32,767 |
signed int | 2 বাইট | −32,768 থেকে 32,767 |
unsigned int | 2 বাইট | 0 থেকে 65,535 |
short int | 2 বাইট | −32,768 থেকে 32,767 |
signed short int | 2 বাইট | −32,768 থেকে 32,767 |
unsigned short int | 2 বাইট | 0 থেকে 65,535 |
long int | 4 বাইট | -2,147,483,648 থেকে 2,147,483,647 |
signed long int | 4 বাইট | -2,147,483,648 থেকে 2,147,483,647 |
unsigned long int | 4 বাইট | 0 থেকে 4,294,967,295 |
float | 4 বাইট | |
double | 8 বাইট | |
long double | 10 বাইট |
No comments:
Post a Comment