Algoritmi, Strutture Dati ed il linguaggio Fortran - PowerPoint
Shared by: tgv36994
Categories
Tags
linguaggi di programmazione, linguaggio di programmazione, fondamenti di informatica, strutture di dati, programma del corso, linguaggio macchina, strutture dati, fortran 90, tipi di dati, linguaggio fortran, linguaggi funzionali, algoritmi e strutture dati, linguaggio c, linguaggi formali, calcolo numerico
-
Stats
- views:
- 110
- posted:
- 5/26/2010
- language:
- Italian
- pages:
- 61
Document Sample


Algoritmi, Strutture Dati
ed il linguaggio Fortran
insegnamento di Informatica
CdL in Scienze Turistiche
a cura di Bruno Bertaccini
Materiale didattico a disposizione degli studenti,
scaricabile all’indirizzo http://www.ds.unifi.it/bertaccini.
È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità
degli elaboratori
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Introduzione
Gli elaboratori elettronici sono macchine programmabili:
l’utilizzatore deve fornire loro un’insieme di
istruzioni che indichino le operazioni da compiere
ed i dati su cui operare.
Un insieme coerente di tali istruzioni si chiama
PROGRAMMA
Tali istruzioni, una volta memorizzate nella memoria
centrale, verranno prese in considerazione dalla CPU
che si occuperà dell’attivazione dei dispositivi
necessari alla loro elaborazione
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Introduzione
Un elaboratore elettronico, a differenza di quanto ci si
potrebbe aspettare, è in grado di compiere
SOLO operazioni estremamente semplici
(es: una radice quadrata, una funzione trigonometrica richiedono
programmi specifici)
OPERAZIONI ELEMENTARI
Tuttavia un elaboratore è molto veloce e
può eseguire un gran numero di operazioni
nell’unità di tempo
(la velocità dipende anche dal fatto che le operazioni
sono appunto elementari)
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Le operazioni elementari
Classificazione delle istruzioni elementari in base
alla diversità delle funzioni svolte dall’elaboratore
e agli effetti che queste hanno sui dati.
1. Istruzioni aritmetiche e logiche
2. Istruzioni di trasferimento
3. Istruzioni di input-output
4. Istruzioni di controllo
5. Istruzioni ausiliarie
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Le operazioni elementari
Istruzioni Aritmetiche e Logiche.
servono ad eseguire
operazioni aritmetiche ( + ,- , * , / ) e
logiche (NOT, AND, OR)
sui dati presenti nella memoria centrale
Istruzioni di Trasferimento.
permettono lo spostamento dei dati all’interno della
memoria centrale e tra questa e i registri presenti nella
unità aritmetico logica (ALU) della CPU
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Le operazioni elementari
Istruzioni Input-Output.
consentono l’immissione e l’emissione dei dati nella e
dalla memoria centrale;
il dialogo avviene generalmente con in i dispositivi di
I/O e e con le memorie ausiliarie.
Istruzioni di Controllo.
guidano lo svolgimento dell’elaborazione controllando
l’ordine di esecuzione delle istruzioni elementari;
sono eseguite dalla unità di controllo (CU) della CPU.
Istruzioni Ausiliarie.
sono deputate a riordinare alcuni dispositivi fisici
dell’elaboratore e a controllarne lo stato.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Le operazioni elementari
Operazione Elementare (generalizzata)
codice operativo operando
indica il tipo di operazione identifica i dati o i dispositivi
da compiere che interessano l’operazione
L’insieme dei codici operativi e le regole che guidano il modo
di esprimere gli operatori costituiscono un sistema di
programmazione, un sistema completo per gestire il
funzionamento dell’elaboratore ed indirizzarlo alla risoluzione
di un determinato problema.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Il linguaggio macchina ed i linguaggi simbolici
Tale sistema è detto LINGUAGGIO MACCHINA
perché è il SOLO comprensibile dall’unità di controllo
dell’elaboratore.
Il Linguaggio Macchina varia da elaboratore ad
elaboratore ed è estremamente complicato da
utilizzare ed interpretare da parte dell’utilizzatore.
Generalmente vengono utilizzati altri linguaggi di
programmazione, i cosiddetti LINGUAGGI SIMBOLICI,
basati su una modalità di espressione di operatori
ed operandi più simili ai criteri usati dal linguaggio
umano.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
La programmabilità degli elaboratori
Il linguaggio macchina ed i linguaggi simbolici
Un programma espresso per mezzo di un linguaggio
simbolico non è direttamente utilizzabile dall’unità di
controllo dell’elaboratore;
sarà prima necessario TRADURLO per mezzo di un
apposito programma nell’unico linguaggio comprensibile
alla CU: il linguaggio macchina appunto.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli ALGORITMI
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Algoritmi: aspetti definitori
I problemi umani la cui soluzione è demandata ad un
elaboratore sono notoriamente MOLTO COMPLESSI.
(es: f ( x) 2 x 2 3x 5 per x = 1.347)
Ma un elaboratore è in grado di svolgere
SOLO OPERAZIONI ELEMENTARI
e NON operazioni complesse.
Come è possibile allora utilizzare un elaboratore
per risolvere un problema complesso?
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Algoritmi: aspetti definitori
Occorre SCOMPORRE il problema complesso in una
serie di operazioni elementari in grado di poter essere
compiute da un esecutore che non riesce
ASSOLUTAMENTE a prendere in considerazione
il problema nella sua interezza.
Tale procedimento è detto
PROCESSO ALGORITMICO
ed il risultato di tale processo è detto
ALGORITMO
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Algoritmi: aspetti definitori
L’ALGORITMO è una serie finita e completa di operazioni
elementari ordinate alla soluzione di un problema, da
effettuare meccanicamente, ossia attraverso una
esecuzione precisa delle regole, senza implicare
alcuna conoscenza del caso da trattare.
Le operazioni in cui viene scomposto il processo risolutivo
del problema devono essere comprensibili ed
eseguibili dall’entità cui l’algoritmo è destinato,
entità che può non necessariamente essere l’elaboratore.
In pratica esisterà sempre un limite preciso al numero di
istruzioni che possono comporre l’algoritmo e al tempo di
esecuzione dello stesso, limite dettato dalle caratteristiche
dell’elaboratore.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Algoritmi: caratteristiche
Un ALGORITMO adatto ad essere utilizzato da
un elaboratore deve rispondere ad alcune
proprietà essenziali; deve cioè essere:
effettivo;
definito e non ambiguo;
generale;
finito.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Algoritmi: caratteristiche
Deve avere un punto di partenza
e deve essere EFFETTIVO
cioè deve avere un punto di partenza
ed ogni operazione deve produrre un certo e ben
determinato risultato ogni volta che si presentano le
stesse condizioni.
Deve essere DEFINITO e NON AMBIGUO
è necessario ciò che sia stato previsto ogni aspetto che
il problema può assumere durante la fase risolutiva
e che ogni espressione sia interpretabile
in maniera univoca senza ambiguità.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Algoritmi: caratteristiche
Deve essere GENERALE
ossia utilizzabile per una serie o classe di problemi.
Dominio dell’algoritmo: insieme dei dati che possono essere
elaborati e le condizioni che ne permettono l’elaborazione
Deve essere FINITO
deve cioè poter giungere al suo termine dopo che sia
stato eseguito un numero anche elevatissimo
ma finito di istruzioni
(poiché spesso le istruzioni possono essere eseguite in modo
ciclico – loop -, sarà necessario che non sia possibile prevedere
loop non aventi limite finito).
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Analisi e Programmazione
ANALISI: fase di comprensione del problema, in base
all’obiettivo da perseguire. Conduce ad un
disegno articolato del problema stesso.
Ogni problema che l’uomo si pone comporta una serie di
azioni (“decisioni”) stabilite in base allo stato
dell’informazione disponibile all’insorgere del problema
stesso: si effettua una rassegna degli elementi
determinanti alla soluzione, elencando gli elementi
necessari e quelli disponibili.
Vengono “decise” le azioni da compiere e la loro sequenza
temporale.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Analisi e Programmazione
Generalizzazione della fase d’Analisi:
definizione dei dati in ingresso;
definizione dei risultati in uscita;
individuazione dei termini del problema e dei possibili
metodi risolutivi;
determinazione della necessità e della disponibilità di
risorse (di calcolo e memorizzazione);
generalizzazione del problema (definizione di una
classe di problemi da risolvere);
descrizione informale dell’algoritmo o degli algoritmi
necessari a risolvere la procedura.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Analisi e Programmazione
PROGRAMMAZIONE: ha lo scopo di descrivere le
operazioni che l’elaboratore deve eseguire per
risolvere il problema.
Fase della programmazione
insieme delle attività e delle funzioni che trasformano il
bisogno (necessità di risolvere il problema con un
elaboratore) in una richiesta di formulazione,
costruzione e definizione delle regole di
comportamento per la soluzione di classi di processi di
elaborazione, fatte ad un insieme di risorse di calcolo.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Analisi e Programmazione
Tecnica TOP-DOWN: si definiscono inizialmente
un insieme d’azioni a grandi linee (macro
istruzioni) e si procede per raffinamenti
successivi, fino ad arrivare ad operazioni
elementari che l’esperienza designa come
indipendenti dal linguaggio di programmazione
utilizzato per scrivere il programma.
Tecnica BOTTOM-UP: parte dai singoli dati e dalle
operazioni elementari da compiere su di essi,
arrivando, per aggregazione, ad una o più
procedure automatiche.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Analisi e Programmazione
Indipendentemente dalla tecnica usata, la
programmazione si concretizza nei seguenti passi:
definizione formale dell’algoritmo, spesso in forma
grafica tramite un diagramma a blocchi;
stesura del programma
nel linguaggio di programmazione prescelto;
prova del programma.
La programmazione è sicuramente
un processo creativo non vincolato da regole,
che deve tenere in considerazione alcuni criteri di ottimizzazione
quali i tempi di calcolo e l’occupazione delle memorie.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Esempi di algoritmi
Una ricetta di cucina.
Lettura di due valori numerici
e stampa del maggiore tra i due
Lettura di due valori numerici A e B
e stampa di (A-B)^2
n
Lettura del valore numerico n e calcolo di 2i
i 0
Lettura di due valori numerici M e N (con M>=N)
e calcolo del M.C.D.
Ordinamento di una sequenza di numeri
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Algoritmi rilevanti
Progetto Genoma Umano per la mappatura dei 100000
geni del DNA umano;
Navigazione Internet: percorsi ottimali che i dati devono
percorrere in rete per il rapido accesso a grandi quantità di
informazioni e motori di ricerca;
Percorso stradale minimo data una certa rete viaria (es:
mappe in internet);
Compressione del testo, crittografia e firme digitali;
Allocazione ottimale dei prodotti negli scaffali di un
supermercato (P. L. e Game Theory);
Gestione delle code;
…
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Gli Algoritmi
Efficienza di un Algoritmo
Quand’è che un Algoritmo è EFFICIENTE?
quando è CORRETTO: cioè produce il risultato
atteso;
quando è VELOCE (in termini di tempo impiegato
per produrre il risultato);
quando è PARSIMONIOSO (in termini di risorse
allocate per produrre il risultato).
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Strutture dati
(fondamenti)
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Strutture dati
Classificazione
Variabili numeriche
Bit
Intere
Reali (razionali)
precisione singola
precisione doppia
Complesse
Variabili carattere
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Strutture dati
Strutture di memorizzazione
Variabili singole
Vettori: una sequenza indicizzabile di valori numerici
dello stesso tipo
es: stringa = vettore di caratteri
Matrici: una sequenza indicizzabile di vettori dello
stesso tipo
Array: matrici multidimensionali
Liste: array differenziabili per tipo di valori memorizzabili
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I DIAGRAMMI
a BLOCCHI
(o Diagrammi di Flusso)
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
Aspetti definitori
I Diagrammi a Blocchi sono uno strumento molto
utilizzato in informatica per una chiara e semplice
esposizione in forma grafica degli algoritmi.
Sono uno strumento fondamentale per l’analista
(servono a definire in modo schematico il processo
algoritmico di scomposizione di un problema),
danno una visione immediata dell’iter risolutivo e facilitano
il controllo di correttezza logica dell’algoritmo.
Inoltre hanno anche uno scopo comunicativo:
la documentazione di un algoritmo nel tempo.
È infatti molto più facile leggere un algoritmo schematizzato mediante
un diagramma a blocchi che leggerne la sua traduzione in uno
specifico linguaggio di programmazione.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
Aspetti definitori
Requisiti essenziali di un Diagramma a Blocchi:
• deve esistere un solo blocco di inizio;
• deve essere previsto almeno un blocco di fine;
• il diagramma può esibire un numero finito di blocchi
di controllo;
• il diagramma può prevedere un numero finito di
blocchi relativi sia ad operazioni aritmetiche e logiche
che di I/O.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
Simboli e regole di costruzione
Punto di Inizio e punti di Fine
Operazioni Aritmetiche e Logiche
Operazioni di Input/Output
Decisioni
Sottoprogrammi
Connessioni ad un qualsiasi punto
del diagramma
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
Simboli e regole di costruzione
Regole di implementazione:
• ogni blocco logico/aritmetico o di I/O deve avere una
sola linea in ingresso e una sola in uscita;
• ogni blocco di controllo deve avere una sola linea in
ingresso e due (o più) linee in uscita;
• una linea può inserirsi in un blocco o in un’altra linea;
• dall’unico blocco iniziale parte una sola linea,
seguendo la quale, attraverso un insieme non vuoto
di blocchi deve potersi raggiungere uno dei blocchi
finali.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 1 : scambio di due valori numerici
START
semplice scambio
di 2 valori numerici
INPUT A
INPUT B
immessi da tastiera
nelle variabili A e B
AUX = B
B=A
A = AUX
PRINT A
PRINT B
STOP
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 1 : scambio di due valori numerici
START
semplice scambio
di 2 valori numerici
INPUT A
INPUT B
immessi da tastiera
nelle variabili A e B
Scambia dove Scambia
A con B A con B
PRINT A
PRINT B AUX = B
B=A
A = AUX
STOP
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 2 : scambio di due valori numerici
START
scambio di 2 valori
INPUT A
INPUT B
numerici immessi da
tastiera nelle variabili A e B
solo se il primo è maggiore
del secondo
No
A>B
Sì
Scambia
A con B
PRINT A
PRINT B
STOP
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 3 : somma dei valori di un vettore
START
INPUT N
Somma di una certa
sequenza di valori,
immessi da tastiera
all’interno di un vettore
DIM V[N]
INPUT V[1]
…
INPUT V[N]
J=1
S=0
No
J <= N PRINT S STOP
Sì
S = S + V[J]
J=J+1
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 3 : somma dei valori di un vettore
Somma Somma degli elementi
vettore
di un vettore V
START
già presente in memoria
J=1
S=0
No
J <= N PRINT S STOP
Sì
S = S + V[J]
J=J+1
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 4 : ricerca del minimo di un vettore
Minimo di
un vettore
Ricerca del minimo
START
di un vettore V
già presente in memoria
min = V[1]
N = length(V)
J=2
No PRINT
J <= N STOP
min
J = J +1 Sì
No
V[J] < min
Sì
min = V[J]
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 5 : somma, media, min e max di un vettore
START A
Somma, media, min e max
di una sequenza di valori,
media = S/N
INPUT N
immessi da tastiera
all’interno di un vettore
PRINT
DIM V[N] media
INPUT V[1] Minimo di un
… vettore
INPUT V[N]
Somma Massimo di
vettore un vettore
A STOP
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 6 : calcolo di una serie parziale
START
Lettura del valore numerico
n e calcolo di
n
2
INPUT N
i
i 0
J=0
S=0
No
J <= N PRINT S STOP
Sì
S = S + 2^J
J=J+1
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 7 : calcolo del MCD (algoritmo di Euclide)
START
Lettura di due valori
numerici M e N
INPUT N (con M>=N)
e calcolo del M.C.D.
INPUT M
No
Scambia
M>N
M con N
Sì
Q = INT(N/M)
R = N - M*Q
N=M No Sì
PRINT
R=0 STOP
”MCD :”, M
M=R
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 7 : calcolo del MCD (algoritmo inefficiente)
Lettura di due valori
START
INPUT N
numerici M e N
INPUT M (con M>=N)
e calcolo del M.C.D.
con un algoritmo
No
Scambia
M>N
M con N
Sì inefficiente
J=M
Q = INT(N / J)
R = N - J*Q
J=J-1
No Sì
PRINT
R=0 STOP
”MCD :”, J
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 8 : radici di un polinomio di 2° grado
Ricerca delle due radici
reali x1 e x2, di una
equazione del tipo
ax bx c 0
2
se a, b, c
b
>0 : x
2a
b
b 4ac 2
=0 : x
2a
<0 : non esistono radici reali
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
es. 8 : radici di un polinomio di 2° grado
START
Ricerca delle due radici
INPUT
A,B,C reali x1 e x2, di una
equazione del tipo
delta =
B*B-4*A*C ax bx c 0
2
PRINT <0 >0
rad =
STOP ”non esistono delta
SQRT(delta)
radici reali”
=0
rad = 0
X1 =
(-B + rad)/(2*A)
X2 =
(-B - rad)/(2*A)
PRINT
X1, X2
STOP
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
La traduzione del diagramma
a blocchi in pseudolinguaggio
Condizioni: IF (condizione) THEN
inizio blocco
istruzione 1
istruzione 2
…
fine blocco
ELSE
inizio blocco
istruzione 1
istruzione 2
…
fine blocco
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
La traduzione del diagramma
a blocchi in pseudolinguaggio
Condizioni:
IF (condizione) THEN
[blocco istruzioni]
ELSE IF (condizione) THEN
[blocco istruzioni]
ELSE
[blocco istruzioni]
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
La traduzione del diagramma
a blocchi in pseudolinguaggio
Condizioni: SWITCH (espressione)
CASE (condizione1):
NON [blocco istruzioni]
in tutti i CASE (condizione2):
linguaggi di
[blocco istruzioni]
programmazione
CASE (condizione3):
[blocco istruzioni]
…
OTHER:
[blocco istruzioni]
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
I Diagrammi a Blocchi
La traduzione del diagramma
a blocchi in pseudolinguaggio
Iterazioni: FOR (variabile) = (inizio) TO (fine) (step)
inizio blocco
istruzione 1
istruzione 2
…
fine blocco
WHILE (condizione)
inizio blocco
istruzione 1
istruzione 2
…
fine blocco
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
IL LINGUAGGIO
FORTRAN
Selezione di esercizi svolti tratti
dagli esami degli appelli precedenti
Note per la lettura:
i nomi delle variabili sono scritti in maiuscolo;
le istruzioni FORTRAN sono scritte in minuscolo;
nei riquadri, sono riportati alcuni commenti aggiuntivi che non sono
codice FORTRAN e non devono essere confusi con esso, e che hanno
il solo scopo fornire chiarimenti sul flusso delle istruzioni.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
5 giugno 2008 – es. 1
le istruzioni iniziano a colonna 7;
una C a colonna 1 indica che stiamo scrivendo un commento che non verrà
considerato dal compilatore
C Scrivere un programma FORTRAN che legga un valore
C da tastiera in lire e lo converta in euro (1€ = 1936,27 L.)
write (*,*) "inserire valore in lire"
read (*,*) V
le variabili utilizzate rispettano i criteri imposti dalla
V2 = V/1936.27 dichiarazione implicita: V e V2 sono di tipo reale
write (*,20) 'il valore in euro:', V2
stop
20 format (f10.2) occorre assegnare un formato con 2 cifre decimali
end al risultato, in quanto la conversione in euro
prevede al massimo 2 cifre decimali (i centesimi)
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
18 giugno 2008 – es. 1
C Si scriva un programma FORTRAN che legga da tastiera
C in sequenza 15 numeri naturali (interi non negativi) e,
C al termine, stampi a video il valore massimo tra i 15
C valori inseriti.
MAX=0 0 è i più piccolo numero naturale
do I=1,15
write (*,*) 'inserisci (', I, ' ) numero naturale:'
ciclo read (*,*) N
per la
appena viene individuato un
sequenza if (N .GT. MAX) MAX=N numero più grande di MAX, MAX
dei 15
end do viene riassegnato a quel numero
valori
write (*,*) 'massimo valore inserito', MAX
stop
end
anche in questo caso le variabili utilizzate rispettano
i criteri imposti dalla dichiarazione implicita.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
24 gennaio 2008 – es. 1
C Si scriva un programma FORTRAN che legga da tastiera
C in sequenza 10 numeri interi e, al termine, stampi a video
C la loro somma e il loro valore medio.
in questo caso invece occorre dichiarare esplicitamente le variabili
integer SUM SUM e MEAN che non rispettano la convenzione implicita: la somma
real MEAN di interi è una variabile intera, la loro media è una variabile reale
SUM=0 variabile totalizzatore inizializzata a zero
(zero è l’elemento neutro per la somma)
do I=1,10
ciclo write (*,*) 'inserisci (', I, ' ) numero intero:'
per la read (*,*) N
sequenza
dei 10 tutti i numeri inseriti vengono di volta
valori
SUM = SUM + N
in volta cumulati nel totalizzatore
end do
essendo MEAN reale, se SUM, che è intera, venisse
MEAN = SUM / 10.0 divisa per 10 restituirebbe un risultato di tipo intero
e non reale come invece accade dividendo per 10.0
write (*,*) 'somma:', SUM, '; media:', MEAN
stop
end
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
luglio 2007 – es. 1
C Scrivere un programma FORTRAN che legga da tastiera i
C valori N e M, controllando che siano compresi fra 10 e 90;
C Il programma deve poi procedere a calcolare:
C 1. il prodotto di tutti i numeri tra il maggiore dei due ed
C il minore dei due (estremi compresi);
C 2. la somma di tutti i numeri interi positivi più piccoli
C (cioè fino al valore 1) del minore dei due.
PROD e SUM sono dichiarate intere di 8 byte per
integer*8 PROD, SUM
contenere numeri interi molto grandi
10 write (*,*) 'inserisci primo numero:'
read (*,*) N
if (N .lt. 10 .or. N .gt. 90) goto 10
15 write (*,*) 'inserisci secondo numero:'
read (*,*) M
if (M .lt. 10 .or. M .gt. 90) goto 15
controllo sul rispetto dei vincoli per i valori inseriti
C continua a pag. successiva
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
luglio 2007 – es. 1 (continua)
MAX=M
MIN=N dei due valori inseriti, inizialmente si suppone
if (MAX .lt. MIN) then che M sia il più grande e N sia il più piccolo;
poi si controlla se ciò e vero ed in caso
MAX=N contrario si inverte l’assegnazione
MIN=M
endif
PROD=1 variabile moltiplicatore inizializzata a 1
(uno è l’elemento neutro per il prodotto)
do I=MIN,MAX
PROD=PROD*I
end do
variabile totalizzatore inizializzata a zero
SUM=0
(zero è l’elemento neutro per la somma)
do I=1,(MIN-1)
SUM=SUM+I
end do
write (*,*) SUM, PROD
end
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
luglio 2007 – es. 2
Testo dell’esercizio
Scrivere un programma FORTRAN che legga da un file relativo alle vendite di un
outlet in un certo periodo due variabili da ogni record (senza conoscere a priori il
numero di record da leggere). Le due variabili sono rispettivamente:
a. il prezzo intero del capo d’abbigliamento venduto (espresso in € con due
decimali, il campo è di 6 byte);
b. lo sconto percentuale che è stato praticato (un numero intero, in un campo di 2
cifre). A esempio, il valore 30 indica che è stato praticato uno sconto del 30%.
Qualora siano presenti valori superiori a 70 sono da considerare come errori e
devono essere rimpiazzati dal valore 70.
Dopo aver letto tutto l’archivio si vuole stampare il totale incassato, in € con due
decimali.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
luglio 2007 – es. 2 (continua)
tutte le variabili utilizzate sono reali e non devono essere dichiarate
perché rispettano le regole della convenzione implicita
TOTI=0.0
open (5, file=„vendite.dat')
10 read (5,*,END=40) PI, SC
controllo sul valore dello sconto come richiesto
if (SC .gt. 70) SC=70
dall’esercizio
TOTI=TOTI+PI*(100-SC)/100 gli sconti vengono applicati al prezzo intero
ed il risultato viene immediatamente cumulato
goto 10
nella variabile totale incassato TOTI
40 write (*,45) 'totale incassato:', TOTI
stop
formato di visualizzazione del totale incassato con 2 cifre
45 format (f8.2)
decimali: 8 caratteri totali disponibili per l’output di cui
uno riservato alla virgola e 2 ai decimali, per cui solo
end cinque sono riservati alla parte intera
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
10 luglio 2008 – es. 2
Testo dell’esercizio
Un’indagine campionaria vuole accertare la passione dei fiorentini per la
cinematografia: agli intervistati è stato chiesto di indicare il numero di proiezioni
cinematografiche cui hanno assistito nel corso del 2007. I risultati dell’indagine sono
memorizzati in un archivio il cui tracciato record può essere esemplificato dalla
seguente tabella:
n° proiezioni n° intervistati
0 2130
1 3412
2 5323
… …
Scrivere un programma FORTRAN che produca in output:
a. il totale degli proiezioni cinematografiche cui hanno assistito gli intervistati;
b. il numero medio di proiezioni cui ha assistito ciascun intervistato.
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
10 luglio 2008 – es. 2 (continua)
integer TOTPR, TOTI queste variabili devono essere dichiarate perché non
real MEDIAPR rispettano i criteri della convenzione implicita
TOTPR=0
i totalizzatori devono sempre essere azzerati
TOTI=0
open (5, file=“archivio.dat”) al file (device o dispositivo) contenente le
10 read (5,*,END=35) NUMP, NUMI informazioni viene assegnato l’etichetta 5
TOTI = TOTI + NUMI
TOTPR = TOTPR + NUMP*NUMI
si continua a leggere dal file finché non se ne raggiunge la fine
goto 10
(eof = end of file); quando cò avviene, l’esecuzione riprende dalla riga 35
35 MEDIAPR = 1.0*TOTPR/TOTI il rapporto tra due interi è intero; poiché la
media è reale occorre premoltiplicare per 1.0
write (*,*) 'totale proiezioni:', TOTPR
write (*,*) 'media proiezioni per intervistato:', MEDIAPR
stop
end
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
24 gennaio 2008 – es. 2
Testo dell’esercizio
Una catena di grande distribuzione gestisce in città 4 supermercati (codificati
rispettivamente con i numeri da 1 a 4). In un archivio sono memorizzati, per ciascun
supermercato e per ciascun mese del 2007, il numero degli scontrini emessi (vedi
esempio sotto riportato) e il totale incassato.
Supermercati Mese Scontrini Incasso
1 1 1200 201103
2 1 1106 202123
3 1 1154 312234
4 1 1183 254321
1 2 1233 342167
… … … …
Produrre un programma FORTRAN che produca in output:
a. il totale degli scontrini emessi per tutto il 2007;
b. il totale incassato per tutto il 2007;
c. il valore dello scontrino medio per i mesi estivi del 2007 (giugno, luglio e agosto).
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Il linguaggio FORTRAN
24 gennaio 2008 – es. 2 (continua)
integer*4 S, TOTS, TOTSE queste variabili devono essere dichiarate perché non
real I, MEDIASE
rispettano i criteri della convenzione implicita; alle
TOTS=0 variabili scontrino (S) e totali scontrino (TOTS e
TOTI=0.0 TOTSE) viene riservato una zona di memoria di 4 byte
TOTSE=0
TOTIE=0.0
open (7, file=„supermarket.dat')
15 read (7,*,END=65) A, M, S, I
TOTS = TOTS + S
totale TOTI = TOTI + I
incasso e if (M .gt. 5 .and. M .lt. 9) then
totale TOTSE = TOTSE + S
scontrini TOTIE = TOTIE + I
per i mesi endif
si continua a leggere dal file finché non se ne raggiunge la fine
estivi goto 15
(eof = end of file); quando ciò avviene, l’esecuzione riprende dalla riga 65
65 MEDIASE = 1.0*TOTIE/TOTSE come esercizio precedente
write (*,70) 'totale scontrini:', TOTS
write (*,72) 'totale incasso:', TOTI
write (*,72) 'scontrino medio mesi estivi:', MEDIASE
stop a28: formato di un output di tipo carattere (28 carat. disponibili)
70 format (a28,i9)
i9: formato di un output di tipo intero (9 carat. disponibili)
72 format (a28,f12.2)
f12.2: formato di un output di tipo reale (12 carat. disponibili di cui uno
end
per la virgola e 2 per la parte decimale)
Bruno Bertaccini (mail to: brunob@ds.unifi.it) È vietata la riproduzione non autorizzata a fini commerciali.
Get documents about "