Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di...

38
Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Corso B Docente : Ing. Secondulfo Giovanni Anno Accademico 2010-2011 Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

Transcript of Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di...

Page 1: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Università di Salerno Corso di

FONDAMENTI DI INFORMATICACorso di Laurea Ingegneria

Corso B Docente : Ing. Secondulfo Giovanni

Anno Accademico 2010-2011

Lezione 7: La Formalizzazione degli Algoritmi -

Strutture di Controllo e SelettiveLa Programmazione Strutturata (3 p)

Giovedì 21 Ottobre 2010

Page 2: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

2

Ovviamente il blocco operazioni può contenere a sua volta delle strutture selettive

Si usano quando ci sono più di due alternative da controllare

Si parla in questo caso di selezioni annidate

Page 3: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

3

Definizioni:

Flowchart o Algoritmo o Schema a Blocchi : qualsiasi combinazione di blocchi operativi e decisionali; ogni arco uscente da un blocco va in ingresso ad un solo blocco.

Flusso di controllo: ordine di percorrenza dei blocchi individuato da un flowchart.

Struttura di controllo: flowchart parziale da assumere come modello di computazione, con un ingresso e un'uscita.

Sequenza di computazione: successione di blocchi operativi e decisionali prodotta dall'esecuzione di un flowchart per un certo insieme di dati in ingresso

Programmazione Strutturata

Page 4: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

4

Definizioni

La programmazione strutturata è una tecnica di programmazione che ha lo scopo di semplificare la struttura di un algoritmo disciplinando l'uso delle strutture di controllo utilizzabili all'interno di uno schema blocchi.

In particolare, tale tecnica prevede l'uso di un numero limitato di strutture di controllo fondamentali, con un ingresso ed una uscita, di sequenza,selezione ed iterazione.

La programmazione strutturata vincola quindi l'utilizzo delle strutture di controllo, ma offre i seguenti vantaggi:

rende possibile una progettazione di tipo Top-Down;

permette la definizione di algoritmi in generale più leggibili, essendo piùfacile individuare i moduli corrispondenti alle varie parti di cui si compone l'algoritmo;

test, correzione e manutenzione del programma sono perciò più semplici.

Programmazione Strutturata

Page 5: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

5

Semplici: esprimono azioni elementari

a= a+ 1;

Strutturate: composte da più istruzioni semplici assemblate in determinate strutture

Sequenza

Selezione

Iterazione o Ciclo

Per le strutture utilizzate per la programmazione proveremo a rispondere alle seguenti domande:

Esiste un numero finito di schemi di strutture da adoperare per la costruzione di un programma?

E sempre possibile realizzare un programma con le sole strutture del punto precedente?

Le I struzioni

Page 6: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

6

I l costrutto sequenza, detta anche istruzione composta è una successione di più istruzioni semplici o strutturate. Le istruzioni vengono eseguite in sequenza secondo l ordine in cui sono scritte.

Consente di conferire ai linguaggi ad alto livello elevate capacità di nidificazione delle strutture di controllo

Costrutto blocco di istruzioni

{ begin

istruzione_1; istruzione1;

...........; ..;

istruzione_N; istruzioneN

} end

Programmazione Strutturata : Costrutto Sequenza

ISTRUZIONE1

ISTRUZIONEn

Page 7: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

7

Hanno la funzione di esprimere l esecuzione

condizionale di una specifica istruzione (semplice o

composta) tra più istruzioni che possono essere

eseguite in alternativa.

Esecuzione condizionale di una istruzione

if- then

Esecuzione condizionale tra due istruzioni

if-then-else

Esecuzione condizionale tra più istruzioni

case

Programmazione Strutturata : Selezione

Page 8: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

8

if R then SIn cui R è un espressione booleana o, in particolare una relazione ed S una

qualsiasi istruzione semplice o strutturata. La semantica di questa istruzione è cosi esprimibile : se l espressione R è vera esegui Saltrimenti esegui l istruzione immediatamente successiva nella sequenza di istruzioni all interno della quale è inserita l istruzione if-then in esame.

float a;

float b;

float c;

leggi b;

c=7;

a=c-(b*2);

if (a>0) then {

stampa Il valore di a è positivo ;

}

stampa Il valore di a è:;

stampa a;

Progr. Strutturata : I struzione Condizionale Semplice

R

S

Q

Falso

Vero

Page 9: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

9

if R then S1 else S2In cui R è un espressione booleana o, in particolare una relazione ed S1 e S2 una

qualsiasi istruzione semplice o strutturata. La semantica di questa istruzione ècosi esprimibile : se l espressione R è vera esegui S1 altrimenti esegui l istruzione S2, in entrambi i casi esegui l istruzione immediatamente successiva nella sequenza di istruzioni all interno della quale è inserita l istruzione if-then in esame.

if ( espressione )

istruzione;

else

istruzione;

Dove espressione: è una espressione booleana

(a==b) vale true se a contiene lo stesso valore di b,

altrimenti vale false

(x>5) vale true se il valore di x è strettamente maggiore di 5, altrimenti vale false

(x<=0) vale true se il valore di x è negativo, altrimenti vale false

Parole riservate del linguaggio (keywords): if, else

Progr. Strutturata : I struzione Condizionale Semplice

R

S1

Q

Falso

S2

Vero

Page 10: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

10

Esemplificazione

(Q)

if ( a = = b )

x = 0;

else

x = 1;

(S)

x è uguale a 0

se a è uguale a b

altrimenti x è uguale a 1

Progr. Strutturata : I struzione Condizionale

a == b

x = 0

S

x = 1

Q

FalsoVero

Page 11: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

11

istruzione può essere una qualunque istruzione, semplice o composta, può anche essere vuota.

(Q)

if ( a = = b )

x = 0;

else

;

(S)

Progr. Strutturata : I struzione Condizionale

a == b

x = 0

S

;

Q

FalsoVero

Page 12: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

12

if ( (x+y)*(z-2) > (23+v) ) {

z = x + 1;

y = 13 + x;

}

equivale a:

if ( (x+y)*(z-2) > (23+v) ) {

z = x + 1;

y = 13 + x;

}

else

;

Progr. Strutturata : I struzione Condizionale senza parte else

Page 13: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

13

Nelle operazioni di tipo condizionale è tipico l utilizzo di OPERATORI LOGI CI :

! Negazione

&& AND

| | OR

Il risultato restituito da questi operatori è di tipo logico (vero, falso) rappresentabile con 0 e 1

! Negazione : Operatore Unario effettua l operazione di negazione logica

&& AND : opera su operandi multipli la condizione è vera (1) se è verificate congiuntamente, altrimenti il risultato èfalso (0)

| | OR : opera su operandi multipli la condizione è vera se èvera per almeno uno degli operandi è falsa se è falsa per tutti gli operandi

Progr. Strutturata : I struzione Condizionale Operatori Logici

Page 14: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

14

Esempi : L istruzione può essere una qualsiasi istruzione semplice o composta

if (x = = 0) z = 5; else y = w * y;

if (x = = 0) { z = 5; } else { y = w * y; };

if ((x = = y) && (z>3))

z = 5;

else {

y = z + w * y;

x = z;

}

Progr. Strutturata : I struzione Condizionale

Page 15: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

15

if ( a<b && a<c )

minimo = a;

else

if ( b<c )

minimo = b;

else

minimo = c;

Progr. Strutturata : I struzione Condizionale annidate

b < c NOSI

a < b && a <c

minimo = a

minimo = b minimo = c

NOSI

Page 16: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

16

L istruzione di selezione multipla, detta anche case, esprime una selezione fra n > 2 istruzioni nell ipotesi che la condizione di selezione sia codificata mediante un espressione ad n valori si ha :

case e

v1: S1;

v2: S2;

...

vn: Sn;

otherwise Sm

end

e: espressione di selezione

v1,v2 ... vn: valori di e con funzioni di etichette particolari che

contrassegnano le istruzioni

S1,S2,...,Sn: espressioni semplici o strutturate

La clausola otherwise definisce l istruzione da eseguire nel caso in cui l espressione di selezione assuma valori non appartenenti all insieme {v1,v2 ... vn}

Progr. Strutturata : I struzione Selezione Multipla

Q

e

SnS2S1

Sm

v1 v2 vn

Page 17: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

17

Esempio: Calcolo delle Radici di un Equazione di Secondo Grado (1)

Si vuole realizzare un programma che risolva un equazione di 2° grado nella forma:

ax2+bx+c = 0Con a,b, e c coefficienti reali. Il programma deve fornire sia il numero delle radici reali dell equazione, sia i loro valori.

Page 18: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

18

Esempio: Calcolo delle Radici di un Equazione di Secondo Grado (2)

Algoritmo:Inserimento da tastiera dei coefficienti a,b,cCalcolo del determinante

delta = b*b-4*a*c

Controllo del segno del determinante (positivo, negativo o nullo)

Il determinante è negativo?Vero: Nessuna soluzione realeFalso: Il determinante è nullo?

» Vero: Una soluzione reale: x = -b/2*a» Falso(Determinante positivo): Due soluzioni reali

x1=(-b- delta)/2*ax2=(-b+ delta)/2*a

Page 19: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

19

Esempio: Calcolo delle Radici di un Equazione di Secondo Grado (3)

Delta<0Si No

Inizio

Leggi a, b e c

x -b/2*ax1 (-b- delta)/2*a

Fine

delta b*b-4*a*c

Stampa Nessuna

soluzione reale

Delta=0Si

Stampa Una

soluzione reale

Stampa x

No

x2 (-b+ delta)/2*a

Stampa Due

soluzioni reali

Stampa x1 e x2

Determinante negativo

Determinante nullo

Determinante positivo

Page 20: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

20

Esempio: Calcolo delle Radici di un Equazione di Secondo Grado (4)

Delta<0Si No

Inizio

Leggi a, b e c

x -b/2*ax1 (-b- delta)/2*a

Fine

delta b*b-4*a*c

Stampa Nessuna

soluzione reale

Delta=0Si

Stampa Una

soluzione reale

Stampa x

No

x2 (-b+ delta)/2*a

Stampa Due

soluzioni reali

Stampa x1e x2

SCHERMOa

b

c

delta

x

x1

x2

5

4

1

- 4

Nessuna soluzione reale

Page 21: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

21

Esempio: Calcolo delle Radici di un Equazione di Secondo Grado (5)

Delta<0Si No

Inizio

Leggi a, b e c

x -b/2*ax1 (-b- delta)/2*a

Fine

delta b*b-4*a*c

Stampa Nessuna

soluzione reale

Delta=0Si

Stampa Una

soluzione reale

Stampa x

No

x2 (-b+ delta)/2*a

Stampa Due

soluzioni reali

Stampa x1e x2

SCHERMOa

b

c

delta

x

x1

x2

4

4

1

0

Una soluzione reale

-1/2

x = -1/2

Page 22: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

22

Esempio: Calcolo delle Radici di un Equazione di Secondo Grado (5)

Delta<0Si No

Inizio

Leggi a, b e c

x -b/2*ax1 (-b- delta)/2*a

Fine

delta b*b-4*a*c

Stampa Nessuna

soluzione reale

Delta=0Si

Stampa Una

soluzione reale

Stampa x

No

x2 (-b+ delta)/2*a

Stampa Due

soluzioni reali

Stampa x1e x2

SCHERMOa

b

c

delta

x

x1

x2

1

-1

-2

9

Due soluzioni reali

-1

x1 = -1x2 = 2

2

Page 23: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

23

I costrutti di iterazione consentono di realizzare dei cicli di elaborazione, cioè l esecuzione ripetuta di una specifica istruzione (semplice o composta).

Il costrutto è caratterizzato da:

istruzione da eseguire che, per ciascuna percorrenza opera

su variabili distinte

sulle medesime variabili che assumono, in generale, valori diversi in funzione della percorrenza

Il ciclo è caratterizzato da una relazione R di continuazione

per ciascuna percorrenza del ciclo viene valutata allo scopo di decidere se questo deve avere termine o se deve essere eseguito ancora una volta

Programmazione Strutturata : Costrutto I terazione (cicli)

Page 24: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

24

Classificazioni cicli:

a condizione iniziale (while o while-do)

a condizione finale (repeat-until o do-while)

a conteggio (for)

Nei cicli a conteggio si conosce a priori il numero delle ripetizioni, mentre in quelli a condizione il numero complessivo di ripetizioni non è noto.

Esempio di ciclo a condizione :

//leggere un carattere c dalla tastiera fino a quando non si preme il tasto a

do {

leggi c;

} while (!(c==65))

Esempio di ciclo a conteggio :

// legge 5 caratteri dalla tastiera

for (i=0; i<5; i++) leggi a;

Programmazione Strutturata : Costrutto I terazione (cicli)

Page 25: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

25

Ciclo a condizione iniziale

while R do S

Causa l esecuzione di S zero o più volte. S viene eseguita quando Rritorna un valore vero e termina quanto R ritorna un valore falso.

Si tratta del costrutto iterativo più generale in quanto il numero di iterazioni può essere qualsiasi

I valori necessari per la valutazione di R devono essere definiti prima dell inizio e, in generale, ridefiniti da S.

Programmazione Strutturata : Costrutto I terazione (cicli)

R

S

Q

Falso

Vero

Page 26: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

26

Esempio

int a=0; //se a=10 ???

int b=5;

int c=10;

int contatore = 0;

while ((a+b)<c) {

stampa a+b minore di c;

stampa Numero di cicli fatti;

stampa contatore;

contatore=contatore+1;

a=a+1; //cosa accade se omettiamo questa istruzione?

}

stampa Uscita dal ciclo;

Programmazione Strutturata : Costrutto I terazione (cicli)

Page 27: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

27

Ciclo a condizione finale

Il ciclo a condizione finale ( istruzione repeat o do-while) ha la forma

repeat S until R

causa l esecuzione di S una o più volte. S viene eseguita fin quando R èFalsa e il ciclo termina quando R è vera

R viene valutata dopo la prima esecuzione di S e quindi i valori necessari per la sua valutazione sono calcolati internamente al ciclo

Programmazione Strutturata : Costrutto I terazione (cicli)

R

S

Q

Falso

Vero

Page 28: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

28

Esempio

int a=0; //se a=10, cosa accade?

int b=5;

int c=10;

int contatore = 0;

do {

stampa a+b minore di c; //è sempre vero?

stampa Numero di cicli fatti:

stampa contatore;

contatore=contatore+1;

a=a+1; //cosa accade se omettiamo questa istruzione?

} while (((a+b)<c));

stampa Uscita dal ciclo;

Programmazione Strutturata : Costrutto I terazione (cicli)

Page 29: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

29

Ciclo a conteggio

for vc=vi to vf step k do S

vc: variabile di conteggio che assume i seguenti valori della progressione:

vi: valore iniziale

vf: valore finale

k: passo o ragione

S: istruzione da eseguire

La variabile di conteggio assume dunque i seguenti valori:

vi, vi+k, vi+2k, ..., vf

per vi = vf il ciclo viene percorso una sola volta

per vi > vf il ciclo viene percorso zero volte (a meno che k non sia negativo)

Programmazione Strutturata : Costrutto I terazione (cicli)

Page 30: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

30

Utilizzo del Ciclo a conteggio

Il costrutto ciclo di conteggio è stato fra i primi ad essere utilizzato anche se è fra i piùpericolosi da utilizzarsi; è buona norma attenersi alle regole di seguito esposte al

fine di evitare errori di programmazione.

da utilizzare quando è noto in anticipo il numero di ripetizioni

da NON utilizzare quando si prevedano condizioni di terminazioni ulteriori rispetto a quella specificata nel costrutto

Programmazione Strutturata : Costrutto I terazione (cicli)

vc = vf

vc = vi

Q

NO

SI

S

vc = Succ( vc)

Page 31: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

31

Esempio

int a= 0; / /se a= 10, cosa accade?

int b= 5;

int c= 10;

int contatore = 0;

for (a= 0; (a+ b)< c; a= a+ 1) {

stampa a+ b minore di c;

stampa Numero di cicli fatti;

stampa contatore;

contatore= contatore+ 1;

}

stampa Uscita dal ciclo;

Programmazione Strutturata : Costrutto I terazione (cicli)

Page 32: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

32

Si indichino con P l insieme di tutti gli algoritmi realizzabili, e con D l insieme di tutti gli algoritmi realizzati facendo uso esclusivo delle tre strutture di controllo fondamentali (sequenza, selezione ed iterazione) : dato un programma p appartenente a P, esiste sempre un programma d appartenente a D, che risulta debolmente equivalente a p .

I n base a quanto espresso in precedenza si può dire :

Due programmi si dicono funzionalmente equivalentise, sottoposti ad un qualsiasi insieme di dati di ingresso entrambi terminano producendo gli stessi dati di uscita oppure entrambi non terminano

L insieme costituito dalle strutture sequenza, selezione e iterazione è un insieme completo

Teorema di Bòhm-Jacopini

Page 33: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

33

Definizione di equivalenza:

Equivalenza debole: due flowchart (algoritmi) sono debolmente equivalenti se, per ogni insieme di dati in ingresso, generano gli stessi dati in uscita

Equivalenza forte: due flowchart sono fortemente equivalenti se sono debolmente equivalenti e le rispettive sequenze di computazione sono uguali, per ogni insieme di dati in ingresso

Equivalenza fortissima: due flowchart sono fortissimamente equivalenti se sono fortemente equivalenti ed inoltre in essi compaiono lo stesso numero di volte gli stessi blocchi elementari

Equivalenza funzionale di program m i

Page 34: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

34

In generale è possibile passare da uno schema a blocchi Non strutturato ad uno strutturato mediante l utilizzo di schematismi fortemente equivalenti

Equivalenza Strut turali

p

q

A

B

Falso

Vero

Falso

Vero

Falso

Vero

FalsoVero

B

Bq

p

A

Page 35: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

35

Le due figure stutturate di ciclo (a condizione iniziale ed a condizione finale sono mutuamente ricavabili mediante delle operazioni di equivalenza

Equivalenza Strut turali

Falso

Vero

Falso

Vero

p A

p

A

While - do

Repeat - Until

Page 36: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

36

Repeat-until ricavato tramite un while do

Equivalenza Strut turali

Falso

Vero

Falso

Vero ! p A

p

A

While - doRepeat - Until

A

Page 37: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

37

While do ricavato tramite un Repeat -until

Equivalenza Strut turali

Falso

Vero

Falso

Vero

p A

p

A

While - doRepeat - Until

pVeroFalso

Page 38: Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Strutture di... · Fondamenti di Informatica -Ing. Secondulfo Giovanni 4 Definizioni Laprogrammazione strutturataèuna

Fondamenti di Informatica - Ing. Secondulfo Giovanni

38