G. Mecca – Università della Basilicata – [email protected]
Programmazione Procedurale in Linguaggio C++
Elementi di Base Parte 6
Il FORTRAN
versione 2.2
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
2
Sommario
m
Un Altro Esempio: Il FORTRAN 77
m
Struttura del Programma
m
Tipi di Base
m
Dichiarazioni
m
Dichiarazione Implicita
m
Assegnazioni
m
Istruzioni di Lettura e Stampa
Elementi di Base: Conclusioni >> Sommario
G. Mecca - Programmazione Procedurale in Linguaggio C++ 3
m Gli stessi concetti visti per il “clean C”
ðsono alla base di tutti i linguaggi di programmazione procedurale
m Esempio: il FORTRAN 77
ðlinguaggio di più antica concezione
ðconserva alcune caratteristiche legate all’informatica degli anni 50
ðrecentemente: FORTRAN 90
m Attenzione
ðle differenze sono principalmente sintattiche
Elementi di Base: Conclusioni >> FORTRAN
C---Calcolo della superficie del cerchio program primo
implicit none C---Dichiarazioni real pigreco
parameter (pigreco=3.14) integer raggio
real cerchio, circonf C---Operazioni
write(*,*) 'Immetti la lungh. del raggio' write(*,*) '(deve essere un numero intero)' read(*,*) raggio
cerchio = raggio*raggio*pigreco circonf = 2*pigreco*raggio
write(*,*) 'La circonferenza misura', circonf write(*,*) 'Il cerchio ha superficie', cerchio stop
Un Semplice Programma in FORTRAN 77
G. Mecca - Programmazione Procedurale in Linguaggio C++ 5
Struttura del Programma
m
Principali differenze
ðcomincia con la parola chiave program
ðseguito dal nome del programma (es: primo) che deve essere un identificatore
ðfinisce con stop ed end
ðnon ci sono direttive di inclusione ðnon si usa il punto e virgola
ðle stringhe si scrivono tra apici singoli ðparticolare disposizione del codice
6
Struttura del Programma
m
In generale
ðil FORTRAN 77 è decisamente più rigido degli altri linguaggi nella disposizione del codice
m
Esempio
ðtutte le istruzioni di dichiarazione devono comparire prima delle operazioni
ðnon è possibile mischiarle
ðin C++, viceversa, è possibile farlo (dichiarazioni in mezzo alle operazioni)
Elementi di Base: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 7
m
Altro esempio
ðscrittura delle istruzioni sulle righe dello schermo
m
In particolare
ðè possibile specificare una sola istruzione su ogni riga (errori sintattici)
ðnon è possibile utilizzare liberamente le colonne della riga
ðuso riservato delle colonne da 1 a 6
Struttura del Programma
m
Utilizzo delle colonne
ðcolonne da 1 a 5: riservate alle etichette ðcolonna 6: serve per spezzare le istruzioni ðcolonne da 7 a 72: istruzioni
ðcolonne da 73 in poi: ignorate ðcommenti: ‘C’ in colonna 1
m
E’ necessario rispettare i vincoli
ðerrori sintatticiElementi di Base: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 9
Struttura del Programma
1...5 6 7...72 73...80
colonne destinate alle etichette
colonna 6 per spezzare le istruzioni
colonne destinate alle istruzioni
colonne ignorate C Questa e’ una riga di commento
program primo integer i
do 500 i=1,10
500 continue
write (*,*) ‘Istruzione
* molto lunga’
stop end
10
Tipi di Base del FORTRAN 77
m Numeri
ðtipo INTEGER (int): 16 bit in complemento a 2 ðtipo REAL (float): 32 bit in virgola mobile
ðtipo DOUBLE PRECISION (double): 64 bit in v.m.
m Caratteri
ðtipo CHARACTER (char): 8 bit in codice ASCII ðtipo CHARACTER*n per le stringhe: n*8 bit ASCII
m Booleani
ðtipo LOGICAL (bool): 1 bit; valori .true. .false.
Elementi di Base: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 11
m
Costanti
ðsi dichiarano in due passi
ðprimo passo: tipo della costante ðsecondo passo: valore della costante
si utilizza parameter (<nome>=<valore>) m
Variabili
ðsi dichiarano esattamente come in C++
ð<tipo> <identificatore>
Dichiarazione Implicita
m
Una particolarità del prog. FORTRAN
ðistruzione implicit noneðimpedisce la dichiarazione implicita del FORTRAN
m
Dichiarazione implicita
ðle variabili possono essere usate senza essere dichiarate
ðnomi che cominciano con i,j,k,l,m,n: integer ðgli altri nomi: real
Elementi di Base: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 13
Dichiarazione Implicita
m
E’ un meccanismo da non usare
ðintrodotto per ragioni di economia di scrittura ðporta a numerosi errori per dimenticanze ðes: variabile “continua” di tipo logical
m
Nei compilatori moderni
ðè stata introdotta per disabilitare questo meccanismo
ðè buona norma usare sempre implicit none
come prima istruzione del programma
14
Assegnazioni in FORTRAN 77
m
Assegnazioni
ðsemantica uguale a quella del C++
ðleggere differenze sintattiche
m
Esempio: operatori
C++: == != > < >= <=
&& || !
FORTRAN: .eq. .ne. .gt. .lt. .ge. .le.
.and. .or. .not. .eqv. .neqv.
es:((anno.eq.1).and.(matricola.gt.15000))
Elementi di Base: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 15
m
Istruzioni di stampa
ðwrite(*,*) <argom1>, <argom2>, ...
ðstampa gli argomenti sul flusso standard di uscita (schermo) e poi va a capo (\n)
ðle stringhe costanti vanno tra apici singoli ðes: ‘Immetti la lungh. del raggio’
m
ATTENZIONE agli apostrofi nelle stringhe
ðdevono essere raddoppiatið‘Ecco il valore dell’’anno’
Istruzioni di Lettura e Stampa in F77
m
Istruzioni di lettura
ðread (*,*) <variabile>
ðlegge dal flusso standard di ingresso (tastiera)
ðeseguono un input formattato (con qualche piccola differenza)
ðes: per istruzioni di lettura diversa i dati vanno forniti su righe diverse
Elementi di Base: Conclusioni >> FORTRAN
cerchiof.for >>
G. Mecca - Programmazione Procedurale in Linguaggio C++ 17
Riassumendo
m
Un Altro Esempio: Il FORTRAN 77
m
Struttura del Programma
m
Tipi di Base
m
Dichiarazioni
ðDichiarazione Implicita (ATTENZIONE)
m
Assegnazioni
m
Istruzioni di Lettura e Stampa
m
Differenze sintattiche, stessa semantica
18 Elementi di Base: Conclusioni >> Ricapitolazione
// Calcolo della superficie del cerchio
#include <iostream.h>
void main() { // Dichiarazioni
const float pigreco = 3.14;
int raggio;
float cerchio, circonf;
// Operazioni
cout << “Immetti la lungh. del raggio” << endl;
cout << “(deve essere un numero intero)” << endl;
cin >> raggio;
cerchio = raggio * raggio * pigreco;
circonf = 2 * pigreco * raggio;
cout << “La circonferenza misura: “ << circonf << endl;
cout << “Il cerchio ha superficie: “ << cerchio << endl;
}
Un Semplice Programma
G. Mecca - Programmazione Procedurale in Linguaggio C++ 19 C---Dichiarazioni
real pigreco
parameter (pigreco = 3.14) integer raggio
real cerchio, circonf C---Operazioni
write(*,*) 'Immetti la lungh. del raggio' write(*,*) '(deve essere un numero intero)' read(*,*) raggio
cerchio = raggio * raggio * pigreco circonf = 2 * pigreco * raggio
write(*,*) 'La circonferenza misura', circonf write(*,*) 'Il cerchio ha superficie', cerchio stop
end
Termini della Licenza
m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Termini della Licenza
m Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.