• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
16
0
0

Testo completo

(1)

Fondamenti di Informatica

Gestione File e Grafici – Possibili Soluzioni

Prof. Christian Esposito

Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I)

A.A. 2017/18

(2)

Parte I

Gestione File e Grafici

(3)

In questa esercitazione verrà utilizzata una matrice C ed una matrice I

L’elemento C(riga, colonna) rappresenta il numero di vetture vendute di una data marca (specificata dalla colonna), appartenenti ad un dato segmento (specificato dalla riga)

Esempio: C(2, 1) à Indica che sono state vendute 40 vetture di Marca X (avente indice di colonna 1), appartenenti al Segmento B (avente indice di riga 2)

L’elemento I(riga, colonna) rappresenta l’incasso per una singola vettura venduta di una data marca (specificata dalla colonna), appartenente ad un dato segmento (specificato dalla riga)

Esempio: I(1, 2) à Indica che è stato ottenuto un incasso di 18000 per una singola vettura di Marca Y (avente indice di colonna 2), appartenente al Segmento A (avente indice di riga 1)

Sopra è mostrato un esempio di C e I

• Entrambe le matrici contengono esclusivamente dati numerici (evidenziati in arancio nell’esempio)

NOTA: Negli esercizi possono essere utilizzate funzioni viste a lezione (negli esempi), funzioni realizzate negli esercizi precedenti e/o funzioni built-in di MATLAB

<<concessionaria.txt>> Marca X

(indice 1) Marca Y

(indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

C I

Gestione File e Grafici

(4)

Scrivere una funzione chiamata auto_vendute, che prenda come argomenti di input: la matrice C (concessionaria) ed un numero intero indice_segmento, e restituisca come argomento di output il numero totale di auto vendute per il segmento con indice indice_segmento

Esempio: auto_vendute(C, 2)à restituisce 62 Possibile Soluzione 1

Possibile Soluzione 2

<<concessionaria.txt>> Marca X

(indice 1) Marca Y

(indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Esercizio1

function [ auto_vendute_segmento ] = auto_vendute(C, indice_segmento) auto_vendute_segmento = sum(C(indice_segmento, :));

end

function [ auto_vendute_segmento ] = auto_vendute(C, indice_segmento) auto_vendute_ogni_segmento = sum(C, 2);

auto_vendute_segmento = auto_vendute_ogni_segmento(indice_segmento);

end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

I

Gestione File e Grafici

(5)

Scrivere una funzione chiamata incasso_concessionaria, che prenda come argomenti di input:

la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’incasso totale realizzato della concessionaria

Esempio: incasso_concessionaria(C, I)à restituisce 4022000 Possibile Soluzione 1

Possibile Soluzione 2

<<concessionaria.txt>> Marca X

(indice 1) Marca Y

(indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Esercizio2

function [ incasso_totale ] = incasso_concessionaria(C, I) incasso_totale = sum(sum(C .* I));

end

function [ incasso_totale ] = incasso_concessionaria(C, I) [num_segmenti, num_marche] = size(C);

somma = 0;

for indice_marca = 1:num_marche

somma = somma + sum(C(:, indice_marca) .* I(:, indice_marca));

end

incasso_totale = somma;

end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

I

Gestione File e Grafici

(6)

Scrivere una funzione chiamata segmento_piu_redditizio, che prenda come argomenti di input: la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’indice del segmento che genera incassi massimi

Esempio: segmento_piu_redditizio(C, I)à restituisce 3

OSSERVAZIONI: Il valore 3 si riferisce al Segmento C (che genera gli incassi massimi, equivalenti, a 1940000) Possibile Soluzione 1

Possibile Soluzione 2

<<concessionaria.txt>> Marca X

(indice 1) Marca Y

(indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Esercizio3

function [ indice_segmento ] = segmento_piu_redditizio(C, I)

[valore_massimo_segmento, indice_segmento] = max(sum(C .* I, 2));

end

function [ indice_segmento ] = segmento_piu_redditizio(C, I) [num_segmenti, num_marche] = size(C);

for indice_segmento = 1:num_segmenti

somme_righe(indice_segmento) = sum(C(indice_segmento, :) .* I(indice_segmento, :));

end

[massimo, indice_segmento] = max(somme_righe);

end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

I

Gestione File e Grafici

(7)

Scrivere una funzione chiamata incasso_medio_marca, che prenda come argomento di input la matrice I (incasso_singolare) ed un numero intero indice_marca, e restituisca come argomento di output l’incasso medio di vendita di tutte le vetture della marca avente indice indice_marca

Esempio: incasso_medio_marca(I, 1) à restituisce 13333.3 Possibile Soluzione

<<concessionaria.txt>> Marca X

(indice 1) Marca Y

(indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Esercizio4

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

I

function [ incasso_medio ] = incasso_medio_marca(I, indice_marca) incasso_medio = mean(I(:, indice_marca));

end

Gestione File e Grafici

(8)

Scrivere un M-File Script chiamato concessionaria_script.m che effettui le seguenti operazioni

1. Importi la matrice C dal file concessionaria.txt 2. Importi la matrice I dal file incasso_singolare.txt

3. Invochi la funzione dell’Esercizio 2 (chiamata incasso_concessionaria) con gli argomenti di input: C e I, ed infine mostri a video il risultato della funzione stessa

NOTA: I file concessionaria.txt e incasso_singolare.txt contengono solo dati numerici. È utilizzato il separatore virgola (,) per separare le colonne (suggerimento: utilizzare la funzione importdata). Si assuma che i file siano memorizzati all’interno della Current Directory

Possibile Soluzione

<<concessionaria.txt>> Marca X

(indice 1) Marca Y

(indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Esercizio5

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

I

C = importdata('concessionaria.txt');

I = importdata('incasso_singolare.txt');

incasso_concessionaria(C, I)

Contenuto del file

concessionaria_script.m

Gestione File e Grafici

(9)

Parte II

Gestione File e Grafici

(10)

In questa esercitazione verrà utilizzata una matrice C ed un array riga T

L’elemento C(riga, colonna)rappresenta l’importo del conto, specificato dalla riga, ospitato presso la banca specificata dalla colonna

Esempio: C(1, 2) à indica che l’importo del Conto 1 (riga 1), ospitato presso la Banca B (colonna 2) ammonta a 7500

L’elemento T(indice) rappresenta il tasso di interesse annuale applicato da una data banca (specificata dalla colonna)

Sopra è mostrato un esempio di C e T

Nell’esempio, la matrice C riporta 9 conti (3 ospitati presso la Banca A, 3 ospitati presso la Banca B e 3 ospitati presso la Banca C)

• Entrambe le matrici contengono esclusivamente dati numerici (evidenziati in arancio nell’esempio)

NOTA: Negli esercizi possono essere utilizzate funzioni viste a lezione (negli esempi), funzioni realizzate negli esercizi precedenti e/o funzioni built-in di MATLAB

<<conti.txt>> Banca A

(indice 1) Banca B

(indice 2) Banca C (indice 3) Conto 1 (indice 1) 11000 7500 9200 Conto 2 (indice 2) 9000 5200 6000 Conto 3 (indice 3) 4000 4600 5600

C T

Gestione File e Grafici

<<tassi.txt>> Banca A Banca B Banca C

Tassi di Interesse Annuali 4.5 3.7 4.1

(11)

Scrivere una funzione chiamata totale_conti, che prenda come argomenti di input: la matrice C (conti) ed un numero intero indice_banca, e restituisca come argomento di output l’ammontare totale dei conti mantenuti presso la banca con indice indice_banca

Esempio: totale_conti(C, 2)à restituisce 17300 Possibile Soluzione 1

Possibile Soluzione 2

Esercizio1

<<conti.txt>> Banca A

(indice 1) Banca B

(indice 2) Banca C (indice 3)

Conto 1 (indice 1) 11000 7500 9200

Conto 2 (indice 2) 9000 5200 6000

Conto 3 (indice 3) 4000 4600 5600

C T

function [ totale ] = totale_conti(C, i) totale = sum(C(:,i));

end

function [ totale ] = totale_conti(C, i) [num_conti, num_banche] = size(C);

somma = 0;

for indice_conto = 1:num_conti

somma = somma + C(indice_conto, i);

end

totale = somma;

end

Gestione File e Grafici

<<tassi.txt>> Banca A Banca B Banca C

Tassi di Interesse Annuali 4.5 3.7 4.1

(12)

Scrivere una funzione interesse_conto, che prenda come argomenti di input: la matrice C (conti), l’array T (tassi), un numero intero indice_conto ed un numero intero indice_banca, e restituisca come argomento di output l’ammontare dell’interesse annuale sul conto identificato dall’indice indice_conto, ospitato presso la banca identificata dall’indice indice_banca

Esempio: interesse_conto(C, T, 2, 3)à restituisce 246.0000

NOTA: Esemplificazione calcolo degli interessi: (importo_conto_corrente * tasso) / 100 Possibile Soluzione

Esercizio2

<<conti.txt>> Banca A

(indice 1) Banca B

(indice 2) Banca C (indice 3)

Conto 1 (indice 1) 11000 7500 9200

Conto 2 (indice 2) 9000 5200 6000

Conto 3 (indice 3) 4000 4600 5600

C T

function [ interesse ] = interesse_conto(C, T, indice_conto, indice_banca) interesse = (C(indice_conto, indice_banca) * T(indice_banca)) / 100;

end

Gestione File e Grafici

<<tassi.txt>> Banca A Banca B Banca C

Tassi di Interesse Annuali 4.5 3.7 4.1

(13)

Scrivere una funzione chiamata interessi_totali, che prenda come argomenti di input: la matrice C (conti) e l’array T (tassi), e restituisca come argomento di output il totale degli interessi di tutti i conti mantenuti da tutte le banche

Esempio: interessi_totali(C, T)à restituisce 2.5729e+03 (equivale a 2572.90) Possibile Soluzione 1

Possibile Soluzione 2

Esercizio3

<<conti.txt>> Banca A

(indice 1) Banca B

(indice 2) Banca C (indice 3)

Conto 1 (indice 1) 11000 7500 9200

Conto 2 (indice 2) 9000 5200 6000

Conto 3 (indice 3) 4000 4600 5600

C T

function [ interessi ] = interessi_totali(C, T) interessi = sum(C * T' / 100);

end

function [ interessi ] = interessi_totali(C, T) [num_conti, num_banche] = size(C);

somma = 0;

for indice_conto = 1:num_conti

for indice_banca = 1:num_banche

somma = somma + interesse_conto(C, T, indice_conto, indice_banca);

end end

interessi = somma;

end

Gestione File e Grafici

<<tassi.txt>> Banca A Banca B Banca C

Tassi di Interesse Annuali 4.5 3.7 4.1

(14)

Scrivere una funzione chiamata tasso_interesse_minimo, che prenda come argomento di input:

l’array T (tassi), e restituisca in output l’indice della banca che propone il tasso di interesse minimo

Esempio: tasso_interesse_minimo(T)à restituisce 2

OSSERVAZIONI: Il valore 2 si riferisce alla Banca B (che ha il tasso di interesse minimo, ovvero, a 3.7) Possibile Soluzione

Esercizio4

<<conti.txt>> Banca A

(indice 1) Banca B

(indice 2) Banca C (indice 3)

Conto 1 (indice 1) 11000 7500 9200

Conto 2 (indice 2) 9000 5200 6000

Conto 3 (indice 3) 4000 4600 5600

C T

function [ tasso_minimo ] = tasso_interesse_minimo(T) [valore_minimo, tasso_minimo] = min(T);

end

Gestione File e Grafici

<<tassi.txt>> Banca A Banca B Banca C

Tassi di Interesse Annuali 4.5 3.7 4.1

(15)

Gestione File e Grafici

Scrivere una funzione chiamata grafico_banche, che prenda come argomenti di input: la matrice C (conti), e mostri un grafico con le seguenti proprietà:

Sull’asse X, riporti gli indici di tutte le banche

Sull’asse Y, per ogni punto, riporti l’ammontare totale dei conti ospitati dalla banca riportata sull’asse X

Titolo: ‘Grafico Banche’

Etichetta Asse X: ‘Banche’

Etichetta Asse Y: ‘Ammontare Conti’

Inoltre, Restituisca un array contenente i valori assegnati all’asse Y (Esempio: Array riga o colonna

[ 24000 17300 20800 ])

Esercizio5

<<conti.txt>> Banca A

(indice 1) Banca B

(indice 2) Banca C (indice 3)

Conto 1 (indice 1) 11000 7500 9200

Conto 2 (indice 2) 9000 5200 6000

Conto 3 (indice 3) 4000 4600 5600

C T

EsempioEsercizio5

function [ ammontare_conti ] = grafico_banche(C) [num_conti, num_banche] = size(C);

x = 1:num_conti;

y = sum(C);

plot(x, y);

title('Grafico Banche');

xlabel('Banche');

ylabel('Ammontare Conti');

ammontare_conti = y;

end

<<tassi.txt>> Banca A Banca B Banca C

Tassi di Interesse Annuali 4.5 3.7 4.1

(16)

Scrivere un M-File Script chiamato conti_script.m che effettui le seguenti operazioni

1. Importi la matrice C dal file conti.txt 2. Importi la matrice T dal file tassi.txt

3. Invochi la funzione dell’Esercizio 2 (chiamata interesse_conto) con gli argomenti di input: C, T, 2 e 3, ed infine mostri a video il risultato della funzione stessa

NOTA: I file conti.txt e tassi.txt contengono solo dati numerici. È utilizzato il separatore virgola (,) per separare le colonne (suggerimento: utilizzare la funzione importdata). Si assuma che i file siano memorizzati all’interno della Current Directory

Possibile Soluzione

Esercizio6

<<conti.txt>> Banca A

(indice 1) Banca B

(indice 2) Banca C (indice 3)

Conto 1 (indice 1) 11000 7500 9200

Conto 2 (indice 2) 9000 5200 6000

Conto 3 (indice 3) 4000 4600 5600

C T

C = importdata('conti.txt');

T = importdata('tassi.txt');

interesse_conto(C, T, 2, 3)

Contenuto del file conti_script.m

Gestione File e Grafici

<<tassi.txt>> Banca A Banca B Banca C

Tassi di Interesse Annuali 4.5 3.7 4.1

Riferimenti

Documenti correlati

Il programma deve chiedere in input una targa, ricercarla nel vettore targhe e se esiste usare la funzione calcola_bollo per calcolare il bollo da pagare, tale

[r]

[r]

Osserviamo preliminarmente che deve essere x 6= −5, perch` e altrimenti il termine generale della serie non ` e definito.. Per tali x c’` e sia convergenza semplice

Avendo evidentemente f α anche segno costante, andiamo a studiarne il comportamento asintotico agli estremi dell’intervallo di integrazione... Essendo una serie a termini

Invochi la funzione dell’Esercizio 1 (chiamata incassi_totali_teatro) con gli argomenti di input: P, T ed I, e mostri a video il risultato della funzione stessa1. Generi un grafico

Invochi la funzione dell’Esercizio 1 (chiamata incassi_totali_teatro) con gli argomenti di input: P, T ed I, e mostri a video il risultato della funzione stessa1. Generi un grafico

Invochi la funzione dell’Esercizio 3 (NOTA BENE: NON è necessario aver svolto tale esercizio), chiamata piu_acquistato, con gli argomenti di input: P e O, ed infine mostri a video i