কম্পিউটার প্রোগ্রামিং লেবেলটি সহ পোস্টগুলি দেখানো হচ্ছে৷ সকল পোস্ট দেখান
কম্পিউটার প্রোগ্রামিং লেবেলটি সহ পোস্টগুলি দেখানো হচ্ছে৷ সকল পোস্ট দেখান

সি প্রোগ্রামিং এর ভেরিয়েবল কি (সিনট্যাক্স এবং প্রোগ্রাম) ?

সি প্রোগ্রামিং এর ভেরিয়েবল কি (সিনট্যাক্স এবং প্রোগ্রাম) ?
সি একটি প্রসিডিউর প্রোগ্রামিং ল্যাঙ্গুয়েজ । সি প্রোগ্রামিং ভাষার আদি বৃত আগের একটি টিউনে আলোচনা করেছি । আজকে আলোচনা করবো সি ভাষার বেসিক কিছু নিয়ম বা রুল নিয়ে । বিপিয়া টিউটোরের আজকের নিবেদন সি প্রোগ্রামিং ভাষার ভেরিয়েবল ( Variable) নিয়ে । এই টিউনটি বিশেষ করে একাদশ শ্রেণির ছাত্র ছাত্রীদের উদ্দেশ্য করে লেখা। আইসিটি বই খুললেই হিজিবিজি যে প্রোগ্রামিং টা দেখতে পায় তারা সেটা তাদের হাতে খড়ি না। আরো অনেক কিছুই আছে যেটা কিনা ঐ কয়েক পৃষ্ঠার বইয়ে বুঝা সম্ভন না। তাই স্টুডেন্ট যারা আছ, তোমরা লেশনটি ভালো করে খেয়াল কর । তোমাদের বোধগম্য করে লেখা হয়েছে।

সি প্রোগ্রামিং ভাষায় চারটি ভেরিয়েবল আছে। সেটা তোমরা জানো।
  • ক্যারেক্টার (Character)[char] - অক্ষর ধরে রাখে (Ex: A, b, C, d)।
  • ইন্টিজার (Integer) [int] - পূর্ণ সংখ্যা ধরে রাখে (Ex: 0, 1, 2, 3, 4) ।
  • ফ্লোট (Float) [float] - দশমিক সংখ্যা ধরে রাখে (Ex: 2.33, 4.6, 1.12) ।
  • ডবল (Double) [double] - অনেক বড় দশমিক সংখ্যা ধরে রাখে (Ex: 2.1211134524, 3.123124548323) ।
এটা সবাই জানে । কিন্তু অনেকের কাছেই প্রশ্ন ভেরিয়েবল মানেই বা কি ? তাহলে ভেরিয়েবল জিনিসটি সহজে বুঝে নিই। এজন্য তুমি নিচের কাহিনীটি মন দিয়ে পড় আর ভালো ভাবে বুঝার চেষ্টা কর।
উপরের চিত্রে আমরা ১ ডজন আপেল দেখতে পাচ্ছি । কি! আপেল দেখে জ্বিভে জল চলে এলো ? আজ এই আপেল বক্স দিয়েই ভেরিয়েবল জিনিসটা বুঝে নেবো।
দেখতো , উপরের চিত্রে কি কি রয়েছে। দুটা জিনিস রয়েছে। 
১. ১২টি আপেল এবং
২. একটি আপেল রাখার বক্স। 

এই বাক্সের মধ্যে শুধু আপেল না অনেক ধরণের ফলমূল আমরা চাইলে রাখতে পারি। পারি না ? অবশ্যই পারি। যেমন আঙ্গুর ফল রাখতে পারি, লিচু রাখতে পারি, জাম রাখতে পারি । আরো অনেক কিছু । মোট কথায়, বাক্সটিতে ধারণ করতে পারে এমন অনেক কিছুই এখানে রাখা সম্ভব ।
এখন আমার ইচ্ছা হল আমি আরো ১২টি আপেল এক সাথে রাখতে। সেটা কিভাবে সম্ভব ? 
দুটি উপায়ে সেটা সম্ভব । যেমন,
১. আরেকটি একই ধরণের আপেল বক্স এনে এক সাথে বাধায় করলে
২. অথবা এই বক্সের দ্বিগুণ বড় কোন বক্স আনলে।
এই ঘটনাটা যদি বুঝতে পারো তাহলে তুমি সিউর থাক আজকে তুমি ভেরিয়েবল জিনিসটি ক্লেয়ার হয়ে যাবে। এখন নিচের কথাগুলো মন দিয়ে শুনবে, 
ভেরিয়েবলঃ আপেল গুলোকে সুসজ্জিত আকারে সাজানোর জন্য আমরা উপরে চিত্রে যে বাক্সটি দেখতে পাচ্ছি সেটাকে বলা হয় ভেরিয়েবল (Variable) । অর্থাৎ, সেখানে নির্দিষ্ট পরিমাণের আপেল কিংবা অন্য কোন জিনিস রাখতে পারি। যতটুকু কন্টেইনার (Container) টিতে ধরে ।



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

এখন ভেরিয়েবল ও ভেরিয়েবলের ডাটা টাইপ বুঝলাম । কিন্তু প্রোগ্রামিং ভাষায় এটাকে কিভাবে লিখবো? 

প্রোগ্রামিং ভাষায় এটাকে কিভাবে লিখবো? 
প্রোগ্রামিং ভাষায় এটাকে প্রকাশ করতে হলে, কম্পাইলার যে রকম বুঝে ঠিক সে রকমি আমাদের কম্পাইলারে লিখতে হবে,
কম্পিউটার চার ধরণের ডাটা টাইপের চারটি সংক্ষিপ্ত নামে চিনে । এবং তার একটি লেখার পদ্ধতি আছে । যেটাকে প্রোগ্রামিং এর ভাষায় ভেরিয়েবল ডিক্লারেশন সিনট্যাক্স (Variable Declaration Syntax) বলা হয় । নিচে চারটা ডাটা টাইপের লেখার পদ্ধতি দেয়া হল,

ইন্টিজারঃ
1. // ইন্টিজার ব্যবহারের পদ্ধতি
2. int Variable_Name;
অর্থাৎ, প্রথমে লিখতে হবে int (ছোট হাতের) পরে ভেরিয়েবলের নাম । তবে যা ইচ্ছা দিলে তাও কম্পাইলার বুঝতে পারবে না। ভেরিয়েবলের নাম অবশ্যই ইংরেজিতে লিখতে হবে । প্রথম অক্ষর বড় হাতের দেয়া যাবে না । স্পেস থাকতে পারবে না। স্পেশাল অক্ষর ব্যবহার করা যাবে না  আরো কয়েকটা । যদি ভালো করে না বুঝে থাক তাহলে নিচের লিংক থেকে বিস্তারিত জেনে নিও । এখন একটি উদাহরণ দেখো,
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    int number ;
  5.    number = 500 ;
  6.    printf("My int variable number : %d", number);
  7. }
এই প্রোগ্রামে আমাকে 500 আউটপুট দেখাবে। number  নামের একটি ভেরিয়েবল বানিয়েছি আর ৫ নাম্বার লাইনে আমি number এর ভিতর 500 সংখ্যাটি রেখেছি । আবার প্রিন্ট করেছি number ভেরিয়েবলের ভিতরে যা আছে । তাই আউটপুটতো 500 ই দেখাবে ।


ক্যারেক্টারঃ
1. // ক্যারেক্টার ব্যবহারের পদ্ধতি
2. char Variable_Name;
অর্থাৎ, প্রথমে লিখতে হবে char (ছোট হাতের) পরে ভেরিয়েবলের নাম ।
এখন একটি উদাহরণ দেখো,

  1. #include <stdio.h>
  2. int main()
  3. {
  4.    char* name ;
  5.    name = Nandita ;
  6.    printf("Character you typed is: %s"name);
  7. }
এই প্রোগ্রামে আমাকে "Character you typed is: Nandita" আউটপুট দেখাবে । name  নামের একটি ভেরিয়েবল বানিয়েছি আর ৫ নাম্বার লাইনে আমি name এর ভিতর Nandita লেখাটি লিখেছি । আবার প্রিন্ট করেছি name ভেরিয়েবলের ভিতরে যা আছে । তাই আউটপুটতো "Character you typed is: Nandita" ই দেখাবে ।

ফ্লট নাম্বারঃ
1. // ফ্লট ব্যবহারের পদ্ধতি
2. float Variable_Name;
অর্থাৎ, প্রথমে লিখতে হবে float (ছোট হাতের) পরে ভেরিয়েবলের নাম ।
একটি উদাহরণ দেখো,
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    float number ;
  5.    number = 4.5689 ;
  6.    printf("Float Number You Typed Is: %f"number);
  7. }
এই প্রোগ্রামে আমাকে "Float Number You Typed Is: 4.5689" আউটপুট দেখাবে । number  নামের একটি ভেরিয়েবল বানিয়েছি আর ৫ নাম্বার লাইনে আমি number এর ভিতর 4.5689 সংখ্যাটি লিখেছি । আবার প্রিন্ট করেছি number ভেরিয়েবলের ভিতরে যা আছে । তাই আউটপুটতো  "Float Number You Typed Is: 4.5689" ই দেখাবে ।

ডবল নাম্বারঃ
1. // ডবল ব্যবহারের পদ্ধতি
2. double Variable_Name;
অর্থাৎ, প্রথমে লিখতে হবে double (ছোট হাতের) পরে ভেরিয়েবলের নাম ।
একটি উদাহরণ দেখো,
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    double number ;
  5.    number = 41112.568787759 ;
  6.    printf("Double Number You Typed Is: %lf"number);
  7. }
এই প্রোগ্রামে আমাকে "Double Number You Typed Is: 41112.568787759" আউটপুট দেখাবে । number  নামের একটি ভেরিয়েবল বানিয়েছি আর ৫ নাম্বার লাইনে আমি number এর ভিতর 4.5689 সংখ্যাটি লিখেছি । আবার প্রিন্ট করেছি number ভেরিয়েবলের ভিতরে যা আছে । তাই আউটপুটতো "Double Number You Typed Is: 41112.568787759" ই দেখাবে ।

তোমরা যারা Code::Blocks এ প্রোগ্রাম রান করতে পারো তারা দেখো উপরের কোড গুলো কাজ করে কি না? 
আর নিজে নিজে অনেক অনেক প্রোগ্রাম তৈরী কর ডাটা টাইপের উপর । আর যদি কিছু তৈরী করতে পারো তবে কোডটা কপি করে নিচের কমেন্ট বক্সে পেস্ট করে দিবে । আর তোমার বন্ধুদের সাথে যা জেনেছো তা শেয়ার করবে । 
আগামী টিউনে আর অনেক প্রোগ্রামিং নিয়ে লেখা পাবে ।



প্রোগ্রামিং ভাষা সি এর সংক্ষিপ্ত ইতিহাস (ইতিহাসের সহজ পাঠ)

প্রোগ্রামিং ভাষা সি এর সংক্ষিপ্ত ইতিহাস (ইতিহাসের সহজ পাঠ)
পৃথিবীতে প্রায় সারে তিন হাজারেরো বেশি ভাষা আছে । ভাষা মানে মানুষ মনের ভাব প্রকাশ করার একটি সর্বোত্তম পদ্ধতি । পৃথিবীর সৃষ্টি লগ্ন থেকে শুরু করে আজোবধি ভাষা চর্চা রীতিমত হচ্ছে । সেটা শিশুর মুখে বুলি শিখাতেও হয়, আবার দক্ষতার বহিঃপ্রকাশেও । আমরা জন্মের পর থেকেই যে ভাষা রপ্ত করি সেটা বাংলা । তেমনি কম্পিউটারের আবিষ্কারের মধুলগ্ন থেকেও একটা ভাষার আমেজ মেশিনের ভিতরে তোয়ার রয়ে গেছে । অর্থাৎ, আপনি যেমন আপনার কোম্পানির কর্মচারীদের এক এক করে কাজ বুঝিয়ে দেন । ঠিক তেমনি , কম্পিউটারের ইঞ্জিনকে তার কাজ বুঝানোর জন্য যে ভাষাগুলো ব্যবহার হয় তাদেরকে 'প্রোগ্রামিং ল্যাঙ্গুয়েজ' বলে । ল্যাঙ্গুয়েজ কথাটির অর্থতো আমরা জানি । কিন্তু প্রোগ্রামিং কথাটির কোন আভিধানিক অর্থ নেই । এর অর্থও রাখা উচিৎ না । যে নামে পৃথিবী চিনে সেই নামটাইনা অনবদ্য থাকুক ! আজকে প্রোগ্রামিং সি ভাষার ইতিহাস সংক্ষেপে তোলে ধরবো । কাহিনীর সাথে তাল মিলিয়ে উপস্থাপনের চেষ্টা করছি আশা করি পড়ে বুঝতে ও জানতে পারবেন । আর কথার ফাকে রম্য মজাতো থাকছেই ।

একটা বিদ্যুৎ চালিত যন্ত্র । যার না আছে প্রাণ, না আছে বলার শক্তি । তার কোন ইচ্ছা, আকাংখা নেই । মালিক যেমন চালায় তেমনি চলে । কুকুরতো মাঝে মাঝে প্রভুকেও কামড় বসিয়ে দেয় । কিন্তু এই যন্ত্র কোনদিন আপনার আদেশ ছাড়া আর কোন কথায় মাথায় রাখে না । আমি কম্পিউটারের কথায় বলছি ! একে পরিচালনার কাজে প্রোগ্রামিং ভাষা ব্যবহার করা হয় । কম্পিউটার প্রোগ্রামিং ল্যাঙ্গুয়েজের যদি সংজ্ঞা সহজ ভাষায় বলতে যায় তাহলে সংজ্ঞাটি ঠিক এরকম দাঁড়ায় । "কম্পিউটারকে কার্যপোযোগী করতে যে সব ভাষায় নির্দেশাবলী ও কার্যধারাগুলো বুঝানো হয় তাদেরকে কম্পিউটার প্রোগ্রামিং ভাষা বলে ।" এখনো পর্যন্ত ২৫৬ টি প্রোগ্রামিং ভাষা পৃথিবীতে আবিষ্কৃত হয়েছে । আর আবিষ্কৃত হবে না তা না । মানুষ এমন একটি সুরঙ্গ পথে চলেছে যে পথ থেকে শুধু নতুন কিছুই বেরিয়ে আসে । পৃথিবীতে প্রথম প্রোগ্রামিং ল্যাঙ্গুয়েজ হল "মেশিন ভাষা" । তাহলে চলুন জেনে নেয়া যাক মেশিন ভাষাইবা কি?

মেশিন ভাষা

সহজে কথায় মেশিনকে কাজ করানোর উপযোগী করতে যে নির্দেশাবলী দেয়া হয় তাকে মেশিন ল্যাঙ্গুয়েজ বা মেশিন ভাষা বলে । এই ভাষা ০ এবং ১ এর ভিতরে সীমাবদ্ধ । কি অদ্ভুৎ কাহিনী ? তার মানে ০ এবং ১ ছাড়া কম্পিউটার মেশিন কিছুই বুঝে না! তাহলে কিভাবে এটাকে ভাষা বলা যায় ? যার, স্বরবর্ণ ব্যঞ্জনবর্ণ কিছুইতো নেই ! এ, বি, সি, ডি থাকলেওতো একটা কথা ছিলো ? হাস্যকর হলেও এটাই প্রথম ভাষা যেটা মেশিন বুঝে । বিজ্ঞানীরা এই ভাষায় গাণিতিক যুক্তিগত সমস্যাগুলো কম্পিউটার মেশিনে সেটাপ করতো । আর মেথডটা কম্পিউটার ইঞ্জিনে একবার বুঝিয়ে দিলে সে হাজার হাজার কাজ খুব দ্রুত করে দিতে পারে । প্রথম "চার্লস ব্যাবেজ" এই প্রোগ্রামেবল কম্পিউটিং মেশিন তৈরী শুরু করেন । যেটাতে অ্যাডা লাভলেস" মেশিন ভাষায় প্রোগ্রাম রচনা করেন ।


সি ভাষার বিবর্তন

মেশিন ভাষায় প্রোগ্রাম রচনা এতো কঠিন ছিলো যে , সামান্য কোডে ত্রুটি হলে সমগ্র প্রোগ্রামটাই নতুন করে শুরু করতে হত । এতো বিশাল ০ এবং ১ এর মাঝে ত্রুটি খুঁজাটা প্রায়ই অসম্ভব ছিলো । তাই নতুন করে শুরু করাটাই বুদ্ধিমানের কাজ ছিলো । এরপর বিজ্ঞানীরা ভাবতে শুহরু করলো এমন কোন ট্রান্সলেটর তৈরী করা যায় কি, যেটা ইংরেজির অ্যালফাবেট গুলোকে মেশিন ভাষায় (০ এবং ১) রূপান্তরিত করতে পারে । তারি চিন্তা ভাবনায় ১৯৪৯ সালে এর প্রথম বহিঃপ্রকাশ ঘটে যার নাম "এসেম্বলি প্রোগ্রামিং ল্যাঙ্গুয়েজ" । এরপর প্রোগ্রামিংটা আরো সহজ হয়ে গেলো । ০, ১ দিয়ে আর প্রোগ্রাম লেখার প্রয়োজন নেই । এখন ইংরেজিতে লিখলেও কম্পিউটার বুঝতে পারে। নিচে মেশিন ভাষার একটি উদাহরণ দিলাম,
কাজ
কোড
  i এবং j এর মান যোগ কর 
(add i with j)
  0000 0010 1111 1100 1000  
এমনটাই উদ্ভট প্রোগ্রাম ছিলো । যার দরুন প্রোগ্রামাররা কোডে ত্রুটি হলে সম্পূর্ণ প্রোগ্রামটাই আবার প্রথম থেকেই শুরু করত । এরপর একটি ট্রান্সলেটরের মাধ্যমে এসেম্বলি ভাষার আগমণ ঘটলো । এতে কোডিংটা আরো সহজ হয়ে গেলো । দেখুন এর কোড কিরকম ছিলো ।
কাজ
কোড
    i এবং j এর মান যোগ কর     
        ADD        I AND J   

কিন্তু এসেম্বলি ভাষায় কিছু সমস্যা ছিলো । এসেম্বলি ভাষায় প্রোগ্রাম লিখতে গেলে আপনাকে অবশ্যই কম্পিউটারের প্রোসেসরের গঠন ও আনুসাঙ্গিক দিকগুলো ভালো জানা থাকতে হবে । নাহলে আপনি কমান্ড গুলো বুঝতে ও ব্যবহার করতে পারবেন না । সুতরাং, বিশাল একটি সমস্যায় পরেগেলো বিজ্ঞানীরা । এটাতো কেবল কম্পিউটার বিজ্ঞানীদের ভাষা হয়ে গেলো । প্রোগ্রামিং কে সাধারণ মানুষের ব্যবহারযোগ্য করে গড়ে তোলতে ১৯৫০ সালে আমেরিকান একজন মহিলা বিজ্ঞানী ডঃ গ্রেস হপার তিনটি প্রোগ্রামিং ভাষা তৈরী করেন । যার নাম দেন MATH-MATIC, FLOW-MATIC এবং A2 । এই ভাষাগুলোই বর্তমান যতসব উচ্চতর ভাষার প্রাণকেন্দ্র । এর ধারাবাহিকতায় ১৯৬০ সালে ALGOL (Algorithm language) , ১৯৬৭ সালে BCPL (Basic Combined Programming Language) , ১৯৭০ সালে B Language, ১৯৭২ সালে সি  ভাষা (ট্রেডিশনাল) তৈরী হয় । সি (C Language) আসার পর প্রোগ্রামিং জগতে আলোরণ সৃষ্টি হয়ে যায় । এরি ধারাবাহিকতায় সি ভাষাকে আরো উন্নত করা হয় । কার্নিঘাম ও রিচ মিলে সি ভাষাকে আরো অনেক উন্নয়ণে কাজ করে । এরপর ১৭৮৯ সালে সি ভাষাকে আমেরিকান ন্যাশনাল স্টেন্ডার্ডস ইন্সস্টিটিউট (ANSI) সি ভাষাকে আদর্শ ভাষা হিসেবে স্বিকৃতি দেয় । ১৯৯০ সালে ইন্টারনেশন্যাল স্টেন্ডার্ডস অরগানাইজেশন (ISO) স্বিকৃতি পায় । এরপর সকল উচ্চতর ভাষার মূলস্বরূপ এই ভাষাকে সর্বোজন স্বীকৃত আদর্শ ভাষা হিসেবে ১৯৯৯ সালে প্রতিস্থা লাভ করে । আজবধি এই ভাষা সকল প্রোগ্রামারের স্বরলিপি স্বরূপ শিক্ষা নেয়া হচ্ছে । নিচের চিত্র থেকে দেখে নিন এই বিবর্তনের তথ্যমূলক চিত্রটি ।

এটি হল সি ভাষার বিবর্তন । আজ কত নতুন নতুন উচ্চতর ভাষা তৈরী হয়েছে । কত বিজ্ঞানীর অঢেল পরিশ্রমে আজকের এই উচ্চতর কম্পিউটার । কত সহজেই না আমরা একে ব্যবহার করতে পারছি । এ কৃতজ্ঞতা একজনের বা কয়েক জনের না । এটা বহু জনের জ্ঞান স্বরূপ বিজ্ঞানের আশির্বাদ ।