%% Funzioni e Controlli Grafici
% Table of Contents
% 1. Funzioni
% 2. Controlli grafici
% Appendice. Definizioni delle funzioni
%% 1. Funzioni
% Una funzione è un algoritmo che può prendere in input un set di dati e può fornire in output un altro set di dati, esito di un calcolo eseguito su quelli di input.
% NB: in un live script le funzioni sono definite alla fine.
% Esempio. Definire una funzione che restituisca il nome dell'elemento chimico (limitatamente a H, C, N, O) in funzione del numero atomico.
% Scrivere un codice che riconosca l'atomo in funzione di Z.

Z = 1;
s = atomsymbol(Z);
disp(['Elemento: ' s])

%% 2. Controlli grafici
% Nei live scripts di MATLAB si possono aggiungere controlli grafici per rendere il codice più semplice da usare da parte di un utente. Ad esempio, il codice di prima può essere fatto così:

Z = 7;
s = atomsymbol(Z);
disp(['Elemento: ' s])

% Esercizio. Scrivere una funzione che calcoli la massa molare di una molecola di formula bruta \textrm C _n \textrm H_m \textrm O_p dati gli indici stechiometrici. Questi vengano scelti tramite barre scorrevoli.
%

n = 6;
m = 12;
p = 6;

MM = molarmass(n, m, p);

disp(['MM = ' num2str(MM) ' g/mol'])

%
%% Appendice. Definizioni delle funzioni

function MM = molarmass(n, m, p)
    MM = n * 12.011 + m * 1.008 + p * 15.999;
end

%

function s = atomsymbol(Z)
    if (Z == 1)
        s = 'H';
    elseif (Z == 6)
        s = 'C';
    elseif (Z == 7)
        s = 'N';
    elseif (Z == 8)
        s = 'O';
    else
        s = 'non conosco l''elemento';
    end
end