Showing posts with label সি প্রোগ্রামিং. Show all posts
Showing posts with label সি প্রোগ্রামিং. Show all posts

Sunday, June 21, 2015

সি প্রোগ্রামিং : পর্ব ০৬>> একটি সি প্রোগ্রাম

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

কোন লিখা, প্রোগ্রাম লিখে কিভাবে প্রিন্ট করবো সেটা দেখি আগে চলুন । 
আচ্ছা যেকোনো একটি লিখা, ধরি "Hello Readers". এখন আমরা এই লিখাটি প্রোগ্রামিং করে লিখবো ।

#include <stdio.h>

int/void main()
{
      system("COLOR A"); //ভাই/বোন এইটা নিয়ে মাথা না ঘামাইলেও চলবে । :)
      printf("Hello Readers");
      
      return 0;
}
আচ্ছা এখন কয়েকটা বিষয় লক্ষ করি, প্রথমত প্রোগ্রামটা কম্পাইলারে লিখে ফেল, তারপর রান করাও । দেখ আউটপুট কি আসে । 
 আমি শেষ বারের মতন Snap Shot দিয়ে কোড বুঝিয়ে দিব । যাই হোক, প্রথমে একটি নিউ ফাইল খুল তারপর ফাইলটিকে .c extension দিয়ে সেভ করো । যারা এক্সটেনশন(extension) মানে বুঝ না পরে এই ব্যাপারে একদিন লিখবো । 
বিঃদ্রঃ সেভ করার সময় যাই ই লিখ ভাই তবে পাশে .c Extension টা দিয়ো ।

সেভ করার কাজ শেষ।

এখন ব্যাপার হচ্ছে তুমি চাইলে আগে কোড লিখে তারপর সেভ করতে পারো ।  It Doesn't Matter Actually । কোডটা লিখে রান করাও এবার ।

Thursday, June 18, 2015

সি প্রোগ্রামিং : পর্ব ০৫>> ভেরিয়েবল এবং ডাটা টাইপ

ভেরিয়েবল কি এবং কেন ?

           ভেরিয়েবল এর বাংলা অর্থ হল চলক । চলক এর অর্থ অনেকেই জানো তোমরা । একটি চলক একটি মান / VALUE বহন করে এবং মানটি পরিবর্তন হতে পারে যেকোনো মুহূর্তে । এটা ছিল সহজ বাংলায় ভেরিয়েবল এর অর্থ । চলককে আমরা ধারণকারী বলতে পারি । এবং যখন যা তাকে দেয়া হবে তা সে তখন গ্রহন করবে । একটু বুঝার চেষ্টা করি বরং । ধরো, X + 10 = ? এখন তুমি এখানে X এর VALUE / মান যেকোনো কিছু বসাতে পারো । ধরো X = ২০; এখন ২০ + ১০ = ৩০ । এখন তুমি X = 40.5, X = 10.5, X = 25; ইত্যাদি মান নিয়ে বসাতে পারো X ভেরিয়েবলে । 40.5 + 10 = 50.5; / 10.5 + 10 = 20.5; / 25 + 10 = 35; । তাহলে আমরা বলতে পারি A Variable is an element, feature or factor that is liable to vary or change । অর্থাৎ ভেরিয়েবল এমন একটি উপাদান যা কিনা একটি মানের পরিবর্তে যেকোনো মান/VALUE নিতে পারে । কম্পিউটারের ক্ষেত্রেও ভেরিয়েবল একই কাজ করে ।

           আচ্ছা এবার আমরা আসি এটা কোন দুঃখে ব্যাবহার করা হয় :P । চল একটু স্বপ্ন দেখি ? যাই হক স্বপ্ন টা একটু অন্যরকম জোর করে দেখতে হবে, কল্পনা (Imagine) করতে হবে আরকি । ধরো, 5 এবং 10; এই দুটি সংখ্যা যোগ করবে । মেশিন ল্যাঙ্গুয়েজ এ এটা করতে গেলে তোমাকে দুটো ADDRESS এ মানগুলো রাখতে হবে । ধরি 1001 এবং 1501 এ রাখলাম যথাক্রমে 5 এবং 10 । এখন এই দুটো সংখ্যা তুমি যোগ করতে চাও তাহলে তোমাকে সরাসরি মেমোরি নিয়ে কাজ করতে হবে অর্থাৎ তোমাকে 1001 & 1501  এই দুটো মেমোরির ডাটা যোগ করতে হত, যা কিনা খুবই বিরক্তিকর এবং কষ্টকর আর এখন তো মেমোরি নিয়ে কাজ করার প্রশ্নই আসে না । কিন্তু হাই লেভেল ল্যাঙ্গুয়েজ এ ভেরিয়েবল নামক একটি বিষয় রয়েছে যা এই কষ্ট থেকে আমাদেরকে মুক্তি দান করেন :P । কিভাবে করে প্রশ্ন দাড়ায় এখন ? ধরো A = 5 & B = 10; এখানে A, B হচ্ছে একটি ভেরিয়েবল বা চলক, এটিকে মূলত রুপক অর্থে ব্যাবহার করা হয় । যেমন A আর B Variable দুটো Randomly ( ইচ্ছামতন ) মেমোরি তে একটি জায়গা করে নিবে । ধরলাম, সেই Address টি হল 1001, এই Address টার নাম দেয়া হয়েছে "A" যেটা একটা চলক বা variable । অনুরূপভাবে B চলকটি হচ্ছে 1501 মেমোরির Address টির নাম । 

তাহলে,
A = 5  ও B = 10; 
C = A + B = 5 + 10 = 15; 
A = 1001 = 5 এবং B = 1501 = 10; 

C আরেকটি চলক যার কাজ হচ্ছে A + B কে যোগ করে C তে রাখবে । ধরি C এর মেমোরি Address হচ্ছে 2001 তাহলে C = 15 ( যা কিনা A + B এর যোগফল ) 2001 মেমোরি Address এ 15 রাখবে । নিচের চিত্র গুলো আমার কথা গুলোকে Represent করতেছে । 

            তাহলে Variable বা চলক এর কাজ হচ্ছে কোন মানকে সংরক্ষণ করে রাখা এবং প্রয়োজনমতন তুমি ভেরিয়েবল এর মান পরিবর্তন ও করতে পারবে । এবার আমরা একটু উপরে ফিরে যাই ।

আচ্ছা এখানে দুটো ব্যাপার, যেহেতু মেমোরি বাইনারি নাম্বার ছাড়া কিছু বুঝে না, 5 এর বাইনারি মান হচ্ছে 101 । নিশ্চয়ই চিন্তা করতেছ যেহেতু মান 101 তাহলে আগে 00000000 00000101 । এখানে সংক্ষেপে বলব আমি কেননা এখন বললে আমাকে কিছু একটা ছুরে মারতে পার । মাথা গরম হয়ে যাওয়ার সম্ভাবনা বেশি :P । যাই হোক ফেরত আসি আগের কথায় । ৫ একটি পূর্ণ সংখ্যা অর্থাৎ Integer Value, So (5)10 = (101)2 । অর্থাৎ ৫ এর বাইনারি মান হচ্ছে ১০১ । কম্পিউটারে পূর্ণসংখ্যার / Integer এর জন্য ২ বাইট করে জায়গা খায় । ১ বাইট = ৮ বিট, তাহলে মেমোরিতে জায়গা আছে ১৬ বিট এবং প্রতিটা Memory Address 8 bit করে জায়গা থাকে । জেহেতু 5 এর বাইনারি মান ১০১ তাই আগের ঘরগুলো 00000000 00000101 এভাবে পূরণ করা হয়েছে । বাকিটুকু পরে আলচনা করতেছি ।

ডাটা টাইপ কি এবং কেন ? 

        ডাটা টাইপ কথাটাই অনেক কিছু বলে দিচ্ছে যেমন, কি ধরনের ডাটা হতে পারে, থাকতে পারে কিংবা ব্যাবহার করা যেতে পারে কোন প্রোগ্রামিং ল্যাঙ্গুয়েজে । সি তে মূলত ৪ ধরনের ডাটা টাইপ রয়েছে । 
  • Integer Data Type
  • Double Data Type
  • Float Data Type
  • Char Data Type

Integer Data Type:

      Integer Data Type এর ব্যাপারে তো বললামই । মূলত এটি {-1,-2,-3....0....1,2,3....} এই নাম্বারগুলো ব্যাবহার করার জন্য int Data Type ব্যাবহার করা হয় । int এর জন্য মেমোরি ২ বাইট জায়গা নেয় । 

Double Data Type:

     Double Data Type ভগ্নাংশ Declare করার সময় ব্যাবহার করা হয় । Double Data Type মেমোরিতে ৮ বাইট জায়গা নেয় । এখন শুধু এই কথা গুলো মনে রাখ পরে ব্যাখ্যা করব কিভাবে কি করতে হবে ।

Float Data Type:

     Float Data Type এবং Double Data Type এর কাজ একই । কিন্তু Float Data Type Memory তে জায়গা কম ব্যাবহার করে । Float Type Variable এর জন্য মেমোরি ৪ বাইট জায়গা নেয় । 

Char Data Type:

     Char Data Type হল Character Declare করার সময় ব্যাবহার করা হয় । Character Data Type মেমোরি তে ১ বাইট জায়গা ব্যাবহার করে ।


        এখন ভাই এগুলা দিয়া কি করব । ফেলে দিব নাকি মাথায় রাখব । মাথায় রাখ এগুলা দিয়া প্রোগ্রাম লিখবা পরে :P । 

Friday, April 10, 2015

সি প্রোগ্রামিং : পর্ব ০৪>> শুরু


           অনেক কিছুই তো আমরা দেখলাম যেমন কম্পিউটার কিভাবে কাজ করে, প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলো কি কি এবং কেন !!! আজকে আমরা কোডিং করবো না তবে কোডিং এর শুরু টা কিভাবে করতে হবে সেটা জানবো ।

কম্পাইলার এবং ইনটারপ্রেটার কি এবং কেন 

           প্রোগ্রামিং মানেই কোড করা এটা আমরা জেনে থাকি । কিন্তু কোথায় কোড করবো সেটা জানি না । আবার অনেকেই জানি । কোড করার জন্য মূলত একটা ( COMPILER/INTERPRETER ) এর প্রয়োজন হয়ে থাকে । এটা আসলে কি ? আমরা কিন্তু জানি কম্পিউটার মূলত বাইনারি পদ্ধতি মেনে চলে । ০ এবং ১ এই দুইটা সংখ্যার উপর নির্ভর করে চলে আরকি । তাই আমরা সি ভাষায় যে প্রোগ্রাম (Source Code) লিখব তা কম্পিউটার COMPILE বা TRANSLATE করে (Object Code) মেশিন ল্যাঙ্গুয়েজ এ নিয়ে যাবে । তারপর সেই প্রোগ্রাম এর আউটপুট দেখাবে । আমরা নিচের চিত্রে একটু তাকিয়ে দেখি বরং । 


                                    COMPILATION PROCESS 

ইনটারপ্রেটারঃ

            ইনটারপ্রেটারকে বাংলা করলে দাড়ায় দোভাষী । ধরো তুমি একজন জাপানিজ লোককে বললে হেলো ভাই, কেমন আছেন । এখন জাপানিজ লোকটা যদি বাঙালি না হন তবে হা করে চেয়ে থেকে বলবে "রিকাই দেকিমাছেন" :P ( I don't understand ) (ভাব নিলাম আরকি) । সো তোমার একজন দোভাষী লাগবে কথা গুলো বলার জন্য । তুমি একটা কথা জিজ্ঞেস করলে ইনটারপ্রেটার সাথে সাথে ই তো ঐ কথা টা জাপানিজ কে বলবে । এবং জাপানিজ লোকটা কিছু বললে ইনটারপ্রেটার তোমাকে ব্যাখ্যা করবে টার কথা গুলো তাই না ? এই Theory টাই মূলত ইন্টারপ্রটিং এর সময় ব্যাবহার করা হয় । এখন কম্পিউটারের ভাষায় ইনটারপ্রেটার হচ্ছে একটি সফটওয়্যার যা কিনা প্রোগ্রামকে DIRECT EXECUTE করতে সাহায্য করে ।  এবং ইনটারপ্রেটার লাইন বাই লাইন কম্পাইল করে । অন্য একদিন ইনটারপ্রেটার এবং কম্পাইলিং এর ব্যাপারটা ব্যাখ্যা করে লিখব । 

             সি প্রোগ্রাম লিখার জন্য কম্পাইলার এর প্রয়োজন । অনেকগুলা কম্পাইলার ই রয়েছে টার ভিতর CODE BLOCKS, Turbo C , Borland C etc etc . আমরা Code blocks ব্যাবহার করবো কম্পাইল করার জন্য । নিচের দেখানো মতন কাজগুলো করে ফেল বরং যাতে সি তে কোড করতে পারো । :D 

Click On The link:

http://www.codeblocks.org/downloads/26

 যদি তুমি WINDOWS User হও তাহলে windows 2000/XP/VISTA/7/8/10 এটাতে Click করো । আর না হলে তুমি যেটা ব্যবহার করো সে অনুযায়ী ক্লিক করো :) । ডাউনলোড করে ইন্সটল করে নাও । ইন্সটল Process টা নিচে দেখে নিতে পারো । 

 
Next Please...


I Agree ...  

Again Next ...

 Process Completing / On going :P ...

Oka... i mean OK ... :P

Next Please ...

Finish && Done :D ...
Code Blocks starting interface

Go to file/new/empty file Click on empty file অথবা Ctrl + Shift + N চাপুন অথবা Create A New Project এ Click করো । চল এবার আমরা ছোট্ট একটি কোড লিখে ফেলি । পরের পোস্ট থেকে আমরা সি প্রোগ্রামিং নিয়ে আলোচনা করবো । Empty File তৈরির পর File/save file as এ ক্লিক করো তারপর anything.c দিয়ে ফাইলটি সেভ করে রাখ ।
       anything.c / hello_world.c
যা মনে আসে তা লিখে শেষে .c যুক্ত করলেই হবে । এরপর নিচের কোডটি লিখে ফেল :D । printf("এখানে যা মন চায় লিখ । ");


কোডটি লিখার পরে Build অপশন এ গিয়ে Build And Run A ক্লিক করো । int main() এবং  #include <stdio.h> এই দুটো জিনিস কি কাজ করে তা আমরা পরে ব্যাখ্যা দেখব ।



Output টা এরকম আসবে... 
        
         আজ এতটুকুই । ভুল থাকলে ক্ষমা করতেই হবে আপনাদের :D  । এতক্ষণ ধৈর্য ধরে পড়ার জন্য নিজেকে ধন্যবাদ দিন । কেননা আপনি নতুন এক পথে পা দিচ্ছেন ধীরে ধীরে । ধরে রাখতে পারলে অনেক কিছুই করতে পারবেন আশা করি :) ।

To Read The Next Part Of C Programming Language Click On The Link Below: 

সি প্রোগ্রামিং : পর্ব ০৫>> ভেরিয়েবল এবং ডাটা টাইপ 

Monday, April 6, 2015

সি প্রোগ্রামিংঃ পর্ব ০৩ >>সি ল্যাঙ্গুয়েজ উপাখ্যান

সি ল্যাঙ্গুয়েজ কি?

সি হচ্ছে একটা general purpose, imperative কম্পিউটার ল্যাঙ্গুয়েজ। (general purpose হচ্ছে সাধারন প্রায় সব কাজের জন্য ব্যবহৃত ল্যাঙ্গুয়েজ এবং imperative বলতে কমান্ড বাই কমান্ড কোড করার ব্যপারটা বুঝায়)
Structured programming, lexical variable, scope এবং recursion এর কাজ অনায়াসেই সি দিয়ে করা যায় (অথবা করা হয়) । মুলত সি কে এমন ভাবে ডিজাইন করা হইয়েছে যাতে করে খুব সহজে মেশিন কে ইন্সট্রাকশান দেয়া যায়। আর এ জন্যই এখন পর্যন্ত সি ব্যবহার করা হয় আগে যেখানে ফরমালি assembly language ব্যবহার করা হত। অপেরাটিং সিস্টেম, অ্যাপ্লিকেশান সফটওয়্যার, সুপারকম্পিউটার সহ বিভিন্ন embedded system (যেমনঃ micro-controller ভিত্তিক সিস্টেম)


সি এর জন্মলগ্ন

Dennis Ritchie, 1999
Dennis Ritchie নামক ভাই সাহেব ১৯৬৯-১৯৭৩ এর দিকে AT&T Bell Labs এ বসে বসে সি ডিজাইন করে এবং Unix অপারেটিং সিস্টেম নতুনভাবে বানায়। (কিন্তু কাহিনি হইলো যে সেই আমলে কম্পিউটার ছিল!!! :o ) যাই হোক পরবর্তিতে Dennis Ritchie ও Bell Labs একে অনেক ডেভেলপ করে।  তারপর এটা বিস্তর প্রসারে ছড়িয়ে পরে এবং ব্যপকারে ব্যবহার শুরু হয়।
১৯৮৯ এর দিকে ANSI সি কে আন্তর্জাতিক স্ট্যন্ডার্ড হিসেবে স্বীকৃতি দেয়।

পরবর্তিতে আরো অনেক মহা মহা প্রোগ্রমিং ল্যাঙ্গুয়েজও সরাসরি অথবা পরক্ষভাবে সি এর উপর নির্ভর করে বানানো হয়। (যেমনঃ C++/C#, Java, Python, Objective-C, Perl, PHP, JavaScript, D, Go, Rust, Verilog(হার্ডওয়্যার ভিত্তিক ল্যাঙ্গুয়েজ), LPC, Unix এর C Shell ইত্যাদি আরো অনেক...  

এই ল্যাঙ্গুয়েজ গুলোর কন্ট্রোল স্ট্রাকচার আর অনেক syntax(প্রোগ্রামিং এর কিছু সুনির্দিষ্ট নিয়ম) সি এর সাথে অনেক বেশি সাদৃশ্যপূর্ণ।






সি এর ব্যবহার

সি মুলত সিস্টেম ডেভেলপমেন্ট এর কাজ করে থাকে। সি প্রায় assembly language এর মতই দ্রুত কাজ করে তাই বড় ধরনের প্রোগ্রামে সি অনেক ভাল। 
সি ব্যবহার এর কিছু উদাহারনঃ

  • অপারেটিং সিস্টেম
  • ল্যাঙ্গুয়েজ কম্পাইলার
  • Assemblers
  • Text editor
  • Print spoolers
  • Network Drivers
  • আধুনিক প্রোগ্রাম 
  • ডাটাবেজ
  • ল্যাঙ্গুয়েজ ইন্টারপ্রিটার
  • Utilities 
বর্তমানে সি কে general pupose ল্যাঙ্গুয়েজ হিসেবে খুব  বেশি ব্যবহার করা হয়। সি পৃথিবীর সব থেকে সহজ ল্যাঙ্গুয়েজ না কিন্তু প্রথম প্রোগ্রামিং ল্যাঙ্গুয়েজ সি না হলে তুমি অনেক সুবিধা থেকে বঞ্চিত হবে। সি অনেক বেশি সুন্দর । 

আজকের মত এতটুকুই। সি শেখার জন্য প্রস্তুতি নিতে থাক। আর হ্যা অবশ্যি অনেক বেশি গনিত করবে। 
Happy Coding...

To Read The Next Part Of C Programming Language Click On The Link Below: 

সি প্রোগ্রামিং : পর্ব ০৪>> শুরু

Sunday, March 29, 2015

সি প্রোগ্রামিংঃ পর্ব ০২ >> শুরুর আগে (০২)

প্রোগ্রামি-এর শুরুঃ         

        প্রোগ্রামিং ল্যাংগুয়েজ গুলো কি কি এবং কেন ?


পৃথিবীতে অনেক অনেক (অনেক অনেক বলতে Infinite নয় আবার ) ।  ১০০ ( শিখে শেষ করতে পারলে ভাল ই হতো তাই অনেক বলেছি । কি বলেন? :P ) এর বেশি প্রোগ্রামিং ল্যাংঙ্গুয়েজ আছে পৃথিবীতে । বিভিন্ন ল্যাংগুয়েজ বিভিন্ন কাজে ব্যাবহার করা হয় (There Are Limitations In Every Programming Languages, Different languages Are Used For Different Tasks. ) ।

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


  1. WEB Languages
  2. Software Languages
  3. The Different Generations of Languages
  4. Procedure Oriented Programming
  5. Object Oriented Programming (OOP)

WEB Languages:

HTML, CSS, PHP, JAVA, JS (Java Script) etc ...

Software Languages:

C, C++, Assembly, Java, Visual Basic, FORTRAN, Basic, ruby, pearl, python etc.

The Different Generations of Languages:

There Are 5 Types Of Generations of Languages. 
  • 1GL
  • 2GL,
  • 3GL,
  • 4GL & 
  • 5GL.

GL For Generations Of Languages .
1st Generation: 1st Generation Of Language হল ১৯৬০'স COMPUTER প্রোগ্রামিং ল্যাঙ্গুয়েজ :P । Machine Language. ভাই কতক্ষন ধইরা দেখতাছি প্রোগ্রামিং এর ভিতর Machine, Machine করতেছেন । এটা কি আসলে? Machine Language Is A Programming Language Which Works With Only Zero (0) & One (1) (The Binary Number System ) . এর মানে হল, ০ এবং ১ দিয়ে সব লিখতে হবে । আর মাথা না ঘামানোই ভাল । ইহা মহা জটিল ।

2nd Generation: Assembly Language. Assembly মূলত Machine Language এর পরের ভার্সন ।

3rd Generation: এখন যেই প্রোগ্রামিং ল্যাংগুয়েজগুলো আছে ওগুলোকে 3rd Generation Of Language বলা হয় । C, C++, C#, Ada, Pascal, FORTRAN, COBOL, BASIC, Java,  etc...

আরও জানতে চাইলে (Click On The Link):
http://en.wikipedia.org/wiki/Programming_language_generations 

আচ্ছা এবার আমরা থামি কেননা, এরপর গেলে মাথা গরম করে ট্যাবটা কেটে দিতে পারেন । তাহলে আপনার আর শেখা হবে না :) । বাকি যে দুটো আছে সেগুলো নিয়ে পরে আলচনা করবো । আরেকটু লিখব :P ।

পৃথিবীতে যত ধরনের ল্যাংগুয়েজ আছে তাদের কে আবার তিনটি লেভেল এ ভাগ করা যায় । 
  • High Level
  • Mid Level
  • Low Level
High Level ল্যাংগুয়েজ গুলো হল Ada, FORTRAN, Pascal, Basic, Cobol, python, JAVA, C++
Mid Level ল্যাঙ্গুয়েজগুলো হল C, Macro Assembler, JAVA 

Low Level ল্যাঙ্গুয়েজগুলো হল Machine Language & Assembly


High Level মানে যে খুব কঠিন, ব্যাপারটা এরকম নয় । Computer Programming এ হাই লেভেল ল্যাঙ্গুয়েজ বলতে User Friendly অর্থাৎ User যাতে বুঝতে পারে এবং খুব তাড়াতাড়ি একটা প্রোগ্রাম যাতে লিখা যায় । মূলত High Level ল্যাঙ্গুয়েজ বলতে উন্নত মানের ল্যাঙ্গুয়েজ বুঝানো হয় । Mid Level ল্যাঙ্গুয়েজ বুঝতেই পারছেন উন্নতও না অনুন্নত ও না মাঝামাঝি :P । Low Level মানে হচ্ছে অনুন্নত ল্যাঙ্গুয়েজ । Low Level ল্যাঙ্গুয়েজ দেখে, অবহেলা করবেন না ( Low Level Languages Are The Core Programming In Computer Science  ) অর্থাৎ লো লেভেল ল্যাঙ্গুয়েজ Computer Science এর কেন্দ্রস্থল। 
            
            আসুন আরেকটু ভালভাবে বোঝার চেষ্টা করি । খেয়াল করুন Machine Language এ যদি প্রোগ্রামিং করতে যান তাহলে আপনাকে 0 & 1 বা বাইনারি নাম্বার সিস্টেম নিয়ে প্রোগ্রাম লিখতে হবে (Machine Language কিন্তু Low Level Language) । আর আপনি যদি High & Mid Level ল্যাঙ্গুয়েজ ব্যবহার করেন তাহলে সেটা কিন্তু আপনার জন্য বুঝতে সহজ হবে তাই না । Low Level Language মূলত OS(Operating System) & Hardware Based প্রোগ্রামিং বা Firmware (সহজ ভাষায় Firmware হচ্ছে সফটওয়্যার যেটাকে ROM (Read-Only Memory) তে ইন্সটল করা হয় অথবা বলতে পারেন ছোট্ট একটা চিপ এর ভিতর Software Install করে দেয়া হয় ) For Micro Controller । Mid Level Language হচ্ছে সি আরও কিছু রয়েছে । যেহেতু আমরা সি এর ব্যাপারে জানব এখান থেকে তাই আমরা সি দিয়ে আলচনা করব Mid Level Language এর কাজ কি । আর হাই লেভেল ল্যাঙ্গুয়েজগুলোর কিছু কিছু General Purpose, কিছু কিছু Robot বা AI (Artificial Intelligence) , কিছু কিছু  Application প্রোগ্রামিং এর জন্য এবং কিছু কিছু গেম তৈরির জন্য ব্যাবহার করা হয় ...... ইত্যাদি । Mid Level ল্যাঙ্গুয়েজ দিয়েও কিন্তু এগুলা করা যায় ।
ভাই থামেন মাথা গরম কইরা দিছেন । এটাই বলবেন স্বাভাবিক, আসলে High, Mid & Low Level ল্যাঙ্গুয়েজ কিছুই না এগুলো শুধু Terms ।  আমি যদি High, Mid and Low Level গুলো না লিখতাম তাহলে আপনার বুঝতে আরেকটু কষ্ট হত এবং আমার লিখতে । 
এখন আসি ভাই এত্ত এত্ত প্রোগ্রামিং ল্যাংগুয়েজ আছে, কেন সি প্রোগ্রামিং ল্যাঙ্গুয়েজ ই শিখব, এর চেয়েও তো সহজ ল্যাঙ্গুয়েজ আছে তাই না ?
There Is A Gnome (প্রবাদ) "C Is The Mother Of All Languages" । এই কথাটা হয়ত অনেক কিছু ব্যাখ্যা করে কিন্তু Efficient (সুবিধাজনক) না । C Is A General Purpose Language । সি দিয়ে অনেক কিছুই করা যায় । চলুন দেখি কি কি করা যায় ।


  • Operating System
  • Assemblers
  • Compilers
  • Editors
  • Interpreters
  • Data-Base Program
  • Virus & Anti-Virus &
  • 3D Gaming, 2D Gaming ইত্যাদি ।

অনেক Higher Level  ল্যাঙ্গুয়েজ আছে যা দিয়ে খুব সহজে প্রোগ্রাম লিখে ফেলা যায় বা Softwares, Applications Or Games ডেভেলপ করা যায় । But As I Said "C Is The Mother Of All Languages" . যখন High Level ল্যাঙ্গুয়েজ শিখবে তখন সব কিছু অনেকটা সহজ হবে কিন্তু প্রোগ্রামটা সঠিক কিভাবে কাজ করল বা ভিতরের কাজগুলো আর জানা হবে না । অর্থাৎ Compiling process, Hardware Process and etc etc একজন সি প্রোগ্রামার এর কাছে বাকি সব ল্যাঙ্গুয়েজ শেখা সহজ । সি এর প্রাধান্য সব জায়গায় রয়েছে । কখন প্রথমে বা কখন দুই এক ঘর পরে কিন্তু প্রাধান্য রয়েছে :D । সি শেখার অনলাইনে অনেক অনেক Resource (Organizations, Forums & Websites) বা তথ্য(Data) আছে । (C এর হাজার হাজার Source Code রয়েছে, যেহেতু সি প্রায় ৩০ বছর ধরে রয়েছে) ভাই এতটুকু কি গ্রহনযোগ্য না সি প্রোগ্রামিং শিখার জন্য ? কিন্তু কথা আছে সি তে কাজ যেমন সহজ তেমন ই কঠিন । আমি যতটুকু পারব সি কে সহজ করে তুলব আপনাদের সামনে । ভুলত্রুটি ক্ষমার চোখে দেখবেন । আর সহ্য না হলে Comment করে দিবেন & Feel free to talk with us ।
 
To Read The Next Part Of C Programming Language Click On The Link Below:   

সি প্রোগ্রামিংঃ পর্ব ০৩ >>সি ল্যাঙ্গুয়েজ উপাখ্যান

Friday, March 27, 2015

সি প্রোগ্রামিং : পর্ব ০১ >> শুরুর আগে

শুরুর আগেঃ

                                     প্রথমে আসি COMPUTER কিভাবে কাজ করে ?


এই ব্যাপারে অনেকেরই ধারনা আছে । কেননা আমাদের বাংলা বই এ COMPUTER এর উপর যখন রচনা লিখতে হত তখন সবাই এই বিষয় এ কিছু না কিছু পড়েছি :P । এবং অনেক ভাবেই আমরা এই ব্যাপার গুলো জানি ।


COMPUTER মূলত ৫ টি বিষয়ের উপর কাজ করে ।

  1. PROCESSOR
  2. RAM (Random Access Memory)
  3. I/O (Input/Output) Device
  4. Data Storage &
  5. Software Or Program.

এইগুলান কি খায় না মাথায় দেয় ভাই ???

আসলে এইটা খায় ... দেখা যাক কিভাবে ...
আমরা যদি মানুষের জীবন ধারার সাথে COMPUTER এর ব্যাপার গুলো তুলনা করি তাহলে সম্পূর্ণ ব্যাপারটা বুঝতে সুবিধা হবে ।

          ধরুন আপনার রাত ৩ টার সময় ক্ষুধা লাগসে । এখন আপনি দুইটা কাজ করতে পারেন । এক ক্ষুধাটাকে মেরে ঘুমিয়ে যেতে পারেন অথবা দুই আপনি রান্না ঘরে গিয়ে রান্না করে খেতে পারেন ।এইটা

আপনাকে DECIDE করতে হবে । DECIDE করার জন্য নিশ্চয়ই আপনি আপনার Brain ব্যবহার করবেন । তাই মানুষের মস্তিস্ককে  আমারা  Computer এর প্রসেসর এর সাথে তুলনা করতে পারি । ধরলাম তুমি রান্না ঘরে রান্না করতে গেলা । ঘুমানো বাদ দিয়ে । (আমি হলে ঘুমিয়ে পরতাম :P ) । এখন রান্না করতে গেলে অবশ্যি কিছু জিনিস লাগবে রান্না করার জন্য । ধরো তুমি ডিম ভাজবে । তোমার পেয়াজ লাগবে মরিচ লাগবে এবং অবশ্যই ডিম লাগবে :P । এগুলা নিশ্চয়ই তুমি কাচা খেয়ে ফেলবে না । SO রান্না তো করা লাগবেই । এখন যা যা লাগবে এগুলাকে COMPUTER এর ভাষায় ইনপুট বলতে পার । অর্থাৎ রান্নার ITEM গুলোকে আমরা ইনপুট বলব। ইনপুট নেয়ার পর প্রসেসইং হবে তারপর আউটপুট দিবে ।
অর্থাৎ চুলায় দেয়ার পর রান্না হওয়ার সময় দিতে হবে । তারপর রান্না হবে । এখন রান্না হওয়ার সময়টুকু হল PROCESSING (প্রসেসিং) । রান্না হয়ে গেলে অর্থাৎ খাওয়ার যোগ্য হলে, সেটাকে তুমি OUTPUT বলতে পারবে । এখন খাবার কেমন হবে সেটা যেমন নির্ভর করে তোমার রান্নার দক্ষতার উপর তেমনি Output নির্ভর করে তোমার প্রোগ্রামিং দক্ষতার উপর।

                                                    

                                                      Input/Output, Processing & Storage

উপরের ব্যাখ্যা টা চিত্র দেখলে হয়ত বিষয়টা আরেকটু পরিস্কার হবে।



RAM  & Data Storage.

আগে Data Storage এ আসি । Data Storage কে মুলত Secondary Hard Drive বলা হয় । এটার কাজ হচ্ছে ফাইল সেভ করে রাখা । যাতে পরে ফাইল গুল ACCESS করা যায় অর্থাৎ চালানো যায়।

RAM (Random Access Memory) এই বিষয় টা একটু ভিন্ন ধরনের,

Random Access Memory কে মূলত Main Memory বলা হয়ে থাকে।

Computer এর মেমরি বলতে কিছু জায়গা কে বুঝান হয় । Computer যখন কোনো ধরনের কাজ করে তখন Computer মেমরি থেকে জায়গা নিয়ে কাজ করে। প্রয়োজনীয় কাজ করার সময় কম্পিউটার এই জায়গা গুলো ব্যাবহার করে থাকে। ধরো তুমি একটা প্রোগ্রাম বা SOFTWARE চালালে তখন প্রোগ্রাম টি মেমরিতে লোড হয় তারপর প্রোগ্রামটির যে কাজ করার কথা তখন সে নির্দেশ অনুযায়ী কাজ করতে থাকে।


SOFTWARE /PROGRAMS এই ব্যাপারেই তো শিখতে আসছি এখানে তাই না ? এই বিষয়টি নিয়ে আমারা  ধীরেধীরে শিখব । Programs or Software কিভাবে বানায় বা কিভাবে কাজ করে ।


তোমারা হয়ত ভাবতে পার যে প্রোগ্রামিং এর সাথে এগুলার সম্পর্ক কোথায় ?


উত্তর হচ্ছে এগুলা না থাকলে প্রোগ্রামিং করা কখনো সম্ভব হত না । The Basic Knowledge of Computer Science & Programming.


যাই হক আপনি তুমি ইংলিশ বাংলা মিশিয়ে লিখসি। এবং ভুল ত্রুটির জন্য আগেই ক্ষমা চেয়ে নিচ্ছি ।  And Thank You ... 


সি প্রোগ্রামিংঃ পর্ব ০২ >> শুরুর আগে (০২)