text: সি একটি প্রোগ্রামিং ভাষা। সি নির্মাণ করেন ডেনিস রিচি, বেল ল্যাবে ৭০এর দশকে কাজ করার সময়। ভাষাটি তৈরির প্রথম উদ্দেশ্য ছিল ইউনিক্স- অপারেটিং সিস্টেম এর কোড লেখায় এর ব্যবহার, কিন্তু অচিরেই এটি একটি বহুল ব্যবহৃত ভাষায় পরিণত হয়। সি++ ও জাভা সহ পরিবর্তীকালের অনেক প্রোগ্রামিং ভাষার উপর সি'র গভীর প্রভাব পড়েছে। সি এর সবচেয়ে আকর্ষণীয় দিক হচ্ছে এর বহনযোগ্যতা। সি দিয়ে রচিত প্রোগ্রাম যেকোন অপাররেটিং সিস্টেমের কম্পিউটারে চালানো যায়। ৭০ এবং ৮০ দশকের দিকে সি এর জনপ্রিয়তা বাড়ার সাথে সাথে এর অনেকগুলো ভার্সন তৈরি হয়। ১৯৮৩ সালে আমেরিকান মাননিয়ন্ত্রক সংস্থা সি এর ১টি আদর্শ ভার্সন তৈরির জন্য কমিটি গঠন করে। দীর্ঘ ৬ বছর পরে ১৯৮৯ সালে সেই আদর্শ সি ভাষাটি তৈরি হয়, যা আমেরিকান মাননিয়ন্ত্রক সংস্থা সি (আনসি সি (ANSI C)) নামে পরিচিত। পরবর্তিতে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা ১৯৯০ সালে সি এর এই আদর্শ ভার্সনটি গ্রহণ করে, যা সি৯০ নামে পরিচিত। মুলত "সি৮৯" এবং "সি৯০" একই ভাষা। যুগের প্রয়োজনে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা ১৯৯৫ সালে এই সংস্করণকে বর্ধিত করে এবং পরবর্তিতে ১৯৯৯ সালে সম্পূর্ণ নতুন একটি সংস্করণ প্রকাশ করে যা সি৯৯ নামে পরিচিত। সর্বশেষ ২০১১ সালে সি প্রোগ্রামিং ল্যাঙ্গুয়েজের নবীনতম সংস্করণ সি১১ প্রকাশিত হয়।
  
  উৎপত্তি 
  ১৯৬০-এর দশকে বেশ কিছু কম্পিউটার প্রোগ্রামিং ভাষা তৈরি করা হয়েছিল। মার্কিন কম্পিউটারবিদ গ্রেস হপার Mathematic, Flowmatic এবং A2 নামে তিনটি প্রোগ্রামিং ভাষা উদ্ভাবন করেন। এরপর জেম্‌স ব্যাকাস তৈরি করেন ForTran। তারও পরে ALGOL, COBOL, Ada ইত্যাদি প্রোগ্রামিং ভাষা উদ্ভাবন করা হয়। মূলত এই ভাষাগুলিই আধুনিক প্রোগ্রামিং ভাষাগুলির পূর্বসূরী। কিন্তু ঐ ভাষাগুলিকে ভিন্ন ভিন্ন কাজে ব্যবহার করা হত। তাই কম্পিউটার বিজ্ঞানীরা এমন একটি প্রোগ্রামিং ভাষার কথা ভাবতে থাকেন যার মাধ্যমে সব ধরনের সফটওয়্যার তৈরি করা সম্ভব হবে। এরই ফলশ্রুতিতে বিজ্ঞানীরা তৈরি করেন ALGOL 60 (Algorithmic Language) এবং এরপর Combined Programming Language (CPL), কিন্তু CPL শেখা এবং ব্যবহার করা ছিল বেশ কঠিন। তাই এটা জনপ্রিয়তা পায়নি।
   
  ক্যামব্রিজ বিশ্ববিদ্যালয় এর মার্টিন রিচার্ড CPL কে ভিত্তি করে ১৯৬৭ সালে তৈরি করেন Basic Combined Programming Language (BCPL) কিন্তু এটি ছিল মূলত Less Powerful to Specific এবং টাইপবিহীন একটি প্রোগ্রামিং ভাষা।
  
  এ সময়েই যুক্তরাষ্ট্রের বেল গবেষণাগারে বিজ্ঞানী টমসন তৈরি করেন বি (B) নামক একটি প্রোগ্রামিং ভাষা; এটি ছিল পূর্বের BCPL-এর একটি উন্নত সংস্করণ। ডেনিস রিচি পরবর্তীতে B এবং BCPL অনুসরণ করেন এবং নিজে থেকে আরো কিছু কৌশল ব্যবহার করে তৈরি করেন "সি" (C)। মূলত B-এর সীমাবদ্ধতা গুলো দূর করার উদ্দেশ্যেই "সি" এর উৎপত্তি।
  
  সিনট্যাক্স
  
  কীওয়ার্ড 
  সি প্রোগ্রামিং ভাষায় কীওয়ার্ড বলতে বোঝায় সেইসব সংরক্ষিত শব্দসমূহকে যেগুলো একটি বিশেষ অর্থ প্রকাশ করে। সি৮৯ এ এরকম ৩২টি কীওয়ার্ড আছে।
  
  auto
  break
  case
  char
  const
  continue
  default
  do
  
  double
  else
  enum
  extern
  float
  for
  goto
  if
  
  int
  long
  register
  return
  short
  signed
  sizeof
  static
  
  struct
  switch
  typedef
  union
  unsigned
  void
  volatile
  while
  
  সি৯৯ এ এরকম আরো পাঁচটি কীওয়ার্ড যুক্ত হয়।
  
  _Bool
  _Complex
  
  _Imaginary
  inline
  
  restrict
  
  সি১১ তে যুক্ত হয় আরো সাতটি কীওয়ার্ড।
  
  _Alignas
  _Alignof
  
  _Atomic
  _Generic
  
  _Noreturn
  _Static_assert
  
  _Thread_local
  
  অপারেটর 
  সি এর অপারেটরগুলো হল -
   অ্যারিথমেটিক: +, -, *, /, %
   অ্যাসাইনমেন্ট: =
   অগমেন্টেড অ্যাসাইনমেন্ট: +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
   বিটওয়াইজ লজিক: ~, &, |, ^
   বিটওয়াইজ শিফট্‌: <<, >>
   বুলিয়ান লজিক: !, &&, ||
   কন্ডিশনাল ইভালুয়েশন: ? :
   ইকুয়ালিটি টেস্টিং: ==, !=
   কলিং ফাংশন: ( )
   ইনক্রিমেন্ট ও ডিক্রিমেন্ট অপারেটর: ++, --
   মেম্বার সিলেকশন: ., ->
   অবজেক্ট সাইজ: sizeof
   অর্ডার রিলেশন: <, <=, >, >=
   রেফারেন্স ও ডিরেফারেন্স: &, *, [ ]
   সিকুয়েন্সিং: ,
   সাবএক্সপ্রেসন গ্রুপিং: ( )
   টাইপ কনভার্সন: (typename)
  
  উদাহরণ কোড 
  সি প্রোগ্রামিং ভাষার উদাহরণ :
  Hello World হল একটি সাধারণ প্রোগ্রামিং কোড যা সকল প্রোগ্রামার প্রোগ্রামিং কোড লিখার সময় লিখে থাকে ।
  
  এই কোডের অংশটুকুতে "main()" নামের ফাংশন লোড হলে একটি লাইনে Hello World লেখা দেখাবে:
  main()
  {
      printf("'Hello World\n");
  }
  সি প্রোগ্রামিং কোডের আদর্শ উদাহরণ 
  #include <stdio.h>
  int main(void)
  {
      printf("Hello World\n");
      return 0;
  }
   এখানে #include <stdio.h> লিখার মাধ্যমে কম্পেইলার কে stdio.h নামের হেডার ফাইল পড়তে বলা হয়েছে । 
   int main(void) মানে মূল ফাংশন ইন্টেজার (গাণিতিক পূর্ণ সংখ্যা) প্রদান করবে । আর (void) লিখার কারণে মূল ফাংশনে কোন কিছু ইনপুট করতে হবে না ।
   printf("Hello World\n") এখানে printf হল একটি ফাংশন যার বিস্তারিত stdio.h হেডার ফাইলের মধ্যে লিখা আছে । সাধারণত printf এর মাধ্যমে স্ট্রিং উপাত্ত কম্পিউটারের পর্দায় দৃশ্যমান করার জন্য ব্যবহার হয় । এর মানে Hello World লিখাটি কম্পিউটারের পর্দায় দৃশ্যমান হবে।
  
  উপাত্তের ধরন 
  সি তে উপাত্তের ধরন মুলত তিন প্রকারঃ
   ব্যবহারকারী সংজ্ঞায়িত উপাত্তের ধরন
   অন্তর্নির্মিত বা বিল্ট ইন উপাত্তের ধরন
   উদ্ভূত উপাত্তের ধরন
  
  অন্তর্নির্মিত উপাত্তের ধরন
  
  ANSI কর্তৃক নির্ধারিত উপাত্তের ধরন সমুহ কে অন্তর্নির্মিত বা বিল্ট ইন উপাত্তের ধরন বা অপরিহার্য উপাত্তের ধরন বলে।
  
  অন্তর্নির্মিত উপাত্তের ধরন সাধারনত ৪ প্রকারঃ
   ক্যারেক্টার ধরনের উপাত্ত - সাধারনত ক্যারেক্টার বা স্ট্রিং জাতীয় কোন উপাত্ত ঘোষণার জন্য ক্যারেক্টার ধরনের উপাত্ত ব্যবহার করা হয় । ক্যারেক্টার ধরনের উপাত্ত মেমোরিতে ১ বাইট জায়গা দখল করে । কোন উপাত্তকে ক্যারেক্টার হিসাবে ঘোষণা করার জন্য 'char'   কীওয়ার্ড  ব্যবহৃত হয় যেমনঃ  char abc;  char xya;। এর বিন্যাস নির্দিষ্টকারী হিসেবে '%c'  ব্যবহার করা হয় । 
   ইন্টিজার ধরনের উপাত্ত - পূর্ণসংখ্যা জাতীয় কোন উপাত্ত ঘোষণার জন্য এই উপাত্তের ধরন ব্যবহার করা হয় । এই উপাত্তের ধরন মেমোরিতে ২ বাইট জায়গা দখল করে । এর কীওয়ার্ড হচ্ছেঃ 'int' । যেমনঃ  int abc;  int xyz;  । বিন্যাস নির্দিষ্টকারী হিসেবে '%d' ব্যবহার করা হয়।
   ফ্লোটিং পয়েন্ট ধরনের উপাত্ত -
   দ্বৈত ধরনের উপাত্ত -
  
  পয়েন্টার
  
  চলক
  
  অ্যারে 
  একই ধরনের বা সমপ্রকৃতির ডেটা টাইপের গুচ্ছকে অ্যারে বলা হয়।  
  অ্যারের একটি নির্দিষ্ট নাম থাকে। '[ ]' তৃতীয় বন্ধনীর সাহায্যে অ্যারের নামের সাথে অ্যারে সাইজ লেখা হয়, যা অ্যারে ভেরিয়েবলের(Variable) সর্বোচ্চ ডেটার সংখ্যা নির্দেশ করে। এই সংখ্যাকে অ্যারের ইনডেক্স(Index) বলা হয়। যেমন, একটি অ্যারে—  int num[4];  এখানে  [4]  দ্বারা অ্যারের ইনডেক্স প্রকাশ করে।  int num[4];  অ্যারেটিতে মোট পাঁচটি চলক(Variable) আছে। যেমন, ১ম—  num[0] , ২য়—  num[1] , ৩য়—  num[2] , ৪র্থ—  num[3] , ৫ম—  num[4]
  
  অ্যারে ব্যবহারের সুবিধা
  
   
   একই ধরনের ডেটাসমূহকে একটি চলক দিয়ে প্রকাশ করা যায়।
   প্রোগ্রামকে সহজ, সুন্দর ও ছোট করে। 
   প্রোগ্রাম দ্রুত নির্বাহ হয়। 
   অ্যারের উপাদানগুলো মেমোরিতে পাশাপাশি অবস্থান করে। 
   প্রোগ্রামের জটিলতা কমায়।
  অ্যারে একই ডেটা টাইপ উপাদানগুলিতে ব্যবহৃত হয়।
  
  অ্যারে ব্যবহারের অসুবিধা
  
   প্রোগ্রাম নির্বাহের সময়ে অ্যারের সাইজ কখনো পরিবর্তন করা যায় না। 
   প্রকৃত ডেটা অপেক্ষা অ্যারের সাইজ অনেক বেশি ঘোষণা করা হলে মেমোরির অপচয় হয়। 
   প্রকৃত ডেটা অপেক্ষা অ্যারের সাইজ কম ঘোষণা করা হলে অ্যারেতে ডেটার পর্যাপ্ত স্থান সংকুলান হয়না। 
   বিভিন্ন ধরনের ডেটা অ্যারেতে রাখা যায় না।
  
  বিষয়শ্রেণী:প্রোগ্রামিং ভাষা
  বিষয়শ্রেণী:সি প্রোগ্রামিং
title: সি (প্রোগ্রামিং ভাষা)