Paradygmaty programowania wyk 3

background image

Paradygmaty

Paradygmaty

programowania

programowania

Wykład 3 – Zmienne

background image

Pamięć

Pamięć

Pamięć – kolekcja komórek, z których każda posiada:

unikalny adres

stan

zaalokowana
niezalokowana

7

‘A’

?

1024

1040

1048

niezalokowana

zawartość

wartość przechowywalna
niezdefiniowana

?

Wartość przechowywalna – wartość, która może być

przechowywana w pojedynczej komórce pamięci

background image

Zmienne

Zmienne

Zmienna – kontener dla wartości, która może być

sprawdzany i modyfikowany dowolną ilość razy

zmienne

zmienne

proste

złożone

background image

Zmienne proste

Zmienne proste

Zmienna prosta – zmienna, która może zawierać

wartość przechowywalną. Każda zmienna prosta zajmuje

jedną komórkę pamięci

int funkcja()

int funkcja()
{

int x;
x = 5;
x = x+1;
return x;

}

?

6

5

background image

Zmienne złożone

Zmienne złożone

Zmienna złożona – zmienna typu złożonego, zajmująca

kilka sąsiadujących komórek pamięci

struct Data
{

Data dzis;

Data daty[3];

{

int dzien;
int miesiac;
int rok;

};

11

3

2009

dzien

miesiac

rok

dzis

11

3

2009

12

3

2009

?

?

?

daty[0]

daty[1]

daty[2]

background image

Kopiowanie przez wartość i przez referencje

Kopiowanie przez wartość i przez referencje

kopiowanie
przez
wartość

11

3

2009

?

?

?

dateA

dateB

11

3

2009

11

3

2009

dateA

dateB

dateB = dateA

kopiowanie
przez
referencje

11

3

2009

?

?

?

dateA

dateB

dateB = dateA

11

3

2009

?

?

?

dateA

dateB

background image

Czas życia zmiennej

Czas życia zmiennej

Czas życia zmiennej jest przedziałem pomiędzy stworzeniem,

a zniszczeniem zmiennej

zmienne

zmienne

globalne

lokalne

na

stercie

background image

Zmienne lokalne i globalne

Zmienne lokalne i globalne

Zmienna globalna – zmienna dostępna w dowolnym

miejscu w programie.

Czas jej życia jest równy czasowi działania aplikacji

Zmienna lokalna – zmienna zadeklarowana wewnątrz

procedury lub funkcji i dostępna tylko w wewnątrz tej

procedury lub funkcji.

Czas jej życia jest równy czasowi aktywacji

procedury lub funkcji

background image

Zmienne lokalne i globalne

Zmienne lokalne i globalne

int globalna;

void funkcja1() {

int zmiennaLok1;

}

void funkcja2() {

int zmiennaLok2;

start

funkcja2()

powrót funkcja2

funkcja1()

powrót funkcja1

g

lo

b

a

ln

a

x

1

,

x

2

zm

ie

n

n

a

Lo

k2

zm

ie

n

n

a

Lo

k1

int zmiennaLok2;

funkcja1();

}

int main() {

int x1, x2;
funkcja2();
funkcja1();
return 0;

}

powrót funkcja2

funkcja1()

powrót funkcja1

stop

g

lo

b

a

ln

a

x

1

,

x

2

zm

ie

n

n

a

Lo

k1

background image

Zmienne na stercie

Zmienne na stercie

Zmienna na stercie – zmienna anonimowa, tworzona

i niszczona w dowolnym momencie działania aplikacji.

Dostęp do zmiennej na stercie jest możliwy za pomocą

wskaźników

• tworzone są za pomocą alokatorów:

• tworzone są za pomocą alokatorów:

• C:

malloc()

• C++, C#, Java, ADA:

new

• niszczone są za pomocą delokatorów

• C:

free()

• C++:

delete

• C#, Java:

garbage collector

martwe wskaźniki !!!

background image

Wiązanie

Wiązanie

Wiązanie – stałe przypisanie identyfikatora do jednostki

tj. wartość, zmienna, procedura, typ itd.

Środowisko – zbiór dostępnych wiązań.

int globalna;

int globalna;

void funkcja1() {

float x1 = 3.14;
x1++;

}

int main() {

int x1, x2;
funkcja1();
return 0;

}

globalna → zmienna typu int
funkcja1 → funkcja
x1 → liczba rzeczywista 3.14

globalna → zmienna typu int
funkcja1 → funkcja
main → funkcja
x1 → zmienna typu int
x2 → zmienna typu int

background image

Zakres widoczności

Zakres widoczności

Zakres widoczności deklaracji – fragment programu,

w którym deklaracja jest dostępna.

Blok – jest to konstrukcja programu, ograniczająca

zakres widoczności dowolnej deklaracji wewnątrz niego

Struktura monolityczna

Struktura płaska

Struktura zagnieżdżona

deklaracja x1
deklaracja x2
deklaracja x3

deklaracja x1

deklaracja x1

deklaracja x2

deklaracja x3

deklaracja x2

deklaracja x3

background image

Zakres widoczności

Zakres widoczności

void funkcja1() {

int zmiennaLok1 = 0;
printf(”%d”, zmiennaLok1);
for(int i=0; i<10; i++)
{

printf(”%f”, zmiennaLok1);

}

float zmiennaLok1 = 3.14;

const int s = 2;

int f(int x) {

return s*x;

}

void p(int y) {

printf(”%d”, f(y));

Zakrywanie

Zakresy statyczne i dynamiczne

}
printf(”%d”, zmiennaLok1);

}

printf(”%d”, f(y));

}

void q(int z) {

const int s = 3;
printf(”%d”, f(z));

}

void r(int z) {

const char s[] = ”ALA”;
printf(”%d”, f(z));

}

background image

Reprezentacja zmiennych w pamięci

Reprezentacja zmiennych w pamięci

void funkcja1() {

int zmiennaLok1;

}

void funkcja2() {

int *wsk;
int zmiennaLok2;
wsk = new int[10];

ramka aktywacji

ramka aktywacji

ramka aktywacji

ramka aktywacji

sterta

wsk = new int[10];
funkcja1();
delete wsk;

}

int main() {

int x1, x2;
funkcja2();
funkcja1();
return 0;

}

ramka aktywacji

ramka aktywacji

ramka aktywacji

ramka aktywacji

ramka aktywacji

stos

dane

statyczne

zmienna lokalna

zmienna lokalna

zmienna lokalna

zmienna lokalna

dane porządkowe

background image

void funkcja1() {

int zl1;

}

void funkcja2() {

int *wsk;
int zl2;
wsk = new int[10];

Reprezentacja zmiennych na stosie

Reprezentacja zmiennych na stosie

funkcja2()

powrót

funkcja2

funkcja1()

funkcja1()

powrót

funkcja1

x1

x2

x1

x2

wsk

x1

x2

wsk

x1

x2

x1

x2

zl1

x1

x2

wsk

wsk = new int[10];
funkcja1();
delete wsk;

}

int main() {

int x1, x2;
funkcja2();
funkcja1();
return 0;

}

zl2

wsk

zl2

wsk

zl2

zl1

zl1

wsk

background image

Reprezentacja zmiennych na stercie

Reprezentacja zmiennych na stercie

int main() {

int *x1, *x2, *x3;
x1 =
x2 =
x3 =
delete x2;

x1

x2

x3

stos

sterta

new int;
new int;
new int;

delete x2;
delete x1;
return 0;

}


Wyszukiwarka

Podobne podstrony:
Paradygmaty programowania wyk 1
Paradygmaty programowania wyk 5
Paradygmaty programowania wyk 4
Paradygmaty programowania wyk 2
Paradygmaty programowania wyk 1
Program wyk adow Podstawy marketingu, Marketing
Tresci kursu, studia Polibuda Informatyka, III semestr, języki paradygmaty programowania (jipp)
Kol W2, studia Polibuda Informatyka, III semestr, języki paradygmaty programowania (jipp), kolos 2
cwiczenie10d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
program wyk, geografia, kompleksowa geografia fizyczna
cwiczenie8d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie13d2012, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie9d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie11d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie6d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
Metodologia geografii Program Wyk

więcej podobnych podstron