Paradygmaty programowania/Ćwiczenia 2: Semantyka zmiennych: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Pitab (dyskusja | edycje)
Nie podano opisu zmian
 
Pitab (dyskusja | edycje)
Linia 30: Linia 30:
Rozważmy program napisany w składni języka Ada. Jaka wartość zostanie wydrukowana przez Put, jeśli zakresy są ustalane statycznie? Jaka przy dynamicznym ustalaniu zakresów?
Rozważmy program napisany w składni języka Ada. Jaka wartość zostanie wydrukowana przez Put, jeśli zakresy są ustalane statycznie? Jaka przy dynamicznym ustalaniu zakresów?


    ''procedure Main is
      ''procedure Main is
 
        X: Integer;
          X: Integer;
        procedure PrA is begin Put(X) end;
 
        procedure PrB is X: Integer; begin X := 1; PrA end;
          procedure PrA is begin Put(X) end;
        begin X := 2; PrB end;''
 
          procedure PrB is X: Integer; begin X := 1; PrA end;
 
          begin X := 2; PrB end;''


===Zadanie 10===
===Zadanie 10===

Wersja z 21:57, 25 lip 2006

Zadanie 1

Wymienić momenty, w których mogą następować wiązania różnych rodzajów.

Zadanie 2

Jakie zmienne w C++ są zawsze aliasowane?

Zadanie 3

Napisz funkcję, w której przydatna będzie „zmienna z historią”, czyli zmienna, której wartość nie znika pomiędzy wywołaniami funkcji. Jak powołać do życia taką zmienną w języku C (lub podobnym)?

Zadanie 4

Zapisz przykładową instrukcję podstawienia w paru znanych Ci językach. Określ, jakie wiązania wchodzą tu w grę. Kiedy następują? Czy są różnice pomiędzy językami? Zrób to samo dla przykładowego wywołania funkcji.

Zadanie 5

Podaj przykłady języków, które mają niejawną dealokację pamięci ze sterty.

Zadanie 6*

Obiekty w języku C++ mogą być dynamiczne na stosie lub na stercie. Czy w Javie jest tak samo? Jaki to ma związek z metodami polimorficznymi?

Wskazówka:

Zadanie 7

Jaki jest związek dynamicznego wiązania typu z niejawną alokacją zmiennych na stercie?

Zadanie 8

Na czym polega różnica między podtypem a typem pochodnym w Adzie?

Zadanie 9

Rozważmy program napisany w składni języka Ada. Jaka wartość zostanie wydrukowana przez Put, jeśli zakresy są ustalane statycznie? Jaka przy dynamicznym ustalaniu zakresów?

     procedure Main is
       X: Integer;
       procedure PrA is begin Put(X) end;
       procedure PrB is X: Integer; begin X := 1; PrA end;
       begin X := 2; PrB end;

Zadanie 10

Rozważmy poniższy program. Co zostanie wypisane, jeśli zakresy są ustalane statycznie? Co przy dynamicznym ustalaniu zakresów?

    int x = 2;
      int y = 1;


      void f() {
        x = x + 1;
        y = y + 2;
        print(x, y);
      }
      void g() {
        int x = 1;
        x = x + 2;
 
        y = y + 1;
        
        print(x, y);
 
        f();
     
      }
      void main() {
 
        g();
 
        f();
      }