How A C Program Works

How A C Program Works

সি প্রোগ্রামিং এর হাতেখড়ির আজকের পর্বে আমরা Hello World program টি কিভাবে কাজ করছে সেটা নিয়ে বিস্তারিত জানবো।

Table of contents

// c program to print hello world in the terminal
#include <stdio.h>

int main(){
  printf("Hello World!");

  return 0;
}

উপরোক্ত কোড টি কিভাবে কাজ করছে সেটি আমি লাইন by লাইন discuss করবো। আমরা যেটা এখন মনে রাখতে পারি সেটা হলো একটি প্রোগ্রাম উপর থেকে নিচ বরাবর লাইন by লাইন এক্সিকিউট হয়। বিস্তারিত এই সিরিজ এ জানতে পারবেন।

Analysis:

প্রথমেই আসি ১ নং লাইন এ। এখানে

// c program to print hello world in the

উক্ত লাইন টি রয়েছে। এটি হলো মূলত সিঙ্গেল লাইন কমেন্ট। সাধারণত একটি প্রোগ্রাম লিখার পূর্বে আমরা প্রথম লাইন এ সেই প্রোগ্রাম টি কি নিয়ে সেটার একটা টাইটেল দিয়ে থাকি বা ছোটখাটো একটা summary। যদিও এটি mandatory নয়। তবে এটি একটি good practice। যেহেতু আমাদের প্রোগ্রাম টি hello World print করার প্রোগ্রাম তাই আমি এখানে উক্ত sentence টি লিখেছি।

এবার আসি দ্বিতীয় লাইন এ। এখানে

#include <stdio.h>

লাইন টি দেওয়া আছে। এটি মূলত একটি header ফাইল। আমরা যেকোনো প্রোগ্রাম ই লিখিনা কেনো আমাদের সবসময় ইনপুট আউটপুট নিয়ে কাজ করতে হয়। আর এই header ফাইল টি মূলত এই কারণেই এখানে include করা হয়েছে। কিভাবে ইনপুট আউটপুট ফাংশন গুলো কাজ করে সেগুলো নিয়ে আমাদের চিন্তা করতে হয় না। এই related সব ধরনের ইমপ্লিমেন্টেশন উক্ত header ফাইল এ বর্ণনা করা আছে।এখানে stdio এর ফুল meaning হলো 'Standard Input Output'. নাম দেখেই বুঝা যাচ্ছে যে এটি স্ট্যান্ডার্ড ইনপুট আউটপুট নিয়ে কাজ করে।

এবার যদি ৩ এবং ৬ নম্বর লাইন গুলোর দিকে তাকাই দেখবো যে সেখানে কিছুই লেখা নেই। এর একটাই কারণ আমরা যদি সব কোড একসাথে লিখি বা এক লাইন এ লিখি তাহলে সেটা রিডেবল থাকে না। ধরি আমাদের কোড টি অন্য কোনো প্রোগ্রামার দেখছে তাহলে সে কিন্তু উক্ত কোড দেখে কিছুই বুজবে না। কারণ সেটি পড়া কষ্টসাধ্য। এতে করে আপনার উপর যেমন একটা bad effect পড়বে তেমনি আপনিও পরবর্তীতে আপনার কোড পরে কিছুই বুঝতে পারবেন না আপনি কি লিখেছিলেন। মূলত এইসব কারণেই কোড এর কোনো একটা পার্টিকুলার অংশ শেষ হওয়ার পর এক লাইন gap দেওয়া হয়।

এবার আসি ৪ নং লাইন এ। এখানে int main() লিখা হয়েছে। এটিই হয়েছে সি প্রোগ্রামিং এর সবচেয়ে গুরুত্ব পূর্ণ লাইন। কেননা সি প্রোগ্রাম এক্সিকিউট হওয়া শুরু করে উক্ত লাইন থেকেই। এখানে লক্ষ করুন main লিখার পর () দেওয়া হয়েছে। এগুলোকে প্রোগ্রামিং এর ভাষায় বলা হয় parenthesis। এখন আপনি যখনই কোনো নামের পাশে এটা দেখবেন তাহলে বুজবেন যে সেটি একটি ফাংশন। এই ক্ষেত্রে main হচ্ছে একটি ফাংশন। অর্থাৎ আমাদের প্রোগ্রাম টি main function থেকে এক্সিকিউট হওয়া শুরু করে। তাহলে উপরের লাইন গুলোর কি হবে? সেগুলো আমাদের প্রোগ্রাম যখন কম্পাইল হবে তখন আমাদের ইনস্টল করা কম্পাইলার সেই লাইন গুলো একবার দেখে যাবে। মনে রাখবেন যে দেখে যাওয়া মানে এক্সিকিউট করছে এমনটা না। সে just কোড টা পড়েছে কোনো রকমের কাজ কিন্তু করেনি।

int main(){
  printf("Hello World!");

  return 0;
}

এখন main() function এর সাথে আমাদের ২ টা curly bracs ব্যাবহার করতে হয়। এবং এই curly bracs এর ভিতরেই আমাদের মূল প্রোগ্রাম লিখতে হয়। এই যে ভিতরে আমরা লিখছি আমাদের কোড গুলো এই area টাকে বলা হয় ফাংশন body।

এই ক্ষেত্রে আমাদের ফাংশন body এর মধ্যে ২ টা লাইন আছে। একটা হলো

printf("Hello World!");

এবং অন্যটি

return 0;

এখন ৫ নং লাইন এ printf function ব্যাবহার করা হয়েছে। একটু আগেই আমি বলেছিলাম যে কোনো নামের পাশে যদি () দেখেন তাহলে সেটা হচ্ছে একটা ফাংশন। এই printf function এর ভিতরে লিখা আছে Hello World! । এখন যেই প্রশ্ন টা আমাদের মনে জাগবে যে এই printf function এর কাজ কি? আমরা এইটুকু জানি যে main function থেকে আমাদের প্রোগ্রাম কাজ করা শুরু করে, তাহলে printf function কি করে। একদম সিম্পল, printf function এর কাজ হচ্ছে টার্মিনাল এ কোনোকিছু প্রিন্ট করা। এখন printf function এর ভিতর যাই লিখা থাকবে সেটিই আমাদের টার্মিনাল এ প্রিন্ট হবে। আর সবার শেষ এ দেখেন একটা সেমিকোলন দেওয়া আছে। এটি ব্যাবহার করা বাধ্যতামূলক। এই ধারা একটি লাইন এর শেষ টা বুঝায়। অর্থাৎ ৫ নং লাইন টি শেষ হয়েছে semicolon ব্যাবহার এর মাধ্যমে। এই যে একটি লাইন আমরা সেমিকোলন দিয়ে শেষ করলাম এটাকে বলা হয় স্টেটমেন্ট। এটি নিয়ে বিস্তারিত পরে আলোচনা করা হবে। এখন আসুন এই যে আমরা printf use করলাম আবার এটার কাজ কোনো কিছু প্রিন্ট করা। এই যে কাজ গুলো হচ্ছে সেইটার ইমপ্লিমেন্টেশন কিন্তু আমরা লিখি নাই। তাহলে এটা কিভাবে কাজ করছে? এটি দ্বিতীয় লাইন এ include করা header ফাইল থেকে পাচ্ছে। যেহেতু আমরা সবসময় ইনপুট আউটপুট নিয়ে কাজ করি সেজন্য সবসময় আমাদের উক্ত header file উপরে যেভাবে দেখানো হয়েছে সেভাবেই ইনক্লুড করতে হবে।

এবার আসি সর্বশেষ লাইন এ। এখানে লিখা আছে

return 0

আমরা যদি প্রোগ্রাম থেকে কোনোকিছু return না করি তাহলে আমাদেরকে উক্ত লাইন টি লিখতে হয়। Return type বিভিন্ন রকম হতে পারে। আপাতত সেইদিকে যাচ্ছি না। যখন আমরা ফাংশন নিয়ে আলোচনা করবো তখন আমরা এটা নিয়ে বিস্তারিত জানবো।

আজকের পর্ব এই পর্যন্তই থাকবে। পরবর্তী পর্বে আমরা সি এর ডাটা টাইপ নিয়ে আলোচনা করবো, ধন্যবাদ।