Metodi Numerici con elementi di Programmazione
A.A. 2018-2019
Elementi di Programmazione Nozioni Introduttive
1
2
Docente: Vittoria Bruni Email: [email protected] Ufficio: Via A. Scarpa, Pal. RM002, I piano, Stanza n. 16 Tel. 06 49766648 Ricevimento Provvisorio: Consultare la sezione Avvisi sulla pagina web dedicata al corso
3
Obiettivi del corso
Fornire una panoramica dei metodi numerici fondamentali per la soluzione di
alcuni problemi di maggior interesse nel settore dell’ingegneria e di alcune
tecniche fondamentali della programmazione
Sviluppo di algoritmi risolutivi e relativa implementazione in un ambiente
di calcolo integrato
Risultati
- individuare un metodo numerico adatto a risolvere alcuni problemi test
- analizzarne e formularne la soluzione in modo algoritmico
- implementare tali algoritmi in Matlab
4
Programma sintetico 1. Nozioni introduttive dell’analisi numerica, classificazione degli errori,
condizionamento, stabilità 2. Nozioni di base dei calcolatori e della programmazione 3. Introduzione alla programmazione in Matlab: tipi di dato primitivi,
variabili, espressioni e assegnazioni, array e matrici, funzioni e script; istruzioni condizionali e espressioni booleane, cicli;
4. Soluzione di equazioni e sistemi di equazioni non lineari; errore di troncamento, convergenza dei metodi, velocità di convergenza
5. Soluzione di sistemi di equazioni lineari: metodi diretti e iterativi 6. Metodi numerici per la soluzione di problemi a valori iniziali; errore di
troncamento locale, errore globale, consistenza e stabilità; convergenza dei metodi
7. Metodi alle differenze finite per problemi ai limiti; convergenza, stabilità e consistenza
8. Approssimazioni di dati e funzioni; stima dell’errore di troncamento e di propagazione; convergenza del polinomio interpolatore
9. Integrazione numerica; stima del resto, convergenza delle formule di quadratura
5
Testi consigliati: Calcolo Numerico, L. Gori, Ed. Kappa, 2006 Esercizi di Calcolo Numerico, L. Gori-M.L. Lo Cascio, F. Pitolli, Ed. Kappa, 2007 Per consultazione: A. Quarteroni, F. Saleri, Calcolo scientifico, Springer, 2008 Il materiale didattico sarà disponibile sul sito http://ingaero.uniroma1.it/ nella pagina dedicata al corso Metodi Numerici con Elementi di Programmazione E’ disponibile la Licenza Campus per Matlab: consultare il sito http://campus3.uniroma1.it/campus/matlabcampus.php oppure seguire le istruzioni pubblicate nella sezione Materiale didattico della pagina web dedicata ala corso
6
Per risolvere numericamente un problema è necessario 1. Comprendere il problema da risolvere
2. Costruire un algoritmo stabile, robusto ed efficace
3. Conoscere lo strumento computazionale utilizzato (per es. il calcolatore elettronico)
7
La nascita del computer digitale tra gli anni ‘40 e ‘50 ha notevolmente accelerato lo sviluppo di algoritmi capaci di sfruttare la potenza di calcolo dei processori che cresce in accordo con la legge di Moore (1965) : «il numero di transistor nei circuiti integrati cresce esponenzialmente nel tempo»
Microprocessore Anno n. transistor
4004 1971 2300
8008 1972 2500
8080 1974 4500
8086 1978 29000
Intel286 1982 134000
Intel386 1985 275000
Intel486 1989 1200000
Intel Pentium 1993 3100000
Intel Pentium II 1997 7500000
Intel Pentium III 1999 9500000
Intel Pentium 4 2000 42000000
Intel Itanium 2001 125000000
Intel Itanium 2 2003 220000000
Intel Itanium 2 (9Mb
Cache)
2004 592000000
8
Il computer è diventato uno strumento di calcolo molto potente che ha favorito lo sviluppo di metodi numerici e algoritmi sempre più sofisticati e
potenti in grado di affrontare problemi complessi
SOLUZIONE Metodi elaborati e complicati per
rendere il problema trattabile
SOLUZIONE Metodi (anche elaborati e complicati)
facili da usare
Formulazione del problema
Prima Dopo
INTERPRETAZIONE Analisi approfondita limitata da
soluzioni troppo costose (in termini di tempo di calcolo)
INTERPRETAZIONE La facilità di calcolo favorisce: - sviluppo e verifica di intuizioni - simulazioni - studio della sensibilità del sistema
9
Linearità (permette soluzioni analitiche)
Sistemi a piccola scala
Leggi ideali
Analisi limitata dalle risorse di calcolo
Non linearità
Sistemi a larga scala (sistemi multicomponenti)
Leggi non ideali
(sono più realistiche ma computazionalmente più onerose)
Facilità di
• valutare come il sistema risponde a differenti condizioni
• determinare i parametri necessari per ottenere certe performance
Prima Dopo
10
Il Computer è un dispositivo elettronico che elabora le informazioni in forma di dati numerici secondo una sequenza di
istruzioni preordinate (programma) Per questo è detto anche
elaboratore elettronico digitale
Memorizza e elabora dati eseguendo operazioni logico-
aritmetiche
Utilizza componenti elettroniche
I dati sono sequenze di cifre binarie (0/1)
11
Il Computer si compone di tre unità principali
Processore Memoria Dispositivi di input/output
periferiche Cache CPU interfacce
principale secondaria
12
«I computer sono incredibilmente veloci, accurati e stupidi Gli uomini sono incredibilmente lenti, inaccurati e intelligenti
L’insieme dei due costituisce una forza incalcolabile» (A. Einstein)
Hardware = insieme delle componenti elettroniche e dei dispositivi fisici che compongono il computer
Software = insieme delle istruzioni (programmi) che consentono allo hardware di svolgere le proprie funzioni
13
Il Sistema operativo è l’insieme dei programmi essenziali per il funzionamento del computer
Permette di rendere fruibili le risorse del computer
Rende il computer user-friendy nascondendo i dettagli relativi alla gestione delle risorse del sistema
14
Risolvere un problema con il calcolatore
• Descrivere il
problema
• Individuare le
informazioni e i
dati noti (input) e i
risultati desiderati
(output)
• Individuare
un metodo
risolutivo
adeguato
• Scomporre il
procedimento in
una sequenza di
azioni elementari e
univoche
(algoritmo)
• Scrivere un programma:
esprimere le istruzioni con un
opportuno formalismo
(linguaggio di programmazione)
comprensibile all’ elaboratore
15
Risolvere un problema con il calcolatore
Problema
Algoritmo
Programma Dati di input Dati di output
16
La programmazione è l’attività con cui si predispone l’elaboratore ad eseguire un insieme di azioni elementari su un insieme di dati di
ingresso al fine di risolvere un certo problema (la soluzione è data in forma di dati di output)
Il programma è quindi la formulazione testuale di un algoritmo in un
linguaggio di programmazione
L’ algoritmo è un insieme finito di istruzioni elementari univocamente interpretabili che, eseguite in un ordine stabilito,
forniscono la soluzione ad un problema in un numero finito di passi
Alcune definizioni
17
• Eseguibilità: ogni istruzione deve poter essere eseguita dalla macchina
• Non ambiguità: ogni azione deve essere univocamente interpretabile
• Finitezza: il numero totale di azioni da eseguire per ogni insieme di dati deve essere finito
Proprietà di un algoritmo
18
Problema: si vuole trasportare un lupo, una capra e un cavolo da una sponda all’altra di un fiume senza «perdere i passeggeri» Algoritmo: 1. Trasporta la capra sull’altra sponda 2. Torna indietro 3. Trasporta il cavolo sull’altra sponda 4. Torna indietro portando anche la capra 5. Lascia la capra e Trasporta il lupo sull’altra sponda 6. Torna indietro 7. Trasporta la capra sull’altra sponda
Esempi di algoritmi
19
Problema: si vuole calcolare il massimo tra due numeri a e b e assegnarlo alla variabile m Algoritmo: 1. Leggi il valore di a e b 2. Se a > b allora poni m=a altrimenti poni m=b 3. Output: m
Esempi di algoritmi
20
Problema: moltiplica per 2 ogni elemento di un insieme L Algoritmo: 1. Leggi L 2. Per ogni elemento k dell’insieme L, poni k=2*k 3. Output: L
Esempi di algoritmi
21
Problema: si vuole calcolare il massimo di un insieme L di numeri e assegnarlo alla variabile m Algoritmo: 1. Leggi L 2. Seleziona il primo elemento dell’insieme L e ponilo in m 3. Per ogni elemento k dell’insieme, se k > m allora poni m=k 4. Output: m
Esempi di algoritmi
22
Ogni algoritmo è una combinazione di strutture Ogni struttura ha un unico punto di ingresso e un unico punto di uscita TEOREMA DI BOEHM-JACOPINI: Un qualunque algoritmo può essere descritto unicamente attraverso le tre strutture: • Sequenza • Diramazione • Ciclo o Iterazione
Teorema di Boehm-Jacopini
23
Sequenza: costituita da istruzioni di lettura e scrittura, istruzioni di assegnazione (leggi, scrivi, assegna,…) Diramazione: permette di eseguire certe istruzioni al verificarsi di una certa condizione; oppure di eseguire certe istruzioni al verificarsi di una certa condizione ed altre istruzioni se non si verifica (Se …. Allora …. Altrimenti) Ciclo: è una struttura che permette di ripetere una o più operazioni in sequenza per un numero finito di volte. La ripetizione del gruppo di istruzioni soggette alla iterazione (o ciclo) è soggetta al verificarsi di una certa condizione ed il controllo su di essa può essere in testa alla struttura oppure in coda alla stessa (Per ogni elemento fai/esegui…. Finché…. esegui…)
Teorema di Boehm-Jacopini
24
Stabilire se un numero N è un quadrato perfetto INIZIO Leggi il numero N Calcola la radice quadrata di N e assegna a Q il risultato Calcola la parte intera di Q e assegna a Y il risultato Se Y2 = N allora visualizza il messaggio ‘N è un quadrato perfetto’ altrimenti visualizza il messaggio ‘N non è un quadrato perfetto’ FINE Nota: sono state usate sequenze e diramazioni
Esempio 1
Altra proposta di soluzione?
25
Si consideri la successione definita come segue xn = a xn-1, n0 con a parametro reale. Stampare 100 elementi della successione con x0 valore assegnato INIZIO Leggi x0, a Esegui 100 volte le seguenti istruzioni Calcola il prodotto a⋅x0 e assegna a x1 il risultato Stampa x1
Assegna a x0 il valore di x1 FINE
Esempio 2
Nota: sono state usate sequenze e ripetizioni
26
Si consideri la successione definita come segue xn = a xn-1, n0 con a parametro reale assegnato. Assegnati x0 e M, se a<1, stampare gli elementi della successione tali che xn>aMx0; se a>1, stampare gli elementi della successione tali che xn<aMx0; se a=1, stampare il messaggio ‘la successione ha tutti gli elementi uguali a x0’
Esercizio
27
Esercizio Soluzione: INIZIO Leggi a x0,M Se a < 1 poni x1=ax0
finché x1>aM x0
stampa x1 poni x1=ax1
altrimenti se a<1 poni x1=ax0
finché x1<aM x0
stampa x1 poni x1=ax1
altrimenti stampa ‘la successione ha tutti gli elementi uguali a x0’ FINE
29
Rappresentazione grafica dell’algoritmo • descrive le azioni da eseguire e il loro ordine di esecuzione • è un linguaggio universale • si basa su pochi simboli:
o ogni azione elementare corrisponde a un simbolo grafico (blocco) diverso
o ogni blocco ha un ramo in ingresso e uno o più in uscita • i dati di ingresso, i risultati finali e temporanei sono rappresentati
attraverso nomi simbolici (variabili)
Un diagramma di flusso appare come un insieme di blocchi di forme diverse che contengono le istruzioni da eseguire, collegati fra loro da linee orientate che specificano la sequenza in cui i blocchi devono essere eseguiti
Diagramma di flusso
30
In un diagramma di flusso possono comparire • Valori: numerici: interi e reali alfanumerici (stringhe): ababab, pluto, m1 logici: Vero, Falso • Grandezze: Costanti: quantità note a priori e fisse • Variabili: nomi simbolici a cui è assegnato un valore che può cambiare durante l’esecuzione • Espressioni: Sequenze di variabili e costanti combinate fra loro mediante operatori (es. operatori aritmetici:+,-,*,/, relazionali: >,>, =; logici: and,or, not) secondo un ordine prestabilito da regole di precedenza (parentesi)
Contenuto del diagramma di flusso
31
Un diagramma di flusso deve sempre avere un inizio ed una fine Tra l’inizio e la fine deve esserci almeno un’ istruzione
Diagramma di flusso: blocchi
start: blocco da cui inizia l’esecuzione stop: blocco che termina l’esecuzione
start
stop
32
Lettura dei dati di Ingresso L’unità di ingresso (per es. la tastiera) invia tanti valori quante sono le variabili specificate all’interno del blocco; I valori ricevuti sono assegnati alle variabili a, b, c rispettivamente
Diagramma di flusso: blocchi
a,b,c
33
Trasmissione dati in uscita Si trasmettono i dati di output contenuti nelle variabili x,y,z all’ unità di uscita (per es. monitor)
Diagramma di flusso: blocchi
x,y,z
34
Assegnazione Assegna alla variabile x il prodotto dei valori delle variabili a e b
Diagramma di flusso: blocchi
x=a*b
35
Calcolare il perimetro p del quadrato di lato l
Esempio
p=4*l
start
stop
l
p
INIZIO Leggi l Poni p = 4 l Stampa p
FINE
36
Istruzioni condizionali Valuta la condizione E specificata all’interno del blocco: se E è verificata, si prosegue con la linea di flusso etichettata con SI, altrimenti si prosegue per il ramo etichettato con NO E è un’ espressione relazionale o logica il cui output è VERO oppure FALSO
Diagramma di flusso: blocchi
E NO SI
38
Iterazione o ripetizione Ripete un blocco di istruzioni più volte (ciclo o loop)
Diagramma di flusso: blocchi
Istr 1
Istr 2
Istr n
Blocco di istruzioni
Iterazione o ripetizione Ripete un blocco (sequenza) di istruzioni più volte in base ad una certa condizione: • Un blocco può essere eseguito fintanto che è verificata una certa
condizione E il ciclo si interrompe non appena la condizione diventa falsa (ciclo a ingresso controllato)
Oss: se la condizione allo stato iniziale è falsa il blocco di istruzioni non viene mai eseguito
39
Diagramma di flusso: blocchi
E NO
SI
Blocco di istruzioni
Iterazione o ripetizione Esempio: Sia v un insieme (vettore) ordinato di numeri. Determinare l’indice di posizione più grande contenente un numero <5
40
Diagramma di flusso: blocchi
stop
v(i)<5 NO
SI i=i+1
start
v
i=0
SI
i
i=i-1
41
Iterazione o ripetizione Ripete un blocco (sequenza) di istruzioni più volte in base ad una certa condizione: • Un blocco può essere eseguito fino a quando non si verifica una certa
condizione E il ciclo si interrompe non appena la condizione diventa falsa (ciclo a uscita controllata)
Oss: il blocco di istruzioni è eseguito almento una volta
Diagramma di flusso: blocchi
E
NO
SI
Blocco di istruzioni
42
Iterazione o ripetizione Esempio: Sia v un insieme (vettore) ordinato di numeri. Determinare l’indice di posizione più grande contenente un numero <5
Diagramma di flusso: blocchi
stop
v(i)<5 SI
NO
i=i+1
start
v
i=-1
i
i=i-1
43
Iterazione o ripetizione Se si conosce il numero di volte (numero di iterazioni) che va eseguito il blocco (sequenza) di istruzioni : • Si introduce contatore che conta il numero di iterazioni da eseguire Il contatore è una variabile (cont) che, partendo da un valore iniziale (v_in), incrementa (h) il suo valore fino a raggiungere un valore finale (v_fin) --- (ciclo enumerativo) . Oss: si può ricondurre ad una delle due forme precedenti Esempio: • Leggi v_in, v_fin, h • Assegna a cont il valore di v_in • Finchè cont <= vfin, esegui le seguenti istruzioni blocco di istruzioni assegna a cont il valore cont+h
Diagramma di flusso: blocchi
44
Iterazione o ripetizione Esempio: Scrivere i primi 10 numeri naturali >0
Diagramma di flusso: blocchi
stop
cont≤10 NO
SI cont=cont+1
start
cont=1
SI
Stampa cont
45
Scrivere un algoritmo e il relativo diagramma di flusso per risolvere i seguenti problemi: 1. Risolvere l’ equazione lineare di primo grado ax-b=0 2. Calcolare le radici di una equazione di secondo grado 3. Calcolare il fattoriale di un numero intero n 4. Approssimare il valore di ex in un punto x0 con i primi n termini dello
sviluppo in serie di Mac Laurin 5. Stabilire se un numero x è intero 6. Convertire un numero intero x dalla base 10 alla base 2 7. Scomporre un numero x in parte intera e parte frazionaria 8. Convertire un numero decimale x dalla base 10 alla base 2 9. Trovare gli elementi maggiori di zero di un insieme ordinato di numeri 10. Trovare gli elementi maggiori di zero di un insieme non ordinato di numeri 11. Calcolare la media aritmetica degli elementi di un vettore di numeri 12. Calcolare la media aritmetica degli elementi di una matrice di numeri
Esercizi
46
• Risolvere l’ equazione lineare di primo grado ax-b=0
Start
1. Leggi a e b
2. Se a0 allora poni x=b/a
output: x
altrimenti se b 0 allora stampa ‘equazione impossibile’
altrimenti stampa ‘equazione indeterminata’
Stop
Esercizi
47
• Risolvere l’ equazione lineare di primo grado ax-b=0
Esercizi
stop
a0
NO
SI
x=b/a
start
SI
a,b
x
b0
Equazione
impossibile Equazione
indeterminata
NO
48
• Calcolare le radici dell’ equazione di secondo grado ax2+bx+c=0
Start
Leggi a, b e c
Se a=0 allora stampa ‘equazione di primo grado’
altrimenti poni D = b⋅b-4 ⋅ a ⋅ c
se D < 0 allora stampa ‘non esistono radici reali’
altrimenti se D=0 allora poni x1=-b/(2 ⋅ a)
Output: x1
altrimenti poni x1=(-b-sqrt(D))/(2 ⋅ a)
poni x2=(-b+sqrt(D))/(2 ⋅ a)
Output: x1, x2
Stop
Esercizi
49
Calcolare le radici della
equazione di secondo
grado ax2+bx+c=0
Esercizi
stop
D=0
x1,x2 x1
SI
a=0
NO
NO
start
SI
a,b,c
Equazione di
primo grado
D=bb-4ac
x1=-b/(2a) x2=(-b+sqrt(D))/(2a)
x1=(-b-sqrt(D))/(2a)
D<0 Non ci sono
radici reali
SI
NO
50
Calcolare il fattoriale di un numero intero n
Start
Leggi n
Poni f = 1
Finché n1 esegui le seguenti istruzioni
poni f = f ⋅ n
poni n = n-1
Output: f
Stop
Esercizi
Esercizi: - disegnare il diagramma a blocchi - aggiungere un controllo sulla variabile di input per gestire il caso n numero negativo
51
Approssimare il valore di ex in un punto x0 con i primi n termini dello sviluppo in
serie di Mac Laurin
Start
1. Leggi n e x0
2. Se n>0 allora
poni T=1
poni i =1
Finché i<n esegui le seguenti istruzioni
calcola il fattoriale di i e assegna ad f il risultato
assegna a T il valore T+x0i / f
incrementa i di una unità
Output T
altrimenti stampa il messaggio ‘n deve essere un numero positivo’
Output: f
Stop
Esercizi
Esercizi:
- disegnare il diagramma a blocchi
- generalizzare al caso di sviluppo in serie di Taylor attorno ad
un punto y assegnato
52
Esercizio
Usando il diagramma di flusso dato,
stabilire cosa rappresenta la variabile
app_val
stop
NO
SI
new_s=new_s+term
app_val
app_val=new_s
|new_s- old_s|>eps
term=term⋅x/n
start
term=1
n=n+1
x,eps
old_s=0
new_s=1
n=0
old_s=new_s
53
Due algoritmi sono equivalenti se: • hanno le stesse variabili di input • hanno le stesse variabili di output • in corrispondenza degli stessi valori delle variabili di input producono gli stessi valori delle variabili di output Algoritmi equivalenti: • possono avere differente efficienza (velocità e risparmio di risorse) • possono essere profondamente diversi Osservazioni: • Un algoritmo semplice può essere meno efficace, soprattutto in termini di
velocità • La semplicità può facilitare la comprensione e la correzione • Non necessariamente un algoritmo “furbo” è più efficiente o affidabile
Algoritmi equivalenti
54
Esempio: Calcolo del Massimo Comun Divisore fra p e q
Algoritmo 1
• Calcola l’insieme A dei divisori di p
• Calcola l’insieme B dei divisori di q
• Calcola l’insieme dei divisori comuni C=(A B)
• Calcola il massimo m in C
• mcd = m
Algoritmo 2: metodo di Euclide
MCD(p,q)=p (oppure q) se p=q
MCD(p-q,q) se p > q
MCD(p,q-p) se p < q
Algoritmo MCD:
• Finchè p è diverso da q esegui le seguenti istruzioni:
se p > q sostituisci a p il valore (p-q)
altrimenti sostituisci a q il valore (q-p)
• mcd = p
Algoritmi equivalenti
55
Esempio: Disegnare il diagramma di flusso degli Algoritmi 1 e 2 per il calcolo del
MCD di due numeri p e q
Esercizi
55
stop
p=q
NO
SI
mcd=p
start
SI
p,q
p
p>q
NO p=p-q
q=q-p
Algoritmo2
56
Linguaggi di programmazione
La programmazione è l’attività con cui si predispone l’elaboratore ad eseguire un insieme di azioni elementari su un insieme di dati di
ingresso al fine di risolvere un certo problema (la soluzione è data in forma di dati di output)
Il programma è quindi la formulazione testuale di un algoritmo in un
linguaggio di programmazione
L’ algoritmo è un insieme finito di istruzioni elementari univocamente interpretabili che, eseguite in un ordine stabilito,
forniscono la soluzione ad un problema in un numero finito di passi
57
Linguaggi di programmazione
Un linguaggio di programmazione è un linguaggio formale costituito da simboli (alfabeto), combinati in sequenze in base a regole precise
(sintassi) e a cui viene associato un determinato significato (semantica)
• Con il termine sintassi si intende l’insieme delle regole che consentono di
legare gli elementi lessicali (parole, simboli, punteggiatura, etc.) in modo da comporre enunciati dotati di senso nell’ambito del linguaggio
• Le regole sintattiche (o grammaticali) si propongono di collegare gli enunciati semplici producendo enunciati composti
• La semantica disciplina il significato da attribuire alle costruzioni linguistiche
58
Linguaggi di programmazione
Esistono diverse famiglie di linguaggi di programmazione:
• Linguaggi assembler
• Linguaggi funzionali
• Linguaggi imperativi (BASIC)
• Linguaggi a oggetti (Java) etc…
59
Linguaggi di programmazione
• Primi calcolatori (anni ‘40): istruiti ad eseguire una certa azione, utilizzando un codice costituito solo dalle cifre binarie (bit) 0 e 1
I linguaggi consentono di descrivere le operazioni da far compiere al calcolatore in maniera più semplice • Linguaggi di tipo assembler (assemblatori): basati su semplici forme
mnemoniche che attribuiscono una sequenza di caratteri al codice operativo in linguaggio macchina
• Linguaggi di programmazione ad alto livello (Fortran, C/C++, Basic, Pascal, ….): evoluti in direzione dell’utente con la definizione di standard in modo che un programma potesse essere eseguito su diversi tipi di calcolatore senza cambiamenti significativi
60
Linguaggi di programmazione
Ma la macchina utilizza esclusivamente l’alfabeto binario! E’ necessaria un’operazione di traduzione dal codice scritto secondo un linguaggio di programmazione (codice sorgente) al codice comprensibile dal calcolatore (codice oggetto) Tale operazione è effettuata per mediante opportuni programmi, detti traduttori I traduttori si dividono in due categorie: • compilatori: la traduzione viene eseguita una volta sola ed è
permanente --- si produce il codice oggetto (file eseguibile) da cui non è facile risalire al codice sorgente
• interpreti: la traduzione è necessaria ogni volta che intendiamo usare un programma
61
Linguaggi di programmazione
I traduttori controllano la sintassi e consentono di correggere eventuali errori di programmazione La traduzione può comportare un rallentamento nell’esecuzione del programma Il compilatore e/o l’interprete possono cambiare da computer a computer, il programma non cambia
62
Variabili
I calcolatori utilizzano esclusivamente numeri, mentre il linguaggio gestisce più facilmente i nomi I linguaggi di programmazione permettono di fare riferimento ai dati utilizzando dei nomi, detti variabili Una variabile è un contenitore etichettato da un nome e caratterizzato da un contenuto Il contenuto di una variabile può cambiare !
pluto
63
Variabili
Il contenuto di una variabile può cambiare a seguito di una assegnazione
pluto
pluto
il contenuto della variabile
è il numero decimale 5.7
pluto := 5.7 5.7
il contenitore è vuoto
pluto
pluto := 5.7*5
il contenuto della
variabile ora è il
numero decimale 38.5
38.5
64
Variabili e Tipi di dato
Il contenuto di una variabile in un calcolatore è una sequenza di bit
è necessario determinare quale valore contiene la variabile (interpretare la sequenza di bit)
I linguaggi di programmazione associano ad ogni variabile informazioni anche sul tipo di valore che essa contiene
L’attribuzione di un significato particolare alla sequenza binaria è fatto
attraverso il concetto di tipo di dato
65
Variabili e Tipi di dato
Un insieme minimo di tipi di dato può essere composto da: • numeri interi • numeri in virgola mobile • caratteri
Una stringa è rappresentabile come una sequenza di caratteri E’ possibile convertire un dato da un tipo ad un altro Nei linguaggi di programmazione ad alto livello esistono tipi di dato predefiniti Nei linguaggi di programmazione ad alto livello è possibile definire tipi di dato per rappresentare informazioni specifiche per una data applicazione
66
Variabili e Tipi di dato: vettori
Un vettore è un insieme ordinato di variabili dello stesso tipo Ogni elemento del vettore è caratterizzato dalla posizione Esempio: v = [2, 14, 13, 44, 142, -2] v(3) = 13 v(6) = -2 Una matrice è un “vettore di vettori” Ogni elemento è caratterizzato dalla posizione: (indice riga, indice colonna) Si possono definire anche vettori n-dimensionali
Top Related