Lezione del 4 Dicembre 2001

Gli array


COSA E' STATO FATTO A LEZIONE

Questo documento contiene un RIASSUNTO degli argomenti presentati a lezione. Per eventuali chiarimenti rivolgersi al docente.

Uno schema di programma che usa array di interi

const

   vettLenght = 1000; {Capacita' del tipo-array vett}


type

   vett = array [0..vettLenght-1] of integer;

   << INSERIRE QUI EVENTUALI ALTRE DEFINIZIONI DI TIPI >>


var

   v1 : vett;
   v1Size : integer; {Numero di elementi utilizzati nell'array v1}

   v2 : vett;
   v2Size : integer; {Numero di elementi utilizzati nell'array v2}

   << INSERIRE QUI EVENTUALI ALTRE DICHIARAZIONI DI VARIABILI >>

{
  AI: 0 <= vSize <= vettLength-1
  AF: v[0..vSize-1] contiene vSize interi letti da terminale
}
procedure leggiVett (var v:vett; 
                         vSize:integer)

var
   i:integer;

begin
   { 
     IC: 0 <= i <= vSize AND 
         v[0..i-1] contiene i interi letti da terminale
   }
   for i:=0 to vSize-1 do
      begin
         write('Inserisci l'elemento di indice ',i,':');
         readln(v[i]);
      end;
end;


{
  AI: 0 <= vSize <= vettLength-1 AND
      v[0..vSize-1] e' inizializzato 
  AF: gli elementi di v[0..vSize-1] sono stati stampati su terminale
}
procedure stampaVett (v:vett; 
                      vSize:integer)

var
   i:integer;

begin
   { 
     IC: 0 <= i <= vSize AND 
         gli elementi di v[0..i-1] sono stati stampati su terminale
   }
   for i:=0 to vSize-1 do
      begin
         writeln(v[i]);
      end;
end;


<< INSERIRE QUI EVENTUALI ALTRE DEFINIZIONI DI procedure O function >>


begin{main}

   repeat
      begin 
         writeln('Quanti elementi vuoi inserire nell'array (numero >= 0 e',
                 ' <= ',vettLength,')?');
         readln(v1Size);
      end
   until (0 <= v1Size) and (v1Size <= vettLength);

   leggiVett(v1,v1Size);
       
   writeln('Gli elementi inseriti sono:');
 
   stampaVett(a,aSize);

   << INSERIRE QUI EVENTUALI ALTRE ISTRUZIONI >>
end.


ESERCIZI DA SVOLGERE

Per eventuali chiarimenti rivolgersi ai docenti.
  1. Scrivere, compilare, ed eseguire un programma Pascal che legge un array V di N interi (N stabilito dall'utente), un intero S, e stampa l'array "risultato del prodotto dello scalare S per il vettore V".

    RICHIESTA: usare una procedure:

    {
      AI: 0 <= vSize <= vettLength-1 AND
          v[0..vSize-1] e' inizializzato AND
          s e' inizializzato
      AF: v[0..vSize-1] contiene gli elementi originari moltiplicati per s
    }
    procedure prodPerScalare (var v:vett;
                                  vSize:integer;
                                  s:integer)
     
  2. Scrivere, compilare, ed eseguire un programma Pascal che (COME AL PUNTO PRECEDENTE) legge un array V di N interi (N stabilito dall'utente), un intero S, e stampa l'array "risultato del prodotto dello scalare S per il vettore V".

    RICHIESTA: usare una procedure:

    {
      AI: 0 <= v1Size <= vettLength-1 AND
          v[0..v1Size-1] e' inizializzato AND
          s e' inizializzato
      AF: v1Size = v2Size AND
          v2[0..v1Size-1] contiene gli elementi di
                          v1[0..v1Size-1] moltiplicati per s
    }
    procedure prodPerScalare (    v1:vett;
                                  v1Size:integer;
                                  s:integer;
                              var v2:vett;
                              var v2Size:integer)
     
  3. Scrivere, compilare, ed eseguire un programma Pascal che legge un array V1 di N interi (N stabilito dall'utente), un array V2 di N interi (lo stesso N di prima), e stampa il numero intero "risultato del prodotto scalare di V1 e V2".

    RICHIESTA: usare una function:

    {
      AI: 0 <= size <= vettLength-1 AND
          v1[0..size-1] e' inizializzato AND
          v2[0..size-1] e' inizializzato 
      AF: resituisce v1[0]*v2[0] + ... + v1[size-1]*v2[size-1]
    }
    function prodScalare (v1,v2:vett; size:integer):integer;