Programmazione Procedurale in Linguaggio C++

21
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)

description

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

Transcript of Programmazione Procedurale in Linguaggio C++

Page 1: Programmazione Procedurale in Linguaggio C++

G. Mecca – Università della Basilicata – [email protected]. Mecca – Università della Basilicata – [email protected]

Programmazione Procedurale in Linguaggio C++

Strutture di Controllo

Parte 5

Il FORTRAN

versione 2.0Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

(vedi ultima pagina)

Page 2: Programmazione Procedurale in Linguaggio C++

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

Page 3: Programmazione Procedurale in Linguaggio C++

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

Page 4: Programmazione Procedurale in Linguaggio C++

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

Page 5: Programmazione Procedurale in Linguaggio C++

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

>>

Page 6: Programmazione Procedurale in Linguaggio C++

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

Page 7: Programmazione Procedurale in Linguaggio C++

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

Page 8: Programmazione Procedurale in Linguaggio C++

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

<istruzioni><istruzioni> <istruzioni> <istruzioni>

elseelse end ifend if

<istruzioni><istruzioni>

end ifend if

Strutture di Controllo: Conclusioni >> FORTRAN

Page 9: Programmazione Procedurale in Linguaggio C++

9G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni Condizionali

Semanticaidentica a quella dell’istruzione if in C++

Differenzeè obbligatoria la parola chiave THENin 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

Page 10: Programmazione Procedurale in Linguaggio C++

10G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni Condizionali

Condizionioperatori di confronto in FORTRAN.eq. .ne. .gt. .lt. .ge. .le..eq. .ne. .gt. .lt. .ge. .le.

.eqv. .neqv..eqv. .neqv.

operatori booleani in FORTRAN.and. .or. .not. .true. .false..and. .or. .not. .true. .false.

Esempi((anno.gt.1).and.(matricola.gt.15000))((anno.gt.1).and.(matricola.gt.15000))(continua.eqv..true.)(continua.eqv..true.)

Strutture di Controllo: Conclusioni >> FORTRAN

Page 11: Programmazione Procedurale in Linguaggio C++

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

Page 12: Programmazione Procedurale in Linguaggio C++

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

Page 13: Programmazione Procedurale in Linguaggio C++

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

Page 14: Programmazione Procedurale in Linguaggio C++

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)

Page 15: Programmazione Procedurale in Linguaggio C++

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>)

<istruzioni><istruzioni>

end doend do

Esempio do while (i.ne.0)do while (i.ne.0)

write (*,*) ‘Inserisci valore:’write (*,*) ‘Inserisci valore:’

read (*,*) iread (*,*) i

end doend do

Semantica identica a quella del while in C++

Strutture di Controllo: Conclusioni >> FORTRAN

Page 16: Programmazione Procedurale in Linguaggio C++

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

Page 17: Programmazione Procedurale in Linguaggio C++

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

Page 18: Programmazione Procedurale in Linguaggio C++

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

Page 19: Programmazione Procedurale in Linguaggio C++

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

Page 20: Programmazione Procedurale in Linguaggio C++

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

Page 21: Programmazione Procedurale in Linguaggio C++

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.