• Non ci sono risultati.

Matrici Booleane - Programmare in Scilab: Le Strutture di Controllo

N/A
N/A
Protected

Academic year: 2021

Condividi "Matrici Booleane - Programmare in Scilab: Le Strutture di Controllo"

Copied!
25
0
0

Testo completo

(1)

Programmare in

Programmare in

Scilab: Matrici

Scilab: Matrici

Booleane – Strutture di

Booleane – Strutture di

Controllo

Controllo

Corso di Informatica

Corso di Informatica

CdL:

CdL:

Chimica

Chimica

Claudia d'Amato

Claudia d'Amato

cl audi a.damat o@di .uni ba.i t

(2)

Programmazione in Scilab

Programmazione in Scilab

Scilab dispone di un linguaggio di

programmazione semplice e completo

Differenza principale dagli altri

linguaggi

le variabili non necessitano di

dichiarazione

l'inizializzazione comprende la

(3)

Operatori di confronto e logici

Operatori di confronto e logici

Operatori di confronto

Operatori di confronto

 ==== uguale auguale a  << minoreminore  > > maggioremaggiore

 <= <= minore ugualeminore uguale  >=>= maggiore ugualemaggiore uguale  <> o ~=<> o ~= diversodiverso

Operatori logici

 & and  | or  ~ not

(4)

Esempi

Esempi

Eseguire i seguenti esempi

Eseguire i seguenti esempi

 3 <> 2 <return>3 <> 2 <return>  3 == 3 <return>3 == 3 <return>

 (2 > 1) & (3 > 5) <return>(2 > 1) & (3 > 5) <return>  (2<1) & (3>5) <return>(2<1) & (3>5) <return>  (2>1) | (3<4) <return>(2>1) | (3<4) <return>  (2<1) | (3>5) <return>(2<1) | (3>5) <return>  (2<1) | (3<5) <return>(2<1) | (3<5) <return>  ~(2<1) <return>~(2<1) <return>  ~(2>1) <return>~(2>1) <return>  ~(2>1) | (3>5) <return>~(2>1) | (3>5) <return>

(5)

Espressioni di Confronto tra

Espressioni di Confronto tra

Matrici

Matrici

 --> A = [1 2; 3 4];--> A = [1 2; 3 4];  --> B = [3 4; 0 2];--> B = [3 4; 0 2];  --> A < B--> A < B ans = ans = T T TT F F FF  --> A < 3--> A < 3 ans = ans = T T TT F F FF

(6)

Espressioni Logiche e Matrici

Espressioni Logiche e Matrici

Booleane

Booleane

 --> a = [%t %f %t];--> a = [%t %f %t];  --> b = [%f %f %t];--> b = [%f %f %t];  --> a & b--> a & b ans = ans = F F TF F T  --> a | b--> a | b ans = ans = T F TT F T  --> ~a--> ~a ans = ans = F T FF T F

(7)

Funzioni Booleane applicate a

Funzioni Booleane applicate a

Matrici...

Matrici...

La funzione bool2s

La funzione bool2s

 Applicata a matrici booleane restituisce una Applicata a matrici booleane restituisce una

matrice dove %t → 1 e %f--> 0 matrice dove %t → 1 e %f--> 0

 --> bool2s([%t %f %t])--> bool2s([%t %f %t])

ans = 1 0 1 ans = 1 0 1

 Applicata a matrici “standard” restituisce una Applicata a matrici “standard” restituisce una

matrice dove tutti i valori non nulli sono matrice dove tutti i valori non nulli sono

rimpiazzati con 1 rimpiazzati con 1

(8)

...Funzioni Booleane applicate a

...Funzioni Booleane applicate a

Matrici

Matrici

La funzione find(x) dove x matrice

La funzione find(x) dove x matrice

(booleana)

(booleana)

 Restituisce il vettore degli indici per cui x(i) è Restituisce il vettore degli indici per cui x(i) è

"vera". La matrice vuota è restituita se nessun "vera". La matrice vuota è restituita se nessun

valore vero è ritrovato valore vero è ritrovato

 --> x = [1 3 4 2 0 1];--> x = [1 3 4 2 0 1];  --> find(x<2)--> find(x<2) ans = ans = 1 5 6 1 5 6

(9)

I cicli

I cicli

Scilab prevede il

Scilab prevede il

ciclo while

ciclo while

e il

e il

ciclo for

ciclo for

Ciclo for

Ciclo for

 for indice = valore_iniziale : incremento : valore_finale,

... istruzioni ...,

end

 for indice = valore_iniziale : valore_finale,

... istruzioni ...,

end

Se l'incremento non è esplicitato è pari a 1

Se l'incremento non è esplicitato è pari a 1

Quando si scrivono degli script

Quando si scrivono degli script

le istruzioni

le istruzioni

possono essere scritte una per linea

possono essere scritte una per linea

(10)

Esempi

Esempi

1)

1)

for k = 1:0.5:4, r=r+k, end <return>

for k = 1:0.5:4, r=r+k, end <return>

//err.

//err.

2)

2)

r = 1; for k = 1:0.5:4, r=r+k, end <return>

r = 1; for k = 1:0.5:4, r=r+k, end <return>

3)

3)

r = 1; for k = 1:0.5:4, r=r+k;, end <return>

r = 1; for k = 1:0.5:4, r=r+k;, end <return>

4)

4)

xs=-1.0; dx=0.25; n=10; for j=1:n,

xs=-1.0; dx=0.25; n=10; for j=1:n,

x=xs+(j-1)*dx, end <return>

x=xs+(j-1)*dx, end <return>

5)

5)

for m=1:10, a(m) = m^2, end <return>

for m=1:10, a(m) = m^2, end <return>

6)

6)

a <return>

a <return>

Perchè al punto 1) si ha errore mentre al

Perchè al punto 1) si ha errore mentre al

punto 5) non si ha errore???

(11)

Ciclo For e Vettori...

Ciclo For e Vettori...

Se il ciclo for viene usato per ciclare sulle

Se il ciclo for viene usato per ciclare sulle

componenti di un vettore la variabile

componenti di un vettore la variabile

vettore può essere usata per

vettore può essere usata per

l'inizializzazione dell'indice

l'inizializzazione dell'indice

Il ciclo for itera sulle componenti di un

Il ciclo for itera sulle componenti di un

vettore riga

vettore riga

il numero di iterazioni è governato dal

il numero di iterazioni è governato dal

numero di componenti del vettore riga

numero di componenti del vettore riga

 for variabile=vettore, istruzioni, endfor variabile=vettore, istruzioni, end

(12)

...Ciclo For e Vettori...

...Ciclo For e Vettori...

Esempio:

Esempio:

 --> v = [1 -1 1 -1]--> v = [1 -1 1 -1]

 -> y=0; for k=v, y=y+k, end-> y=0; for k=v, y=y+k, end

Il numero di iterazioni è governato dal

Il numero di iterazioni è governato dal

numero di componenti del vettore riga

numero di componenti del vettore riga

alla i-esima iterazione il valore di k è uguale

alla i-esima iterazione il valore di k è uguale

a v(i)

a v(i)

Esercizio:

Esercizio:

Realizzare un ciclo for con un

Realizzare un ciclo for con un

vettore colonna

(13)

...Ciclo For e Vettori

...Ciclo For e Vettori

Le istruzioni per il seguente for

Le istruzioni per il seguente for

 --> v = [1 -1 1 -1]--> v = [1 -1 1 -1]

 -> y=0; for k=v, y=y+k, end-> y=0; for k=v, y=y+k, end

potrebbero essere scritte in modo più

potrebbero essere scritte in modo più

naturale e leggibile come

naturale e leggibile come

 y=0; for i=1:4, y=y+v(i), endy=0; for i=1:4, y=y+v(i), end

O meglio ancora come

O meglio ancora come

(14)

Ciclo For e Matrici

Ciclo For e Matrici

Il ciclo for può essere usato anche per

Il ciclo for può essere usato anche per

ciclare su elementi di matrici

ciclare su elementi di matrici

 for variabile=matrice, istruzioni, endfor variabile=matrice, istruzioni, end

Il ciclo for itera sulle componenti della

Il ciclo for itera sulle componenti della

matrice colonna per colonna

matrice colonna per colonna

 --> z = [1 -1 1 4; -1 5 6 2; 5 7 8 1]--> z = [1 -1 1 4; -1 5 6 2; 5 7 8 1]  -> y=0; for k=z, y=y+z, end-> y=0; for k=z, y=y+z, end

il numero di iterazioni è governato dal

il numero di iterazioni è governato dal

numero di colonne della matrice

numero di colonne della matrice

 alla i-esima iterazione il valore di k è uguale a alla i-esima iterazione il valore di k è uguale a

z(i) z(i)

(15)

Esempio: Media degli elementi

Esempio: Media degli elementi

di un vettore

di un vettore

program1.txt

program1.txt

clear //pulisce tutte le varibili x = [10. -1. 3. 5. -7. 4. 2.];

suma = 0;

[n,m] = size(x); //alternativa m = length(x) for j=1:m

suma=suma+x(j); end

mean = suma/m; mean

(16)

Media Colonne di Matrice

Media Colonne di Matrice

n = 10;

n = 10;

m = 7;

m = 7;

M = rand(n,m);

M = rand(n,m);

T = zeros(1,m);

T = zeros(1,m);

for j=1:m

for j=1:m

somma=0;

somma=0;

for i=1:n

for i=1:n

somma = somma + M(i,j);

somma = somma + M(i,j);

end

end

T(j) = somma / n;

T(j) = somma / n;

end

end

(17)

Il costrutto while

Il costrutto while

Costrutto while

Costrutto while

 while condizione, ... instruzioni ..., end

Esempio

Esempio

 s=100; while s>50, disp(s^2), s=s-5, end s=100; while s>50, disp(s^2), s=s-5, end

<enter>

<enter>

 La funzione disp visualizza il contenuto della La funzione disp visualizza il contenuto della

variabile passata come argomento variabile passata come argomento

 In uno script (o funzione) è possibile scrivere: In uno script (o funzione) è possibile scrivere:

s = 100 s = 100 while s>50 while s>50 disp(s^2) disp(s^2) s = s-5 s = s-5

(18)

Il ciclo while

Il ciclo while

La sintassi del while

La sintassi del while

 while condizione, istruzione1, ..., istruzionen, while condizione, istruzione1, ..., istruzionen,

end end

In uno script è possibile scrivere

In uno script è possibile scrivere

 while condizionewhile condizione

istruzione1 istruzione1 ... ... istruzionen istruzionen end end

(19)

Somma degli elementi di un

Somma degli elementi di un

vettore

vettore

 media.scemedia.sce clear clear x = [10. -1. 3. 5. -7. 4. 2.]; x = [10. -1. 3. 5. -7. 4. 2.]; somma = 0; somma = 0;

[n,m] = size(x); //alternativa m = length(x)

[n,m] = size(x); //alternativa m = length(x)

for j=1:m for j=1:m somma=somma+x(j); somma=somma+x(j); end end disp(somma) disp(somma)

 Esercizio:Esercizio: realizzare lo stesso programma con il realizzare lo stesso programma con il

cotrutto

(20)

Il costrutto condizionale: if...

Il costrutto condizionale: if...

then... else...

then... else...

● if condizione then istruzioni, end

● if condizione then istruzioni, else istruzione,

end

● if condizioneA then istruzioni, elseif

condizioneB then istruzioni, elseif

condizioneC then istruzioni, ...., else istruzioni, end

N.B.: In uno script le istruzioni possono essere

(21)

if... then... else...: Esempi

if... then... else...: Esempi

Esempi

Esempi

1) x=10; y=5; if x>5 then disp(y), end <enter>

2)x=3; y=5; if x>5 then disp(y), else disp(x), end <enter>

3)x=3; y=5; z=4; if x>5 then disp(y), elseif x>6 then disp(x), else disp(z), end <enter>

(22)

Il costrutto condizionale:

Il costrutto condizionale:

select-case

case

Forma generale:

Forma generale:

 select varibile, case n1, istuzioni, case n2,

istruzioni,...., [else istruzioni,] end

 Dove n1,n2... sono i valori di “variabile”

Esempi:

Esempi:

1)

1)

x=-1; select x, case 1, y=x+5, case -1, y=sqrt(x), end <return>

2)r=7; select r, case 1, disp(r), case 2, disp(r^2), case 7, disp(r^3), end <return>

N.B.: In uno script le istruzioni possono essere

(23)

Esempio

Esempio

x = 5;

x = 5;

s = x;

s = x;

while s>1

while s>1

s = s – 2

s = s – 2

end

end

if s==0 then

if s==0 then

disp(%t)

disp(%t)

else

else

disp(%f)

disp(%f)

(24)

Somma degli elementi dispari

Somma degli elementi dispari

di un vettore

di un vettore

clear clear x = [10. -1. 3. 5. -7. 4. 2.]; x = [10. -1. 3. 5. -7. 4. 2.]; sommadisp = 0; sommadisp = 0; [n,m] = size(x); [n,m] = size(x); for j=1:m for j=1:m if modulo(x(j),2)<>0 then if modulo(x(j),2)<>0 then sommadisp=sommadisp+x(j); sommadisp=sommadisp+x(j); endend end end disp(sommadisp) disp(sommadisp)

(25)

Somma degli elementi in

Somma degli elementi in

posizione pari

posizione pari

clear clear x = [10. -1. 3. 5. -7. 4. 2.]; x = [10. -1. 3. 5. -7. 4. 2.]; somma = 0; somma = 0; [n,m] = size(x); [n,m] = size(x); for j=1:m for j=1:m if modulo(j,2)==0 then if modulo(j,2)==0 then somma=somma+x(j); somma=somma+x(j); end end end end disp(somma) disp(somma)

Riferimenti

Documenti correlati

Le strutture di controllo sono costrutti sintattici di un linguaggio di programmazione che servono a specificare se, quando, in quale ordine e quante volte devono essere eseguite

&lt; condizione&gt; è un’espressione di tipo intero (in C non esiste il tipo logico) ed essa è verificata se ha un valore diverso da zero.. a condizione iniziale while

E’ il caso delle divisioni: se abbiamo la divisione tra due numeri interi e vogliamo che il risultato sia un numero reale, allora deve essere eseguito il cast sui due

Definizione del problema: data in input una sequenza di caratteri, terminante con il carattere ‘F’, dire quante volte nella sequenza è presente un certo carattere fornito in

Alcune operazioni di cast di tipo sono fatte automaticamente, principalmente in relazione alle capacità dei numeri interi, ad esempio assegnando un valore float ad una variabile

Usando una struttura switch viene assegnato, in base alla tabella precedente, alla variabile al_sconto il valore della percentuale di sconto da usare per calcolare l’importo

Alcune operazioni di cast di tipo sono fatte automaticamente, principalmente in relazione alle capacità dei numeri interi, ad esempio assegnando un valore float ad una variabile

– Se Body è composto da una sola istruzione si possono omettere le parentesi