CONCETTI FONDAMENTALI DI FORTRAN 90. Sviluppare un programma in fortran implica i seguenti tre passi:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "CONCETTI FONDAMENTALI DI FORTRAN 90. Sviluppare un programma in fortran implica i seguenti tre passi:"

Transcript

1 CONCETTI FONDAMENTALI DI FORTRAN 90 Sviluppare un programma in fortran implica i seguenti tre passi: Scrivere il sorgente. Cioe, attraverso un editor di testo, scrivere un file ascii che contenga tutte le istruzioni da eseguire Compilare. Cioe trasformare le istruzioni in linguaggio macchina Esguire il Programma. La sequenza di comandi da digitare in ambiente bash e : $emacs programma.f90 & (editing del programma) $ifort [eventuali opzioni] programma.f90 (compilazione del programma) $./a.out (esecuzione del programma) oppure $ifort [eventuali opzioni] programma.f90 o eseguibile $./eseguibile

2 Struttura di un programma in Fortran Un programma Fortran ha generalmente la seguente struttura: Sezione dichiarativa: che include il nome del programma (o della routine, o della funzione), il tipo e il nome delle variabili utilizzate. Sezione esecutiva: che include le istruzioni che descrivono le azioni che il programma deve compiere. Sezione conclusiva: che e la dichiarazione di fine del programma (o della routine, o della funzione) Program nomeprogramma! SEZIONE DICHIARATIVA Implicit none...dichiarazioni di variabili :! SEZONE ESECUTIVA...istruzioni! SEZIONE CONCLUSIVA End Program

3 Sezione Dichiarativa. Tipi semplici intrinseci. Il fortran 90 mette a disposizione 5 tipi di dati intrinseci: - INTEGER tipo numerico per gli interi - REAL tipo numerico per i reali - COMPLEX tipo numerico per i numeri complessi (non trattato in questo corso) - LOGICAL tipo per la gestione dei valori logici - CHARACTER tipo per la rappresentazione di stringhe di caratteri

4 Variabili. Tipo INTEGER: - INTEGER(KIND=1) :: variabile (1 byte, valori da 2 7 a 2 7 1) - INTEGER(KIND=2) :: variabile (2 bytes, valori da 2 15 a ) - INTEGER(KIND=4) :: variabile (4 bytes, valori da 2 31 a ) - INTEGER(KIND=8) :: variabile (8 bytes, valori da 2 63 a ) Tipo REAL: - REAL(KIND=4) :: variabile (4 bytes, valori da a circa, precisione 8 cifre decimali) - REAL(KIND=8) :: variabile (8 bytes, valori da a circa, precisione 16 cifre decimali) - REAL(KIND=16) :: variabile (16 bytes, valori da a circa, precisione 32 cifre decimali) Tipo LOGICAL: - LOGICAL(KIND=1) :: variabile (1 byte) - LOGICAL(KIND=2) :: variabile (2 bytes) - LOGICAL(KIND=4) :: variabile (4 bytes) - LOGICAL(KIND=8) :: variabile (8 bytes) Tipo CHARACTER: - CHARACTER(LEN=n) :: variabile (n = numero di caratteri)

5 Costanti - TIPO(KIND=n),PARAMETER :: costante=valore Se, invece, le costanti sono utilizzate nella sezione esecutiva, allora il loro tipo sara definito implicitamente. Ad esempio: 0, +28, Costanti di tipo INTEGER 0.E0, -3.3E2,1.0E-2 Costanti di tipo REAL(KIND=4) 0.D0, -3.3D2,1.0D-2 Costanti di tipo REAL(KIND=8).TRUE.,.FALSE. Costanti di tipo LOGICAL ciao, ciao Costanti di tipo CHARACTER

6 Vettori. Un vettore (a array) e una sequenza di variabili tutte dello stesso tipo. Si puo accedere ad una di queste variabili direttamente tramite un indice (o piu in generale una n upla di indici). - TIPO(KIND=n,LEN=n),DIMENSION(m) :: nome dove m deve essere un intero costante o una costante definita come parameter. Ad esempio: REAL(KIND=8),DIMENSION(3) :: a dichiara un vettore di 3 reali, accessibili singolarmente come a(1), a(2), a(3) REAL(KIND=8),DIMENSION(4,6) :: b dichiara una matrice 4x6 i cui elementi sono accessibili singolarmente come a(i,j). Gli indici degli array possono avere diversi valori di minimo e massimo. - TIPO(KIND=n,LEN=n),DIMENSION([estremo_inferiore:]estremo_superiore) :: nome Ad esempio. INTEGER(KIND=4),DIMENSION(4:10) :: b definisce un vettore b le cui compenenti vanno da b(4) a b(10). Come le altre variabili un array puo essere inizializzato nella sezione dichiarativa. Ad esempio: REAL(KIND=8),DIMENSION(3) :: forza=(/3.2d0,-1.7d0,0.5d0/)

7 E possibile definire array la cui dimensione e allocata dinamicamente, cioe durante l esecuzione. Per utilizzare queste funzioni, l array deve essere definito com ALLOCATABLE, cioe : - TIPO(KIND=n,LEN=n),ALLOCATABLE,DIMENSION(:) :: nome o anche piu semplicemente - TIPO(KIND=n,LEN=n),ALLOCATABLE :: nome(:) Percio le istruzioni: REAL(KIND=4),ALLOCATABLE :: b(:) REAL(KIND=4),ALLOCATABLE :: a(:,:) dichiarano rispettivamente un vettore b e una matrice a di dimensioni indefinite.

8 Blocchi di memoria etichettati. I blocchi di memoria etichettati, cioe provvisti di nomi, vengono definiti da una istruzione di specificazione nella sezione dichiarativa del programma che assume la forma generica - COMMON /nome/nlista dove nome e il nome globale del blocco COMMON e nlista e la lista dei nomi delle variabili e dei nomi dei vettori che sono nell area di memoria etichettata nome separati dalla virgola.

9 Definizione dei valori iniziali. L istruzione DATA assegna un valore iniziale ad una variabile prima che il programma entri nella parte esecutiva. Questa istruzione, quindi, si trova nella sezione dichiarativa del programma. La sintassi dell istruzione DATA e la seguente: - DATA nlist1/clist1/,nlist2/clist2/... dove nlist e una lista di nomi di variabili e clist e un elenco di costanti. Ad esempio: DATA A/0.1d0/,B/0.2d0/,N/3/

10 Sezione esecutiva. Espressioni Le espressioni numeriche sono in generale costituite da operandi numerici ed operatori numerici. Il risultato di una espressione numerica e generalmente un singolo valore numerico. Gli operatori numerici sono i seguenti: Operatore Funzione ** Elevamento a potenza * Moltiplicazione / Divisione + Somma Sottrazione Le operazioni tra numeri interi hanno come risultato numeri interi. Cioe : 3/4=0, 4/4=1, 20/4=5, 21/4=5 Le operazioni tra numeri reali hanno come risultato numeri reali. Cioe : 3.E0/4.E0=0.75E0, 4.E0/4.E0=1.E0, 1.E0+1.E-16=1.E0 In operazioni miste tra reali ed interi i numeri interi vengono convertiti in reali. Attenzione pero che la conversione avviene in ogni singolo sottocalcolo. 1.E0+1/4=1.E0, 1.E0+1.E0/4=1.25E0

11 Le espressioni relazionali consistono in due (o piu ) espressioni i cui valori vengono confrontati tra loro per valutare se e verificata o meno la relazione stabilita dall operatore relazionale. Gli operatori relazioni sono: Operatore Relazione < Minore di <= Minore di o uguale a == Uguale a /= Diverso da > Maggiore di >= Maggiore di o uguale a Il risultato dell espressione relazionale sara.true. o.false. se la relazione specificata dall operatore relazionale sara soddisfatta o meno.

12 Le espressioni logiche consistono in uno o piu operatori logici e operandi logici, numerici o relazionali. Gli operatori logici sono: Operatore Esempio Relazione.AND. A.AND. B L espressione e vera se A e B sono vere.or. A.OR. B L espressione e vera se A o B, o entrambe, sono vere.eqv. A.EQV. B L espressione e vera se A e B sono entrambe vere o entrambe false.neqv. A.NEQV. B L espressione e vera se A o B sono vere, ma l espressione e falsa se entrambe A e B sono vere.not..not. A L espressione e vera se A e falsa, e falsa se A e vera.

13 Istruzioni di assegnazione Il simbolo = non e il simbolo di uguaglianza, ma di assegnazione. In generale, quindi, in una istruzione di assegnazione avremo a sinistra del simbolo = il nome di una variabile, a destra del simbolo = una qualsiasi espressione valida. A=100 Assegna alla variabile A il valore 100 I=I+1 Aggiunge 1 alla variabile I e assegna il risultato alla variabile I

14 Allocazione dinamica - ALLOCATE(nomevettore(n)) dove n e la dimensione del vettore. Per definire un intervallo degli indici l istruzione sara - ALLOCATE(nomevettore(n1:n2)) dove n1 e n2 sono l indice inferiore e superiore del vettore, rispettivamente. Se ad essere allocata e una matrice, allora l istruzione sara : - ALLOCATE(nomematrice(n1:n2,m1:m2)) La generalizzazione di questo comando a matrici con piu indici e evidente. I valori degli indici non sono in generale noti al momento della compilazione ma possono essere definiti durante l esecuzione del programma. Dopo l utilizzo e opportuno deallocare la memoria con il comando - DEALLOCATE(nomevettore(n)) - DEALLOCATE(nomevettore(n1:n2)) - DEALLOCATE(nomematrice(n1:n2,m1:m2)) Se si vuole verificare l allocazione di un vettore (o una matrice) si puo utilizzare il comando: - ALLOCATED(nomevettore(n)) che restituisce un valore logico.true. se il vettore e stato allocato o.false. veceversa.

15 Costrutto IF THEN ELSE La forma piu semplice per questo costrutto e : IF(espressione_logica) istruzione Questo quando l istruzione da effettuare e una sola. Se invece si ha un blocco di istruzioni e possibile utilizzare il comando: IF(espressione_logica) THEN istruzioni ENDIF

16 Nel caso ci siano due possiblita da decidere il costrutto si puo complicare nella forma: IF(espressione_logica) THEN istruzioni ELSE istruzioni ENDIF

17 Nel caso le decisioni da prendere siano piu di due allora la sintassi sara : IF(espressione_logica) THEN istruzioni ELSEIF(espressione_logica2) THEN istruzioni ELSE istruzioni ENDIF

18 Quindi nella forma piu generale il costrutto sara: IF(espressione_logica_1) THEN sequenza_di_istruzioni_1 ELSEIF(espressione_logica_2) THEN sequenza_di_istruzioni_2 ELSE sequenza_di_istruzioni_3 ENDIF

19 E possibile infine anche associare un nome al costrutto secondo la sintassi [nome:] IF(espressione_logica_1) THEN sequenza_di_istruzioni_1 ELSEIF(espressione_logica_2) THEN [nome] sequenza_di_istruzioni_2 ELSE [nome] sequenza_di_istruzioni_3 ENDIF [nome] dove nome deve essere una stringa lunga massimo 31 caratteri e deve iniziare con una lettere. Nelle clausole ELSE IF e ELSE il nome e opzionale, mentre in ENDIF e obbligatorio.

20 Costrutto SELECT CASE Un altra istruzione di diramazione e il costrutto SELECT CASE la cui sintassi piu generale e : [nome:] SELECT CASE(espressione_di_case) THEN CASE(selettore_1) [nome] sequenza_di_istruzioni_1 CASE(selettore_2) [nome] sequenza_di_istruzioni_2 CASE DEFAULT [nome] sequenza_di_istruzioni_3 END SELECT [nome] espressione_di_case viene confrontata con i selettori. Un selettore specifica una lista di range: se espressione_di_case e nel range di un selettore, allora il blocco di istruzioni corrispondenti verra eseguito, altrimento si passa al selettore successivo e cosi via fino eventualmente ad eseguire il blocco di istruzion di CASE DEFAULT.

21 espressione_di_case deve essere di tipo INTEGER, CHARACTER o LOGICAL ma non di tipo REAL. Un range puo essere specificato come segue: - valore esegue il blocco se espressione_di_case==valore - valore: esegue il blocco se espressione_di_case>=valore - :valore esegue il blocco se espressione_di_case<=valore - val1:val2 esegue il blocco se val1<=espressione_di_case<=val2 Un esempio dell uso di questo costrutto e il seguente: INTEGER :: valore SELECT CASE (valore) CASE (1,2,3,5,7,11,13) stampa a terminale Numero primo CASE (4,6,8:10,12,14:15) stampa a terminale Numero non primo CASE (16:) stampa a terminale Numero troppo grande CASE DEFAULT stampa a terminale Errore END SELECT

22 Istruzioni di ciclo DO I cicli possono essere determinati, se si conosce esattamente il numero di iterazioni da effettuare, o indeterminati, se il numero di iterazioni e ignoto a priori ma finito. I primi vengono detti cicli iterativi mentre i secondi cicli while.

23 Nei cicli iterativi il numero di iterazioni e noto nel momenti un cui si inizia il ciclo. E quindi necessaria una variabile (detta contatore ) che funge da inidice del ciclo. E necessario, inoltre stabilire gli estremi (iniziale e finale) del ciclo, che possono essere decisi durante l esecuzione e una volta stabiliti non possono essere piu cambiati, ed eventualmente un incremento che anch esso puo essere definito durante l esecuzione del programma e una volta stabilito non puo essere piu cambiato. La sintassi generale di un ciclo iterativo e : DO indice=inizio,fine[,incremento] END DO sequenza di istruzioni Nel caso piu semplice in cui l incremento e uguale a 1 avvengono implicitamente le seguenti cose: 1. Immediatamente prima del DO viene posto indice=inizio (cio avviene una sola volta. 2. Se indice<=fine allora viene eseguita la sequenza di istruzioni. Immediatamente prima di END DO viene posto indice=indice Altrimenti si esce dal ciclo In questo caso il numero di iterazioni totali sara fine-inizio+1. L estensione al caso in cui l incremento sia arbitrario e 1. Immediatamente prima del DO viene posto indice=inizio (cio avviene una sola volta. 2. Se indice incremento<=fine incremento allora viene eseguita la sequenza di istruzioni. Immediatamente prima di END DO viene posto indice=indice+incremento. 3. Altrimenti si esce dal ciclo In questo caso il numero di iterazioni totali sara (fine-inizio+incremento)/incremento.

24 Nei cicli while il numero di iterazioni non e necessariamente noto al momento di iniziare le iterazioni. La sintassi generale di un ciclo while e la seguente: DO END DO sequenza_di_istruzioni_1 IF(espressione_logica) EXIT sequenza_di_istruzioni_2 L espressione_logica e la sentinella del ciclo e rappresenta un evento particolare per cui il ciclo deve essere interrotto. L istruzione EXIT determina l uscita dal ciclo.

25 Nei cicli annidati l istruzione EXIT ha effetto sempre sul ciclo piu interno. Percio in questa sequenza DO sequenza_di_istruzioni_1 DO END DO END DO sequenza_di_istruzioni_2 IF(espressione_logica) EXIT sequenza_di_istruzioni_3 sequenza_di_istruzioni_4 l istruzione EXIT porta alla sequenza_di_istruzioni_4. Nota che l istruzione EXIT puo essere utilizzata in qualsiasi tipo di ciclo, anche in quelli iterativi.

26 Un altra possibilita di implementazione dei cicli while e la seguente: DO WHILE (condizione) sequenza_di_istruzioni_1 END DO In questo caso il ciclo viene eseguito fino a che la condizione risulta verificata.

27 Una istruzione spesso utilizzata all interno dei cicli (sia iterativi che while) e il CYCLE, che fa partire la prossima iterazione del ciclo. DO END DO sequenza_di_istruzioni_1 IF(espressione_logica) CYCLE sequenza_di_istruzioni_2 DO indice=inizio,fine[,incremento] END DO sequenza_di_istruzioni_1 IF(espressione_logica) CYCLE sequenza di istruzioni_2 Come per l istruzione EXIT, anche l istruzione CYCLE, nei cicli annidati, ha effetto sempre sul ciclo piu interno.

28 Come per i costrutti IF-THEN-ELSE e SELECT CASE, anche i cicli posso essere identificati con un nome. Percio in generale la sintassi completa sara : [nome:] DO indice=inizio,fine[,incremento] sequenza di istruzioni END DO [nome] [nome:] DO sequenza_di_istruzioni_1 IF(espressione_logica) EXIT [nome] sequenza_di_istruzioni_2 END DO [nome] [nome:] DO WHILE (condizione) sequenza_di_istruzioni_1 END DO [nome]

29 L utilizzo del nome e utile spesso per gestire i comandi EXIT e CYCLE nei cicli annidati. Ad esempio in questa sequenza di istruzioni: esterno: DO sequenza_di_istruzioni_1 interno: DO sequenza_di_istruzioni_2 IF(espressione_logica) EXIT esterno sequenza_di_istruzioni_3 END DO interno sequenza_di_istruzioni_4 END DO esterno sequenza_di_istruzioni_5 il comando EXIT non porta all esecuzione della sequenza_di_istruzioni_4 come farebbe se non ci fosse indicato il nome, ma porta all uscita del ciclo piu esterno e percio all esecuzione della sequenza_di_istruzioni_5.

30 Operazioni di Input/Output Un programma FORTRAN puo leggere e scrivere su file, cioe una sequenza di elementi (caratteri e/o numeri) memorizzati in memoria secondaria (es. hard disk). La disciplina di accesso ad un file puo essere sequenziale, cioe dal primo elemento ai successivi in sequenza, o casuale, cioe ad un elemento qualsiasi in qualsiasi momento. Le operazioni principali su file sono: - Apertura di un file - Lettura di dati - Scrittura di dati - Chiusura del file

31 Aprire un file signifca creare una corrispondenza tra il nome fisico del file ed un nome logico da utilizzare all interno del programma e si effettua attraverso l istruzione: - OPEN (lista_open) La lista_open e una lista di parametri separati da una virgola. I parametri sono: - UNIT: che e il nome logico da utilizzare per accedere al file all interno del programma. Es. UNIT=10 - FILE: che e il nome fisico del file. Es. FILE= pippo.txt - STATUS: che puo assumere i seguenti valori: - OLD : se il file esiste gia e deve essere solo aperto; se il file non esiste viene segnalato un errore. - NEW : per creare un nuovo file se questo non esiste; se il file invece e gia esistente viene segnalato un errore - REPLACE : se il file esiste viene cancellato e ricreato - SCRATCH : per creare un file temporaneo che non viene salvato - ACTION : che puo essere READ o WRITE READ : il file puo essere solo letto, se viene scritto viene segnalato un messaggio di errore WRITE : il file puo essere solo scritto, se viene letto viene segnalato un messaggio di error READWRITE : il file puo essere sia letto che scritto - IOSTAT : variabile di tipo INTEGER che memorizza eventi particolari e che permette di controllare lo stato delle operazioni. La sintassi e IOSTAT=nome_variabile. Se nome_variabile==0 tutto e andato a buon fine nome_variaible/=0 c e stato un errore nell operazione (ad esempio, un file in lettura non esiste, si e raggiunto la fine di un file in lettura o la fine di una riga, si e sbagliato il formato di lettura, etc.)

32 La chiusura di un file significa cancellare l accoppiamento tra il nome fisico del file e l unita logica creata all interno del programma. La sintassi del comando e : - CLOSE (UNIT=unita_logica) Se un file aperto non viene chiuso, la chiusura avviene in modo implicito al termine del programma.

33 La lettura e la scrittura su file avvengono attraverso i comandi - READ (UNIT=unita_logica,formato,IOSTAT=variabile) - WRITE (UNIT=unita_logica,formato) dove appunto l unita_logica e il nome logico assegnato al file nel comando OPEN. La specifica di formato verra descritto in seguito. Altre operazioni che possiamo fare sui files sono: - REWIND che ci riposiziona all inizio del file - BACKSPACE che ci riposiziona alla linea precedente Se al posto dell unita logica si scrive un asterisco, allora questo indica una lettura o scrittura dall input o l ouptut standard, tipicamente il monitor.

34 Formattazione dell Input e Output La specifica di formato puo essere assegnata attraverso: - un intero che specifica l etichetta di una istruzione FORMAT esplicita. Ad es. write(*,100)a 100 FORMAT(descrittori_di_formato) dove 100 e l etichetta di formato; - una stringa costante con nome formato= (descrittori_di_formato) write(*,formato)a - una stringa costante senza nome write(*,fmt= (descrittori_di_formato) )a - una stringa variabile (uso sofisticato che non tratteremo in questo corso) I descrittori di formato utilizzano i seguenti simboli: - c: numero di colonna - d: numero di cifre a destra del punto decimale - m: numero minimo di cifre da visualizzare - n: numero di spazi da saltare - r: fattore di ripetizione - w: quanti caratteri utilizzare per un dato valore

35 Numeri Interi: Il descrittore di formato generale per i numeri interi ha la forma - riw.m: - r indica quanto volte applicare il descrittore - w indica quanti caratteri usare per il numero - m indica quante cifre mostrare Ecco alcuni esempi:

36 Numeri Reali: Il descrittore di formato generale per i numeri reali ha la forma - rfw.d (formato non esponenziale o virgola fissa): - r indica quanto volte applicare il descrittore - w indica quanti caratteri usare per il numero - d indica quante cifre decimali usare dopo il punto - rew.d (formato esponenziale o virgola mobile): - r indica quanto volte applicare il descrittore - w indica quanti caratteri usare per il numero - d indica quante cifre decimali usare dopo il punto Nota bene, se il descrittore di formato e preceduto da 1P allora il primo carattere del numero e la prima cifra significativa. Alcuni esempi: WRITE(*,FMT= (E12.4) ) E+00 XXXXXXXXXXXX WRITE(*,FMT= (1P,E12.4) ) E-01 XXXXXXXXXXXX WRITE(*,FMT= (F8.4) ) XXXXXXXX

37 Stringhe: Il descrittore di formato generale per le stringhe ha la forma: - raw: - r indica quanto volte applicare il descrittore Alcuni esempi: - w (opzionale) specifica la larghezza del campo WRITE(*,FMT= (A6) ) pippo pippo XXXXXX WRITE(*,FMT= (A8) ) pippo pippo XXXXXXXXX Se al posto della specifica di formato c e un asterisco, allora si intende un formato libero, cioe senza formattazione.

38 Sezione Conclusiva La sezione conclusiva e composta dal comando: - END [PROGRAM [nome_programma]]

39 Modularizzazione (Subroutine, Function, Module) In FORTRAN90 esistono die tipi di unita di programma: SUBROUTINE FUNCTION Le unita di programma in FORTRAN90 possono essere contenute in apposite librerie denominate moduli (MODULE).

40 FUNCTION, SUBROUTINE e MODULE possono essere all interno dello stesso file che contiene il programma principale oppure possono essere file a se stanti (con estensione.f90). In questo secondo caso devono essere compilate separatamente e successivamente collegate al programma principale. Supponiamo di avere i seguenti file sorgenti: princ.f90 (contiene il PROGRAM main o programma principale) miomod.f90 (contiene un MODULE modulo) miasub.f90 (contiene la SUBROUTINE stampe) miafunc.f90 (contiene la FUNCTION areacerchio) La sequenza di comandi per creare ed utilizzare il file eseguibile e la seguente: Compilazione separata dei singoli files: $ifort c princ.f90 risultato: file princ.o $ifort c miomod.f90 risultato: file miomod.o e modulo.mod $ifort c miasub.f90 risultato: file miasub.o $ifort c miafunc.f90 risultato: file miafunc.o Collegamento (link) dei singoli files e creazione eseguibile: $ifort o prova princ.o miomod.o miasub.o miafun.o risultato file eseguibile prova Esecuzione file eseguibile: $./prova

41 Percio in generale lo sviluppo di programmi prevede la situazione tipica in cui si ha: Un file sorgente (.f90) contente il PROGRAM (o programma principale) vari files sorgente (.f90) ogniuno contente un MODULE; ogni MODULE puo contenere varie SUBROUTINE e/o FUNCTION; vari files sorgente (.f90) contenenti una o piu SUBROUTINE e una o piu FUNCTION Ogni unita di programma sara costituita, come il programma principale, da una sezione dichiarativa, una sezione esecutiva ed una sezione conclusiva e per queste varranno le stesse regole discusse per il programma principale.

42 SUBROUTINE Una subroutine e una unita di programma indipendente che puo essere utilizzata all interno di altri programmi accetta un certo numero di parametri in input che puo elaborare restituisce un cetro numero parametri in output La sintassi per la dichiarazione di una subroutine e la seguente: SUBROUTINE nome_subroutine(lista_argomenti) RETURN sezione dichiarativa sezione esecutiva END SUBROUTINE nome_subroutine Nella dichiarazione della subroutine, la lista_argomenti e una lista di parametri che possono essere in input e/o output. Per invocare una subroutine e necessario utilizzare l istruzione CALL nome_subroutine(lista_argomenti) L istruzione RETURN a fine procedura e opzionale, tuttavia alcuni compilatori potrebbero richiederla obbligatoriamente.

43 MODULE Il Module e un unita di programma che permette di includere subroutine e funzioni al suo interno. La sintassi per la dichiarazione di un modulo e : MODULE nome_modulo CONTAINS sezione dichiarativa dichiarazioni_di_unita _di_sottoprogrammi END MODULE nome_modulo Per invocare i sottoprogrammi o utilizzare le definizioni di tipo contenuti nel modulo e necessario importare il modulo attraverso l istruzione USE. Ad es. PROGRAM nome_programma USE nome_modulo IMPLICIT NONE......

44 FUNCTION Le funzioni definite dall utente possono essere utilizzate come qualsiasi funzione implicita FORTRAN90. La sintassi per definire una funzione e : FUNCTION nome_function(lista argomenti)! sezione dichiarativa TIPO:: nome_function! sezione esecutiva... RETURN nome_function=espressione END FUNCTION [nome_function] O in maniera equivalente: TIPO FUNCTION nome_function(lista argomenti) Come nel caso delle subroutine anche in questo caso l istruzione RETURN e opzionale.

45 Regole di visibilita Le costanti/variabili dichiarate in una unita di programma si chiamano LOCALI e non sono visibili all esterno dell unita di sottoprogramma stessa. Analogamente, le costanti/variabili definite nel programma principale non sono visibili all interno delle varie unita di programma. Di conseguenza possiamo dichiarare costanti e/o variabili con lo stesso nome in vari sottoprogrammi senza paura che ci sia interferenza tra queste.

46 Passaggio dei parametri nei sottoprogrammi I parametri costituiscono l interfaccia di una unita di programma, ovvero i dati che occorrono per poterla utilizzare. La lista dei parametri, presente tra le parentesi tonde a fianco al nome dell unita di programma, e costituita in generale da variabili e/o array. I parametri dei sottoprogrammi FORTRAN90 sono detti argomenti fittizi, cioe sono dei segnaposto per i valori veri e propri che saranno utilizzati durante l esecuzione del programma (argomenti reali). Esistono tre modalita distinte per ogni parametro passato che si definiscono attraverso l attributo INTENT nei seguenti modi: INTENT(IN): ingresso. Il parametro non puo essere modificato dentro la subroutine o funzione INTENT(OUT): uscita. Al termine della subroutine o funzione il valore del parametro potra essere stato modifica, il valore in ingresso non sara utilizzato INTENT(INOUT): ingresso e uscita. Il parametro ha informazioni in ingresso ma potra essere modificato (DEFAULT). Quando si invoca un sottoprogramma e necessario istanziare tutti i parametri, sostituendo cioe ai parametri fittizi i valori effettivi (espressioni, variabili, array, costanti). Lo schema di passaggio dei valori utilizzato dal FORTRAN90 e quello per riferimento, non vengono passati i valori veri e propri ma viene passo il riferimento alla locazione di memoria che contiene il valore.

47 Diagrammi di flusso Per sviluppare programmi complessi e utile avvalersi dei cosi detti diagrammi di flusso che sono una rappresentazione grafica delle operazioni che il programma dovra eseguire per effettuare il compito che noi desideriamo. La notazione grafica dei diagrammi di flusso e riportata nella seguente figura:

48 Esempio di diagrammi di flusso:

49 Diagramma di flusso del costrutto IF THEN ELSE

50 Ad esempio se volessimo scrivere un programma che, acquisiti in ingresso due numeri a e b determini la soluzione dell equazione ax+b=0 e la stampi a terminale, avremmo il seguente diagramma di flusso:

51 Diagramma di flusso del costrutto SELECT CASE

52 Diagramma di flusso del ciclo DO Il diagramma di flusso di un ciclo iterativo e :

53 Un esempio di implementazione di un ciclo iterativo in un programma piu complesso e :

54 Il diagramma di flusso per un ciclo while, invece, ha la forma:

APPUNTI DEL CORSO DI LABORATORIO DI CALCOLO AVANZATO

APPUNTI DEL CORSO DI LABORATORIO DI CALCOLO AVANZATO APPUNTI DEL CORSO DI LABORATORIO DI CALCOLO AVANZATO Concetti fondamentali di FORTRAN 90 MARCO LIMONGI Istituto Nazionale di Astrofisica Osservatorio Astronomico di Roma 1. CONCETTI FONDAMENTALI DI FORTRAN

Dettagli

Sviluppare un programma in FORTRAN

Sviluppare un programma in FORTRAN Sviluppare un programma in FORTRAN Scrivere il file sorgente Editor di testo (emacs, vi, notepad, etc) Compilare Compilatore (ifort, gfortran, etc) Eseguire il programma Riga di comando, doppio click,

Dettagli

Modularizzazione del software

Modularizzazione del software Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica

Dettagli

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

Esercizi. Fortran 90[/95] Algoritmo di Newton. Esercizi. Algoritmo di Newton: Progetto Esercizi Fortran 90[/95] M. Bianco Quanto vale ires alla fine delle iterazioni? ires=0 DO index=-10,10 ires=ires+1 END DO Esercizi Quanto vale ires alla fine delle iterazioni? ires=0 loop1: DO index1=1,20,5

Dettagli

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

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo

Dettagli

Corso di Fondamenti di Informatica Università degli Studi di Cassino

Corso di Fondamenti di Informatica 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

Dettagli

Introduzione Generalitá sull uso degli array Array allocabili Funzioni intrinseche. Array. Fondamenti di Informatica T (A-K) AA

Introduzione Generalitá sull uso degli array Array allocabili Funzioni intrinseche. Array. Fondamenti di Informatica T (A-K) AA allocabili AA 2013-2014 allocabili Introduzione Un array rappresenta un gruppo di variabili (o costanti) dello stesso tipo, a cui si fa riferimento con un singolo nome. Si definisce anche vettore un array

Dettagli

Costrutti condizionali e iterativi

Costrutti condizionali e iterativi Costrutti condizionali e iterativi Introduction to Fortran 90 Paolo Ramieri, CINECA Aprile 2014 Strutture di controllo Le strutture di controllo permettono di alterare la sequenza di esecuzione delle istruzioni

Dettagli

Costrutti condizionali e iterativi

Costrutti condizionali e iterativi Costrutti condizionali e iterativi Introduction to modern Fortran Paolo Ramieri, CINECA Maggio 2017 Strutture di controllo Le strutture di controllo permettono di alterare la sequenza di esecuzione delle

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

Breve guida al linguaggio FORTRAN 77

Breve guida al linguaggio FORTRAN 77 Breve guida al linguaggio FORTRAN 77 Variabili (valori di default) Iniziali con lettere da I a N Iniziali con lettere da A a H oppure da O a Z variabili intere, 4 byte in precisione singola variabili reali,

Dettagli

Fortran in pillole : prima parte

Fortran in pillole : prima parte Fortran in pillole : prima parte Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria Introduzione al Fortran Un libro consigliato

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Fortran. Funzioni e Subroutine.

Fortran. Funzioni e Subroutine. Fortran Funzioni e Subroutine http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Dal Fortran II del 1958, Fortran consente di

Dettagli

I tipi di dato del Fortran

I tipi di dato del Fortran I tipi di dato del Fortran In Fortran sono disponibili 5 tipi di dato (tipi primitivi o predefiniti): INTEGER REAL COMPLEX CHARACTER LOGICAL tipi numerici tipi non numerici Non considereremo il tipo COMPLEX

Dettagli

Strutture di controllo e cicli

Strutture di controllo e cicli AA 2012-2013 IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale Sintassi IF ( e s p r e

Dettagli

Istruzioni condizionali di diramazione in Fortran 90

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

Dettagli

Ing. Lorenzo Vismara

Ing. Lorenzo Vismara Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&&#2! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)&#7& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi 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

Dettagli

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Le operazioni di Input e Output

Le operazioni di Input e Output Le operazioni di Input e Output Introduction to Fortran 90 Paolo Ramieri, CINECA Aprile 2014 Input e Output Il salvataggio dei datisu disco e la loro lettura è possibile dopo aver generato un "collegamento"

Dettagli

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

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

Operazioni di input e output in Fortran 90

Operazioni di input e output in Fortran 90 Operazioni di input e output in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: file e formattazione DIS - Dipartimento di informatica

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione

Dettagli

Fortran in pillole : seconda lezione

Fortran in pillole : seconda lezione Fortran in pillole : seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria I predicati Riprendiamo l algoritmo

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 1

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

Implementazione di DFA in C

Implementazione di DFA in C Implementazione di DFA in C Dispensa di Laboratorio di Linguaggi di Programmazione Sommario Corrado Mencar, Pasquale Lops, Stefano Ferilli Questa dispensa fornisce le linee guida per l implementazione,

Dettagli

Programmazione con il linguaggio LibreOffice Basic

Programmazione con il linguaggio LibreOffice Basic Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software

Dettagli

Operazioni base di Input e Output

Operazioni base di Input e Output Operazioni base di Input e Output Introduction to modern Fortran Maurizio Cremonesi, CINECA Maggio 2016 Input e Output Il salvataggio dei dati su disco e la loro lettura è possibile dopo aver generato

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

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

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot Andrea Franceschini E-mail: franceschini@dmsa.unipd.it Dispense: http://www.math.unipd.it/ putti/teaching/calcolo

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA MATLAB I/O Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA Funzione input valore = input( inserisci un valore ); Matlab stampa a video la stringa inserisci un valore ed aspetta di ricevere

Dettagli

Caratteristiche generali del linguaggio Visual Basic

Caratteristiche generali del linguaggio Visual Basic Caratteristiche generali del linguaggio Visual Basic Per ottenere un aiuto contestuale dall help di Visual Basic sulla sintassi di funzioni o, oppure su proprietà, eventi o metodi, basta selezionare la

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Dettagli

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

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni Classi di istruzioni In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell algoritmo. Questa consiste di: Leggi i valori di

Dettagli

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni

Dettagli

Fortran per Ingegneri

Fortran per Ingegneri Fortran per Ingegneri Lezione 6 A.A. 2013/2014 Ing. Davide Vanzo davide.vanzo@unitn.it Ing. Simone Zen simone.zen@unitn.it ufficio: Laboratorio didattico di modellistica ambientale (2 piano) Tel interno:

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

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

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 24 settembre 2007 Outline 1 M-file di tipo Script e Function Script Function 2 Elementi di programmazione

Dettagli

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo Programmare Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo Condizioni logiche Le condizioni logiche sono istruzioni che fanno uso di: operatori relazionali (servono a confrontare il valore

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI IF Ogni linguaggio di programmazione presenta almeno una struttura di controllo decisionale. La sintassi del linguaggio C è la seguente. if ()

Dettagli

Introduction to modern Fortran

Introduction to modern Fortran Sintassi di base Introduction to modern Fortran Maurizio Cremonesi, CINECA Maggio 2016 Documentazione e manualistica Può essere facilmente reperita on-line Language reference Descrizione e sintassi del

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Università degli Studi di Milano

Università degli Studi di Milano Università degli Studi di Milano Corso di Laurea in Sicurezza dei Sistemi e delle Reti Informatiche Lezione 3 Input/Output elementare. Operatori, espressioni e istruzioni FABIO SCOTTI Laboratorio di programmazione

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente

Dettagli

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi

Dettagli

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++ Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

Fortran per Ingegneri

Fortran per Ingegneri Fortran per Ingegneri Lezione 4 A.A. 2014/2015 Marco Redolfi marco.redolfi@unitn.it Simone Zen simone.zen@unitn.it Formati e Formattazione Finora abbiamo letto valori da tastiera e scritto sullo schermo

Dettagli

Elementi di Calcolo Scientifico per l Ingegneria A.A

Elementi di Calcolo Scientifico per l Ingegneria A.A Elementi di Calcolo Scientifico per l Ingegneria A.A. 2017-2018 Ottobre 2017 (2 16) Indice 1 2 3 4 Rappresentazione dei numeri reali nel calcolatore l insieme dei numeri reali, R, contiene un numero infinito

Dettagli

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

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

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

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Operazioni di Input/Output

Operazioni di Input/Output Operazioni di Input/Output Il FORTRAN90 è dotato di un'ampia varietà di istruzioni di I/O. Tra queste: -READ -WRITE -REWIND - BACKSPACE -OPEN -CLOSE Altrettanto vario è il numero di istruzioni per formattare

Dettagli

Fondamenti di Informatica A. A. 2018/19

Fondamenti di Informatica A. A. 2018/19 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale

Dettagli

Algoritmi e basi del C

Algoritmi e basi del C Algoritmi e basi del C Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 24 Agosto 2015 Benvenuti nel fantastico mondo del C 2 Il primo programma: ciao mondo 3 Ciao Mondo: stdio.h Come

Dettagli

INTRODUZIONE AL C++ CLASSIFICAZIONE

INTRODUZIONE AL C++ CLASSIFICAZIONE INTRODUZIONE AL C++ 1 CLASSIFICAZIONE LINGUAGGI CHE OPERANO SU DATI OMOGENEI: FORTRAN77, LINGUAGGIO C, LINGUAGGIO C++, PASCAL: operano solo su DATI OMOGENEI (integer, float, double), senza classi e puntatori;

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

Dettagli

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

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii Sommario PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 1.1 Introduzione...

Dettagli

Primi programmi in C

Primi programmi in C Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Controllo >> Sommario Sommario Ricapitolazione Alcune

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Strutture di Dati Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Dati: Conclusioni >> Sommario Sommario Ricapitolazione Alcune

Dettagli

Descrittori di formato. n di cifre a destra del punto decimale n di spazi da saltare fattore di ripetizione larghezza del campo

Descrittori di formato. n di cifre a destra del punto decimale n di spazi da saltare fattore di ripetizione larghezza del campo Descrittori di formato Simbolo d n r w Significato n di cifre a destra del punto decimale n di spazi da saltare fattore di ripetizione larghezza del campo 1 Descrittori di formato Attenzione! w determina

Dettagli

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

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions Dipartimento di Matematica Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions Damiano Pasetto E-mail: pasetto@math.unipd.it Dispense: http://dispense.dmsa.unipd.it/putti/calcolo

Dettagli

Struttura dei programmi e Variabili

Struttura dei programmi e Variabili Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita

Dettagli

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

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Algoritmi e basi del C Struttura di un programma

Algoritmi e basi del C Struttura di un programma Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014 Informazione: dato + significato Che giorno è oggi? 14 Marzo o anche

Dettagli

Struttura di un programma C++

Struttura di un programma C++ Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout

Dettagli

FACOLTA DI INGEGNERIA CIVILE

FACOLTA DI INGEGNERIA CIVILE 1 UNIVERSITA DI PADOVA FACOLTA DI INGEGNERIA CIVILE Corso di calcolo numerico e Programmazione PROGETTO 2: sulla soluzione dei sistemi lineari. 2 3 4 5 6 7 8 9 10 11 12 Iterate k 40 38 36 34 32 30 28 26

Dettagli

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

Laboratorio di Calcolo Numerico Laboratorio 2: Primi programmi in Fortran 90 Laboratorio di Calcolo Numerico Laboratorio 2: Primi programmi in Fortran 90 Andrea Franceschini E-mail: franceschini@dmsa.unipd.it Dispense: http://www.math.unipd.it/ putti/teaching/calcolo ambientale/index.html

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

I/O e strutture di controllo

I/O e strutture di controllo Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2009/2010 I/O e strutture di controllo La presente dispensa e da utilizzarsi

Dettagli

VBA Principali Comandi

VBA Principali Comandi VBA Principali Comandi Sintassi Significato Esempio Dim As Dichiarazione Dim x As Integer di una variabile Dim , , ,.,

Dettagli

Vettori e Matrici (array)

Vettori e Matrici (array) Vettori e Matrici (array) Introduction to Fortran 90 Massimiliano Guarrasi, CINECA m.guarrasi@cineca.it Ottobre 2014 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile

Dettagli

Primo programma in C

Primo programma in C Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

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

INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE PASCAL. Per iniziare lo studio del linguaggio di programmazione pascal, consideriamo il seguente esempio. INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE PASCAL Per iniziare lo studio del linguaggio di programmazione pascal, consideriamo il seguente esempio. ESERCIZIO: realizzare un algoritmo (in linguaggio di

Dettagli

Qualsiasi programma in C++ segue lo schema: Variabili

Qualsiasi programma in C++ segue lo schema: Variabili Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli