Metody realizacji języków programowania/MRJP Wykład 3: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Mbiskup (dyskusja | edycje)
plan wykładu
Mbiskup (dyskusja | edycje)
Nie podano opisu zmian
Linia 8: Linia 8:
= Plan =
= Plan =


== Kontrola typów ==
= Kontrola typów =
* System typów
 
** atomowe (int, float, double)
 
** wskaźniki i referencje
== System typów ==
** struktury, rekordy, obiekty
 
** tablice
Wyróżniamy typy:
** krotki
* arytmetyczne (całkowity - int, short; zmiennopozycyjny - float, double; znakowy - char) - obiekt bezpośreniej manipulacji procesora
** funkcje (zwykłe i funkcyjne)
* wskaźniki i referencje - wskaźniki i referencje to adresy w pamięci wskazujące na lokację innego elementu (np. tablicy, obiektu, liczby typu arytmetycznego).
** cykle przy deklarowaniu typów (wskaźniki lub np. drzewa funkcyjne)
* struktury, rekordy, krotki, obiekty - typy złożone; struktury i rekordy zawierają pola, z których każde może mieć własny typ. Obiekty mogą dodatkowo zawierać metody
* sprawdzanie poprawności wyrażeń -- wyliczanie typów
* tablice - ciągły obszar pamięci zawierający kolejne instancje typu.
** wyr. arytmetyczne
* funkcje
 
 
== sprawdzanie poprawności typów ==
 
Wyrażenia:
 
Dla każdego wyrażenia należy wyliczyć jego typ:
 
* zmienne: typ zmiennej
* wyr arytmetyczne: int + int -> int; double + int -> double. Więcej o tym w punkcie '''konwersja typów'''. Trzeba sprawdzić, czy operacje są przeprowadzane na poprawnym typie.
* wywołania funkcji: sprawdzić typy parametrów,
 
 
 
** wywołania funkcji i wartość zwracana
** wywołania funkcji i wartość zwracana
** odwołanie do pól obiektu, rekordu, krotki
** odwołanie do pól obiektu, rekordu, krotki
* cykle przy deklarowaniu typów (wskaźniki lub np. drzewa funkcyjne)
* Równość typów
* Równość typów
** strukturalna
** strukturalna
Linia 36: Linia 53:
** szablony (c++) i generiki (java)
** szablony (c++) i generiki (java)
* Języki funkcyjne i wnioskowanie typów
* Języki funkcyjne i wnioskowanie typów
** Zmienne typów
** Zmienne typów;
** unifikacja, etc.
** unifikacja, etc.



Wersja z 10:11, 22 lip 2006

Statyczna analiza semantyczna

Streszczenie

Plan

Kontrola typów

System typów

Wyróżniamy typy:

  • arytmetyczne (całkowity - int, short; zmiennopozycyjny - float, double; znakowy - char) - obiekt bezpośreniej manipulacji procesora
  • wskaźniki i referencje - wskaźniki i referencje to adresy w pamięci wskazujące na lokację innego elementu (np. tablicy, obiektu, liczby typu arytmetycznego).
  • struktury, rekordy, krotki, obiekty - typy złożone; struktury i rekordy zawierają pola, z których każde może mieć własny typ. Obiekty mogą dodatkowo zawierać metody
  • tablice - ciągły obszar pamięci zawierający kolejne instancje typu.
  • funkcje


sprawdzanie poprawności typów

Wyrażenia:

Dla każdego wyrażenia należy wyliczyć jego typ:

  • zmienne: typ zmiennej
  • wyr arytmetyczne: int + int -> int; double + int -> double. Więcej o tym w punkcie konwersja typów. Trzeba sprawdzić, czy operacje są przeprowadzane na poprawnym typie.
  • wywołania funkcji: sprawdzić typy parametrów,


    • wywołania funkcji i wartość zwracana
    • odwołanie do pól obiektu, rekordu, krotki
  • cykle przy deklarowaniu typów (wskaźniki lub np. drzewa funkcyjne)
  • Równość typów
    • strukturalna
    • przez nazwę
  • konwersja typów
    • typy arytmetyczne i proste (int->double, etc)
    • typy polimorficzne - rzutowanie
    • jawne rzutowanie
  • Przeciążanie
    • liczenie zbioru możliwych typów dla podwyrażenia
    • zstępujące zawężanie zbioru możliwych typów
  • Funkcje polimorficzne
    • Dynamiczna kontrola (smalltalk)
    • statyczna kontrola (języki funkcyjne z silnym typowaniem)
    • szablony (c++) i generiki (java)
  • Języki funkcyjne i wnioskowanie typów
    • Zmienne typów;
    • unifikacja, etc.


reszta

  • Kontrola przepływu sterowania
    • break, goto,
  • kontrola nazw (unikalności nazw identyfikatorów, bloków, etc.)
    • te same nazwy dla różnych obieków
    • słowa kluczowe
    • etykiety dla goto, case
  • kontrola dostępu
    • zmienne/funkcje prywatne/chronione/publiczne


test wiki

podrozdz1

podrozdz

Przykład:

x = y
a = x + y
b = a + x

link martwym kodem.

Lista punktowana

  • ala ma kota
    • aaa

adsfα+(4b)

bold

Italic

internal link

[external link]

Plik:An image

Media:media file

No wiki formating

--Mbiskup 10:41, 22 lip 2006 (CEST)Mój podpis

i = 0 
do { 
  j = 4 * i
  i = i + 1 
} while (i < 20)


Bibliografia

  1. elem2
    1. podelem1
      1. podpodelem
        1. podpodpodelem