Title: Programmazione Procedurale in Linguaggio C
1Programmazione 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)
2Sommario
Strutture di Controllo Conclusioni gtgt Sommario
- Un altro esempio Il linguaggio FORTRAN
- Dichiarazione Implicita
- Istruzioni Condizionali
- Istruzioni Iterative
3Un Altro Esempio FORTRAN
Strutture di Controllo Conclusioni gtgt 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
4Un Esempio Media con For
Strutture di Controllo Conclusioni gtgt FORTRAN
- program mediaf
- implicit none
- real voto, sommaVoti, media
- integer numeroEsami, i
- write (,) 'Quanti esami hai sostenuto
?' - read (,) numeroEsami
- sommaVoti 0.0
- do i1, numeroEsami
- write (,) 'Immetti il voto di un
esame' - read (,) voto
- sommaVoti sommaVotivoto
- 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
5Strutture di Controllo Conclusioni gtgt 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 numeroEsami1
- sommaVoti sommaVotivoto
- end if
- end do
- if (numeroEsami.gt.0) then
Un Esempio Media con While
gtgt
6Dichiarazione Implicita
Strutture di Controllo Conclusioni gtgt FORTRAN
- 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
7Dichiarazione Implicita
Strutture di Controllo Conclusioni gtgt FORTRAN
- 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
8Istruzioni Condizionali
Strutture di Controllo Conclusioni gtgt FORTRAN
- Istruzioni condizionali in FORTRAN 77
- istruzione IF-THEN-ELSE-END IF
- istruzione IF-THEN-END IF
- Sintassi
- if (ltcondizionegt) then if (ltcondizionegt) then
- ltistruzionigt ltistruzionigt
- else end if
- ltistruzionigt
- end if
9Istruzioni Condizionali
Strutture di Controllo Conclusioni gtgt FORTRAN
- Semantica
- identica a quella dellistruzione 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
10Istruzioni Condizionali
Strutture di Controllo Conclusioni gtgt FORTRAN
- 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.)
11Istruzioni Iterative
Strutture di Controllo Conclusioni gtgt FORTRAN
- Istruzioni iterative in FORTRAN 77
- il linguaggio prevede solo una forma di ciclo
- istruzione DO-CONTINUE
- ciclo di tipo for (cicli a conteggio)
- è basato sulluso di etichette
- I compilatori moderni consentono di
- non utilizzare le etichette
- utilizzare anche listruzione while
12Istruzione do-continue
Strutture di Controllo Conclusioni gtgt FORTRAN
- Sintassi
- do lteticgt ltvariabilegtltv.inizgt,ltv.finalegt
- ltistruzionigt
- lteticgt continue
- Esempio
- do 555 i1, 10
- write (,) i
- 555 continue
- Semantica
- è quella di un for
13Istruzioni Iterative
Strutture di Controllo Conclusioni gtgt FORTRAN
- 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
14Istruzione do-end do
Strutture di Controllo Conclusioni gtgt FORTRAN
- Sintassi
- do ltvariabilegt ltv.inizgt, ltv.finalegt
- ltistruzionigt
- 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)
15Istruzione do while-end do
Strutture di Controllo Conclusioni gtgt FORTRAN
- Sintassi
- do while (ltcondizionegt)
- ltistruzionigt
- end do
- Esempio
- do while (i.ne.0)
- write (,) Inserisci valore
- read (,) i
- end do
- Semantica
- identica a quella del while in C
16Riassumendo
Strutture di Controllo Conclusioni gtgt Sommario
- Un altro esempio Il linguaggio FORTRAN
- Dichiarazione Implicita (implicit none)
- Istruzioni Condizionali in FORTRAN 77
- Istruzioni Iterative in FORTRAN 77 (ATTENZIONE)
17Un Esempio Media con For
Strutture di Controllo Conclusioni gtgt Un Esempio
- include ltiostream.hgt
- void main()
- float voto, sommaVoti, media
- int numeroEsami, i
- cout ltlt "Quanti esami hai sostenuto ?" ltlt
endl - cin gtgt numeroEsami
- sommaVoti 0.0
- for (i0 iltnumeroEsami i)
- cout ltlt "Immetti il voto di un esame" ltlt
endl - cin gtgt voto
- sommaVoti voto
-
- if (numeroEsami gt 0)
- media sommaVoti/numeroEsami
- cout ltlt "La media vale " ltlt media ltlt
endl - else
- cout ltlt "Non hai fornito nessun voto" ltlt
endl
18Un Esempio Media con While
Strutture di Controllo Conclusioni gtgt Un Esempio
- include ltiostream.hgt
- void main()
- float voto, sommaVoti, media
- int numeroEsami
- bool continua
- continua true
- numeroEsami 0
- sommaVoti 0.0
- while (continua true)
- cout ltlt "Immetti il voto (0 per
fermarti)" ltlt endl - cin gtgt voto
- if (voto 0)
- continua false
- else
- numeroEsami
- sommaVoti voto
-
-
- if (numeroEsami gt 0)
19Un Esempio Media con For
Strutture di Controllo Conclusioni gtgt FORTRAN
- program mediaf
- implicit none
- real voto, sommaVoti, media
- integer numeroEsami, i
- write (,) 'Quanti esami hai sostenuto
?' - read (,) numeroEsami
- sommaVoti 0.0
- do i1, numeroEsami
- write (,) 'Immetti il voto di un
esame' - read (,) voto
- sommaVoti sommaVotivoto
- 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
20Strutture di Controllo Conclusioni gtgt 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 numeroEsami1
- sommaVoti sommaVotivoto
- end if
- end do
- if (numeroEsami.gt.0) then
Un Esempio Media con While
21Termini 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/lic
enses/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//creativecommo
ns.org/licenses/by-sa/1.0/ oppure inviare una
lettera allindirizzo Creative Commons, 559
Nathan Abbott Way, Stanford, California 94305,
USA.