• Non ci sono risultati.

Strutture di Controllo Parte 5

N/A
N/A
Protected

Academic year: 2021

Condividi "Strutture di Controllo Parte 5"

Copied!
10
0
0

Testo completo

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

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.

Riferimenti

Documenti correlati

– Se Body è composto da una sola istruzione si possono omettere le parentesi

m Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è

dove label è una etichetta che individua una istruzione nel codice L’istruzione goto provoca il trasferimento incondizionato del flusso di controllo del programma

Si richiede l’immissione della categoria cliente e del prezzo intero E’ letto il valore del prezzo intero ed è assegnato alla variabile prezzo Se il valore di prezzo è negativo

Scrivere un programma che, ricevuti in input la categoria del cliente ed il prezzo intero che dovrebbe pagare, calcoli l’importo dello sconto da effettuare (in base alla tabella

Una struttura di controllo può seguirne un’altra collegando il punto di out della prima a quello di in della seconda; in tal caso le strutture sono dette ‘in sequenza’..

Alcune operazioni di cast di tipo sono fatte automaticamente, principalmente in relazione alle capacità dei numeri interi, ad esempio assegnando un valore float ad una variabile

Le strutture di controllo sono costrutti sintattici di un linguaggio di programmazione che servono a specificare se, quando, in quale ordine e quante volte devono essere eseguite