7-classi di istruzioni - unicas.it
Transcript of 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
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
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
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).
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.
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);
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);
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
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
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
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
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
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)
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
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
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
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
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);
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
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
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
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
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
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
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
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.
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 ?
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.
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
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.
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);
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
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
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
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.
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
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.
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
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.
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
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
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.
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
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);
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
);
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
);
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');
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
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
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
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
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
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
);
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);
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);
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
);
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);