• Non ci sono risultati.

Prova d’esame di Laboratorio di Programmazione Strutturata per il corso di laurea in Scienze e Tecnologia dei Media Prova scritta – 23 Settembre 2013

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova d’esame di Laboratorio di Programmazione Strutturata per il corso di laurea in Scienze e Tecnologia dei Media Prova scritta – 23 Settembre 2013"

Copied!
2
0
0

Testo completo

(1)

Prova d’esame di Laboratorio di Programmazione Strutturata per il corso di laurea in Scienze e Tecnologia dei Media

Prova scritta – 23 Settembre 2013

• Esercizio 1

Si scriva una function ricorsiva che effettua il calcolo di un qualsiasi elemento F

n

della successione di Fibonacci, per ogni indice intero n ≥ 0 . Per fissare le idee, il prototipo della function richiesta `e il seguente:

int fibo ricor(int n);

inoltre, si ricordi che una function `e detta ricorsiva, quando al suo interno essa richiama se stessa. Infine, si riporta qui di seguito la definizione della successione di Fibonacci nella sua classica notazione matematica:

F

0

= F

1

= 1 , F

n

= F

n−1

+ F

n−2

∀ n ≥ 2 .

All’interno di un commento della function fibo ricor, si indichi chiaramente come varia la sua complessit`a computazionale in funzione del valore di n.

• Esercizio 2

Si scriva una function che, in modo iterativo, effettua il calcolo di un qualsiasi elemento F

n

della successione di Fibonacci, per ogni indice intero n ≥ 0 . Per fissare le idee, il prototipo della function richiesta `e il seguente:

int fibo iter(int n);

si suggerisce di utilizzare almeno tre variabili Fr, Fu, Fp e un contatore j, all’interno di tale function. Infatti, `e consigliabile inizializzare opportunamente le variabili Fr, Fu e Fp per poi realizzare un ciclo sul contatore j, in modo tale che ad ogni iterazione il valore di Fr sia ridefinito cos`ı da essere uguale a F

j−1

+ F

j−2

, mentre i valori di Fp e Fu devono essere posti uguali a, rispettivamente, F

j−1

e F

j

. In altri termini, le variabili Fp e Fu assumono rispettivamente il significato di penultimo e ultimo valore calcolato della successione di Fibonacci; infine, al termine dell’esecuzione del ciclo sul contatore j, in Fr sar`a contenuto il valore richiesto (cio`e proprio F

n

).

Anche per quanto riguarda la function fibo iter, all’interno di un commento, si indichi chiaramente come varia la sua complessit`a computazionale in funzione del valore di n.

• Esercizio 3

Si consideri una lista concatenata bidirezionale che `e implementata in linguaggio C,

in modo tale che ogni suo nodo `e rappresentato da una struct costituita da tre

campi: il primo `e di tipo int, mentre il secondo e il terzo sono due puntatori alle

strutture che indirizzano rispettivamente al nodo successivo e a quello precedente

della sequenza costituita dalla lista stessa. Per fissare le idee, ogni nodo di tipo

NodoLista sia definito come segue:

(2)

2

struct NODO { int info;

struct NODO *next;

struct NODO *prev;

};

typedef struct NODO NodoLista;

Come al solito, la lista concatenata bidirezionale pu`o essere ricostruita a partire da un puntatore al primo elemento della sequenza. ` E quindi utile introdurre il tipo Lista definito come segue:

typedef struct NodoLista* Lista;

Inoltre, come da tradizione, l’ultimo elemento della lista `e quel nodo tale che il suo puntatore next contiene l’indirizzo (fasullo) NULL. Il secondo puntatore costituisce una struttura di tipo circolare, ci`o significa che il primo elemento punta all’ultimo, il quale a sua volta indirizza al penultimo e cos`ı via fino al secondo elemento, il quale punta al primo elemento della lista, completando la circolarit`a.

Si scriva una function il cui prototipo `e il seguente:

void stampa allindietro(Lista L);

essa si limita a visualizzare sullo schermo i nodi della lista (o, pi` u esattamente, le informazioni relative ai nodi stessi) in ordine inverso. In dettaglio, le scritte che devono apparire sul video sono del tipo seguente:

Il nodo con info u non precede alcun altro nodo Il nodo con info p precede il nodo con info u

. . .

Il nodo con info s precede il nodo con info t Il nodo con info p

precede il nodo con info s

Ovviamente, nell’elenco precedente la variabile u rimpiazza il valore del campo info relativo all’ultimo nodo, mentre p `e quello relativo al penultimo nodo e cos`ı via fino a t , s e p

che rappresentano i valori del campo info contenuti, rispettivamente, nel terzo, nel secondo e nel primo nodo.

Nella codifica della function stampa allindietro, si consiglia di prestare parti- colare attenzione ai seguenti due casi:

• la lista `e costituita da un solo nodo che `e quello che si trova all’indirizzo di memoria L;

• la lista `e vuota. In quest’ultimo caso si faccia apparire sullo schermo la scritta seguente:

Non ci sono nodi nella lista!

Riferimenti

Documenti correlati

a) la velocità della sferetta quando ripasserà per il punto A, dopo essere stata lasciata libera di muoversi. Si precisi se la quantità di calore è assorbita o ceduta. b) Si calcoli

Dopo l'urto i due corpi proseguono il loro moto lungo una guida verticale perfettamente liscia e semi-circolare, di raggio R = 1 m, come mostrato in figura.. la velocità dei

a) Supponendo che il piano inclinato sia perfettamente liscio, si calcoli il modulo della tensione T della fune e quello della reazione normale N esercitata dal piano

F trattore= 330*9,8*0,8= 2587 N ,la tensione della fune è la stessa. Per costruire un edificio viene usata una gru per sollevare, a velocità costante, dei mattoni del peso totale di

Chiusano Silvia Molto buono. Dinamo Eleonora

Gli studenti che si sono iscritti alla prova orale di luglio troveranno la convocazione alla prova orale su questa pagina web intorno a metà luglio.. Il docente del corso:

● Fornire lo Fornire lo scheletro scheletro di un tipo per le coppie di reali e di di un tipo per le coppie di reali e di un metodo statico Java (solo intestazione) che implementi

> vettore vettore ORA ORA di lunghezza di lunghezza n n di orari espressi come coppie di orari espressi come coppie di interi che rappresentano risp. ore e