Introduzione al linguaggio Fortran 90

Documenti analoghi
Istruzioni condizionali di diramazione in Fortran 90

Introduzione al linguaggio Fortran 90

II Esercitazione: S.O. & Fortran 77

Fortran in pillole : prima parte

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Modularizzazione del software

I tipi di dato del Fortran

Sviluppare un programma in FORTRAN

Somma di numeri binari

Linguaggi, Traduttori e le Basi della Programmazione

Caratteristiche di un linguaggio ad alto livello

Costanti e Variabili

UD 3.2b: Programmazione in Pascal (1)

Linguaggio C - sezione dichiarativa: costanti e variabili

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Fortran. Introduzione.

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Linguaggi di programmazione

La codifica binaria. Informatica B. Daniele Loiacono

Tipi di dato primitivi

Primi passi col linguaggio C

La codifica binaria. Informatica B. Daniele Loiacono

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dall'Algoritmo al Programma

LINGUAGGI DI PROGRAMMAZIONE!

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Programmazione in Java (I modulo)

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

La "macchina" da calcolo

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Introduzione a Matlab

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

INTRODUZIONE ALLA PROGRAMMAZIONE

Rappresentazione dell Informazione

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Informatica di Base - 6 c.f.u.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Introduzione al Linguaggio C

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Unità aritmetica e logica

Foglio Elettronico Lezione 1

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

La programmazione nel linguaggio C

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

DESCRIZIONI RIGOROSE c7

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Rappresentazione dei Dati

Come ragiona il computer. Problemi e algoritmi

Il linguaggio di programmazione Python

Fortran per Ingegneri

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

Programmazione C Massimo Callisto De Donato

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Codifica di informazioni numeriche

Aritmetica dei Calcolatori Elettronici

Rapida Nota sulla Rappresentazione dei Caratteri

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

Tecnologie per il web e lo sviluppo multimediale. Rappresentazione delle informazioni

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Informatica Generale Andrea Corradini I linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Appunti di Laboratorio Il Linguaggio Python - Lezione 1

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

La codifica. dell informazione

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Elementi di informatica

Calcolo numerico e programmazione Rappresentazione dei numeri

Sistemi di Numerazione

Sistemi di Numerazione Binaria

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

Breve guida al linguaggio FORTRAN 77

Rappresentazione dei dati in memoria

Il Software programmabili programma algoritmo

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Esame di INFORMATICA (*) Operazioni Aritmetiche: Somma. Lezione 3. Operazioni Aritmetiche: Somma. Operazioni Aritmetiche: Somma

Rappresentazione numeri reali

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

STORIA E CARATTERISTICHE

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

La rappresentazione delle Informazioni

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Laboratorio di Programmazione Laurea in Bioinformatica

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Interi positivi e negativi

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Tipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Struttura dei programmi C

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Codifica. Rappresentazione di numeri in memoria

ALGORITMI: PROPRIETÀ FONDAMENTALI

Progettazione di algoritmi: componenti di base e metodologie di sviluppo. Variabili e costanti. Variabili e costanti A = 2. Algoritmo PASCAL-LIKE

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Fondamenti di Programmazione. Sistemi di rappresentazione

Transcript:

Introduzione al linguaggio Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 1 / 38

Cosa vedremo in questa lezione 1 Linguaggi di programmazione e Fortran 90 2 Programmare in Fortran 90 3 Tipi di dato in Fortran 90 4 Costanti e variabili 5 Espressioni Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 2 / 38

Linguaggi di programmazione e Fortran 90 Introduzione Abbiamo visto come il calcolatore lavori su informazioni codificate con sequenze binarie Anche le istruzioni sono sequenze binarie! Esempio: c = a + b 11001010010101001110110000111110 Linguaggi di programmazione Linguaggi artificiali dotati di un proprio alfabeto e di regole grammaticali Possibilità di produrre codice macchina Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 3 / 38

Linguaggi di programmazione e Fortran 90 Il primo programma Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 4 / 38

Linguaggi di programmazione e Fortran 90 Vantaggi dei linguaggi di programmazione Per programmare, possiamo usare linguaggio a livello di astrazione più alto del linguaggio macchina (l unico compreso dalla CPU) Classificazione dei linguaggi di programmazione Linguaggio Livello Uso linguaggio macchina bassissimo in pratica, mai usato assembler basso solo per efficienza elevatissima Fortran 90, C, C++, Java,... alto maggioranza delle applicazioni linguaggio naturale altissimo tecnologia non ancora pronta Possiamo scrivere programmi portabili su differenti calcolatori: calcolatore = HARDWARE (HW) programma = SOFTWARE (SW) Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 5 / 38

Linguaggi di programmazione e Fortran 90 Commenti sul Fortran Primo linguaggio per cui è stato scritto un compilatore (1954). Da allora, si è molto evoluto: ultime versioni Fortran 90, Fortran 95 Fortran 2003. VANTAGGI: Linguaggio molto usato per il calcolo numerico. Esistono molte librerie di programmi già fatti. SVANTAGGI: Per alcuni aspetti, ancora impronta anni 50. POTENZIALI CONCORRENTI per questo corso: C, C++, Java. PERCHÉ Fortran 90? Fortran 77: obsoleto. Fortran 95: migliora il Fortran 90 in aspetti troppo avanzati per questo corso. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 6 / 38

Programmare in Fortran 90 Primo programma Fortran 90 1! F i l e : c i a o. f90 2! Time stamp : 01/12/19 1 5 : 0 7 : 3 8 c a d o l i 3! Scopo : i l l u s t r a r e un s e m p l i c e programma F o r t r a n 4 5 PROGRAM c i a o 6! Questo programma stampa un messaggio s u l l o schermo 7 8 WRITE (, ) CIAO MONDO! 9 10 STOP 11 END PROGRAM c i a o Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 7 / 38

Programmare in Fortran 90 Considerazioni sul primo programma Fortran 90 I programmi che vedremo a lezione sono tutti disponibili sulle Dispense Il programma si trova su un file (CIAO.F90) che non contiene altro. Struttura del programma Commenti: opzionali ma utili; servono al progettista, non al computer! Intestazione. Parte istruzioni. Parte conclusiva. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 8 / 38

Programmare in Fortran 90 Considerazioni sul programma (cont.) Nome del file (CIAO.F90): sceglierlo in maniera significativa! Parole chiave: PROGRAM, WRITE, STOP, END Riservate e non si possono cambiare. Per convenzione, sempre MAIUSCOLE. Identificatore (ciao): sceglierlo in maniera significativa! Deve iniziare con una lettera. Può contenere (dal secondo carattere in poi), cifre decimali o _. Può essere lungo al massimo 31 caratteri. Caratteri speciali: (, ),,, *,!. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 9 / 38

Programmare in Fortran 90 Regole base per la scrittura di programmi Fortran 9 Caratteri ammessi: N. Tipo Valori 26 Lettere maiuscole Dalla A alla Z 26 Lettere minuscole Dalla a alla z 10 Cifre numeriche 0,1,...,9 1 Carattere di sottolineatura 5 Simboli matematici + - * / ** 17 Simboli vari ( ). =, $ :! % & ; < >? } spazio Riga max 132 caratteri Se l istruzione è più lunga si può usare il carattere & Commenti con carattere! Possibilità di inserire label numeriche (Valori da 1 a 99999) Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 10 / 38

Programmare in Fortran 90 Il Fortran è case-insensitive 1! F i l e : c a s e i n s e. f 9 0 2! Time stamp : 01/12/19 1 5 : 0 7 : 3 8 c a d o l i 3! Scopo : v e r i f i c a r e che i l F o r t r a n e case i n s e n s i t i v e 4 5 PRoGram mio 6 7! SEZIONE DICHIARATIVA 8 IMPLicit None 9 integer : : I 10 11! SEZIONE ESECUTIVA 12 Write (, ) S c r i v i un numero i n t e r o : 13 read (, ) i 14 write (, ) Hai s c r i t t o :, i 15 16 StOp 17 end program MiO Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 11 / 38

Programmare in Fortran 90 Struttura di un programma Fortran 90 Sezione dichiarativa Prima parte del programma Contiene la dichiarazione del nome del programma, costanti, variabili Istruzioni non eseguibili ma direttive al compilatore Sezione esecutiva Contiene il cuore del programma Istruzioni eseguibili Sezione conclusiva Contiene le istruzioni che concludono il programma Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 12 / 38

Programmare in Fortran 90 Fasi principali nella scrittura di un programma 1. EDITING: scrittura al calcolatore salvataggio su disco rigido del programma si usa un programma apposito (editor) RISULTATO: file sorgente (CIAO.F90) 2. COMPILAZIONE trasformazione in un linguaggio COMPRENSIBILE dalla CPU si usa un programma apposito (compilatore) RISULTATO: file oggetto (CIAO.OBJ) 3. COLLEGAMENTO trasformazione in un linguaggio eseguibile dalla CPU si usa un programma apposito (collegatore o linker) RISULTATO: file eseguibile (CIAO.EXE) 4. ESECUZIONE/VERIFICA si fa eseguire il programma se l esecuzione è quella attesa, allora abbiamo terminato altrimenti, dobbiamo ritornare alla FASE 1 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 13 / 38

Programmare in Fortran 90 Note sugli strumenti usati nel corso Esistono dei prodotti commerciali che contengono un editor, un compilatore, un collegatore ed altri componenti di supporto (ad es. debugger, utile per la correzione dei programmi). Questi prodotti vengono comunemente chiamati interactive development environment (IDE) ed hanno interfacce grafiche sofisticate. Ne esistono anche di gratuiti In questo corso useremo un prodotto freeware che contiene solamente un compilatore ed un collegatore. Per scrivere i programmi Fortran 90 useremo editor come Notepad, Crimson Editor, Notepad++. Per fare eseguire i programmi useremo direttamente il sistema operativo ( prompt dei comandi ). Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 14 / 38

Tipi di dato in Fortran 90 Tipi dato intrinseci in Fortran 90 Il Fortran 90 mette a disposizione del programmatore 5 tipi di dati: INTEGER Tipo numerico per gli interi REAL Tipo numerico per i numeri reali COMPLEX Tipo numerico per i numeri complessi (non trattato in questo corso) LOGICAL Tipo per la gestione di valori logici CHARACTER Tipo per la rappresentazione di stringhe di caratteri In questo corso ci limiteremo ai tipi intrinseci; il Fortran 90 consente al programmatore di definire altri tipi dato (detti derivati) Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 15 / 38

Tipi di dato in Fortran 90 Tipo INTEGER: dettagli Adatto per grandezze contabili (numero di studenti, di corsi, di crediti, giorni del mese, della settimana,... ) Intervallo di definizione: Massimo: 2.147.483.647 = 2 31 1 = due miliardi, 147 milioni,... Minimo: 2.147.483.648 = 2 31 Motivo: per la rappresentazione di un intero: vengono utilizzati 4 Byte (= 32 bit) pertanto, ci sono 2 32 valori distinti: 1 per lo zero, metà per i negativi, circa metà per i positivi Potenziale problema durante l esecuzione (run-time): Trabocco (overflow). Esempio: 1 INTEGER : : num1, num2 2!... 3 READ(, ) num1, num2 4 WRITE(, ) num1 + num2! qui, p o t e n z i a l e OVERFLOW In questo corso, ignoreremo i problemi di trabocco. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 16 / 38

Tipi di dato in Fortran 90 Tipo REAL: dettagli Adatto per grandezze fisiche (temperatura, pressione, potenza, tempo,... ), caratterizzate da: grande dinamica e precisione limitata (non sono contabili ) Intervallo di definizione: Valore assoluto più grande: circa 10 38 Valore assoluto più piccolo: circa 10 38 Cifre significative: circa 7 Motivo: per la rappresentazione di un reale vengono utilizzati 4 Byte (= 32 bit), di cui: 24 per la mantissa e 8 per l esponente Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 17 / 38

Tipi di dato in Fortran 90 Dettagli sul tipo REAL (cont.) Il Fortran 90 ammette vari formati per uno stesso numero reale: senza esponente (è il default). Ad es. 1936.27 con esponente. Ad es. 1.93627E+3. In tal caso: 1.93627 è la mantissa 3 è l esponente la base è implicitamente 10 Nel caso non ci sia l esponente è obbligatorio il punto Il valore dell esponente deve essere un intero (positivo o negativo) Nota: internamente, il Fortran 90 usa la rappresentazione con esponente. Nota: in alcuni compilatori il numero di byte usati (sia per REAL che per INTEGER) può essere aumentato fino a 8. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 18 / 38

Tipi di dato in Fortran 90 Considerazione fondamentale sul tipo REAL In Matematica, valgono relazioni come: arccos( 2/2) arcsin( 2/2) = 0 In Fortran 90 relazioni di questo tipo potrebbero non valere, a causa dell approssimazione intrinsecamente presente. Infatti, l istruzione: WRITE (, ) ACOS(SQRT( 2. ) / 2 ) ASIN (SQRT( 2. ) / 2 ) produce la seguente stampa (errore sull ottava cifra significativa): 0. 596046E 07 Di questi aspetti si occupano altri corsi (ad es., Calcolo numerico). Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 19 / 38

Tipi di dato in Fortran 90 Dettagli sul tipo CHARACTER e LOGICAL Tipo CHARACTER Utilizzato per rappresentare sequenze di caratteri (stringhe) La rappresentazione interna si basa sulla codifica mediante un intero (codifica ASCII) Ogni carattere occupa un byte di memoria caratteri che formano una stringa sono memorizzati in locazioni di memoria adiacenti Per definire una stringa è necessario racchiudere i caratteri dentro apici ( ) oppure virgolette ( ) Tipo LOGICAL Utilizzato per rappresentare i valori logici VERO e FALSO Può assumere i valori.true. e.false. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 20 / 38

Costanti Costanti e variabili Valore non cambia una volta fissato Costanti senza nome Costanti con nome Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 21 / 38

Costanti e variabili Costanti Costanti senza nome Possono essere utilizzate sia nella sezione dichiarativa che in quella esecutiva Tipo determinato implicitamente Scarsa leggibilità e scarso riuso! C o s t a n t i s e n z a nome v a l i d e 0, +28, 8450, 4322! d i t i p o i n t e r o 0., 3.3, 1. 0 E 2, 4. 5 4 E4! t i p o r e a l e.true.,. FALSE.! t i p o l o g i c o CIAO, c i a o, l imbuto! t i p o c a r a t t e r e! C o s t a n t i s e n z a nome non v a l i d e 430,000,000, 1. 0 0 0! t i p o i n t e r o 23, 40E 2.9, 1209,0! t i p o r e a l e. T.,. F.,! t i p o l o g i c o pippo, p l u t o! t i p o c a r a t t e r e Costanti con nome Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 21 / 38

Costanti e variabili Costanti Costanti senza nome Costanti con nome Possono essere create solo nella sezione dichiarativa Necessario specificare il tipo, il nome e il valore Permettono di migliorare la leggibilità dei programmi. Sintassi: tipo, PARAMETER :: nome = valore [, nome2 = valore2,...] Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 21 / 38

Costanti e variabili Secondo programma Fortran 90 1! F i l e : v a r i a b. f 9 0 2! Time stamp : 01/12/19 1 5 : 1 0 : 2 2 c a d o l i 3! Scopo : i l l u s t r a r e l a d i c h i a r a z i o n e e l uso d i v a r i a b i l i 4 5 PROGRAM v a r i a b i l e 6! Questo programma l e g g e un numero i n t e r o da t a s t i e r a e l o stampa 7! s u l l o schermo 8! SEZIONE DICHIARATIVA 9 IMPLICIT NONE! q u e s t a d i c h i a r a z i o n e e o b b l i g a t o r i a 10 INTEGER : : numero! q u e s t a e l a d i c h i a r a z i o n e d i una v a r i a b i l e 11 12! SEZIONE ESECUTIVA 13 WRITE(, ) I n s e r i s c i un numero i n t e r o, p o i premi INVIO : 14! l e t t u r a d i un v a l o r e i n t e r o da t a s t i e r a 15 READ(, ) numero 16! stampa d i una s t r i n g a e d i un i n t e r o 17 WRITE(, ) Hai i n s e r i t o i l numero, numero 18 19 STOP 20 END PROGRAM v a r i a b i l e Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 22 / 38

Costanti e variabili Variabili Struttura del programma Come CIAO.F90, ma ora c è una sezione dichiarativa Abbiamo dichiarato una VARIABILE DI TIPO INTERO Nozione di variabile Metaforicamente è un foglio di carta in cui si scrive con la matita Può variare durante l esecuzione del programma Al massimo 31 caratteri e non può iniziare con un numero numero -7 IDENTIFICATORE o NOME della variabile VALORE della variabile Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 23 / 38

Dichiarazione di variabili Costanti e variabili Sintassi dichiarazione di variabile: 1. Caso INTEGER, REAL, LOGICAL: INTEGER :: nome [= valore] [, nome2 [= valore2],...] REAL :: nome [= valore] [, nome2 [= valore2],...] LOGICAL :: nome [= valore] [, nome2 [= valore2],...] 2. Caso CHARACTER: CHARACTER(len=<dim>) :: nome [= valore] [, nome2 [= valore2],...]] <dim> contiene la dimensione della stringa Può essere indicato direttamente il numero di caratteri Se non viene indicato un valore la stringa conterrà un solo carattere 1! SEZIONE DICHIARATIVA 2 IMPLICIT NONE 3 INTEGER : : i1 = 0, i2 4 REAL : : r1, r2 = 10.2E 2 5 CHARACTER( len =10) : : c1, c2 = pippo 6 CHARACTER( 1 0 ), PARAMETER : : s a l u t o = CIAO! 7 LOGICAL : : l1, l2 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 24 / 38

Assegnazione variabili Costanti e variabili 1! F i l e : a s s e g n a z. f 9 0 2! Time stamp : 01/12/19 1 5 : 0 7 : 3 8 c a d o l i 3! Scopo : i l l u s t r a r e l i s t r u z i o n e d i a s s e g n a z i o n e 4 5 PROGRAM a s s e g n a z i o n e 6! Questo programma e f f e t t u a v a r i e o p e r a z i o n i su due v a r i a b i l i i n t e r e 7 8! SEZIONE DICHIARATIVA 9 IMPLICIT NONE 10! q u e s t a e l a d i c h i a r a z i o n e d i due v a r i a b i l i 11 INTEGER : : num1, num2 12 13! SEZIONE ESECUTIVA 14 WRITE(, ) I n s e r i s c i due numeri i n t e r i, p o i premi INVIO : 15 READ(, ) num1, num2 16 WRITE(, ) Hai i n s e r i t o i numeri, num1, num2 17 18 num1 = num2 10! a s s e g n a z i o n e a l l a v a r i a b i l e num1 19 WRITE(, ) Le v a r i a b i l i o r a v a l g o n o :, num1, num2 20 21 STOP 22 END PROGRAM a s s e g n a z i o n e Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 25 / 38

Costanti e variabili Commento al programma ASSEGNAZ.F90 Struttura del programma: come VARIAB.F90, ma: la sezione dichiarativa contiene dichiarazione di due variabili intere la sezione esecutiva contiene un istruzione di assegnazione Struttura dell istruzione di assegnazione: variabile = espressione In questo caso, espressione è una moltiplicazione Effetto dell istruzione di assegnazione: 1. valuta espressione 2. assegna a variabile il valore ottenuto: modifica variabile non modifica espressione Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 26 / 38

Costanti e variabili Esercizio sull assegnazione 1 num1 = num2 + 10 2 num1 = num1 + 10 3 num1 + 10 = num2 4 num1 = num1 + num2 Determinare il valore delle variabili num1 e num2 Prima Dopo num1 4 num2-7 num1 num1 num1 num1 num2 num2 num2 num2 1 2 3 4 Soluzione Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 27 / 38

Esercizio sull assegnazione Costanti e variabili 1 num1 = num2 + 10 2 num1 = num1 + 10 3 num1 + 10 = num2 4 num1 = num1 + num2 Determinare il valore delle variabili num1 e num2 Soluzione Prima Dopo num1 4 num1 3 num1 14 num1 X num1-3 num2-7 num2 num2 num2 num2-7 -7 X -7 1 2 3 4 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 27 / 38

Espressioni in Fortran 90 Costanti e variabili 1 Le espressioni hanno un tipo. 2 Le espressioni sono atomiche ( semplici ) oppure non atomiche ( complesse ). 3 Possono essere classificate nel seguente modo: Espressioni Atomiche Non atomiche Costanti Variabili Con nome Senza nome Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 28 / 38

Confronto di espressioni Costanti e variabili Tipo Costante Costante Variabile Non con nome senza nome atomica INTEGER gatti 3 i1 i1 + i2 + gatti REAL pi 6.022E+23 r1 r1 + r2 * pi CHARACTER saluto a c1 saluto // c1 // c2 LOGICAL vero.true. l1 l1.and. l2.or. vero Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 29 / 38

Costanti e variabili Esempio di uso di costanti e variabili 1! F i l e : e u r o. f 9 0 2! Time stamp : 01/12/19 1 5 : 0 7 : 3 8 c a d o l i 3! Scopo : i l l u s t r a r e l uso d i c o s t a n t i con nome 4 5 PROGRAM e u r o 6! Questo programma l e g g e un numero d i l i r e ( i n t e r o ) da t a s t i e r a, 7! e stampa i l c o r r i s p e t t i v o i n e u r o ( r e a l e ) 8 9! SEZIONE DICHIARATIVA 10 IMPLICIT NONE 11 REAL, PARAMETER : : l i r e p e r e u r o = 1936.27! d i c h i a r a z i o n e d i una c o s t a n t e 12! con nome 13 INTEGER : : l i r e! d i c h i a r a z i o n e d i una v a r i a b i l e 14 15! SEZIONE ESECUTIVA 16 WRITE (, ) I n s e r i s c i q u a n t i t a d i l i r e : 17 READ(, ) l i r e 18 WRITE (, ) I l c o r r i s p e t t i v o i n e u r o e :, l i r e / l i r e p e r e u r o 19! NOTA: l a d i v i s i o n e f r a i n t e r i e r e a l i da p e r r i s u l t a t o un r e a l e 20 21! NOTA: l a FORMATTAZIONE verra spiegata piu approfonditamente nel segui to 22 WRITE (,100) I l c o r r i s p e t t i v o i n e u r o e c e n t e s i m i d i e u r o e :, l i r e / l i r e p e r e u r o 23 100 FORMAT(, A, F10. 2 ) 24 25 STOP 26 END PROGRAM e u r o Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 30 / 38

Costanti e variabili Quarto programma Fortran 90 (EURO.F90) Programma simile a VARIAB.F90, ma abbiamo dichiarato una costante con nome di tipo reale Esempi input = 1000 output = 0.516457 input = 1000000 output = 516.457 Nota usando la FORMATtazione dell output, stampa solo i centesimi (approfondimenti su FORMAT fra alcune lezioni) Quando usare le costanti con nome: valore che non cambia nell ambito del nostro programma (ad es., lire per euro) grandezza matematica costante (ad es., π, e, Φ) Vantaggi delle costanti con nome: maggiore leggibilità del programma più facile modificare il programma, se necessario Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 31 / 38

Espressioni Operatori su reali e interi Binari infissi (sono cinque) + Addizione - Sottrazione * Moltiplicazione / Divisione ** Elevamento a potenza Unari prefissi (sono due) - (Segno meno) + (Segno più) / fra interi restituisce la parte intera (o quoziente) della divisione fra interi, senza resto. Ad es., 7/2 vale 3. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 32 / 38

Espressioni Considerazioni sulle espressioni Le espressioni sono formate da costanti senza nome, costanti con nome e variabili In Fortran 90 le espressioni devono essere linearizzate e il simbolo * è necessario ovunque ci sia una moltiplicazione. Ad esempio, l espressione: b 2 4ac 2h + 3 si scrive: ( b 2 4 a c ) / ( 2 h + 3) Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 33 / 38

Espressioni Esempio degli operatori matematici 1! F i l e : c e r c h i o. f 9 0 2! Time stamp : 01/12/19 1 5 : 0 7 : 3 8 c a d o l i 3! Scopo : i l l u s t r a r e l uso d i c o s t a n t i con nome 4 5 PROGRAM a r e a c e r c h i o 6! Questo programma l e g g e i l r a g g i o d i un c e r c h i o ( r e a l e p o s i t i v o ) 7! e stampa i v a l o r i d i c i r c o n f e r e n z a e a r e a 8 9! SEZIONE DICHIARATIVA 10 IMPLICIT NONE 11! d i c h i a r a z i o n e d i una c o s t a n t e con nome 12! d i c h i a r a z i o n e d i una v a r i a b i l e 13 REAL, PARAMETER : : p i = 3. 141592 14 REAL : : r a g g i o 15! SEZIONE ESECUTIVA 16 WRITE (, ) Raggio d e l c e r c h i o? 17 READ (, ) r a g g i o 18 WRITE (, ) C i r c o n f e r e n z a :, 2 p i r a g g i o 19 WRITE (, ) Area :, p i r a g g i o r a g g i o 20 STOP 21 END PROGRAM a r e a c e r c h i o Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 34 / 38

Espressioni Quinto programma Fortran 90 (CERCHIO.F90) Struttura del programma: come EURO.F90, ma abbiamo usato vari operatori( +, * ) sui reali Nota: Per calcolare l area, avremmo potuto scrivere anche (usando l operatore ** ): WRITE (, ) Area :, p i r a g g i o 2 Problema di carattere generale: come viene valutata questa espressione? 1. pi * (raggio**2) 2. (pi * raggio)**2 Il Fortran 90 sceglie la 1 (usando le regole di precedenza fra operatori) Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 35 / 38

Espressioni Regole per la valutazione di un espressione Le parentesi forzano la valutazione di un espressione Esempio: 6+(4*2) 14 Precedenza fra operatori: * e / hanno precedenza su + e - Esempio: 6 + 4 * 2 14, cioè viene valutato come 6+(4*2) ** ha precedenza su tutti Esempio: 2 * 3 ** 2 18, cioè viene valutato come 2*(3**2) Ordine di valutazione per operatori con uguale precedenza Per *, /, +, - : da sinistra a destra Esempio: 6 / 3 * 2 4, cioè viene valutato come (6 /3)*2 per ** : da destra a sinistra Esempio: 3**2**3 3**8 6561, cioè viene valutato come 3**(2**3) Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 36 / 38

Espressioni Applicazione: rendez-vous di due aerei Un caccia parte all istante t c e un aerocisterna parte (dallo stesso punto) all istante t s (t c > t s ). Entrambi si muovono di moto rettilineo uniforme con velocità v c e v s (v c > v s ), rispettivamente. Per calcolare il tempo t r e la posizione s r del rendez-vous applichiamo l equazione del moto rettilineo uniforme: Il rendez-vous avviene quando vale: da cui: s = v(t t 0 ) v c (t t c ) = v s (t t s ) t r = v st s + v c t c v c v s, s r = v c (t r t c ) Problema: dati v c, v s, t c e t s, calcolare t r e s r (file RENDEZ.F90). Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 37 / 38

Soluzione dell esercizio Espressioni 1! F i l e : r e n d e z. f 9 0 2! Time stamp : 01/12/19 1 6 : 0 2 : 0 3 c a d o l i 3! Scopo : i l l u s t r a r e una s e m p l i c e a p p l i c a z i o n e a e r o n a u t i c a 4 5 PROGRAM r e n d e z v o u s 6! Questo programma c a l c o l a l i s t a n t e d i rendez vous f r a un c a c c i a ed 7! una a e r o c i s t e r n a 8 9! SEZIONE DICHIARATIVA 10 IMPLICIT NONE 11 REAL : : t c, t s, v c, v s! i d a t i i n i n p u t 12 REAL : : t r, s r! i d a t i d e l rendez vous ( da c a l c o l a r e ) 13 14! SEZIONE ESECUTIVA 15 WRITE (, ) I n s e r i r e l i s t a n t e d i p a r t e n z a d e l l a e r o c i s t e r n a ( s e c ) : 16 READ (, ) t s 17 WRITE (, ) I n s e r i r e l i s t a n t e d i p a r t e n z a d e l c a c c i a ( s e c ) : 18 READ (, ) t c 19 WRITE (, ) I n s e r i r e l a v e l o c i t a d e l l a e r o c i s t e r n a (m/ s e c ) : 20 READ (, ) v s 21 WRITE (, ) I n s e r i r e l a v e l o c i t a d e l c a c c i a (m/ s e c ) : 22 READ (, ) v c 23 t r = ( ( v s t s ) + ( v c t c ) ) / ( v c v s ) 24 s r = v c ( t r t c ) 25 WRITE (, ) Dati d e l rendez vous : 26 WRITE (, ) s e c o n d i :, t r, ; m e t r i :, s r 27 28 STOP 29 END PROGRAM r e n d e z v o u s Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 38 / 38