4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è...

12
Fondamenti di Informatica 4. Gli algoritmi 4. Gli algoritmi Corso di Laurea in Ingegneria Informatica e dell’Automazione A.A. 2012-2013 2° Semestre Prof. Giovanni Pascoschi Gli algoritmi 2 Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni Analisi Analisi e programmazione programmazione Gli Gli algoritmi algoritmi Proprietà Proprietà ed ed esempi esempi Costanti Costanti e variabili, variabili, assegnazione, assegnazione, istruzioni, istruzioni, proposizioni proposizioni e predicati predicati Sommario 3 e predicati predicati Gli Gli strumenti strumenti per per la la formalizzazione formalizzazione di di algoritmi algoritmi Diagrammi Diagrammi a blocchi blocchi Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni Tramite un elaboratore si possono risolvere problemi di varia natura: emissione di certificati anagrafici, gestione dei c/c di un istituto di credito, prenotazioni aeree, ecc… Il problema deve essere formulato in modo opportuno, perché sia possibile utilizzare un elaboratore per la sua soluzione Per analisi analisi e programmazione programmazione si intende l’insieme delle attività Analisi e programmazione #1 4 Per analisi analisi e programmazione programmazione si intende l’insieme delle attività preliminari atte a risolvere problemi utilizzando un elaboratore, dalla formulazione del problema fino alla predisposizione dell’elaboratore Scopo Scopo dell’analisi dell’analisi definire un algoritmo algoritmo Scopo Scopo della della programmazione programmazione realizzare realizzare un un programma programma Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Transcript of 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è...

Page 1: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

Fondamenti di Informatica 4. Gli algoritmi4. Gli algoritmi

Corso di Laurea in Ingegneria Informatica e dell’Au tomazioneA.A. 2012-20132° SemestreProf. Giovanni Pascoschi

Gli algoritmi

22Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• AnalisiAnalisi ee programmazioneprogrammazione•• GliGli algoritmialgoritmi

�� ProprietàProprietà eded esempiesempi�� CostantiCostanti ee variabili,variabili, assegnazione,assegnazione, istruzioni,istruzioni, proposizioniproposizioni

ee predicatipredicati

Sommario

33

ee predicatipredicati•• GliGli strumentistrumenti perper lala formalizzazioneformalizzazione didi algoritmialgoritmi

�� DiagrammiDiagrammi aa blocchiblocchi

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Tramite un elaboratore si possono risolvere problemi di varianatura: emissione di certificati anagrafici, gestione dei c/c di unistituto di credito, prenotazioni aeree, ecc…

• Il problema deve essere formulato in modo opportuno, perché siapossibile utilizzare un elaboratore per la sua soluzione

• Per analisianalisi ee programmazioneprogrammazione si intende l’insieme delle attività

Analisi e programmazione #1

44

• Per analisianalisi ee programmazioneprogrammazione si intende l’insieme delle attivitàpreliminari atte a risolvere problemi utilizzando un elaboratore,dalla formulazione del problema fino alla predisposizionedell’elaboratore

�� ScopoScopo dell’analisidell’analisi �� definire un algoritmoalgoritmo�� ScopoScopo delladella programmazioneprogrammazione �� realizzarerealizzare unun programmaprogramma

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 2: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

•• AlgoritmoAlgoritmo:: elenco finito di istruzioni, che specificano leoperazioni eseguendo le quali si risolve una classe diproblemi� Un particolare problema della classe viene risolto tramite

l’apposito algoritmo sui dati che lo caratterizzanoUnUn algoritmoalgoritmo nonnon puòpuò essereessere eseguitoeseguito direttamentedirettamente

Analisi e programmazione #2

55

�� UnUn algoritmoalgoritmo nonnon puòpuò essereessere eseguitoeseguito direttamentedirettamentedall’elaboratoredall’elaboratore

•• ProgrammaProgramma:: ricetta che traduce l’algoritmo ed èdirettamente comprensibile, pertanto eseguibile, daparte di un elaboratore

•• LinguaggioLinguaggio didi programmazioneprogrammazione:: linguaggio rigoroso(piu’ vicino al linguaggio naturale) che permette laformalizzazione di un algoritmo in un programma

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• EsempioEsempio

ProblemaProblema:: Effettuare un accreditosu un c/c bancario

Programma + datiAlgoritmo + dati

ElaboratoreUomo +

Calcolatrice

Analisi e programmazione #3

66

SoluzioneSoluzione:: Utilizzare un programmache serva per predisporre ilcalcolatore all’accredito di unaqualunque cifra su un qualunquec/c; cifra da accreditare e numerodi c/c sono i dati caratteristici delproblema

AnalogieAnalogie tratra lele azioniazioni cheche devonodevonoessereessere eseguiteeseguite dada unun operatoreoperatoreumanoumano e,e, inin modomodo automatico,automatico,tramitetramite unun elaboratoreelaboratore

Calcolatrice

RisultatiRisultati

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• AlgoritmoAlgoritmo deriva dal nome del matematico arabo AlAl KhuwarizmiKhuwarizmi,vissuto nel IX secolo d.C.

• Un algoritmo è una successione di istruzioniistruzioni o passipassi chedefiniscono le operazioni da eseguire sui dati per ottenere irisultati; un algoritmo fornisce la soluzione ad una classeclasse didiproblemiproblemi

Definizione di algoritmo

77

• Lo schemaschema didi esecuzioneesecuzione di un algoritmo specifica che i passidevono essere eseguiti in sequenza, salvo diversa indicazione

• Ogni algoritmo è concepito per interagire con l’ambiente esternoper acquisire dati e comunicare messaggi o risultati; i dati su cuiopera un’istruzione sono forniti dall’esterno o sono frutto diistruzioni eseguite in precedenza

Ambiente esterno AlgoritmoRisultati o messaggi

Dati

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• ProblemaProblema:: Sia dato un mazzo da 52 carte da ordinare inmodo che le cuori precedano le quadri, che a loro voltaprecedono fiori e picche; le carte di uno stesso seme sonoordinate dall’asso al re

Esempio : ordinamento del mazzo di carte

88

ordinate dall’asso al re•• AlgoritmoAlgoritmo::

� Si suddivida il mazzo in 4 mazzetti, ciascuno costituito datutte le carte dello stesso seme

� Si ordinino le carte di ciascun mazzetto dall’asso al re� Si prendano nell’ordine i mazzetti delle cuori, quadri, fiori

e picche

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 3: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

•• ProblemaProblema:: Si vuole ricercare, all’interno di un mazzo dichiavi, quella che apre un dato lucchetto

•• AlgoritmoAlgoritmo::1) Si seleziona una chiave dal mazzo e la si marca con un

pennarello

Esempio : ricerca in un mazzo di chiavi

99

pennarello2) Si tenta di aprire il lucchetto con la chiave appena

marcata; se funziona, si va al passo 4)

3) Altrimenti, si controlla la chiave successivai. Se non è marcata, la si marca e si torna al passo 2)

ii. Viceversa, si prende atto che nel mazzo non è presentela chiave che apre il lucchetto

4) Fine della ricerca

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• ProblemaProblema:: Calcolo delle radici reali di ax2+bx+c=0

•• AlgoritmoAlgoritmo::

1) Acquisire i coefficienti a,b,c

Esempio : radici delle equazioni di 2° grado

1010

Acquisire i coefficienti a,b,c2) Calcolare ∆ = b2−4ac3) Se ∆<0 non esistono radici reali, eseguire l’istruzione 7)4) Se ∆=0, x1=x2=−b/2a, poi eseguire l’istruzione 6)5) x1=(−b+√∆)/2a, x2=(−b−√∆)/2a6) Comunicare i valori x1, x2

7) Fine

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Affinché una ricettaricetta,, un elenco di istruzioni, possa essereconsiderato un algoritmo, devono essere soddisfatti iseguenti requisiti:

�� FinitezzaFinitezza:: ogni algoritmo deve essere finito, cioè ogni singolaistruzione deve poter essere eseguita in tempo finito ed unnumero finito di volte

GeneralitàGeneralità:: ogni algoritmo deve fornire la soluzione per una

Proprietà degli algoritmi

1111

�� GeneralitàGeneralità:: ogni algoritmo deve fornire la soluzione per unaclasse di problemi; deve pertanto essere applicabile aqualsiasi insieme di dati appartenenti all’insiemeinsieme didi definizionedefinizioneo dominiodominio dell’algoritmodell’algoritmo e deve produrre risultati cheappartengano all’insiemeinsieme didi arrivoarrivo oo codominiocodominio

�� NonNon ambiguitàambiguità:: devono essere definiti in modo univoco ipassi successivi da eseguire; devono essere evitati paradossi,contraddizioni ed ambiguità; il significato di ogni istruzionedeve essere univoco per chiunque esegua l’algoritmo

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Un algoritmo deve poter essere eseguito da chiunque, senzache l’esecutore sia stato necessariamente coinvolto nell’analisidel problema o nella descrizione dell’algoritmo

• Gli algoritmi devono essere formalizzati per mezzo di appositilinguaggi, dotati di strutture linguistiche che garantiscanoprecisione e sintesi

Algoritmi

1212

precisione e sintesi

• I linguaggi naturali non soddisfano questi requisiti, infatti...

� …sono ambiguiambigui: la stessa parola può assumere significati diversiin contesti differenti (pescapesca è un frutto o un’attività sportiva;ancora: ambiti, principi, vera, venti, avanzato, mora, amare…)

� …sono ridondantiridondanti: lo stesso concetto può essere espresso inmolti modi diversi, ad esempio “somma 2 a 3”, “calcola 2+3”,“esegui l’addizione tra 2 e 3”

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 4: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

• I dati su cui opera un algoritmo sono costanticostanti evariabilivariabili

� Un dato è costante quando il suo valore non può essereaggiornato durante l’esecuzione dell’algoritmo o peresecuzioni successive

Costanti e variabili #1

1313

esecuzioni successive

� Una variabile è una coppia <nome, valore>: può essereimmaginata come una scatola sulla quale è scritto unnome e che può contenere un valore

Rappresentazione di una variabileRappresentazione di una variabile

NomeNome

ValoreValore

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Il valore di una variabile deve appartenere all’insiemeinsieme dididefinizionedefinizione, su cui si opera mediante regole opportune,specifiche dell’insieme

• Data una variabile <x,v>, x è il nomenome della variabile e v è ilsuo valorevalore attualeattuale; le variabili sono indeterminate in fase didefinizione dell’algoritmo, ma corrispondono a valori specifici

Costanti e variabili #2

1414

suo valorevalore attualeattuale; le variabili sono indeterminate in fase didefinizione dell’algoritmo, ma corrispondono a valori specificidurante ogni esecuzione

•• EsempioEsempio:: Nell’algoritmo di risoluzione delle equazioni di2°grado, a, b, c non corrispondono a nessun valore finchénon si esegue l’algoritmo per trovare le soluzioni di una dataequazione, ad esempio x2−9x−4=0; in fase di esecuzione,a=1, b=−9, c=−4; nell’istruzione ∆=b2−4ac, ∆ è la variabileche contiene il valore del discriminante

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• L’istruzione di assegnazioneassegnazione definisce il valore attuale di unavariabile, che resta inalterato fino all’assegnazione successiva

• L’assegnazione si rappresenta con il simbolo “←”:

nome_variabilenome_variabile ←←←←←←←← espressioneespressione

che si legge “assegna alla variabile nome_variabile il valore diespressione” ; l’espressione a destra di ← è costituita da

Assegnazione #1

1515

che si legge “assegna alla variabile nome_variabile il valore diespressione” ; l’espressione a destra di ← è costituita davariabili, costanti e operatori

• L’assegnazione viene così eseguita:a) si valuta l’espressione a destra di ←, sostituendo ai nomi di

variabile i loro valori attuali; il risultato deve appartenereall’insieme di definizione della variabile a sinistra di ←

b) il valore calcolato diventa il nuovo valore della variabile il cuinome appare a sinistra di ←

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• II nominomi delledelle variabilivariabili possonopossono essereessere sceltiscelti inin modomodoarbitrario,arbitrario, mama èè opportunoopportuno selezionareselezionare nominomi significativisignificativideldel contenutocontenuto delladella variabilevariabile

• È necessario rispettare la regolaregola dell’ordinamentodell’ordinamento:

Assegnazione #2

1616

• È necessario rispettare la regolaregola dell’ordinamentodell’ordinamento:

QuandoQuando unauna variabilevariabile appareappare aa destradestra didi ←← inin unaunaassegnazioneassegnazione devedeve essereessere giàgià istanziataistanziata

cioè le deve essere già stato assegnato un valore

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 5: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

•• EsempiEsempi

c4

a ← b+c b6

410 6

Prima dell’assegnazione

Assegnazione #3

1717

x ← x+3x

14

x17

Dopo l’assegnazione

Prima dell’assegnazione

4

ca10

b6

Dopo l’assegnazione

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Istruzioni operative, che producono risultati

• Istruzioni di controllo, che controllano il verificarsi di condizionispecificate e, in base al risultato del controllo, determinano il flussodi istruzioni da eseguire

• Istruzioni di salto, che alterano il normale flusso di esecuzionesequenziale delle istruzioni di un algoritmo, specificando quale siala successiva istruzione da eseguire

Le istruzioni #1

1818

la successiva istruzione da eseguire

� nelle istruzioni di saltosalto condizionatocondizionato, l’effettiva esecuzione del salto èlegata al verificarsi di una condizione specificata

� l’istruzione di saltosalto incondizionatoincondizionato produce sempre un salto

• Istruzioni di ingresso/uscita, che specificano come debbaessere effettuata una trasmissione di dati o messaggi fral’algoritmo e l’ambiente esterno

• Istruzioni di inizio/fine esecuzione, che indicano l’inizio/la finedell’algoritmo

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• EsempioEsempio:: CCalcoloalcolo delledelle radiciradici didi equazioniequazioni didi 22°° gradogrado

a) “acquisire i coefficienti a, b, c” è un’istruzione di lettura(ingresso)

b) “calcolare ∆=b2−4ac” è un’istruzione operativa

“se ∆=0, x =x =−b/2a” è un’istruzione di controllo: l’istruzione

Le istruzioni #2

1919

c) “se ∆=0, x1=x2=−b/2a” è un’istruzione di controllo: l’istruzionedi assegnazione x1=x2=−b/2a viene eseguita solo se ∆=0

d) “comunicare i valori x1, x2” è un’istruzione di scrittura (uscita)

e) “eseguire l’istruzione 6)” è un’istruzione di salto incondizionato

f) “se ∆<0 eseguire l’istruzione 7)” è un’istruzione di saltocondizionato, perché l’istruzione 7) è la prossima istruzione daeseguire solo se ∆<0

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Una proposizione è un costrutto linguistico del quale sipuò asserire o negare la veridicità

•• EsempiEsempi1) “Roma è la capitale della Gran Bretagna” falsafalsa2) “3 è un numero intero dispari” veravera

Proposizioni e predicati #1

2020

2) “3 è un numero intero dispari” veravera

• Il valorevalore didi veritàverità di una proposizione è il suo essere vera ofalsa

• Una proposizione è un predicatopredicato se il suo valore di veritàdipende dall’istanziazione di alcune variabili

•• EsempiEsempi1) “la variabile età è minore di 30”2) “la variabile base è maggiore della variabile altezza”

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 6: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

• La valutazione di un predicato è l’operazione chepermette di determinare se il predicato è vero o falso,sostituendo alle variabili i loro valori attuali

• I valori vero e falso sono detti valori logici o booleani

Proposizioni e predicati #2

2121

• Proposizioni e predicati possono essere espressiconcisamente per mezzo degli operatori relazionali:

= (uguale) ≠ (diverso)

> (maggiore) < (minore)

≥ (maggiore o uguale) ≤ (minore o uguale)

• I predicati che contengono un solo operatore relazionalesono detti semplicisemplici

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Dato un predicato pp, il predicato notnot pp, detto opposto onegazione logica (NOT) di pp, ha i valori di verità oppostirispetto a pp

• Dati due predicati pp e qq, la congiunzione logica (AND) ppandand qq è un predicato vero solo quando pp e qq sono entrambiveri, e falso in tutti gli altri casi

• Dati due predicati pp e qq, la disgiunzione logica (OR) pp oror qq

Proposizioni e predicati #3

2222

• Dati due predicati pp e qq, la disgiunzione logica (OR) pp oror qqè un predicato falso solo quando pp e qq sono entrambi falsi, evero in tutti gli altri casi

• I predicati nei quali compare almeno un operatore logico, notnot,andand, oror, sono detti composti

• La tabella di verità di un predicato composto specifica ilvalore del predicato per ognuna delle possibili combinazioni deisuoi argomenti

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• EsempioEsempionotnot (base > altezza)

è vero solo quando il valore di base è minore o uguale del valore dialtezza

età > 30 andand età < 50

Proposizioni e predicati #4

2323

età > 30 andand età < 50

è vero solo quando il valore di età è compreso tra 30 e 50 (esclusi)

base > altezza oror base > 100

è vero quando il valore di base è maggiore del valore di altezza, oquando il valore di base è maggiore di 100, o quando entrambe lecondizioni sono verificate

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

DIAGRAMMI A BLOCCHI

Diagrammi a blocchi

2424

DIAGRAMMI A BLOCCHI

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 7: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

• Il linguaggio dei diagrammidiagrammi aa blocchiblocchi è un possibileformalismo per la descrizione di algoritmi

• Il diagramma a blocchi, o flowchartflowchart, è una rappresentazionegrafica dell’algoritmo

• Un diagramma a blocchi descrive il flussoflusso delle operazioni daeseguire per realizzare la trasformazione, definita

I diagrammi a blocchi #1

2525

eseguire per realizzare la trasformazione, definitanell’algoritmo, dai dati iniziali ai risultati

• Ogni istruzione dell’algoritmo viene rappresentata all’internodi un bloccoblocco elementareelementare, la cui forma grafica è determinatadal tipo di istruzione

• I blocchi sono collegati tra loro da lineelinee didi flussoflusso, munite difrecce, che indicano il susseguirsi di azioni elementari

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Blocchi elementariBlocchi elementari

XX

leggi/scrivileggi/scrivibeginbeginAA

I diagrammi a blocchi #2

I/O

2626

endend

Blocco finaleBlocco finale

CC

Blocco di controllo

Blocco di lettura/scritturaBlocco di lettura/scritturaBlocco inizialeBlocco iniziale

Blocco azione Blocco azione

falsofalsoverovero

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Un diagrammadiagramma aa blocchiblocchi è un insieme di blocchielementari composto da:

a) un blocco iniziale

b) un blocco finale

I diagrammi a blocchi #3

2727

b) un blocco finale

c) un numero finito n (n≥1) di blocchi di azione e/o diblocchi di lettura/scrittura

d) un numero finito m (m≥0) di blocchi di controllo

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• I programmatori inesperti tendono ad “aggrovigliare” ilprogramma introducendo numerosi salti privi di regole(spaghettispaghetti programmingprogramming)

• L’analisianalisi strutturatastrutturata favorisce, viceversa, la descrizione dialgoritmi facilmente documentabili e comprensibili

• I blocchi di un diagramma a blocchi strutturato sono collegati

Analisi strutturata #1

2828

• I blocchi di un diagramma a blocchi strutturato sono collegatisecondo i seguenti schemi di flusso:�� SchemaSchema didi sequenzasequenza – più schemi di flusso sono eseguiti in

sequenza�� SchemaSchema didi selezioneselezione – un blocco di controllo subordina

l’esecuzione di due possibili schemi di flusso al verificarsi di unacondizione

�� SchemaSchema didi iterazioneiterazione – si itera l’esecuzione di un dato schemadi flusso

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 8: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

• Ovvero: un diagrammadiagramma aa blocchiblocchi strutturatostrutturato è undiagramma a blocchi nel quale gli schemi di flusso sonostrutturatistrutturati

• Uno schema di flusso è strutturato quando soddisfa unadelle seguenti proprietà…

1) …è uno schema elementare o uno schema di sequenza

Analisi strutturata #2

2929

…è uno schema elementare o uno schema di sequenza

S1, S2,…, Sn schemidi flusso strutturati

end

A

begin

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

2) …è uno schema di selezione

Analisi strutturata #3

3030

� Nel primo caso, lo schema S viene eseguito solo se lacondizione C è vera; se C è falsa, non viene eseguitaalcuna azione (ad una via)

� Nel secondo caso, viene eseguito solo uno dei due schemiSv o Sf, in dipendenza del valore di verità della condizione

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

3) …è uno schema di iterazione

Analisi strutturata #4

pre-condizionale post-condizionale

3131

� Nel primo caso, S può non venire mai eseguito, se la condizione Cè subito falsa; nel secondo caso, S viene eseguito almeno una volta

� Quando lo schema S viene eseguito finché la condizione C simantiene vera si parla di iterazioneiterazione perper verovero; si ha un’iterazioneiterazioneperper falsofalso quando S viene eseguito finché C è falsa

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

pre-condizionale post-condizionale

•• OgniOgni diagrammadiagramma aa blocchiblocchi nonnon strutturatostrutturato èètrasformabiletrasformabile inin unun diagrammadiagramma aa blocchiblocchi strutturatostrutturatoequivalenteequivalente

• Due diagrammi a blocchi sono equivalentiequivalenti se, operandosugli stessi dati, producono gli stessi risultati

• L’uso dell’analisi strutturata garantisce:

Analisi strutturata #5

3232

• L’uso dell’analisi strutturata garantisce:� facilità di comprensione e modifica dei diagrammi a

blocchi� maggiore uniformità nella descrizione degli algoritmi

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 9: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

• Inoltre...

� È stato dimostrato (teorema fondamentale dellaprogrammazione di Bohm−−−−Jacopini, 1966) che ogniprogramma può essere codificato riferendosi esclusivamentead un algoritmo strutturato e quindi attenendosi alle trestrutture fondamentali:

Analisi strutturata #6

3333

SequenzialeSequenziale IterativaIterativa CondizionaleCondizionale

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Il teorema di Bohm−−−−Jacopini ha un interesse soprattuttoteorico, in quanto i linguaggi di programmazione tendono adotarsi di più tipi di istruzioni, non sempre “rispettose” delteorema, ma utili per la realizzazione di programmi di facilescrittura e comprensione

Analisi strutturata #7

3434

scrittura e comprensione

• Il suo valore consiste nella capacità di fornire indicazionigenerali per le attività di progettazione di nuovi linguaggi estrategie di programmazione

• In effetti, esso ha contribuito alla critica dell’usosconsiderato delle istruzioni gogo toto e alla definizione dellelinee guida della programmazione strutturata, sviluppatenegli anni `70

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

� In un diagramma strutturato non apparirà mai una istruzionedi salto incondizionato: i tre schemi fondamentali possonoessere concatenaticoncatenati, uno di seguito all’altro, o nidificatinidificati, unodentro l’altro; non possono in nessun caso essere “intrecciati”o “accavallati”

Analisi strutturata #8

3535

CorrettoCorretto

SbagliatoSbagliato

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Diagramma a blocchi per laselezione, in un mazzo dichiavi, di quella che apre unlucchetto

Esempio

3636Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 10: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

•• NoteNote::

•• ProblemaProblema:: Calcolare la somma ditre interi consecutivi

Gli algoritmi iterativi #1

3737

•• NoteNote::

� La variabile sommasomma(totalizzatore) è uncontenitore di somme parziali,finché non si ottiene la sommatotale richiesta

� La soluzione del problema vieneraggiunta eseguendo azionisimili per un numero opportunodi volte

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Il ciclo o loop è uno schema di flusso per descrivere, in modoconciso, situazioni in cui un gruppo di operazioni deve essere ripetutopiù volte

• La condizione di fine cicloviene verificata ogni volta che siesegue il ciclo; se la condizioneassume valore vero (falso), leistruzioni vengono reiterate,

Gli algoritmi iterativi #2

3838

istruzioni vengono reiterate,altrimenti si esceesce daldal ciclociclo

• La condizione di fine ciclo puòessere verificata prima o dopol’esecuzione dell’iterazione

• Le istruzioni diinizializzazione assegnanovalori iniziali ad alcune variabili(almeno a quella che controlla lacondizione di fine ciclo)

Ciclo con controllo in codaCiclo con controllo in codaCiclo con controllo in testaCiclo con controllo in testa

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• ProblemaProblema:: Calcolare la somma ditre interi consecutivi

Gli algoritmi iterativi #3

3939

•• NoteNote::

� La fase di inizializzazione riguardala somma e l’indice del ciclo

� Il controllo di fine ciclo vieneeffettuato in coda (iterazione perfalso)

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

• Un ciclo è definitodefinito quando è noto a priori quante volte deveessere eseguito; un ciclo definito è detto ancheenumerativoenumerativo (ciclo for)

• Un contatorecontatore deldel ciclociclo tiene memoria di quante iterazionisono state effettuate; può essere utilizzato in due modi:

Gli algoritmi iterativi #4

4040

sono state effettuate; può essere utilizzato in due modi:

�� incrementoincremento deldel contatorecontatore:: il contatore viene inizializzato ad unvalore minimo (ad es. 0 o 1) e incrementato ad ogniesecuzione del ciclo; si esce dal ciclo quando il valore delcontatore eguaglia il numero di iterazioni richieste

�� decrementodecremento deldel contatorecontatore:: il contatore viene inizializzato alnumero di iterazioni richiesto e decrementato di uno ad ogniiterazione; si esce dal ciclo quando il valore del contatoreraggiunge 0 (o 1)

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 11: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

• Il ciclo for puo’ essere rappresentato anche con un unicoblocco� esempio :

i=0 a NPasso 1

Gli algoritmi iterativi #5

Passo 1

4141Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

……

• Un ciclo è indefinitoindefinito quando non è possibile conoscerea priori quante volte verrà eseguito

• La condizione di fine ciclo controlla il valore di una opiù variabili modificate da istruzioni che fanno parte

Gli algoritmi iterativi #5

4242

più variabili modificate da istruzioni che fanno partedell’iterazione

• Comunque, un ciclo deve essere eseguito un numerofinito di volte, cioè si deve sempre verificare laterminazioneterminazione dell’esecuzione del ciclo

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• ProblemaProblema:: Calcolo della mediadi un insieme di numeri; nonè noto a priori quanti sono inumeri di cui deve esserecalcolata la media

Gli algoritmi iterativi #6

4343

calcolata la media� I numeri vengono letti uno

alla volta fino a che non siincontra un x=0, che segnalala fine dell’insieme

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

•• ProblemaProblema:: Somma di unasequenza di numeri� Indicando con ai il generico

elemento da sommare, la formulagenerale è

Ancora esempi ...

4444

generale èS = a1+ a2 +…+ an

� La variabile n conta quante voltesi ripete l’iterazione: n vienedecrementata di 1 ad ogniiterazione ed il ciclo terminaquando n vale 0

� La variabile A è usata per l’inputdegli ai, S per le somme parziali etotale

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

Page 12: 4 Gli algoritmi - primeeng.it 2013/4 Gli algoritmi.pdf · • La valutazione di un predicato è l’operazione che ... dell’iterazione •Comunque,unciclodeveessereeseguitounnumero

Gli algoritmi

�Analisi e programmazione�Costanti e variabili�Diagrammi a blocchi

Sommario della lezione

4545

�Algoritmi strutturati (Bohm Jacopini)

Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni

�Domande?

Fine della lezione

4646Fondamenti di Informatica – A.A. 2012-2013 a cura di Pascoschi Giovanni