Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 6 Il FORTRAN versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina) G. Mecca Università della Basilicata mecca@unibas.it Elementi di Base: Conclusioni >> Sommario Sommario Un Altro Esempio: Il FORTRAN 77 Tipi di Base Dichiarazioni Assegnazioni Istruzioni di Lettura e Stampa 2
Un Altro Esempio: Il FORTRAN Gli stessi concetti sono alla base di tutti i linguaggi di programmazione procedurale Esempio: il FORTRAN 77 linguaggio di più antica concezione conserva alcune caratteristiche legate all informatica degli anni 50 recentemente: FORTRAN 90 Attenzione le differenze sono principalmente sintattiche 3 Un Semplice Programma in FORTRAN 77 C------Calcolo della superficie del cerchio program primo 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 4
Principali differenze comincia con la parola chiave program 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 5 In generale il FORTRAN 77 è decisamente più rigido degli altri linguaggi nella disposizione del codice Esempio tutte le istruzioni di dichiarazione devono comparire prima delle operazioni non è possibile mischiarle in C++, viceversa, è possibile farlo (dichiarazioni in mezzo alle operazioni) 6
Altro esempio scrittura delle istruzioni sulle righe dello schermo 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 7 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 E necessario rispettare i vincoli errori sintattici 8
1...5 6 7...72 73...80 C Questa e una riga di commento program primo integer i do 500 i=1,10 write (*,*) Istruzione * molto lunga 500 continue stop end colonne destinate alle etichette colonna 6 per spezzare le istruzioni colonne destinate alle istruzioni colonne ignorate 9 Tipi di Base del FORTRAN 77 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. Caratteri tipo CHARACTER (char): 8 bit in codice ASCII tipo CHARACTER*n per le stringhe: n*8 bit ASCII Booleani tipo LOGICAL (bool): 1 bit; valori.true..false. 10
Dichiarazioni in FORTRAN 77 Costanti si dichiarano in due passi primo passo: tipo della costante secondo passo: valore della costante si utilizza parameter (<nome>=<valore>) Variabili si dichiarano esattamente come in C++ <tipo> <identificatore> 11 Assegnazioni in FORTRAN 77 Assegnazioni semantica uguale a quella del C++ leggere differenze sintattiche Esempio: operatori C++: ==!= > < >= <= &&! FORTRAN:.eq..ne..gt..lt..ge..le..and..or..not..eqv..neqv. es:((anno.eq.1).and.(matricola.gt.15000)) 12
Istruzioni di Lettura e Stampa in F77 Istruzioni di stampa write(*,*) <argom1>, <argom2>,... stampa sul flusso standard di uscita (schermo) le stringhe costanti vanno tra apici singoli es: Immetti la lungh. del raggio ATTENZIONE agli apostrofi nelle stringhe devono essere raddoppiati Ecco il valore dell anno 13 Istruzioni di Lettura e Stampa in F77 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 cerchiof.for >> 14
Elementi di Base: Conclusioni >> Sommario Riassumendo Un Altro Esempio: Il FORTRAN 77 Tipi di Base Dichiarazioni Assegnazioni Istruzioni di Lettura e Stampa Grandi differenze nella sintassi Piccole differenze nella semantica 15 Elementi di Base: Conclusioni >> Ricapitolazione Un Semplice Programma // 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; } 16
Un Semplice Programma in FORTRAN 77 C------Calcolo della superficie del cerchio program primo 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 17 Termini della Licenza Termini della Licenza 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. Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copiadella 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. 18