Programmazione Procedurale in Linguaggio C++

Post on 29-Jan-2016

41 views 1 download

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

G. Mecca – Università della Basilicata – mecca@unibas.itG. Mecca – Università della Basilicata – mecca@unibas.it

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)

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

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

elseelse end ifend if

<istruzioni><istruzioni>

end ifend if

Strutture di Controllo: Conclusioni >> FORTRAN

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

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

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

<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

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.