Fondamenti di Informatica
Strutture Selettive, Iterative, Gestione File e Grafici in MATLAB: Esercizi (Autobus)
Prof. Arcangelo Castiglione
A.A. 2016/17
• Negli esercizi verranno utilizzate una matrice F ed una matrice D
•
La matrice F rappresenta il prospetto delle fermate (colonne) effettuate da ciascun autobus (righe)
•
La matrice D rappresenta il prospetto delle distanze fra una fermata di partenza (riga) e una fermata di destinazione (colonna)
•
L’elemento F(riga, colonna) assume valore 1 se l’autobus, avente indice riga, effettua la fermata, avente l’indice specificato in colonna
• Esempio: F(4, 7) à ha valore 0 e indica che l’Autobus 4 (riga 4) NON effettuerà la fermata 7 (colonna 7)
• Esempio: F(3, 4) à ha valore 1 e indica che l’Autobus 3 (riga 3) effettuerà la fermata 4 (colonna 4)
•
L’elemento D(riga, colonna) rappresenta la distanza tra la fermata di partenza, avente indice specificato in riga, e la fermata di destinazione, avente l’indice specificato in colonna
•
Esempio: D(2, 5) à indica che la distanza dalla fermata 2 alla fermata 5 è uguale a 4
•
NOTA: Gli elementi sotto la diagonale principale (contrassegnati con il simbolo - ), si assumono essere nulli (con valore 0), poiché non sono necessari per la risoluzione degli esercizi
• Entrambe le matrici contengono esclusivamente dati numerici (evidenziati in arancio nell’esempio)
•
N.B. Le matrici utilizzate sono anche riportate nell’ultima slide
Programmazione in MATLAB | Gestione File | Grafici: Esercizi
F fermate D
<<distanze.txt>> 1 2 3 4 5 6 7 8
1 0 4 5 2 1 5 4 3
2 - 0 3 5 4 2 4 3
3 - - 0 6 2 1 3 2
4 - - - 0 2 2 3 4
5 - - - - 0 1 5 3
6 - - - - - 0 6 4
7 - - - - - - 0 8
8 - - - - - - - 0
fermate [destinazione]
fe rm at e [p ar te nz e]
<<fermate.txt>> 1 2 3 4 5 6 7 8 Autobus 1 (indice 1) 0 1 1 0 1 0 1 1 Autobus 2 (indice 2) 1 0 0 0 1 1 1 0 Autobus 3 (indice 3) 0 0 0 1 0 1 1 1 Autobus 4 (indice 4) 0 1 1 1 0 0 0 0
NOTA: Negli esercizi potete utilizzare funzioni viste a lezione
(negli esempi), funzioni realizzate negli esercizi precedenti
e/o funzioni built-in di MATLAB
Scrivere una funzione chiamata distanza_percorsa, che prenda come argomenti di input: la matrice F (fermate), la matrice D (distanze) ed un numero intero indice_autobus, e restituisca come argomento di output la distanza totale percorsa dall’autobus avente indice indice_autobus
•
Esempio: distanza_percorsa(F, D, 2)à restituisce 8
• Dalla fermata 1 (partenza) alla 5 (destinazione), la distanza, riportata in D(1, 5), è uguale a 1
• Dalla fermata 5 (partenza) alla 6 (destinazione), la distanza, riportata in D(5, 6), è uguale a 1
• Dalla fermata 6 (partenza) alla 7 (destinazione), la distanza, riportata in D(6, 7), è uguale a 6
• Quindi la somma è 8
Scrivere una funzione chiamata autobus_meno_fermate, che prenda come argomenti di input: la matrice F (fermate) e la matrice D (distanze), e restituisca come argomento di output l’indice dell’autobus che effettua meno fermate
•
Esempio: autobus_meno_fermate(F, D)à restituisce 4
Scrivere una funzione chiamata grafico_autobus_fermate, che prenda come argomento di input la matrice F (fermate) e la matrice D (distanze), ed effettui le seguenti operazioni
1.
Mostri un grafico a barre in cui sull’asse X sono riportate le fermate. Sull’asse Y è riportato il numero di autobus che effettuano la fermata, indicata sull’asse X (Esempio: sulla fermata 2, si fermano 2 autobus)
2.
Restituisca un array contenente i valori assegnati all’asse Y (Esempio: Array riga o colonna
[1 2 2 2 2 2 3 2])
Es er ciz io 3 Es er ciz io 1 Es er ciz io 2
F fermate D
Esempio Esercizio 3 (Zoom Slide Successiva)
<<fermate.txt>> 1 2 3 4 5 6 7 8 Autobus 1 (indice 1) 0 1 1 0 1 0 1 1 Autobus 2 (indice 2) 1 0 0 0 1 1 1 0 Autobus 3 (indice 3) 0 0 0 1 0 1 1 1 Autobus 4 (indice 4) 0 1 1 1 0 0 0 0
<<distanze.txt>> 1 2 3 4 5 6 7 8
1 0 4 5 2 1 5 4 3
2 - 0 3 5 4 2 4 3
3 - - 0 6 2 1 3 2
4 - - - 0 2 2 3 4
5 - - - - 0 1 5 3
6 - - - - - 0 6 4
7 - - - - - - 0 8
8 - - - - - - - 0
1 2 3 4 5 6 7 8
0 0.5 1 1.5 2 2.5 3
fermate [destinazione]
fe rm at e [p ar te nz e]
F fermate D
Es em pio Es erc izio 3
<<fermate.txt>> 1 2 3 4 5 6 7 8 Autobus 1 (indice 1) 0 1 1 0 1 0 1 1 Autobus 2 (indice 2) 1 0 0 0 1 1 1 0 Autobus 3 (indice 3) 0 0 0 1 0 1 1 1 Autobus 4 (indice 4) 0 1 1 1 0 0 0 0
<<distanze.txt>> 1 2 3 4 5 6 7 8
1 0 4 5 2 1 5 4 3
2 - 0 3 5 4 2 4 3
3 - - 0 6 2 1 3 2
4 - - - 0 2 2 3 4
5 - - - - 0 1 5 3
6 - - - - - 0 6 4
7 - - - - - - 0 8
8 - - - - - - - 0
Programmazione in MATLAB | Gestione File | Grafici: Esercizi
1 2 3 4 5 6 7 8
0 0.5 1 1.5 2 2.5 3