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

Transcript
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