Matlab. Istruzioni condizionali, cicli for e cicli while.

Documenti analoghi
Istruzioni Condizionali

Introduzione alla programmazione

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

PROGRAMMAZIONE STRUTTURATA

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Formalismi per la descrizione di algoritmi

Costrutti condizionali e iterativi

PROGRAMMAZIONE: Le strutture di controllo

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Metodi iterativi per equazioni nonlineari.

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

I costrutti del C. Le Strutture del C. Il costrutto if else (I) Il costrutto if else (II) Condizionali. if-else (else if) switch Iterative

STRUTTURE DI CONTROLLO DEL C++

Algoritmi e diagrammi di flusso

Il Concetto di Algoritmo Corso di Informatica Laurea in Fisica

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

unità didattica 3 Le strutture condizionali e le strutture iterative

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Costrutti di iterazione

Introduzione alla programmazione Esercizi risolti

Matlab : le basi. Vediamo ora un esercizio di calcolo: Il volume di una sfera è dato da V=4*π*r 3 /3 dove r è il raggio.

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015

Corso di Fondamenti di Informatica Classi di istruzioni 2

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

CORSO DI PROGRAMMAZIONE

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016

Laboratorio Progettazione Web Il linguaggio PHP Lezione 6. Andrea Marchetti IIT-CNR 2011/2012

sum = 0; positivenumbers = 0; /* Passo 1 */ printf("introduci i numeri (0 per finire): "); scanf("%d", &number);

IL TEOREMA DI BOEHM-JACOPINI

If Statement. Il costrutto condizionale if ha la seguente sintassi:

Istruzioni condizionali di diramazione in Fortran 90

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

A lezione sono stati presentati i seguenti passi per risolvere un problema:

Laboratorio di Calcolo Numerico

Dispensa di Informatica II.1

8 Introduzione MATLAB

CORSO DI LABORATORIO DI INFORMATICA

Introduzione agli Algoritmi

Algoritmi e diagrammi di flusso versione biennio

Università degli Studi di Brescia INFORMATICA. Dipartimento di Ingegneria Meccanica e Industriale

Progetto e analisi di algoritmi

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Introduzione alla Programmazione e Applicazioni per la Finanza M2 (Prodotti Derivati) Lezione 10

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice

Strutture di controllo in C++

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Le strutture di controllo

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Rappresentazione degli algoritmi

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

Programmazione strutturata

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Rappresentazione con i diagrammi di flusso (Flow - chart)

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Algoritmi e soluzione di problemi

C espressioni condizionali

Lezione 5. La macchina universale

La codifica digitale

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

LABORATORIO DI INFORMATICA

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Fondamenti di Informatica

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Fondamenti di Programmazione. Strutture di controllo

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Aritmetica in Floating Point

Le strutture di controllo in C++

Laboratorio di Sperimentazioni di Fisica I MOD A. 14 ottobre 2009

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

7. Strutture di controllo

Problemi, algoritmi, calcolatore

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

Istruzioni semplici e strutturate

Operatori in Java. Il Costrutto Condizionale if

Programmazione Strutturata. Programmazione Strutturata. Istruzione composta { } Istruzioni strutturate in C

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

1 Esercizi in pseudocodice

Informatica Applicata al Suono Tutorial Matlab

<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;

Strutture di controllo iterative

Unità di apprendimento 6. Dal problema al programma

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al

Lezione 5: Controllo del flusso e costrutti avanzati

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

Esercitazione 6: Metodi iterativi per sistemi lineari.

Laboratorio di Python

Cosa si intende con stato

Transcript:

Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18

Introduzione Il proposito di questa seconda lezione è mostrare le istruzioni condizionali, i cicli for e i cicli while in Matlab. L importanza di queste istruzioni è sottolineata dal teorema di Böhm-Jacopini (1966), che afferma che qualunque algoritmo può essere implementato in fase di programmazione utilizzando tre sole strutture di controllo sequenza; selezione (if... then... else); ciclo o iterazione (while...do); da utilizzare ricorsivamente alla composizione di operazioni elementari. Alvise Sommariva Introduzione 2/ 18

Istruzione condizionale semplice La struttura condizionale semplice è del tipo i f <espressione logica e verificata> <esegui processo> Vediamone un esempio, digitando nel workspace >> a=5; >> stringa= segno da d e t e r m i n a r e ; >> i f a > 0 stringa= numero p o s i t i v o ; >> stringa stringa = numero positivo >> Alvise Sommariva Introduzione 3/ 18

Istruzione condizionale semplice Nel caso la variabile a sia negativa o nulla, non viene eseguito alcun processo. Infatti >> a= 5; >> stringa= segno da d e t e r m i n a r e ; >> i f a > 0 stringa= numero p o s i t i v o ; >> stringa stringa = segno da determinare >> Alvise Sommariva Introduzione 4/ 18

Istruzione condizionale alternativa La struttura condizionale alternativa è del tipo i f <espressione logica e verificata> <esegui processo 1> e l s e <esegui processo 2> Vediamone un esempio, digitando nel workspace una modifica del processo precedente, che stabilisca il segno nel caso a 0. >> a= 5; >> i f a > 0 stringa= numero p o s i t i v o ; e l s e stringa= numero non p o s i t i v o ; >> stringa stringa = numero non positivo >> Alvise Sommariva Introduzione 5/ 18

Istruzione condizionale multipla La struttura condizionale multipla, sfrutta il fatto che nella struttura condizionale alternativa, si possano utilizzare nuovamente istruzioni condizionali (semplici o multiple), come ad esempio i f <espressione logica 1 e verificata> <esegui processo 1> e l s e i f <espressione logica 2 e verificata> <esegui processo 2> e l s e <esegui processo 3> Alvise Sommariva Introduzione 6/ 18

Istruzione condizionale multipla Vediamone un esempio, digitando nel workspace una modifica del processo precedente, che stabilisca il segno nel caso a < 0, a > 0 e a = 0. >> a=0; >> i f a > 0 stringa= numero p o s i t i v o ; e l s e i f a < 0 stringa= numero n e g a t i v o ; e l s e stringa= numero n u l l o ; >> stringa stringa = numero nullo >> Alvise Sommariva Introduzione 7/ 18

Espressioni logiche Nel descrivere gli asserti, servono le cosiddette espressioni logiche. Negli esempi precedenti, le espressioni logiche erano a > 0 e a < 0. Di seguito listiamo simboli che permettono di eseguire espressioni logiche (operatori di relazione). == uguale = non uguale < minore > maggiore <= minore uguale >= maggiore uguale Alvise Sommariva Introduzione 8/ 18

Espressioni logiche Più espressioni logiche semplici possono essere utilizzate per comporre espressioni logiche più complesse. In questo ambito necessitano i seguenti simboli (operatori logici): && and or not & and (componente per componente) or (componente per componente) Alvise Sommariva Introduzione 9/ 18

Espressioni logiche In Matlab, se un espressione logica è verificata allora assume valore 1; non è verificata allora assume valore 0. Vediamone degli esempi. >> 1 == 1 % 1 e u g u a l e a 1? ans = 1 >> 0 == 1 % 0 e u g u a l e a 1? ans = 0 >> 1 = 0 % 1 non e u g u a l e a 0? ans = 1 >> Alvise Sommariva Introduzione 10/ 18

Il commando switch A volte risulta importante eseguire processi diversi al variare del valore di una variabile. Per rere il codice più comprensibile, in molti linguaggi si introduce l istruzione case of. In Matlab/Octave essa è rappresentata mediante il comando switch. switch <espressione switch> case <valore 1> <processo 1> case <valore 2> <processo 2>...... otherwise <processo altrimenti> Alvise Sommariva Introduzione 11/ 18

Il commando switch Vediamone un esempio, ricordando che la funzione sign(x) vale 1 se x > 0, 1 se x < 0, 0 altrimenti (cioè se x = 0). >> a=1; s=s i g n ( a ) ; >> % s = 1 s e a > 0, s = 1 s e a < 0, s = 0 s e a = 0. >> switch s case 1 stringa= a > 0 ; case 1 stringa= a < 0 ; otherwise stringa= a = 0 ; >> stringa stringa = a > 0 >> Alvise Sommariva Introduzione 12/ 18

Il ciclo for Il ciclo for itera una porzione di codice, al variare di certi indici. f o r variabile = vettore <processo dipente dal valore di variabile> Vediamone un esempio. >> s=0; f o r j=1:10 s=s+j ; Passo passo, la variabile j assume il valore 1 ed s = s + j = 0 + 1 = 1. Successivamente j assume il valore 2 ed s che precedentemente valeva 1, ora esso s = s + j = 1 + 2 vale 3. Si itera il processo fino a che j = 10 (incluso) e alla fine s = 55. In effetti, la somma dei primi n numeri interi positivi vale n (n + 1)/2 che nel nostro caso è proprio 55. Alvise Sommariva Introduzione 13/ 18

Il ciclo while Il ciclo while itera un processo finchè una espressione logica è verificata. w h i l e <espressione <processo> logica> La differenza più palese tra ciclo for e ciclo while consiste nel fatto che il ciclo for è comunemente utilizzato quando è noto il numero di volte in cui compiere il ciclo, e a differenza del while non necessita di incremento dell indice. il ciclo while può essere utilizzato anche quando non è noto il numero di volte in cui compiere il ciclo. Alvise Sommariva Introduzione 14/ 18

Il ciclo while Vediamo un esempio. s=1; w h i l e s > 0 r=rand ( 1 ) s=rand ( 1 ) 0.5 In questo caso, il ciclo while si interrompe quando il numero random (casuale) rand è inferiore o uguale a 0.5, in quanto la variabile s diventa non positiva. Una tipica esecuzione è r = 0.56233 s = 0.062326 % PRIMA ITERAZIONE WHILE TERMINATA. r = 0.89838 s = 0. 3 9 8 3 8 % SECONDA ITERAZIONE WHILE TERMINATA. r = 0.44295 s = 0.057050 % TERMINAZIONE CICLO WHILE Alvise Sommariva Introduzione 15/ 18

Il ciclo while Vediamo un altro esempio. >> s=0; >> j=1; >> w h i l e j <= 10 >> s s = 55 >> s=s+j ; j=j+1; In questo caso, si itera finchè j è strettamente minore o uguale di 10, dovo essere il test j <= 10 verificato. Quindi l ultimo j sommato a s è 10 ed è per questo che la somma vale 55, riproduco i risultati visti in un precedente esempio via ciclo for. Alvise Sommariva Introduzione 16/ 18

Il ciclo while Nota. Attenzione ai cicli infiniti. Il ciclo si ripete quando la condizione assume valore true. Se assume sempre valore true continua infinite volte! Vediamo un esempio di ciclo infinito. >> s=0; >> w h i l e s >= 0 s=s+1; Alvise Sommariva Introduzione 17/ 18

Esercizio Si effettui un programma Matlab/Octave che risolva l equazione di secondo grado ax 2 + bx + c = 0, utilizzando nel caso a 0 x 1,2 = b± b 2 4ac 2a x 1 = b sign(b) b 2 4ac 2a (algoritmo instabile); e x 2 = c ax 1 (algoritmo stabile); pur discuto separatamente i casi in cui a = 0 e/o b = 0 e/o c = 0. Alvise Sommariva Introduzione 18/ 18