tipi di dati predefiniti - Unicas - Università degli Studi di Cassino

Transcript

tipi di dati predefiniti - Unicas - Università degli Studi di Cassino
Un linguaggio ad alto livello deve offrire degli strumenti per:
• rappresentare le informazioni di interesse dell’algoritmo
• definire le istruzioni che costituiscono l’algoritmo
Cominciamo ad analizzare la
rappresentazione delle informazioni ...
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Caratteristiche dell’informazione
Qualunque informazione è definita tramite tre caratteristiche
fondamentali:
• Valore
indica il particolare elemento assunto dall’informazione
• Tipo
indica l’insieme degli elementi entro cui è stato scelto il valore
attribuito all’informazione
• Attributo
indica il significato associato all’informazione nel contesto in cui
questa viene utilizzata
Si ottiene un’informazione completa quando un
attributo assume un valore di un determinato tipo
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Esempio
Valore
Tipo
3.5
reale
5.0
reale
5
intero
5
intero
stringa di
caratteri
stringa di
caratteri
Luigi Rossi
Luigi Rossi
C. De Stefano
Attributo
soluzione
dell’equazione
soluzione
dell’equazione
lunghezza del
lato
numero tentativi
impiegato
correntista
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
All’interno di un programma un’informazione può essere organizzata in vari
modi:
• variabile
• costante
• espressione
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Variabile
Una variabile è un ente, appartenente ad un certo tipo, che può assumere
uno qualunque dei valori appartenenti al tipo. Una variabile è identificata da
un nome, che riflette il ruolo che questa assume all’interno del programma.
Esempio:
x
è una variabile di tipo reale che ha valore 0.17 Considera due
lato
è una variabile di tipo intero che ha valore 4
numeri X e Y,
con X > Y
volte è una variabile di tipo intero che ha valore 0
Il valore di una variabile può essere sia
utilizzato (lettura) che modificato (scrittura).
Sostituisci X con Y
Sostituisci Y con R
Dividi X per Y e
ottieni il resto R
no
Per esempio, in un programma che realizza
l’algoritmo del MCD i valori di X, Y e R sono
ospitati in altrettante variabili.
C. De Stefano
Corso di Fondamenti di Informatica
R=0?
si
Termina.
Il MCD è Y
Università degli Studi
di Cassino
Costante
E’ un oggetto, appartenente ad un certo tipo, il cui valore rimane
immodificato durante l’esecuzione del programma. Ad una costante può
essere attribuito un nome.
Esempio:
0
è una costante di tipo intero
3.1415 è una costante di tipo reale
pigreco è una costante di tipo reale che ha valore 3.1415
Espressione
E’ una sequenza di operandi, operatori e parentesi, dove gli operandi
possono essere variabili o costanti. Il tipo dell’espressione complessiva
dipende dai tipi degli operandi coinvolti nell’espressione.
Esempio: (a,b variabili intere; x,y variabili reali)
a*b+50
è un’espressione di tipo intero
a*3.1415
è un’espressione di tipo reale
x/2
è un’espressione di tipo reale
2*b*pigreco
un’espressione di tipo reale
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Il concetto di tipo di dato
Un linguaggio di programmazione mette a disposizione del programmatore
diversi tipi di dato (o, più semplicemente, tipi) per specificare l’insieme dei
valori utilizzato.
In un linguaggio di programmazione, un tipo di dato specifica:
l’insieme dei valori che costituiscono il tipo
l’insieme delle operazioni definite sugli elementi del tipo
Tutte le costanti, variabili ed espressioni appartengono ad un certo tipo. Per
specificare quale sia il tipo associato ad una variabile o ad una costante, è
necessaria una dichiarazione della variabile o della costante, che deve
precedere, nel testo del programma, qualunque utilizzo dell’oggetto
dichiarato.
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Il concetto di tipo di dato (2)
Il numero dei valori distinti che appartengono ad un tipo T viene detto
cardinalità di T. La cardinalità fornisce una misura dell’informazione
associata al tipo e, quindi, della quantità di memoria necessaria per
ospitare un oggetto del tipo.
Un tipo si dice ordinato se è definita una relazione d’ordine tra i suoi
elementi.
Grazie ai tipi di dato, le informazioni di interesse per il programma possono
essere trattate in maniera astratta, senza tener conto, cioè, del modo
effettivo con cui esse sono rappresentate all’interno del calcolatore.
Per ogni variabile o costante dichiarata, è possibile:
determinare a priori l’insieme dei valori e l’insieme delle operazioni
ammissibili e quindi rilevare eventuali errori in fase di traduzione
determinare a priori la quantità di memoria necessaria per
rappresentare tutte le informazioni di interesse
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
I tipi di dato del Fortran
In Fortran sono disponibili 5 tipi di dato (tipi primitivi o predefiniti):
• INTEGER
• REAL
tipi numerici
• COMPLEX
• CHARACTER
• LOGICAL
tipi non numerici
Non considereremo il tipo COMPLEX
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Il tipo INTEGER
È costituito da un sottinsieme limitato dei numeri interi, la cui dimensione
dipende dal calcolatore e/o dal traduttore usati (perché ?).
Per il compilatore g77:
valore intero minimo:
–2.147.483.648
valore intero massimo: +2.147.483.647
Operazioni ammesse
assegnazione
somma
sottrazione
moltiplicazione
divisione intera
potenza
=
+
*
/
**
confronto
>,<,>=,<=,==./=
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Il tipo REAL
È costituito da un sottinsieme limitato e discreto dei numeri reali, la cui
dimensione dipende dal calcolatore e/o dal traduttore usati.
Per il compilatore g77:
valore reale minimo:
–1.70141183E+38 circa
valore reale massimo: +1.70141183E+38 circa
precisione:
1.40129846E–45 circa
Operazioni ammesse
assegnazione
somma
sottrazione
moltiplicazione
divisione
potenza
=
+
*
/
**
confronto
>,<,>=,<=,==./=
C. De Stefano
Nota:
sebbene siano formalmente le stesse
operazioni, hanno una realizzazione
diversa rispetto al tipo INTEGER
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Il tipo CHARACTER
Consiste in un insieme di caratteri, alcuni stampabili (caratteri alfabetici,
cifre, caratteri di punteggiatura, ecc.) ed altri non stampabili tramite i quali si
gestisce il formato dell’input/output (caratteri di controllo).
I sottinsiemi delle lettere e delle cifre sono ordinati e coerenti.
Per la rappresentazione interna, viene tipicamente usato il codice ASCII,
che mette in corrispondenza ogni carattere con un numero intero compreso
tra 0 e 255.
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Il tipo LOGICAL
È un tipo costituito da due soli valori (indicati con .FALSE. e .TRUE.),
necessario per gestire le informazioni di tipo logico (es. il risultato di un
confronto).
Operazioni ammesse
assegnazione
disgiunzione
congiunzione
negazione
equivalenza
diversità
C. De Stefano
=
.OR.
.AND.
.NOT.
.EQV.
.NEQV.
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
x
y
x .AND. y
x .OR. y
x .EQV. y
x .NEQV.y
.FALSE. .FALSE.
.FALSE.
.FALSE.
.TRUE.
.FALSE.
.FALSE.
.TRUE.
.FALSE.
.TRUE.
.FALSE.
.TRUE.
.TRUE.
.FALSE.
.FALSE.
.TRUE.
.FALSE.
.TRUE.
.TRUE.
.TRUE.
.TRUE.
.TRUE.
.TRUE.
.FALSE.
C. De Stefano
x
.NOT. x
.FALSE.
.TRUE.
.TRUE.
.FALSE.
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Struttura di un programma Fortran
PROGRAM prova1
! Sezione dichiarativa
INTEGER :: n
REAL :: x
LOGICAL :: trovato
REAL,PARAMETER :: pigreco=3.141593
! Istruzioni
END PROGRAM
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Definizione di variabili
Per definire una nuova variabile, la sintassi è:
nome_tipo :: nome_variabile
Il nome della variabile contiene al massimo 31 caratteri. I caratteri ammessi
sono lettere, cifre e carattere di sottolineatura (underscore _ ), messi in
qualunque ordine, purchè il primo carattere del nome sia una lettera
La definizione può contenere più variabili dello stesso tipo:
REAL :: x,y,z
Nella definizione, una variabile può essere anche inizializzata:
INTEGER :: n=0
Nello scegliere il nome per le variabili, è consigliabile orientarsi verso nomi
significativi del ruolo della variabile nel programma.
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Dichiarazione implicita
Il Fortran ammette anche la “dichiarazione implicita” delle variabili: tutte le
variabili il cui nome inizia con i,j,k,l,m,n sono automaticamente ritenute di
tipo intero, mentre sono ritenute di tipo reale tutte le altre.
Ciò può portare seri problemi alla leggibilità, manutenzione e correttezza
del programma. Per questo motivo, è preferibile rimuovere questa
possibilità con l’istruzione
IMPLICIT NONE
da inserire dopo l’istruzione PROGRAM e prima di ogni istruzione di
definizione di variabili.
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
Costanti
Costanti di tipo intero
Sono definite come sequenze di cifre decimali, eventualmente precedute da
un segno (+ o -):
0 -1 3256 +34
Costanti di tipo reale
Sono definite come sequenze di cifre decimali, eventualmente precedute da
un segno (+ o -), strutturate in virgola fissa o in virgola mobile (floating point):
0.1 -3.7 0.0001 1.0E-4 -7.6E12
Costanti di tipo carattere
Sono definite come sequenze di caratteri racchiusi tra singoli apici (‘) o doppi
apici (“):
‘x’ “x” ‘Valore di n: ‘ ‘123’ “Il risultato e’: “
Costanti di tipo logico
Sono solo due: .FALSE. e .TRUE.
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino
La dichiarazione PARAMETER
È possibile assegnare un nome ad una costante tramite l’attributo
PARAMETER in una dichiarazione:
REAL, PARAMETER :: pigreco=3.141593
Questa è la sintassi del Fortran 90. La sintassi richiesta dal compilatore
g77 è invece:
REAL :: pigreco
PARAMETER (pigreco=3.141593)
C. De Stefano
Corso di Fondamenti di Informatica
Università degli Studi
di Cassino