%Provare le seguenti righe di codice dal prompt di MATLAB e rispondere alle %domande % MATLAB VARIABILI %(1) MATLAB NON RICHIEDE LA DICHIARAZIONE delle variabili. % Quando MATLAB incontra il nome di una nuova variabile la % CREA AUTOMATICAMENTE, allocando un appropirato spazio di memoria. num_studenti = 25 % Guarda WORKSPACE: cosa è stato creato? %(2) NOMI DI VARIABILI: % - Una lettera seguita da un qualsiasi numero, lettera o underscores % - Numero massimo di caratteri: 31 num_studenti_chimica_2006 = 170 area_cerchio = 27 matricola = 789543 % ES sbagliati: % 2006_num_studenti_chimica =170 % area cerchio = 27 % _matricola = 789543 % x/y =0.5 %Cosa succende se eseguo i precedenti assegnamenti? % - MATLAB è CASE SENSITIVE; distingue quindi lettere minuscole da lettere maiuscole anni_luca =34 Anni_Luca = 35 % Guarda il WORKSPACE: quante variabili distinte ha creato? % Occorre fare molta attenzione perchè è facile incorrere in errori % CONSIGLI: % 1. scegliere nomi significativi % 2. separare parole diverse con "_" % 3. usare solo lettere minuscole per variabili semplici % 4. usare solo lettere maiuscole per le costanti area_rettangolo = 54 gradi_kelvin = 21 NUM_AVOGADRO = 6.02e23 %(3) SOVRASCRITTURA % se MATLAB incontra un assegnamento ad una variabile che esiste già, % ne cambia il suo contenuto, ed eventualmente il tipo, allocando, % se necessario ulteriore memoria a = 5 % guarda il WORKSPACE ==> variabile double, con valore 5 a = 'chimica' % guarda il WORKSPACE ==> qual è il tipo della variabile ora? % che valore assume? % MATLAB non segnala alcun errore. % E' compito del programmatore di fare molta attenzione!!! % Un aiuto viene certamente dalla SCELTA APPROPRIATA DEI NOMI % (difficilmente assegnerei una stringa ad un nome che identifica % un numero!) % per esempio in un calcolo successivo b = 10 % Immaginando (erroneamente) di lavorare con a = 5 sommo ma... r = a + b % Guarda WORKSPACE: l'operazione è ammissibile (sintatticamente), % ma priva di senso semantico!!! % Quanto vale "r"? %(4) TIPI: % - NUMERI espressi in notazione decimale, % con il '.' per separare la parte decimale % usando i simboli '+' e '-' per esprimere il segno. % - Per i numeri in notazione scientifica si usa la lettera 'e' per % specificare la caratteristica % Esempi: 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 % - Tutti i numeri sono memorizzati come 'double' secondo la codifica IEEE standard: % MANTISSA: 16 decimali; CARATTERISTICA: +- 308 % CASTING: quando necessario è possibile fare una 'forzatura' ad un tipo specifico: % int8, int16, int32, uint8, uint16, uint32, single (64 bit), double (128 bit) % Esempi: grigio = uint8(126) % Guardare WORKSPACE: il tipo è 'uint8' %NB: cosa succede se eccedo (errore di OVERFLOW) il numero massimo rappresentabile? grigio2 = uint8(300) grigio3 = grigio + 200 % Quanto vale grigio3? il risultato è giusto? è stato segnalato % l'errore? FARE MOLTA ATTENZIONE AI TIPI!!!! % CARATTERI: % per assegnare ad una variabile una sequenza di caratteri (stringa) % basta porre tale stringa tra apici: nome = 'raffaella' % (5) INPUT/OUTPUT eta = input('Inserisci la tua età: ') % comando per richiedere in input da tastiera % un numero da assegnare alla variabile x nome = input('Inserisci il tuo nome: ', 's') % comando per richiedere in input da tastiera % una stringa da assegnare alla variabile x disp(eta) % comando per visualizzare il contenuto della variabile eta disp('la tua età è:') % comando che visualizza il testo tra apici %NB. per concatenare stringhe: ['ciao' nome] disp (['ciao' nome]) %NNB: per convertire un numero in stringa: int2str(n) disp (['Ho ' int2str(eta) 'anni']) % (6) OPERAZIONI ARITMETICHE: a = 4; b = 5; % + Addizione a + b % - Sottrazione a - b % * Moltiplicazione a * b % ^ Potenza a^b % ' Trasposizione % ( ) Parentesi per specificare lordine di valutazione (a+2)*b % Precedenze: % Primo livello: Parentesi % Secondo livello: Potenza (da sx a dx) % Terzo livello: Moltiplicazione e Divisione (da sx a dx) % Quarto livello: Addizione e sottrazione (da sx a dx) 4^2-12-8/(4*2) 3*4^2+5 (3*4)^2+5 27^(1/3) + 32^(0.2) 27^ 1/3 + 32^(0.2) 27^(1/3) + 32^ 0.2 %Le ultime tre espressioni danno lo stesso risultato? cosa %abbiamo cambiato? % CONSIGLIO: per evitare errori e rendere più leggibile il codice % è meglio usare le parentesi %(6) COMANDI PER GESTIRE UNA SESSINE DI LAVORO CON MATLAB %clc % cancella i contenuti della finestra dei comandi %clear % elimina tutte le variabili di memoria %clear var1 var2 % elimina solo le variabili var1 var2 %exist('nome') % determina se una variabile esiste %quit % chiude matlab %who % elenca le variabili che si trovano correntemente in memoria %whos % elenca le variabili e i corrispondenti valori % e indica se le variabili hanno parti immaginarie non nulle %(7) VARIABILI E COSTANTI SPECIALI %ans % variabile temporanea che contiene il risultato più recente %eps % specifica la precisione dei numeri decimali %i,j % unità immaginaria %Inf % Infinito %NaN % Indica un risultato numerico indefinito %pi % Il numero pi greco %(8) ASSEGNAMENTO: % Nome_Var = Espressione % L'espressione per poter essere valutata deve essere % - sintatticamente corretta % - far riferimento a variabili precedentemente create % ES: anni_luca = 35 anni_luca = 19 + 1 anni_maria = anni_luca + 3 anno_corrente = 2007 anno_nascita_maria = 1976 anni_maria = anno_corrente - anno_nascita_maria anno_corrente = anno_corrente + 1 % CONSIGLIO: % lasciare uno spazio prima e dopo il simbolo '=' e anche degli % operatori aritmetici %(9) PRIMI PASSI DI PROGRAMMAZIONE % file script (scrivere nell'editor e salvare un file .m) % current directory % uso di commenti % lanciare scrivendo il nome del file al prompt