Lezione 17

Calcolabilità

  • Revisione della lezione precedente, sistemi di transizione, algoritmo, nozioni di calcolabilità
  • Problema della Fermata.
  • Complessità Computazionale, misura di tempo come tempo impiegato dall'istanza peggiore di dimensione .

Linguaggio C

  • Strutture. Definizione e dichiarazioni del tipo struttura.
  • Dichiarazione di variabili di tipo struttura, esempi.
  • Operatore "." per accedere ai campi di una struttura a partire da una variabili.
  • Semantica delle variabili struttura per "valore", uso dell'assegnamento tra variabili, passaggio delle strutture per valore.
  • Uso della typedef per semplificare e abbreviare i nomi dei tipi.
  • Tipi di dato misti, vettori di strutture, strutture che contengono altre strutture o vettori, strutture che contengono puntatori.
  • Puntatori a strutture, uso dell'operatore freccia ->

Esercizi:

  • Scrivete un programma C che implementa un piccolo CAD 2d. Il programma presenta un interfaccia in stile "linea di comando" con una serie di comandi a disposizione:
    • help    (stampa un elenco di tutti i comandi e per ogni comando gli argomenti e la descrizione di cosa fa).
    • load project   (carica il file "project.cad", dove avete salvato una descrizione dei vostri dati, nota: project.dat è solo un esempio di un nome generico)
    • save, saveas project   (salva il progetto corrente sul file con il nome associato al progetto (save) o con il nome specificato "project.cad")
    • clear all         (cancella tutte le primitive definite nel progetto, si torna ad uno stato iniziale).
    • new project   (crea un nuovo progetto, implica che il nome del progetto sarà project)
    • point (x,y)     (crea un punto alle coordinate (x,y))
    • line (x1,y1) (x2,y2)  (crea il segmento passante da (x1,y1) a (x2,y2))
    • rect (x1,y1) (x2,y2)  (crea il rettangolo con vertice inferiore sinisto in (x1,y1) e vertice superiore destro in (x2,y2) con i lati paralleli agli assi cartesiani).
    • square (x1,y1) l        (crea un quadrato di lato l, con vertice inferiore sinistro in (x1,y1)).
    • list                           (elenca tutte le primitive inserite nel progetto e per ogni primitiva stampa i suoi attributi e un numero che la identifica univocamente).
    • scale (sx,sy) id         (modifica la primitiva di identificatore id, scalandone le dimensioni del fattore sx,sy, si applica a tutte le primitive tranne che ai punti).
    • translate (tx,ty) id      (sposta la primitiva di (tx,ty)).
    • rotate (ax,ay) id        (ruota rispetto al suo centro la primitiva di un angolo ax rispetto all'asse x e ay rispetto all'asse y) attenzione, per poter
      ruotare correttamente rispetto al centro, si dovrà prima traslare nel centro degli assi la primitiva, poi svolgere la rotazione e
      infine ritraslare la primitiva nella posizione originale.
  • Provate a definire le strutture dati associate ad un social network. Quali strutture definite, quali informazioni serve memorizzare?

Lascia un commento