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