Prova di ammissione A.A. 2006/2007

Prima parte – Informatica

Esercizio 1

Leggere la seguente pseudocodifica che opera sulle variabili x e y: (con ← si indica l’assegnamento di variabili).

	tmp<-x
	x<-y
	y<-tmp

Quale è lo scopo di queste tre istruzioni?

Esercizio 2

Si prenda un vettore v di 128 elementi che contiene numeri integer in ordine crescente, indicizzati dal numero 0 al 127.
Leggere la seguente funzione:

	funzione foo(x,min,max):
	mezzo=(min+max)/2;
	se (max >= min) 
		se (x==v[mezzo])
			stampa eureka
		altrimenti se (x < v[mezzo])
			foo(x,min,mezzo-1)
		altrimenti 
			foo(x,mezzo+1,max)
  • Cosa fa quando richiamata come foo(42,0,127)?
  • In quanti passi ricorsivi al massimo termina?
  • In generale posto un vettore di dimensione arbitraria quale è l’ordine di grandezza del numero di passi ricorsivi per fare l’elaborazione di foo?

Esercizio 3

Si prenda un vettore v contenente dati integer e di lunghezza n (gli indici vanno da 1 a n) questa pseudocodifica cosa fa?

	per i che assume i valori da n a 2
		per j che assume i valori da 1 a i-1
			se v[j] > v[j+1]
				tmp = v[j]
				v[j] = v[j+1]
				v[j+1] = tmp

Esercizio 4

  • Spiegare brevemente la differenza fra un compilatore ed un interprete.
  • Spiegare brevemente le caratteristiche del linguaggio Java.
  • A cosa servono sistemi come cvs o svn?
  • Sourceforge, Savannah, Freshmeat sono servizi disponibili via Internet. A cosa servono?

Esercizio 5

Scrivere in un qualsiasi linguaggio di programmazione o in pseudocodifica una funzione che verifichi se in un grafo siano presenti o meno dei cicli.

Seconda parte – Inglese

Leggere il seguente brano e descrivere i contenuti in italiano.

(Tratto dal Cap. 3. “The Art of Unix Programming” Eric Steven Raymond ed. Addison-Wesley)

One of the most basic ways operating systems can differ is in the extent to which they can support multiple concurrent processes. At the lowest end (such as DOS or CP/M) the operating system is basically a sequential program loader with no capacity to multitask at all. Operating systems of this kind are no longer competitive on general-purpose computers.
At the next level up, an operating system may have cooperative multitasking. Such systems can support multiple processes, but a process has to voluntarily give up its hold on the processor before the next one can run (thus, simple programming errors can readily freeze the machine). This style of operating system was a transient adaptation to hardware that was powerful enough for concurrency but lacked either a periodic clock interrupt or a memory-management unit or both; it, too, is obsolete and no longer competitive. Unix has preemptive multitasking, in which timeslices are allocated by a scheduler which routinely interrupts or pre-empts the running process in order to hand control to the next one. Almost all modern operating systems support preemption. Note that multitasking is not the same as multiuser. An operating system can be multitasking but single-user, in which case the facility is used to support a single console and multiple background processes. True multiuser support requires multiple user privilege domains, a feature we’ll cover in the discussion of internal boundaries a bit further on.

 
prova_2007.txt · Ultima modifica: 2009/07/24 09:50 da kendra
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki