La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corso di Fondamenti di Informatica

Presentazioni simili


Presentazione sul tema: "Corso di Fondamenti di Informatica"— Transcript della presentazione:

1 Corso di Fondamenti di Informatica
Macroarea di Ingegneria 2018/19 Tutor: prof. Francesco De Vincenzi

2 RAM Concetti base della programmazione: variabili (tipi)
1/24 Concetti base della programmazione: variabili (tipi) Per poter manipolare i dati in un programma si usano le variabili. Una variabile è uno spazio della memoria RAM caratterizzato da: Una dimensione (in byte) Una posizione nella RAM (indirizzo) Un nome Un tipo (insieme dei valori possibili) Un valore RAM prezzo 4 byte Nell’esempio: la variabile prezzo è una variabile di tipo numerico (intero) che occupa 4 byte di memoria. Il suo indirizzo di memoria è e il suo valore è 101 (cioè 5).

3 5 8 5 5 Operazioni sulle variabili (lettura/scrittura)
2/24 Operazioni sulle variabili (lettura/scrittura) Una variabile può essere vista come un contenitore che può contenere un solo dato per volta. LETTURA SCRITTURA La lettura consiste nella crezione di una copia del valore della variabile. Il valore presente non viene modificato. La scrittura consiste nella sostituzione del valore presente con un nuovo valore. 5 8 5 5 prezzo prezzo

4 MATLAB: Comandi di base
3/24 MATLAB: Comandi di base clc Pulisce la finestra dei comandi , Separatore di istruzioni ; Separatore con soppressione di output clear Rimuove tutte le variabili dalla memoria exist Verifica l’esistenza di una variabile help Visualizza l’help per un dato comando quit Termina Matlab who Elenca le variabili esistenti whos Visualizza informazioni sulle variabili esistenti disp Visualizza un testo o il valore di una variabile input Acquisisce un valore da tastiera format (bank, short, long, short e, long e, rat, +) Imposta il formato di visualizzazione dei dati

5 Usi comuni delle variabili
4/24 Usi comuni delle variabili Assegnazione Nome variabile = espressione L’espressione è una qualsiasi istruzione che produce un valore. Il valore viene scritto nella variabile, sostituendo il valore precedente. Esempi: x = 5 y = 23*2 x = y+1 x = power(2,8)+1 valore = (x+y)/2 stipendio_annuo = 13*mensile - trattenute

6 Usi comuni delle variabili
5/24 Usi comuni delle variabili Incremento Nome variabile = Nome variabile + 1 Questa istruzione assegna ad un variabile il suo valore precedente aumentato di 1 Decremento Nome variabile = Nome variabile - 1 Questa istruzione assegna ad un variabile il suo valore precedente diminuito di 1 Accumulatore Nome variabile = Nome variabile + valore Questa istruzione assegna ad un variabile il suo valore precedente aumentato di un valore

7 Usi comuni delle variabili
6/24 Usi comuni delle variabili Scambio di valore Obiettivo: scambiare il contenuto di due variabili X Y Sequenza di operazioni: 1) A = X 2) X = Y 3) Y = A 2 5 8 1 3 A

8 MATLAB: Prime operazioni
7/24 MATLAB: Prime operazioni Proviamo a… Inserire un valore Inserire una espressione Inserire una assegnazione Incrementare il valore di una variabile Scambiare il contenuto di due variabili

9 MATLAB: Variabili predefinite
8/24 MATLAB: Variabili predefinite ans Risultato dell’ultima elaborazione i,j Unità immaginarie (i2 + j2 =-1) pi 3,14… eps Accuratezza della precisione in virgola mobile Inf Infinito NaN Not a number (risultato numerico indefinito) false, true Valori logici falso(0), vero(1)

10 MATLAB: Tipi di dato semplici
9/24 MATLAB: Tipi di dato semplici Tipo di dato Descrizione int8, int16, int32, int64 Intero con segno ad 8,16,32,64 bit uint8, uint16, uint32, uint64 Intero senza segno ad 8,16,32,64 bit single Dato numerico a precisione singola double Dato numerico a precisione doppia logical Valore “logico” 0 o 1 (falso-vero) char Carattere

11 MATLAB: Qualche esperimento con i tipi di dato
10/24 MATLAB: Qualche esperimento con i tipi di dato Overflow? x=uint8(255) x=x+1 x non aumenta! Conversione x=uint8(200) x=int8(x) x è sceso a 127! Perdita di precisione x=pi x=single(x) x=double(x) Il valore di x è cambiato! Da carattere a numero x=‘A’ x=uint8(x) x vale 65 Da numero a carattere x=97 x=char(x) x vale ‘a’ Valori logici (vero/falso) x=logical(0) y=logical(1) x indica “falso”, y indica “vero” z=logical(25) Z vale 1

12 MATLAB: Determinare il tipo di dato
11/24 MATLAB: Determinare il tipo di dato Istruzione Esempio Significato isa isa(x,’uint8’) Verifica il tipo di variabile isinteger, isfloat, ischar, isreal isinteger(x) Come isa isnumeric isnumeric(x) Verifica se una variabile è numerica isscalar isscalar(x) Verifica che il dato sia scalare isvector isvector(x) Verifica che il dato sia un vettore (falso se è matrice)

13 MATLAB: Verifiche sui dati
12/24 MATLAB: Verifiche sui dati x=3 isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x) x=23.54 isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x) x=[1 2 3] isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x) x=‘Hello’ isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x) x=[1 2 3;4 5 6] isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x)

14 MATLAB: Operatori matematici
13/24 MATLAB: Operatori matematici Gli operatori aritmetici effettuano calcoli su variabili e/o valori Operatore Funzione alternativa Significato + plus(a,b) uplus(a) somma, incremento - minus(a,b) uminus(a) sottrazione, decremento * mtimes(a,b) prodotto matriciale .* times(a,b) prodotto scalare / divisione ./ rdivide(a,b) divisione scalare ^ mpower(a,b) potenza matriciale .^ power(a,b) potenza scalare ceil(a) Approssimazione per eccesso floor(a) Approssimazione per difetto mod(x,y) resto della divisione intera round(x) Arrotondamento

15 MATLAB: Operatori relazionali
14/24 MATLAB: Operatori relazionali Gli operatori relazionali effettuano confronti tra variabili e/o valori, fornendo un valore logico come risultato Operatore Funzione alternativa Significato < lt(a,b) minore <= le(a,b) minore o uguale > gt(a,b) maggiore >= ge(a,b) maggiore o uguale == eq(a,b) uguale ~= ne(a,b) diverso a=100; b=200; test1 = a<b; test2 = lt(a,b);

16 MATLAB: Operatori logici (premessa)
15/24 MATLAB: Operatori logici (premessa) Gli operatori logici agiscono su valori logici, detti anche valori booleani (dal nome di George Boole) Alla base del calcolo sui valori logici c’è l’algebra booleana, che utilizza tre operatori: AND, OR, NOT Il comportamento di questi operatori si sintetizza con le seguenti “Tavole di verità”: A B A AND B false true A B A OR B false true A NOT A false true

17 MATLAB: Operatori logici
16/24 MATLAB: Operatori logici Gli operatori logici permettono di combinare valori logici generando nuovi valori logici Operatore Funzione alternativa Significato & and(a,b) «elemento per elemento» AND - Congiunzione logica (elemento per elemento) | or(a,b) OR – Disgiunzione logica (elemento per elemento) ~ not(a) NOT – Negazione logica && Producono un valore scalare AND “short-circuit” || OR “short-circuit” short-circuit: meccanismo di calcolo in cui l’elaborazione non considera il secondo operando se il risultato è determinato dal primo. Esempi: false AND X vale false qualsiasi sia il valore di X true OR Y vale true qualsiasi sia il valore di Y

18 MATLAB: Operatori logici
17/24 MATLAB: Operatori logici Esempi x=logical(0); y=logical(1); a=0; b=53; p=‘hello’; q=‘world’; x & y and(x,y) x && y x | y or(x,y) x || y a & b and(a,b) a && b a | b or(a,b) a || b p & q and(p,q) p && q p | q or(p,q) p || q 0 || nan 1 || nan 0 && nan 1 && nan Operazioni più complesse. Esempio x=5; risultato = (x==5)&&(x+1<x^2);

19 Scrivi un’espressione logica che vale true se un numero x è pari
18/24 MATLAB: Esercizi Scrivi un’espressione logica che vale true se un numero x è pari Scrivi un’espressione logica che vale true se un numero x ha la parte decimale inferiore a 0.5 Scrivi un’espressione logica che vale true se un numero x può essere memorizzato in un int8

20 numero-floor(numero)<0.5 oppure floor(numero)==round(numero)
19/24 MATLAB: Soluzione Scrivi un’espressione logica che vale true se un numero è pari mod(numero,2)==0 Scrivi un’espressione logica che vale true se un numero ha la parte decimale inferiore a 0.5 numero-floor(numero)<0.5 oppure floor(numero)==round(numero) Scrivi un’espressione logica che vale true se un numero può essere memorizzato in un int8 numero>=-128 && numero <=127 oppure numero==int8(numero)

21 20/24 MATLAB: Gli script

22 MATLAB: Esempio di script – Area di un triangolo dati base e altezza
21/24 MATLAB: Esempio di script – Area di un triangolo dati base e altezza base=input('Inserisci la base'); altezza=input('Inserisci l''altezza'); prod=base*altezza; area=prod/2; disp('L''area è '); disp(area);

23 MATLAB: Esempio di script – Calcolo di un prezzo scontato
22/24 MATLAB: Esempio di script – Calcolo di un prezzo scontato disp('Questo script calcola il prezzo scontato dal prezzo e dallo sconto'); prezzo=input('Inserisci il prezzo intero: '); percentuale_sconto=input('inserisci la percentuale di sconto: '); sconto=(prezzo*percentuale_sconto)/100; prezzo_scontato=prezzo-sconto; disp('Il prezzo scontato è: '); disp(prezzo_scontato);

24 Dati base e lato di un triangolo isoscele, calcolare perimetro e area
23/24 MATLAB: Esercizi Calcolare l’ipotenusa di un triangolo rettangolo dati i due cateti (per la radice quadrata, usare la funzione predefinita sqrt) Dati base e lato di un triangolo isoscele, calcolare perimetro e area Dato un numero, mostrare la lettera alfabetica associata (es 1->a, 2->b, etc) Calcolare superficie e volume di un cilindro dati il raggio della base e l’altezza

25 24/24 MATLAB: Esercizi Un gruppo di persone deve fare un viaggio e può spostarsi in macchina o in treno. Ciascuna macchina ha 5 posti. Il prezzo di un biglietto del treno per una persona è 3 euro, il costo della benzina per un’auto è 20 euro. Realizza uno script che chiede in input il numero di persone e di automobili e calcola il costo totale e il costo medio a persona del viaggio. Memorizza in una variabile “logic” la risposta alla domanda: il costo medio a persona è maggiore del costo di un biglietto del treno? Uno scommettitore acquista biglietti gratta e vinci. I biglietti “Il milionario” costano 5 euro l’uno, i biglietti “Dea bendata” costano 10 euro l’uno. Se si comprano in tutto almeno 100 biglietti oppure almeno 25 di ciascun tipo, il costo totale viene scontato del 10%. La probabilità di vincita a “Il milionario” è dello 0,1% e si vincono 1000 euro. La probabilità di vincita alla “Dea Bendata” è del 2% e si vincono 700 euro. Scrivi uno script che chiede in input quanti biglietti di ciascun tipo vengono acquistati e risponde con un valore logic che afferma se al giocatore conviene la giocata oppure no.

26 MATLAB: Tipi di dato stutturato (vettori e matrici)
Tipo di dato Esempio: Struttura Vettori v = [1,2,3] Matrici m = [1,2,3;4,5,6] 1 2 3 1 2 3 4 5 6

27 MATLAB: Operatori SOMMA E SOTTRAZIONE
SOMMA: +, SOTTRAZIONE: - Si applica a valori scalari, vettori o matrici purchè della stessa dimensione a aa ma a+b  OK aa+a  OK ma+a  OK aa+ab  OK ma+mb  OK ma+aa  NO aa+ac  NO ma+mc  NO b ab mb ac mc

28 Il risultato è C(i,j)=ΣA(i,k)B(k,j)
MATLAB: Operatore moltiplicazione MOLTIPLICAZIONE: * Il numero di righe del primo operando e il numero di colonne del secondo devono coincidere a aa ma a*b  OK aa*a  OK ma*a  OK ma*mb  OK aa*ab  NO ma*aa  NO ma*mc  NO b ab mb mc Il risultato è C(i,j)=ΣA(i,k)B(k,j)

29 MATLAB: Operatore moltiplicazione elemento per elemento
Le dimensioni degli operandi devono coincidere a aa ma a.*b  OK aa.*a  OK ma.*a  OK aa.*ab  OK ma.*mb  NO ma.*aa  NO ma.*mc  NO b ab mb mc Viene effettuato il prodotto elemento per elemento

30 MATLAB: Operatore divisione e divisione elemento per elemento
DIVISIONE: X/Y DIVISIONE: X./Y Se X e Y sono scalari, è il loro rapporto Se X è vettore o matrice e Y è scalare è la divisione valore per valore Se X e Y sono entrambi vettori o matrici, X/Y è X*inv(Y) Se X e Y sono scalari, è il loro rapporto Se X è vettore o matrice e Y è scalare è la divisione valore per valore Se X e Y sono vettori, o matrici, devono avere la stessa dimensione e il risultato è la divisione tra valori in posizioni corrispondenti

31 MATLAB: Operatore potenza e potenza elemento per elemento
POTENZA: X^Y POTENZA: X.^Y Se X e Y scalari, è X elevato ad Y Se X è vettore o matrice e Y è scalare è il prodotto di X per se stesso Y volte Se X e Y scalari, è X elevato ad Y Se X o Y sono vettori o matrici, devono avere la stessa dimensione e il risultato è la potenza elemento per elemento.


Scaricare ppt "Corso di Fondamenti di Informatica"

Presentazioni simili


Annunci Google