এই পাঠ শেষে যা যা শিখতে পারবে-
১। ‘সি’ প্রোগ্রামিং ভাষার প্রাথমিক ধারণা ব্যাখ্যা করতে পারবে।
২। ‘সি’ প্রোগ্রামিং ভাষার বৈশিষ্ট্য বর্ণনা করতে পারবে।
৩। ‘সি’ প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামের সাধারণ গঠন ব্যাখ্যা করতে পারবে।
৪। ‘সি’ প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামের বিভিন্ন অংশ বিশ্লেষণ করতে পারবে।
‘সি’ প্রোগ্রামিং ভাষার প্রাথমিক ধারণা: ‘সি’ প্রোগ্রামিং ভাষা একটি স্ট্রাকচার্ড বা প্রোসিডিউর প্রোগ্রামিং ভাষা যা “ডেনিশ রিচি” ডেভলোপ করেন। এই ভাষাটি বেল ল্যাবরেটরিতে UNIX অপারেটিং সিস্টেম তৈরি করার সময় তৈরি করেন। মিড লেভেল ভাষা হিসেবে ‘সি’ অত্যন্ত জনপ্রিয়। ‘সি ভাষাটি ১৯৭২ সালে DEC PDP-11 নামক কম্পিউটারে সর্বপ্রথম বাস্তবায়ন করা হয়। ‘সি’ নামটা এসেছে মার্টিন রিচার্ডস (Martins Richards) এর উদ্ভাবিত বিসিপিএল (BCPL-Basic Combined Programming Language) ভাষা থেকে। BCPL সংক্ষেপে B নামে পরিচিত ছিল। পরে B এর উন্নয়নের ফলে C এর বিকাশ ঘটে।
‘সি’ ভাষাকে সকল আধুনিক প্রোগ্রামিং ভাষার মাতৃ-ভাষা (mother language) বলা হয়। কারণ অধিকাংশ প্রোগ্রামিং ভাষা যেমন- C++, Java, C#, ইত্যাদি ‘সি’ ভাষার সিনট্যাক্স অনুসরণ করে। ‘সি’ ভাষা অ্যারে, স্ট্রিং, ফাংশন, ফাইল ইত্যাদির ধারণা দেয় যা C++, Java, C#, ইত্যাদি ভাষায় ব্যবহৃত হয়।
‘সি’ প্রোগ্রামিং ভাষা একটি স্ট্রাকচার্ড এবং প্রোসিডিউর অরিয়েন্টেড প্রোগ্রামিং ভাষা
‘সি’ কে স্ট্রাকচার্ড প্রোগ্রামিং ভাষা বলা হয়, কারণ ‘সি’ তে একটি প্রোগ্রামকে কতগুলো sub-program/subroutines এ বিভক্ত করে প্রতিটি অংশের জন্য আলাদাভাবে ভেরিয়েবল, স্ট্রাকচার, ফাংশন ইত্যাদি বর্ণনা করা যায় এবং প্রয়োজনে if, while, for, goto ইত্যাদি কন্ট্রোল স্টেটমেন্টের মাধ্যমে বিভিন্ন অংশের মধ্যে সমন্বয় সাধন করা যায়, কিংবা কোন ফাংশন বা স্ট্রাকচার পুনঃব্যবহার করা যায়। তাই ‘সি’ প্রোগ্রামিং ভাষাকে একটি স্ট্রাকচার্ড প্রোগ্রামিং ভাষা বলা হয়। আনস্ট্রাকচার্ড ভাষায় (যেমন- বেসিক) এভাবে মূল সমস্যাকে একাধিক অংশে বিভক্ত করে প্রতিটি আলাদা অংশের জন্য আলাদাভাবে ফাংশন বর্ণনা করা যায় না।
‘সি’ কে প্রোসিডিউর অরিয়েন্টেড প্রোগ্রামিং ভাষাও বলা হয়, কারণ একটি প্রোগ্রামকে কতগুলো ছোট ছোট অংশে বিভক্ত করে প্রতিটি অংশের জন্য আলাদাভাবে ভেরিয়েবল, স্ট্রাকচার, ফাংশন ইত্যাদি বর্ণনা করা যায় এবং এই ছোট ছোট অংশগুলো পর্যায়ক্রমে নির্বাহের মাধ্যমে একটি সমস্যার সমাধান করে।
‘সি’ একটি মধ্যম-স্তরের প্রোগ্রামিং ভাষা
‘সি’ প্রোগ্রামিং ভাষায় নিম্নস্তরের ভাষার সুবিধা; যেমন: সিস্টেম সফটওয়্যার(Driver Software) এর মাধ্যমে হার্ডওয়্যার নিয়ন্ত্রণ এবং উচ্চস্তরের ভাষার সুবিধা যেমন- অ্যাপ্লিকেশন সফটওয়্যার(Adobe Photoshop) তৈরি করা যায়। অর্থাৎ উচ্চস্তরের ভাষার সুবিধা পাওয়া যায় আবার নিম্নস্তরের ভাষার সুবিধাও পাওয়া যায়। তাই সি প্রোগ্রামিং ভাষাকে মধ্যম-স্তরের প্রোগ্রামিং ভাষা বলা হয়।
‘সি’ প্রোগ্রামিং ভাষা একটি general purpose প্রোগ্রামিং ভাষা
‘সি’ প্রোগ্রামিং ভাষাটি সব ধরণের কাজের জন্য ব্যবহৃত হয়। একজন প্রোগ্রামারের যেসব সুবিধা দরকার, যেমন- বিভিন্ন ডেটা ব্যবহারের ব্যাপক স্বাধীনতা, স্বল্প সংখ্যক কী-ওয়ার্ড, দ্রুত ও দক্ষতার সাথে প্রোগ্রাম চালানো এবং একই সাথে উচ্চ ও নিম্নস্তরের ভাষা সমন্বয় করা ইত্যাদি সব রকম সুবিধাই ‘সি’ প্রোগ্রামিং ভাষাতে আছে। তাই যেকোনো ধরণের প্রোগ্রাম লিখতে ‘সি’ প্রোগ্রামিং ভাষা ব্যবহার করা যায়। এই জন্য ‘সি’ ভাষাকে একটি General Purpose প্রোগ্রামিং ভাষা বলা হয়।
‘সি’ প্রোগ্রামিং ভাষা একটি প্ল্যাটফর্ম নির্ভর প্রোগ্রামিং ভাষা
যে প্রোগ্রামিং ভাষায় একটি অপারেটিং সিস্টেমে ডেভেলোপ এবং কম্পাইল করা প্রোগ্রাম অন্য অপারেটিং সিস্টেমে রান এবং নির্বাহ(execute) হয় না, সে ভাষাকে প্ল্যাটফর্ম নির্ভর বলা হয়।
সি প্ল্যাটফর্ম নির্ভর প্রোগ্রামিং ভাষা। কারণ, সি প্রোগ্রামিং ভাষার .obj file প্ল্যাটফর্ম নির্ভর।
‘সি’ প্রোগ্রামিং ভাষা বহনযোগ্য (Portable)
সি ভাষায় লেখা প্রোগ্রাম বা নির্দেশ এক সিস্টেম থেকে অন্য সিস্টেমে বহনযোগ্য।
সি ভাষায়, .c ফাইলটিতে source code থাকে,যা আমরা সম্পাদনা(Edit) করতে পারি। .exe ফাইলটিতে অ্যাপ্লিকেশন থাকে, যা কেবলমাত্র কার্যকর(Run) করতে পারি।
আমরা যখন উইন্ডো অপারেটিং সিস্টেমে কোনও সি প্রোগ্রাম লিখি এবং কম্পাইল করি তখন সেই প্রোগ্রামটি বা .exe ফাইলটি সহজেই অন্য উইন্ডো ভিত্তিক সিস্টেমে চলে। তবে এই .exe ফাইলটি অন্য অপারেটিং সিস্টেমে কার্যকর(Run) হয় না।
‘সি’ প্রোগ্রামিং ভাষার বৈশিষ্ট্যঃ
১। সকল ‘সি’ প্রোগ্রামের কাজ main() ফাংশন থেকে শুরু হয় এবং এটি প্রতিটি প্রোগ্রামের জন্য অত্যবশ্যকীয়।
২। ‘সি’ প্রোগ্রামিং ভাষা একটি case sensitive ভাষা; অর্থাৎ uppercase letter এবং lowercase letter ভিন্ন অর্থ বহন করে।
৩। ‘সি’ প্রোগ্রামের প্রতিটি স্টেটমেন্ট এর শেষে সেমিকোলন( ; ) দিতে হয়।
৪। ‘সি’ প্রোগ্রামিং ভাষাকে মধ্যস্তরের প্রোগ্রামিং ভাষা বলা হয়।
৫। ‘সি’ প্রোগ্রামিং ভাষাকে General purpose language ও বলা হয়।
৬। ‘সি’ প্রোগ্রামিং ভাষাকে একটি স্ট্রাকচার্ড বা প্রোসিডিউর প্রোগ্রামিং ভাষা বলা হয়।
৭। ‘সি’ প্রোগ্রামিং ভাষায় পর্যাপ্ত সংখ্যাক লাইব্রেরি ফাংশন এবং পর্যাপ্ত সংখ্যাক অপারেটর রয়েছে যা যেকোনো জটিল প্রোগ্রাম লিখতে ব্যবহৃত হয়।
৮। ‘সি’ প্রোগ্রামিং ভাষায় লেখা প্রোগ্রাম যন্ত্র নির্ভরশীল নয়।
৯। ‘সি’ প্রোগ্রামিং ভাষার গুরুত্তপূর্ণ বৈশিষ্ট্য হল; এটি নিজেই নিজের বৈশিষ্ট্য বর্ধিত করতে পারে।
‘সি’ প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামের সাধারণ গঠনঃ
Documentation Section: এটি প্রোগ্রামের ঐচ্ছিক অংশ। এই অংশে প্রোগ্রামের নাম, বিষয়বস্তু, প্রোগ্রামারের নাম, ব্যবহারের নিয়ম ও প্রোগ্রামের উদ্দেশ্য কমেন্টস এর মাধ্যমে লেখা হয়। ‘সি’ প্রোগ্রামিং ভাষায় কমেন্ট লেখার জন্য দুইটি পদ্ধতি আছে।
একাদিক লাইনের ক্ষেত্রে – /*……………..*/ এবং
সিঙ্গেল লাইনের ক্ষেত্রে- //……………….
Link Section: এটি প্রোগ্রামের অত্যবশ্যকীয় অংশ। প্রোগ্রামে ব্যবহৃত লাইব্রেরী ফাংশনগুলোর হেডার ফাইল এই অংশে সংযুক্ত করা হয়। হেডার ফাইল যুক্ত করার নিয়ম হল- #include<header_file_name.h>।
Definition Section: এই অংশে কনস্ট্যান্ট ঘোষণা করা হয়। কনস্ট্যান্ট ঘোষণা করার নিয়ম হল-
#define constant_name constant_value
Global Declaration Section: এই অংশে গ্লোবাল চলক ঘোষণা করা হয়। এছাড়া ইউজার ডিফাইন্ড ফাংশনও ঘোষণা করা হয়।
main() ফাংশন Section: main() ফাংশন হলো প্রতিটি ‘সি’ প্রোগ্রামের প্রধান ফাংশন। এটি একটি ইউজার ডিফাইন্ড ফাংশন, কারণ এই ফাংশনের ডেফিনেশন প্রোগ্রামার নিজে লিখে। ‘সি’ প্রোগ্রামের মূল অংশ এই ফাংশনের আওতায় {} বন্ধনীর মধ্যে লিখতে হয়। এই ফাংশন ছাড়া কোনো ‘সি’ প্রোগ্রাম লেখা সম্ভব নয়। main() ফাংশনের দুটি অংশ থাকে। একটি Declaration Part এবং অন্যটি Execution Part । Declaration Part-এ প্রয়োজনীয় চলক, অ্যারে, পয়েন্টার, ফাইল ইত্যাদি ঘোষণা করা হয় যা নির্বাহ অংশে ব্যবহার করা হয় এবং Execution Part এ প্রোগ্রাম নির্বাহ হওয়ার জন্য কমপক্ষে একটি স্টেটমেন্ট থাকতে হয়। উভয় অংশের প্রত্যেক স্টেটমেন্টের শেষে সেমিকোলন(;) থাকতে হয়।
Subprogram Section: এই অংশে এক বা একাধিক ইউজার-ডিফাইন্ড ফাংশন থাকে যা main() ফাংশন থেকে Call করা হয়।
‘সি’ প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামের বিভিন্ন অংশের বিশ্লেষণঃ
দুটি সংখ্যা ইনপুট নিয়ে যোগফল নির্ণয় করে যোগফল প্রিন্ট করার জন্য একটি ‘সি’ প্রোগ্রাম
#include<stdio.h> #include<conio.h> main() { int x, y, sum; scanf("%d %d",&x,&y); sum = x + y; printf("Sum = %d", sum); getch(); }
প্রোগ্রাম বিশ্লেষণ:
১। ‘সি’ প্রোগ্রামে যেসব লাইব্রেরি ফাংশন ব্যবহার করা হয় তাদের ডেফিনেশন যে হেডার ফাইলে থাকে প্রোগ্রামের শুরুতে সেই হেডার ফাইলের নাম লিংক সেকশনে সংযুক্ত করতে হয়। প্রোগ্রামের ভিতরে printf() এবং scanf() নামে দুটি লাইব্রেরি ফাংশন ব্যবহার করা হয়েছে। ফাংশন দুটির ডেফিনেশন stdio.h নামক হেডার ফাইলে রয়েছে। তাই প্রোগ্রামের শুরুতে #include<stdio.h> ব্যবহার করা হয়েছে।
২। প্রোগ্রামের ভিতরে getch( ) লাইব্রেরি ফাংশন ব্যবহার করা হয়েছে। এই ফাংশনটির ডেফিনেশন conio.h নামক হেডার ফাইলে রয়েছে। তাই #include<conio.h> হেডার ফাইলটি সংযুক্ত করা হয়েছে।
৩। main ( ) ফাংশন প্রোগ্রামের মূল ফাংশন। main( ) ফাংশন থেকেই প্রোগ্রামের কার্যকারিতা শুরু হয়। প্রতিটি প্রোগ্রামে একটি main ( ) ফাংশন অবশ্যই থাকতে হবে।
৪। ‘{‘ দ্বিতীয় ব্রাকেটটি main ( ) ফাংশনটির কার্যক্রম শুরু বুঝানোর জন্য ব্যবহার করা হয়েছে।
৫। integer (পূর্ণসংখ্যা) টাইপের x, y ও sum নামে তিনটি ভেরিয়েবল ঘোষণা করা হয়েছে।
৬। scanf() ফাংশনটির মাধ্যমে ব্যবহারকারীর কাছ থেকে x ও y চলকের মান ইনপুট নেওয়া হয়েছে।
৭। x ও y চলকের মান যোগ করে sum চলকে রাখা হয়েছে।
৮। printf( ) ফাংশনটি ব্যবহার করে sum চলকের মান প্রদর্শন করা হয়েছে।
৯। getch( ) লাইব্রেরি ফাংশনটির কাজ হলো আউটপুট ব্যবহারকারী না সরানো পর্যন্ত ধরে রাখা।
১০। ‘ }’ ব্রাকেটটি main( ) ফাংশনের কার্যক্রম শেষ বুঝানোর জন্য ব্যবহার করা হয়েছে।
পাঠ মূল্যায়ন-
জ্ঞানমূলক প্রশ্নসমূহঃ
ক। হেডার ফাইল কী?
অনুধাবনমূলক প্রশ্নসমূহঃ
খ। ‘সি’ প্রোগ্রামিং ভাষাকে মিড-লেভেল প্রোগ্রামিং ভাষা বলা হয় কেন?
খ। ‘সি’ প্রোগ্রামিং ভাষা একটি উচ্চস্তরের প্রোগ্রামিং ভাষা – ব্যাখ্যা কর।
খ। ‘সি’ প্রোগ্রামিং ভাষা একটি স্ট্রাকচার্ড প্রোগ্রামিং ভাষা – ব্যাখ্যা কর।
খ। ‘সি’ প্রোগ্রামিং ভাষা একটি প্রোসিডিউর প্রোগ্রামিং ভাষা – ব্যাখ্যা কর।
খ। ‘সি’ প্রোগ্রামিং ভাষা একটি General purpose language – ব্যাখ্যা কর।
খ। ‘সি’ প্রোগ্রামে ফাংশনের হেডার ফাইল বলতে কী বুঝায়?
খ। ‘সি’ প্রোগ্রামে main( ) ফাংশনের গুরুত্ব লিখ।
খ। ‘সি’ প্রোগ্রামিং ভাষা একটি কেস-সেনসেটিভ ভাষা-বুঝিয়ে লেখ।
খ। ‘সি’ প্রোগ্রামে #include<stdio.h> আবশ্যক কেন? ব্যাখ্যা কর।
সৃজনশীল প্রশ্নসমূহঃ
বহুনির্বাচনি প্রশ্নসমূহঃ
Written by,
- Mizanur Rahman (Mizan)
- Lecturer in ICT, Shaheed Bir Uttam Lt. Anwar Girls’ College ,Dhaka Cantonment
- Author at www.edupointbd.com
- Software Engineer at mands IT
- Former Lecturer in ICT, Cambrian College, Dhaka
- Email: mizanjust@gmail.com
- Cell: 01724351470