Corso di Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Dipartimento di Matematica
Introduzione a MATLAB Stefano Vigogna Dipartimento di Matematica
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Programmazione in Java Claudia Raibulet
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Algebra di Boole.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
INTRODUZIONE A MATLAB Sara Poltronieri. Avvio del programma Avvio di Matlab (Windows) Start  Programmi  Matlab (o icona) Avvio di Matlab (Linux) terminale.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
INTRODUZIONE A MATLAB/OCTAVE MANOLO VENTURIN UNIVERSITÀ DEGLI STUDI DI PADOVA DIP. DI MATEMATICA PURA ED APPLICATA A. A. 2007/2008.
NUMERI ed ERRORI MANOLO VENTURIN UNIVERSITÀ DEGLI STUDI DI PADOVA DIP. DI MATEMATICA PURA ED APPLICATA A. A. 2007/2008.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
LA PROGRAMMAZIONE: Algoritmi e programmi
La rappresentazione degli algoritmi
11. Lettura e Scrittura di file in Matlab
Introduzione al linguaggio C
Dal problema al processo risolutivo
PRINCIPALI STRUTTURE DEI DATI
7. Strutture di controllo Ing. Simona Colucci
Logica binaria Moreno Marzolla
Script Marco D. Santambrogio –
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
ESPRESSIONE LETTERALE
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
MATRICI (ARRAY) IN MATLAB/OCTAVE
L’AMBIENTE CODE BLOCKS E L’IO
TIPI PRIMITIVI TIPI STRUTTURATI
JAVA usa una rappresentazione in VIRGOLA MOBILE
Programmazione strutturata
Forme per rappresentare l’algoritmo:
6. Matlab: Introduzione all’ambiente di sviluppo
Lezione 5: Algebra di Boole
Che cosa è un problema matematico
ALU (Arithmetic Logic Unit)
realizzato dal prof.Conti Riccardo
IL CONCETTO DI ALGORITMO
INTRODUZIONE A EXCEL Il foglio elettronico o foglio di calcolo è una tabella che contiene parole e numeri che possono essere elaborati applicando formule.
Secondo Programma in C.
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Esempi di algoritmi.
Programmazione e Laboratorio di Programmazione
Operazioni su Naturali
Algebra Booleana.
Corso di Informatica Applicata Introduzione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Unità A2 Java: le basi del linguaggio
L’ELEVAMENTO A POTENZA
Programmazione e Laboratorio di Programmazione
Fogli di Calcolo Elettronici
Le variabili Tipo Valori ammissibili
Fondamenti di Informatica
VERIFICHE.
Array e Stringhe Linguaggio C.
Corso di Fondamenti di Informatica
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
La programmazione strutturata
Docente: Sabato Bufano
Algoritmi.
Corso di Fondamenti di Informatica
Corso di Fondamenti di Informatica
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Corso di Fondamenti di Informatica
Corso di Fondamenti di Informatica
Programmazione Procedurale
Transcript della presentazione:

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

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 0000000011010101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 byte 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 Nell’esempio: la variabile prezzo è una variabile di tipo numerico (intero) che occupa 4 byte di memoria. Il suo indirizzo di memoria è 0000000011010101 e il suo valore è 101 (cioè 5).

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

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

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

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

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

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

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)

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

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

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)

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)

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

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);

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

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

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);

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

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)

20/24 MATLAB: Gli script

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);

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);

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

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.

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

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

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)

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

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

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.