Programmazione I Programmazione I
 
Prova scritta del 7 luglio 2000

  1. Dopo avere dichiarato il tipo lista di interi, scrivere in Pascal una PROCEDURE che riceva come parametro il puntatore a una lista di interi ed inserica all'inizio di tale lista un nuovo nodo contenente la differenza tra il massimo e il minimo dei valori presenti nella lista data. Ad esempio, se la lista contiene inizialmente i valori 10 7 15 12, dopo l'esecuzione della PROCEDURE la lista dovrà contenere 8 10 7 15 12; nel caso in cui la lista data sia inizialmente vuota, non si dovrà effettuare alcun inserimento.

  2. Disegnare l'albero di ricerca ottenuto inserendo, uno dopo l'altro, i numeri 15 8 4 1 3 6 17 16 21 18 in un albero inizialmente vuoto. Scrivere gli output prodotti visitando tale albero nei tre ordini anticipato, simmetrico e posticipato.

  3. Scrivere l'output prodotto da ciascuno dei seguenti programmi.
     

    PROGRAM p1 (output);
    TYPE punt = ^integer;
    VAR p: punt;
       PROCEDURE s (VAR q: punt; x: integer);
       BEGIN
          new(q);
          q^ := x;
          q^ := p^ + q^;
          p^ := q^ + p^;
          x := q^ + p^
       END;
    BEGIN
       new(p);
       p^ := 4;
       s(p, p^);
       writeln(p^)
    END.
    

    PROGRAM p2 (output);
    TYPE punt = ^integer;
    VAR p: punt;
       PROCEDURE s (VAR q: punt; VAR x: integer);
       BEGIN
          new(q);
          q^ := x;
          q^ := p^ + q^;
          p^ := q^ + p^;
          x := q^ + p^
       END;
    BEGIN
       new(p);
       p^ := 4;
       s(p, p^);
       writeln(p^)
    END.
    


     
     

    PROGRAM p3 (output);
    TYPE punt = ^integer;
    VAR p: punt;
       PROCEDURE s (q: punt; x: integer);
       BEGIN
          new(q);
          q^ := x;
          q^ := p^ + q^;
          p^ := q^ + p^;
          x := q^ + p^
       END;
    BEGIN
       new(p);
       p^ := 4;
       s(p, p^);
       writeln(p^)
    END.
    

    PROGRAM p4 (output);
    TYPE punt = ^integer;
    VAR p: punt;
       PROCEDURE s (q: punt; VAR x: integer);
       BEGIN
          new(q);
          q^ := x;
          q^ := p^ + q^;
          p^ := q^ + p^;
          x := q^ + p^
       END;
    BEGIN
       new(p);
       p^ := 4;
       s(p, p^);
       writeln(p^)
    END.
    


File translated from TEX by TTH, version 2.25.
On 5 Jul 2000, 17:58.