fondamenti di informaticacesposito/materiale/lezioni... · 2017. 10. 31. · fondamenti di...

88
Fondamenti di Informatica Introduzione alla programmazione in MATLAB: Parte 1 (M-File e Input/Output) Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2017/18 Introduzione alla programmazione in MATLAB: Parte 1

Upload: others

Post on 28-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • FondamentidiInformaticaIntroduz ionea l la programmazione in MATLAB: Parte 1 (M-F i le e Input/Output)

    Prof. Chr i st ian Espos i to

    Corso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )

    A .A . 2017/18

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

  • IntroduzioneallaprogrammazioneinMATLAB:Parte1

    OUTLINE

    •M-File•M-FileScript•M-FileFunction

    • Input/Output

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 02/88

  • M-File– 1/2

    • Finora abbiamo inserito comandi, istruzioni e funzioniMATLAB direttamente mediante la Command Window• Tuttavia, ciò può causare disagio, specialmente quando comandi,istruzioni e funzioni devono essere rieseguiti più volte• Magari in più sessioni di lavoro MATLAB distinte• Con leggere modifiche• Etc

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 03/88

  • M-File– 1/2

    • Finora abbiamo inserito comandi, istruzioni e funzioniMATLAB direttamente mediante la Command Window• Tuttavia, ciò può causare disagio, specialmente quando comandi,istruzioni e funzioni devono essere rieseguiti più volte• Magari in più sessioni di lavoro MATLAB distinte• Con leggere modifiche• Etc•MATLAB permette di risolvere questi problemiattraverso l’utilizzo degliM-File

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 04/88

  • M-File– 2/2

    •MATLAB consente di memorizzare una sequenza diistruzioni in un file, dettoM-File• In particolare, unM-File può essere di due tipi• M-File Script: contiene una sequenza di comandi o istruzioniMATLAB, nella stessa forma in cui vengono scritti usando CommandWindow• M-File Function: contiene nuove funzioni MATLAB definitedall’utente. In generale, tali funzioni accettano dati in input erestituiscono dati di output, come risultato della loro elaborazione

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 05/88

  • M-FileScript– 1/9• In MATLAB è possibile rieseguire comandi, istruzioni e funzionimediante i seguenti passi• Creare un file (che conterrà la lista di comandi, istruzioni e funzioni)• Salvare il file• Eseguire il file

    • Un file contenente una lista di comandi/istruzioni/funzioni MATLABviene detto• M-File Script

    • OgniM-file Script ha l’estensione .m

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 06/88

  • M-FileScript– 2/9• Piùprecisamente,unM-file Script è• UnfileesternocontenentesequenzediistruzioniMATLAB• Digitandoilnomedelfile,comandi/istruzioni/funzionipreseininputdaMATLABsonoottenutedirettamentedatalefile

    • Utileperl'automazionediblocchidicomandi/istruzioni/funzioniMATLAB• Comeadesempiocalcolicheènecessarioeseguirepiùvolte(manualmente)dallaCommand Window

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 07/88

  • M-FileScript– 3/9• Esempio• Creare uno script (di nome sommamat.m) che• Effettua la somma di due matrici A e B• Salva il risultato nella matrice C ed infine lo stampa

    • A e B sono definite come segue• 𝐴 = 2 34 5 , 𝐵 =

    6 78 9

    • SOLUZIONEMATLAB per sommare A e B• Tale soluzione andrà inserita nel file sommamat.m

    A=[2 3;4 5];B=[6 7; 8 9];C=A+B

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 08/88

  • M-FileScript– 4/9• Creare uno script con MATLAB

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 09/88

  • M-FileScript– 4/9(VersionipiùrecentidiMATLAB)• Creare uno script con MATLAB

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 10/88

  • M-FileScript– 4/9(VersionipiùrecentidiMATLAB)• Creare uno script con MATLAB

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 11/88

  • M-FileScript– 4/9(UtilizzandolaCommandWindow)• Creare uno script con MATLAB utilizzando il comando edit

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 12/88

  • M-FileScript– 5/9• Editor diM-File Script• Inserire le istruzioni MATLAB mediante l’Editor diM-file Script

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 13/88

  • M-FileScript– 6/9• Salvare l’M-File Script (il .m viene automaticamente aggiunto)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 14/88

  • M-FileScript– 6/9(VersionipiùrecentidiMATLAB)• Salvare l’M-File Script (il .m viene automaticamente aggiunto)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 15/88

  • M-FileScript– 6/9(VersionipiùrecentidiMATLAB)• Salvare l’M-File Script (il .m viene automaticamente aggiunto)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 16/88

  • M-FileScript– 6/9• Salvare l’M-File Script (il .m viene automaticamente aggiunto)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 17/88

  • M-FileScript– 7/9• Eseguire l’M-File Scriptmediante la Command Window• L’M-File Script deve essere memorizzato nella Current Directory• Per eseguirlo è sufficiente digitare nella Command Window il nome del filescript (senza estensione .m)

    • Esempio• Supponiamo di aver memorizzato il file script dell’esempio precedentenella Current Directory, con il nome di sommamat.m

    >> sommamat

    C =

    8 1012 14

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 18/88

  • • GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli

    Scriptpercalcolarelamediadi3numeri

    Workspace

    M-FileScript– 8/9

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 19/88

  • Scriptpercalcolarelamediadi3numeri

    VariabilipresentinelWorkspace primadell’esecuzionedelloscript

    Command Window

    M-FileScript– 8/9• GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Definiscotrevariabilia, b, c

    20/88

  • • GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli

    Scriptpercalcolarelamediadi3numeri

    Command Window

    VariabileinseritanelWorkspace dopol’esecuzionedello

    script

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Eseguoloscriptchiamatomedia

    21/88

  • • GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli

    M-FileScript– 8/9

    Scriptpercalcolarelamediadi3numeri

    Workspace

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 22/88

  • • GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli

    M-FileScript– 8/9

    Scriptpercalcolarelamediadi3numeri

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    VariabiliinseritenelWorkspace dopol’esecuzionedello

    scriptEseguoloscriptchiamatomedia

    23/88

  • M-FileScript– 9/9•M-File Script• VANTAGGI:• È possibile modificare (se necessario) comandi/istruzioni/funzioninel file una sola volta, ed eseguire tale file (script) più volte

    • SVANTAGGI:• Tutte le variabili create all’interno dello script sono aggiunte alWorkspace, e questo può portare a problemi indesiderati• Ad Esempio• Alcune variabili già esistenti nel Workspace vengono sovrascritte• Lo stato di alcune variabili già esistenti nel Workspace viene modificato• Etc

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 24/88

  • CommentiinMATLAB– 1/3• GliM-FileScript (maanchegliM-FileFunction)possonocontenerequalsiasiseriediistruzioni/comandi/funzioniMATLAB,maanchecommenti• Qualsiasitestochesegueunsegnodipercentuale(%)suunadatalineaèdettotestodicommento• Icommenti• Possonoapparire• SulineedistinterispettoalleistruzioniMATLAB• AllafinediunaistruzioneMATLAB• NonvengonoprocessatidaMATLAB• L’aggiuntadicommentièessenzialeperlacomprensionediprogrammicostituitidaungrannumerodiistruzioni• Amaggiorragioneseilprogrammadeveesserecompresodapersonediversedalsuoautore

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 25/88

  • 26/88

  • Commentosulineadistinta

    CommentiinMATLAB– 2/3

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Commentosulineadistinta

    27/88

  • Commentoafineistruzione

    CommentiinMATLAB– 3/3

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 28/88

  • Funzioni– 1/4• Una funzione è un segmento (blocco) autonomo diprogramma che esegue un compito specifico

    • In termini più formali, una funzione (detta anche subroutine,metodo, procedura o sottoprogramma) è una porzione dicodice all'interno di un programma più ampio, che svolge uncompito specifico e può essere relativamente indipendente dalresto del codice

    • Le funzioni rappresentano le basi per costruire programmi piùcomplessi

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 29/88

  • 80 90 95 100 98 88 92x =

    Input

    Funzioni

    y = mean(x) y = sum(x)

    Output

    91.85 643 100

    y = max(x)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 30/88

  • Funzioni– 2/4

    • Una funzione è un segmento (blocco) autonomo diprogramma che esegue un compito specifico

    Output Input

    Function

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 31/88

  • Funzioni– 2/4

    • Una funzione è un segmento (blocco) autonomo diprogramma che esegue un compito specifico

    • Una funzione può• Accettare uno o più (ma anche zero) argomenti in input• Restituire uno o più (ma anche zero) argomenti in output

    Output Input

    Function

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 32/88

  • Funzioni– 3/4

    • Una funzione può essere vista come una sorta di “blackbox”• Il suo codice sorgente ed il suo Workspace (stato) risultanonascosti al chiamante• Una funzione comunica con il “mondo esterno” soltantousando le proprie variabili di input e output

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Output Input

    Function

    33/88

  • Funzioni– 4/4• Perché usare le funzioni?

    • Riusabilità• Una funzione può essere usata più volte, senza necessità diriscrivere ogni volta il codice sorgente (istruzioni) che essacontiene

    • Leggibilità del codice• Un programma che risolve un problema complesso, può esseresuddiviso più sotto-programmi (funzioni), ognuno dei quali risolveun sotto-problema (divide-et-impera)

    • Gestibilità del codice

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 34/88

  • M-FileFunction – 1/11

    •MATLAB mette già a disposizione diverse funzioni, dettefunzioni built-in• Alcune delle quali sono state utilizzate nelle lezioni precedenti• Ad esempio max, sum, sqrt, etc

    • Inoltre, MATLAB permette all’utente di creare propriefunzioni, dette funzioni user-defined

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 35/88

  • M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined

    • Sintassi per creare una funzione definita dall’utente

    function [variabili di output] = nome_funzione(variabili di input)

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 36/88

  • M-FileFunction – 2/11

    • Le variabili di output sono quelle i cui valori vengonocalcolati dalla funzione, utilizzando i valori delle variabili diinput• Le variabili di output sono racchiuse tra parentesi quadre (chesono facoltative quando c’è un solo output)

    • Le variabili di input devono essere racchiuse tra parentesitonde• La parola function nella riga di definizione della funzione deveessere scritta in lettere minuscole

    function [variabili di output] = nome_funzione(variabili di input)

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 37/88

  • M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 38/88

  • M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    Output

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 39/88

  • M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    Input

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 40/88

  • M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    OutputInput

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 41/88

  • • Vediamo come creare in MATLAB una funzione user defined

    • Sintassi per creare una funzione definita dall’utente

    M-FileFunction (4)

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    OutputInput

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 42/88

  • M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    Nomedellafunzione

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 43/88

  • M-FileFunction (4)• Vediamo come creare una funzione user defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    Nomedellafunzione

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 44/88

  • M-FileFunction- 2/11• Vediamo come creare in MATLAB una funzione user-defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 45/88

  • M-FileFunction (4)• Vediamo come creare una funzione user defined

    • Sintassi per creare una funzione definita dall’utente

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    corpo_funzione

    46/88

  • M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)

    function area = area_triangolo_equilatero(lato)

    area = sqrt(3)/4 * lato^2;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Definizione(odichiarazione)dellafunzione

    47/88

  • M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)

    function area = area_triangolo_equilatero(lato)

    area = sqrt(3)/4 * lato^2;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    1variabilediinput

    Definizione(odichiarazione)dellafunzione

    48/88

  • M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)

    function area = area_triangolo_equilatero(lato)

    area = sqrt(3)/4 * lato^2;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    1variabiledioutput

    Definizione(odichiarazione)dellafunzione

    49/88

  • M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)

    function area = area_triangolo_equilatero(lato)

    area = sqrt(3)/4 * lato^2;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    1variabiledioutput

    N.B. Inomidellevariabilidioutputpresentinelladefinizionedellafunzionedevonoessereidenticiaquellidellevariabiliincuisonomemorizzatiivalori(calcolati)chelafunzionedeverestituirecomeoutput

    Definizione(odichiarazione)dellafunzione

    50/88

  • M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero – Con Commenti)function area = area_triangolo_equilatero(lato)

    %La funzione prende in input la lunghezza di un lato e %restituisce in output l’area del triangolo

    %L'area del triangolo equilatero può essere calcolata %dividendo per 4 la radice quadrata di 3; il risultato %ottenuto da tale divisione deve essere moltiplicato per %la dimensione del lato, elevata al quadrato

    area = sqrt(3)/4 * lato^2;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 51/88

  • M-FileFunction – 4/11• Esempio 2 (Area Sfera)function area = area_sfera(raggio)

    area = 4 * pi * raggio^2;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Definizione(odichiarazione)dellafunzione

    52/88

  • M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)function [area, volume] = area_volume_sfera(raggio)

    area = area_sfera(raggio);volume = 4/3 * pi * raggio^3;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Definizione(odichiarazione)dellafunzione

    53/88

  • M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)function [area, volume] = area_volume_sfera(raggio)

    area = area_sfera(raggio);volume = 4/3 * pi * raggio^3;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    2 variabilidioutput

    Definizione(odichiarazione)dellafunzione

    54/88

  • M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)function [area, volume] = area_volume_sfera(raggio)

    area = area_sfera(raggio);volume = 4/3 * pi * raggio^3;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    2 variabilidioutput

    N.B. Inomidellevariabilidioutputpresentinelladefinizionedellafunzionedevonoessereidenticiaquellidellevariabiliincuisonomemorizzatiivalori(calcolati)chelafunzionedeverestituirecomeoutput

    Definizione(odichiarazione)dellafunzione

    55/88

  • M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)

    • Osservazione: all’interno di una funzione è possibile invocare una o piùfunzioni user-defined e/o funzioni built-in di MATLAB

    • NOTA: Le funzioni user-defined, per poter essere invocate, devonoessere state precedentemente memorizzate (salvate) nel relativo M-File Function• Vediamo come…

    function [area, volume] = area_volume_sfera(raggio)

    area = area_sfera(raggio); à invocazioneaun’altrafunzionevolume = 4/3 * pi * raggio^3;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 56/88

  • M-FileFunction – 6/11• Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction

    • Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione

    • Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 57/88

  • • Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction

    • Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione

    • Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)

    function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    M-FileFunction (4)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 58/88

  • function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    • Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction

    • Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione

    • Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)

    M-FileFunction (4)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 59/88

  • function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)

    end

    • Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction

    • Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione

    • Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)

    M-FileFunction – 6/

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    NuoveversionidiMATLAB

    60/88

  • M-FileFunction – 7/11

    • Un M-file Function ha estensione .m ed il suo contenuto deveiniziare con la parola chiave function• Seguita da eventuali parametri di input e di output

    • Ogni M-file Function ha un proprio workspace, separato dalWorkspace mostrato in MATLAB• Tutte le variabili all’interno dell’M-file Function vengono dette “locali” adesso• Esistono soltanto all’interno della funzione stessa• Non vengono viste dall’ambiente MATLAB o da altre eventuali M-file Functionchiamanti

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 61/88

  • M-FileFunction – 8/11• Una volta memorizzata la funzione user-defined nelrelativo M-File Function (nella Current Directory), talefunzione può essere invocata dalla Command Window diMATLAB

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 62/88

  • M-FileFunction – 8/11• Dopocheèstatacreata(dichiarata),unafunzionepuòessereutilizzata(invocata),fornendogliininputgliopportuniparametri

    function area = area_triangolo_equilatero(lato)

    area = sqrt(3)/4 * lato^2;

    end

    >> area_triangolo_equilatero(3)

    ans =

    3.8971

    Dichiarazione

    Invocazione

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 63/88

  • M-FileFunction – 8/11• Dopocheèstatacreata(dichiarata),unafunzionepuòessereutilizzata(invocata),fornendogliininputgliopportuniparametri

    function area = area_triangolo_equilatero(lato)

    area = sqrt(3)/4 * lato^2;

    end

    >> area_triangolo_equilatero(3)

    ans =

    3.8971

    Dichiarazione

    Invocazione

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 64/88

  • M-FileFunction – 8/11• N.B.Èimportantenotareladifferenzatradefinizione(Dichiarazione)dellafunzioneeduso(Invocazione)dellafunzionestessa

    function area = area_triangolo_equilatero(lato)

    area = sqrt(3)/4 * lato^2;

    end

    >> area_triangolo_equilatero(3)

    ans =

    3.8971

    Dichiarazione

    Invocazione

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 65/88

  • M-FileFunction – 8/11• Ivalorirestituitiinoutputdaunafunzionepossonoessereassegnatiavariabili• ChesarannovisibilinelWorkspace diMATLAB

    >> somma = sumTwoNums(3,4)

    somma =

    7

    function mySum = sumTwoNums(a,b)

    mySum = a+b;

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 66/88

  • M-FileFunction – 8/11• Ivalorirestituitiinoutputdaunafunzionepossonoessereassegnatiavariabili• ChesarannovisibilinelWorkspace diMATLAB

    >> [area, volume] = area_volume_sfera(6)

    area = 452.3893

    volume = 904.7787

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 67/88

  • M-FileFunction – 9/11• Parametri formali• I parametri formali sono quelli indicati in fase di dichiarazione dellafunzione• Esempio

    • raggio è un parametro formale di input della funzionearea_volume_sfera

    function [area, volume] = area_volume_sfera(raggio) ...

    end

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 68/88

  • M-FileFunction – 10/11• Parametri attuali• I parametri attuali sono quelli indicati in fase di invocazione dellafunzione

    • Esempio

    • In questo caso, raggio è un parametro attuale di input della funzioneinvocata area_sfera

    .

    . area = area_sfera(raggio);...

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 69/88

  • M-FileFunction – 11/11• I parametri possono essere di qualsiasi tipo• Array, matrici, scalari, etc..

    • I parametri attuali vengono associati a quelli formalitenendo conto della posizione• Il primo parametro attuale viene associato al primo parametroformale, il secondo attuale al secondo formale, etc..

    • È necessario che l’invocazione a una funzione avvengacon un numero di parametri attuali uguale al numero deiparametri formali

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 70/88

  • >> area_triangolo = areaTriangolo(5, 3)

    area_triangolo =

    7.5000

    M-FileFunction – 11/11function area_triangolo = areaTriangolo(base, altezza)

    area_triangolo = (base * altezza) / 2;

    end

    2parametriformali:corrispondentirispettivamenteallabaseedall’altezza

    2parametriattuali:corrispondentirispettivamenteallabaseedall’altezza

    N.B.Ilprimoparametroattualedevecorrisponderealprimoparametroformale,ilsecondoparametroattualedevecorrisponderealsecondoparametroformaleecosìvia…

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Dichiarazio

    neInvocazio

    ne

    71/88

  • Input/Output– 1/6• MATLAB fornisce vari comandi che permettono di ottenere l’inputdegli utenti e formattare i dati di output (i risultati ottenutieseguendo i comandi di MATLAB)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 72/88

  • Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window

    • Esempio>> x = input('Inserisci x: ')

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 73/88

  • Input/Output– 2/6• Il comando input visualizza un testo sullo schermo, aspetta che l’utentedigiti qualcosa e poi memorizza l’input nella variabile specificata

    • Esempio

    >> x = input('Inserisci x: ')

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    StringamostrataavideoVariabileincuiverràmemorizzatol’inputdigitatodall’utente

    74/88

  • Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window

    • Esempio>> x = input('Inserisci x: ')Inserisci x:

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 75/88

  • Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window

    • Esempio>> x = input('Inserisci x: ')Inserisci x:

    Attendel’inputdell’utente

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 76/88

  • Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window

    • Esempio>> x = input('Inserisci x: ')Inserisci x: 45

    x =

    45

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 77/88

  • Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window

    • Esempio>> x = input('Inserisci x: ')Inserisci x: 45

    x =

    45

    Memorizzanellavariabilex ilvalorepresoininput,ovvero,45

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 78/88

  • Input/Output– 3/6• Esempio 2

    >> a = input('a: ');a: 125>> b = input('b: ');b: 270>> c = input('c: ');c: 391>> average = (a+b+c)/3

    average =

    262

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 79/88

  • Input/Output– 3/6

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    Comealsolito,maggioriinformazionisulcomandopossonoessereottenuteutilizzandoilcomandohelp

    80/88

  • Input/Output– 4/6• Generalmente vengono utilizzati due modi per mostrare l’output inMATLAB• disp• fprintf

    • Il comando disp ha il vantaggio di essere molto semplice dautilizzare, ma fornisce un controllo limitato su ciò che può esseremostrato in output

    • Il comando fprintf è estremamente completo nella gestionedell’output, ma non è di facile utilizzo• Possibilità di specificare numerose opzioni riguardanti come verràvisualizzato l’output (maggiori informazioni digitando il comando helpfprintf)

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 81/88

  • Input/Output– 4/6• Esempi di utilizzo del comando disp

    >> disp('stringa')stringa

    >> disp(['stringa1','stringa2','stringa3'])stringa1stringa2stringa3

    >> disp(['stringa ', num2str(10)])stringa 10

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 82/88

  • Input/Output– 4/6• Esempi di utilizzo del comando disp

    >> disp('stringa')stringa

    >> disp(['stringa1','stringa2','stringa3'])stringa1stringa2stringa3

    >> disp(['stringa ', num2str(10)])stringa 10

    IMPORTANTE:num2str trasformaunnumeroinunastringa,inmodochepossaesserestampatadadisp

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 83/88

  • Input/Output– 5/6• Esempio 1 (Utilizzo comando disp)

    >> a = 46; b = 35; c = 100;>> disp('Stamperò il valore di a e la somma b + c')Stamperò il valore di a e la somma b + c>> disp(['Il valore della variabile a è :', num2str(a)])Il valore della variabile a è :46>> disp(['La somma b + c è:', num2str(b+c)])La somma b + c è:135

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 84/88

  • Input/Output– 6/6• ÈpossibiledecidereilformatodivisualizzazionedeirisultatiprodottidaMATLAB,medianteilcomandoformat• Ilcomandoformat determinal’aspettodeinumerisulloschermo

    •MATLAButilizzamoltecifresignificativeneisuoicalcoli,mararamenteservonotutte

    • IlformatostandarddivisualizzazionediMATLAButilizzaquattrocifredecimali

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 85/88

  • • È possibile decidere il formato di visualizzazione del risultato tramiteil comando format• format short: 4 cifre decimali (formato standard o di default); Ad es.,13.6745

    • format long : 16 cifre. Ad es., 17.27484029463547• format short e: 5 cifre (4 decimali) più l’esponente. Ad es.,6.3792e+03

    • format long e: 16 cifre (15 decimali) più l’esponente. Ad es.,6.379243784781294e-04

    • format bank: 2 cifre decimali. Ad es., 126.73• format +: Positivo, negativo o zero. Ad es., +• format rat: Approssimazione razionale. Ad es., 43/7• format compact: Elimina le righe vuote• format loose: Annulla l’effetto di format compact

    Input/Output– 6/6

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 86/88

  • È possibile decidere il formato di visualizzazione delrisultato tramite il comando formatformat short: 4 cifre decimali (formato standard o di default);Ad es., 13.6745format long : 16 cifre. Ad es., 17.27484029463547• format short e: 5 cifre (4 decimali) più l’esponente. Ad es.,6.3792e+03• format long e: 16 cifre (15 decimali) più l’esponente. Ad es.,6.379243784781294e-04

    format bank: 2 cifre decimali. Ad es., 126.73format +: Positivo, negativo o zero. Ad es., +format rat: Approssimazione razionale. Ad es., 43/7format compact: Elimina le righe vuoteformat loose: Annulla l’effetto di format compact

    Input/Output– 6/6

    IntroduzioneallaprogrammazioneinMATLAB:Parte1

    N.B.Inquestocontestoe nonrappresentailnumeroe di Nepero,cheèallabasedeilogaritminaturali,mal’inizialedellaparola“esponente”

    87/88

  • Riferimenti• Capitolo1• Paragrafo1(Comandidiformattazione)• Paragrafi4[FilescriptedEditor/Debugger]e5[LaguidadiMATLAB]

    • Capitolo3• Paragrafi1[Funzionimatematichedibase]e2[Funzionidefinitedall’utente,finoaVariantinellachiamatadiunafunzione (incluso)]

    IntroduzioneallaprogrammazioneinMATLAB:Parte1 88/88