220 likes | 525 Views
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.
E N D
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) G. Mecca – Università della Basilicata – mecca@unibas.it
Strutture di Controllo: Conclusioni >> Sommario Sommario • Un altro esempio: Il linguaggio FORTRAN • Dichiarazione Implicita • Istruzioni Condizionali • Istruzioni Iterative G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Un Altro Esempio: FORTRAN • Strutture di controllo in FORTRAN 77 • istruzioni condizionali (IF-THEN-ELSE, IF-THEN) • ciclo DO (ciclo di tipo for) • Il FORTRAN 77 non prevede il while • introdotto in FORTRAN 90 • ma i compilatori più recenti lo prevedono comunque come estensione al linguaggio G. Mecca - Programmazione Procedurale in Linguaggio C++
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 G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN 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 Un Esempio: Media con While >> G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Dichiarazione Implicita • Una particolarità del prog. FORTRAN • istruzione implicit none • impedisce 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: integer • gli altri nomi: real G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Dichiarazione Implicita • E’ un meccanismo da non usare • introdotto per ragioni di economia di scrittura • porta a numerosi errori per dimenticanze • es: variabile continua • Nei compilatori moderni • è stata introdotta per disabilitare questo meccanismo • è buona norma usare sempre implicit none come prima istruzione del programma G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzioni Condizionali • Istruzioni condizionali in FORTRAN 77 • istruzione IF-THEN-ELSE-END IF • istruzione IF-THEN-END IF • Sintassi if (<condizione>) then if (<condizione>) then <istruzioni> <istruzioni> else end if <istruzioni> end if G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzioni Condizionali • Semantica • identica a quella dell’istruzione if in C++ • 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 G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzioni Condizionali • Condizioni • operatori di confronto in FORTRAN.eq. .ne. .gt. .lt. .ge. .le. .eqv. .neqv. • operatori booleani in FORTRAN.and. .or. .not. .true. .false. • Esempi • ((anno.gt.1).and.(matricola.gt.15000)) • (continua.eqv..true.) G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzioni Iterative • 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 • I compilatori moderni consentono di • non utilizzare le etichette • utilizzare anche l’istruzione while G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzione do-continue • Sintassi do <etic> <variabile>=<v.iniz>,<v.finale> <istruzioni> <etic> continue • Esempio do 555 i=1, 10 write (*,*) i 555 continue • Semantica • è quella di un for G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzioni Iterative • In questo corso • utilizzeremo 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 G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzione do-end do • Sintassi do <variabile> = <v.iniz>, <v.finale> <istruzioni> end do • Esempio do i = 1, 10 write (*,*) ‘Valore:’ write (*,*) i end do • 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) G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN Istruzione do while-end do • Sintassi do while (<condizione>) <istruzioni> end do • Esempio do while (i.ne.0) write (*,*) ‘Inserisci valore:’ read (*,*) i end do • Semantica • identica a quella del while in C++ G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> Sommario Riassumendo • Un altro esempio: Il linguaggio FORTRAN • Dichiarazione Implicita (implicit none) • Istruzioni Condizionali in FORTRAN 77 • Istruzioni Iterative in FORTRAN 77 (ATTENZIONE) G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> Un Esempio Un Esempio: Media con For #include <iostream.h> void main() { float voto, sommaVoti, media; int numeroEsami, i; cout << "Quanti esami hai sostenuto ?" << endl; cin >> numeroEsami; sommaVoti = 0.0; for (i=0; i<numeroEsami; i++) { cout << "Immetti il voto di un esame" << endl; cin >> voto; sommaVoti += voto; } if (numeroEsami > 0) { media = sommaVoti/numeroEsami; cout << "La media vale: " << media << endl; } else cout << "Non hai fornito nessun voto" << endl; } G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> Un Esempio Un Esempio: Media con While #include <iostream.h> void main() { float voto, sommaVoti, media; int numeroEsami; bool continua; continua = true; numeroEsami = 0; sommaVoti = 0.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 = sommaVoti/numeroEsami; cout << "La media vale: " << media << endl; } else cout << "Non hai fornito nessun voto" << endl; } G. Mecca - Programmazione Procedurale in Linguaggio C++
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 G. Mecca - Programmazione Procedurale in Linguaggio C++
Strutture di Controllo: Conclusioni >> FORTRAN 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 Un Esempio: Media con While G. Mecca - Programmazione Procedurale in Linguaggio C++
Termini della Licenza 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. • 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++