সি-প্রোগ্রামিং ভাষা :
সি একটি প্রোসিডিউরাল প্রোগ্রামিং ভাষা যা মধ্য পর্যায়ের হাই-লেভেল ল্যাঙ্গুয়েজ। ১৯৭০ সালে এটিএন্ডটি বেল ল্যাবরেটরিতে ডেনিস রিচি ইউনিক্স অপারেটিং সিস্টেম ব্যবহার করে সি ভাষা উদ্ভাবন করেন। একে উচ্চস্তরের স্ট্রাকচার্ড প্রোগ্রামিং ভাষাও বলা হয়।
সি-প্রোগ্রামিং ভাষায় নিম্নস্তরের ভাষার সুবিধা, যেমন-সিস্টেম সফটওয়্যার এর মাধ্যমে হার্ডওয়্যার নিয়ন্ত্রন এবং উচ্চস্তরের ভাষার সুবিধা, যেমন-অ্যাপ্লিকেশন সফটওয়্যার তৈরি করা যায়। অর্থাৎ সি-ভাষায় উচ্চস্তরের সুবিধা পওয়া যায় আবার নিম্নস্তরের সুবিধাও পওয়া যায়। তাই সি ভাষাকে মধ্যমস্তরের (Mid Level Language) ভাষা বলে।
সি-প্রোগ্রামিং ভাষার বৈশিষ্ট্য :
- সি-প্রোগ্রামিং ভাষা শুরু হয় main ( ) ফাংশন এর মাধ্যমে।
- ফাংশনের মধ্যে যে সব স্টেটমেন্ট থাকে সেগুলোকে দ্বিতীয় বন্ধনী { } এর মধ্যে রাখতে হয়।
- প্রতিটি স্টেটমেন্টের শেষে সেমিকোলন ( ; ) দিতে হয়।
- সি-প্রোগ্রামিং একটি Case Sensitive ভাষা হওয়ায় Uppercase Letter ও Lowercase Letter আলাদা অর্থ বহন করে।
- সি-প্রোগ্রামিং এ এক মেশিনের প্রোগ্রাম অন্য মেশিনে চালানো যায়।
সি-প্রোগ্রামিং ভাষার সুবিধা :
- প্রোগ্রামের মধ্যে যে কোন স্থানে যত খুশি মন্তব্য দেওয়া যায়।
- এ ভাষার কমান্ড ইংরেজি ভাষার মত হওয়ায় শেখা সহজ।
- উচ্চস্তরের ভাষা ও মেশিন ভাষায় প্রোগ্রাম লেখা যায়।
- একই সময়ে একাধিক ফাইল ও উইন্ডো ব্যবহার করে কাজ করা যায়।
- প্রোগ্রাম লেখা ও ডিবাগিং করা সহজ।
- অল্প মেমোরির প্রয়োজন হয়।
- দ্রুত প্রোগ্রাম নির্বাহ করা যায়।
সি-প্রোগ্রামিং ভাষার অসুবিধা :
- সি ভাষায় সাধারণত সকল প্রোগ্রাম ছোট হাতের অক্ষরে লিখতে হয়।
- লাইব্রেরি ফাংশনে হেডার ফাইলগুলো ঠিকমত ঘোষণা করতে হয়।
- সঠিকভাবে চলক ঘোষণা করতে হয়।
- সি ভাষায় স্পেস অগ্রাহ্য করে।
সি-প্রোগ্রামিং ভাষার ব্যবহার :
বর্তমানে প্রচলিত কম্পাইলার ও অপারেটিং সিস্টেমগুলোর শতকরা ৯০ ভাগেরও বেশি সি-ভাষায় রচিত। এ ভাষা অ্যাসেম্বলি ও উচ্চতর ভাষার প্রোগ্রামিং কৌশলের সমন্বয় সাধন করে বলে এ ভাষা মধ্যস্তরের ভাষা বলে পরিচিত। সি ভাষার মাধ্যমে সহজেই জটিল সমস্যা সমাধান করা যায়। সি-ভাষাকে কম্পিউটার ভাষার জনক বলা হয়। এ ভাষার সাহায্যে যে ধরনের প্রোগ্রাম লেখা যায় তা হলো-
- অপারেটিং সিস্টেম (Operating System)
- ল্যাঙ্গুয়েজ কম্পাইলার (Language Compiler)
- ল্যাঙ্গুয়েজ ইন্টারপ্রেটার (Language Interpreter)
- অ্যাসেম্বলার (Assembler)
- ডেটাবেজ প্রোগ্রাম (Database Programme)
- টেক্সট এডিটর (Text Editor)
- কম্পিউটার গেমস (Computer Games)
- কম্পিউটার ভাইরাস ও এন্টিভাইরাস (C. Virus)
- ইউটিলিটিজ (Utilities)
- নেটওয়ার্ক ড্রাইভারস (Network Drivers)
সি-প্রোগ্রামিং ভাষায় লেখা প্রোগ্রামের ব্যাসিক গঠন :
Documentation Section Link Section Definition Section Global Declaration Section main ( ) Function Section { Declaration Part Executable Part } Subprogram Section Function 1 Function 2 .......... .......... User Defined Function .......... Function n
Documentation Section : এটি প্রোগ্রামের ঐচ্ছিক অংশ। এ অংশে কমেন্টস এর ব্যবহার করা হয়। কমেন্টস এর মাধ্যমে প্রোগ্রামের নাম, বিষয়বস্তু, প্রোগ্রামারের নাম, ব্যবহারের নিয়ম ও উদ্দেশ্য লেখা হয়। প্রোগ্রাম নির্বাহে এই কমেন্টের কোন ভূমিকা নেই। কম্পাইলার কমেন্টস এড়িয়ে যায়। সি-প্রোগ্রামে ২ ধরনের কমেন্টস ব্যবহৃত হয়। যথা-
১. সিঙ্গেল লাইন কমেন্টস। যেমন-
//This is Single line comment
2. মাল্টিপল লাইন কমেন্টস। যেমন-
/*This is Multiple line comment
This is Multiple line comment */
Link Section : এটি প্রোগ্রামের আবশ্যক অংশ। প্রোগ্রামে ব্যবহৃত লাইব্রেরির ফাংশনগুলোর হেডার ফাইল এ অংশে যুক্ত করা হয়। হেডার ফাইল হলো মূলত .h এক্সটেনশন যুক্ত ফাইল যেখানে বিভিন্ন লাইব্রেরি ফাংশনের প্রটোটাইপ উল্লেখ থাকে। হেডার ফাইল সংযোগের নিয়ম : #include<header file name> । যেমন- #include<stdio.h>
Definition Section : এ অংশে কনস্ট্যান্ট ঘোষণা করা হয়। কনস্ট্যান্ট ঘোষণা করার নিয়ম হলো-
#define Constant_Name=Constant_Value;
Global Declaration Section : এ অংশে গ্লোবাল ভেরিয়েবল ঘোষণা করা হয়। যে কোন ফাংশনে অথবা প্রোগ্রামের সর্বত্র ব্যবহৃত হয় এমন ভেরিয়েবলকে গ্লোবাল ভেরিয়েবল বলে।
main ( ) Function Section : এটি হলো প্রোগ্রামের প্রধান ও আবশ্যকীয় অংশ। এর দুটি অংশ রয়েছে-১. ঘোষণা অংশ(Declaration Part) ২. নির্বাহ অংশ (Execution Part )।
Declaration Part-এ প্রয়োজনীয় চলক, অ্যারে, পয়েন্টার, ফাইল ইত্যাদি ঘোষণা করা হয় এবং Execution Part এ প্রোগ্রাম নির্বাহ হওয়ার জন্য কমপক্ষে একটি স্টেটমেন্ট থাকতে হয়। উভয় অংশের প্রত্যেক স্টেটমেন্টের শেষে সেমিকোলন(;) থাকতে হবে। সি-প্রোগ্রামের মূল অংশ এই ফাংশনের আওতায় { } বন্ধনীর ভিতরে লিখতে হয়।
Subprogram Section : এটি প্রোগ্রামের ঐচ্ছিক অংশ। এ অংশে এক বা একাধিক ইউজার ডিফাইন ফাংশন থাকে যা main ( ) মেইন ফাংশন থেকে Call করা হয়।
সি-ভাষায় নমুনা প্রোগ্রাম ও এর বিভিন্ন অংশের বর্ণনা :
তিনটি পূর্ণসংখ্যা ইনপুট নিয়ে যোগফল নির্ণয় ও প্রিন্ট করার প্রোগ্রাম-
#include<stdio.h > #include<conio.h > int main() {int a,b,c,sum; printf("Enter three integer numbers : "); scanf("%d%d%d",&a,&b,&c); sum=a+b+c; printf("The sum is=%d",sum); getch(); }
প্রোগ্রাম বিশ্লেষণ :
- প্রোগ্রামের ভিতরে printf( ) ও scanf( ) নামে দুটি লাইব্রেরি ফাংশন ব্যবহার করা হয়েছে। এ ফাংশন দুটির ডেফিনেশন stdio.h নামক হেডার ফাইলে রয়েছে। তাই প্রোগ্রামের শুরুতে #include<stdio.h > ব্যবহার করা হয়েছে।
- প্রোগ্রামের ভিতরে getch ( ) লাইব্রেরি ফাংশনব্যবহার করা হয়েছে। এই ফাংশনটির ডেফিনেশন conio.h নামক হেডার ফাইলে রয়েছে। তাই প্রোগ্রামের শুরুতে #include<conio.h > ব্যবহার করা হয়েছে।
- main() ফাংশন প্রোগ্রামের মূল অংশ। main() থেকেই প্রোগ্রাম শুরু হয়। তাই প্রোগ্রামে এ ফাংশনটি অবশ্যই লিখতে হবে। ‘
- ’ { ’ ব্রাকেটটি main() ফাংশনটির কাজ শুরু বুঝানোর জন্য ব্যবহার করা হয়েছে।
- integer বা পূর্ণসংখ্যা টাইপের a,b,c ও sum নামে চারটি চলক বা ভেরিয়েবল ঘোষণা করা হয়েছে।
- printf( ) ফাংশনটি ব্যবহারকারী কর্তৃক ইনপুট নেওয়ার ম্যাসেজ প্রদানের জন্য ব্যবহার করা হয়েছে।
- scanf( ) ফাংশনটির মাধ্যমে ব্যবহারকারী কর্তৃক a,b ও c চলকের মান ইনপুট নেওয়া হয়েছে।
- %d এটি একটি ফরমেট স্পেসিফায়ার যা ইন্টিজার টাইপের ডেটা ইনপুট করার জন্য ব্যবহৃত হয়েছে।
- & , ইনভার্টেড কমার পরে & দিয়ে চলকের নাম রাখা হয়েছে। যেটি দ্বারা ইনপুট করা মানটি উক্ত ভেরিয়েবল ঠিকানায় রাখা হয়েছে বুঝাচ্ছে।
- a,b ও c চলকের মান যোগ করে sum চলকে রাখা হয়েছে।
- printf( ) ফাংশনটি ব্যবহার করে sum চলকের মান প্রদর্শন করা হয়েছে।
- getch( ) লাইব্রেরি ফাংশনটি ব্যবহার করা হয়েছে যাতে আউটপুটটা ব্যবহারকারী না সরানো পর্যন্ত ধরে রাখে।
- ’ } ’ ব্রাকেটটি main() ফাংশনটির কাজ শেষ বুঝানোর জন্য ব্যবহার করা হয়েছে।
প্রোগ্রাম লেখা ও কম্পাইল করার পদ্ধতি :
প্রোগ্রাম লেখা :
১. CodeBlocks কম্পাইলারটি চালু করে File এ ক্লিক করলে একটি কমান্ড লিস্ট দেখা যাবে।
২. New কমান্ড থেকে Empty file এ ক্লিক করলে অথবা Ctrl-shift-N চাপলে একটি নিউ খালি স্ক্রিন দেখা যাবে।
৩. ফাঁকা উইন্ডোতে পর্যায়ক্রমে প্রোগ্রামের স্টেটমেন্টগুলো লিখতে হবে। যেমন-
#include<stdio.h > #include<conio.h > int main() {int a,b,c,sum; printf("Enter three integer numbers : "); scanf("%d%d%d",&a,&b,&c); sum=a+b+c; printf("The sum is=%d",sum); getch(); }
প্রোগ্রাম সেভ করা : File মেনুতে ক্লিক করে Save file এ ক্লিক করতে হবে। Save As ডায়ালগ বক্স আসবে। যে কোন একটি নাম যেমন- habib.c লিখে OK বাটনে ক্লিক করলে প্রোগ্রামটি habib নামে সেভ হয়ে যাবে।
কম্পাইল করা : CodeBlocks এ লেখা প্রোগ্রামটি কম্পাইল করার জন্য Build মেনুতে ক্লিক করে Build and run নির্বাচন করলে প্রোগ্রামটি মেশিন কোডে রুপান্তরিত হয়ে কোন ত্রুটি থাকলে তা দেখাবে। ত্রুটি সংশোধন করে পূনরায় প্রোগ্রামটি Save করতে হবে। এভাবে Build মেনুতে ক্লিক করে Build and run নির্বাচন করলে প্রয়োজনীয় ইনপুট দেওয়ার পর প্রোগ্রামের ফলাফল দেখা যাবে।
প্রোগ্রাম ডিবাগিং(Programme Debugging) :
প্রোগ্রামের মধ্যে যদি কোন ভুল থাকে তবে সেই ভুলকে বাগ (Bug) বলে। আর প্রোগ্রামের ভুল-ত্রুটি খুঁজে বের করে সংশোধন করাকে Debugging বলে। প্রোগ্রামের সকল ভুল সংশোধন না হলে সেই প্রোগ্রাম রান হয় না।
প্রোগ্রামের ভুল তিন ধরনের :
১. ডেটা ভুল (Data Error)
২. যুক্তিগত ভুল (Logical Error)
৩. সিনট্যাক্স ভুল (Syntax Error)
ডেটা ভুল : কম্পিউটারে ভুল ডেটা দিলে তাকে ডেটা ভুল বলে। ডেটা ভুল কম্পিউটার ধরতে পারে না। যেমন-67 এর স্থলে ভুলে 76 টাইপ করলে কম্পিউটার এ ভুল ধরতে পারে না এবং কোন বার্তাও দেবে না।
যুক্তিগত ভুল : প্রোগ্রামের যুক্তির ভুলকে যুক্তিগত ভুল বলে। এ ভুল কম্পিউটার ধরতে পারে না। যেমন- A>B এর স্থলে A<B অথবা P=A+B এর স্থলে P=A-B লিখলে যুক্তি ভুল হবে। এক্ষেত্রেও কম্পিউটার কোন ভুলের বার্তা প্রদর্শন করবে না। প্রোগ্রামে যুক্তি ভুল হলে ফলাফলও ভুল হয়।
সিনট্যাক্স ভুল : প্রোগ্রামের ব্যকরণগত ভুলকে সিনট্যাক্স ভুল বলে। যেমন-বানান ভুল, কমা, ব্রাকেট, চলক বলে না দেওয়া ইত্যাদি। প্রোগ্রাম কম্পাইল করার সময় এ ভুল কুম্পউটার ধরতে পারে এবং এ ভুলের জন্য বার্তা প্রদর্শন করে।
তৃতীয় অধ্যায় লেকচার-১৩: সার্বজনীন গেটের (NAND & NOR) প্রমাণ।
Written by:
Author at www.habibictcare.com
Email:habibbzm2018@gmail.com
Cell: +8801712-128532,+8801913865284