Rispondi ai seguenti quesiti segnando la risposta o le risposte corrette tra quelle proposte.
Quesito 1
Quale dei seguenti valori di a e b produce il valore vero per la condizione:
(a > 0) and ((b < 0) or (b > 1))
Riposte:
a) a = 5 b = 0
b) a = 5 b = 2
c) a = -1 b = 5
d) a = 1 b = 1
Quesito 2
Siano A e B due variabili booleane.
Quali delle seguenti espressioni è equivalente a
not (A or B) and (A or (A and B))
Risposte:
(not A and not B and A) or B
not A or (not B and A) or (A and B)
not A and not B and A and B
Nessuna delle risposte precedenti
Quesito 3
Se, a partire da due sequenze ordinate di n e m elementi, si deve ricostruire un’unica sequenza anch’essa ordinata ...
Risposte:
...si possono scandire tutti gli elementi delle due sequenze un’unica volta (cioè scandire n+m elementi)
... si devono scandire tutti gli elementi della seconda sequenza per ogni elemento della prima sequenza (cioè scandire n*m elementi)
... si devono scandire tutti gli elementi della prima sequenza e accodare quelli della seconda sequenza (cioè scandire n elementi)
nessuna delle precedenti
Quesito 4
Considerate le seguenti definizioni:
un simbolo è una cifra o una lettera;
un codice è una sequenza (stringa) di simboli che inizia e termina con una lettera, che contiene almeno una cifra, e che non contiene mai due cifre consecutive;
dato un codice, un suo sottocodice è una sua sottostringa che sia a sua volta un codice;
un codice è minimo se non contiene sottocodici (a parte lui stesso).
Dire quali delle seguenti affermazioni sono vere (è possibile che più di una affermazione sia vera: occorre indicarle tutte):
ogni codice ha lunghezza maggiore o uguale a 3;
nessun codice contenente più di due lettere è minimo;
ogni codice ha lunghezza minore o uguale a 36;
il numero di sottocodici minimi di un codice dato è uguale al numero di cifre che esso contiene;
il numero di sottocodici minimi di un codice dato è minore o uguale alla metà del numero di lettere che esso contiene;
nessun codice di lunghezza maggiore di 3 è minimo.
Quesito 5
Giovanni, Luca e Filippo organizzano un gioco. Giovanni pensa a un numero positivo N che sia potenza di 4. A questo punto, Giovanni inizia a dividere il numero per 2, e si ferma quando ottiene 1; chiamiamo G il numero di divisioni che ha dovuto eseguire. Luca fa la stessa cosa, ma divide ogni volta per 4; chiamiamo L il numero di divisioni che ha eseguito. A Filippo viene solo comunicato il valore X=G+L, e lui da X deve ricavare il valore N. Aiutate Filippo, suggerendogli una formula per ricavare N da X fra le seguenti.
N=4X/3 (4X diviso per 3)
N=3X/4 (3x diviso per 4)
N=2**(4X/3) (2 elevato a (4X/3))
N=4**(X)(4 elevato a (X))
N=4**(X/3)(4 elevato a (X/3))
Nessuna delle precedenti
Utilizzando un qualsiasi strumento da te conosciuto, descrivi gli algoritmi per risolvere i seguenti problemi.
Algoritmo 1
N persone, passeggiando in un bosco, trovano un mucchio di noci. La prima persona ne prende la metà più mezza noce; la seconda persona ne prende la metà di quello che è rimasto più mezza noce; anche le altre prendono le noci seguendo lo stesso criterio. Rimangono esattamente M noci che essi lasciano agli scoiattoli del bosco.
Descrivere un algoritmo in grado di stabilire, conoscendo N ed M, quante erano inizialmente le noci del mucchio?
Algoritmo 2
Scrivere un algoritmo che consenta, data una stringa rappresentante un numero espresso in base 12, di ottenere il corrispondente valore in base 10.
Algoritmo 3
Uno studente, usando le dita della sua mano sinistra, inizia a contare indicando il pollice 1, l’indice 2, il
medio 3, l’anulare 4, il mignolo 5, poi cambiando direzione indica di nuovo l’anulare 6, il medio 7, l’indice 8, il
pollice 9, poi ancora l’indice 10, il medio 11, l’anulare 12 e così via.
Descrivere un algoritmo che, acquisito un numero N intero qualsiasi, sia in grado di stabilire su quale dito si fermerebbe il conteggio dello studente.