Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.

Slides:



Advertisements
Presentazioni simili
MATLAB.
Advertisements

MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Corso di Fondamenti di programmazione a.a.2009/2010
Esercizi di esonero (a.a. 2007/2008) Compito C, terzo esercizio Data una sequenza di caratteri s1 ed una stringa s2 diciamo che s1 è contenuta in s2 se.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Creazione di matrici Delimititatore di riga Delimititatore di matrice
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Java base III: Array e Stringhe
ESERCIZI.
Array (ordinamento) CORDA – Informatica A. Ferrari.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
1 Simulazione Numerica dei Fenomeni di Trasporto Necessità di introduzione dei tensori  11  12  13  23  21  22 Vogliamo descrivere in un modo che.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Esercitazioni di Prog. II (esercizi su alberi ennari)
Java World Matrici.
Esercizio fatture.
Tutorato Elementi di Informatica 2013
Script Marco D. Santambrogio –
Richiami di Algebra Matriciale
7. Strutture di controllo
MATRICI (ARRAY) IN MATLAB/OCTAVE
Le postcondizioni specificano l’output della funzione.
Approcci nella soluzione di un problema
Programmazione strutturata
L’input che abbiamo.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
Process synchronization
Process synchronization
realizzato dal prof.Conti Riccardo
Informatica per Scienze Geologiche LT a.a
Process synchronization
Corso Java Esercizi.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
iterazione o ricorsione nel pensare per OGGETTI
Programmazione e Laboratorio di Programmazione
Corso Java Matrici.
Scrivere programmi corretti
Programmazione e Laboratorio di Programmazione
Alberi n-ary Lezioni di C.
Process synchronization
Gestione di un banco di magliette
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Java Matrici.
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
comprensione e modifica di codice
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Process synchronization
Fondamenti di Informatica
Process synchronization
Programmazione e Laboratorio di Programmazione
Corso di Fondamenti di Informatica
Process synchronization
Corso di Fondamenti di Informatica
Algoritmi di ordinamento
Corso di Fondamenti di Informatica
Corso di Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
Corso di Fondamenti di Informatica
Transcript della presentazione:

Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri più alti presenti nel vettore. Script su matrici Realizza uno script che chiede in input due dimensione r e c. Poi crea una matrice di dimensione r e c contenente valori casuali. Infine chiede in input due posizioni c1 e c2, con c1<c2 e produce una matrice M2 che contiene tutte le righe di M1 a partire dalla colonna c1 fino alla colonna c2. Funzioni e vettori Realizza una funzione che prende come parametri in input un vettore V contenente numeri interi e un numero intero x e restituisce la somma di tutti gli elementi di V che si trovano prima del valore x. Funzioni e matrici Scrivi una funzione che prende in input una matrice M con dimensioni qualsiasi e calcola e restituisce la somma dei soli elementi della matrice che si trovano in una posizione di riga e di colonna entrambe pari. Approccio top-down e vettori Realizza, utilizzando l’approccio top-down allo sviluppo di funzioni, una funzione che prende in input un vettore V e restituisce il massimo numero di volte che si ripete in V uno stesso elemento. Approccio top-down e matrici Realizza, utilizzando l’approccio top-down allo sviluppo di funzioni, una funzione che prende in input una matrice M e restituisce il numero di riga in cui la media degli elementi è minima. Ricorsione su numeri naturali Scrivi una funzione ricorsiva che prende in input un x e calcola la somma di tutti i numeri pari tra 0 ed x. Ricorsione su vettori Scrivi una funzione ricorsiva che prende in input un vettore V e restituisce un vettore V2 della stessa dimensione di V, contenente in ciascuna posizione il doppio dell’elemento presente nella stessa posizione in V. Scrivi una funzione ricorsiva che prende in input un vettore V e restituisce un vettore V2 della dimensione doppia di V, che contiene tutti gli elementi di V ripetuti due volte. Cell array Scrivi uno script che crea un cell array contenente in ogni cell un giorno della settimana e un importo economico che esprime il ricavo in euro di una giornata di lavoro di un negozio. Lo script deve produrre un Cell array contenente le sole cell che contengono il giorno e l’importo delle giornate in cui il ricavo è maggiore di zero.

Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri più alti presenti nel vettore. 23 6 90 4 35 17 9

Costruisco il vettore e calcolo la lunghezza, il valore massimo e la sua posizione d = input('Inserisci la dimensione del vettore: '); vettore = uint32(rand(1,d)*100); vettore len=length(vettore); massimo=max(vettore); posmassimo=find(vettore==massimo); Devo ricavare il vettore senza il suo valore massimo. Ho tanti modi diversi, ad esempio... vettoreSenzaMassimo=[vettore(1:posmassimo-1) vettore(posmassimo+1:len)]; %oppure vettoreSenzaMassimo=[]; for i=1:len if i~=posmassimo vettoreSenzaMassimo=[vettoreSenzaMassimo vettore(i)]; end vettoreSenzaMassimo=vettore(find(ones(1,len))~=posmassimo); %oppure, ma solo se il massimo non si ripete vettoreSenzaMassimo=vettore(vettore~=massimo);

Calcolo il secondo massimo, la somma e termino lo script con l’output massimo2=max(vettoreSenzaMassimo); somma=massimo+massimo2; disp ('Somma dei due valori più alti: '); disp (somma);

Script su matrici Realizza uno script che chiede in input due dimensione r e c. Poi crea una matrice di dimensione r e c contenente valori casuali. Infine chiede in input due posizioni c1 e c2, con c1<c2 e produce una matrice M2 che contiene tutte le righe di M1 a partire dalla colonna c1 fino alla colonna c2. 5 7 12 6 9 1 13 2 44 8 121 32 3 c1=2, c2=4 7 12 6 1 13 2 121 32

r=input('Quante righe?'); c=input('Quante colonne?'); M= uint32(rand(r,c)*100); M c1=0;c2=0; while c2<=c1 || c1<1 || c1>c ||c2<1 || c2>c c1=input('Inserisci la prima colonna'); c2=input('Inserisci la seconda colonna'); end M1=[]; for i=1:r M1=[M1 ; M(i,c1:c2)]; M1

Funzioni e vettori Realizza una funzione che prende come parametri in input un vettore V contenente numeri interi e un numero intero x e restituisce la somma di tutti gli elementi di V che si trovano dal primo valore fino ad x. x=6 5 7 12 6 9 function s = sommaFinoX(V, x) s=sum(V(1:min(find(V==x)))); end function s = sommaFinoX(V, x) len=length(V); somma=0; for i=1:len somma=somma+V(i); if V(i)==x break; end s=somma; Oppure…

Funzioni e matrici Scrivi una funzione che prende in input una matrice M con dimensioni qualsiasi e calcola e restituisce la somma dei soli elementi della matrice che si trovano in una posizione di riga e di colonna entrambe pari. function s = sommaMatricePosPari (M) righe=size(M)(1); % [righe colonne]=size(M); colonne=size(M)(2); s=0; for i=2:2:righe for j=2:2:colonne s=s+M(i,j); end End %oppure s=sum(sum(M(2:2:righe,2:2:colonne))); Utilizzando bene l’indicizzazione si può evitare un blocco if che verifica che i e j siano contemporaneamente pari!

Approccio top-down e vettori Realizza, utilizzando l’approccio top-down allo sviluppo di funzioni, una funzione che prende in input un vettore V e restituisce il massimo numero di volte che si ripete in V uno stesso elemento. function c = contaElementoVettore (V, x) c=sum(V==x); end function c = contaElementoVettore (V, x) c=0; for i=1:length(V) if V(i)==x c=c+1; end function m = massimaRipetizione (V) len=length(V); m=0; for i=1:len m2=contaElementoVettore(V,V(i)); if m<m2 m=m2; end function m = massimaRipetizione (V) len=length(V); R=[]; for i=1:len R=[ R sum(V==V(i))]; end m=max(R); 5 3 4 2 9 3 2 1

Approccio top-down e matrici Realizza, utilizzando l’approccio top-down allo sviluppo di funzioni, una funzione che prende in input una matrice M e restituisce il numero di riga in cui la media degli elementi è minima. function m = mediaVettore (V) m = sum(V)/length(V); end function p = mediaMinimaRigheMatrice (M) p=0; mediaMinima=0; [righe colonne]=size(M); for i=1:righe mediaRiga=mediaVettore(M(i,:)) if p==0 || mediaMinima>mediaRiga p=i; mediaMinima=mediaRiga; end

Ricorsione su numeri naturali Scrivi una funzione ricorsiva che prende in input un x e calcola la quantità di numeri pari tra 0 ed x. function p = contaPariRicorsiva (n) if n==0 p=1; else if mod(n,2)==0 p=1+contaPariRicorsiva(n-1); p=contaPariRicorsiva(n-1); end

Ricorsione su vettori Scrivi una funzione ricorsiva che prende in input un vettore V e restituisce un vettore V2 della stessa dimensione di V, contenente in ciascuna posizione il doppio dell’elemento presente nella stessa posizione in V. function V2 = raddoppiaValoriVettoreRicorsiva (V) len=length(V); if len==0 V2=[]; else V2=[V(1)*2 raddoppiaValoriVettoreRicorsiva(V(2:len))]; end

Ricorsione su vettori Scrivi una funzione ricorsiva che prende in input un vettore V e restituisce un vettore V2 della dimensione doppia di V, che contiene tutti gli elementi di V ripetuti due volte. function V2 = raddoppiaElementiVettoreRicorsiva(V) len=length(V); if len==0 V2=[]; else V2=[V(1) V(1) raddoppiaElementiVettoreRicorsiva(V(2:len))]; end

Cell array Scrivi uno script che crea un cell array contenente in ogni cell un giorno della settimana e un importo economico che esprime il ricavo in euro di una giornata di lavoro di un negozio, da inserire in input. Lo script deve produrre un Cell array contenente le sole cell che contengono il giorno e l’importo delle giornate in cui il ricavo è maggiore di zero. giorni={'Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato','DOmenica'}; numeroGiorni=length(giorni); bilancio={}; for i=1:numeroGiorni disp(giorni{i}); importo=input('Inserisci importo: '); bilancio{i}={giorni{i} importo}; end bilancioPositivo={}; cont=1; if bilancio{i}{2}>0 bilancioPositivo{cont}=bilancio{i}; cont=cont+1;

I = {19, [3,12,1996],'Italy', 'Ila',true ,1, 3, [25,26,30]}; Creazione di un archivio con degli studenti mediante cell arrays clear,clc I = {19, [3,12,1996],'Italy', 'Ila',true ,1, 3, [25,26,30]}; L = {19, [21,8,1996],'Italy', 'Leo',false ,1, 2, [25,30]}; A1 = {20, [27,3,1996],'USA','Ang',true ,1, 4, [25,26,30,23]}; B = {20, [27,3,1996],'Canada','Ben',false ,1,4,[25,26,30,23]}; E = {22, [12,1,1994],'Russia', 'Edo',false,1,4,[25,26,30,27]}; F = {18, [16,11,1996],'Canada','Foi',false,1,4,[27,26,30,29]}; A2 = {25, [27,3,1991],'Pakistan', 'Ami',true ,3,15, [27,28,29,30,25,27,28,29]}; N = {18,[3,12,1997],'Pakistan','Nou',true,1,5,[25,26,30,30,30]}; archive={I,L,A1,B,E,F,A2,N}; Realizziamo alcune funzioni print_cells(archive); %stampa a video I nomi degli studenti archive=sort_age(archive); %ordina l’archivio per età print_media(archive); %stampa la media dei voti degli studenti

function print_cells(archive) for pos=1:length(archive) elem = archive{pos}; % estrae l’elemento in posizione pos item= elem{4}; fprintf(' nome= %12s \n',item); %stampa inserendo il nome %in uno spazio di 12 caratteri end

function archive =sort_age(archive) da_ordinare=true; while da_ordinare da_ordinare=false; for pos =1:length(archive)-1 elem1 = archive{pos}; % estraggo l’elemento in posizione pos elem2 = archive{pos+1}; % estraggo l’elemento in posizione pos+1 value1 = elem1{1}; % estraggo l’età 1 value2 = elem2{1}; % estraggo l’età 2 if value1>value2 % se non ordinati li scambio temp = elem1; archive{pos} = archive{pos+1}; archive{pos+1} = temp; da_ordinare = true; % e segno che devo ancora verificare l’ordine end

function print_media(archive) for pos=1:length(archive) elem = archive{pos}; % estraggo l’elemento in posizione pos marks= elem{8}; % estraggo il vettore dei voti name = elem{4}; % estraggo il nome sum=0; for j=1:length(marks) sum=sum+marks(j); end media = sum./length(marks); fprintf(' nome= %12s media %f \n',name,media);  

Esercizio Scrivi una funzione di nome cellParse che prende in input un cell array in cui ciascun elemento può essere una stringa, un vettore o un booleano. La funzione deve restituire: % nStr : il numero di stringhe presenti % nVect: il numero di vettori presenti % nBool: il numero di booleani presenti % d : un cell array di tutte le stringhe % vecLength: la lunghezza media dei vettori % allTrue: true se tutti I valori booleani sono true, false altrimenti

clear,clc % costruisco qualche cell di esempio A=[1 2 3]; B=true; C=Ciao a tutti!'; D=42; E=false; F='abc'; G={A B C D E F} % definisco il cell array %esempio di chiamata di funzione [a b c d e f] = cellParse(G)

function [nStr nVect nBool d vecLength allTrue] = cellParse(v) nStr = 0; % inizializza I risultati nVect= 0; nBool= 0; Lung = 0; allTrue = true; for in =1:length(v) item = v{in}; % estrai l’elemento s1 = class(item); % determina il tipo di oggetto switch s1 case {'logical'} nBool = nBool + 1; %aumenta il numero di booleani if item ==false allTrue=false; end disp('is logical')

case 'double' disp('is double') if length(item)>0 % verifica se l’elemento è un vettore nVect = nVect + 1; Lung = Lung + length(item); end case 'char' % verifica se l’elemento è una stringa nStr = nStr + 1; d{nStr} = item; disp('is char') otherwise disp(‘Tipo di dato sconosciuto') if nVect > 0 vecLength = Lung./nVect; else vecLength = 0;