Top Banner
F. Tortorella Corso di Elementi di Informatica 2007/2008 Università degli Studi di Cassino Università degli Studi di Cassino Classi di istruzioni In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell’algoritmo. Questa consiste di: assegnazioni di valori a variabili (in base a calcolo o da I/O) selezione di azioni alternative in base alla valutazione di una condizione esecuzione ciclica di una o più azioni I costrutti del linguaggio si dividono in corrispondenti classi di istruzioni
57

7-classi di istruzioni - unicas.it

Apr 10, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Classi di istruzioni

• In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell’algoritmo.

• Questa consiste di:– assegnazioni di valori a variabili (in base a calcolo o

da I/O)– selezione di azioni alternative in base alla valutazione

di una condizione– esecuzione ciclica di una o più azioni

• I costrutti del linguaggio si dividono in corrispondenti classi di istruzioni

Page 2: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Classi di istruzioni

Dividi X per Y e ottieni il resto R

R = 0 ?

Termina.

Il MCD è Y

Sostituisci X con Y

Sostituisci Y con R

si

no

X > Y ?

Scambia X con Y

Leggi i valori di X e di Y

no

si

Page 3: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni di calcolo e assegnazione

• L’effetto è di aggiornare il valore di una variabile di un certo tipo con il valore ottenuto dalla valutazione di un’espressione dello stesso tipo.

• Il formato è:variabile = espressione

• Esempi:

a=4 a=a+1 cond= x > yb=0 a=a+b cond=(a>=0) & (a<=9)

b=a

Page 4: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni di Input/Output

• Con le istruzioni di input, il valore di una variabile viene modificato con il valore ottenuto grazie ad un’operazione di lettura dall’unità di ingresso (tastiera).

• Con le istruzioni di output, un’espressione viene valutata ed il valore ottenuto viene presentato sull’unità di uscita (monitor).

Page 5: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni di input

• Con l’istruzione input è possibile richiedere all’utente di inserire un valore ed inizializzareuna variabile con il valore inserito.Es.:x = input(‘Fornire il valore: ‘);

• Quando l’istruzione è eseguita, Matlab stampa la stringa ‘Fornire il valore: ‘ e si mette in attesa della risposta dell’utente.

• L’utente scrive un numero con la tastiera e alla fine batte il tasto INVIO.

• A questo punto, il valore letto viene trasferito nella variabile x.

Page 6: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni di Output

• L’istruzione disp permette di stampare a video il contenuto di una variabile.

• L’utente non può controllare la modalità di stampa.

• La forma generale èdisp(var);

Page 7: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni di Output

• L’istruzione fprintf permette di stampare a video il contenuto di una o più variabili, insieme con del testo relativo.

• L’utente può controllare la modalità di stampa.

• La forma generale èfprintf(format,data);

Page 8: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni di Output

• format è una stringa che descrive l’organizzazione dell’output

• Contiene testo da stampare e caratteri speciali che descrivono il formato dei dati

• Il formato viene definito in base a speciali sequenze di caratteri, definiti caratteri di conversione

Page 9: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Sequenze di caratteri di formato

Va all’inizio della linea successiva\n

Visualizza il valore nel formato piùbreve tra virgola fissa e mobile%g

Visualizza il valore in virgola fissa%f

Visualizza il valore in virgola mobile%e

Visualizza il valore come un intero%d

RisultatoSequenza

Page 10: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Output.Esempio

>> x=pi/2;>> fprintf('Il risultato e'': %f\n',x);Il risultato e': 1.570796

Page 11: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempi

• Scambio dei valori di due variabili• Soluzione di un sistema di due equazioni

lineari in due incognite– Versione 1– Versione 2

Page 12: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni selettive

• Permettono di selezionare insiemi di istruzioni alternativi in base alla valutazione di una o più condizioni

Page 13: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni selettive: if

• Sintassi

if (condizione)istruzione_1istruzione_2

…istruzione_n

end

Le istruzioni sono eseguite solo se condizione è vera (condizione == 1)

Page 14: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

x = input(‘’);

y = input(‘’);

if(x < y)% scambia x e yz = x;x = y;y = z;

end

X < Y ?

Scambia X con Y

Leggi i valori di X e di Y

si

no

Page 15: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni selettive: if…else

• Sintassi

if (condizione)istruzione_1istruzione_2

elseistruzione_3 istruzione_4

end

istruzioni eseguite se condizione è vera

istruzioni eseguite se condizione è falsa

Page 16: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio: qual è il max fra due ?x = input(‘’);y = input(‘’);

if(x > y)% il max è x max = x;

else% il max è ymax = y;

endfprintf(‘Max: %d\n’,max);

x < y ?

max = y

Leggi i valori di x e di y

si no

max = x

Page 17: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Soluzione di un sistema di due equazioni lineari in due incognite– Versione 3: verifica se il determinante è nullo

Page 18: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio: qual è il max fra tre ?x = input(‘’); y = input(‘’); z = input(‘’);

max = x;

if(y > max)max = y;

end

if(z > max)max = z;

end

fprintf(‘Max: %d\n’,max);

Page 19: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni selettive: if…else if … else

• Sintassiif (condizione_1)

blocco_1else if (condizione_2)

blocco_2 else if (condizione_3)

blocco_3else

blocco_4end

eseguito solo se condizione_1 è vera

eseguito solo se condizione_1 è falsa e condizione_2 è vera

eseguito solo se condizione_1 è falsa, condizione_2 è falsa e condizione_3 èvera

eseguito solo se condizione_1 è falsa, condizione_2 è falsa e condizione_3 èfalsa

Page 20: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio voto = input(‘Voto ricevuto: ‘);if(voto < 18)

fprintf(‘Ritorna\n’);else if(voto < 24)

fprintf(‘Si può dare di più\n’);else if(voto < 27)

fprintf(‘Non c’’è male\n’);else if(voto < 30)

fprintf(‘C’’è mancato poco\n’);else if(voto == 30)

fprintf(‘Finalmente ci siamo\n’);else

fprintf(‘ WOW !\n’);end

Page 21: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni selettive: switch

• Sintassiswitch (espr_sw)

case espr_1blocco_1

case espr_2blocco_2

case { espr_3,espr_4}blocco_3

otherwiseblocco_4

end

eseguito se espr_sw==espr_1

eseguito se espr_sw<>espr_1 e espr_sw==espr_2

eseguito se espr_sw<>espr_1,espr_sw<>espr_2 e espr_sw==espr_3 o espr_sw==espr_4

eseguito se espr_sw è diverso da tutte le expr_i nei case

Page 22: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

switch(mese)case 2

ngiorni=28;case {4,6,9,11}

ngiorni=30;otherwise

ngiorni=31;end

Page 23: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

switch(car)case ‘.’

fprintf(‘punto\n’);case ‘,’

fprintf(‘virgola\n’);case {‘a’,’e’,’i’,’o’,’u’}

fprintf(‘vocale\n’);otherwise

fprintf(‘consonante\n’);end

Page 24: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Problema

• Scrivere un programma che legga da input i coefficienti a, b, c di un’equazione di secondo grado e ne calcoli le radici.

• Considerare i casi in cui uno o più dei coefficienti sia nullo.

• Soluzione– Step 1– Step 2– Step 3– Step 4– Step 5

Page 25: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni cicliche

• Servono a ripetere l’esecuzione di un blocco di istruzioni

• A seconda di come viene definito il numero di ripetizioni dell’esecuzione, si distinguono in – Istruzioni cicliche a condizione

– Istruzioni cicliche a conteggio

Page 26: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni cicliche: while

• E’ un costrutto ciclico a condizione• Non si definisce esplicitamente il numero

di ripetizioni dell’esecuzione, ma si valuta all’inizio del ciclo un’espressione logica che, fin quando risulta vera, causa un’ulteriore esecuzione del blocco di istruzioni.

Page 27: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni cicliche: while

• Sintassiwhile (condizione)

istruzione_1istruzione_2

…istruzione_n

end

• Si valuta la condizione• Se risulta vera, si

eseguono le istruzioni; dopo l’esecuzione dell’ultima istruzione sotto il while, si torna a verificare la condizione

• Se la condizione risulta falsa, si passa a eseguire le istruzioni che si trovano dopo la chiusura del while

• Qual è il minor numero di cicli che si può effettuare ?

Page 28: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Stampare in output i primi 10 numeri naturali.

Page 29: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Stampare in output i primi 10 numeri naturali.

x=1;

while(x<=10)printf(‘x: %d\n’,x);x=x+1;

end

Page 30: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Leggere da input un insieme di numeri interi e calcolarne la somma. Non si conosce in anticipo la quantità di valori da leggere; la lettura di un valore == 0 indica che l’insieme da leggere è terminato.

Page 31: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Leggere da input un insieme di numeri interi e calcolarne la somma. Non si conosce in anticipo la quantità di valori da leggere; la lettura di un valore == 0 indica che l’insieme da leggere è terminato.

somma=0; x=input(‘Valore: ‘);while(x~=0)

somma=somma+x;x=input(‘Valore: ‘);

end

fprintf(‘Somma: %d\n’, somma);

Page 32: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Problema

Leggere da input un insieme di numeri reali e calcolarne la media. Non si conosce in anticipo la quantità di valori da leggere, che comunque è limitata ad un massimo di 50; la lettura di un valore < 0 indica che l’insieme da leggere èterminato.

soluzione

Page 33: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Problemaricerca del minimo e del massimo

• Problema 1Leggere da input un insieme di numeri reali >= 0 e determinare il valore minimo. Non si conosce in anticipo la quantità di valori da leggere; la lettura di un valore < 0 indica che l’insieme da leggere è terminato.

• Problema 2Nelle stesse ipotesi del problema 1, determinare il valore massimo dell’insieme dei valori letti.

soluzione

Page 34: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Problemacalcolo del MCD

Dividi X per Y e ottieni il resto R

R = 0 ?

Termina.

Il MCD è Y

Sostituisci X con Y

Sostituisci Y con R

si

no

X > Y ?

Scambia X con Y

Leggi i valori di X e di Y

no

si

ACHTUNG !!!

Non è un ciclo WHILE

Come fare ?

soluzione

Page 35: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni cicliche: for

• E’ un costrutto ciclico a conteggio• Si definisce esplicitamente il numero di

ripetizioni dell’esecuzione• Il conteggio viene gestito grazie ad una

variabile (variabile di conteggio) che assume un valore iniziale e viene incrementata di un valore fisso ad ogni ripetizione del ciclo finché non raggiunge o supera un valore finale.

Page 36: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Istruzioni cicliche: for

• Sintassifor var = val_in:step:val_fin

istruzione_1istruzione_2

…istruzione_n

end

• Si inizializza la variabile di ciclo• Si verifica se il suo valore è

maggiore di val_fin• Se la variabile di ciclo è minore

del valore finale si eseguono le istruzioni sotto il ciclo for; al termine dell’esecuzione, la variabile di ciclo viene incrementata di step e si torna a fare il confronto con val_fin

• Se la variabile di ciclo èmaggiore di val_fin, il ciclo termina e si eseguono le istruzioni che seguono il for

Page 37: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Stampare in output i primi 10 numeri naturali.

Page 38: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Stampare in output i primi 10 numeri naturali.

for x=1:10fprintf(‘x: %d\n’,x);

end

x=1;while(x<=10)

fprintf(‘x: %d\n’,x);x=x+1;

end

Page 39: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Stampare in output i primi 100 numeri dispari.

Page 40: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Esempio

• Stampare in output i primi 100 numeri dispari.

for x=1:2:100fprintf(‘x: %d\n’,x);

end

Page 41: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Problema

• Leggere da input un insieme di numeri interi e calcolarne la somma. Il numero di valori da leggere è fornito in ingresso prima della sequenza di valori

soluzione

Page 42: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Problema

• Stampare la “tabellina” di n, dove n è dato in input

• Stampare le “tabelline” dei valori compresi tra 1 e 10.

Page 43: 7-classi di istruzioni - unicas.it

F. Tortorella Corso di Elementi di Informatica2007/2008

Università degli Studi di CassinoUniversità degli Studi di Cassino

Problema

• Realizzare un programma che, letti due valori x ed n da input, calcoli x^n.

• n può essere negativo o nullo

soluzione

Page 44: 7-classi di istruzioni - unicas.it

fun

ctio

n m

ain

% L

o s

co

po

di q

ue

sto

pro

gra

mm

a è

di m

ostra

re le

istru

zio

ni

% d

i ca

lco

lo e

asse

gn

azio

ne

e le

istru

zio

ni d

i I/O

% v

aria

bili u

sa

te n

el p

rog

ram

ma

x=

0; y

=0

; z=

0;

% fa

se

di le

ttura

x=

inp

ut('P

rimo

va

lore

: ');

y=

inp

ut('S

eco

nd

o v

alo

re: ');

% s

ca

mb

io d

ei v

alo

ri

z=

x;

x=

y;

y=

z;

% fa

se

di o

utp

ut

fprin

tf('\nS

itua

zio

ne

do

po

lo s

ca

mb

io: \n

');

fprin

tf( 'Prim

o v

alo

re: %

d\n

',x);

fprin

tf('Se

co

nd

o v

alo

re: %

d\n

',y);

Page 45: 7-classi di istruzioni - unicas.it

fun

ctio

n m

ain

% R

iso

luzio

ne

di u

n s

iste

ma

di d

ue

eq

ua

zio

ni lin

ea

ri

% in

du

e in

co

gn

ite

% v

ers

ion

e 1

.0

% v

aria

bili im

pie

ga

te n

el p

rog

ram

ma

% v

aria

bili c

on

ten

en

ti co

effic

ien

ti e te

rmin

i no

ti

a=

0; b

=0

; c=

0; d

=0

; e=

0; f=

0;

% v

aria

bili c

on

ten

en

ti le in

co

gn

ite

x=

0; y

=0

;

% fa

se

di in

pu

t

a=

inp

ut('D

am

mi il v

alo

re d

i a: ');

b=

inp

ut( 'D

am

mi il v

alo

re d

i b: ');

c=

inp

ut( 'D

am

mi il v

alo

re d

i c: ');

d=

inp

ut('D

am

mi il v

alo

re d

i d: ');

e=

inp

ut( 'D

am

mi il v

alo

re d

i e: ');

f=in

pu

t('Da

mm

i il va

lore

di f: ');

% c

alc

olo

de

i va

lori d

elle

du

e in

co

gn

ite

x=

(c*e

-b*f)/(a

*e-b

*d);

y=

(a*f-c

*d)/(a

*e-b

*d);

% fa

se

di o

utp

ut

fprin

tf('Il va

lore

di x

è: %

f\n',x

);

fprin

tf( 'Il va

lore

di y

è: %

f\n',y

);

Page 46: 7-classi di istruzioni - unicas.it

fun

ctio

n m

ain

% R

iso

luzio

ne

di u

n s

iste

ma

di d

ue

eq

ua

zio

ni lin

ea

ri

% in

du

e in

co

gn

ite

% v

ers

ion

e 1

.1

% v

aria

bili im

pie

ga

te n

el p

rog

ram

ma

% v

aria

bili c

on

ten

en

ti co

effic

ien

ti e te

rmin

i no

ti

a=

0; b

=0

; c=

0; d

=0

; e=

0; f=

0;

% v

aria

bili c

on

ten

en

ti le in

co

gn

ite

x=

0; y

=0

;

% v

aria

bile

co

nte

ne

nte

il de

term

ina

nte

de

t=0

;

% fa

se

di in

pu

t

a=

inp

ut('D

am

mi il v

alo

re d

i a: ');

b=

inp

ut( 'D

am

mi il v

alo

re d

i b: ');

c=

inp

ut('D

am

mi il v

alo

re d

i c: ');

d=

inp

ut( 'D

am

mi il v

alo

re d

i d: ');

e=

inp

ut('D

am

mi il v

alo

re d

i e: ');

f=in

pu

t( 'Da

mm

i il va

lore

di f: ');

% c

alc

olo

de

l de

term

ina

nte

e d

ei v

alo

ri de

lle d

ue

inco

gn

ite

de

t=(a

*e-b

*d);

x=

(c*e

-b*f)/d

et;

y=

(a*f-c

*d)/d

et;

% fa

se

di o

utp

ut

fprin

tf('Il va

lore

di x

è: %

f\n',x

);

fprin

tf( 'Il va

lore

di y

è: %

f\n',y

);

Page 47: 7-classi di istruzioni - unicas.it

functio

n m

ain

% R

isolu

zio

ne d

i un s

iste

ma d

i due e

quazio

ni lin

eari

% in

due in

cognite

% v

ers

ione 2

.0

% v

aria

bili im

pie

gate

nel p

rogra

mm

a

% v

aria

bili c

onte

nenti c

oeffic

ienti e

term

ini n

oti

a=

0; b

=0; c

=0; d

=0; e

=0; f=

0;

% v

aria

bili c

onte

nenti le

incognite

x=

0; y

=0;

% v

aria

bile

conte

nente

il dete

rmin

ante

det=

0;

% fa

se d

i input

a=

input('D

am

mi il v

alo

re d

i a: ');

b=

input('D

am

mi il v

alo

re d

i b: ');

c=

input( 'D

am

mi il v

alo

re d

i c: ');

d=

input('D

am

mi il v

alo

re d

i d: ');

e=

input( 'D

am

mi il v

alo

re d

i e: ');

f=in

put( 'D

am

mi il v

alo

re d

i f: ');

% c

alc

olo

del d

ete

rmin

ante

det=

(a*e

-b*d

);

% v

erific

a s

e il d

ete

rmin

ante

è n

ullo

if(det~

=0)

% c

alc

olo

dei v

alo

ri delle

due in

cognite

x=

(c*e

-b*f)/d

et;

y=

(a*f-c

*d)/d

et;

% fa

se d

i outp

ut

fprin

tf('Il valo

re d

i x è

: %f\n

',x);

fprin

tf( 'Il valo

re d

i y è

: %f\n

',y);

els

e

fprin

tf('Sis

tem

a n

on ris

olu

bile

\n');

Page 48: 7-classi di istruzioni - unicas.it

functio

n m

ain

% V

engono c

alc

ola

te le

radic

i di u

n'e

quazio

ne d

i 2° g

rado a

x^2

+bx+

c=

0.

% S

vilu

ppo to

p-d

ow

n d

el p

rogra

mm

a: p

asso 1

% v

aria

bili u

sate

nel p

rogra

mm

a

a=

0; b

=0; c

=0; %

coeffic

ienti d

ell'e

quazio

ne le

tti in in

put

d=

0;

% d

iscrim

inante

dell'e

quazio

ne

x1=

0; x

2=

0; %

radic

i dell'e

quazio

ne

% fa

se d

i lettu

ra

fprin

tf('Forn

ire i c

oeffic

ienti d

ell''e

quazio

ne a

x^2

+bx+

c=

0\n

');

a=

input('a

: ');

b=

input( 'b

: ');

c=

input('c

: ');

% s

i verific

a il v

alo

re d

el c

oeffic

iente

a

if(a~

=0)

% s

i applic

a il m

eto

do d

i solu

zio

ne g

enera

le

els

eif(b

~=

0)

% è

un e

quazio

ne d

i 1° g

rado

els

eif(c

==

0)

% è

un'e

quazio

ne in

dete

rmin

ata

els

e% è

un'e

quazio

ne im

possib

ile

end

Page 49: 7-classi di istruzioni - unicas.it

functio

n m

ain

% V

engono c

alc

ola

te le

radic

i di u

n'e

quazio

ne d

i 2° g

rado a

x^2

+bx+

c=

0.

% S

vilu

ppo to

p-d

ow

n d

el p

rogra

mm

a: p

asso 2

% v

aria

bili u

sate

nel p

rogra

mm

a

a=

0; b

=0; c

=0; %

coeffic

ienti d

ell'e

quazio

ne le

tti in in

put

d=

0;

% d

iscrim

inante

dell'e

quazio

ne

x1=

0; x

2=

0; %

radic

i dell'e

quazio

ne

% fa

se d

i lettu

ra

fprin

tf('Forn

ire i c

oeffic

ienti d

ell''e

quazio

ne a

x^2

+bx+

c=

0\n

');

a=

input('a

: ');

b=

input( 'b

: ');

c=

input('c

: ');

% s

i verific

a il v

alo

re d

el c

oeffic

iente

a

if(a~

=0)

% s

i applic

a il m

eto

do d

i solu

zio

ne g

enera

le

els

eif(b

~=

0)

% è

un e

quazio

ne d

i 1° g

rado

els

eif(c

==

0)

% è

un'e

quazio

ne in

dete

rmin

ata

fprin

tf('Equazio

ne in

dete

rmin

ata

\n');

els

e% è

un'e

quazio

ne im

possib

ile

fprin

tf('Equazio

ne im

possib

ile\n

');

end

Page 50: 7-classi di istruzioni - unicas.it

functio

n m

ain

% V

engono c

alc

ola

te le

radic

i di u

n'e

quazio

ne d

i 2° g

rado a

x^2

+bx+

c=

0.

% S

vilu

ppo to

p-d

ow

n d

el p

rogra

mm

a: p

asso 3

% v

aria

bili u

sate

nel p

rogra

mm

a

a=

0; b

=0; c

=0; %

coeffic

ienti d

ell'e

quazio

ne le

tti in in

put

d=

0;

% d

iscrim

inante

dell'e

quazio

ne

x1=

0; x

2=

0; %

radic

i dell'e

quazio

ne

% fa

se d

i lettu

ra

fprin

tf('Forn

ire i c

oeffic

ienti d

ell''e

quazio

ne a

x^2

+bx+

c=

0\n

');

a=

input('a

: ');

b=

input( 'b

: ');

c=

input('c

: ');

% s

i verific

a il v

alo

re d

el c

oeffic

iente

a

if(a~

=0)

% s

i applic

a il m

eto

do d

i solu

zio

ne g

enera

le

els

eif(b

~=

0)

% è

un e

quazio

ne d

i 1° g

rado

x1=

-c/b

;

fprin

tf( 'Equazio

ne d

i 1° g

rado, u

nic

a ra

dic

e: %

f\n',x

1);

els

eif(c

==

0)

% è

un'e

quazio

ne in

dete

rmin

ata

fprin

tf('Equazio

ne in

dete

rmin

ata

\n');

els

e% è

un'e

quazio

ne im

possib

ile

fprin

tf('Equazio

ne im

possib

ile\n

');

end

Page 51: 7-classi di istruzioni - unicas.it

fun

ctio

n m

ain

% V

en

go

no

ca

lco

late

le ra

dic

i di u

n'e

qu

azio

ne

di 2

° gra

do

ax^2

+b

x+

c=

0.

% S

vilu

pp

o to

p-d

ow

n d

el p

rog

ram

ma

: pa

sso

4

% v

aria

bili u

sa

te n

el p

rog

ram

ma

a=

0; b

=0

; c=

0; %

co

effic

ien

ti de

ll'eq

ua

zio

ne

letti in

inp

ut

d=

0;

% d

iscrim

ina

nte

de

ll'eq

ua

zio

ne

x1

=0

; x2

=0

; % ra

dic

i de

ll'eq

ua

zio

ne

% fa

se

di le

ttura

fprin

tf('Fo

rnire

i co

effic

ien

ti de

ll''eq

ua

zio

ne

ax^2

+b

x+

c=

0\n

');

a=

inp

ut( 'a

: ');

b=

inp

ut( 'b

: ');

c=

inp

ut('c

: ');

% s

i ve

rifica

il va

lore

de

l co

effic

ien

te a

if(a~

=0

)

% s

i ap

plic

a il m

eto

do

di s

olu

zio

ne

ge

ne

rale

% s

i ca

lco

la il d

iscrim

ina

nte

d=

b*b

-4*a

*c;

% s

i va

luta

il tipo

de

lle ra

dic

i

if(d >

0)

% d

ue

rad

ici re

ali d

istin

te

els

eif(d

==

0)

% d

ue

rad

ici re

ali c

oin

cid

en

ti

els

e% d

ue

rad

ici c

om

ple

sse

co

niu

ga

te

en

d

els

eif (b

~=

0)

% è

un

eq

ua

zio

ne

di 1

° gra

do

x1

=-c

/b;

fprin

tf('Eq

ua

zio

ne

di 1

° gra

do

, un

ica

rad

ice

: %f\n

',x1

);

els

eif(c

==

0)

% è

un

'eq

ua

zio

ne

ind

ete

rmin

ata

fprin

tf('Eq

ua

zio

ne

ind

ete

rmin

ata

\n');

els

e% è

un

'eq

ua

zio

ne

imp

ossib

ile

fprin

tf('Eq

ua

zio

ne

imp

ossib

ile\n

');

en

d

Page 52: 7-classi di istruzioni - unicas.it

functio

n m

ain

% V

engono c

alc

ola

te le

radic

i di u

n'e

quazio

ne d

i 2° g

rado a

x^2

+bx+

c=

0.

% S

vilu

ppo to

p-d

ow

n d

el p

rogra

mm

a: p

asso 5

. Vers

ione fin

ale

% v

aria

bili u

sate

nel p

rogra

mm

aa=

0; b

=0; c

=0; %

coeffic

ienti d

ell'e

quazio

ne le

tti in in

put

d=

0;

% d

iscrim

inante

dell'e

quazio

ne

x1=

0; x

2=

0; %

radic

i dell'e

quazio

ne

% fa

se d

i lettu

raprin

tf('Forn

ire i c

oeffic

ienti d

ell''e

quazio

ne a

x^2

+bx+

c=

0');

a=

input( 'a

: ');b=

input( 'b

: ');c=

input('c

: ');

% s

i verific

a il v

alo

re d

el c

oeffic

iente

aif(a

~=

0)

% s

i applic

a il m

eto

do d

i solu

zio

ne g

enera

le%

si c

alc

ola

il dis

crim

inante

d=

b*b

-4*a

*c;

% s

i valu

ta il tip

o d

elle

radic

iif(d

> 0

)%

due ra

dic

i reali d

istin

te x

1=

(-b-s

qrt(d

))/(2*a

); x

2=

(-b+

sqrt(d

))/(2*a

); p

rintf( 'L

''equazio

ne h

a d

ue ra

dic

i reali d

istin

te\n

'); p

rintf('x

1: %

f\nx2: %

f\n',x

1,x

2);

els

eif(d

==

0)

% d

ue ra

dic

i reali c

oin

cid

enti

x1=

(-b)/(2

*a);

prin

tf('L''e

quazio

ne h

a d

ue ra

dic

i reali c

oin

cid

enti\n

'); p

rintf('x

1: %

f\n',x

1);

els

e% d

ue ra

dic

i com

ple

sse c

oniu

gate

% s

i calc

ola

la p

arte

reale

ed il c

oeffic

iente

dell'im

magin

ario

x1=

(-b)/(2

*a); %

parte

reale

x2=

sqrt(-d

)/(2*a

); % c

oeffic

iente

dell'im

magin

ario

prin

tf('L''e

quazio

ne h

a d

ue ra

dic

i com

ple

sse c

oniu

gate

\n');

prin

tf( 'x1: %

f + j %

f\n',x

1,x

2);

prin

tf('x2: %

f - j %f\n

',x1,x

2);

end

els

eif (b

~=

0)

% è

un e

quazio

ne d

i 1° g

rado

x1=

-c/b

; p

rintf( 'E

quazio

ne d

i 1° g

rado, u

nic

a ra

dic

e: %

f\n',x

1);

els

eif(c

==

0)

% è

un'e

quazio

ne in

dete

rmin

ata

prin

tf('Equazio

ne in

dete

rmin

ata

\n');

els

e% è

un'e

quazio

ne im

possib

ile p

rintf('E

quazio

ne im

possib

ile\n

');end

Page 53: 7-classi di istruzioni - unicas.it

functio

n m

ain

% V

iene c

alc

ola

ta la

media

di u

n in

sie

me d

i valo

ri reali le

tti da in

put.

% N

on s

i conosce in

antic

ipo la

quantità

di v

alo

ri da le

ggere

, che c

om

unque

% è

limita

ta a

d u

n m

assim

o d

i 50; la

lettu

ra d

i un v

alo

re <

0 in

dic

a c

he

% l’in

sie

me d

a le

ggere

è te

rmin

ato

.

% v

aria

bili u

sate

nel p

rogra

mm

a

x=

0;%

valo

re le

tto in

input

cont=

0;%

tiene tra

ccia

del n

um

ero

di v

alo

ri letti

som

ma=

0;

% c

ontie

ne la

som

ma c

orre

nte

media

=0;

% c

ontie

ne la

media

calc

ola

ta

% fa

se d

i lettu

ra

x=

input('V

alo

re: ');

while

((cont<

50) &

(x>

=0))

som

ma=

som

ma+

x;

cont=

cont+

1;

x=

input( 'V

alo

re: ');

end

% s

i calc

ola

la m

edia

media

=som

ma/c

ont;

% fa

se d

i outp

ut

fprin

tf('\nV

alo

ri letti: %

d\n

',cont);

fprin

tf('Media

: %f\n

',media

);

Page 54: 7-classi di istruzioni - unicas.it

functio

n m

ain

% V

iene c

alc

ola

to il m

inim

o d

i un in

sie

me d

i valo

ri reali >

= 0

letti d

a in

put.

% N

on s

i conosce in

antic

ipo la

quantità

di v

alo

ri da le

ggere

; la le

ttura

di

% u

n v

alo

re <

0 in

dic

a c

he l’in

sie

me d

a le

ggere

è te

rmin

ato

.

% v

aria

bili u

sate

nel p

rogra

mm

a

x=

0;%

valo

re le

tto in

input

cont=

0;%

tiene tra

ccia

del n

um

ero

di v

alo

ri letti

min

=0;

% c

ontie

ne la

som

ma c

orre

nte

posm

in=

0;

% c

ontie

ne la

posiz

ione d

el m

inim

o tro

vato

% fa

se d

i lettu

ra

x=

input('V

alo

re: ');

% in

izia

lizzazio

ne d

ella

ricerc

a

min

=x;

posm

in=

1;

while

(x>

=0)

cont=

cont+

1;

if(x<

min

)

min

=x;

posm

in=

cont;

end

x=

input('V

alo

re: ');

end

% fa

se d

i outp

ut

fprin

tf('\nV

alo

ri letti: %

d\n

',cont);

fprin

tf('Valo

re m

inim

o: %

f\n',m

in);

fprin

tf( 'Posiz

ione d

el m

inim

o: %

d\n

',posm

in);

Page 55: 7-classi di istruzioni - unicas.it

functio

n m

ain

% V

iene c

alc

ola

to il M

CD

tra d

e n

um

eri in

teri le

tti da in

put.

% v

aria

bili u

sate

nel p

rogra

mm

a

xin

=0; y

in=

0;%

valo

ri letti in

input

x=

0; y

=0; r=

0; %

varia

bili u

sate

nell'a

lgoritm

o

% fa

se d

i lettu

ra

xin

=in

put('P

rimo v

alo

re: ');

yin

=in

put('S

econdo v

alo

re: ');

% s

i assegnano i v

alo

ri letti a

lle v

aria

bili d

i alg

oritm

o

x=

xin

;

y=

yin

;

% v

erific

a s

e x

>=

y e

d, e

ventu

alm

ente

, scam

bia

le d

ue v

aria

bili

if(x<

y)

appo=

x;

x=

y;

y=

x;

end

r=m

od(x

,y);

while

(r~=

0)

x=

y;

y=

r;

r=m

od(x

,y);

end

% fa

se d

i outp

ut

fprin

tf('Il MC

D tra

%d e

%d è

%d\n

',xin

,yin

,y);

Page 56: 7-classi di istruzioni - unicas.it

functio

n m

ain

% S

i esegue la

som

ma d

i un in

sie

me d

i valo

ri letti d

a in

put

% il n

um

ero

di e

lem

enti d

a le

ggere

è fo

rnito

in in

gre

sso p

rima d

ell'in

izio

% d

ella

sequenza

% v

aria

bili

n=

0;%

num

ero

di e

lem

enti d

a le

ggere

x=

0;%

ele

mento

corre

nte

s=

0;%

som

ma c

orre

nte

i=0;

% in

dic

e d

i cic

lo

% In

put

% s

i ottie

ne il n

um

ero

degli e

lem

enti d

a le

ggere

in in

put

n=

input('N

um

ero

valo

ri: ');

% in

izia

lizzazio

ne d

ella

var. s

om

ma

s=

0;

% c

iclo

di le

ttura

e s

om

ma

for i=

1:n

fprin

tf('Valo

re %

d: ',i);

x=

input( '');

s=

s+

x;

end

% m

essaggio

di o

utp

ut

fprin

tf('Letti %

d v

alo

ri.\nLa lo

ro s

om

ma è

%g\n

',n,s

);

Page 57: 7-classi di istruzioni - unicas.it

functio

n m

ain

% S

i esegue il c

alc

olo

della

pote

nza x

^n d

ove x

ed n

sono d

ue v

alo

ri

% le

tti in in

put. n

può e

ssere

<=

0.

% v

aria

bili

n=

0;%

esponente

x=

0;%

base

p=

0;%

valo

re c

orre

nte

della

pote

nza

i=0;

% in

dic

e d

i cic

lo

% In

put

% s

i otte

ngono i v

alo

ri di x

ed n

x=

input('x

: ');

n=

input('n

: ');

% s

i iniz

ializ

za la

varia

bile

che c

ontie

ne il v

alo

re d

ella

pote

nza

p=

1;

% c

iclo

per c

alc

ola

re la

pote

nza c

om

e p

rodutto

ria

% il v

alo

re fin

ale

è v

alu

tato

in v

alo

re a

ssolu

to p

erc

hè n

può e

ssere

<0

for i=

1:a

bs(n

)

p=

p*x

;

end

% s

i corre

gge il v

alo

re d

ella

pote

nza s

e n

< 0

if(n<

0)

p=

1/p

;

end

% s

tam

pa d

el ris

ulta

to

fprin

tf('Il risulta

to d

ella

pote

nza %

g^%

d è

%g\n

',x,n

,p);