Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Porfirio Tramontana
Luca Marseglia, DIETI, 2018
Gli appunti sono tutti battuti a macchina e sono divisi per argomenti, in base alle
lezioni tenute dal professore.
Nelle ultime pagine sono presenti gli algoritmi più importanti, tra i quali c'è anche
la spiegazione passo passo per l'algoritmo di inserimento della lista a puntatori,
argomento secondo me più ostico di tutto il corso.
Prova orale 21 dicembre 2018
Nota: le seguenti domande sono state sottoposte a quattro persone. Viene generalmente fatta
qualche domanda sulla parte di teoria (compresa la parte precedente alla prova intercorso) e poi
chiesto un algoritmo scritto a penna.
Domande di teoria
1. Che cosa avviene in memoria quando vengono allocati dinamicamente tre elementi?
1. Che vantaggio ha questo sistema rispetto ad altri?
2. Rispetto agli array conviene di più se la lista è lunga o breve?
3. Per quali due motivi conviene di più farlo con un’array?
4. Quanto spazio avrei occupato in memoria facendolo con un’array?
5. Nel caso di una lista?
6. Per quanto riguarda il tempo, la lista è più o meno vantaggiosa e perché?
Dunque per lo spazio sono più vantaggiosi gli array in quanto il calcolatore memorizza solo
l'indirizzo iniziale
Per il tempo sono più vantaggiose le liste in quanto, proprio per il fatto che ogni elemento ha il suo
indirizzo personale, il calcolatore non ha bisogno di scorrere tutti gli elementi della lista per arrivare
a quello desiderato, a differenza degli array.
2. Quali sono i vantaggi di aver inserito i bus nel modello di Von Neumann?
3. Interrupt service routine.
4. Discutere del problema della calcolabilita partendo dalla definizione di algoritmo.
5. Che cos'è la Macchina di Turing?
1. Quali sono le macchine che non sanno risolvere gli algoritmi che sa risolvere
Turing?
6. Che ha di vantaggioso la rappresentazione in complementi alla base?
7. Esporre tutta la teoria della trattabilità
1. Qual è la migliore tipologia di algoritmo di ricerca?
Algoritmi
Spiegazione dell’algoritmo 7
Innanzitutto bisogna cercare la posizione in cui si vuole inserire l'elemento. Una volta trovata, si
inserisce l’elemento in quella posizione, sfruttando l’indirizzo al quale si è arrivati.
while(...) {
lista* e = new lista;
e->numero = 6;
e->prossimo = p;
p = e;
}
while(...) {
q = q->prossimo;
}
1. Introduzione
2. Logica
○ Proposizioni semplici e composte
○ Operatori di relazione >, <, ==, !
○ Congiunzione AND, Inclusiva OR, Esclusiva XOR, Negazione NOT
○ Calcolo proposizionale
3. Algebra di Boole <D={0,1}, +, *, ___, min=0, max=1>
○ Proprietà
■ Commutativa
■ Associativa
■ Distributiva
■ Idempotenza
■ Elemento neutro
■ Complemento
■ Minimo e massimo
■ Assorbimento
○ Principio di Dualità
○ Legge di De Morgan
4. Codifica dell'informazione
○ Tipo, cardinalità, valore, attributo
○ Insieme binario
○ Quantità di informazione Q
○ Numero di bit necessario (funzione ceiling) N
5. Rappresentazioni
○ Valori logici
○ Caratteri
■ ASCII
■ ASCII esteso
■ Unicode
○ Decimali, Binari, Esadecimali
■ Interconversioni
■ Operazioni sui numeri binari
■ Campo di esistenza e Overflow
○ Binari relativi
■ Rappresentazione in complementi alla base
■ Proprietà (complemento della somma)
■ Interconversione decimale negativo a binario e viceversa
■ Algoritmi per farlo
■ Osservazioni (pro, contro, overflow)
○ Binari reali
■ Metodo a virgola fissa
■ Metodo a virgola mobile (floating point)
■ Mantissa, esponente, base
■ Regola di normalizzazione
■ Underflow e Denormalizzazione
○ Precisione
■ Errore assoluto
■ Erroe relativo
○ Standard IEEE 754
■ Precisione singola e doppia
○ Conversione audio, immagine e video
6. Architettura di Von Neumann
○ Modello primario
○ Modello primario + memoria
■ Processore CPU
■ Algoritmo di Von Neumann
■ Tipi di registri
■ Memoria centrale RAM
■ Tipi di Bus
■ Tipi di Clock
■ Parallelismo
■ Altri tipi di Memoria
■ Esecuzione di un programma
■ Operazione di caricamento
■ Sistema delle interruzioni
■ Time sharing
■ Gerarchie delle memorie
■ Cache
■ Virtuale
7. Programmi
○ Proprietà
○ Realizzazione
■ Editing
■ Traduzione
■ Precompilazione
■ Compilazione
■ Analisi lessicale, sintattica e semantica
■ Sintesi
■ Linking
■ Caricamento
■ Esecuzione
Questa parte non necessita di particolare attenzione in quanto vengono introdotti pochi concetti
base.
2. Logica
Per descrivere un algoritmo al calcolatore si fa uso della logica delle proposizioni, che consiste
nella scelta, secondo regole precise, tra due opzioni, VERO o FALSO.
Una proposizione è un'affermazione per la quale è possibile stabilire se essa sia vera o falsa.
Una proposizione per la quale non è possible farlo viene detta indeterministica.
Le proposizioni per le quali è possibile una scelta tra sole due opzioni è detta semplice, che
possono combinarsi attraverso delle congiunzioni, a formare delle p. composte.
Il calcolo proposizionale si basa sulle precedenze come i segni nell'aritmetica, che sono: NOT
--> AND --> OR e XOR.
E (AND) - Vera se vere entrambi
O (OR) - Vera se almeno una vera
O... O... (XOR) - Vera se e solo se una vera
P Q AND OR XOR
F F F F F
F V F V V
V F F V V
V V V V F
P NOT P
V F
F V
3. Algebra di Boole
0 0 0 0
0 1 1 0
1 0 1 0
1 1 1 1
0 1
1 0
Il complemento è definito come "la quantità che manca per arrivare al massimo dell'insieme".
Possiamo così definire, equivalentemente, l'insieme dell'Algebra di Boole in termini logici:
<D={V,F}, OR, AND, NOT, min=F, max=V}.
PROPRIETA'
Le dimostrazioni sono immediate in quanto sono tutte uguali all'algebra normale. Cambia solo il
fatto che quando si somma 1, il risultato è in ogni caso 1 perché:
● 0+1=0
● 1 + 1 = 1 (col resto di 1)
Esaminiamo dunque quella dell'idempotenza perché compaiono solo lettere ed è dunque la più
generale:
● A+A=A
○ 1 + 1 = 1 (col resto di 1)
○ 0+0=0
● A*A=A
○ 1*1=1
○ 0*0=0
Commutativa, associativa
Le stesse per l'algebra normale
Complemento
Idempotenza
Elemento neutro
Minimo e massimo
Trucco per ricordarsi le prime quattro: si presentano quando c'è la somma o prodotto di un numero
per sé stesso (o complemento) o per 0/1
Distributiva
Principio di dualità
● * diventa +
● + diventa *
● 0 diventa 1
● 1 diventa 0
Legge di De Morgan
Esercizio di esempio: