• Non ci sono risultati.

Strutture di controllo (v.anche cap. 7 del testo “MATLAB per l’ingegneria”)

N/A
N/A
Protected

Academic year: 2022

Condividi "Strutture di controllo (v.anche cap. 7 del testo “MATLAB per l’ingegneria”)"

Copied!
5
0
0

Testo completo

(1)

Laboratorio di Programmazione

Laurea in

Ingegneria Civile e Ambientale

MATLAB: le strutture di controllo

Stefano Cagnoni

Dipartimento di Ingegneria dell'Informazione Università degli Studi di Parma

Strutture di controllo

(v.anche cap. 7 del testo “MATLAB per l’ingegneria”)

If, while, for, do until

3

No

Se la condizione C è vera, esegui O1, altrimenti esegui O2 C

O1

Selezione if

O2

Strutture di controllo

3

MATLAB - controllo MATLAB - controllo 4

Strutture di controllo

Selezione if

if (condizione) blocco istruzioni 1

[else blocco istruzioni 2]

end (Matlab) endif (Octave)

Se la condizione è vera esegue il primo blocco di istruzioni, altrimenti esegue il secondo (se specificato)

Es. calcolo valore assoluto if (x  0) y = x;

else y = -x;

end

(2)

MATLAB - controllo 5

Esempio

% Dati due numeri in ingresso, individua il maggiore

num1 = input('Inserisci un numero ');

num2 = input('Inserisci un altro numero ');

if (num1==num2)

disp('I due numeri sono uguali');

else

if(num1>num2)

disp('Il primo è maggiore');

else

disp('Il secondo è maggiore');

end;

end;

MATLAB - controllo 6

Cicli

Esprimono in modo compatto e generali l'esecuzione di uno stesso blocco di codice per più volte

Anche in matematica sono presenti operatori che eseguono di fatto un ciclo (ad es. sommatoria e produttoria)

n

Si ai = a1 + a2 + a3 + …. + an

cioè poni i=1

per n volte

somma un nuovo elemento a(i)

incrementa i

fine

Al variare di n, posso esprimere un qualunque numero di somme con lo stesso “codice”

1

MATLAB - controllo 7

Cicli

In un algoritmo o programma, in generale, può essere necessario esprimere:

la ripetizione di uno stesso blocco di istruzioni X per più volte (ciclo for)

per n volte

esegui la/e operazione/i X

fine

la ripetizione di un blocco di istruzioni finché non si avvera una certa condizione C (ciclo do … until)

ripeti

esegui la/e operazione/i X finché C non diventa vera

MATLAB - controllo 8

Cicli

In un algoritmo o programma, in generale, può essere necessario esprimere:

la ripetizione di un blocco di istruzioni finché resta vera una certa condizione C (ciclo while)

mentre C è vera

esegui la/e operazione/i X

fine

(3)

MATLAB - controllo

Strutture di Controllo

Ciclo While Ciclo do until Ciclo for

No

No

Ripete una stessa operazione O finché la condizione C resta vera

C

O

O C

Esegue una operazione O una volta, poi la ripete finché la condizione C non è soddisfatta

A livello logico come ciclo while, ma più esplicito se si devono ripetere le istruzioni un numero prefissato di volte

Cicli

C No

O

9 MATLAB - controllo 10

Strutture di controllo

Ciclo while

while (condizione)

istruzioni

end

Esegue il blocco di istruzioni che segue, mentre la condizione è vera (può anche non eseguirlo mai)

C No

O

MATLAB - controllo 11

Strutture di controllo

Somma dei numeri diversi da zero introdotti da tastiera: se si inserisce 0 fine.

s  0;

a=input('Inserisci un numero');

while(a!=0) s  s  a;

a=input('Inserisci un nuovo numero');

end

disp('La somma vale: '), disp(s);

a != 0 No

s=s+a

MATLAB - controllo 12

Strutture di controllo

Ciclo do until (SOLO OCTAVE!)

do istruzioni

until (condizione)

Esegue (sempre almeno una volta) le istruzioni comprese nel blocco che segue e le ripete finché la condizione non diventa vera

No

O C

(4)

MATLAB - controllo 13

Strutture di controllo

Somma dei numeri diversi da zero introdotti da tastiera: se si inserisce 0 fine.

s  0;

a=input('Inserisci un numero');

do s  s  a;

a=input('Inserisci un nuovo numero');

until (a == 0)

disp('La somma vale: '), disp(s);

No

s = s + a a == 0

MATLAB - controllo 14

Strutture di controllo

Intervalli

v_iniz : passo : v_fin

definisce una sequenza di valori che vanno da v_iniz (compreso) a v_fin (o il max valore della sequenza <= v_fin) con un incremento (anche negativo) pari a passo.

Se passo non è specificato l'incremento è pari a 1.

v_iniz può essere minore di v_fin solo se passo è negativo i = 1 : 10

equivale a i=[1 2 3 4 5 6 7 8 9 10]

i = 1 : 0.1 : 1.55

equivale a i=[1 1.1 1.2 1.3 1.4 1.5]

istruzioni

MATLAB - controllo 15

Strutture di controllo

Ciclo for

for(var = val_iniz:val_fin) istruzioni

end

La variabile var si chiama contatore.

Dopo avere definito l'intervallo entro cui deve variare il contatore, ripete l'esecuzione del blocco di istruzioni che segue finché il contatore è minore o uguale all'estremo destro dell'intervallo concludendo ogni ciclo con l'incremento automatico del contatore stesso.

for i1:100 disp( i ); end

Var<=val_fin No var = val_iniz

var = var + 1

MATLAB - controllo 16

Strutture di controllo

Calcolo della somma dei primi 100 numeri naturali somma  0;

for i  1:100 somma  sommai;

end

disp('La somma vale: '), disp(somma);

(5)

MATLAB - controllo 17

Strutture di controllo

In generale:

Il ciclo while (o do until) si usa quando non è definito a priori il numero di iterazioni da eseguire, quando cioè si attende il verificarsi di un evento (condizione inizialmente vera per il ciclo while, falsa per il ciclo do…until).

Il ciclo for si usa quando il numero di iterazioni è definito o quando la stessa sequenza di istruzioni deve essere eseguita utilizzando una sequenza predefinita di valori

In realtà ogni ciclo for è esprimibile come un ciclo while (e viceversa)

MATLAB - controllo 18

Esercizi

Scrivere un programma che chieda in ingresso un intero N e calcoli il prodotto dei primi N numeri

Scrivere un programma, a partire dal corrispondente diagramma di flusso, che chieda in ingresso un numero finché non si inserisce un numero >10.

Quando questo avviene, il programma deve uscire scrivendo quanti sono stati i numeri <=10 che lo hanno preceduto.

Lettura ed esercizi del capitolo 7 del libro (consigliati!)

Riferimenti

Documenti correlati

c) libro di testo in versione digitale accompagnato da contenuti digitali integrativi (modalità digitale-tipo c). La modalità mista di tipo a) è considerata residuale e

Such general rule notwithstanding, names of internationally known public figures are romanised according to common practise in English (e.g. “Khrushchev” instead of “Hruščev”). 3

The work has involved dia- logue oriented action research with a basis in the believed existence of uto- pian elements of what reality may become and what options it contains

public static void main(String[] args) throws IOException { String filename = “filename.txt”;. FileReader reader =

{ reader.close(); } // questa istruzione viene eseguita // comunque prima di passare. // l’eccezione al

[r]

Poco dopo, ad agosto del 2016, in seguito a un report del dipartimento della Giustizia che denunciava problemi di sicurezza nelle prigioni private e una generale peggiore

altre domande, perché solo con la consapevolezza i diritti sono i diritti sono i diritti sono i diritti sono tutelati e possiamo contribuire a costruire una società