Esercizi
1
Tabelle di verita’

Da formula a tabella:
 (A or
B) and (not B or not A)
 (A and B) or (B  A)
 (A  (B or not A))
 A and not(B)

Da tabella a circuito
2
Da binario a decimale e viceversa









1011
101
1100
101,101
110,11
23
54
13,72
21,14
3
Somma binaria
1010+ 1100
 1010 + 1111
 101,10 + 110,11
 1111,11 + 1100,01

4
Notazione in complemento a due
10000
 00011
 01111
 10010
 Su 8 bit:
 6, -6, -13, -1, 0

5
Somma in complemento a due



Controllare risultato in base 10:
 0101 + 0010
 0011 + 0001
 0101 + 1010
 1110 + 0011
Overflow?:
 0100+0011
 0101+0110
 1010+1010
 1010+0111
Usare 4 bit: 3-2, 4 – 6, 1-5
6
Notazione in eccesso (4)
111
 010
 001
 000
3
1
0

7
Notazione in virgola mobile
8 bit, 3 bit per esponente, 4 per mantissa
 10111100
 01111010
 1,5
 11,3 ?
 7,3

8
CPU e memoria principale









Differenze tra memoria principale e secondaria
Registro istruzione?
Registro contatore programma?
Campi di un’istruzione?
Ciclo di macchina?
Differenza tra linguaggio macchina e linguaggio assembly?
In un programma assembler, perchè si attaccano etichette a certe
istruzioni?
Come si chiama in Assembly l’istruzione che trasferisce una parola
dalla RAM ad un registro della CPU? E quella che compie il
trasferimento inverso?
In assembler a cosa servono gli identificatori o variabili?
9
Esercizio su linguaggio assembly
X: int;
Y: int 8;
LOAD RO Y;
LOAD R1 Y;
MULT RO R1;
STORE RO X;
STOP;
Dire se:
 Alla fine Y contiene 64
 Alla fine X contiene 64
 STORE RO X mette in R0 il contenuto della cella X
 MULT R0 R1 mette in R0 la moltiplicazione dei valori
in R0 e R1
10
Sistema operativo
Differenza tra shell e nucleo?
 Differenza tra processo e processore?
 A cosa serve la tecnica della condivisione
del tempo (time-sharing)?
 Stati dei processi e transizioni tra stati

11
Esercizio Linux
Posizione: home directory che contiene
dir1 che contiene file1
 Sequenza di comandi per:

 Spostare
file1 in home
 Creare file2 in dir1
12
Esercizio Linux
Posizione: home directory che contiene
dir1 e dir2
 Dir1 contiene file1 e dir2 contiene file2
 Sequenza di comandi per

 Spostare
file1 in dir2
 Rimuovere dir1
 Copiare file2 in home
13
Reti
Cos’e’ una LAN?
 Cos’e’ una WAN?
 Cosa sono i domini di Internet?
 Come funziona il WWW?
 Cos’e’ un URL?
 A cosa serve il linguaggio HTML?

14
Algoritmi
Descrivere i seguenti costrutti: if, while
 Descrivere le fasi di inizializzazione, test, e
modifica in un while
 Cos’e’ un algoritmo ricorsivo?
 Come si valuta l’efficienza di un algoritmo?

15
Linguaggi di programmazione









Paradigmi: imperativo, oggetti, dichiarativo,
funzionale
Cos’e’ una variabile?
A cosa servono le dichiarazioni?
Descrivere il comando di assegnamento
Cosa succede alla chiamata di un
sottoprogramma?
Differenza tra procedure e funzioni?
Passaggio dei parametri: per valore e per
riferimento
Differenza tra compilatore e interprete?
Analisi lessicale?
16
Paradigmi di programmazione








Che differenza c’e’ tra una classe e un oggetto
nella programmazione orientata agli oggetti?
Come funziona la risoluzione?
Come si controlla che un insieme di asserzioni e’
consistente?
Dire se il seguente insieme di asserzioni e’
consistente:
(P or Q), (Q or not R), (not(P) or S), not(S),
not(Q)
Dire se l’insieme di asserzioni implica
l’asserzione not(R)
(A  B equivale a not(A) or B ch equivale a
not(A and not(B)))
17
Dire se implica S o P
Esercizio di programmazione

Cosa contengono le variabili d, n, e i alla fine
dell’esecuzione del seguente programma?
Dato un qualunque array a, cosa calcola il
programma nella variabile d?
main();
{int n=0, a[] = {11, 3, 2, 4, 5};
float d = 0.0;
for (i=0;i<5;i++)
{d = d+a[i];
n=n+1;}
d=d/n;}

18
Strutture dati










Differenze tra array e record
Quali sono le principali caratteristiche di un array?
Cosa contiene la dichiarazione di un array?
Quali sono le principali differenze tra array e record?
Quali sono le principali caratteristiche delle liste, e le
differenze con gli array?
A parita’ di dati memorizzati, occupa piu’ spazio un array
o una lista?
Quali sono le operazioni necessarie per inserire un
nuovo elemento in una lista?
E per cancellare un elemento?
Cos’e’ un puntatore?
Differenze tra code e pile?
19
Esercizio su array
In un array con 10 colonne e 4 righe,
memorizzato all’indirizzo 100, che indirizzo
ha l’elemento in riga 2 e colonna 6?
 Come si calcola l’indirizzo dell’elemento in
riga i e colonna j in un array con c colonne
e indirizzo iniziale x?
 x + (c * (i-1)) + (j-1)

20
Esercizio su liste:


Inserire gli indirizzi
nelle celle vuote in
modo che ogni cella
con una lettera, piu’ la
cella successiva,
formi un elemento di
una lista concatenata
in cui le lettere
appaiono in ordine
alfabetico inverso
Puntatore alla testa?
Indirizzo
11
12
13
14
15
16
17
18
19
20
21
22
Contenuto
C
G
E
B
U
F
21
Esercizio su code




Considerare una coda contenente A, B, C, D in
cui ogni elemento occupa una cella di memoria
Puntatore alla testa (dove cancellare)= 1
Puntatore alla coda (dove inserire)?
Mostrare il contnuto della coda e il valore dei
due puntatori dopo aver inserito E, eliminato C e
D, inserito F, eliminato A e B?
22
Esercizio su pile



Considerare una pila che inizia all’indirizzo 100
e ha 3 elementi (A,B,C, ognuno una cella)
Che valore ha il puntatore alla testa della pila
(dove cancellare)?
Mostrare il contenuto della pila e il valore del
puntatore dopo aver inserito D, cancellato due
elementi, inserito E, eliminato due elementi,
inserito F, eliminato un elemento?
23