Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti Dipartimento di Elettronica e Informazione Informatica B Prof. Marco Masseroli
Consigli utili (1/3) 1. E fondamentale frequentare i laboratori (per tutta la loro durata) non solo in vista della prova d esame, ma per acquisire la conoscenza che servirà nel futuro lavorativo. 2. Studiare il materiale didattico di lezione e di esercitazione per essere consapevoli degli strumenti disponibili di Matlab/Octave e di come vanno usati 3. Consultare libri e/o appunti durante l esame è permesso ma comporta una perdita di tempo, che può essere evitata preparandosi adeguatamente. Conoscere MOLTO bene la sintassi delle istruzioni del linguaggio Matlab/Octave evita di fare errori e fa risparmiare tempo. 4. Maggiore è il numero di funzioni predefinite di Matlab/Octave che si conosce, più la quantità di codice da scrivere si riduce: Matlab/ Octave mettono a disposizione funzioni per ogni applicazione. 2
Consigli utili (2/3) 5. Per risolvere gli esercizi bisogna avere chiara in mente la procedura da adottare. La scrittura del codice è una conseguenza. Procedere per tentativi senza la preliminare organizzazione della risoluzione non aiuta, anzi, peggiora le cose. 6. Pensare ai passi della soluzione, scriverli (su carta/ al PC), e poi occuparsi del codice e della sua scrittura 7. Gli esercizi che vengono spiegati ad esercitazione DEVONO essere rifatti in prima persona studiando la soluzione e cercando di rifarli non utilizzando le slides ma unicamente l help di Matlab/Octave. 8. Se qualcosa della soluzione contenuta nelle slides non vi sembra corretta consultate quelle presenti sul sito. Queste vengono periodicamente riviste e corrette. 3
Consigli utili (3/3) 9. Chi ha più difficoltà a scrivere codice/programmi è bene cha faccia più possibile esercizio SU CALCOLATORE, compilando/creando ed eseguendo il programma; 10. Chi non ha un proprio PC, può usare le risorse messe a disposizione dal Politecnico: le aule informatizzate e i PC si possono utilizzare con le stesse modalità adottate per il laboratorio. 4
Problema 1 1. Creare la funzione che riceva in ingresso due vettori e restituisca in uscita il vettore delle somme dei valori occupanti la medesima posizione nei vettori in ingresso. Nel caso i vettori non abbiamo uguale dimensione non procedere al calcolo ma visualizzare all'utente un opportuno messaggio. 2. Creare un programma che faccia uso della funzione realizzata. 5
Problema 2 Ordinamento 1. Creare una funzione che riceva in ingresso un vettore di numeri e restituisca il vettore con gli elementi ordinati dal più piccolo al più grande (cioè in modo crescente). 2. Creare un programma che faccia uso della funzione realizzata: dapprima, l utente inserisce da tastiera il numero di elementi che formerà il vettore; poi, inserisce da tastiera ogni elemento del vettore. Il programma visualizza a schermo la serie ordinata. 6
Problema 2 Ordinamento 3 1 4 5 9 2 6 1 2 3 4 5 6 9 7
Problema 2 Ordinamento Algoritmo Bubblesort 8
Problema 2 Ordinamento Algoritmo Bubblesort 9
Problema 3 Ricerca 1. Creare una funzione che effettua la ricerca di un numero in un vettore di numeri. La funzione deve restituire la posizione del numero nel vettore, nel caso esista, altrimenti deve restituire zero (non esistenza del numero nel vettore). 2. Creare un programma che faccia uso della funzione realizzata: a) l utente inserisce da tastiera il numero di elementi che formerà il vettore; b) inserisce da tastiera ogni elemento del vettore; c) inserisce da tastiera il numero da cercare. Il programma visualizza a schermo il risultato della ricerca effettuata. 10
Problema 3 Ricerca - algoritmo Algoritmo che cerca se in un insieme X di k elementi (k>=1) è contenuto un elemento dato j. Indicati gli elementi di X con X(1), X(2),, X(k) sotto un ordinamento qualsiasi, l algoritmo confronta j con X(1), X(2), fino a trovare un valore i <= k per cui j = X(i), o a esaurire gli elementi dell insieme senza trovare j 11
Problema 4 Creare un programma per: Generare un vettore riga num_matricola contenente 300 numeri casuali tra 750000 e 800000 Generare un vettore p1 riga contenente 300 numeri casuali 0 o 1. Generare un vettore v1 riga contente 300 numeri casuali interi tra 0 e 18 Generare un vettore p2 riga contenente 300 valori 0 o 1. Gli 1 devono esistere in corrispondenza degli 1 in p1 e dei valori maggiori o uguali a 8 in v1. Generare un vettore v2 riga contente 300 numeri: casuali interi tra 0 e 18 ove ci sono gli 1 in p2, zero altrove. Salvare i vettori sul file infob.mat 12
Problema 5 Creare un programma per: Leggere il file infob.mat (generato nell'esercizio 4). Generare un vettore v_tot riga di 300 elementi avente come elemento di posto ii la somma degli elementi posto ii dei due vettori v1 e v2, solo nel caso in cui p1(ii) e p2(ii) siano uguali ad uno (usando la funzione realizzata nell'esercizio 1) e zero altrimenti. Creare una struttura dati, di nome "studente", avente i seguenti campi: - matricola: prende i valori da num_matricola; - presenza_prova1: prende i valori da p1; - presenza_prova2: prende i valori da p2; - voto_prova1: prende i valori da v1; - voto_prova2: prende i valori da v2; - voto_totale: prende i valori da v_tot; 13