Локалне променљиве методе

Променљиве декларисане унутар једног метода су локалне променљиве и не могу се видети и користити у телу неког другог метода. Свака метода има свој скуп локалних променљивих. Променљиве декларисане унутар једне методе потпуно су независне од променљивих које су декларисане унутар других метода, чак иако имају иста имена.

Локалној променљивој се може доделити почетна вредност приликом декларације. Све док се не додели почетна вредност променљива је неиницијализована.

Слика 9.18. Локалне променљиве

Опсег важења променљиве зависи од места увођења - декларације променљиве. Заграде које дефинишу тело метода истовремено означавају и опсег важења свих променљивих декларисаних у том методу. Локалне променљиве могу се декларисати било где унутар метода, све док су декларисане пре њиховог коришћења.

Пример 1. Написати програм који користећи функције рачуна максимум и минимум три дата броја.

Решење:

Правимо форму облика:
  1. label1 - преименоваћемо у x, label2 - преименоваћемо у y, label3 - преименоваћемо у z
  2. textBox1 - у ово поље корисник уноси цео број
  3. textBox2 - у ово поље корисник уноси цео број
  4. textBox3 - у ово поље корисник уноси цео број
  5. button1 - преименујемо дугме у Nadji maksimum i minimum
  6. label4 - овде ћемо исписати резултат рада програма
Слика 9.19. Изглед форме пре преименовања у примеру 1

Двокликом на дугме Nadji maksimum i minimum отвара нам се прозор у коме пишемо код за наш програм. Унутар класе Form1 пишемо код за функције које рачунају максимум и минимум, а унутар button1_Click пишемо код програма у коме ћемо позивати наше функције.

Слика 9.20. Изглед форме након преименовања у примеру 1

Унутар главног програма постојаће две функције - функција maksimum и функција minimum. Обе функције у свом коду имају локалне променљиве које имају иста имена. У обе функције локалне променљиве имају почетну вредност - иницијализовали смо их. Као и раније, функције дефинишемо у оквиру класе Form1, а програм који треба да се изврши везујемо за дугме (button1).

public partial class Form1 : Form
{
    public Form1()
    {
       InitializeComponent();
    }

    //Definišemo funkciju maksimum
    int maksimum(int x, int y, int z)	
    {
	//Lokalna promenljiva funkcije maksimum
        int m = x;
	//Ispitujemo koja vrednost uzima maksimum
        if (m < y)
            m = y;
        if (m < z)
            m = z;
        //Vraćamo odgovarajuću vrednost
        return m;
    }

    //Definišemo funkciju minimum
    int minimum(int x, int y, int z)
    {
	//Lokalna promenljiva funkcije maksimum
        int m = x;
	//Ispitujemo koja vrednost uzima maksimum
        if (m > y)
            m = y;
        if (m > z)
            m = z;
	//Vraćamo odgovarajuću vrednost
        return m;
    }
    private void button1_Click(object sender, EventArgs e)
    {
	//Deklaracija promenljivih
        int x, y, z;
	int max, min;
	//Proveravamo da li su textBox-ovi prazni. Ako nisu, računamo maksimum i minimum
        if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "")
        {
	    //Učitavamo vrednosti promenljivih
            x = int.Parse(textBox1.Text);
            y = int.Parse(textBox2.Text);
            z = int.Parse(textBox3.Text);
	    //Poziv funkcije maksimum
	    max = maksimum(x, y, z);
	    //Poziv funkcije minimum
            min = minimum(x, y, z);
	    //Ispis rezultata
            label4.Text = "Maksimum tri uneta broja je " + max + ", a minimum je " + min;
        }
        else
	    //Ako je neki od textBox-ova prazan ispisujemo poruku
            label4.Text = "Uneti brojeve!";
          
     }      
}

Сада покренимо програм. Уколико изоставимо попуњавање једног, два или свих поља, резултат програма је приказан на слици 9.21, а уколико бисмо унели све три вредности резултат рада програма биће као на слици 9.22.

Слика 9.21. Резултат рада програма када нису попуњена сва поља Слика 9.22. Резултат рада програма за исправан унос

За разлику од локалних променљивих, глобалне променљиве се декларишу у оквиру класе Form1 и видљиве су свуда. Оне се могу користити унутар свих метода које се налазе у оквиру класе, као и унутар главног програма. Међутим, уколико неку глобалну променљиву локално дефинишемо и доделимо јој другу вредност, биће видљива само та локална променљива. Размотримо следећи пример.

Пример 2. Написати програм који у једној лабели исписује унапред задату вредност глобалне променљиве, а у другој лабели исписује учитану вредност локалне променљиве.

Решење:

Овде ћемо имати две променљиве истог имена - једну глобалну и једну локалну. Глобалну променљиву ћемо иницијализовати и њена вредност ће бити једнака 1. Локалној променљивој доделићемо вредност из textBox1.

Правимо форму облика:
  1. textBox1 - у ово поље корисник уноси цео број
  2. button1 - преименујемо дугме у Ispisi
  3. label1 - овде ћемо исписати вредност глобалне променљиве
  4. label2 - овде ћемо исписати вредност локалне променљиве која је глобално дефинисана
Слика 9.23. Изглед форме пре преименовања у примеру 2

Двокликом на дугме Ispisi отвара нам се прозор у коме пишемо код за наш програм.

Слика 9.24. Изглед форме након преименовања у примеру 2


public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    //Inicijalizacija globalne promenljive x
    int x = 1;
    //Funkcija koju vezujemo za pritisak na dugme button1, glavni program
    private void button1_Click(object sender, EventArgs e)
    { 
	//U prvoj labeli ispisujemo vrednost globalne promenljive
        label1.Text = "Globalna promenljiva x pre davanja vrednosti lokalnoj promenljivoj: ";
	//U drugoj labeli ispisujemo vrednost lokalne promenljive
        label2.Text = "Vrednost lokalne promenljive x koja je globalno definisana: ";
	//Vrednost globalne promenljive
        label1.Text = label1.Text + x;
	//Učitavanje vrednosti x iz textBox1
        x = int.Parse(textBox1.Text);
	//Ispisivanje vrednosti x nakon dodeljivanja vrednosti lokalnoj promenljivoj
        label2.Text = label2.Text + x;
    }
}
Сада покренимо програм. Резултат рада програма је следећи:

Слика 9.25. Резултат рада програма