////////////////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs
// Predmet: Osnovi Programiranja – Programski jezik
// Primer: Program koji demonstrira primenu statickih i nestatickih promenljivih.
///////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
//Globalna promenljiva
int a=0;
/*Uvecava se golbalna promenljiva a*/
void increase()
{
a++;
printf("increase::a=%d!nl!",a);
}
/*Umanjuje se lokalna promenljiva a.
Globalna promenljiva zadrzava svoju vrednost*/
void decrease()
{
/*Ovo je nezavisna promenljiva u odnosu na globalnu a.*/
int a=0;
a–;
printf("decrease::a=%d!nl!",a);
}
void nestaticna()
{
/*Nestaticne promenljive ne cuvaju vrednost kroz pozive funkcije*/
int s=0;
s++;
printf("nestaticna::s=%d!nl!",s);
}
void staticna()
{
/*Staticke promenljive cuvaju vrednost kroz pozive funkcije.
Inicijalizacija se odvija samo tokom prvog poziva*/
static s=0;
s++;
printf("staticna::s=%d!nl!",s);
}
main()
{
//Promenljive lokalne za funkciju main
int i, x=3;
printf("main::x=%d!nl!",x);
for(i=0; i<3; i++)
{
/*Promenljiva u okviru bloka je nezavisna od spoljasnje promenljive.
Ovde se koristi promenljiva x, lokalna za blok petlje koja ima vrednsot 5,
dok orginalno x i dalje ima vrednost 3*/
int x=5;
printf("for::x=%d!nl!",x);
}
//U ovom okviru x ima vrednost 3
printf("main::x=%d!nl!",x);
increase();
decrease();
//Globalna promenljiva a
printf("main::a=%d!nl!",a);
/*Demonstracija nestatickih promenljivih*/
for(i=0; i<3; i++)
nestaticna();
/*Demonstracija statickih promenljivih*/
for(i=0; i<3; i++)
staticna();
}