কম্পিউটার টিউটোরিয়াল

সি প্রোগ্রামিং-এ ফাংশনের স্কোপ নিয়ম (Scope Rules)

স্কোপ (Scope) কী?

স্কোপ নির্ধারণ করে কোন ভেরিয়েবল কোন ব্লক/ফাংশনে দৃশ্যমান (visible) এবং অ্যাক্সেসযোগ্য।

লোকাল স্কোপ (Local Scope)

  • ব্লক/ফাংশনের ভিতরে ডিক্লেয়ার করা ভেরিয়েবল।
  • শুধু সেই ব্লক/ফাংশনের ভিতরেই দৃশ্যমান।
  • ফাংশন শেষ হলে নষ্ট হয়।
  • অন্য ফাংশন থেকে অ্যাক্সেস করা যায় না।

গ্লোবাল স্কোপ (Global Scope)

  • সকল ফাংশনের বাইরে ডিক্লেয়ার করা ভেরিয়েবল।
  • প্রোগ্রামের যেকোনো জায়গা থেকে দৃশ্যমান ও অ্যাক্সেসযোগ্য।
  • প্রোগ্রাম শুরু হলে তৈরি, প্রোগ্রাম শেষ হলে নষ্ট হয়।

উদাহরণ: গ্লোবাল vs লোকাল

#include <stdio.h>

int r = 50; // গ্লোবাল

void fun();

int main() {
    int p = 30; // লোকাল (main-এ)
    printf("p = %d, r = %d\n", p, r);
    fun();
    return 0;
}

void fun() {
    // p এখানে অ্যাক্সেসযোগ্য নয়
    printf("r = %d\n", r); // গ্লোবাল r অ্যাক্সেসযোগ্য
}

আউটপুট

p = 30, r = 50
r = 50

ফাংশন-স্কোপ উদাহরণ: স্ব্যাপ (Swap)

কল বাই ভ্যালু (লোকাল কপি) — কাজ করে না

#include <stdio.h>

void swap(int a, int b) {
    int c = a; a = b; b = c; // লোকাল কপি পরিবর্তিত হয়
}

int main() {
    int a = 10, b = 20;
    printf("Before: a=%d, b=%d\n", a, b);
    swap(a, b);
    printf("After:  a=%d, b=%d\n", a, b); // অপরিবর্তিত
    return 0;
}

আউটপুট

Before: a=10, b=20
After:  a=10, b=20

কল বাই রেফারেন্স (গ্লোবাল বা পয়েন্টার) — কাজ করে

#include <stdio.h>

int a = 10, b = 20; // গ্লোবাল

void swap() {
    int c = a; a = b; b = c; // গ্লোবাল সরাসরি মডিফাই
}

int main() {
    printf("Before: a=%d, b=%d\n", a, b);
    swap();
    printf("After:  a=%d, b=%d\n", a, b);
    return 0;
}

আউটপুট

Before: a=10, b=20
After:  a=20, b=10

নেস্টেড ব্লক স্কোপ

int i = 1;
{
    int i = 2; // আউটারের i মাস্ক হয়
    printf("%d ", i); // 2
}
printf("%d", i); // 1

সারসংক্ষেপ

  • লোকাল ভেরিয়েবল ফাংশন/ব্লকে সীমাবদ্ধ।
  • গ্লোবাল ভেরিয়েবল সব জায়গা থেকে অ্যাক্সেসযোগ্য।
  • একই নামের লোকাল ভেরিয়েবল গ্লোবালকে মাস্ক (mask) করে।
  • সুন্দর কোডের জন্য গ্লোবাল ভেরিয়েবল কম ব্যবহার করুন।
  1. সি প্রোগ্রামিং-এ ফাংশনের বিভাগ (Categories of Functions)

  2. C++ প্রোগ্রামিং-এর অ্যাপ্লিকেশন কী কী?

  3. C#-এ ক্লাসের মেম্বার ভেরিয়েবল কী?

  4. পাইথন ভেরিয়েবল স্কোপিং নিয়ম: LEGB রুল