d3 (2)

background image

Języki i paradygmaty 

programowania

III.

 Zmienne i typy

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-2

Języki imperatywne

Abstrakcyjne mechanizmy

na bazie

architektury von Neumanna

Dwa podstawowe składniki tej architektury to
procesor

i pamięć

„Abstrakcyjne mechanizmy”

– mamy do

dyspozycji narzędzia pozwalające wykorzystać
możliwości komputera bez zagłębiania się
w szczegóły techniczne

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-3

Zmienne

Zmienne są abstrakcją komórek pamięci

Programista może przechowywać dane
w pamięci, nie martwiąc się o techniczne
szczegóły (np. przydział pamięci)

Odpowiedniość między zmiennymi
a komórkami pamięci może być bardzo
bezpośrednia (np. dla zmiennych typu
całkowitego) lub dość odległa
(np. wielowymiarowe tablice)

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-4

Atrybuty zmiennej

nazwa

adres

wartość

typ

okres życia

zakres widoczności

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-5

Nazwa

Cecha nie tylko zmiennych

Nazwa to szczegół techniczny, nie mający nic
wspólnego z przyjętym paradygmatem

Jakie znaki są dozwolone w nazwach?

Liczba dozwolonych znaków

Czy duże i małe litery są rozróżniane?

Nie każda zmienna ma nazwę

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-6

Adres a nazwa

Program może zawierać dwie różne zmienne
o tej samej nazwie

Ta sama zmienna lokalna może mieć różne
adresy w czasie różnych wywołań tego samego
podprogramu

Nie ma zatem jednoznacznej odpowiedniości
między nazwą a adresem

Także w drugą stronę: aliasowanie

Adres zwany jest czasem l-wartością

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-7

Aliasowanie

Niekiedy do tej samej komórki pamięci można
dotrzeć za pomocą różnych nazw

Tak jest np. wtedy, gdy dwa wskaźniki
ustawimy na ten sam adres:

int x, *p, *q; p = &x; q = &x;

Aliasowanie może prowadzić do przeoczeń
i niejasności w kodzie, lepiej go unikać, jeśli
to możliwe

język C

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-8

Wartość

Wartość to... wartość

Czasem zwana r-wartością

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-9

Typ

Typ to zbiór dopuszczalnych wartości,
jakie zmienna może przyjmować

Gdy mówimy o zmiennych w reprezentacji
zmiennopozycyjnej, typ określa też precyzję,
z jaką liczby są reprezentowane

Z typem wiąże się również zbiór operacji
dopuszczalnych dla danej zmiennej

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-10

Wiązania

Różne byty i ich atrybuty w różnych
momentach zostają powiązane

Wiązania dotyczą bardzo rozmaitych bytów –
takich jak zmienna, operator, wywołania
podprogramu

Wiązania dotyczą także ich cech – takich jak
wartość, typ, adres

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-11

Przykłady wiązań

Deklaracja zmiennej powoduje związanie
zmiennej z typem

Wykonanie instrukcji podstawienia powoduje
związanie zmiennej z (nową) wartością

W czasie projektowania języka programowania
jego twórca wiąże znak * z operacją mnożenia

W czasie implementacji kompilatora języka
typ int zostaje związany z zakresem liczb
całkowitych dostępnym na tej maszynie

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-12

W czasie kompilacji zmienna zostaje związana
z zadeklarowanym dla niej typem

W czasie ładowania programu do pamięci
zmienna statyczna zostaje związana
z konkretnym adresem w pamięci

W czasie konsolidacji wywołanie funkcji
bibliotecznej zostaje związane z jej kodem

W czasie wykonania programu zmienna
lokalna/dynamiczna zostaje związana
z przydzieloną jej na stosie/stercie pamięcią.

Przykłady wiązań

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-13

int x;

język C

...
x = x * 3;

Typ zmiennej jest wiązany w czasie kompilacji

Typ int jest wiązany z konkretnym zakresem liczb w

czasie projektowania kompilatora

*

jest wiązana z konkretnym działaniem arytmetycznym

dopiero w czasie kompilacji

Liczba 3 jest wiązana z konkretnym układem bitów
podczas projektowania kompilatora

Wartość zmiennej x jest wiązana z konkretną liczbą w

chwili wykonania podstawienia

Przykłady wiązań

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-14

Podział wiązań

wiązania statyczne

następują przed wykonaniem programu (w czasie
jego ładowania, kompilacji lub na wcześniejszych
etapach)

oraz

nie zmieniają się w trakcie działania programu

wiązania dynamiczne

następują w trakcie działania programu

lub

zmieniają się w trakcie działania programu

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-15

Wiązanie typu

Każda zmienna musi zostać związana z typem
przed pierwszym użyciem w programie
(a najpóźniej w momencie pierwszego użycia)

Jak określamy typ?

Kiedy następuje wiązanie?
(Czy wiązanie jest statyczne czy dynamiczne?)

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-16

Jak określamy typ zmiennej?

Zazwyczaj jawna deklaracja

Możliwa deklaracja niejawna (zwykle pierwsze
użycie zmiennej stanowi deklarację)

W przypadku deklaracji niejawnych konwencja
może określać typ

Fortran, niektóre wersje „starego” BASICa: pierwsza litera
nazwy wyznacza typ zmiennej, chyba że zmienna została
zadeklarowana jawnie

Perl: pierwszy znak nazwy (ale nie jest to litera lecz znak typu
$

, #, @) wyznacza typ

Wnioskowania o typie z kontekstu (ML, Haskell)

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-17

Kiedy następuje wiązanie?

Deklaracje

(jawne i niejawne!) dają

wiązanie statyczne

Przy wiązaniach dynamicznych, zmienna jest
wiązana z typem zwykle przy pierwszym
podstawieniu

pod nią wartości (np. PHP,

JavaScript)

Wiązanie dynamiczne gwarantuje
elastyczność

, ale ma dwie wady:

koszt

utrudnienie wykrywania błędów

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-18

Koszt dynamicznego wiązania typu

Zgodność typów musi być sprawdzana dynamicznie, czyli
w trakcie wykonania programu

wydłuża to jego czas

działanie

A więc z każdą zmienną trzeba przechowywać deskryptor
opisujący jej typ

zwiększa się rozmiar programu

Operacje na tej samej zmiennej mogą wymagać
zróżnicowanej ilości pamięci i różnych działań
(w zależności od typu)

Język taki musi być raczej interpretowany niż
kompilowany

, bo wygenerowanie odpowiedniego kodu

w czasie kompilacji jest bardzo skomplikowane a kod
nieefektywny i długi

background image

2009-03-05

Jarosław Bylina :: Języki i paradygmaty programowania :: Zmienne i typy

III

-19

Wnioskowanie o typie

fun f(x) = 2.0 * 3.14 * x;

fun g(x) = 2 * x;

fun h(x) = x * x;

fun h(x) : real = x * x;

fun h(x : real) = x * x;

fun h(x) = (x : real) * x;

fun h(x) = x * (x : real);

język ML


Wyszukiwarka

Podobne podstrony:
metabolizm witaminy D3
lsm10a d3
d3 okrąg, elipsa
uchwa a3a+o+rozwi a5zaniu+sp d3 a3ki IW6QAQ4EWT7YG3SMCVLURE7FHP2NLIWX3PLBIFY
D3
d3
MBA 45D1 D3 NFA
d3
Patofizjologia, Witamina D3
witamina D3 2
witamina D3, krzywica, tężyczka
GI D3 g4 0708
d3 w
D3 instrukcja tb
d3
wyzanczanie+wsp d3 a3czymnika+filtracji+k+metod a5+labolatoryjn a5+w+aparacie+wi a3una CD6A6WMNDGTTH
1duchwa a3a+w+sprawie+zmiany+umowy+sp d3 a3ki+w+zwi a5zku+z+przej caciem+udzia a3 d3w+wsp d3lnika+wy
2cuchwa a3a+w+sprawie+zmiany+umowy+sp d3 a3ki+w+zwi a5zku+z+automatycznym+umorzeniem+udzia a3 d3w+z+
D3 Obciążenia dźwignic Siły dynamiczne podnoszenia

więcej podobnych podstron