Test conoscitivo e attitudinale per la partecipazione alle olimpiadi dell'informatica

NOME:____________________________ COGNOME:______________________________
CLASSE:______ SEZIONE:___________ SCUOLA:________________________________
CITTA':____________________________ ETA':______________
TEMPO:____________________________ 

Note per la compilazione. Per le domande a risposta multipla è possibile marcare più di un'opzione

Domande generali

1.	Conosci un linguaggio di programmazione?
[a]	no
[b]	Pascal
[c]	C
[d]	C++
[e]	Basic
[f]	Visual basic
[g]	Altro_____________________
2.	Se no, vorresti conoscerlo?
[a]	si
[b]	no
3.	Vorresti partecipare alle olimpiadi dell'informatica?
[a]	si
[b]	no
4.	Sei disposto a misurarti con un rompicapo?
[a]	si
[b]	no
5.	Qual' è il modo più veloce per contare quante volte compare ciascuna lettere dell'alfabeto in un testo?
[a]	scorrere il testo e contare prima le 'a' poi riscorrere il testo e contare le 'b' e così sino alle 'z'
[b]	scorrere il testo e incrementare di volta in volta il numero associato ad ogni lettera
[c]	scorrere il testo cercando le 'a', se viene incontrata una 'a' viene incrementato il contatore delle 'a' e viene cancellata la 'a' dal testo. Quindi si ripete la stessa operazione per la 'b' e così sino alla 'z'.
6.	Quali sono i numeri che sicuramente non compaiono nella tavola pitagorica:
[a]	numeri primi
[b]	numeri superiori a 81
[c]	numeri dispari
[d]	numeri superiori a 20 dispari
[e]	numeri la cui divisione per 2, 3, 4, 5, 6,7 8, 9 da resto
[f]	nessuna delle risposte precedenti
7.	Le targhe automobilistiche sono formate da 2 lettere (26 lettere dell'alfabeto) seguite da 3 cifre e infine da due lettere. Quante targhe diverse possono essere prodotte? ______
8.	Un robot accetta solo quattro comandi: avanti di un passo [A], indietro di un passo [I], ruota a destra di x gradi [D x], e ruota a sinistra di y gradi [S y]. Quali sono i comandi per far descrivere al robot un cerchio di circa 114 passi di diametro? ___________________
9.	Utilizzando i simboli dell'alfabeto morse (punto e linea) si vuole realizzare un codice che codifica le cifre decimali (0,1,...,9). Si conosce che la cifra 0 compare almeno per il 50% nei numeri che verranno trasmessi e la cifra 9 per almeno il 20% dei numeri trasmessi. Definire il codice in modo che si trasmettano il minor numero di simboli possibile. Risposta:
	0:_____1:_____2:_____3:_____4:_____5:_____6:_____7:_____8:_____9:_____
10.Si determini la formula per calcolare la somma dei primi n numeri dispari.___________
11.Si vogliono somare 1024 numeri. Si hanno a disposizione un numero elevato di calcolatrici che possono effettuare le quattro operazioni (+, -, *, /) e ricevere e inviare valori calcolati ad altre calcolatrici. Se ogni calcolatrice impiega un secondo per effettuare un'operazione (nel secondo è compresa la spedizione e il ricevimento di un dato), quanti secondi sono al minimo necessari per effettuare la somma di 1024 numeri?_______________
12.Ad una molla è appeso un secchio contenete acqua. Il secchio ha un foro che fa perdere lentamente ma costantemente acqua dal secchio. All'inizio il secchio viene lasciato in modo che inizia ad andare su e giù. Non è presente alcun attrito e la molla ha coefficiente di elasticità costante e il secchio ha una massa non trascurabile. Secondo te il secchio impiega:
[a]	lo stesso tempo per salire e scendere
[b]	più tempo per scendere che per salire
[c]	più tempo per salire che per scendere
13.Ogni mattone riesce a sopportare il peso di 10 mattoni posti sopra di lui. Sino a che altezza (in mattoni) posso costruire un edificio di qualsiasi forma per mettere su in cima una bandierina (di peso trascurabile). ___________________
14.Si vuole far conoscere la media dei voti presi dai ragazzi e aggiornare la media quando viene sostenuta una interrogazione ma per questioni di privacy non far conoscere tutti i voti dei ragazzi.  Quale sarebbe la formula per calcolare la nuova media conoscendo la media e l'ultimo voto preso. _________________________
15.In una casa vi sono 5 elettrodomestici che consumano rispettivamente:

Numero	Elettrodomestico	Consumo	Tempo	
1	Forno	2200W	1h	
2	Frigorifero	500W	15m	
3	Lavastoviglie	1400W	1h 30m	
4	Televisore	150W	30m	
5	Ferro da stiro	1800W	45m	
	
Qual' è la giusta sequenza di attivazione di tutti gli elettrodomestici per evitare che salti il contatore (limite 3000W) e il tempo totale di attivazione sia il più breve possibile. Risposta:_________________________
16.Un treno parte da Ancona e va verso Pescara alla velocità di 60 Km/h. Nello stesso tempo un treno parte da Pescara e va verso Ancona alla velocità di 80 Km/h. Se la distanza tra Ancona e Pescara è 160 km a che distanza da Ancona si incontreranno?____________
17.I conigli sono molto prolifici. Ogni mese una coppia produce 2 figli (un maschio e una  femmina). Il primo gennaio si ha solo una coppia, dopo 12 mesi quanti saranno i conigli. ________
18.Piove e un signore deve attraversare una piazza di 100 metri. Secondo te per bagnarsi il meno possibile gli conviene:
	[a] correre
	[b] camminare

Domande per chi conosce almeno un linguaggio di programmazione (Pascal o C)

Per quali valori di a e b la valutazione della seguente espressione Pascal o C produce il valore vero?

  	(a > 0) and ((b < 0) or (b > 1))
  	(a > 0) && ((b < 0) || (b > 1))
	
	Risposta:
[a]	a = 5, b = 0
[b]	a = 5, b = 2
[c]	a = -1, b=5
[d]	a = 1, b=1

Cosa stampa il seguente programma Pascal e C

	program cosa(input, output);
		const integer N=100;
		var x, y : integer; 
		begin
			x:=0;
			for y:=1 to  N do x:=x+1; 
			for y:=N/2 downto 1 do x:=x-((y*2)-1);
			write(x);
		end.

  	void main() {
		const int N=100;
		int x, y; x=0;
 		for (y=1;y<N;y++) x+=1; 
		for (y=N/2; y>0; y--) x-=(y*2)-1;
		println(“%d”,x);
	}

	Risposta:______________________________

Si consideri la seguente funzione Pascal o C:

	function f(n : integer): integer
	begin
  		if (n=0) then f := 0;
		else if (n mod 2 = 0) 
			then f := 2 * f(n div 2); 
			else f := 2*f(n div 2) + 2;
	end

	int f(int n) {
  		if (n==0) return 0; 
		else if (n / 2 == 0) return 2*(n/2) 
			else return 2*f(n/2)+2;
	} 

	Quale valore viene prodotto dall'applicazione di f(f(2)):
[a]		2
[b]	4
[c]		6
[d]	nessuna delle precedenti

Cosa stampa il seguente programma Pascal o C

	program cosa(input, output);
		var x : integer; y, z : real;
		begin
  			x := 0; y := 0; read(z); 
  			repeat x := x+1; y:= y+1/x; until y > z;
  			write(x);
		end.

	void main() {
  		int x; float y, z;
  		x=0; y=0; scanf(“%f”,&z); 
  		do { x=x+1; y=y+1/x;} while (y>z);
  		printf(“%d”,x);
	}

	Risposta:
[a]	5
[b]	12
[c]	25
[d]	nessuna delle precedenti
[e]	dipenda da z

Cosa stampa il seguente programma Pascal o C

	program cosa(input, output);
	function f(m : integer; n : integer) : integer
	begin if (m = 0) then f := n;
		else if (n=0) then f:= f(m-1,1);
			else f:=f(m-1,f(m-1,n-1)) end;
	begin writeln(f(0,3),' ', f(1,3),' ',f(2,3),' ',f(3,3));
	end.

	int f(int m, int n) { 
		if (m=0) return n; 
		else if (n=0) return f(m-1,1) 
			else return f(m-1, f(m-1,n-1)); }
	void main() { 
		printf(“%d %d %d %d\n”,f(0,3),f(1,3),f(2,3),f(3,3)); 
	}

	Risposta:
a]	3 1 2 0
b]	3 1 1 0
c]	3 1 0 1
d]	nessuna delle risposte precedenti
Da compilare SOLO da parte dai docenti

1.	Rendimento scolastico
	[a] ottimo, [b] buono, [c] sufficiente, [d] insufficiente
2.	Attitudine alla concentrazione
	[a] ottima, [b] buona, [c] sufficiente, [d] scarsa
3.	Attitudini logico-matematiche
	[a] ottime, [b] buone, [c] sufficienti, [d] scarse
4.	Commento:
      __________________________________________________________________________

	__________________________________________________________________________

	__________________________________________________________________________

	__________________________________________________________________________