• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
15
0
0

Testo completo

(1)

Fondamenti di Informatica

Esercitazione MATLAB

Risoluzione di un Problema con Strutturazione del Codice

Sorgente mediante MATLAB

(2)

Esercitazione Guidata

Media Ponderata Studenti

Funzione che prende in input una matrice vs (voti studenti) e un array

cfu

(CFU esami), rappresentati come segue:

La funzione restituisce, in output, un array contenente la

media ponderata

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

Studente Matricola 1

28

25

30

23

19

Studente Matricola 2

24

27

28

21

24

Studente Matricola 3

25

25

19

18

22

Studente Matricola 4

21

30

30

22

30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU

6

3

2

9

4

cfu

vs

(3)

Esercitazione Guidata

Esempio 8

Funzione che prende in input una matrice vs (voti studenti) e un array ce

(CFU esami), rappresentati come segue:

La funzione restituisce, in output, un array contenente la

media ponderata

di ogni studente

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

Studente Matricola 1

28

25

30

23

19

Studente Matricola 2

24

27

28

21

24

Studente Matricola 3

25

25

19

18

22

Studente Matricola 4

21

30

30

22

30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU

6

3

2

9

4

ce

vs

Calcolo della Media Ponderata:

(voto_esame_1*cfu1) + (voto_esame_2*cfu2) + … + (voto_esame_N*cfuN) (cfu1+cfu2+…+cfuN)

(4)

Media Ponderata Studenti | Soluzione step-by-step (1)

Riduzione del problema: Riduciamo il problema principale ad uno più

semplice:

Consideriamo solo una riga della matrice vs

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Studente Matricola 1 28 25 30 23 19

Studente Matricola 2 24 27 28 21 24

Studente Matricola 3 25 25 19 18 22

Studente Matricola 4 21 30 30 22 30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU 6 3 2 9 4

cfu

vs

(5)

Media Ponderata Studenti | Soluzione step-by-step (1)

Riduzione del problema: Riduciamo il problema principale ad uno più

semplice:

Consideriamo solo una riga della matrice vs

La semplificazione consiste nel fatto che ora dobbiamo

calcolare la media

ponderata di un solo studente

Scriviamo quindi una funzione che esegua ciò, che prenderà in input due

array: riga_vs (una riga di vs) e cfu

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Studente Matricola 1 28 25 30 23 19

Studente Matricola 2 24 27 28 21 24

Studente Matricola 3 25 25 19 18 22

Studente Matricola 4 21 30 30 22 30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU 6 3 2 9 4

vs

(6)

Media Ponderata Studenti | Soluzione step-by-step (1)

Riduzione del problema: Riduciamo il problema principale ad uno più

semplice:

Consideriamo solo una riga della matrice vs

La semplificazione consiste nel fatto che ora dobbiamo calcolare la media

ponderata di un solo studente

Scriviamo quindi una funzione che esegua ciò, che prenderà in input due

array: riga_vs (una riga di vs) e cfu

Affrontiamo quindi il sotto-problema del

calcolo della media Ponderata

di un singolo studente

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Studente Matricola 1 28 25 30 23 19

Studente Matricola 2 24 27 28 21 24

Studente Matricola 3 25 25 19 18 22

Studente Matricola 4 21 30 30 22 30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU 6 3 2 9 4

vs

(7)

Media Ponderata Studenti | Soluzione step-by-step (2)

Sotto-problema: Calcolo Media Ponderata (singolo studente)

28 25 30 23 19

6 3 2 9 4

Esercitazione Guidata

riga_vs

(8)

Media Ponderata Studenti | Soluzione step-by-step (2)

Sotto-problema: Calcolo Media Ponderata (singolo studente)

Idea: Sfruttiamo la moltiplicazione elemento per elemento (.*)

28 25 30 23 19 6 3 2 9 4

riga_vs

.*

168 75 60 207 76

riga_vs.*cfu

Esercitazione Guidata

cfu

(9)

Media Ponderata Studenti | Soluzione step-by-step (2)

Sotto-problema: Calcolo Media Ponderata (singolo studente)

Idea: Sfruttiamo la moltiplicazione elemento per elemento (.*)

28 25 30 23 19

6 3 2 9 4

.*

168 75 60 207 76

Per calcolare la media ponderata, ora necessitiamo solo di

due somme:

La

somma degli elementi dell’array riga_vs.*cfu

Lo otteniamo con  sum(riga_vs.*cfu)

La

somma dei CFU e possiamo ottenerla tramite  sum(cfu)

Esercitazione Guidata

riga_vs

riga_vs.*cfu

cfu

(10)

Media Ponderata Studenti | Soluzione step-by-step (2)

Sotto-problema: Calcolo Media Ponderata (singolo studente)

Idea: Sfruttiamo la moltiplicazione elemento per elemento (.*)

28 25 30 23 19

6 3 2 9 4

.*

168 75 60 207 76

Otteniamo la

media ponderata calcolando:

• sum(riga_vs.*cfu) / sum(cfu)

Esercitazione Guidata

riga_vs

riga_vs.*cfu

cfu

(11)

Media Ponderata Studenti | Soluzione step-by-step (3)

Funzione MATLAB media ponderata singolo studente

function [media_pond_stud] = media_ponderata_studente(riga_vs, cfu) media_pond_stud = sum(riga_vs.*cfu) / sum(cfu);

end

(12)

Media Ponderata Studenti | Soluzione step-by-step (4)

Funzione media ponderata di tutti gli studente

Sfrutta la funzione

media_ponderata_studente

(slide precedente)

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

Studente Matricola 1 28 25 30 23 19

Studente Matricola 2 24 27 28 21 24

Studente Matricola 3 25 25 19 18 22

Studente Matricola 4 21 30 30 22 30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU 6 3 2 9 4

cfu

vs

function [mp] = media_ponderata(vs, cfu) [nrighe_vs, ncolonne_vs] = size(vs);

for i = 1:nrighe_vs

riga_vs = vs(i, :); % estraggo l'i-esima riga di vs mp(i) = media_ponderata_studente(riga_vs, cfu);

end

(13)

Media Ponderata Studenti | Soluzione step-by-step (4)

Funzione media ponderata di tutti gli studente (

Esempio d’uso)

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Studente Matricola 1 28 25 30 23 19

Studente Matricola 2 24 27 28 21 24

Studente Matricola 3 25 25 19 18 22

Studente Matricola 4 21 30 30 22 30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU 6 3 2 9 4

vs

>> vs = [28 25 30 23 19; 24 27 28 21 24; 25 25 19 18 22; 21 30 30 22 30]; >> cfu = [6 3 2 9 4]; >> mp = media_ponderata(vs, cfu) mp = 24.4167 23.5833 21.3750 24.7500

24.4167

23.5833

21.3750

24.7500

cfu

(14)

Media Ponderata Studenti

Esercizio

Scrivere una funzione che calcoli la media ponderata di ogni

studente,

utilizzando l’operatore di moltiplicazione

matriciale

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Studente Matricola 1 28 25 30 23 19

Studente Matricola 2 24 27 28 21 24

Studente Matricola 3 25 25 19 18 22

Studente Matricola 4 21 30 30 22 30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU 6 3 2 9 4

vs

(15)

Media Ponderata Studenti

Esercizio | Soluzione

Scrivere una funzione che calcoli la media ponderata di ogni

studente,

utilizzando l’operatore di moltiplicazione

matriciale

Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Studente Matricola 1 28 25 30 23 19

Studente Matricola 2 24 27 28 21 24

Studente Matricola 3 25 25 19 18 22

Studente Matricola 4 21 30 30 22 30

Esame 1 Esame 2 Esame 3 Esame 4 Esame 5

CFU 6 3 2 9 4

vs

cfu

function [mp] = media_ponderata_alternativa(vs, cfu) mp = (vs * cfu') / sum(cfu);

Riferimenti

Documenti correlati

Prendo la variabile fuori base con coefficiente di costo ridotto pi` u piccolo (quindi la x 32 ) e aggiungo il relativo arco all’albero di supporto (vedi Figura 2). Non esistono

L’uso della tecnica digitale permette di risolvere rapidamente problematiche di elevata complessità attraverso la semplice implementazione di algoritmi software, in luogo

Nella risoluzione degli esercizi ` e possibile utilizzare tutti i risultati enunciati a lezione, anche quelli non dimostrati.

Osserviamo che la funzione proposta ` e continua nell’intervallo (0, 1]; pertanto, per stabilire se essa ` e im- propriamente integrabile in tale intervallo, ` e sufficiente studiarne

Si scrivano in particolare le equazioni degli asintoti e le ascisse dei punti di massimo, di minimo e di flesso.. La funzione ha un asintoto orizzontale per x

Esercizio 4 [4 punti] Risolvere nel piano complesso l’equazione 2¯ z 3 = 3i,.. rappresentandone le soluzioni in

Altrimenti si scelga un nodo del circuito con archi incidenti ancora liberi (deve esistere perch´e il grafo `e connesso) e si ripeta la procedura a partire da tale nodo.. Si ottiene

Il problema dato venga dapprima posto nella