Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
[1.1.1.12]
Il METALINGUAGGIO che ci fornirà gli strumenti per rappresentare graficamente l’algoritmo e che sarà
utilizzato per formalizzarlo graficamente prende il nome di DIAGRAMMA DI FLUSSO o FLOW CHART.
Si tratta di una struttura grafica assemblabile attraverso l’uso di limitati simboli grafici e di alcune semplici
regole di evoluzione.
Il carattere statico del grafo assume una sorta di dinamicità nel momento in cui viene verificato il processo.
Come sarà possibile verificare a breve la scrittura dell’algoritmo con il nuovo linguaggio grafico consentirà
di poter verificare la sua correttezza procedendo attraverso una implicita animazione. Saranno sostituiti i
valori delle variabili e, seguendo il flusso obbligato si potrà dimostrare la correttezza del progetto.
Esistono altri tipi di linguaggi grafici alternativi al FLOW CHART che saranno proposti nei futuri
approfondimenti.
Il FLOW CHART è il più idoneo in ambito informatico e sarà lo strumento idoneo per la progettazione dei
programmi che saranno successivamente tradotti nel codice specifico del linguaggio proposto.
Tutti i linguaggi sono caratterizzati da elementi simbolici (come ad esempio le lettere e i caratteri per la
lingua parlata e scritta), elementi sintattici che si riferiscono alla correttezza grammaticale e elementi
semantici che ineriscono al significato delle singole parole e dei periodi.
La frase “il bicchiere dice che ieri pioverà” è senza dubbio corretta sotto il profilo sintattico ma non su quello
semantico.
La frase “il bichiere è stare riemputo da meh con l’accua minerala” è potenzialmente comprensibile da un
punto di vista semantico se non fosse che è densamente afflitto da pesanti errori sintattici.
1
I SIMBOLI CONVENZIONALI DEI FLOW CHART
start
Inizio: definisce l’inizio dell’algoritmo e non svolge
1 nessuna azione se non quella di consentire il
passaggio al blocco seguente.
2
APPROCCIO STRUTTURATO PER LA RISOLUZIONE DEGLI ALGORITMI
Attraverso il postulato del teorema di Jacopini-Bohm è stato dimostrato che ogni classe di problema può
essere risolto avvalendosi solo di tre tipologie si strutture chiamate STRUTTURE DI CONTROLLO.
La risoluzione degli algoritmi secondo quanto stabilito da questo teorema prende il nome di approccio
STRUTTURATO. Pertanto la combinazione di sole tre strutture consente la risoluzione di ogni tipo di
algoritmo.
LE STRUTTURE
1) SEQUENZA
2) SELEZIONE (semplice o multipla)
3) ITERAZIONE O CICLO (pre o postcondizonale)
3
SEQUENZA
Si forma attraverso la sequenza lineare dei blocchi. L’elaborazione procede dall’alto al basso.
Viene eseguito ogni comando a seconda del blocco utilizzato e, una volta terminata l’esecuzione contenuta
in un blocco, si procede al blocco successivo.
FASE 1
FASE 2
FASE 2
Le tre fasi si seguono in sequenza. Viene eseguita la FASE 1, una volta terminata si passa all’esecuzione
della FASE 2 e così via.
La struttura sequenza è la più semplice è rappresenta implicitamente la natura stessa del flusso.
L’esecuzione di ogni processo avviene grazie all’esecuzione di azioni “una dopo l’altra” e questo ne rivela la
sua natura sequenziale.
4
“Descrivere con un flow chart un algoritmo che converte i gradi sessagesimali in radianti 1”
Si introducono nella struttura dell’algoritmo anche le fasi di start e end sottintendendo che il processo ha
inizio e una fine. Nonostante la rappresentazione con i FLOW CHART sia puramente formale, si sottolinea
che la fase successiva sarà la sua traduzione in un linguaggio specifico e la sua esecuzione da parte di una
macchina. Pur non facenti parte intrinseca della logica, questi due stati fanno parte del funzionamento della
macchina.
1. Start.
2. Assegnazione del risultato del calcolo della costante di conversione K (data dal rapporto
2 ∙3,14
K= ): il valore numerico viene assegnato alla variabile K.
360
3. Lettura dell’angolo sessagesimale: viene introdotto il valore in gradi dell’angolo scrivendolo in una
variabile chiamata A g.
4. Esecuzione della formula di conversione 1 come prodotto di Ar =K ∙ A g : viene eseguito il calcolo e il
risultato numerico viene assegnato alla variabili A g.
5. Scrittura del valore calcolato: viene restituito il contenuto numerico della variabile A g.
6. End.
start
K=0,01745
input A_g
A_r = K* A_g
output A_r
end
Sono stati utilizzati oltre ai blocchi start e end, un blocco di inizializzazione dove è stata inizializzata la
costante K, due blocchi di inp/out per leggere e scrivere i dati scambiati con l’utente del programma e,
infine il blocco operazione in cui viene eseguito il calcolo.
1
Il radiante è un’unità di misura angolare che fa corrispondere l’angolo come il rapporto tra la lunghezza dell’arco
sotteso dell’angolo in rapporto al raggio della circonferenza. Pertanto l’angolo giro corrisponde a 2 π [rad]. La
2π
relazione tra un angolo espresso in gradi sessagesimali e lo stesso espresso in radianti è: α rad =α grad
360
5
Descrizione del flusso.
1. Il programma si legge partendo dal blocco start procedendo una volta “eseguito”, alla fase
successiva.
2. Nel blocco inizializzazione la variabile K assume il valore scritto di 0,01745.
3. Viene scritto in ingresso (fase di input) il valore numerico dell’angolo in gradi
4. Si calcola l’angolo in radianti attraverso la formula scritta nel blocco di calcolo e si assegna il
risultato numerico alla variabile deputata
5. Si scrive in uscita (fase di output) il valore numerico risultato dall’operazione
6
SELEZIONE
La struttura SELEZIONE o SELETTIVA serve quando nel flusso processo vi è necessità di compiere azioni
differenti a seguito di una scelta.
Il blocco è rappresentato da una losanga (un rombiode) ai cui vertici sono indicati rispettivamente la
direzione di provenienza e altri due che rappresentano le uscite.
La condizione scritta dentro al blocco è una domanda logico/matematica il cui tipo di risposta è di tipo
logico/booleana2. Gli operatore logici deputati sono ovviamente tutti quelli di confronto come ad esempio:
¿ ,>, ≤ , ≥,=, ≠
Se la condizione è verificata, il flusso procede verso la direzione indicata dalla freccia TRUE, altrimenti verso
quella indicata dalla freccia FALSE.
FALSE
Condizione
logica
TRUE
2
Un dato si dice BOOLEANO quando può assumere solo i due valori logici TRUE (vero o 1) o FASE (falso o 0)
7
SELEZIONE SEMPLICE O MULTIPLA
A seconda del tipo di algoritmo potrebbe essere necessario compiere una o più azioni:
1. Nel solo caso di uscita FALSE (oppure TRUE), in caso contrario il flusso deve procedere dall’altro
ramo. Questo tipo di selezione è detta SEMPLICE.
2. Sia nel caso di uscita FALSE che nel caso di uscita TRUE. Questo tipo di selezione è detta MULTIPLA.
FALSE
FALSE Condizione
(or TRUE) logica
Condizione
logica
TRUE
AZIONE TRUE
(or FALSE)
AZIONE_A AZIONE_B
Nel caso di selezione semplice, l’azione viene eseguita solo se la risposta è ti tipo FALSE. E’ stata messa tra
parentesi la risposta opposta poiché potrebbe essere necessario eseguire un’azione per risposte vere ma
anche false.
Nel caso di selezione multipla l’azione _A è eseguita in caso di uscita FALSE, quella _B in caso contrario.
8
“Descrivere con un flow chart un algoritmo che restituisca il valore assoluto del numero immesso solo nel
caso il numero sia < 0”.
Si propone una possibile strategia risolutiva imponendo come condizione quella di non immettere 0 come
numero. Tale controllo è tuttavia possibile introducendo un ulteriore condizione in ingresso.
1. Start
2. Lettura del numero N
3. Verificare se N>0
4. Se è TRUE non viene compita nessuna azione e il flusso termina (punto 7)
5. Nel caso FALSE, il numero N viene moltiplicato per la costante −1
6. Il numero viene scritto in uscita
7. End
START
Input N (diverso da 0)
T
N>0
N = N * (-1)
Out N
End
9
ITERAZIONE3 o CICLO
Le strutture ITERATIVE o CICLICHE consentono la ripetizione di una o più azioni sotto il controllo di una
condizione decisionale detta di TEST. Il blocco determinante sia per le strutture condizionale che per quelle
cicliche è il blocco di test. Nel caso delle strutture ciclico/iterative il flusso viene ricondotto a monte.
A seconda che la condizione di test sia posta prima o dopo la azioni si dice che la struttura è:
PRECONDIZIONALE POSTCONDIZIONALE
FALSE azioni
condizione
TRUE
condizione
azioni TRUE
FALSE
Nel ciclo POSTCONDIZIONALE vengono eseguite le azioni (in questo caso sono state rappresentate in un
unico blocco) successivamente interrogato il blocco di TEST. Se la risposta
La differenza sostanziale dunque è che nella struttura POSTCONDIZIONALE la azioni vengono compiute
almeno una volta.
3
ITER <dal latino cammino, viaggio, percorso>
10
“Descrivere con un flow chart un algoritmo che restituisce il resto della divisione di due numeri interi”
L’algoritmo riceve in ingresso due numeri interi A e B. Saranno rispettivamente A il dividendo e B il divisore
omettendo in ingresso il controllo che impone A ≥ B con A e B ∈ N .
Come noto dall’aritmetica la divisione tra due interi restituisce un risultato chiamato quoziente (che
chiameremo Q) ossia quante volte il divisore è contenuto nel dividendo. Se i numeri non sono multipli oltre
al quoziente viene rimane esclusa una quantità minore del divisore chiamata resto. In altre parole
sommando Q volte B otteniamo A a meno del resto; dunque togliendo ciclicamente B ad A otteniamo il
resto.
1. Start.
2. Lettura di A () e B ()
3. Esecuzione della differenza tra A e B; A=A−B
4. Controllo se A ≤ B ; se TRUE passa a 5, se FALSE torna a 3
5. Scrivi il risultato resto contenuto in A
Start
Input A, B
A=A-B
T
A <= B
Output A
End
La struttura di controllo è di tipo ciclico postcondizionale , prima viene eseguita l’istruzione poi viene
eseguito il controllo sebbene anche l’uso della struttura precondizionale avrebbe portato allo stesso
risultato.
11
Nel caso di quest’altro algoritmo diventa obbligato l’uso della struttura postcondizionale.
“Rappresentare in un flow chart un algoritmo che acquisisce un intero finché questo è < di 100. Termina nel
caso in cui il numero immesso è > 100”
Start Start
FALSE
NUM < 100 NUM > 100
TRUE
FALSE TRUE
End End
Si sono proposte due soluzioni identiche nella loro struttura. L’unica differenza è il tipo di operatore
contenuto nel blocco di test e conseguentemente l’utilizzo della risposta in uscita al blocco.
12
RIDUZIONE E SEMPLIFICAZIONE DEI BLOCCHI
Le tre strutture non sono le uniche possibili per risolvere un algoritmo ma sono tra le tante quelle che ne
conferiscono fluidità, semplicità, facilità di comprensione e modificabilità.
Questa procedura consente di verificare se il flow chart è stato progettato con un approccio strutturato.
I blocchi SEQUENZA (sq), SELEZIONE (sl_s, sl_m) e ITERAZIONE (t_i, i_t) possono essere intesi ciascuno come
un blocco avente un ingresso ed un’uscita.
IN
IN
IN
IN
?
sq sl_s
OUT
OUT
OUT
OUT
IN IN
? IN IN
sl_m i_t
OUT ? OUT
OUT
OUT
IN
? IN
t_i
OUT
OUT
13
A titolo di esempio si propone di semplificare secondo la procedura proposta il diagramma seguente.
Sono indicate tra le parentesi le strutture che via via vengono raggruppate e integrate in “sotto-funzioni”
aventi lo stesso numero.
IN
?
?
2
?
?
5 4
?
OUT
14
IN
2 ?
3 7 5 4
8 9
OUT
IN
7 ?
8 9 10
OUT
15
IN
7 10 11
OUT
IN
1
12
11
OUT
IN
12
OUT
16
CONCLUSIONI
I flow chart sono linguaggio grafici in cui il processo procede secondo un “flusso” lineare dall’alto verso il
basso. Questo approccio prende il nome di procedimento TOP-DOWN.
La sequenza è l’elemento fondamentale del flusso e sottintende da un lato che il processo viene eseguito
un blocco dopo l’altro e, dall’atro lato, forse meno ovvio, che il flusso procede “per passi”.
Questo aspetto viene detto di “tipo discreto” che è tipico di tutte le macchine logiche come sono appunto i
computer e in genere tutti i sistemi logici che hanno la stessa loro architettura interna : PC, computer
industriali , PLC, sistemi a micro processore, ecc…
17