Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 6 Il FORTRAN versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – Università della Basilicata – [email protected] Elementi di Base: Conclusioni >> Sommario Sommario Un Altro Esempio: Il FORTRAN 77 Struttura del Programma Tipi di Base Dichiarazioni Assegnazioni Istruzioni di Lettura e Stampa G. Mecca - Programmazione Procedurale in Linguaggio C++ 2 Elementi di Base: Conclusioni >> FORTRAN 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 3 Elementi di Base: Conclusioni >> FORTRAN 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 4 Elementi di Base: Conclusioni >> FORTRAN Struttura del Programma 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 5 Elementi di Base: Conclusioni >> FORTRAN Struttura del Programma 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) G. Mecca - Programmazione Procedurale in Linguaggio C++ 6 Elementi di Base: Conclusioni >> FORTRAN Struttura del Programma 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 7 Elementi di Base: Conclusioni >> FORTRAN Struttura del Programma 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 8 Elementi di Base: Conclusioni >> FORTRAN Struttura del Programma 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ colonne ignorate 9 Elementi di Base: Conclusioni >> FORTRAN 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. G. Mecca - Programmazione Procedurale in Linguaggio C++ 10 Elementi di Base: Conclusioni >> FORTRAN 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> G. Mecca - Programmazione Procedurale in Linguaggio C++ 11 Elementi di Base: Conclusioni >> FORTRAN Assegnazioni in FORTRAN 77 Assegnazioni semantica uguale a quella del C++ leggere differenze sintattiche Esempio: C++: operatori == && != || > ! < >= <= FORTRAN: .eq. .ne. .gt. .lt. .ge. .le. .and. .or. .not. .eqv. .neqv. es:((anno.eq.1).and.(matricola.gt.15000)) G. Mecca - Programmazione Procedurale in Linguaggio C++ 12 Elementi di Base: Conclusioni >> FORTRAN 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’ G. Mecca - Programmazione Procedurale in Linguaggio C++ 13 Elementi di Base: Conclusioni >> FORTRAN 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 >> G. Mecca - Programmazione Procedurale in Linguaggio C++ 14 Elementi di Base: Conclusioni >> Sommario Riassumendo Un Altro Esempio: Il FORTRAN 77 Struttura del Programma Tipi di Base Dichiarazioni Assegnazioni Istruzioni di Lettura e Stampa Grandi differenze nella sintassi Piccole differenze nella semantica G. Mecca - Programmazione Procedurale in Linguaggio C++ 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; } G. Mecca - Programmazione Procedurale in Linguaggio C++ 16 Elementi di Base: Conclusioni >> FORTRAN 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 17 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons AttributionShareAlike 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 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. G. Mecca - Programmazione Procedurale in Linguaggio C++ 18