G. Mecca – Università della Basilicata – mecca@unibas.it
Programmazione Procedurale in Linguaggio C++
Strutture di Controllo Parte 5
Il FORTRAN
versione 2.1
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Sommario
m Un altro esempio: Il linguaggio FORTRAN
m Istruzioni Condizionali
m Istruzioni Iterative ðIstruzione do-end do
ðIstruzione do while-end do
Strutture di Controllo: Conclusioni >> Sommario
G. Mecca - Programmazione Procedurale in Linguaggio C++ 3
Un Altro Esempio: FORTRAN
m Al solito
ði concetti introdotti con riferimento al C++
valgono anche per gli altri linguaggi procedurali
m Strutture di controllo in FORTRAN
ðistruzioni condizionali (IF-THEN-ELSE, IF- THEN)
ðistruzioni iterative (ciclo DO – ciclo di tipo for, ciclo DO WHILE)
Strutture di Controllo: Conclusioni >> FORTRAN
Un Esempio: Media con For
program mediaf
implicit none real voto, sommaVoti, media integer numeroEsami, i
write (*,*) 'Quanti esami hai sostenuto ?' read (*,*) numeroEsami
sommaVoti = 0.0 do i = 1, numeroEsami
write (*,*) 'Immetti il voto di un esame' read (*,*) voto
sommaVoti = sommaVoti + voto end do
if (numeroEsami.gt.0) then
media = sommaVoti / numeroEsami write (*,*) 'La media vale: ', media else
write (*,*) 'Non hai fornito alcun voto' end if
stop end
Strutture di Controllo: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 5 implicit none
real voto, sommaVoti, media integer numeroEsami
logical continua continua = .true.
numeroEsami = 0 sommaVoti = 0.0
do while (continua.eqv..true.)
write (*,*) 'Immetti il voto di un esame (0 per fermarti)' read (*,*) voto
if (voto.eq.0) then continua = .false.
else
numeroEsami = numeroEsami + 1 sommaVoti = sommaVoti + voto end if
end do
if (numeroEsami.gt.0) then
media = sommaVoti / numeroEsami write (*,*) 'La media vale: ', media else
write (*,*) 'Non hai fornito alcun voto' end if
stop end
Un Esempio: Media con While
>>
Istruzioni Condizionali
m Istruzioni condizionali in FORTRAN 77 ðistruzione IF-THEN-ELSE-END IF
ðistruzione IF-THEN-END IF
m Sintassi
if (<condizione>) then if (<condizione>) then
<istruzioni> <istruzioni>
else end if
<istruzioni>
end if
Strutture di Controllo: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 7
Istruzioni Condizionali
m Semantica
ðidentica a quella dell’istruzione if in C++
m Differenze
ðè obbligatoria la parola chiave THEN
ðin FORTRAN non esiste il concetto di blocco di istruzioni (equivalente delle { }); i blocchi sono delimitati da THEN-ELSE-END IF
ðè considerevolmente diversa la sintassi delle condizioni
Strutture di Controllo: Conclusioni >> FORTRAN
Istruzioni Condizionali
m Condizioni
ðoperatori di confronto in FORTRAN
.eq. .ne. .gt. .lt. .ge. .le.
.eqv. .neqv.
ðoperatori booleani in FORTRAN
.and. .or. .not. .true. .false.
m Esempi
ð ((anno.gt.1).and.(matricola.gt.15000)) ð (continua.eqv..true.)
Strutture di Controllo: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 9
Istruzioni Iterative
m Istruzioni iterative in FORTRAN 77
ðil linguaggio prevede solo una forma di ciclo ðistruzione DO-CONTINUE
ðciclo di tipo for (cicli a conteggio) ðè basato sull’uso di etichette
m Etichetta
ðidentificatore numerico attribuito ad
un’istruzione per fare riferimento all’istruzione in altre istruzioni del codice
Istruzione do-continue
m Sintassi
do <etic> <variabile>=<v.iniz>,<v.finale>
<istruzioni>
<etic> continue m Esempio
do 555 i = 1, 10 write (*,*) i 555 continue
m Semantica
ðè quella di un for (ciclo a conteggio)
Strutture di Controllo: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 11
Istruzioni Iterative
m Il FORTRAN 77 non prevede il while ðintrodotto solo in FORTRAN 90
m I compilatori moderni del FORTRAN 77 ðhanno introdotto estensioni al linguaggio per
modernizzarne la sintassi e la semantica, ðtrasformandolo in una sorta di “FORTRAN
77+”
Strutture di Controllo: Conclusioni >> FORTRAN
Istruzioni Iterative
m Compilatore moderno per il FORTRAN77 ðistruzione do-end do che consente di non
utilizzare le etichette
ðistruzione do while – end do ðistruzione implicit none
m In questo corso
ðutilizzeremo tutte queste estensioni
Strutture di Controllo: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 13
Istruzione do-end do
m Sintassi
do <variabile> = <v.iniz>, <v.finale>
<istruzioni>
end do
m Esempio
do i = 1, 10
write (*,*) ‘Valore:’
write (*,*) i end do
m Semantica
ðidentica a quella del do-continue (ciclo a conteggio)
ATTENZIONE:
la variabile viene inizializzata al valore iniziale e il ciclo prosegue
finchè non ha superato il valore finale (es: i da 1 a 10 incluso)
Condizione i <= 10
Istruzione do while-end do
m Sintassi
do while (<condizione>)
<istruzioni>
end do m Esempio
do while (i.ne.0)
write (*,*) ‘Inserisci valore:’
read (*,*) i end do
m Semantica
ðidentica a quella del while in C++
Strutture di Controllo: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 15
Riassumendo
m Un altro esempio: Il linguaggio FORTRAN
m Istruzioni Condizionali in FORTRAN 77
m Istruzioni Iterative in FORTRAN 77 (ATTENZIONE)
Strutture di Controllo: Conclusioni >> Sommario
Un Esempio: Media con For
#include <iostream.h>
void main() {
int voto, sommaVoti;
float media;
int numeroEsami, i;
cout << "Quanti esami hai sostenuto ?" << endl;
cin >> numeroEsami;
sommaVoti = 0;
for (i = 0; i < numeroEsami; i++) {
cout << "Immetti il voto di un esame" << endl;
cin >> voto;
sommaVoti += voto;
}
if (numeroEsami > 0) {
media = ((float)sommaVoti) / numeroEsami;
cout << "La media vale: " << media << endl;
} else
cout << "Non hai fornito nessun voto" << endl;
}
Strutture di Controllo: Conclusioni >> Un Esempio
G. Mecca - Programmazione Procedurale in Linguaggio C++ 17
Un Esempio: Media con While
#include <iostream.h>
void main() {
int voto, sommaVoti, numeroEsami;
float media;
bool continua;
continua = true;
numeroEsami = 0;
sommaVoti = 0;
while (continua == true) {
cout << "Immetti il voto (0 per fermarti)" << endl;
cin >> voto;
if (voto == 0) { continua = false;
} else {
numeroEsami++;
sommaVoti += voto;
} }
if (numeroEsami > 0) {
media = ((float)sommaVoti) / numeroEsami;
cout << "La media vale: " << media << endl;
} else {
cout << "Non hai fornito nessun voto" << endl;
} }
Un Esempio: Media con For
program mediaf
implicit none real voto, sommaVoti, media integer numeroEsami, i
write (*,*) 'Quanti esami hai sostenuto ?' read (*,*) numeroEsami
sommaVoti = 0.0 do i=1, numeroEsami
write (*,*) 'Immetti il voto di un esame' read (*,*) voto
sommaVoti = sommaVoti + voto end do
if (numeroEsami.gt.0) then
media = sommaVoti / numeroEsami write (*,*) 'La media vale: ', media else
write (*,*) 'Non hai fornito alcun voto' end if
stop end
Strutture di Controllo: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 19 program mediaw
implicit none
real voto, sommaVoti, media integer numeroEsami
logical continua continua = .true.
numeroEsami = 0 sommaVoti = 0.0
do while (continua.eqv..true.)
write (*,*) 'Immetti il voto di un esame (0 per fermarti)' read (*,*) voto
if (voto.eq.0) then continua = .false.
else
numeroEsami = numeroEsami+1 sommaVoti = sommaVoti+voto end if
end do
if (numeroEsami.gt.0) then
media = sommaVoti / numeroEsami write (*,*) 'La media vale: ', media else
write (*,*) 'Non hai fornito alcun voto' end if
stop end
Strutture di Controllo: Conclusioni >> FORTRAN
Un Esempio: Media con While
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