C programming language || part 01

সি প্রোগ্রামিং ভাষা || part 01

#সি প্রোগ্রামিং এর উদ্দেশ্য:

গ্রামিংয়ের মাধ্যমে বিভিন্ন সমস্যার সমাধা

নকরা যায় । সমস্যা সমাধানের জন্য প্রোগ্রামার কম্পিউটারের ভাষায় প্রোগ্রাম তৈরি করেন ।

সারা বিশ্বে এ পর্যন্ত যত কম্পিউটার প্রোগ্রামিং ভাষা আবিষ্কার হয়েছে তাদের মধ্যে সি ভাষাসাবাধিক জনপ্রিয়। সি ভাষার মাধ্যমে উচ্চ ওনিম্ন স্তরের ভাষার সুবিধা পাওয়া যায়  । সি প্রোগ্রামিং ভাষার কাজ করার জন্য এই ভাষার ইতিহাস ও প্রাথমিক ধারণা, সি  ভাষা প্রোগ্রাম কম্পাইলিং , ডিবাগিং এবং প্রোগ্রামের গঠন , ডেটা টাইপ , ধ্রুবক, লোকাল ও গ্লোবাল ভেরিয়েবল , এঙপ্রেশন , কী –ওয়ার্ড ,ইনপুটআউটপুট , স্টেটমেন্ট  ,Conditional স্টেটমেন্টLoop, Array , Function, সম্পর্কে ঞ্জান লাভ ক করাপ্রয়োজন। 

 
এই বিষয়গুলো  নিয়েই এ প্রোস টি সাজানো হয়েছে । প্রত্যাশ্য করা যাচ্ছে যে , এই অধ্যায়পাঠ শেষে শিক্ষার্থীগণ নিচে শিখনফলসমূহ অর্জন করতে পারবে । 

 # সি প্রোগ্রামিং ভাষা : 

সি এর জনক হলেন Dennis Ritchie's তিনি 

সবপ্রথম Unix আপারেটিং সিস্টেমেDEC-PD

মেশিনে 'সি' প্রয়োগ করেন । 'সি' এসেছে BCPL

নামের  একটি কম্পিউটার ভাষা থেকে , যা থেকে  ' বি' নামে অপর একটি ভাষার উদ্ভব ঘটে এবং 'বি' এর পরের উন্নয়ন হলো 'সি ' ভাষায় উদ্ভবের মধ্যে দিয়ে। প্রথমে 'সি ' সরবরাহ হতো Until অপারেটিং

সিটেমে  DEC– PDP11মেশিন 'সি' প্রয়োগ  করেন। সি এসেছে BCPL নামের একটি কম্পিউটার ভাষা থেকে যা বি নামে অপর  একটি ভাষার উদ্ভাব ঘটে এবং বি এর পরের উন্নয়ন হলো সি ভাষায় উদ্ভাবের মধ্যে দিয়ে।  

>প্রথমে 'সি' প্রোগ্রামিং সরবরাহ হতো Unix অপারেটিং  সিস্টেম। পরে 'সি' এর প্রয়োগ ঘটে আরো বহুভাবে। যার ফলে অনুভূত হয় একটি আদর্শ 'সি' সংস্করণে। 

ANSIC  হলো তার ফলশ্রুতি  \ANSI  C UNOE C  তে  সব ধরনের সুবিধাই দেওয়া হয়েছিল। 

ফলে ব্যবহারকারিগণ ANSI C হলো ব্যবহার করতে শুরু করে। পরে ব্যবহারকারীদের জন্য সমন্বিত সি পরিবেশ ( C User's Integrated Environment)  সৃষ্টি, দ্রুত  ও  দক্ষ.  কোম্পাইলকলরণ এবং ANSI আদেশের  ধারাবাহিক অক্ষুনন রাখার জন্য Borland  কোম্পানি Turbo C নামে একটি সফটওয়্যার তৈরি করেন। 


'সি' কে মধ্যবর্তী কম্পিউটার ভাষা হিসেবে আখ্যায়িত করা হয়। কারণ 'সি' দিয়ে ইচ্ছেমতো Hardware নিয়ন্ত্রণ করে প্রোগ্রাম তৈরি করা যায় এবং এইসব প্রোগ্রামগুলি বেশ নমনিয় (Flexible) 

হয় । সি এর ডেটা বা উপাতগুলি বিভিন্ন ধরনের হলেও ডেটা টাইপ গুলির রূপান্তর ও মিশণ খুবই সহজ। এছাড়া বিট (Binary digit) পর্যায়ে এবং 

কম্পিউটার এড্রেস (Address) ও ডেটা বাইট (৮টি বিটে এক বাইট) নিয়ে ইচ্ছা মত ব্যবহার ও সংস্করণ (তথা Read/write) করা যায়, যা একে Assembly Language এর সমস্ত সুবিধা ব্যবহার করার সুযোগ এনে দিয়েছে। এই সকল সুবিধার কারণে এখনও 'সি' প্রোগ্রামিং ভাষা প্রচলিত আছে।  


  # সি ভাষায় প্রোগ্রামিং তৈরির প্রাথমিক ধারণা:

 সি প্রোগ্রামিং তৈরি করার জন্য সাধারণ কয়েকটি অংশ প্রয়োজন। এরা হলো – 

* একটি প্রোগ্রাম উন্নয়ন পরিবেশ।

 * ভাষা 

* সি স্ট্যান্ডার্ড লাইব্রেরী। 

সি ভাষায় প্রোগ্রাম উন্নয়নের জন্য রয়েছেন সুন্দর পরিবেশ। এতে টাইপ ইত্যাদি নিয়ে স্বাধীনভাবে 

কাজ করা যায়। 


সি ভাষায় লাইব্রেরী ফাংশন, ব্রাঞিং স্টেটমেন্ট 

ও কন্ট্রোল স্টেটমেন্টর যথেষ্ট সুবিধা রয়েছে। 

অন্য মেশিনে চালানো যায়।  


  # সি প্রোগ্রামিং ভাষার সাধারণ বৈশিষ্ট্য : 

কম্পিউটার প্রোগ্রাম ডিজাইনে সি ভাষা একটি সুশৃঙখল পদ্ধতি এবং কাঠামো প্রদান করেছে 

সি প্রোগ্রামিং ভাষার নিম্নলিখিত সাধারণ বৈশিষ্ট্য রয়েছে যথা: 


* এটি  সহানান্তরযোগ্য। অর্থাৎ সি ভাষায় লিখিত প্রোগ্রাম এক কম্পিউটার থেকে অন্য কম্পিউটারে 

খুব সহজেই সহানান্তর করা যায়। কারণ এটি যে কোন হাডওয়্যরে সহজেই খাপ খাওয়াতে পারে। 


*সি ভাষা নিজেকে বর্ধিত করার ক্ষমতা রাখে। 

*সি ভাষা এক বা একাধিক ফাংশন নিয়ে গঠিত যার প্রতিটি এক বা একাধিক স্টেটমেন্ট বা প্রোগ্রামিং বাক্য ধারণ করে।  


*সি ভাষায় অনেক ফাংশন থাকতে পারে। কিন্তু একমাত্র ফাংশন যেটা অবশ্যই থাকতে হবে সেটা 

হলো main( ) যেখানে প্রোগ্রামের নির্বাহ শুরু হয়। 


*সি ভাষার আরেকটি গুরুত্বপূর্ণ উপাদান হচ্ছে লাইব্রেরী ফাংশন। একটি সাধারণ লাইব্রেরী ফাংশন হচ্ছে Printf ( ) । এ সকল ফাংশনের সংগ্রহকে সি স্ট্যান্ডার্ড লাইব্রেরী হিসেবেও উল্লেখ করা হয়। 


* অধিকাংশ সি ভাষায় একটি সাধারণ উদাহরণ হচ্ছে Header ফাইল। সবচেয়ে দরকারী Header

ফাইল হচ্ছে Stdio. h। 


*সি অধিকাংশ ভাষার একটি সাধারণ উপাদান হচ্ছে Header আমরা পড়ে এবং সি ভাষা স্পেস 

(Space) আগ্রাহ্য করে।  আথাৎ এটি স্টেটমেন্ট লাইনের অবস্থান ফাংশনের গঠন ইত্যাদি আমলে 

নেয় না।  


# সি++  প্রোগ্রামিং ভাষা কী?


সি ++হলো আরেকটি প্রোগ্রামিং ভাষা যা সি ভাষাকে ভিত্তি করে ১৯৮০ সালের গোড়ায় দিকে 

Bjarne Stroustrup  বেল ল্যাবরেটরীতে তৈরি 

করেন। সি ++ প্রোগ্রামিং ভাষাকে  সি প্রোগ্রামিং ভাষার  সুপারসেট বর্ধিতরূপ বলা হয় যাতে আবজেকট বৈশিষ্ট্য সন্নিবেশিত করা হয়েছে। সি প্রোগ্রামিং ভাষায় প্রোগ্রাম সি ++ প্রোগ্রামিং 

ভাষায় পরিবেশে চালানো যায়। 


*সি প্রোগ্রামিং ভাষা। 

*অবজজেক্ট অরিয়েন্টড বৈশিষ্ট্য ।

*সি++প্রোগামিং ভাষা ।


সি এবং সি++ এর মধ্যে নিম্নলিখিত বৈশিষ্ট্যসমূহ 

থেকে উপারোক্ত বিষয়টি সহজেই বুঝা যাবে →

*সি এর কোন শ্রেণী অবজেক্ট নেই ।এটি পদ্ধতিগত

এবং ফাংশনমূলকভাবে পরিচালিত হয় । অপরদিকে সি ++হচ্ছে অবজেক্ট ওরিয়েন্টেড ।


*সি ++এর তুলনায় সি এর কাঠামো কিছুটা ভিন্ন।

সি এর কাঠামো , ফাংশনসমূহেকে তাদের অংশ 

হিসেবে গ্ৰহণ করে না ।


*সি এর ইনপুট ও আউটপুট লাইব্রেরি ভিত্তিক এবং ফাংশনসমূহে অন্তভূক্তির মাধ্যমে এর সামগ্ৰিক প্রক্রিয়া পরিচালিত হয় । সি ++এর ইনপুট এবং আউটপুট cout কমান্ডের কমান্ডের মাধ্যমে গঠিত ।‌



*সি এর টপ – ডাউন অ্যাপ্র্যেচ (Top down approach ) রয়েছে। অন্যদিকে সি ++এর রয়েছে বটম –আপ অ্যাপ্রেচ (Bottom up approach ) .


*সি ফাংশন ওয়ভারলোডিং সমর্থন করে না। অপারেটিং ওভারলোডিং হচ্ছে একটি প্রক্রিয়া যেখানে ব্যবহারকিরী কতৃক প্রদেয় ডেটা ইনপুট এর ভিত্তি করে ফাংশন সমূহের দুই বা ততোধিক ভিন্ন আচরণ পরিক্ষীত হয় 


*সিতে ক্যারেক্টার কনস্যান্ট স্বয়ংক্রিয়ভাবে ইন্টিজারের দিকে প্রবেশ করা যায় সি++এর অনুমতি পায়না ।

*সি তে বেশ কয়েকটি গ্লোবাল ভেরিয়েবল ঘোষণা

হতে পারে । কিন্তু তা সি++এ অনুমতি পায় না। 


# সি স্ট্যান্ডার্ড লাইব্রেরী :

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

> আর দ্বিতীয়টি হলো সি স্ট্যান্ডার্ড লাইব্রেরী ফংশন কিভাবে ব্যবহার করতে হয় তা শেয়া ।

লাইব্রেরী ফংশনসমূহ গভীরভাবে বুঝা , তাদের

বাস্তাবায়ন করার পদ্ধতি জানা এবং তাদের পোর্টেবল বা স্থানান্তরযোগ্য কোড লেখার কৌশল রপ্ত করা প্রোগ্রামারদের জন্য খুবই গুরুত্বপূর্ণ।

সি প্রোগ্রামিং করার সময় নিম্নলিখিত ফাংশন ব্যবহার করা হয় →

# সি স্ট্যান্ডার্ড লাইব্রেরী 

# নিজের তৈরি করা ফাংশন ও

# আন্য কারোর মাধ্যমে ফাংশন তৈরি করিয়ে নিয়ে তা সহজে প্রাপ্য করা ।



নিজেই‌ ফাংশন তৈরির সুবিধা হলো এই যে প্রকৃতপক্ষে তারা কিভাবে কাজ করে তা জানা যায় । এতে নিজেই কোড পরীক্ষা করার সক্ষমতা অর্জন করা যায়। তবে অসুবিধা হলো এই যে নতুন ফাংশন ডিজাইন এবং উন্নয়নে বেশি সময় ব্যয় হয়


>যদি বিদ্যমান ফাংশন ব্যবহার করা হয় তাবে চক্র 

পুণঃউদ্ভাবন (re-inventing the wheel ) এড়ানো মেতে পারে।


> ANSI -স্ট্যান্ডার্ড ফাংশনসমূহ যত্নসহকারে লেখা

হয় এবং ব্যবহৃত ফাংশনসমুহ প্রায় সব ANSI ,C 

সিস্টেমে পাওয়া যায়। সাধারণ গাণিতিক কাজ সম্পাদন সি স্য্যান্ডার্ড লাইব্রেরী ।


>এতে প্রোগ্রামারদের কাজ অনেক সহজ হহজ , হয়েছে , কারণ এই ফাংশনসমুহ প্রোগ্রামারদের সক্ষমতা বৃদ্ধিতে সহায়তা করে যদিও স্ট্যান্ডার্ড লাইব্রেরী ফংশন প্রযুক্তিগতভাবে সি ভাষার অংশ নয় তথাপি তাদের ANSI ,C সিস্টেমে পাওয়া যায়। Printf (.   ) Scanf (.  ) ইত্যাদি ফাংশন হলো স্ট্যান্ডার্ড লাইব্রেরী ফংশন ।


# ফাংশনের হেডার ফাইল : 

প্রত্যেক স্ট্যান্ডার্ড লাইব্রেরী যে ফাইলসমূহ ঐ লাইব্রেরীর সকল ফাংশনের জন্য ফাংশনের জন্য ফাংশন প্রোটোটাইপ ধারণা করে সেই ফাইল সমূহ কে , হোডার ফাইল বলা হয়। 

> সি প্রোগ্রামে কম্পাইলারের সাথে  সরবরাহকৃত তথ্যসমূহ পাওয়া যায়। এ সকল  h.  এক্সটেনযুক্ত (extension ) | # include প্রিপ্রসের ডাইরেক্টিভ ফাংশনে তথ্যসমূহ পাওয়া যায়।

> এ সকল ফাইল . h এক্সটেনযুক্ত (extension) # include প্রিপ্রসেসর ডাইরেক্টিভ ব্যবহার করেএ সকল ফাইল প্রোগ্ৰামে অন্তর্ভুক্ত করা হয়। লাইব্রেরী ফংশন যথার্থভাবে পরিচালনা করতে সি কম্পাইলার ফাইল সমূহে এ সকল তথ্য  ব্যবহারকরে। সর্বাধিক ব্যবহৃত হেডার হচ্ছে Studio.h । যে ডাইরেক্টিভ  এই  ফাইলকে  অন্তর্ভুক্ত  করতে তা হলো → 

                   # include<studio.h >


# কিছু স্ট্যান্ডার্ড লাইব্রেরী ফংশন ওতা ব্যবহারের

জন্য প্রয়োজনীয় হেডার ফাইলের তালিকা ,

(ফাংশনের নাম ) →↓


Printf (  )   , pow (  )


Scanf (  ) , strcpy (  )


gets (  ) , strcat ( )


getch (  ), strcmp ( )


getche ( ) , and ( ) 


Sqrt (  ) ,


 

    # ( সিনটেক্স ও ব্যবহারেল উদাহরণ ) #

 ------------------------------------------------------------------


Print ("This is C Program ");

-------------------------------------------------------------------


int number; 

Printf ("number=");

Scanf ("%d",& number);

--------------------------------------------------------------------

Char str [70];

Printf ("Enter a string ( less than 70 chars ): "); 


gets (str );


Printf ("welcome to C Programming).


--------------------------------------------------------------------


Char ch ; 

Printf ("Enter a character :");

Ch = getche (   );


---------------------------------------------------------------------

float answer; 

answer=Sqrt (20.0);

Printf ("%f", answer);


-----------------------------------------------------------------


int a; 

a= pow (2,3);

Printf ("%d",a);


------------------------------------------------------------------


Char str [80];

Strcpy ( str, "Good");

Printf ("% s", str );


---------------------------------------------------------------------


Char str [80];

Strcpy ( str, "Good");

Strcat ( str ,"Morning"); 

Printf ( str );


------------------------------------------------------------------


Printf ("%d ",strcmp("welcome" ,welcome");


------------------------------------------------------------------

b=and (-10);

Printf"(Value of b= % d\n", b);


------------------------------------------------------------------

          # ( সেবার ফাইলের নাম )#

         ‌ 

                  <Studio.h>

                

                 <Studio.h>

               

                <Studio.h>

                 

               <Studio.h>

               

                <math .h >

                

                <math.h >


                <Studio.h>

                 

               <Studio.h>