# Informatica 5 Liceo Scientifico Scienze Applicate/Istruzioni Programmazione Octave

Informatica 5 Liceo Scientifico Scienze Applicate
Copertina Tutti i moduli · Sviluppo
    CopertinaInformatica 5 Liceo Scientifico Scienze Applicate/Copertina
* OctaveInformatica 5 Liceo Scientifico Scienze Applicate/Octave
* MatriciInformatica 5 Liceo Scientifico Scienze Applicate/Matrici
* Sistema di equazioni lineariInformatica 5 Liceo Scientifico Scienze Applicate/Sistema di equazioni lineari
* LatexInformatica 5 Liceo Scientifico Scienze Applicate/Latex
* Istruzioni Programmazione OctaveInformatica 5 Liceo Scientifico Scienze Applicate/Istruzioni Programmazione Octave
** EserciziInformatica 5 Liceo Scientifico Scienze Applicate/Istruzioni Programmazione Octave/Esercizi
* Gauss Risoluzione Sistemi LineariInformatica 5 Liceo Scientifico Scienze Applicate/Gauss Risoluzione Sistemi Lineari
* Jacobi Risoluzione Sistemi LineariInformatica 5 Liceo Scientifico Scienze Applicate/Jacobi Risoluzione Sistemi Lineari
* Calcolare Numericamente un IntegraleInformatica 5 Liceo Scientifico Scienze Applicate/Calcolare Numericamente un Integrale
** AreaInformatica 5 Liceo Scientifico Scienze Applicate/Area
* Risolvere Numericamente una equazione differenzialeInformatica 5 Liceo Scientifico Scienze Applicate/Risolvere Numericamente una equazione differenziale
** Decadimento RadioattivoInformatica 5 Liceo Scientifico Scienze Applicate/Decadimento Radioattivo
* Grafici in OctaveInformatica 5 Liceo Scientifico Scienze Applicate/Grafici in Octave
* Metodo di BisezioneInformatica 5 Liceo Scientifico Scienze Applicate/Metodo di Bisezione
* FrattaliInformatica 5 Liceo Scientifico Scienze Applicate/Frattali
* Problemi legati al Calcolo NumericoInformatica 5 Liceo Scientifico Scienze Applicate/Problemi legati al Calcolo Numerico
* Tecnica di MontecarloInformatica 5 Liceo Scientifico Scienze Applicate/Tecnica di Montecarlo
* AlgoritmiInformatica 5 Liceo Scientifico Scienze Applicate/Algoritmi
* Algoritmi Complessità computazionaleInformatica 5 Liceo Scientifico Scienze Applicate/Algoritmi Complessità computazionale
* Modelli e SimulazioneInformatica 5 Liceo Scientifico Scienze Applicate/Modelli e Simulazione
** Modelli e SistemiInformatica 5 Liceo Scientifico Scienze Applicate/Modelli e Sistemi
** Tipi di Modello
** Diagrammi a blocchiInformatica 5 Liceo Scientifico Scienze Applicate/Diagrammi a blocchi
** Sistemi a microprocessoreInformatica 5 Liceo Scientifico Scienze Applicate/Sistemi a microprocessore
** Blocchi di condizionamento e Teorema di ShannonInformatica 5 Liceo Scientifico Scienze Applicate/Blocchi di condizionamento e Teorema di Shannon
** Un po' di elettronicaInformatica 5 Liceo Scientifico Scienze Applicate/Un po' di elettronica
** Esempi applicativi μP-μCInformatica 5 Liceo Scientifico Scienze Applicate/Esempi applicativi μP-μC
** AutomiInformatica 5 Liceo Scientifico Scienze Applicate/Automi
** Distributore BibiteInformatica 5 Liceo Scientifico Scienze Applicate/Distributore Bibite
** Sistemi Lineari e RetroazionatiInformatica 5 Liceo Scientifico Scienze Applicate/Sistemi Lineari e Retroazionati
** Simulazione Sistema Retroazionato
** Esempio Lancio del PesoInformatica 5 Liceo Scientifico Scienze Applicate/Esempio Lancio del Peso
Modifica il sommario

## Istruzioni di scelta e di ripetizione in Octave

Per poter scrivere dei programmi spesso non basta eseguirli in ordine sequenziale (uno dopo l'altro), ma c'e' la necessita' di eseguire certe istruzioni quando si verifica una particolare condizione. Se ad esempio si deve risolvere una equazione di secondo grado, solo se il discriminante e' maggiore o uguale a zero e' possibile calcolare le due radici (soluzioni del problema), altrimenti non ci sono soluzioni. Altro esempio: quando si deve calcolare la matrice inversa, questa esiste solo se il determinante e' diverso da zero; altre volte c'e' la necessita' di ripetere un comando un certo numero di volte e non e' agevole scriverlo all'interno del codice e in alcuni casi nemmeno possibile, ad esempio se si vuole trovare il numero massimo contenuto in un vettore bisogna analizzare ciascun elemento del vettore e confrontarlo con il valore massimo temporaneo trovato fino a quel momento. Se volete vedere la guida di riferimento che descrive i comandi base disponibili in Octave la trovate qui
Per poter eseguire dei comandi in funzione di una o piu' condizioni si usano le istruzioni if o l'istruzione switch, mentre per ripetere una o piu' istruzioni si puo' usare l'istruzione for, l'istruzione while e l'istruzione repeat-until. Analizziamo ciascuna istruzione, scrivendone la sintassi (cioe' la regola grammaticale con cui si impartisce l'ordine ) e alcuni esempi. Prima di questo si ricorda che una condizione (logica) e' una qualsiasi espressione che valutata da come risultato vero o falso (true /false, 1/0), quindi se scrivo
| a>5 | |
| c==4 | Testo della cella |
| z<=3 | Testo della cella |
| (a>=4) && (a<23) | la condizione complessiva e' data dall'unione ,tramite operatore AND chiamato operatore di congiunzione con simbolo &&, di due condizioni piu' semplici (a>=4) e (a<23), in questo caso la condizione complessiva e' vera solo se entrambe le condizioni che l'operatore AND congiunge sono vere |
| !(a<3) | il ! esclamativo scritto davanti a una condizione logica la nega, quindi nel nostro caso la condizione e' "non sia a minore di 3", l'operatore NOT simbolo detto operatore di negazione simbolo !, inverte il valore logico della condizione che nega, quindi se (a<3) fosse vera allora !(a<3) diventa falsa e viceversa se (a<3) fosse falsa la sua negata !(a<3) assume il valore vero |
| (a<3) || (a>=50) | la condizione complessiva e' data dalla'unione ,tramite operatore OR chiamato anche operatore di disgiunzione con simbolo ||, di due condizioni piu' semplici (a<3) e (a>=50), in questo caso la condizione complessiva e' vera solo se almeno una delle condizioni che l'operatore OR disgiunge e' vera |
sono tutte condizioni, mentre se parlo di una espressione intera, intendo una espressione che valutata mi da come risultato un numero intero, ad esempio
una istruzione e' invece un qualsiasi comando una costante intera e' un numero del tipo 5, 453 ,0, -3

## Istruzione IF

sintassi if semplice (e' il caso piu' semplice)
l'istruzione if valuta la condizione logica, e se questa e' vera esegue la sequenza di istruzioni fino all'end, per passare poi l'esecuzione al comando successivo (scritto dopo l'end), altrimenti se la condizione e' falsa non fa niente e passa l'esecuzione al comando successivo (quello scritto dopo l'end). Detto in altro modo le istruzioni del caso vero vengono eseguite solo se la condizione risulta vera.
Ad esempio posso scrivere :
Quindi solo se la condizione a>5 è verificata le istruzioni b=3; k=a-2*7; e B=inv(A) vengono eseguite.
Esiste una seconda forma dell'if, detta if a due vie. La sintassi e'
In questo caso l'if valuta la condizione e se questa è vera esegue le istruzioni del caso vero, altrimenti esegue le istruzioni del caso falso (quelle scritte dopo la parola else). In questo caso esistono 2 blocchi di istruzioni che vengono eseguite in alternativa a seconda del valore logico assunto dalla condizione. Ad esempio scrivo
In questo caso se a>3 vengono eseguite le istruzioni k=7; r=8; altrimenti vengono eseguite le istruzioni k=9; r=2; p=678;
Nel caso di piu' condizioni (mutuamente esclusive), che magari riguardano la stessa variabile, si usa il costrutto if-elseif
ad esempio
questa istruzione if else if e' in realtà un particolare caso di if in cui nel blocco else si e' inserita una istruzione if (quindi abbiamo un if con un if al suo interno e si parla allora di if annidato)
la sintassi e'

## Istruzione switch

Questa istruzione serve per eseguire uno dei tanti blocchi di istruzioni che la compongono, parametrizzati mediante un valore intero. Detto in altro modo in base al valore assunto da una espressione numerica (ridotta molto spesso a una singola variabile) si esegue solo il blocco di istruzioni del corrispondente case, cioe' quello con costante numerica uguale al valore assunto dall'espressione intera. Se nessun case soddisfa la corrispondenza viene eseguito il blocco di istruzioni associate al otherwise.
Vediamo la sintassi
ad esempio
viene valutata l'espressione ( e' costituita dalla sola variabile n): se vale tre si eseguono le istruzioni del primo case, se vale dodici si eseguono le istruzioni del secondo case, se vale tredici si eseguono le istruzioni del terzo case, se non è né 3 né 12 né 13 vengono eseguite le istruzioni associate all'otherwise.

## Istruzione FOR

L'istruzione for serve per ripetere un blocco di istruzioni un numero prefissato di volte; alla variabile contatore ad ogni ciclo viene associato uno dei valori contenuti in un vettore. Vediamo la sintassi:
ad esempio scrivo
il contatore e' k, i valori che assume sono i valori da 1 a 15 con passo 2 cioè 1 3 5 7 9 11 13 15 (nel primo ciclo k vale 1 nel secondo ciclo 3 nel terzo ciclo 5 e così via). Le istruzioni ripetute ad ogni ciclo sono z=k+z;vv printf("ciao");
Se si omette di scrivere esplicitamente il passoincrementale viene usato il valore 1
quindi 1:10 genera la sequenza 1 2 3 4 5 6 7 8 9 10

## Istruzione WHILE

L'istruzione while e' una istruzione di ripetizione, il blocco di codice viene rieseguito finche' la condizione e' vera, visto che il controllo della condizione avviene prima dell'esecuzione del blocco di codice, se la condizione e' immediatamente falsa, il blocco di codice non viene mai eseguito. Si dice che la condizione e' in testa.
Vediamo la sintassi
passiamo all'esempio:
finché il valore di a e' minore di dieci vengono ripetute le istruzioni z=z+23; a=a+1; Da notare che se non si vuole avere infiniti cicli le variabili coinvolte nella condizione devono assumere valori diversi e quindi nelle istruzioni da ripetere c'e' ne almeno una che modifica la valutazione della condizione stessa.

## Istruzione do-until

L'istruzione do-until e' una istruzione di ripetizione, il blocco di codice viene rieseguito finche' la condizione e' falsa. Visto che il controllo della condizione avviene dopo l'esecuzione del blocco di codice, il blocco di codice viene sempre eseguito almeno una volta. Si dice che la condizione e' in coda.
Vediamo la sintassi
passiamo all'esempio:
finché il valore di a non e' maggiore di dieci vengono ripetute le istruzioni z=z+23; a=a+1; Da notare che se non si vuole avere infiniti cicli le variabili coinvolte nella condizione devono assumere valori diversi e quindi nelle istruzioni da ripetere ce n'e' almeno una che modifica la valutazione della condizione stessa.

## Commenti

Per fare un commento su una sola linea o un commento multilinea si utilizza

## Pulizia e Cancellazione

Il comando clc pulisce la finestra del Comand Window
mentre il comando clear elimina tutte le variabili, per cancellare una sola variabile ad esempio la matrice A date il comando clear A