C Programming Language শিখুন (পার্ট -১৮) – Scope

সবাইকে সালাম ও শুভেচ্ছা। আশা করি সবাই ভালো আছেন। অনেক আগে শুরু করা C Programming এর উপর টিউটোরিয়াল গুলো অনেক দূর এগিয়ে নিয়ে গেলেও শেষ করা হয়ে উঠেনি বিভিন্ন কারনে। তার জন্য নিশ্চই আমার উপর ক্ষেপে আছেন অনেকেই। অলসতা, ব্যস্ততা আর ক্লাসের কারনেই যত গোলমাল হয়েছে। সবাই আমাকে তাই ক্ষমা করে দিবেন। এবার আশা করি একটানা আরো কিছু টিউটোরিয়াল লিখতে পাবর। সবার কাছে সেই দোয়া চেয়ে আবারও শুরু করছি। আজ C Programming এর ছোট একটা Basic Topics - Scope নিয়ে কিছু লিখব। কেউ যদি আমার এত দিনের Gap এর কারনে পূর্বের সব কিছু ভুলে গিয়ে থাকনে তাহলে পিছন থেকে একটু ঘুরে আসতে পারেন।

Scope কি?

একটি প্রোগ্রামের Identifier গুলো কোথায় ব্যবহার করা হবে কোথায় বা কোন অংশে তাদের ক্ষমতা থাকবে তাই হচ্ছে Scope। Scope এর বাংলা হচ্ছে সুযোগ। আমরা প্রোগ্রামে যে সকল Variable বা চলক গুলো ব্যবহার করি তা প্রোগ্রামের একটি নির্দিষ্ট অঞ্ছলেই ব্যবহার করা যায়।  অন্য যাগায় তারা নিষ্কিয় থাকে।

যেমন একটি Variable বা চলক তারা  declare বা ঘোষনা করার আগে ব্যবহার করা যায় না। আবার প্রোগ্রামের একটি ফাংশান বা ব্লকে তা ডিক্লেয়ার করলে তা অন্য ব্লকে ব্যবহার করা যায় না। সুতরাং বলা যায় যে Scope শুরু হয় যখন কোন Variable যদি declare করা হয় তখন।

Scope এর একটা উদাহরন দেখিঃ

#include<stdio.h>
int x=4;  //Gobal Variable.
int main(void)
{
int x=8;  //Inside Main function Variable.
{
int x=12; //Block variable or function variable.
printf("Block x: %d \n",x);
}
printf("Inside Main function x: %d \n",x);
printf("Global x: %d \n",::x);
return 0 ;
}

ফলাফলঃ

Block x: 12;
Inside Main function x: 8
Global x:

এখানে প্রথমে Main function বা প্রধান ফাংশানের আগে x=4; ধরা হয়েছে। যা হচ্ছে গ্লোবাল বা সার্বোজনীন Variable। এটা যেকোন যায়গায় ব্যবহার করা যাবে।

তার পর Main function বা প্রধান ফাংশানের পরে কিন্তু ব্লকের আগে আরেকটি x Variable ব্যবহার করা হয়েছে। যা প্রধান ফাংশানের পরে যে কোন যাগায় ব্যবহার করা যাবে।

একটি ব্লগে আবার ও আরেকটি x Variable ডিক্লেয়ার করা হয়েছে। যা শুধু মাত্র ঐ কোড ব্লকেই কাজ করবে। ঐ কোড ব্লকের পর আর কাজ করবে না।

বুঝার সুবিধার জন্য এখানে একটি মাত্র Variable ব্যবহার করা হয়েছে। সব যায়গায়ই Variable হিসেবে x নেওয়া হয়েছে শুধু মাত্র এর মান ভিন্ন ধরা হয়েছে।

Global x এর মান ধরা হয়েছে 4, Main function এর ভিতরের x এর মান ধরা হয়েছে 8 এবং Block এর ভিতরের x এর মান ধরা হয়েছে 12প্রোগাম টি রান করালে দেখা যায় যে একটি মাত্র চলক ব্যবহার করা সত্যেও বিভিন্ন যাগায় বিভিন্ন মান প্রিন্ট করে।

যদি অন্য আরো Variable করা হয় তাহলে  Global Variable এর একসেস পেতে ঐ Variable এর আগে দুটি কোলন(::) দিতে হয়। যা উপরের প্রোগ্রামের মধ্যে নিচের লাইনের মধ্যে ব্যবহার করা হয়েছে

printf("Global x: %d \n",::x);

কিন্তু একই নামের অন্য কোন Variable ব্যবহার না করলে সাধারন নিয়মেই Global Variable ব্যবহার করা যায়।

আর এ ক্ষেত্রে  precedence বা অগ্রাধিকার হচ্ছে আগে ব্লকে ব্যবহৃত Variable এর। তার পর Main function এর ভিতরের Variable এর। এবং শেষে Global Variable এর।

যারা CSE এর Student তাদের জন্যঃ Scope in C Programming Language

ধন্যবাদ সবাইকে। আবার ও প্রোগ্রামিং টিউন নিয়ে আসবো, সেই কামনায় আল্লাহ হাফেজ।

Level 0

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

পৃথিবীতে অল্পকয়েক দিনের জন্য অনেকেই আসে, হেঁটে খেলে চলে যায়। এর মধ্যে অল্প কয়েক জনই পায়ের চাপ রেখে যায়।ওদের একজন হতে ইচ্ছে করে। প্রযুক্তির আরেকটি সেরা ব্লগ টেকটুইটস। আপনাদের স্বাগতম, যেখানে প্রতিটি বন্ধুর অংশ গ্রহনে গড়ে উঠেছে একটি পরিবার। আপনাদের পছন্দ হবে আশা করি। ফেসবুকে আমি - ?জাকির!


টিউনস


আরও টিউনস


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


টিউমেন্টস

চমৎকার একটা জিনিস আমার খুব প্রয়োজন ছিন । শেয়ার করার জন্য আপনাকে ধন্যবাদ……………জাকির ভাই

১০ বছর পর আবার পর্ব শুরু করলেন !!!!!!!!!

    জ্বি, এর পরে আবার ২০ বছর পর শুরু করব।

হু। তারমানে স্পেসিফাই করার সময় :: দিলে গ্লোবাল ভেরিয়েবল প্রিন্ট করবে, আর নিজ নিজ স্ট্রিং এর ভেরিয়েবল ওই ফাংশনের অধীনে কাজ করবে?

return0 হয়ে গেছে। ঠিক কইরা দেন।

২০ বছর ওয়েট করবার পারমু না। নেক্সট টিউনের লিকন দেন 😐

    জ্বি।
    করলাম।
    আচ্ছা ২০ বছর আর ওয়েট করতে হবে না। একদিন ওয়েট করলেই হবে।

    জাকির ভাই কন কি? গ্লোবাল ভেরিয়েবল স্পেসিফাই করতে হলে ডাবল কোলোন (::) দিতে হবে। সেমি কোলোন (;;) দিলে তো স্টেটমেন্ট ক্লোজ হয়ে যাবে, কম্পাইলার এরর দেখাবে 🙄

    তাই হবে, আমি সেমি কোলন আর কোলন এর মধ্যে গোলমাল পাকাইছি। 😛

ভাল লাগল । ধন্যবাদ

টেকটিউনসে সিনটেক্সট হাইলাইটার যুক্ত হয়েছে। [ code language=”{language name}”]…[/code] (language name=php/css/js/html etc.) এর মধ্যে কোড লেখলেই হবে ভিজুয়িল বা এডিটর যেকোন মুডে। কোড escape এর দরকার নেই। শুধু মাত্র [ code language=”{language name}”]…[/code] এ লেখলেই হবে। কোড ব্লকে ডাবল ক্লিক করে কোড কপি করা যাবে। ধন্যবাদ।

[ code] – এখানে ‘[‘ এর পর ‘স্পেস হবে না’ কোড পার্স করবে বলে স্পেস দেওয়া হয়েছে

জাকির ভাই আমি AIUB তে CSSE তে পরি। আমার c programing er jonno ekta project joma dite hoibo..apni ki amak kisu project er nam bolte pare ja dara ami upokrito hobo… r <Dictonary> ki C Programing shikhe make kora jay????

Level 0

জাকির ভাই আমি C++ প্রগ্রামিং ল্যঙ্গুয়েজটা শিখতে চাই । প্লিজ কোথায় শিখবো জানালে খুবই কৃতজ্ঞ হব ।

কাজে লাগবে।