Fondamenti di Informatica
Progetto e codifica di algoritmi
IL TEOREMA DI BOEHM-JACOPINI
Un qualunque algoritmo può essere descritto unicamente
attraverso le tre strutture:
) Sequenza
) Diramazione
) Ciclo o iterazione
Le tre strutture sono complete.
Un qualunque linguaggio (Assembler, Pascal, C, flow chart, ecc.)
è sufficiente che metta a disposizione le sole tre strutture
anzidette.
Una Sequenza può contenere:
9 istruzioni di lettura e scrittura
9 istruzioni di assegnazione
Se si suppone di avere una sola unità di ingresso (standard input)
ed una sola unità di uscita (standard output), una istruzione di
lettura/scrittura consente di leggere/scrivere il valore di una
variabile da/su l’unità di ingresso/uscita, provocandone il
trasferimento nella/dalla parte di memoria contenente i dati del
programma.
Una istruzione di assegnazione consente di assegnare ad una
variabile il valore assunto da un’espressione.
Diramazione e Ciclo costituiscono le strutture o istruzioni di
controllo.
G. Piscitelli
Politecnico di Bari
pag. 1/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
LE STRUTTURE DEL FLOW CHART
Sequenza
S
C
vera
falsa
S2
S1
C
vera
S
(corpo)
Diramazione
falsa
Ciclo
(a condizione iniziale)
fine
G. Piscitelli
Politecnico di Bari
pag. 2/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
ALTRE STRUTTURE DI CONTROLLO
S
(corpo)
C
vera
Ciclo
(a condizione finale)
falsa
fine
I
I1
I > I3
vera
falsa
S
(corpo)
I
Ciclo
(enumerativo)
I +I2
fine
G. Piscitelli
Politecnico di Bari
pag. 3/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
PROGETTAZIONE STRUTTURATA
I vantaggi del progettare facendo uso delle sole strutture
fondamentali:
¾ leggibilità;
¾ modificabilità;
¾ facilità di codifica.
G. Piscitelli
Politecnico di Bari
pag. 4/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
PROGETTAZIONE STRUTTURATA
Algoritmo: lettura di numeri e inversione della sequenza
start
N
1
NUM
A(N)
NUM
N
N+1
NUM != 0
si
no
N
N-2
NUM
A(N)
N
N-1
NUM
N != 0
si
no
stop
G. Piscitelli
Politecnico di Bari
pag. 5/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
PROGETTAZIONE STRUTTURATA
Esempi:
Algoritmo di ordinamento SELECTION SORT
Algoritmo di ordinamento BUBBLE SORT
Algoritmo di CUT AND PASTE
Algoritmo di STRING FIND
Algoritmo di STRING FIND AND SUBSTITUTE
………
………
G. Piscitelli
Politecnico di Bari
pag. 6/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
LE ISTRUZIONI DI UN GENERICO LINGUAGGIO
Istruzione di lettura
read (alfa, beta);
Istruzione di scrittura
write (alfa, beta);
write ((alfa * beta)/5);
write (“ciao”);
Istruzione di assegnazione
delta = alfa + beta
Diramazione
if (condizione)
then {sequenza1};
else {sequenza2};
Ciclo (condizione iniziale)
while (condizione)
do {sequenza};
Ciclo (condizione finale)
do {sequenza}
while (condizione);
Ciclo (enumerativo)
for (I = I1; I <= I3; I = I + I2)
{sequenza}
G. Piscitelli
Politecnico di Bari
pag. 7/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
GLI OPERATORI ARITMETICI
=
+
*
/
assegnazione
somma
sottrazione
moltiplicazione
divisione
GLI OPERATORI DI RELAZIONE
==
!=
<
>
<=
>=
relazione di uguaglianza
relazione di disuguaglianza o diversità
relazione ‘minore di’
relazione ‘maggiore di’
relazione ‘minore o uguale di’
relazione ‘maggiore o uguale di’
GLI OPERATORI LOGICI
&&
||
!
G. Piscitelli
AND o prodotto logico
OR o somma logica
NOT o negazione
Politecnico di Bari
pag. 8/9
Fondamenti di Informatica
Progetto e codifica di algoritmi
GLI ARRAY
Sono sequenze di celle di memoria consecutive e omogenee.
Ad ogni array viene dato un unico nome, mentre il singolo
elemento è identificato da un indice, cioè da un intero (maggiore o
uguale a zero), che specifica il numero d’ordine nella sequenza.
Array monodimensionale (vettore) di nome CODE e costituito da
5 elementi.
CODE[0] CODE[1] CODE[2] CODE[3] CODE[4]
Array bidimensionale di nome DIF e costituito da 2 vettori
ciascuno di 3 elementi.
DIF[0][0] DIF[0][1] DIF[0][2] DIF[1][0] DIF[1][1] DIF[1][2]
G. Piscitelli
Politecnico di Bari
pag. 9/9