একটি C Program এর অঙ্গ-প্রত্যঙ্গ বিশ্লেষণ (Disecting a C Program)

যখন নবম-দশম শ্রেণীতে পড়তাম তখন Biology আমার খুব প্রিয় Subject ছিলো। কারণ হল Biology তে প্রচুর পরিমাণ ছবি আঁকতে হত। তোমাদের মনে আছে একটা ব্যং এর ছবি একে তার বিভিন্ন অঙ্গ-প্রত্যঙ্গ চিহ্নিত করতে হত। ভাবছো এ আমি কোথায় এলাম? এসেছিলাম Programming শিখতে। আর এখানে কিনা Biology পড়ানো হচ্ছে? না! না! এখানে মোটেও Biology পড়ানো হচ্ছে না। Biology তে আমরা যেমন আগে ব্যং এর বিভিন্ন অঙ্গ-প্রত্যঙ্গের সাথে পরিচিত হই তারপর সেগুল সম্পর্কে বিস্তারিত ধারণা নেই, ঠিক সেই ভাবেই আমি আজকে একটি C Program এর বিভিন্ন অঙ্গ-প্রত্যঙ্গের সাথে পরিচয় করিয়ে দিব। তারপর একে একে প্রত্যেকটি সম্পর্কে বিস্তারিত জানবো।

/* Md. Sabbir Rahman
programmingpatshala.wordpress.com */

#include

int subtract(int a, int b){
    if(a>b){
        return a - b;
    }
    else{
        return b - a;
    }
}
// The program starts from the next line
int main(){
    int a, b, k, i = 0, result[50];
    char str[] = "This is your first program!";

    while(scanf("%d %d", &a, &b)){
        if(a==0 && b==0) break;
        result[i] = subtract(a, b);
        i++;
    }

    printf("%s\n", str);
    for(k=0; k<i; k++){
        printf("%d\n", result[k]);
    }
    return 0;
}

উপরের C Program টিতে C এর মোটামুটি সব Basic Topic গুলো দেখানো হয়েছে। এখন এক এক করে সব গুলো Topic এর সংক্ষিপ্ত ধারণা দেওয়ার চেষ্টা করব। অবশ্য এখন সব কিছুই ঝাপসা মনে হবে এবং কঠিনও লাগবে। তবে বিশ্বাস কর জিনিস গুলো মোটেও কঠিন না বরং খুব মজার। যখন তুমি বিস্তারিত জানবে তখন সবই পরিস্কার হয়ে যাবে এবং মজাও পাবে।

১. Header File Inclusion: #include <stdio.h> এই অংশটিকে Header File Include করা বলে। এটি বুঝতে হলে দু’টি জিনিস জানতে হবে, Pre-Processor ও Header File। আমরা এখানে মূলত stdio.h নামে একটা File আমাদের Program এ Include করালাম। stdio মানে হল Standard Input Output। আমরা আমাদের Program এ Input নেওয়ার জন্য ও Output দেওয়ার জন্য দু’টি Function ব্যবহার করব এই Function গুলো কিভাবে কাজ করে তা লিখা আছে stdio.h নামের File টিতে। আমি Pre-Processor ও Header File নিয়ে বিস্তারিত আলোচনা করবো না কারণ তা Basic Programming এর বাইরে চলে যায়।

২. Variable: ছোট বেলার বীজগনিতের কথা মনে আছে? x=1; y=2; x+y=? এখানে x, y এর মান দেওয়া আছে x+y বের করতে হবে। এই কাজটা আমরা যখন Programming এ করবো তখন x এবং y এর মান রাখার জন্য আমাদের দরকার পরবে Variable। এখানে a, b, i, k সবই Variable। result[50] ও এক ধরণের Variable, একে Array বলে। আমরা কি কি Variable Use করবো তা Declare করে বলে দিতে হয়।

৩. Data Type: আমরা যখন Variable এ কোন কিছু রাখি তখন আমাদের বলে দিতে হয় যে আমরা কি রাখবো। যেমন আমরা a, b, i, k তে পূর্ণ সংখ্যা রাখবো বলে Declare করার সময় আমরা এর আগে int লিখে দিয়েছি। এই int ই হল Data Type। অর্থাৎ আমরা যে Data রাখবো তার Type কি তা আমাদের বলে দিতে হবে।

৪. Operator: যে কোন Operation Perform করে তাকে Operator বলে। এই Program এ আমরা বেশ কিছু Operator ব্যবহার করেছি। যেমনঃ Subtraction Operation Perform করার জন্য আমরা – (minus) Operator ব্যবহার করেছি; a, b এর চাইতে বড় কিনা জানার জন্য > (greater than) Operator ব্যবহার করেছি ইত্যাদি।

৫. Input & Output: Computer এর সাধারণ কাজ হল কোন কিছু Input নেওয়া, Process করা ও Output দেওয়া। Programming এর মাধ্যমে আমরা বিভিন্ন Data Process করে থাকি এর জন্য আমাদের Input নিতে হয় ও Output দিতে হয়। ওপরের Program এ scanf function টির মাধ্যমে আমরা Input নিয়েছি এবং printf function টির মাধ্যমে Output দেখাচ্ছি।

. if… else…: আমাদের subtract function (Function কি একটু পরেই বলছি) এর ভিতর if… else… Type এর কিছু একটা লিখেছি। if… else… এর মাধ্যমে আমাদের Program বিভিন্ন Logic এর উপর ভিত্তি করে নিজে নিজে Decision নিতে পারবে। এক্ষেত্রে if(a>b) দিয়ে আমরা দেখতে চাচ্ছি a কি b এর চাইতে বড় কিনা। বড় হলে আমরা a থেকে b বিয়োগ করবো আর যদি বড় না হয় তাহলে b থেকে a বিয়োগ করবো।

৭. Looping: Looping হল ঘুরপাক খাওয়ার মত একটা ব্যপার। Programming এ আমারা কোন কাজ বারবার Repeat করতে চাইলে Loop ব্যবহার করবো। এই Program টিতে আমরা দু’টি Loop ব্যবহার করেছি। একটি হল while loop এটি যতক্ষণ না a এবং b উভয়ই 0 (শুন্য) হবে ততক্ষণ পর্যন্ত input নিতে থাকবে। অপরটি হল for loop, এটি k এর মান 0 থেকে শুরু করে যতক্ষণ k, i এর থেকে ছোট থাকবে ততক্ষণ চলবে।

৮. Array: আমরা জানি কোন কিছুর মান রাখার জন্য Variable ব্যবহার করতে হয়। যদি একি রকম অনেক গুলো মান রাখতে হয় তখন অনেক গুলো Variable না নিয়ে আমরা একটা Array নিয়ে নিতে পারি। যা কিনা একি রকম মান গুলো কে সারি বদ্ধ ভাবে রাখবে। এখানে result একটি Array যা কিনা সকল বিয়োগফল রাখছে।

৯. Function: Function হল কিছু Instruction এর Set। অর্থাৎ কিছু কাজ কিভাবে করতে হবে তা বলে দেওয়া হয়েছে, এখন আমরা যখন চাই তখন সেই কাজ গুলো করিয়ে নিতে পারি। এই Program টিতে ৪টি Function ব্যবহার করা হয়েছে। main() হল Boss! একে ছাড়া C Program Impossible। প্রতিটা C Program main() function থেকে শুরু হয় যেখানে কিনা পরবর্তী Instruction সমূহ থাকে। scanf ও printf function দু’টি যথাক্রমে input নেওয়া ও output দেওয়ার কাজ করে। এ দু’টি হল Built-in Function। এগুলো কিভাবে কাজ করে তা stdio.h নামের File এই লেখা আছে। subtract() function টি হল User Defined Function। এটি যেহেতু আমরা লিখেছি তাই এটি কিভাবে কাজ করে সেটিও আমাদেরই বলে দিতে হবে। সেই কাজ টাই করা হয়ে Function Definition দেওয়ার মাধ্যমে ৬-১৩ নং Line এ।

১০. String: সংখ্যা এর পাশাপাশি আমাদের কোন শব্দ বা বাক্য নিয়ে কাজ করতে হতে পারে। সেক্ষেত্রে আমরা String ব্যবহার করবো।

১১. Comment: কোন Code কি কাজ করে বুঝানোর জন্য আমরা Comment ব্যবহার করি। Comment করা প্রত্যেকটা Line Compiler Ignore করে। Comment সাধারণত দু’ধরণের হয়ে থাকে। Block ও Inline। প্রথম দুই Line হল Block Comment। Block Comment /* … */ দিয়ে লিখতে হয়। এখানে … এর জায়গায় আমাদের Comment টা লিখতে হবে। অনেক গুলো Line একবারে Comment করতে চাইলে Block Comment ব্যবহার করতে হয়। Inline Comment // দিয়ে লিখতে হয়। উপরের Program এ ১৪ নং Line টি হল Inline Comment। Comment এর আরেকটি জনপ্রিয় ব্যবহার হল Code Disable করা। অর্থাৎ আমরা যদি কোন Line বা কিছু Line বাদ দিতে চাই তাহলে ঐ Line গুলোকে আমরা Comment করে দিতে পারি। এতে প্রয়োজন পরলে Uncomment করে আমরা Line গুলোকে আবার ফিরিয়ে আনতে পারি।

এবার বলি আমাদের এই Program টা কি করে। এটি Key Board থেকে দু’টি করে সংখ্যা Input নিবে ততক্ষণ পর্যন্ত যতক্ষণ না দু’টি 0 (শুন্য) Input দেওয়া হয়। Input নেওয়ার পর তাদের বিয়োগফল result নামের Array তে রাখবে এক এক করে। বিয়োগফল বের করার জন্য এটি একটি Function ব্যবহার করবে যার নাম subtract। Function টি সংখ্যা দু’টিকে এমন ভাবে বিয়োগ করবে যাতে কোন ঋণাত্মক সংখ্যা না আসে তাই if… else… ব্যবহার করে দু’টি সংখ্যার মধ্যে কোনটি বড় তা আগে বের করে নিচ্ছে কারণ বড় সংখ্যা থেকে ছোট সংখ্যা বিয়োগ করলে কখনই বিয়োগফল ঋণাত্মক হয় না। Input নেওয়া শেষ করে বিয়োগফল গুলো দেখানো হচ্ছে।

কি মাথা ঘুরাচ্ছে? সব কিছু বুঝে উঠতে পারো নি? কোন সমস্যা নেই, সাধারণ একটা ধারণা নিতে পারলেই হবে। উপরে যেসব Topic এর সারাংশ আলোচনা করলাম সেগুলো বিস্তারিত জানার পর উপরের Program টা আবার দেখার জন্য আবেদন থাকলো। তখন বলবে ধুর এটা কোন Program হল নাকি? এক্কেবারে Easy জিনিস।

Advertisements
Tagged with: ,
Posted in বেসিক প্রোগ্রামিং

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: