G. Mecca – Università della Basilicata – G. Mecca – Università della Basilicata – [email protected][email protected]Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 5 Il FORTRAN versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Programmazione Procedurale in Linguaggio C++. Strutture di Controllo Parte 5 Il FORTRAN. versione 2.0. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina). Strutture di Controllo: Conclusioni >> Sommario. Sommario. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
versione 2.0Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)
2G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Sommario
Un altro esempio: Il linguaggio FORTRANDichiarazione ImplicitaIstruzioni CondizionaliIstruzioni Iterative
Strutture di Controllo: Conclusioni >> Sommario
3G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Un Altro Esempio: FORTRAN
Strutture di controllo in FORTRAN 77istruzioni condizionali (IF-THEN-ELSE, IF-
THEN)ciclo DO (ciclo di tipo for)
Il FORTRAN 77 non prevede il whileintrodotto in FORTRAN 90ma i compilatori più recenti lo prevedono
comunque come estensione al linguaggio
Strutture di Controllo: Conclusioni >> FORTRAN
4G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Un Esempio: Media con For program mediafprogram mediaf implicit none implicit none real voto, sommaVoti, mediareal voto, sommaVoti, media integer numeroEsami, iinteger numeroEsami, i write (*,*) 'Quanti esami hai sostenuto ?'write (*,*) 'Quanti esami hai sostenuto ?' read (*,*) numeroEsamiread (*,*) numeroEsami sommaVoti = 0.0sommaVoti = 0.0 do i=1, numeroEsamido i=1, numeroEsami write (*,*) 'Immetti il voto di un esame'write (*,*) 'Immetti il voto di un esame' read (*,*) votoread (*,*) voto sommaVoti = sommaVoti+votosommaVoti = sommaVoti+voto end doend do if (numeroEsami.gt.0) thenif (numeroEsami.gt.0) then media = sommaVoti/numeroEsamimedia = sommaVoti/numeroEsami write (*,*) 'La media vale: ', mediawrite (*,*) 'La media vale: ', media elseelse write (*,*) 'Non hai fornito alcun voto'write (*,*) 'Non hai fornito alcun voto' end ifend if stopstop endend
Strutture di Controllo: Conclusioni >> FORTRAN
5G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
program mediawprogram mediaw implicit noneimplicit none real voto, sommaVoti, mediareal voto, sommaVoti, media integer numeroEsamiinteger numeroEsami logical continualogical continua continua = .true.continua = .true. numeroEsami = 0numeroEsami = 0 sommaVoti = 0.0sommaVoti = 0.0 do while (continua.eqv..true.) do while (continua.eqv..true.) write (*,*) 'Immetti il voto di un esame (0 per fermarti)'write (*,*) 'Immetti il voto di un esame (0 per fermarti)' read (*,*) votoread (*,*) voto if (voto.eq.0) thenif (voto.eq.0) then continua = .false.continua = .false. elseelse numeroEsami = numeroEsami+1numeroEsami = numeroEsami+1 sommaVoti = sommaVoti+votosommaVoti = sommaVoti+voto end ifend if end doend do if (numeroEsami.gt.0) thenif (numeroEsami.gt.0) then media = sommaVoti/numeroEsamimedia = sommaVoti/numeroEsami write (*,*) 'La media vale: ', mediawrite (*,*) 'La media vale: ', media elseelse write (*,*) 'Non hai fornito alcun voto'write (*,*) 'Non hai fornito alcun voto' end ifend if stopstop endend
Strutture di Controllo: Conclusioni >> FORTRAN
Un
Ese
mpi
o: M
edia
con
Whi
le
>>
6G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Dichiarazione Implicita
Una particolarità del prog. FORTRANistruzione implicit noneimplicit noneimpedisce la dichiarazione implicita del
FORTRAN Dichiarazione implicita
le variabili possono essere usate senza essere dichiarate
nomi che cominciano con i,j,k,l,m,n: integergli altri nomi: real
Strutture di Controllo: Conclusioni >> FORTRAN
7G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Dichiarazione Implicita
E’ un meccanismo da non usareintrodotto per ragioni di economia di scritturaporta a numerosi errori per dimenticanzees: variabile continua
Nei compilatori moderniè stata introdotta per disabilitare questo
meccanismoè buona norma usare sempre implicit implicit nonenone come prima istruzione del programma
Strutture di Controllo: Conclusioni >> FORTRAN
8G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Istruzioni Condizionali
Istruzioni condizionali in FORTRAN 77istruzione IF-THEN-ELSE-END IFistruzione IF-THEN-END IF
Sintassiif (<condizione>) thenif (<condizione>) then if (<condizione>) thenif (<condizione>) then
11G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Istruzioni Iterative
Istruzioni iterative in FORTRAN 77il linguaggio prevede solo una forma di cicloistruzione DO-CONTINUEciclo di tipo for (cicli a conteggio)è basato sull’uso di etichette
I compilatori moderni consentono dinon utilizzare le etichetteutilizzare anche l’istruzione while
Strutture di Controllo: Conclusioni >> FORTRAN
12G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Istruzione do-continue
Sintassi do <etic> <variabile>=<v.iniz>,<v.finale>do <etic> <variabile>=<v.iniz>,<v.finale> <istruzioni><istruzioni><etic> continue<etic> continue
Esempio do 555 i=1, 10do 555 i=1, 10 write (*,*) iwrite (*,*) i555 continue555 continue
Semanticaè quella di un for
Strutture di Controllo: Conclusioni >> FORTRAN
13G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Istruzioni Iterative
In questo corsoutilizzeremo le estensioni moderne offerte
dal compilatore In particolare
istruzione do-end do (variante del do-continue che non utilizza etichette)
istruzione do while-end do
Strutture di Controllo: Conclusioni >> FORTRAN
14G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Istruzione do-end do
Sintassi do <variabile> = <v.iniz>, <v.finale>do <variabile> = <v.iniz>, <v.finale>
<istruzioni><istruzioni>
end doend do
Esempio do i = 1, 10do i = 1, 10
write (*,*) ‘Valore:’write (*,*) ‘Valore:’
write (*,*) iwrite (*,*) i
end doend do
Semantica identica a quella del do-continue (ciclo a conteggio)
Strutture di Controllo: Conclusioni >> FORTRAN
ATTENZIONE:la variabile viene
inizializzata al valore iniziale e il ciclo prosegue
finchè non ha superatoil valore finale
(es: i da 1 a 10 incluso)
15G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Istruzione do while-end do
Sintassi do while (<condizione>)do while (<condizione>)
16G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Riassumendo
Un altro esempio: Il linguaggio FORTRANDichiarazione Implicita (implicit none)Istruzioni Condizionali in FORTRAN 77Istruzioni Iterative in FORTRAN 77
(ATTENZIONE)
Strutture di Controllo: Conclusioni >> Sommario
17G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Un Esempio: Media con For#include <iostream.h>#include <iostream.h>void main() {void main() { float voto, sommaVoti, media;float voto, sommaVoti, media; int numeroEsami, i;int numeroEsami, i; cout << "Quanti esami hai sostenuto ?" << endl;cout << "Quanti esami hai sostenuto ?" << endl; cin >> numeroEsami;cin >> numeroEsami; sommaVoti = 0.0;sommaVoti = 0.0; for (i=0; i<numeroEsami; i++) {for (i=0; i<numeroEsami; i++) { cout << "Immetti il voto di un esame" << endl;cout << "Immetti il voto di un esame" << endl; cin >> voto;cin >> voto; sommaVoti += voto;sommaVoti += voto; }} if (numeroEsami > 0) {if (numeroEsami > 0) { media = sommaVoti/numeroEsami;media = sommaVoti/numeroEsami; cout << "La media vale: " << media << endl;cout << "La media vale: " << media << endl; } else} else cout << "Non hai fornito nessun voto" << endl;cout << "Non hai fornito nessun voto" << endl;}}
Strutture di Controllo: Conclusioni >> Un Esempio
18G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Un Esempio: Media con While#include <iostream.h>#include <iostream.h>void main() {void main() { float voto, sommaVoti, media;float voto, sommaVoti, media; int numeroEsami;int numeroEsami; bool continua;bool continua; continua = true;continua = true; numeroEsami = 0;numeroEsami = 0; sommaVoti = 0.0;sommaVoti = 0.0; while (continua == true) {while (continua == true) { cout << "Immetti il voto (0 per fermarti)" << endl;cout << "Immetti il voto (0 per fermarti)" << endl; cin >> voto;cin >> voto; if (voto == 0)if (voto == 0) continua = false;continua = false; else { else { numeroEsami++; numeroEsami++; sommaVoti += voto; sommaVoti += voto; }} }} if (numeroEsami > 0) {if (numeroEsami > 0) { media = sommaVoti/numeroEsami;media = sommaVoti/numeroEsami; cout << "La media vale: " << media << endl;cout << "La media vale: " << media << endl; } else} else cout << "Non hai fornito nessun voto" << endl;cout << "Non hai fornito nessun voto" << endl;}}
Strutture di Controllo: Conclusioni >> Un Esempio
19G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
Un Esempio: Media con For program mediafprogram mediaf implicit none implicit none real voto, sommaVoti, mediareal voto, sommaVoti, media integer numeroEsami, iinteger numeroEsami, i write (*,*) 'Quanti esami hai sostenuto ?'write (*,*) 'Quanti esami hai sostenuto ?' read (*,*) numeroEsamiread (*,*) numeroEsami sommaVoti = 0.0sommaVoti = 0.0 do i=1, numeroEsamido i=1, numeroEsami write (*,*) 'Immetti il voto di un esame'write (*,*) 'Immetti il voto di un esame' read (*,*) votoread (*,*) voto sommaVoti = sommaVoti+votosommaVoti = sommaVoti+voto end doend do if (numeroEsami.gt.0) thenif (numeroEsami.gt.0) then media = sommaVoti/numeroEsamimedia = sommaVoti/numeroEsami write (*,*) 'La media vale: ', mediawrite (*,*) 'La media vale: ', media elseelse write (*,*) 'Non hai fornito alcun voto'write (*,*) 'Non hai fornito alcun voto' end ifend if stopstop endend
Strutture di Controllo: Conclusioni >> FORTRAN
20G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
program mediawprogram mediaw implicit noneimplicit none real voto, sommaVoti, mediareal voto, sommaVoti, media integer numeroEsamiinteger numeroEsami logical continualogical continua continua = .true.continua = .true. numeroEsami = 0numeroEsami = 0 sommaVoti = 0.0sommaVoti = 0.0 do while (continua.eqv..true.) do while (continua.eqv..true.) write (*,*) 'Immetti il voto di un esame (0 per fermarti)'write (*,*) 'Immetti il voto di un esame (0 per fermarti)' read (*,*) votoread (*,*) voto if (voto.eq.0) thenif (voto.eq.0) then continua = .false.continua = .false. elseelse numeroEsami = numeroEsami+1numeroEsami = numeroEsami+1 sommaVoti = sommaVoti+votosommaVoti = sommaVoti+voto end ifend if end doend do if (numeroEsami.gt.0) thenif (numeroEsami.gt.0) then media = sommaVoti/numeroEsamimedia = sommaVoti/numeroEsami write (*,*) 'La media vale: ', mediawrite (*,*) 'La media vale: ', media elseelse write (*,*) 'Non hai fornito alcun voto'write (*,*) 'Non hai fornito alcun voto' end ifend if stopstop endend
Strutture di Controllo: Conclusioni >> FORTRAN
Un
Ese
mpi
o: M
edia
con
Whi
le
21G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++
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.
Termini della Licenza
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.