বুধবার, ২২ এপ্রিল, ২০২০

সি প্রোগ্রামিং-এর মৌলিক কাঠামো, ডেটা টাইপ ও ভেরিয়েবলের উপর সহজ আলোচনা।


সি প্রোগ্রামিং এর মৌলিক পাঁচটি অংশ থাকে। অংশগুলো হল। যেমন-
  1. প্রি-প্রসেসর কমান্ড | Preprocessor Commands

  2. ফাংশন | Functions

  3. ভেরিয়েবল | Variables

  4. স্টেটমেনট এবং এক্সপ্রেসন | Statements & Expression

  5. কমেন্টস | Comments

মৌলিক কাঠামো:

উপরে বর্ণিত ৫ টি অংশ নিয়েই মূলত সি প্রোগ্রামের মৌলিক কাঠামো গঠিত।

এই কাঠামোর সর্ব উপরে থাকে প্রি-প্রসেসর কমান্ড বা Preprocessor Commands।
প্রি-প্রসেসর কমান্ডে অন্তর্ভুক্ত থাকে ডকুমেন্টেসন(একে ডকুমেন্টেসন সেকশন বলে)এবং প্রি-প্রসেসর স্টেটমেনট(এটা লিংক সেকশন)।

এর ঠিক নিচে থাকে গ্লোবাল ডিক্লিয়ারেশন সেকশন, এই সেকশনে গ্লোবাল ভেরিয়েবল, ফাংশন প্রোটোটাইপ ডিফাইন করতে হয়।

এর নিচেই থাকে মেইন ফাংশন main(){} মেইন ফাংশন ছাড়া সি প্রোগ্রাম চালু করা যায় না। কারণ সি প্রোগ্রাম সম্পাদন শুরুই করে মেইন ফাংশন থেকে।

তাই main() ফাংশন ছাড়া প্রোগ্রামের কোন .exe ফাইল তৈরি হয় না।

আর একটি কথা সব সময় মনে রাখতে হবে যে প্রোগ্রাম কিন্তু লাইন বাই লাইন সম্পাদন। এজন্য প্রোগ্রামের কন্ট্রোল main() ফাংশনের ভিতর থেকেই হয়। অর্থাৎ ফাংশন কল ছাড়া main()থেকে বের হবার কোন উপায় নেই।

main() ফাংশনের মধ্যে সি প্রোগ্রামের মৌলিক ৫টি অংশের মধ্যে তিনটি বিদ্যমান থাকে। তা হল-

  1. ভেরিয়েবল
  2. স্টেটমেনট এবং এক্সপ্রেসন
  3. কমেন্টস

অবশ্য ফাংশনের মধ্যে যে ভেরিয়েবল থাকে সে গুলো হল লোকাল ভেরিয়েবল, তা শুধু ঐ ফাংশনের মধ্যেই সীমাবদ্ধ। নিচে ভেরিয়েবল সম্পর্কে আলোচনা করব। স্টেটমেনট এবং এক্সপ্রেসন শুধু যে main() ফাংশনের মধ্যেই ব্যবহৃত হয় তা নয়, অন্য যে কোন ফাংশন যা ইউজার ডিফাইন করে সেখানেও স্টেটমেনট এবং এক্সপ্রেসন ব্যবহৃত হয়। কিন্তু ফাংশনের বাইরে স্টেটমেনট এবং এক্সপ্রেসন কখনই ব্যবহৃত হয় না।

আর কমেন্টস প্রোগ্রামের যে কোন জায়গাতে লেখা যায়। কারণ কম্পাইলার কমেন্টস কে সব সময় সম্পাদন থেকে বাদ দেয়। সি প্রোগ্রামে কমেন্ট লেখার কারণ হল,যে এই প্রোগ্রাম কি সম্পর্কে লেখা হচ্ছে? প্রোগ্রামে কি সমস্যার সমাধান করা হচ্ছে? কোন লাইনে কি করা হচ্ছে ? কমেন্টস দেখেই অন্যের অনেক বড় প্রোগ্রাম কে সহজে বুঝা যায়।

এবং শেষে থাকে ইউজার ডিফাইন ফাংশন। অর্থাৎ প্রোগ্রামার নিজে যে ফাংশন তৈরি করে সেটাই ইউজার ডিফাইন ফাংশন। এই ফাংশনকে অবশ্যই main() থেকে কল করতে হবে। তা না হলে এই ফাংশনের কোন সম্পাদিত মান গ্রহণ হবে না।

মৌলিক কাঠামো আলোচনা করতে গিয়ে অনেক নতুন বিষয় চলে আসছে যা পরবর্তীতে বিস্তারিত আলোকপাত করব।

এখন মৌলিক কাঠামো কে এক সাথে লিখলে আর একটু বুঝতে সহজ হবে।

  1. ডকুমেন্টেসন (ডকুমেন্টেসন সেকশন)
  2. প্রি-প্রসেসর স্টেটমেনট(লিংক সেকশন)
  3. গ্লোবাল ডিক্লিয়ারেশন(ডেফিনেশন সেকশন)
  4. main() ফাংশন
    1. লোকাল ভেরিয়েবল
    2. স্টেটমেনট এবং এক্সপ্রেস
  5. ইউজার ডিফাইন ফাংশন

নিচের সি প্রোগ্রামটা দেখলে আরো সহজ হয়ে যাবে।

       
/* documentation section
  author: mahmudul islam
  code: calculate are of a circle
*/
/* start preprocessor statement */
#include 
/* end preprocessor statement */
/* start global declaration */
#define pi 3.1416
float pai = 3.1416;
float circle(int r);// user define function prototype
/* end global declaration */
#define pi 3.1416

int main() // main function
{
    int redius1=5, redius2=5; // local variable redius1, redius2
    float result1, result2; // local variable result1, result2

    result1=pi*redius1*redius1; // expression
    printf("result1= %f\n",result1);//statement

    result2 = circle(redius2);//statement
    printf("result2= %f\n",result2);//statement

    return 0;
}
float circle(int r){ // user define function
    return pai*r*r; // return expression value
}


       
 

ডেটা টাইপ:

একটা ভেরিয়েবল কি ধরনের ডাটা রাখতে পারবে, তা ডেটা টাইপ নির্দিষ্ট করে দেয়। প্রোগ্রামিং এ আমরা মূলত ডাটা নিয়েই কাজ করে থাকি, এজন্য ডেটা সম্পর্কে স্পষ্ট ধারণা না থাকলে দক্ষ প্রোগ্রামার হওয়া সম্ভব নয়। একাটা প্রোগ্রাম করার সময় প্রথমেই চিন্তা করতে হবে কি কি টাইপ এর ডেটা প্রোগ্রামে ব্যবহার হতে যাচ্ছে।

ইচ্ছে মত যে কোন টাইপের ডেটা ব্যবহার করা যায় না। প্রতিটি প্রোগ্রামিং ভাষা এই ডেটা টাইপ নির্দিষ্ট করে দিয়েছে। তাই অনুরুপ ভাবে সি প্রোগ্রামিং ভাষারও নির্দিষ্ট কিছু ডেটা টাইপ আছে যেমনঃ-

TypesData Types
Basic Data Typeint, char, float, double
Derived Data Typearray, pointer, structure, union
Enumeration Data Typeenum
Void Data Typevoid

এখানে মূলত মৌলিক ডেটা টাইপ (Basic Data Type) ও ভইড ডেটা টাইপ (Void Data Type) নিয়ে আলোচনা করব।

Basic বা মৌলিক ডেটা টাইপঃ

  1. Integer বা পূর্ণ সংখ্যাঃ এর সংক্ষিপ্ত রূপ হল int যা সি প্রোগ্রামিং এ key word হিসেবে ব্যবহৃত হয়। প্রোগ্রাম লেখার সময় অবশ্যই int ব্যবহার করতে হবে, বড় হাতের অক্ষর লেখা চলবে না। এই ডেটা টাইপ এর মানের রেঞ্জ হল −32,768 to 32,767 এবং memory size হল ২ বাইট।

  2. Character বা অক্ষর: এর সংক্ষিপ্ত রূপ হল char যা সি প্রোগ্রামিং এ key word হিসেবে ব্যবহৃত হয়। প্রোগ্রাম লেখার সময় অবশ্যই char ব্যবহার করতে হবে, বড় হাতের অক্ষর লেখা চলবে না। এই ডেটা টাইপ এর মানের রেঞ্জ হল −128 to 127 এবং memory size হল ১ বাইট।

  3. Float : এর সংক্ষিপ্ত রূপ হল float যা সি প্রোগ্রামিং এ key word হিসেবে ব্যবহৃত হয়। প্রোগ্রাম লেখার সময় অবশ্যই float ব্যবহার করতে হবে, বড় হাতের অক্ষর লেখা চলবে না। এই ডেটা টাইপ এর memory size হল ৪ বাইট। একে Real floating-point type বা সাধারণত single-precision floating-point type বলা হয়।

  4. Double: এর সংক্ষিপ্ত রূপ হল double যা সি প্রোগ্রামিং এ key word হিসেবে ব্যবহৃত হয়। প্রোগ্রাম লেখার সময় অবশ্যই double ব্যবহার করতে হবে, বড় হাতের অক্ষর লেখা চলবে না। এই ডেটা টাইপ এর memory size হল ৮ বাইট। একে Real floating-point type বা সাধারণত double-precision floating-point type বলা হয়।

Void বা ভইড ডেটা টাইপঃ

এর সংক্ষিপ্ত রূপ হল void যা সি প্রোগ্রামিং এ key word হিসেবে ব্যবহৃত হয়। প্রোগ্রাম লেখার সময় অবশ্যই void ব্যবহার করতে হবে, বড় হাতের অক্ষর লেখা চলবে না। void টাইপ শুধু মাত্র ফাংশনের আগে এবং ফাংশনের আর্গুমেন্ট হিসেবে ব্যবহৃত হয়, অর্থাৎ যে ফাংশন কোন মান রিটার্ন করে না তার টাইপ হিসেবে এবং যে ফাংশন এর কোন আর্গুমেন্ট নাই তার মাঝে ব্যবহৃত হয়।

এখানে শুধু মৌলিক কিছু আলোচনা কর হল এই বিষয় গুলো জানার পরে শিক্ষার্থীদের চাহিদা অনুযায়ী বিস্তারিত জানতে পারবে। এর জন্য অনেক ক্ষেত্র আছে। আমি শুধু এখানে খুব সহজে কি ভাবে সি প্রোগ্রামিং শুরু করা যায় ততটুকু আলোচনা করছি।

ভেরিয়েবল:

মেমোরি লোকেশনের নামই হল ভেরিয়েবল। এতে ডেটা বা মান store বা জমা করে রাখা যায়। প্রোগ্রামিং এ সরাসরি কোন মান নিয়ে কাজ করা যায় না। এ ছাড়াও অনেক সময় মান গুলোকে জমা রাখতে হয়। এখন প্রশ্ন হল মান জমা রাখতে হবে কিন্তু কীভাবে? কোথায় জমা রাখবে?

প্রত্যাহিক জিবনে আমরা যেমন বই এর সেলফে বই রাখি, প্রতিটি বই এর কিন্তু আলাদা একটা লোকেশন থাকে তার জন্য চাইলেই যে কোন বই খুঁজে বের করা কঠিন কিছু নয়। ঠিক তেমনি আমরা মেমরিতে যে সকল ডেটা বা মান জমা রাখি তারও একটা লোকেশন থাকে। কিন্তু এই লোকেশন সরাসরি পাওয়া যায় না। একটা ভেরিয়েবল ডিক্লেয়ার করলে ঐ ভেরিয়াবলের জন্য মেমরিতে একটা লোকেশন তৈরি হয়। এরপর ঐ ভেরিয়েবলের সাহায্যে মেমরির ঐ লোকেশনে ডেটা রাখা যায়। আবার প্রয়োজনে ডেটা উত্তোলন করা যায়।

ভেরিয়েবল অনেকটা কুলির মত কাজ করে। কুলির কাজ যেমন বোঝা গুলোকে এক স্থান থেকে অন্য স্থানে নিয়ে যাওয়া বা নিয়ে আসা, তেমন ভেরিয়েবল এর কাজও ডেটা নিয়ে রাখা এবং নিয়ে আসা।

এখন মূল বিষয়ে আসি, সি প্রোগ্রামে ভেরিয়েবল কিভাবে ডিক্লেয়ার করা হয়? নিয়ম কি? কি প্রকারের ভেরিয়েবল আছে সে সম্পর্কে এখন একটু আলোচনা করা যাক।

প্রথমে ভেরিয়েবল কিভাবে ডিক্লেয়ার করা হয় তা আলোচনা করি। সি প্রোগ্রামিং-এ ভেরিয়েবল ডিক্লেয়ার করা সব চেয়ে সহজ একটা কাজ। তবে প্রথমে জানতে হবে প্রোগ্রামে কোন টাইপ এর ডেটা প্রয়োজন।

ভেরিয়েবল ডিক্লেয়ার এর সিনট্যাক্স হল-

ডেটা টাইপ ভেরিয়েবলর নাম;

data_type variable_name;

উদাহরণঃ

  • int a;

  • float b;

  • char c;

  • double d;

উপরের int, float, char, double হলো ডেটা টাইপ এবং a, b, c, d হল ভেরিয়েবলের নাম।

তবে ভেরিয়েবল যে কোন নামে ডিক্লেয়ার করা যায় না। এর কিছু নিয়ম আছে। নিম্নে তা উল্লেখ করা হল –

ভেরিয়েবল ডিক্লেয়ার করার নিয়ম

  1. ভেরিয়েবলের নাম alphabets, digits, and underscore হতে পারবে। যেমন- int a; int a_; int num1; ইত্যাদি।

  2. ভেরিয়েবলের নাম শুধু মাত্র alphabet and underscore দ্বারা শুরু হতে পারবে কিন্তু ডিজিট দ্বারা শুরু হতে পারবে না। যেমন – int a,_b; কিন্তু int 9a; ব্যবহার করা যায় না। কারণ ৯ দ্বারা শুরু হয়েছে।

  3. ভেরিয়েবলের নামে কোন whitespace গ্রহণ যোগ্য নয়। যেমন- first name এখানে whitespac ব্যবহার করা হয়েছে । যা ভুল। ঠিক টা হল firat_name বা firstname ;

  4. ভেরিয়েবলের নাম হিসেবে কোন reserved word or keyword ব্যবহার করা যাবে না। যেমন- int, float ইত্যাদি। সি প্রোগ্রামিং ল্যাঙ্গুয়েজে এরকম ৩২ টি keyword আছে।

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Featured Post

প্রোগ্রামিং ভাষা

প্রোগ্রামিং ল্যাঙ্গুয়েজ: প্রোগ্রামিং ল্যাঙ্গুয়েজ একটি নির্দেশাবলীর সেট কে সংজ্ঞায়িত করে, যা একটি নির্দিষ্ট কাজ সম্পাদন করতে একসাথে সংক...