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

টিউন বিভাগ প্রোগ্রামিং
প্রকাশিত
জোসস করেছেন

প্রিয় বন্ধুগন কোমন আছ, আজকে আপনাদের সামনে আগের মতো আরেকটি আটিকেল নিয়ে হাজির হলাম। * 'সি' প্রোগ্রামিং ভাষা (Programming Language-C)

'সি' ভাষার প্রাথমিক ধারণা (Primary Concept of C Language) আমেরিকার বেল ল্যাবরেটরির ডেনিস রিচি ১৯৭০ সালে এ ভাষার উদ্ভাবন করেন। ভাষাটির নাম 'C' রাখা হয়েছে কারণ, B নামের অপর একটি ভাষা আগেই তৈরি হয়েছে। C যাতে তার গুণাগুণ না হারায় সে জন্য ১৯৮৩ সালে কম্পাইলার এবং সফটওয়্যার প্রস্তুতকারকদের একটি গ্রুপ আমেরিকান ন্যাশনাল স্ট্যান্ডার্ড ইনস্টিটিউট (ANSI)-কে C এর জন্য একটি নীতি নির্ধারণের আবেদন জানান। অতঃপর ১৯৮৯ সালের শেষের দিকে নির্ধারিত কমিটি C এর জন্য ANSI নীতি নির্ধারণ করে। সিস্টেম প্রোগ্রামিং-এর ক্ষেত্রে এ ভাষা অধিক হারে ব্যবহৃত হয়। উপাত্ত সঞ্চালনের বর্ণনার জন্য এ ভাষার সুবিধা অনেক বেশি বলে ভাষাটি অন্যান্য ভাষার চেয়ে অনেক বেশি জনপ্রিয়। C ভাষাকে কম্পিউটার ভাষার জনক বলা হয়ে থাকে। এ ভাষারও অনেক সংস্করণ রয়েছে। যেমন- C, C+, ANSI C, Visual C, Turbo C প্রভৃতি। বর্তমানকালের অধিকাংশ প্যাকেজ প্রোগ্রামই এ ভাষার মাধ্যমে তৈরি করা হচ্ছে। যে কোনো সফটওয়্যার উন্নয়নের ক্ষেত্রে এ ভাষা ব্যবহার করা যেতে পারে। এ ভাষার সাহায্যে সাধারণত নিম্নলিখিত ধরনের প্রোগ্রাম লেখা যায়।

১. অপারেটিং সিস্টেম

২.সম্পাদকদের

৩.অ্যাসেম্বলার

৪.ডাটাবেস প্রোগ্রাম

৫.কম্পাইলার

৬.গেমস

৭. দোভাষী

৮.Virus and Antivirus ইত্যাদি।

কম্পিউটার প্রোগ্রামের সকল ভাষার কাজ প্রায় একই রকমের। প্রতিটি ভাষাই ডাটা গ্রহণ করে, গৃহীত ডাটা প্রক্রিয়াকরণ করে এবং ফলাফল প্রদান করে। প্রতিটি ভাষারই কিছু লাইব্রেরি ফাংশন থাকে। ডাটা গ্রহণ, ডাটা প্রক্রিয়াকরণ এবং ফলাফল প্রদানের জন্য C, BASIC এবং FORTRAN এর Library Function-এর তুলনামূলক পার্থক্য।

*C ভাষার বৈশিষ্ট্য (Characteristics of C Language) প্রতিটি ফাংশনের নির্বাহ

১। শুরু হবে দ্বিতীয় বন্ধনী (Opening Brace) (' দ্বারা ২। C ভাষায় প্রোগ্রাম লিখা হয় ছোট হাতের অক্ষর দ্বারা তবে Symbolic Name এবং Output Staring সাধারণত বড় হাতের অক্ষরে লিখা হয়।

৩। প্রতিটি লাইনের প্রতিটি শব্দ অবশ্যই কমপক্ষে একটি স্পেস বা ট্যাব বা কোটেশন চিহ্ন দ্বারা আলাদা করে লিখতে হবে।

৪। প্রতিটি প্রোগ্রামিং স্টেটমেন্ট শেষ করতে হবে সেমিকোলন দ্বারা। ৫। প্রতিটি চলক ব্যবহারের পূর্বেই তাদের ডাটা টাইপ উল্লেখ করতে হবে।

৬। Header ফাইলগুলো #include দ্বারা যুক্ত করতে হবে।

৭। কোনো Library Function ব্যবহার করলে অবশ্যই তার Header File যুক্ত করতে হবে।

৮। define এবং include এর শেষে সেমিকোলন ব্যবহার করতে হবে না।

৯। চিহ্নটি Compiler Derivative এবং এটি অবশ্যই প্রথম কলামে লিখতে হবে।

১০। বন্ধনী শুরু করলে অবশ্যই তা শেষ করতে হবে।

১১। প্রোগ্রামের মধ্যে যেকোনো জায়গায় মন্তব্য যুক্ত করা যাবে এবং তা /* এবং */ এর মধ্যে যুক্ত করতে হবে।
১২। প্রতিটি C প্রোগ্রামিংয়ে একটি main () Function থাকবে। একটির অধিক main () Function থাকতে পারবে না। main () Function থেকে প্রোগ্রাম নির্বাহ করা শুরু হবে।

*প্রোগ্রাম কম্পাইলিং (Programme Compiling) এখানে সোর্স প্রোগ্রামকে একসাথে সম্পূর্ণরূপে মেশিনের ভাষায় অনুবাদ করে একটি অবজেক্ট প্রোগ্রাম এবং

একটি এক্সিকিউশন ফাইল তৈরি করে। এখানকার এক্সিকিউশন ফাইল অত্যন্ত দ্রুততার সাথে এক্সিকিউট হয়ে থাকে। কম্পাইলার হলো এমন একটি প্রোগ্রাম, যা কম্পিউটারের নিকট বোধগম্য করার জন্য উচ্চতর ভাষায় লিখিত প্রোগ্রামের স্টেটমেন্টগুলোকে) এবং। এ পরিবর্তন করে। ফলে প্রোগ্রামিং প্রক্রিয়া অত্যন্ত

দ্রুততর হয় এবং প্রোগ্রামারকে নিজ হাতে কোনো অনুবাদকের কাজ করতে হয় না। ভিন্ন ভিন্ন উচ্চতর ভাষায় প্রোগ্রামের জন্য ভিন্ন ভিন্ন কম্পাইলার ব্যবহৃত হয়। কারণ কোনো নির্দিষ্ট কম্পাইলার একটি মাত্র উচ্চতর ভাষার প্রোগ্রামকে কম্পাইল করতে পারে। যেমন- যে কম্পাইলার C প্রোগ্রামকে কম্পাইল করতে পারে সেই কম্পাইলার বেসিক প্রোগ্রাম কম্পাইল করতে পারে না। সাধারণত হাই-লেভেল ভাষার একটি বাক্য মেশিনের ভাষায় চার বা পাঁচটি বাক্যে পরিণত হয়। কম্পাইলার অনুবাদ করা ছাড়াও উৎস প্রোগ্রামের গুণাগুণও বিচার করতে পারে।

১.প্রোগ্রাম কম্পাইল (Alt+F9)

২.প্রোগ্রাম নির্বাহ (Ctrl+F9)

*কম্পাইলিংয়ের প্রধান কাজ (Main Functions of Compiling) ১। উৎস প্রোগ্রামকে অনুবাদ করে অবজেক্ট প্রোগ্রাম তৈরি করা।

২। প্রোগ্রামকে লিংক করা। অর্থাৎ প্রোগ্রামের সঙ্গে প্রয়োজনীয় রুটিন যোগ করা। রুটিন হলো প্রোগ্রামের ছোট অংশ যাতে কোনো নির্দিষ্ট কাজ করার জন্য নির্দেশ দেয়া থাকে।

৩। প্রোগ্রামে কোনো ভুল থাকলে তা জানানো।

৪। প্রধান মেমোরিতে প্রোগ্রামের জন্য প্রয়োজনীয় মেমোরির অবস্থান তৈরি করা।

৫। প্রয়োজনে Source বা উৎস প্রোগ্রামকে ছাপিয়ে বের করা।

৬। প্রোগ্রামের যেকোনো ভুল-ত্রুটি সংশোধন করা।

*প্রোগ্রাম ডিবাগিং (Programme Debugging)

Bug অর্থ পোকা। Debugging অর্থ পোকা দূর করা। কম্পিউটারের প্রোগ্রামে যে ভুল-ত্রুটি থাকে তা দূর করাকে ডিবাগিং (Debugging) বলা হয়। ১৯৪৫ সালে মার্ক-১ কম্পিউটারে একটি মথ পোকা ঢুকে যাওয়ায় তা অচল হয়ে পড়ে। তখন থেকে Bebugging শব্দটির উৎপত্তি। প্রোগ্রাম ডিবাগিংয়ের জন্যপ্রথমে প্রোগ্রামে কী ধরনের ভুল হয়েছে তা নির্ণয় করে সে মোতাবেক প্রয়োজনীয় সংশোধন করলেই চলে। Syntax Error হলে তা নির্ণয় করা এবং সংশোধন করা সহজ। Logical Error শনাক্ত করা কঠিন। এক্ষেত্রে কিছু নমুনা ডাটা নিয়ে যার ফলাফল জানা আছে, প্রোগ্রাম পরীক্ষা করতে হবে এবং ফলাফল ভিন্ন হলে প্রোগ্রামকে কয়েকটি অংশে ভাগ করে প্রতিটি অংশের ফলাফল দেখে কোথায় ভুল আছে তা নির্ণয় করতে হবে এবং প্রয়োজনীয় সংশোধন করতে হবে।

* অনুবাদক প্রোগ্রাম (Translator Programme) সোর্স প্রোগ্রামকে অবজেক্ট প্রোগ্রামে পরিণত করার জন্য যে প্রোগ্রাম ব্যবহার করা হয় তাকে অনুবাদক প্রোগ্রাম (Translator Programme) বলে। অ্যাসেম্বলি বা উচ্চতর ভাষায় লিখিত প্রোগ্রামকে সোর্স প্রোগ্রাম (Source Programme) এবং মেশিনের ভাষায় অনুবাদ করা প্রোগ্রামকে অবজেক্ট প্রোগ্রাম (Object Programme) বলা হয়। সোর্স প্রোগ্রামের ভাষা কম্পিউটার বোঝে না। তাই সোর্স প্রোগ্রামকে চালানোর আগে কোনো অনুবাদক প্রোগ্রামের মাধ্যমে মেশিনের ভাষায় অনুবাদ করতে হয়। মেশিনের ভাষায় প্রোগ্রাম অনুবাদ করার জন্য 0 এবং 1 এই দু'টি বাইনারি ডিজিট ব্যবহার করা হয়। সোর্স প্রোগ্রামকে অনুবাদ করার জন্য তিন ধরনের অনুবাদক প্রোগ্রাম আছে। যেমন—

১। কম্পাইলার (Compiler)

২। অ্যাসেম্বলার (Assmebler)

৩। ইন্টারপ্রেটার (Interpreter)

1। কম্পাইলার (Compiler)
সোর্স প্রোগ্রামকে একসাথে সম্পূর্ণরূপে মেশিনের ভাষায় অনুবাদ করে একটি অবজেক্ট প্রোগ্রাম তৈরি করে এবং একটি এক্সিকিউশন ফাইল তৈরি করে। এখানকার এক্সিকিউশন ফাইল অত্যন্ত দ্রুততার সাথে এক্সিকিউট হয়ে থাকে। কম্পাইলার হলো এমন একটি প্রোগ্রাম, যা কম্পিউটারের নিকট বোধগম্য করার জন্য উচ্চতর ভাষায় লিখিত প্রোগ্রামের স্টেটমেন্টগুলোকে 0 এবং 1 এ পরিবর্তন করে। ফলে প্রোগ্রামিং প্রক্রিয়া অত্যন্ত দ্রুততর হয় এবং প্রোগ্রামারকে নিজ হাতে কোনো অনুবাদকের কাজ করতে হয় না।

ভিন্ন ভিন্ন উচ্চতর ভাষার প্রোগ্রামের জন্য ভিন্ন ভিন্ন কম্পাইলার ব্যবহৃত হয়। কারণ কোনো নির্দিষ্ট কম্পাইলার একটি মাত্র উচ্চতর ভাষার প্রোগ্রামকে কম্পাইল করতে পারে। যেমন- যে কম্পাইলার COBOL প্রোগ্রামকে কম্পাইল করতে পারে সেই কম্পাইলার বেসিক প্রোগ্রাম কম্পাইল করতে পারে না। সাধারণত হাই লেভেল ভাষার একটি বাক্য মেশিনের ভাষায় চার বা পাঁচটি বাক্যে পরিণত হয়। কম্পাইলার অনুবাদ করা ছাড়াও উৎস প্রোগ্রামের গুণাগুণও বিচার করতে পারে।

*কম্পাইলারের প্রধান কাজ
১। উৎস প্রোগ্রামকে অনুবাদ করে অবজেক্ট প্রোগ্রাম তৈরি করা।
২। প্রধান মেমোরিতে প্রোগ্রামের জন্য প্রয়োজনীয় মেমোরির অবস্থান তৈরি করা।
৩। এর পরে প্রোগ্রামকে লিংক করা। অর্থাৎ প্রোগ্রামের সঙ্গে প্রয়োজনীয় রুটিন যোগ করা। রুটিন হলো প্রোগ্রামের ছোট অংশ যাতে কোনো নির্দিষ্ট কাজ করার জন্য নির্দেশ দেয়া থাকে।

৪। প্রোগ্রামে কোনো ভুল থাকলে তা জানানো। ৫। প্রোগ্রামের যেকোনো ভুল-ত্রুটি সংশোধন করা।

৬। প্রয়োজনে Source বা উৎস প্রোগ্রামকে ছাপিয়ে বের করা।

2। অ্যাসেম্বলার (Assembler)

অ্যাসেম্বলারের কাজ হচ্ছে অ্যাসেম্বলি ভাষায় লিখিত উৎস প্রোগ্রাম অর্থাৎ নেমোনিক কোডকে মেশিনের ভাষায় লিখিত অবজেক্ট প্রোগ্রামে রূপান্তর করা। এ ভাষার অন্যতম কাজ হচ্ছে প্রধান মেমোরিতে রক্ষিত অ্যাসেম্বলি ভাষার সব নির্দেশ ঠিক আছে কিনা তা ব্যবহারকারীকে জানানো। এ ভাষার প্রত্যেকটি নির্দেশকে অ্যাসেম্বলার মেশিন ভাষার একটি নির্দেশে পরিণত করে। ভুল সংশোধনের পর এ ভাষা পুনরায় প্রথম নির্দেশ থেকে অনুবাদের কাজ শুরু করে।

অ্যাসেম্বলারের প্রধান কাজ

১। নেমোনিক কোডকে মেশিনের ভাষায় রূপান্তর করা।

২। সব নির্দেশ এবং ডাটা প্রধান মেমোরিতে জমা রাখা।

৩। প্রোগ্রামে কোনো ভুল থাকলে তা জানানো।

3। ইন্টারপ্রেটার (Interpreter) ইন্টারপ্রেটারও কম্পাইলারের মতো উচ্চতর ভাষাকে মেশিন ভাষায় রূপান্তর করে, তবে কম্পাইলার যেমন—প্রথমে সোর্স প্রোগ্রামকে অবজেক্ট প্রোগ্রামে রূপান্তর করে এবং শেষে ফলাফল প্রদান করে কিন্তু ইন্টারপ্রেটার সোর্স প্রোগ্রামকে অবজেক্ট প্রোগ্রামে রূপান্তর করে না, ইন্টারপ্রেটার এক লাইন করে সম্পাদন করে এবং তাৎক্ষণিক ফলাফল প্রদান করে। ইন্টারপ্রেটারের মাধ্যমে প্রোগ্রামের ভুল-ত্রুটি শনাক্ত ও সংশোধন করার ক্ষেত্রে সময় কম লাগে। তবে ইন্টারপ্রেটারের অসুবিধা হচ্ছে অনুবাদের ক্ষেত্রে এটি ধীর গতিসম্পন্ন এবং প্রতিবার প্রোগ্রাম নির্বাহের ক্ষেত্রে প্রতিটি স্টেটমেন্ট নতুন করে মেশিন ভাষায় রূপান্তর করতে হয়।

* প্রোগ্রামের গঠন (Structure of a Programme)

C প্রোগ্রাম কতকগুলো ফাংশনের সমষ্টি। এই ফাংশনগুলোকে বলা হয় সাবরুটিন। C প্রোগ্রাম লিখতে হলে প্রথমে এক বা একাধিক ফাংশন গঠন করতে হয়। তারপর ফাংশনগুলোকে একসাথে সংযোগ স্থাপন করছে হয়। একটি C প্রোগ্রাম এক বা একাধিক সেকশন নিয়ে গঠিত।

Documentation Section-এ এক বা একাধিক মন্তব্য, প্রোগ্রামের নাম, প্রোগ্রামের বিষয়বস্তু, প্রোগ্রাম

রচয়িতার নাম, প্রোগ্রাম ব্যবহারের নিয়ম ইত্যাদি সংযুক্ত করা হয়। Link Section-এ কম্পাইলারের সাথে বিভিন্ন লাইব্রেরির ফাংশনের সংযোগ স্থাপন করা হয় এবং হেচার ফাইল সংযুক্ত করা হয়। Definition Section- এ সমস্ত Symbolic Constant ঘোষণা করা হয়।

Global Declaration Section- এ সমস্ত Global Variable (যে Variable প্রোগ্রামের সমস্ত ফাংশনে
কাজ করে) ঘোষণা করা হয়।

প্রতিটি C প্রোগ্রামে একটি main() Function থাকবেই। main() Function এর দুটি অংশ। একটি Declaration Part এবং অন্যটি Execution Part। Declaration Part-এ প্রয়োজনীয় চলক যা নির্বাহ অংশে ব্যবহার করা হবে তা ঘোষণা করতে হয় এবং Execution Part প্রোগ্রাম নির্বাহ করে। এই দুটি অংশ দুটি দ্বিতীয় বন্ধনীর মধ্যে রাখতে হবে। Subprogramme Section এ এক বা একাধিক ব্যবহারকারীর তৈরি ফাংশন থাকবে যা main() Function এ Call করা হবে।

*ডাটা টাইপ কি?

যে সকল বিশৃঙ্খল ঘটনা বা ফ্যাক্ট প্রক্রিয়াকরণের জন্য সংগ্রহ করা হয় তাকে বলা হয় ডাটা বা উপাত্ত। যেমন- ছাত্র-ছাত্রীদের রেজাল্ট প্রস্ত্তত করার জন্য সংগৃহীত নাম, রোল নং, বিভিন্ন বিষয়ের প্রাপ্ত নম্বর হলো এক একটি ডাটা।

C Programming তার ডাটা টাইপের জন্য বেশ সমৃদ্ধ। সাধারণত ডাটা টাইপ মেশিনের উপর

নির্ভরশীল। ANSI C-তে চার ধরনের ডাটা ব্যবহৃত হয়। যথা

1. প্রাথমিক (বা মৌলিক) ডেটা প্রকার:

2. ব্যবহারকারী-সংজ্ঞায়িত ডেটা প্রকার

3. প্রাপ্ত তথ্য প্রকার এবং

4. খালি ডেটা সেট

সাধারণত ডাটা টাইপ বলতে Primary (or fundamental) data types-কেই বোঝানো হয়। সাধারণত ডাটা টাইকে আবার নিম্নলিখিত ভাগে ভাগ করা যায় :

উ: পূর্ণসংখ্যার ধরন

B. ফ্লোটিং পয়েন্টের প্রকারভেদ

C. অক্ষরের প্রকারভেদ

A. Integer Types Integer হচ্ছে সম্পূর্ণ নম্বর অর্থাৎ অখণ্ডিত সংখ্যা। এ ডাটার ব্যাপ্তি মেশিনের উপর নির্ভর করে। সাধারণত Integer মেমোরিতে একটি শব্দ ধারণ করে মেশিন ভেদে যা ১৬ বিট বা ৩২ বিট জায়গা দখল করে। যদি আমরা ১৬ শব্দ দৈর্ঘ্যের মেশিন ব্যবহার করি তাহলে Integer এর ব্যাপ্তি হবে -32, 768 (2) হতে +32, 267 (+215-1) পর্যন্ত। অর্থাৎ একটি ডাটার মান যদি -32, 768 থেকে +32, 767 এর মধ্যে হয় তবে আমরা ঐ ডাটাকে Integer হিসেবে ঘোষণা করতে পারি। প্রতিটি ডাটাকে একটি নামে প্রকাশ করতে হয়। ধরা যাক, কোনো শ্রেণিতে 40 জন ছাত্র আছে। এখন উক্ত ছাত্রদের Roll নম্বরের ডাটা, 1, 2, 3, 4, 5, 40 পর্যন্ত এভাবে হতে পারে। এক্ষেত্রে এটির নাম দেয়া যায় into roll। ১ বিট ব্যবহার হবে চিহ্ন বিট হিসেবে এবং ১৫ বিট ব্যবহার হবে সংখ্যাটি ধারণ করার জন্য। যদি আমরা ৩২বিট শব্দ দৈঘ্যের মেশিন ব্যবহার করি তাহলে Integer এর ব্যাপ্তি হবে - 214, 74, 83, 684 (231) হতে +214, 74, 83, 647 (+231-1) পর্যন্ত। অর্থাৎ একটি ডাটার মান যদি - 214, 74, 83, 648 থেকে +214, 74, 83, 647 এর মধ্যে হয় তবে আমরা ঐ ডাটাকে Integer হিসেবে ঘোষণা করতে পারি। প্রতিটি ডাটাকে একটি নামে প্রকাশ করতে হয়।

Integer ডাটার ব্যাপ্তি নির্ধারণের জন্য C Programme এ Integer-কে তিনটি শ্রেণিতে ভাগ করা হয়েছে। ভাগগুলো হলো, short int, int এবং long int প্রতিটি ভাগকে আবার signed এবং unsigned-এ ভাগ করা হয়েছে। চলক ঘোষণা করার সময় signed ঘোষণা না করলেও তা নিজে নিজেই signed হিসেবে কাজ করবে।

B. Floating Point Types দশমিকযুক্ত সংখ্যাকে Floating Point বা প্রকৃত সংখ্যা বলা হয়। এই ধরনের সংখ্যা মেমোরিতে ৩২ বিট (১৬ বিট বা ৩২ বিট মেশিনের) জায়গা দখল করে যার মধ্যে দশমিকের পরের অংশের জন্য ৬ বিট। এই ধরনের সংখ্যা float-এর মাধ্যমে ঘোষণা করতে হয়। Floating সংখ্যার ব্যাপ্তি (নিচের টেবিল) অনুযায়ী float, double এবং long double এই তিনভাবে ঘোষণা করতে হয়। Double সংখ্যা মেমোরিতে ৬৪ বিট জায়গা দখল করে যার মধ্যে ১৪ বিট দশমিকের পরের অংশের জন্য সংরক্ষিত থাকে। Long Double সংখ্যা মেমোরিতে ৮০ বিট জায়গা দখল করে।

C. Character Types
কোনো চিহ্ন (গাণিতিক বর্ণ, বর্ণ বা কোনো বিশেষ বর্ণ) প্রকাশ করা হয় Character Types ডাটার মাধ্যমে। এই ধরনের সংখ্যা মেমোরিতে ৮ বিট (১ বাইট) জায়গা দখল করে। এই ধরনের ডাটা বোঝানোর জন্য চলকের নামের আগে char ব্যবহার করা হয়। signed Ges unsigned এই দুইভাবে Character Types ডাটা প্রকাশ করা হয়। signed ঘোষণা করলে - ১২৮ থেকে +১২৭ এবং unsigned ঘোষণা করলে ০ থেকে ২৫৫ মানের মধ্যে ডাটা প্রকাশ করা যায়।

*ধ্রুবক (Constant)

প্রোগ্রাম নির্বাহের সময় যার মান পরিবর্তিত হয় না তাকে ধ্রুবক বলে। ধ্রুবক বা কনস্ট্যান্ট দুই প্রকার। যথা
১। সংখ্যা ধ্রুবক বা সংখ্যাসূচক ধ্রুবক বা নিউমেরিক কনস্ট্যান্ট (Numeric Constant)

২। অক্ষরমালা ধ্রুবক (Character Constant)

*নিউমেরিক কনস্ট্যান্ট (Numeric Constant)
এই ধ্রুবকের ধনাত্মক ও ঋণাত্মক মান হতে পারে। ধ্রুবকে কমা ব্যবহার করা উচিত নয়। যেমন- দশ

হাজারকে লিখতে হয় ১০০০০। উল্লেখ্য ১০, ০০০ লেখা ভুল। C প্রোগ্রামে নিউমেরিক কনস্ট্যান্টকে ইন্টিজার কনস্ট্যান বা পূর্ণ সংখ্যা, রিয়েল কনস্ট্যান্ট বা প্রকৃত সংখ্যা বা দশমিক বিন্দুযুক্ত সংখ্যা বা ফ্লোটিং পয়েন্ট বা এক্সপোনেন্সিয়াল গঠনের সংখ্যা, হেক্সাডেসিমাল, অকটাল প্রভৃতি ভাগে ভাগ করা যায়। নিম্নে এদের উদাহরণ দেয়া হলো :

১। পূর্ণ সংখ্যা ধ্রুবক (Integer Constant) : 32768 এবং +32767 এর মধ্যবর্তী যেকোনো পূর্ণ সংখ্যা যেমন- -287, 2, 512, 2048 ইত্যাদি।

২। ফিক্সড-পয়েন্ট ধ্রুবক (Fixed Point Constant) : 28.7, 2.0, 512.5 2.6786, 8.5 ইত্যাদি।

৩। ফ্লোটিং-পয়েন্ট ধ্রুবক (Floating Point Constant) : 4356E2 (অর্থাৎ 4360102), 24.5E 7 (অর্থাৎ 24.510-7) ইত্যাদি।

৪। অকট্যাল ধ্রুবক (Octal Constant) : এ ধরনের সংখ্যার পূর্বে ০ বসাতে হয়, যেমন- -0437, 01234 ইত্যাদি।
৫। হেক্সাডেসিমেল ধ্রুবক (Hexadecimal Constant) : এ ধরনের সংখ্যার পূর্বে Ox বা OX লিখতে হয় এবং অংকের চিহ্ন ০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, a, b, c, d, e, f বা ০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, A, B, C, D, E F ব্যবহার করা হয়। যেমন- OxAB65, OXFE23B ইত্যাদি।

*অক্ষরমালা ধ্রুবক (Character Constant)
বর্ণ, অংক এবং অন্যান্য চিহ্ন সাজিয়ে এই ধ্রুবক গঠিত হয়। এই ধ্রুবককে আবার বিভিন্ন ভাগে ভাগ করা যায়। ১। Single Character Constant : Single Character Constant (Character Constant) একটি বর্ণ যা single quote mark দ্বারা নির্দিষ্ট করা হয়। যেমন- 'A', '5', '<<' ইত্যাদি।

১। Constant : String Constant কতকগুলো বর্ণের সমষ্টি যা double quote mark দ্বারা নির্দিষ্ট করা হয়। নিম্নে কয়েকটি উদাহরণ দেয়া হলো। যেমন- "MQUNATA", "33.12.5432", "SEMONTI", "IT IS TAMAL", "Dhaka State College", "Anika Azad" ইত্যাদি।

৩। Blackslash Character Constant: C certa fog Blackslash Character Constant ব্যবহার করা হয় যা আউটপুট ফাংশন হিসেবে কাজ করে। সাধারণত Blackslash দেয়ার পর একটি Character ব্যবহার করা হয় যা একটি নির্দিষ্ট ফাংশন হিসেবে কাজ করে। প্রতিটি Blacklash Character আলাদা আলাদা কাজে ব্যবহার করা হয়।

*চলক (Variable)

প্রোগ্রাম নির্বাহের সময় যার মান পরিবর্তিত হয় তাকে চলক বলে। চলকের একটি নাম দিতে হয়। নামটি ৩১ অক্ষরের মধ্যে হতে হবে। নামের প্রথম অক্ষর অবশ্যই বর্ণ হতে হয়। চলকের একটি মান নির্ধারণ করে দিতে হয়। মান নির্ধারণ না করলে ডিফল্ট হিসেবে কম্পিউটার চলকের মান ০ বা অন্য যেকোনো মান ধরে নেয়। তাই ফলাফল ভুল হবার সম্ভাবনা থাকে।

*চলকের প্রকারভেদ (Classification of Variable)

সংরক্ষিত ডাটার ধরন বা প্রকৃতি অনুসারে C প্রোগ্রামে তিন ধরনের চলক আছে। যথা

১। পূর্ণ সংখ্যা চলক (Integer Variable) ২। প্রকৃত সংখ্যা চলক (Floating Point Variable)

৩। বর্ণবাচক চলক (Character Variable)

১। পূর্ণ সংখ্যা চলক (Integer Variable): যে চলকের মান পূর্ণ সংখ্যা হয় তাকে পূর্ণ সংখ্যা চলক বলে। এ চলকের মান প্রোগ্রামার দিতে পারে অথবা প্রোগ্রাম নির্বাহের সময় কম্পিউটারও এর মান নির্ধারণ করতে পারে। চলকের নামের প্রকৃতি নির্ধারণের জন্য চলকের নামের আগে int ব্যবহার করা হয়। এই int লিখাকে টাইপ ডিক্লারেশন বলা হয়। সংখ্যার ব্যাপ্তি অনুসারে int, short বা long int ব্যবহার করা হয়। পূর্ণ সংখ্যা চলকের উদাহরণ : Int a, int qw23, short id, long salary ইত্যাদি।

২। প্রকৃত সংখ্যা চলক (Floating Point Variable) : যে চলকের মান প্রকৃত সংখ্যায় অর্থাৎ দশমিক যুক্ত সংখ্যায় হয় তাকে প্রকৃত সংখ্যা চলক বলে। এ চলকের মান প্রোগ্রামার দিতে পারে অথবা প্রোগ্রাম নির্বাহের সময় কম্পিউটারও এর মান নির্ধারণ করতে পারে। চলকের নামের প্রকৃতি নির্ধারণের জন্য চলকের নামের আগে float ব্যবহার করা হয়। এই float লেখাকে টাইপ ডিক্লারেশন বলা হয়। সংখ্যার ব্যাপ্তি অনুসারে float, double বা long double ব্যবহার করা হয়। প্রকৃত সংখ্যা চলকের উদাহরণ : float a, long id, long double salary ইত্যাদি।

৩। বর্ণবাচক চলক (Character Variable) : যে চলক শুধু বর্ণ এবং শব্দ দিয়ে গঠিত তাকে বর্ণবাচক চলক বলে। যেমন- নাম, ঠিকানা বা যেকোনো বর্ণের ক্ষেত্রে বর্ণবাচক চলক ব্যবহৃত হয়। এক্ষেত্রে চলকের নামের আগে char ব্যবহৃত হয়। যেমন- char n, char address, char des ইত্যাদি।

*ফাংশন ব্যবহারের উপর ভিত্তি করে চলককে দুই ভাগে ভাগ করা হয়। যথা

XT লোকাল চলক (Local Variable) এবং X। গ্লোবাল চলক (Global Variable)

১। লোকাল চলক (Local Variable): যে চলক ফাংশনের ভিতরে decleare করা হয় তাকে লোকাল চলক বলে।

*ভ্যারিয়েবল বা চলকের নামকরণের নিয়মাবলি (Rules for Naming Variable) প্রোগ্রামের মধ্যে চলকের নামকরণের ক্ষেত্রে নিম্নলিখিত নিয়মাবলি অনুসরণ করতে হয়। যেমন

১। চলকের প্রথম অক্ষরটি অবশ্যই a থেকে z এর মধ্যে এক বা একাধিক বর্ণ হতে হবে। ২। চলকের দ্বিতীয় অক্ষর থেকে পরবর্তী অক্ষরগুলো যেকোনো বর্ণ বা অংক কিংবা বর্ণ ও অঙ্ক উভয়ই থাকতে পারে।

৩। চলকের নামের দৈর্ঘ্য সর্বাধিক ৩১টি অক্ষর হতে পারে।

৪। চলকের মধ্যে বিশেষ কোনো চিহ্ন বা প্রতীক যেমন- +, -, তবে আন্ডারস্কোর ব্যবহার করা যাবে। = ইত্যাদি ব্যবহার করা যাবে না।

৫। প্রোগ্রামের কোনো রিজার্ভড ওয়ার্ড বা সংরক্ষিত শব্দ যেমন printf, scanf, include ইত্যাদি চলক হিসেবে ব্যবহার করা যাবে না। ৬। প্রোগ্রামের কোনো স্টেটমেন্ট বা ফাংশন যেমন for, it, while ইত্যাদি নামের চলকের নামকরণ করা যাবে না।

৭। চলকের নামে ছোট হাতের বা বড় হাতের কিংবা উভয় হাতের অক্ষর ব্যবহার করা যাবে, তবে একই চলকের নাম হিসেবে ছোট হাতের বা বড় হাতের লেখা যাবে না। কারণ Total বা total বা TOTALআলাদা আলাদা নাম বোঝায়।

Array কী?

Array হলো এমন এক ধরনের ভেরিয়েবল যা একই কাজে ব্যবহৃত একই ডাটা টাইপের একাধিক ডাটা নিয়ে কাজ করার জন্য ব্যবহৃত হয়ে থাকে।

*Array ডিক্লেয়ার করা

Amay ডিক্লেয়ার করার সাধারণ নিয়ম হলো : data-type array-name [array-size]

*উদাহরণ অ্যারের ডাইমেনশন-এর প্রকারভেদ : একটি অ্যারের ডাইমেনশন এক বা একাধিক হতে পারে। মাত্রা বা ডাইমেশনের ওপর ভিত্তি করে অ্যারে

নিন্মোক্ত দুই ধরনের হতে পারে। যথা

১. একমাত্রিক অ্যারে (One dimensional array)

২. দ্বিমাত্রিক অ্যারো (Two dimensional array)

*একমাত্রিক অ্যারে (One dimensional array) যদি কোনো অ্যারের ডাটাগুলো শুধুমাত্র একটি একক সারি বা কলাম আকারে উপস্থপিত থাকে এবং একটি মাত্র সাবস্ক্রিপ্ট দ্বারা প্রকাশিত হয় তবে সেই অ্যারেকে একমাত্রিক অ্যারো বলা হয়। সি ল্যাংগুয়েজ একমাত্রিক অ্যারো তৈরির নিয়ম হলো। ডেটা_টাইপ vrible_name [আকার]

যেমন, int roll [4]; এটি একটি একমাত্রিক অ্যারে। এখানে int হলো ডাটা টাইপ, roll হলো ভেরিয়েবলের নাম, এবং [4] হলো সাইজ। এই অ্যারের মধ্যে পাঁচটি উপাদান (0-4) রাখা যাবে।

*দ্বিমাত্রিক অ্যারে (Two dimensional array)

যদি কোনো অ্যারের ডাটাগুলো একক সারি এবং কলাম আকারে উপস্থাপিত থাকে এবং দুইটি সাবস্ক্রিপ্ট দ্বারা প্রকাশিত হয় তবে সেই অ্যারেকে দ্বিমাত্রিক অ্যারে বলা হয়। একটি দ্বিমাত্রিক অ্যারে। কারণ এই অ্যারের marks [0][0], marks [0][1], marks [0][2], marks

* ফাংশন (Function)

(প্রোগ্রাম কোনো নির্দিষ্ট কাজ সম্পাদনের জন্য কতকগুলো স্টেটমেন্ট কোনো নামে একটি চলকের মধ্যে রাখা হয় তখন তাকে ফাংশন বলে। ফাংশন চেনার সহজ উপায় হলো ফাংশনের নামের শেষে এক জোড়া প্রথম বন্ধনী () থাকে।

*ফাংশনের প্রয়োজনীয়তা (Importance of Function)
১. কোনো প্রোগ্রামকে ফাংশনের সাহায্যে সংক্ষিপ্ত করা যায়।

২. ব্যবহারকারী প্রয়োজন অনুযায়ী ফাংশন তৈরি করে কাজ করতে পারে।

৩. বড় প্রোগ্রামকে অনেকগুলো ভাগে ভাগ করে প্রত্যেকটি ভাগকে ফাংশন আকারে প্রকাশ করে প্রোগ্রাম রচনা করলে প্রোগ্রামের ভুল সংশোধান করা সহজতর হয়।

৪. প্রোগ্রামিং ডিভাগিং করা অধিক সহজ হয়।

*C প্রোগ্রামে ফাংশনকে দু'ভাগে ভাগ করা হয়। যথা -

১। লাইব্রেরি ফাংশন (Library Function)
২। ব্যবহারকারী কর্তৃক তৈরিকৃত ফাংশন (User defined function)

১.লাইব্রেরি ফাংশন (Laibrary Function)

যে সকল ফাংশন বিশেষ কিছু কার্য সম্পাদনের জন্য C প্রোগ্রামের বিল্ট-ইন আছে তাকে লাইব্রেরি ফাংশন (Library Function) বলে।

*লাইব্রেরি ফাংশন ব্যবহারের নিয়ম

লাইব্রেরি ফাংশনগুলোর ঘোষণা তাদের হেডার (.h) ফাইলে এবং বিস্তারিত বর্ণনা সংশ্লিস্ট লাইব্রেরি (.Lib) ফাইলে দেয়া থাকে। এজন্য সি প্রোগ্রামে কোনো লাইব্রেরি ফাংশন ব্যবহার করলে প্রোগ্রামের শুরুতেই #include ডিরেক্টিভ স্টেটমেন্টের সহায্যে সংশ্লিস্ট হেডার ফাইল সংযুক্ত হয়ে থাকে। প্রোগ্রামে কোনো হেডার ফাইল সংযুক্ত করা হলে কম্পাইলার প্রোগ্রাম কম্পাইল করার সময় সংযুক্ত ফাইলের উপাদানগুলো সংশ্লিস্ট লাইব্রোরি ফাইল থেকে কপি করে। এরূপ সংযোগের ফলে কম্পাইল মনে হয়, যে সংযুক্ত ফাইল যেন সংযোগকারী ফাইলের অংশবিশেষ।

উল্লেখ্য, প্রোগামের শুরুতে #include স্টেটমেন্টের সাহায্যে কোনো হেডার ফাইল সংযুক্ত করা হলে তা ঐ ফাইলে বর্ণিত সকল ফাংশের জন্য কাজ করে। কোনো লাইব্রেরি ফাংশনের হেডার ফাইল এবং ব্যবহারবিধি

ইউজার-ডিফাইন্ড ফাংশন (User Difind Function) সি কম্পাইলার অনেক বিল্ট-ইন/লাইবেরি ফাংশন থাকা সত্ত্বেও প্রোগ্রাম রচনায় সময় প্রয়োজন অনুযায়ী সব রকম ফাংশন পাওয়া যায় না। সেক্ষেত্রে প্রোগ্রামার তার নিজস্ব প্রয়োজন অনুযায়ী যেসকল ফাংশল তৈরি করে প্রোগ্রাম তথা main() ফাংশনে ব্যবহার করেন সেগুলোকে ইউজার-ডিফাইন্ড (User difind) ব্যবহারকারী বর্ণিত ফাংশন বলা হয়।

*ফাংশনের উপাদান

সি প্রোগ্রাম কোনো লাইব্রেরি কিংবা ইউজার ডিফাইন্ড ফাংশন ব্যবহার করতে গেলে সাধারণত নিম্নলিখিত চারটি বিষয় বিবেচনা করতে হবে :

১.ফাংশন বর্ণনা (Function Detinition)

২.ফাংশন কল (Founction Call)

৩.ফাংশন প্রোটোটাইপ (Function Prototype)

ফাংশন রিটার্ন টাইপ ও রিটার্ন স্টেটমেন্ট (Function's Return Type and Return Statement)। নাকে ফাংশনের উপাদান বা অংশ বলা হয়।

*ফাংশন বর্ণনা (Function Detinition)
ফাংশন বর্ণনার মাধ্যমে কম্পাইলারকে জানিয়ে দেয়া হয়, যে এটার কাজ কী হবে এবং কীভাবে করবে। একটি ইউজার-ডিফাইন্ড ফাংশন কতকগুলো স্টেটমেন্ট নিয়ে গঠিত হয়। সামান্য কিছু ব্যতিক্রম ছাড়া ফাংশনের প্রতিটি স্টেটমেন্ট সেমিকোলন দ্বারা শেষ হয়। ইউজার-ডিফাইন্ড ফাংশনের বর্ণনা তার ব্যবহারকারী বা main () ফাংশনের উপরে কিংবা নিচে থাকে কিন্তু ভেতরে নয়। ইউজার ডিফাইন্ড ফাংশন ঘোষণার syntax হলো :

রিটার্ন টাইপ ফাংশনের নাম (আর্গুমেন্ট লিস্ট)
ফাংশন বডি
রিটান স্টেটমেন্ট (রিটার্নের প্রকারের উপর নির্ভর করে)

এখানে Return Type যে কোনো বৈধ ডাটা টাইপ, Function Name ব্যবহারকারী কর্তৃক দেয়া ফাংশনের নাম এবং Argument List ফাংশনে ব্যবহৃত আরগুমেন্টের তালিকা। Function Body তে ফাংশনের বিস্তারিত বর্ণনা থাকে। Function Body কেমন হবে তা ফাংশনের ধরন অর্থাৎ সমস্যার উপর নির্ভর করে। উল্লেখ্য, ফাংশনের প্রথম বন্ধনীর মধ্যে কোনো ভেরিয়েবল ঘোষণা করা হলে তাকে আরগুমেন্ট ভেরিয়েবল বলা হয়।

*রাশিমালা (Expression)
বিভিন্ন রাশির সমন্বিত প্রক্রিয়াকে এক্সপ্রেশন বা রাশিমালা বলে। কোনো ধ্রুবকের সাথে অন্যকোনো ধ্রুবকের কোনো প্রকার গাণিতিক প্রক্রিয়া সম্ভব নয়। যেমন- ৫ ও ৮ দুইটা ধ্রুবক কিন্তু যদি উহাকে গাণিতিক অপারেটর দিয়ে যুক্ত করা হয় তখন উহা রাশিমালাতে (Expression) পরিণত হয়। যেমন- 1+1 (return2); 100-47 (returns 53); 3 * 34 (returns 102; 80/4 (returns 20); (100*3) +56 (returns 356) ইত্যাদি প্রক্রিয়াকে এক্সপ্রেশন বা রাশিমালা বলে।

* কীওয়ার্ড (Keyword)
প্রত্যেক প্রোগ্রামিং ভাষায় কতকগুলো সংরক্ষিত শব্দ আছে। সংরক্ষিত শব্দগুলো প্রোগ্রাম রচনার ক্ষেত্রে। ব্যবহার করা হয়ে থাকে। এই সংরক্ষিত শব্দগুলোকে কীওয়ার্ড বলে। C প্রোগ্রামে ৩২টি সংরক্ষিত শব্দ। আছে। সমস্ত সংরক্ষিত শব্দগুলোকে প্রোগ্রামের ক্ষেত্রে স্টেটমেন্ট বলে। প্রতিটি কীওয়ার্ডের আলাদা অর্থ আছে এবং প্রতিটি কীওয়ার্ড আলাদা আলাদা কাজ করে। সমস্ত কীওয়ার্ড ছোট হাতের অক্ষরে লিখতে হয়।

রাশিমালা তৈরি করার জন্য যে সমস্ত চিহ্ন বা প্রতীক ব্যবহার করা হয় তাদেরকে অপারেটর (Operator) বলে।

*C প্রোগ্রামে অপারেটরকে আট ভাগে ভাগ করা হয়। যেমন

১। গাণিতিক অপারেটর (Arithmetic Operator)

২। যুক্তিমূলক অপারেটর (Logical Operator)

৩। তুলনামূলক অপারেটর (Relational Operator)

৪। অ্যাসাইনমেন্ট অপারেটর (Assignment Operator) ৫। বৃদ্ধি বা হ্রাসকরণ অপারেটর (Increment and Decrement Operator)

৬। শর্তমূলক অপারেটর (Conditional Operator) ৭। বিটওয়াইজ অপারেটর (Bitwise Operator) এবং

৮। বিশেষ অপারেটর (Special Operator)
* কন্ট্রোল স্টেটমেন্টস (Control Statements)
সি লাঙ্গুয়েজে লেখা প্রোগ্রামে স্টেটমেন্টগুলো ধারাবাহিকভাবে সাজানো থাকে যা একের পর এক সিকোয়েন্স অনুযায়ী নির্বাহ হয়। এক্ষেত্রে স্টেটমেন্টগুলো পুনরাবৃত্তি অনুযায়ী নির্বাহের প্রয়োজন হয় না। কিন্তু স্টেটমেন্টগুলো পুনরাবৃত্তি অনুযায়ী নির্বাহের প্রয়োজন হলে কিছু শর্তযুক্ত করা হয়। এগুলোকে কন্ট্রোল স্টেটমেন্ট বলা হয়। স্টেটমেন্ট নির্বাহ নিয়ন্ত্রণের জন্য কন্ট্রোল স্টেটমেন্ট ব্যবহৃত হয়। কন্ট্রোল স্টেটমেন্ট ব্যবহার করে প্রোগ্রাম লেখা হলে প্রোগ্রামের আকার ছোট হয় এবং প্রোগ্রাম নির্বাহের সময় কম লাগে।

*কন্ট্রোল স্টেটমেন্ট-এর শ্রেণিবিভাগ

সি ল্যংগুয়েজে কন্ট্রোল স্টেটমেন্টকে সাধারণত দুই ভাগে ভাগ করে। যেমন

১। কন্ডিশনাল স্টেটমেন্ট (Conditional Statements)

২। লুপ স্টেটমেন্ট (Loop Statements)

১। কন্ডিশনাল স্টেটমেন্ট (Conditional Statments) সি প্রোগ্রামে শর্তসাপেক্ষে কোনো স্টেটমেন্ট সম্পাদনের জন্য কন্ডিশনাল কন্ট্রোল ব্যবহৃত হয়। কন্ডিশনাল কন্ট্রোলে ব্যবহৃত শর্ত সত্য হলে প্রোগ্রামে এক ধরনের ফল পাওয়া যায় আর সত্য না হলে অন্য ধরনের ফল পাওয়া যায়। অন্যতম কন্ডিশনাল স্টেটমেন্টসমূহ হলো :

The Simple if স্টেটমেন্ট

The if else স্টেটমেন্ট

The Nesting of if…else স্টেটমেন্ট

The else if ladder স্টেটমেন্ট

The switch স্টেটমেন্ট ইত্যাদি, , , , , , ,

Level 2

আমি মো আতিক। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 1 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 13 টি টিউন ও 0 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 5 টিউনারকে ফলো করি।

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


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস