% scaletta per la lezione del 13 novembre 2007
% uno script si esegue tutto in un colpo con F5
% o nel menu Debug -> Run
% mettere dei 'blocchi' cliccando la lineetta accanto al numero
% compare bollino rosso (ricliccando sopra, si cancella)
% Oppure, si esegue 'passp-passo' con F6 o F10 a seconda delle
% versioni di Matlab (vedi menu debug)
%

% prima di avviare lo script e' buona norma ripulire 
% il workspace 

clear
%   COME ESEGUIRE OPERAZIONI RIPETITIVE IN MODO COMPATTO:
%   I CICLI (2)
%
%   uso del ciclo di while (ciclo aperto)

% SINTASSI:
%
%  WHILE ESPRESSIONE
%
%           ISTRUZIONI
%
% END
%

% esempio di utilizzo del costrutto WHILE....END

% un po' di successioni ricorsive

edit successione

help successione

a1 = 9;
as = 1e4;

% nota: il file successione.m fornito e' incompleto. 
% Aggiungere un'ulteriore riga:
% x=a;

seq = successione(a1, as)

% operatori relazionali

a1 < as               % minore di

a1 <= 9               % minore di o uguale a

a1 > as               % maggiore

a1 >= as              % maggiore di o uguale a

a1 == as              % uguale a

a1 ~= as              % diverso da



% operatori logici (booleani)

a2 = 4;

a1 < as & a1 ~= as 

a1 < as | a1 ~= as

~(a1 < as & a1 ~= as)

xor(a1 ~= as, a2 > as)


help successione2

seq2 = successione2(a1)

seq2 = successione2(100);

% discutere la modifica in successione2b/2c

edit successione2b
edit successione2c

% ulteriore costrutto: 
% switch (espressione)
%	case (valore 1)
%		blocco istruzioni
%	case (valore 2)
%		blocco istruzioni
%	...
%	otherwise
%		blocco istruzioni
%	end

% esempio: usare il costrutto per implementare la
% successione 2


%%%
% seconda parte
%%%
% input e output

% visualizzazione di messaggi a schermo

% in presenza di un errore (per bloccare un programma)
% (cfr polygons.m)
error('WARNING: Non esistono figure regolari con meno di 3 lati')


% caso semplice
disp('Visualizza la stringa che e'' inserita come argomento')

% visualizzazione formattata
fprintf('Visualizza la stringa che e'' inserita come argomento\n')

fprintf('Se vado a capo due volte\n\n')

% visualizzazione di variabili

x = 3.14;

fprintf('\nIl valore di x e'':\t %f.\n', x)

help fprintf

% esempio di uso di fprintf per creare tabelle

edit tabcossin

% uso del comando save per salvare un workspace

save fogliomatlab

% se ora si cancella il workspace....
clear

% e' possibile ricaricare tutte le variabili e i loro valori
% con il comando load
load fogliomatlab

% l'estensione di default e' .mat (foglio dati di matlab)
% e' possibile imporre anche altri formati:
% ad esempio, ASCII:

clear
tabcossin
% creo un vettore con i numeri da 1 a n, da affiancare
nk = 1:n;

% sintassi
% SAVE <nomefile> <elenco variabili da salvare (default:tutte) <formato>
save tabella.dat nk x c s -ascii


% ora e' possibile ricaricare il file
% per fare questo in maniera agevole
% le variabili memorizzate devono essere
% di uguale dimensione
% in modo da creare una matrice regolare

clear
load tabella.dat
% ora nel workspace e' presente una matrice di nome tabella
% che contiene le variabili nk x c s (nell'ordine in cui vi 
% sono state scritte: il default sarebbe quello alfabetico)


% ESERCIZIO
%scrivere una function equazione2.m
% che accetti in ingresso i numeri reali a,b,c
% e produca i valori x1,x2 soluzioni dell'equazione
%
% a*x^2 + b*x + c = 0
%
% visualizzando un messaggio circa l'esistenza o meno
% di soluzioni reali
% e la loro molteplicita'
