Introduzione al linguaggio Fortran 90

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

Istruzioni condizionali di diramazione in Fortran 90

Introduzione al linguaggio Fortran 90

Modularizzazione del software

Breve guida al linguaggio FORTRAN 77

Corso di Fondamenti di Informatica Università degli Studi di Cassino

Fortran in pillole : prima parte

I tipi di dato del Fortran

Esercizi. Fortran 90[/95] Algoritmo di Newton. Esercizi. Algoritmo di Newton: Progetto

Programmazione Procedurale in Linguaggio C++

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Università di Roma La Sapienza, Facoltà di Ingegneria. Corso di Laurea in Ingegneria Aerospaziale. Corso di INFORMATICA A.A.

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Il Linguaggio di Programmazione Pascal

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.2b: Programmazione in Pascal (1)

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

Vettori e Matrici (array)

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot

UD 3.2b: Programmazione in Pascal (1)

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions

Vettori e Matrici (array)

Sviluppare un programma in FORTRAN

Fortran per Ingegneri

Input/Output. Console e File.

Come ragiona il computer. Problemi e algoritmi

II Esercitazione: S.O. & Fortran 77

Introduzione alla programmazione in linguaggio C

Notazione e convenzioni in questi lucidi

Introduzione alle Procedure

Introduction to modern Fortran

Fortran. Funzioni e Subroutine.

PASCAL. 05/04/2012 Pascal 1

Fondamenti di Informatica L-A. Esercitazione 2

Programmazione Procedurale in Linguaggio C++

Fortran. Introduzione.

Operazioni di Input/Output

FONDAMENTI DI INFORMATICA

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

INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE PASCAL. Per iniziare lo studio del linguaggio di programmazione pascal, consideriamo il seguente esempio.

Operazioni di input e output in Fortran 90

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici. Appello dell 11 Febbraio 2008 ( )

C: primi elementi. Lezione 4

Lezione 5 programmazione in Java. Anteprima. Tipi classe. I tipi classe BASE e loro dichiarazione La Dichiarazione (new) Il confronto

Informatica (CIV) Esercitazione su FORTRAN. Andrea Romanoni

La sezione di dichiarazione delle costanti 1.2 I tipi elementari Classificazione dei tipi Il tipo integer Il tipo boolean

Laboratorio di Calcolo Numerico Laboratorio 4: Functions e metodo di Picard

Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza

Cosa serve per cominciare?

Programmazione Procedurale in Linguaggio C++

INTRODUZIONE AL C++ CLASSIFICAZIONE

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici Appello Straordinario Mercoledì 18 Ottobre 2006 ( )

LEZIONE 1 LE BASI DEL LINGUAGGIO C

Dati due punti sul piano calcolare la loro distanza

Laboratorio di Calcolo Numerico Laboratorio 3: equazioni non lineari

Strutture di controllo e cicli

C. De Stefano Corso di Fondamenti di Informatica Università degli Studi di Cassino

Programmazione Procedurale in Linguaggio C++

La Programmazione. Cos è la programmazione? Concetti preliminari

FACOLTA DI INGEGNERIA CIVILE

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

Fortran per Ingegneri

Fortran per Ingegneri

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

Esercizio 2 (punti 3) Dire a quale numero decimale corrisponde il seguente numero assegnato in formato IEEE P754:

Laboratorio di Programmazione(corso A) Laurea in Informatica - A.A. 2000/2001 Docente: A. Lanza

Fondamenti di Informatica T1 Introduzione al linguaggio Java Input/Output-Variabili-Tipi

Fortran per Ingegneri

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

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici. Appello Straordinario del 05 Marzo 2007 ( )

Corso di Fondamenti di Informatica prova del 26/03/2007

Programmazione Procedurale in Linguaggio C++

Le operazioni di Input e Output

Il linguaggio JavaScript

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

Corso di PHP. Prerequisiti. 2.2 Operatori. Conoscenza HTML Tecnica della programmazione Principi di programmazione web. M. Malatesta 2.

UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 FORTRAN. Documentazione di riferimento: Ambienti di sviluppo:

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6

Char. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Risoluzione di un problema

Operazioni base di Input e Output

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Descrittori di formato

Il Pascal. Università degli Studi di Salerno

Lezione 6 Introduzione al C++ Mauro Piccolo

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

Laboratorio di Calcolo Numerico Laboratorio 2: Primi programmi in Fortran 90

UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE

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

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

Appelli degli anni precedenti Domande di teoria

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

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

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

I tipi strutturati e i record in C++

Vettori e Matrici (array)

Corso di Fondamenti di Informatica prova del 08/01/2007

Variabili e Istruzioni

Transcript:

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

Cosa vedremo in questa lezione 1 Conversione di tipo 2 Funzioni in Fortran 90 3 Elaborazioni sui caratteri 4 Input e output con formato libero Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 2 / 14

Conversione di tipo Conversione di tipo implicita In espressioni miste (cioè che contengono sia reali sia interi), viene effettuata automaticamente (cioè senza una richiesta esplicita del programmatore) una conversione da intero a reale. Esempi:! CONVERSIONE AUTOMATICA: 2 > 2. WRITE(, ) 7. 0 2! stampa 1 4. 0! NESSUNA CONVERSIONE AUTOMATICA WRITE(, ) 1 + 1/4! stampa 1! nota : 1/4 è u g u a l e a 0! CONVERSIONE AUTOMATICA: 0 > 0. WRITE(, ) 1. + 1/4! stampa 1. 0! CONVERSIONE AUTOMATICA: 1 > 1. E 4 > 4. WRITE(, ) 1 + 1. / 4! stampa 1. 2 5 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 3 / 14

Conversione di tipo Conversione di tipo in istruzioni di assegnazione In caso di istruzione di assegnazione: variabile = espressione in cui variabile ed espressione hanno tipo diverso, l espressione viene convertita (implicitamente) al tipo della variabile. Esempi: 1 INTEGER : : i 2 REAL : : r 3! a l t r e i s t r u z i o n i.... 4! c o n v e r s i o n e i m p l i c i t a da i n t e r o a r e a l e 5 r = 3! CONVERSIONE AUTOMATICA: 3 > 3. 6 WRITE (, ) r! stampa 3. 0 7! c o n v e r s i o n e i m p l i c i t a ( troncamento ) da r e a l e a i n t e r o 8 i = 3. 2! TRONCAMENTO AUTOMATICO: 3. 2 > 3 9 WRITE (, ) i! stampa 3 10 i = 3. 9! TRONCAMENTO AUTOMATICO: 3. 9 > 3 11 WRITE (, ) i! stampa 3 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 4 / 14

Conversione di tipo Conversione di tipo esplicita In tutti i casi in cui non siamo soddisfatti della conversione implicita, possiamo forzare la conversione, mediante delle funzioni di conversione esplicita. Nome Dominio Codominio Valore restituito REAL(A) INTEGER REAL reale corrispondente ad A INT(A) REAL INTEGER intero corrispondente ad A (troncamento) NINT(A) REAL INTEGER intero corrispondente ad A (arrotondam.) Esempio di applicazione: Conversione da euro a lire (file LIRE.F90) Viene inserito un REAL (quantità degli euro) Viene calcolato un REAL (quantità delle lire). Dobbiamo stampare un INTEGER. Soluzione: usiamo NINT. Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 5 / 14

Programma Fortran 90 Conversione di tipo 1! F i l e : l i r e. 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 e l uso d e l l a f u n z i o n e d i 4! c o n v e r s i o n e r e a l i >i n t e r i 5 6 PROGRAM l i r e 7! Questo programma l e g g e un v a l o r e i n e u r o ( r e a l e ) da t a s t i e r a, 8! e stampa i l c o r r i s p e t t i v o i n l i r e ( i n t e r o ) 9 10! SEZIONE DICHIARATIVA 11 IMPLICIT NONE 12 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 13! con nome 14 REAL : : e u r o! 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 15 16! SEZIONE ESECUTIVA 17 WRITE (, ) I n s e r i s c i q u a n t i t a d i e u r o : 18 READ(, ) e u r o 19 WRITE (, ) I l c o r r i s p e t t i v o i n l i r e e :, NINT( e u r o l i r e p e r e u r o ) 20 21 STOP 22 END PROGRAM l i r e Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 6 / 14

Funzioni in Fortran 90 Caratteristiche delle funzioni Fortran 90 Funzione (ad un solo valore): legge che associa ad ogni gruppo di valori in ingresso un solo valore. Fortran 90 mette a disposizione due meccanismi per utilizzare funzioni matematiche: Funzioni intrinseche Funzioni esterne (le vedremo più avanti) Le funzioni possono essere utilizzate nelle espressioni Anche all interno di altre funzioni! Nelle espressioni le funzioni possono essere considerate equivalenti ad una costante o una variabile Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 7 / 14

Funzioni in Fortran 90 Dettagli sulle funzioni Input/output nelle funzioni Valori in ingresso: ARGOMENTI della funzione Valore (unico) in uscita: REAL, INTEGER, CHARACTER, LOGICAL Meccanismo utilizzato: Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 8 / 14

Funzioni in Fortran 90 Funzioni predefinite (o intrinseche) Ne esistono tantissime (vedere libro, par. 2.7 e Appendice A). Principali (per i nostri scopi): Nome Dominio Codominio Valore restituito Note COS(A) R R cos(a) A in radianti SIN(A) R R sin(a) A in radianti TAN(A) R R tan(a) A in radianti ACOS(A) R R arccos(a) A in radianti ASIN(A) R R arcsin(a) A in radianti ATAN(A) R R arctan(a) A in radianti EXP(A) R R e A LOG(A) R R log e A LOG10(A) R R SQRT(A) R R log 10 A A ABS(A) R, I R, I A MOD(A,B) I I resto di A/B Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 9 / 14

Funzioni in Fortran 90 Esempi: calcolo di varie formule Formule della Geometria Dato il raggio, calcolare volume e superficie di una sfera! -- Sezione dichiarativa REAL :: raggio REAL, PARAMETER :: pigreco = 3.141592! -- Sezione esecutiva READ(*,*) raggio WRITE(*,*) Il volume della sfera e :, (4*pigreco*raggio**3)/3 WRITE(*,*) La superficie della sfera e :, 4*pigreco*raggio**2 Formule della Fisica Formule sui resti Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 10 / 14

Funzioni in Fortran 90 Esempi: calcolo di varie formule Formule della Geometria Formule della Fisica Data in ingresso la lunghezza del filo di un pendolo semplice, calcolare il suo periodo di oscillazione! -- Sezione dichiarativa REAL :: lunghezza filo REAL, PARAMETER :: pigreco = 3.141592 REAL, PARAMETER :: g = 9.81! -- Sezione esecutiva READ(*,*) lunghezza filo WRITE(*,*) Il periodo del pendolo e : Formule sui resti, 2*pigreco*sqrt(lunghezza filo/g) Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 10 / 14

Funzioni in Fortran 90 Esempi: calcolo di varie formule Formule della Geometria Formule della Fisica Formule sui resti Data una quantità di tempo in ore, minuti e secondi, calcolarne la metà! -- Sezione dichiarativa INTEGER :: ore, minuti, secondi INTEGER :: meta ore, meta minuti, meta secondi INTEGER :: resto ore, resto minuti! -- Sezione esecutiva READ(*,*) ore, minuti, secondi meta ore = ore/2 resto ore = MOD(ore, 2) meta minuti = (minuti + resto ore*60)/2 resto minuti = MOD((minuti + resto ore*60),2) meta secondi = (secondi + resto minuti*60)/2 WRITE(*,*) la meta e : meta ore, meta minuti, meta secondi Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 10 / 14

Elaborazioni su caratteri e stringhe Elaborazioni sui caratteri Operazioni tipiche sulle stringhe: Selezione di sottostringa WRITE(*,*) stringa(1:8)! 8 compresi Concatenazione stringa = ciao. // f90 stampa i caratteri da 1 a Funzioni predefinite sulle stringhe Nome Dominio Codominio Valore restituito IACHAR(A) CHARACTER(1) INTEGER codice ASCII di A ACHAR(A) INTEGER CHARACTER(1) carattere il cui codice ASCII è A Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 11 / 14

Esempio di elaborazione di caratteri Elaborazioni sui caratteri 1 PROGRAM prova 2! S e z i o n e d i c h i a r a t i v a 3 IMPLICIT NONE 4 INTEGER : : i 5 CHARACTER( 1 ) : : c 6 7! S e z i o n e e s e c u t i v a 8 WRITE(, ) I n s e r i s c i un c a r a t t e r e : 9 READ(, ) c 10 WRITE(, ) I l c o d i c e ASCII d i, c, e :, IACHAR( c ) 11 WRITE(, ) I n s e r i s c i un i n t e r o 12 READ(, ) i 13 WRITE(, ) I l c a r a t t e r e, ACHAR( i ), ha c o d i c e ASCII, i 14 15 STOP 16 END PROGRAM prova Applicazione: Algebra dei caratteri (file CARATT1.F90). Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 12 / 14

Algebra dei caratteri Elaborazioni sui caratteri 1! F i l e : c a r a t t 1. f 9 0 2! Time stamp : 01/12/19 1 5 : 0 7 : 3 4 c a d o l i 3! Scopo : m o s t r a r e o p e r a z i o n i su c a r a t t e r i e i n t e r i 4 5 PROGRAM a v a n z a c a r a t t e r e 1 6! Questo programma l e g g e un c a r a t t e r e a l f a b e t i c o m a i u s c o l o c ed un 7! i n t e r o p o s i t i v o i, e stampa i l c a r a t t e r e a l f a b e t i c o che s e g u e c d i i 8! p o s i z i o n i n e l l ordinamento a l f a b e t i c o. 9! Ad esempio, s e l i n p u t e c o s t i t u i t o da B e 3, l o u t p u t e E. 10! ASSUNZIONE : i l r i s u l t a t o e sempre i n f e r i o r e o u g u a l e a Z. 11 12! SEZIONE DICHIARATIVA 13 IMPLICIT NONE 14 CHARACTER( 1 ) : : c! i l c a r a t t e r e l e t t o 15 INTEGER : : i! l i n t e r o l e t t o 16! SEZIONE ESECUTIVA 17 WRITE(, ) I n s e r i s c i un c a r a t t e r e m a i u s c o l o : 18 READ (, ) c 19 WRITE(, ) I n s e r i s c i un i n t e r o p o s i t i v o : 20 READ (, ) i 21 WRITE(, ) I l c a r a t t e r e che s e g u e, c, d i, i, p o s t i e :, & 22 & ACHAR(IACHAR( c ) + i ) 23 STOP 24 END PROGRAM a v a n z a c a r a t t e r e 1 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 13 / 14

Input e output con formato libero Input e output con formato libero Lettura da tastiera Istruzione READ(*,*) listainput Primo argomento: dispositivo da cui leggere le informazioni (se asterisco è il dispositivo standard) Secondo argomento: informazioni di formattazione (se asterisco formattazione standard) listainput è un elenco di variabili separate da virgole I valori digitati devono essere dello stesso tipo delle variabili (e anche nello stesso ordine) Scrittura su schermo Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 14 / 14

Input e output con formato libero Input e output con formato libero Lettura da tastiera Scrittura su schermo Istruzione WRITE(*,*) listaoutput Primo argomento: dispositivo su cui scrivere le informazioni (se asterisco è il dispositivo standard) Secondo argomento: informazioni di formattazione (se asterisco formattazione standard) listaoutput è un elenco di variabili, costanti, funzioni ed espressioni separate da virgole Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica 14 / 14