versione del 6-Dicembre-2007
LaboratorioX: 7-Dic-2007                                                               


Questionario
Questionario a risposte multiple: tempo 55 min
Auto-valutazione      
50 domande in 55 minuti


Programmazione Simulazione della prova di programmazione: tempo a disposizione 2 ore La mia soluzione
testo della prova List.java        ListIterator.java                 elementi.java LL.java (nuova versione corretta!)
ProvaLL.java

Parte Immazione
Tipi di dati astratti e Strutture dati: Dizionari in Java Una soluzione possibile
Programmare tabelle Si vuole memorizzare un testo di parole (ogni parola caratterizzata da una sequenza di caratteri alfanumerici separati fra loro da uno o piu' spazi) assieme a un'informazione accessoria definita dalla parola chiave CAPITOLO racchiusa tra parentesi angolari (<>).  Si assume che le parentesi angolari siano presenti solo nella parola chiave.
La parola chiave  <CAPITOLO> suddivide il testo in ingresso in capitoli la cui numerazione parte da 1.
Per tale gestione si definisca la classe Testo la cui interfaccia pubblica e' riportata in Testo.html.

Per verificare il funzionamento del programma si utilizzi il seguente metodo main():
  
  public static void main(String args[])
  { String libro =    "<CAPITOLO> testo del primo capitolo "
                    + "<CAPITOLO> testo del secondo capitolo "
                    + "<CAPITOLO> testo del terzo capitolo";

    Testo mioTesto = new Testo();
    mioTesto.inserisciTesto(libro);
   
    for (int i = 0; i < mioTesto.capitoli(); i++)
    {  System.out.println("Capitolo " + (i + 1));
       System.out.println(mioTesto.leggiCapitolo(i + 1));
    }

  }


uso: $ java Testo

Leggere prima di iniziare la realizzazione.
Testo.java
Programmare dizionari Si vuole gestire un database di studenti. Internamente uno studente e' definito da un esemplare di classe Studente contenente le seguenti informazioni:
- nome dello Studente
- lista di esami sostenuti (ogni esame identificato da un nome) e corrispondente voto.

L'interfaccia pubblica  della classe Studente è definita nel file Studente.html.
Piu' esemplari di classe studente saranno contenute nella classe Scuola la cui interfaccia pubblica è definita nel file Scuola.html.

Viene richiesto di realizzare le classi Studente e Scuola come descritto.
Il seguente metodo main puo' essere usato come test finale:

public class Prova
{
   public static void main(String args[])
   {
      Scuola scuola = new Scuola();
      scuola.aggiungiStudente("Rossi");
      scuola.aggiungiStudente("Bianchi");
      scuola.aggiungiStudente("Verdi");
      scuola.aggiornaCurriculum("Rossi", "Fondamenti di Informatica 1", 22);
      scuola.aggiornaCurriculum("Rossi", "Matematica A", 19);
      scuola.aggiornaCurriculum("Rossi", "Fisica 1", 24);
      scuola.aggiornaCurriculum("Bianchi", "Fondamenti di Informatica 1", 18);
      scuola.aggiornaCurriculum("Bianchi", "Matematica A", 19);
      scuola.aggiornaCurriculum("Bianchi", "Fisica 1", 20);
      scuola.aggiornaCurriculum("Verdi", "Fondamenti di Informatica 1", 30);
      scuola.aggiornaCurriculum("Verdi", "Matematica A", 30);
      scuola.aggiornaCurriculum("Verdi", "Fisica 1", 27);

      scuola.stampa();
   }
}

Versione originale del testo del compito.

Si realizzi il dizionario in tre modi diversi:
- con array non ordinato
- con array ordinato
- con tabella hash

Per ciascuno dei metodi si indichi la complessita' temporale.

Programmare  l'ordinamento nella classe Scuola usando, in alternativa,  i tre algoritmi di ordinamento studiati:
- ordinamento per selezione
- ordinamento per inserimento
- ordinamento per fusione

Leggere prima di iniziare la realizzazione.
Studente.java

ScuolaArrayNonOrdinato.java
ScuolaArrayOrdinato.java
ScuolaHashTable.java

OrdinatorePerFusione


OrdinatorePerSelezione

OrdinatorePerInserimento