সি প্রোগ্রামিং – লেকচার ২: এক্সপ্রেশন, ভেরিয়েবল ও এর নামকরণ এবং রিজার্ভ ওয়ার্ড

সি প্রোগ্রামিং – লেকচার ২: এক্সপ্রেশন, ভেরিয়েবল ও এর নামকরণ এবং রিজার্ভ ওয়ার্ড


]

 এক্সপ্রেশন (Expression)


কম্পিউটার প্রোগ্রামিং এর জন্য আমরা বিভিন্ন এক্সপ্রেশন ব্যবহার করি।
নীচে কয়েকটি এক্সপ্রেশন দেয়া হলঃ
1+3
5>9
এক্সপ্রেশনগুলোর সবসময় একটা মান থাকে। যেমন প্রথম এক্সপ্রেশনের মান 4. এটা একটা “Numerical Expression”. এই ধরণের এক্সপ্রেশনের মান সে কোন সংখ্যা হতে পারে।
দ্বিতীয় এক্সপ্রেশনটা একটা Boolean Expression. যে ধরণের এক্সপ্রেশনের মান হয় TRUE অথবা FALSE হবে। আমাদের দ্বিতীয় এক্সপ্রেশনের মান FALSE.
আমরা যদি 13 > 6 লিখি তাহলে সেটাও একটা Boolean Expression হবে যার মান TRUE.
আমাদের প্রোগ্রামে উভয় ধরণের এক্সপ্রেশনের বহুল ব্যবহার লক্ষ্য করব।

ভেরিয়েবল

আমরা আমাদের প্রোগ্রাম যে কম্পিউটারে run করব তাতে বিভিন্ন পরিমান RAM বা মেমোরি থাকতে পারে। আমরা 1GB, 2GB, 4GB, 8GB ইত্যাদি সাইজের মেমোরি ক্ষমতার কম্পিউটার দেখে থাকি (২০১২ সাল)। আমরা এখানে মেমোরি বলতে শুধু Random Access Memory বা RAM কেই বোঝাবো।
কম্পিউটারের মেমোরির প্রত্যেকটা বাইটকে একটা সংখ্যা দিয়ে চিহ্নিত করা হয়। একটা কম্পিউটারে 4 গিগাবাইট (4294967296 বাইট) মেমোরি থাকলে আমরা বাইটগুলোকে 0 থেকে 4294967295 পর্যন্ত সংখ্যা দিয়ে চিহ্নিত করি। এই সংখ্যাগুলোকে আমরা বলি মেমোরি অ্যাড্রেস (address)। প্রোগ্রাম চলার সময় মেমোরিতে বিভিন্ন মান রাখার দরকার হয়।
যেমন আমরা হয়ত 1000 অ্যাড্রেসে ‘A’ লিখতে চাই। তাহলে সেটা আমরা CPU কে বলতে পারি
[1000] <— ‘A’
কিন্তু এভাবে সংখ্যা ব্যবহার করে প্রোগ্রাম লেখা কুবই অসুবিধাজনক। সেজন্য আমরা মেমোরির বিভিন্ন অ্যাড্রেস না লিখে আমরা অ্যাড্রেসকে চিহ্নিত করার জন্য বিভিন্ন নাম ব্যবহার করি। যেমন 1000 অ্যাড্রেসকে আমরা হয়ত বলতে পারি grade.
তাহলে আমরা CPU কে বলতে পারি grade এর মধ্যে ‘A’ রাখতেঃ
grade <— ‘A’
এখানে একটা ব্যাপার মনে রাখতে হবে এভাবে অ্যাড্রেসকে নামকরণ করা হয় আমাদের মানুষদের বোঝার সুবিধার জন্য। কম্পাইলার এটাকে শেষ পর্যন্ত সংখ্যা দ্বারাই চিহ্নিত করে কিন্তু সেটা আমাদের না জানলেও চলে।
এইভাবে মেমোরি অ্যাড্রেসকে যেসব নাম দ্বারা চিহ্নিত করি সেগুলোকে আমরা বলি ভেরিয়েবল। যেগুলোর মধ্যে যেকোন সময় যেকোন মান রাখতে পারি।

ভেরিয়েবল declaration

সি ল্যাংগুয়েজে ভেরিয়েবল ব্যবহার করার জন্য প্রথমে সেটা declare করে নিতে হয়। Declare করা মানে হচ্ছে ভিরিয়েবলের নাম এবং এটার টাইপ প্রথমে লিখে নিতে হবে। কোন কোন ল্যাংগুয়েজে সেটা করকার হয় না।
যেমন:
int number;
এভাবে আমরা একটা পূর্ণ সংখ্যা বা ইন্টেজার ভেরিয়েবল declare করে নিলাম যেটার নাম হচ্ছে number।
একটা ভেরিয়েবলের টাইপ যদি int হয় তরে তার মধ্যে সবসময় (সাধারণত) পূর্ণ সংখ্যাই রাখা যায়।

এসাইনমেন্ট (Assignment)

আমরা কোন একটা ভেরিয়েবলের মধ্যে যে কোন সময় একটা মান রাখতে পারি বা assign করতে পারি।
এটা করার জন্য প্রথমে আমরা একটা ভেরিয়েবলের নাম লিখে তারপর = চিহ্ন দিয়ে পরে expression লিখব।
যেমন নীচে ২টা উদাহরণ দেয়া হলঃ
number = 5;
number = 3+5-1;
এখানে কম্পিউটার সবসময় প্রথমে ডানপাশের expression এর মান প্রথমে বের করে নিয়ে তারপর = চিহ্নের বামপাশের ভেরিয়েবল এর মধ্যে রাখবে।

Identifier এর নামকরণ

সি ল্যাংগুয়েজে ভেরিয়েবল, ফাংশন ইত্যাদির নামকরণের ক্ষেত্রে কিছু বিধিনিষেধ আছে।
আমরা এখানে ৪টি সেট তৈরি করি যেসব আমরা আমাদের identifier এর মধ্যে ব্যবহার করতে পারব।
১. _
২. a-z
৩. A-Z
৪. 0-9
শুরুতে ১,২ বা ৩ নম্বর সেট থেকে যেকোন একটা নিতে হবে তারপর ইচ্ছা করলে যেকোন সেট থেকে যেভাবে খুশি চিহ্ন নেয়া যাবে।
সুতরাং identifier এর শুরুতে সংখ্যা (1,2 ইত্যাদি) থাকতে পারবে না। তবে শুরুতে _ (underscore) দেয়া যাবে।
সঠিকঃ
a
abc
num1
CiTy
_salary
member_id
ভুলঃ
2ndcar
customer#

রিজার্ভ ওয়ার্ড

C ল্যাংগুয়েজে আমরা কিছু word আমাদের নিজেদের identifier হিসাবে ব্যবার করতে পারি না। যেগুলোকে রিজার্ভ ওয়ার্ড বলে। রিজার্ভ ওয়ার্ডগুলো শুধু তাদের জন্য নির্ধারিত নির্দিষ্ট কাজে ব্যবহার করা যায়।
নীচের লিষ্টে ১/২ বার চোখ বুলিয়ে নিন। এগুলো (বা এই কোর্সের অন্য কোন কিছু) মুখস্থ করার চেষ্টা করার দরকার নেই।
auto if break int case long char register continue return default short do sizeof double static else struct entry switch extern typedef float union for unsigned goto while enum void const signed volatile

0 মন্তব্য(গুলি):