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