G. Mecca – Università della Basilicata – mecca@unibas.it
Programmazione Procedurale in Linguaggio C++
Tipi Strutturati Parte 6 Il FORTRAN
versione 2.0
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Sommario
m
Un Altro Esempio: il FORTRAN
ðArray in FORTRANðRappresentazione Multiarray in FORTRAN
Tipi Strutturati: Conclusioni >> Sommario
G. Mecca - Programmazione Procedurale in Linguaggio C++ 3
m
Tipi strutturati in FORTRAN
ðin FORTRAN 77 esistono gli array ðviceversa, non esistono i record
(introdotti in FORTRAN 90)
m
Differenze fondamentali con il C++
ðil sistema di indici è a base 1
ðsintatticamente, si usano le parentesi tonde al posto delle parentesi quadre
>> temperature1f.for
4
Dichiarazione di Array
m
Sintassi
<tipo> <nomeArray> (<dim>)
m
Dove
ð<tipo> è uno dei tipi di dato del linguaggio ð<nomeArray> è un identificatore
ð<dim> è un valore costante intero positivo (costante numerica o simbolica o
espressione costante, ovvero espressione in cui gli operandi sono costanti)
Tipi Strutturati: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 5
Dichiarazione di Array
m
Semantica
ðla dichiarazione ha l’effetto di dichiarare
<dim> variabili del tipo specificato
ðnomi delle variabili costituiti di due parti:
ðl’identificatore dell’array <nomeArray>
ðun indice intero che va da 1 a <dim>
m
Utilizzo degli array
<nomeArray>(<espressione>)
Esempio: Temperature
program temp implicit none
integer posizioneMax, posizioneMin integer N
parameter (N=12) real temperature(N) integer posMax, posMin call leggi(temperature) call stampa(temperature)
posMax = posizioneMax(temperature) posMin = posizioneMin(temperature)
call stampaRisultato(temperature, posMax, posMin) stop
end
Tipi Strutturati: Conclusioni >> FORTRAN
dichiarazione dell’array
G. Mecca - Programmazione Procedurale in Linguaggio C++ 7
subroutine leggi(temperature) implicit none
integer N
parameter (N=12) integer temperature(N) integer i
write(*,*) 'Immetti le temperature medie mensili' do i=1,N
read(*,*) temperature(i) end do
return
end utilizzo dell’array
costante locale
ciclo for da 1 a N
8
Dichiarazione di Array
m
Come in C++
ðesiste il problema dello sconfinamento al di fuori dei limiti dell’array
ðè possibile utilizzare array bidimensionali
m
Sintassi
<tipo> <nomeArray> (<dim1>, <dim2>);
m
Utilizzo
<nomeArray>(<espr1>, <espr2>)
Tipi Strutturati: Conclusioni >> FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 9
Dichiarazione di Array
m
Esempio
integer matrice(3, 2) integer i, j
do i=1,3 do j=1, 2
read(*,*) matrice(i, j) end do
end do
Rappresentazione Multiarray
m
A differenza del C++
ðin FORTRAN 77 non esistono i record
ðdi conseguenza, dati con struttura complessa vanno rappresentati con variabili distinte
m
Collezioni di dati complessi
ðsi utilizza la rappresentazione multi-array ðvari array per la collezione, uno per ciascun
attributo
Tipi Strutturati: Conclusioni >> FORTRAN
>> partite1f.for
G. Mecca - Programmazione Procedurale in Linguaggio C++ 11
Juventus Milan 4 1
Lazio Chievo 1 2 Roma Inter 2 2 Como Brescia 1 4 Perugia Reggina 2 1 Parma Modena 1 0 Torino Atalanta 0 0 Bologna Udinese 3 0 Piacenza Empoli 1 3
character*10 sqTrasf(N) integer gCasa(N)
integer gTrasf(N)
12
Riassumendo
m
Un Altro Esempio: il FORTRAN
ðArray in FORTRANðRappresentazione Multiarray in FORTRAN
Tipi Strutturati: Conclusioni >> Sommario
G. Mecca - Programmazione Procedurale in Linguaggio C++ 13
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.
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.