Algoritmo - Dipartimento di Informatica

FondamentidiInformatica
Problemi,SoluzioniedAlgoritmi
P ro f. C h r i st i a n E s p o s i to
C o rs o d i L a u re a i n I n g e g n e r i a M e c ca n i ca e G e st i o n a l e ( C l a s s e I )
A.A.2016/17
Problemi,SoluzioniedAlgoritmi
ComeInstruire i Calcolatori a
Risolvere Problemi
• Glielaboratorisonostrumentiperrisolvere(oaiutarea
risolvere)problemibasatisuinformazioniedati
• Macomeciòavviene?
1. Abbiamobisognodicodificareopportunamenteinformazioniedati
2. Abbiamobisognodiimpartirelegiusteistruzioniperrisolvere
correttamenteiproblemi
Problemi,SoluzioniedAlgoritmi
02/60
RelazionetraRealtàeModello:
ComeModellareunProblema
Mondo Reale
Ricerca della
soluzione
Costruzione
modello
Modello
re
tf
ft
12
13
tt
14
15
F=m×a
Interpretazione
della soluzione
Problemi,SoluzioniedAlgoritmi
03/60
RisolvereunProblema
1.Scegliereastrazione definendouninsieme
didatirilevantichecaratterizzanolarealtà
Risolvere unProblema
2.Scegliererappresentazione dei dati
3.Individuareunprocedimentoadeguato
(Algoritmo epoiProgramma)
4.Scomporreeventualmenteil
procedimento insotto-procedimenti
Problemi,SoluzioniedAlgoritmi
04/60
IlTermineAlgoritmo:
Etimologia
• DerivadalmatematicoAraboMuḥammad ibn Mūsā al-Khwārizmī (c.
780-850),autoredeltestoAl-jabrw’al-muqabâla (dacuiancheiltermine
Algebra)
Problemi,SoluzioniedAlgoritmi
05/60
Algoritmi:unpo’diStoria
• Algoritmiditiponumericofuronostudiatidamatematicibabilonesie
indianipiùdi3000annifa
• Algoritmiinusofinoatempirecentifuronostudiatidaimatematici
grecinel500a.C.
• AlgoritmodiEuclide perilMassimoComunDivisore
• Algoritmigeometrici(calcoloditangenti,sezionidiangoli,etc)
• Etc
Problemi,SoluzioniedAlgoritmi
06/60
GliAlgoritminelTrattamento
dell’Informazione– 1/3
• Unalgoritmoconsentedirealizzareunparticolare
trattamentodell’informazioneopiùingeneraledirisolvere
unospecificoproblema
•
•
•
•
Calcolarelasommadiduenumeri
Calcolarelalunghezzadell’ipotenusadiuntriangolorettangolo
Risolvereun’equazionedisecondogrado
Maanche…
Problemi,SoluzioniedAlgoritmi
07/60
GliAlgoritminelTrattamento
dell’Informazione– 2/3
• TrasmissionedatiinInternet
• Comesigestisceinpraticailflussodidatinellarete?
• RicercanelWEB
• ComefaGoogleatrovareleinformazioninelWEB?
• Bioinformatica
• ComeilDNAdeterminalenostrecaratteristiche?
• Processieconomici
• Comesigestisconoleasteon-linesuEbay?
• ComesieffettualacompravenditadiazionisuInternet?
• Organizzazionedirisorseeservizi
• Comesischedulanoivolidelleaerolinee?
• Comesiassegnanolefrequenzenellecelledellereticellulari?
• Etc
Problemi,SoluzioniedAlgoritmi
08/60
GliAlgoritminelTrattamento
dell’Informazione– 3/3
• L’esperienzaquotidianasuggerisceinfinitiesempidi
algoritmi
• Molteazionichesvolgiamoabitualmentepossonoessere
modellatemediantealgoritmi
•
•
•
•
•
•
Istruzionidimontaggio
Preparazionedelcaffè
Prelievobancomat
Preparazionediunricetta
Indicazioniperunlavoroamaglia
Etc
Problemi,SoluzioniedAlgoritmi
09/60
Algoritmo:Definizioni
• Definizione1: proceduradicalcolobendefinita,cheprendeuninsieme
divaloricomeinputeproduceuninsiemedivaloricomeoutput
• Definizione2: sequenzadiazionielementaricheconsentedi
trasformareidatiinizialineirisultatifinaliattraversounnumerofinitodi
passinonambigui
• Note
• Insiemedidatiinizialibendefinito
• Sequenzadipassipuòessereeseguitadaunesecutore(ades.calcolatore)
Dati iniziali
ALGORITMO
Dati finali (soluzione)
Problemi,SoluzioniedAlgoritmi
10/60
Esempio:Algoritmoper
prenderel’Automobile
• Algoritmo
1.
2.
3.
4.
5.
6.
7.
8.
9.
Aprirel’auto
Aprirelaportiera
Sedersialpostodiguida
Allacciarelacintura
Schiacciarelafrizione
Avviareilmotore
Inserirelaprimamarcia
Togliereilfrenoamano
Rilasciare“delicatamente”lafrizioneperpartire
Osservazione: ipassisonoeseguitiinsequenzael’ordinedelleistruzioni
èessenzialeperlacorrettezza
Problemi,SoluzioniedAlgoritmi
11/60
Algoritmi:Esecutoree
Linguaggio– 1/3
• Unalgoritmopresupponelapresenzadiqualcuno(oqualcosa)ingrado
dieseguirlo,chiamatoesecutore
• Ininformatical’esecutoreèilcalcolatore
• L’algoritmoviene“letto”dall’esecutore
• L’esecutore,partendodaidatiininput,esegue(inunbenprecisoordine)
tutteleistruzionidell’algoritmostesso,ottenendoalterminedellapropria
esecuzioneidatiinoutput
• Peressereeseguito,l’algoritmodeveessereformulatoinunlinguaggio
comprensibiledall’esecutore
• Unesecutorepuòeseguireunalgoritmoformulatoinunlinguaggiochenon
conosce,apattochel’algoritmostessosiapreventivamentetradottoinun
linguaggiocheinvecegliènoto
Problemi,SoluzioniedAlgoritmi
12/60
Algoritmi:Esecutoree
Linguaggio– 2/3
• L’algoritmodeve
• Prevederesoltantoistruzionicherichiedonoall’esecutoredieffettuare
operazionielementari
• Operazionicheeglisacompieresenzabisognodiulteriorispecificazioni
• Essereformulato in unlinguaggiononambiguo,incuicioèogniistruzione
caratterizziunivocamenteunadelleoperazionichel’esecutoreèingradodi
compiere
• Specificaresenzaambiguitàl’ordinediesecuzione delleistruzioni,cui
l’esecutoredeveattenersiscrupolosamente
Problemi,SoluzioniedAlgoritmi
13/60
Algoritmi:Esecutoree
Linguaggio– 3/3
• L’esecuzionediunalgoritmodapartediun“esecutore”(uomoo
macchina)sitraduceinunasuccessionedioperazioni chevengono
effettuateneltempo,evocandounprocessosequenziale
• Seriedieventicheoccorronounodopol’altro,ognunoconuninizioeduna
finebenidentificabile
• Unalgoritmo puòrichiederel’esecuzionedialtrialgoritmi
precedentementespecificatiall’esecutore
Istruzione
Istruzione
Istruzione
Istruzione
Istruzione
Problemi,SoluzioniedAlgoritmi
Istruzione
14/60
Algoritmi:Caratteristiche
Principali– 1/2
• L’algoritmodeveessereformulatoinunnumerofinitodi
istruzionie deveterminare, fornendoidatiinoutput,inun
tempofinito
• L’algoritmopuòessere
• Deterministico: eseguendolostessoalgoritmopiùvoltesuglistessidati
diinput,l’esecutoredevegeneraresempreglistessidatidioutput
• Probabilistico: eseguendolostessoalgoritmopiùvoltesuglistessidatidi
input,l’esecutoredevegeneraredatidioutputsemprediversi
• Noicioccuperemosolodialgoritmideterministici
• Sepossiamospecificareunalgoritmoallorapossiamo
automatizzarelasoluzione
Problemi,SoluzioniedAlgoritmi
15/60
Algoritmi:Caratteristiche
Principali– 2/2
• Unalgoritmodevepossedereleseguentiproprietà
• Correttezza:produrresempreunasoluzione,apattocheidatiin
inputsianovalidi
• Determinatezza: utilizzareleistruzionidibasefornitedall’esecutore
• Efficacia: risolvereilproblematramitelacombinazionediistruzioni
dibase
• Efficienza: risolvereilproblemausandolaminorquantitàpossibiledi
risorsefisiche
• Tempodiesecuzione,memoria,etc
• Unalgoritmopuòessereespressoinvarieforme
• Linguaggiumani,pseudo-codici,linguaggigrafici,linguaggidi
programmazione,etc
Problemi,SoluzioniedAlgoritmi
16/60
Algoritmi:FasidelProcessodi
Creazione
Problemi,SoluzioniedAlgoritmi
17/60
ComeRappresentareun
Algoritmo
• Unasoluzionealgoritmicaadunproblema,peressere
eseguitadauncalcolatore,deveessererappresentatain
manieraformale
• Formale: descrizioneinterminidisequenzadioperazionielementari
• Esistononumerosistrumentiperrappresentareuna
soluzioneinmodoformale,ipiùutilizzatisono
• Pseudocodici(testuale)
• Diagrammidiflusso(grafico)
Problemi,SoluzioniedAlgoritmi
18/60
Pseudocodici
• Nellarappresentazionedeglialgoritmiconvieneastrarsi
dallospecificolinguaggiodiprogrammazione
• Perfarequestosiusaunlinguaggiodettopseudocodice
• Nellopseudocodice
• Siimpieganometodiespressivipiùchiarieconcisirispettoai
linguaggidiprogrammazionereali
• Sipossonousarefrasiinlinguaggionaturalepersintetizzare
proceduretalvoltacomplesse,manonambigue
Problemi,SoluzioniedAlgoritmi
19/60
Pseudocodici:Esempio1
• Rappresentazionemediantepseudocodicediunpossibilealgoritmoperla
preparazionedeltè(N.B.esecutoreumano)
INIZIOALGORITMOpreparareUnaTazzaDiTè
1.
2.
3.
4.
5.
6.
7.
8.
9.
Collegareilbollitoreallacorrenteelettrica
Metterelabustinaditèinunatazza
Metterel’acquanelbollitore
Accendereilbollitore
Aspettarel’ebollizionedell’acqua
Aggiungerel’acquaallatazza
Rimuoverelabustinaditèconilcucchiaio/forchetta
Aggiungerelattee/ozucchero
Servire
FINEALGORITMOpreparareUnaTazzaDiTè
Problemi,SoluzioniedAlgoritmi
20/60
Pseudocodici:Esempio1
• Rappresentazionemediantepseudocodicediunpossibilealgoritmoperla
preparazionedeltè(N.B.esecutoreumano)
NotazioneinCamelCase
INIZIOALGORITMOpreparareUnaTazzaDiTè
1.
2.
3.
4.
5.
6.
7.
8.
9.
Collegareilbollitoreallacorrenteelettrica
Metterelabustinaditèinunatazza
Metterel’acquanelbollitore
Accendereilbollitore
Aspettarel’ebollizionedell’acqua
Aggiungerel’acquaallatazza
Rimuoverelabustinaditèconilcucchiaio/forchetta
Aggiungerelattee/ozucchero
Servire
FINEALGORITMOpreparareUnaTazzaDiTè
Problemi,SoluzioniedAlgoritmi
21/60
Pseudocodici:Esempio2
• Problema: creareunalgoritmochetrovailpiùgrandeelementodellalista
diinputA contenente10 elementi
• Input: A (unalistadi10 numeri)
• Output: max (l’elementopiùgrandeinA)
• IlprimoelementodiAèrestituitodaA(1)
INIZIOALGORITMOtrovaMax
max = A(1)
Per i che va da 2 a 10
Se A(i) > max
max = A(i) //Istruzione eseguita se A(i) > max
Incrementa i
restituisci max
FINEALGORITMOtrovaMax
Indicei
A
1
2
3
4
5
6
7
8
9
10
32
15
8
5
12
9
63
3
102
1
Problemi,SoluzioniedAlgoritmi
22/60
DiagrammidiFlusso– 1/3
• Perrealizzareunalgoritmoènecessario
• Individuareidati iningresso edinuscita
• Individuareunprocedimentoadeguato
• Scomporreilprocedimentoinunasequenza diazionielementari enon
ambigue
• Permeglioaffrontarel’ultimopuntosifaspessoricorsoaidiagrammidi
flusso (oflow-chart)
• Strumentigrafici perrappresentare ilflussologico dioperazioni cheportano
allarisoluzione diunproblema
• Costituisconounlinguaggio moltoutileperdescrivere glialgoritmi
Problemi,SoluzioniedAlgoritmi
23/60
DiagrammidiFlusso– 2/3
• Ilflusso diesecuzione puòessererappresentatograficamente conun
diagrammadiflusso
•
•
•
•
Sisviluppagraficamentesuduedimensioni
Sibasasupochisimboli
Èunlinguaggiouniversale
Elimina leambiguità
Problemi,SoluzioniedAlgoritmi
24/60
DiagrammidiFlusso– 3/3
• Undiagrammadiflussoècompostoda
• Blocchielementari
• Descrivonoazioniedecisioni
• Archiorientati
• Colleganoivariblocchiedescrivonolasequenzadisvolgimentodelleazioni
• Iblocchielementarisono
•
•
•
•
•
•
BloccodiInizio
BloccodiFine
BloccodiConnessione
BloccodiAzioneGenerica
BloccodiAzionediI/O
BloccodiDecisioneBinaria (dettaancheCondizionale oppureADueVie)
Problemi,SoluzioniedAlgoritmi
25/60
DiagrammidiFlusso:Blocchidi
InizioeFine
• Unalgoritmo(ediconseguenzaunasuarappresentazionegrafica)deve
avereuninizio edunafine
Inizio
Fine
• Tral’inizioelafinecidevesempreesserealmenoun’istruzione
Problemi,SoluzioniedAlgoritmi
26/60
DiagrammidiFlusso:Bloccodi
Connessione
• Larisoluzionediunproblemaconsistenell’esecuzioneordinatadiuna
sequenzadioperazioni
• L’ordine nell’esecuzione delleistruzionièfondamentale
• Neiflow-chartègarantitodall’orientamento dellefrecce checolleganoi
blocchi
Problemi,SoluzioniedAlgoritmi
27/60
DiagrammidiFlusso:Blocchidi
AzioneGenericaedI/O
Azione
generica
Azione
diI/O
Problemi,SoluzioniedAlgoritmi
28/60
DiagrammidiFlusso:Bloccodi
DecisioneBinaria(oCondizionale)
• Possonoesserepresentiistruzionicondizionali,lacuiesecuzione
dipendecioèdascelteeffettuateinbaseaidati
• Concettualmente,possiamoimmaginarecheilflussodiesecuzionesi
ramifichi
• Inbaseadunacondizione vienedecisoseeseguireun’operazioneoppure
un’altra
?
Diramazione
(condizionale)
Problemi,SoluzioniedAlgoritmi
29/60
Esempio
Start
LeggiunvaloreA
si
A>=0?
no
StampaA
Stampa-A
Stop
Stop
Problemi,SoluzioniedAlgoritmi
30/60
RappresentazioneAlternativa
deiBlocchiElementari
START
EN D
Inizio
Fine
Sì
Pre d i c a t o
Selezione a
due vie
No
PROCESS
I/O
Ope r az ioni di
ingresso/
uscita
Elabor az ione
SUB-PROCESS
Sottoprogramma
Problemi,SoluzioniedAlgoritmi
31/60
Pseudocodicevs.Diagrammi
diFlusso
• Pseudocodice
• Vantaggi
• Immediato
• Svantaggi
• Menoastratto
• Interpretazionepiùcomplicata
• Diagrammidiflusso
• Vantaggi
• Piùintuitiviperchégrafici
• Piùastratti
• Svantaggi
• Richiedonoapprendimentodellafunzionedeivaritipidiblocco
Problemi,SoluzioniedAlgoritmi
32/60
StrutturediControllo:Controllare
l’OrdinedelleIstruzioni– 1/4
SELEZIONESEMPLICE
Problemi,SoluzioniedAlgoritmi
33/60
StrutturediControllo:Controllare
l’OrdinedelleIstruzioni– 2/4
SELEZIONEADUEVIE
Problemi,SoluzioniedAlgoritmi
34/60
StrutturediControllo:Controllare
l’OrdinedelleIstruzioni– 3/4
CICLOACONDIZIONEINIZIALE
Problemi,SoluzioniedAlgoritmi
35/60
StrutturediControllo:Controllare
l’OrdinedelleIstruzioni– 4/4
CICLOACONDIZIONEFINALE
Problemi,SoluzioniedAlgoritmi
36/60
ALGORITMOPERLASOMMADIN NUMERI
Problemi,SoluzioniedAlgoritmi
37/60
ALGORITMOPERPREPARARELAFRITTATA
Problemi,SoluzioniedAlgoritmi
38/60
ALGORITMOPERLAMEDIASUN NUMERI
Problemi,SoluzioniedAlgoritmi
39/60
AlgoritmoPOW:BaseBelevata
all’esponenteE
b
2
e
4
ris = ris * b
1
e>0
4 > 0 (SI)
2
3
2
3 > 0 (SI)
2
2
4
2 > 0 (SI)
2
1
8
1 > 0 (SI)
2
0
16
0 > 0 (NO)
Problemi,SoluzioniedAlgoritmi
40/60
Esempio:Algoritmopercalcolare
ilmassimotra2numerix ey
1.
Leggiilvaloredix dall’esterno
2.
Leggiilvalorediy dall’esterno
3.
Calcolaladifferenzad frax ey
(d=x-y)
4.
Sedèmaggioredi0 vaialpasso
6., altrimentiproseguiin
sequenza
5.
Stampa“ilmassimoè…”seguito
dalvalorediy evaia7.
6.
Stampa“ilmassimoè…”seguito
dalvaloredix
7.
Terminal’esecuzione
Problemi,SoluzioniedAlgoritmi
=
41/60
AlgoritmieProgrammi
• Algoritmo: sequenzadiazionipersvolgereilcalcolo
• Programma: algoritmoespressoinnotazioneformale(linguaggiodi
programmazione)
• CreazioneProgramma
• Fase1 =Algoritmo
• Fase2 =Implementazionedell’algoritmoinundatolinguaggio(di
programmazione)
Problemi,SoluzioniedAlgoritmi
42/60
ProcessoperlaCreazionedi
unAlgoritmo– 1/5
• Talvoltailprocessoperlarisoluzionediunproblemaèfisso
• Semprelostessoadognidiversaesecuzione
• Esempio: algoritmopercalcolarel’importodiunafattura
1. Cercal’aliquotaIVAsullatabella
2. Moltiplical’importonettoperl’aliquotatrovata
3. Sommailrisultatoall'importonetto
• Questoalgoritmoècompostodatreistruzioni
• Chedevonoessereeseguiteinsequenza
Problemi,SoluzioniedAlgoritmi
43/60
ProcessoperlaCreazionedi
unAlgoritmo– 2/5
• Altrevoltelostessoalgoritmopuòportareapiùprocessi
sequenzialidifferenti
• Asecondadellecondizioniiniziali
• Esempio: ilprecedentealgoritmo,quandoèrichiestodidover
considerarelapossibilitàchelamerceinesamenonsiasoggetta
adIVA,diventa
• SE lamercedafatturareèsoggettaadIVA ALLORA
1. CercalacorrettaaliquotaIVAsullatabella
2. Moltiplical’importoperl’aliquotatrovata
3. Sommailrisultatoall’importonetto
• ALTRIMENTI
4. Tienicontosolodell’importodipartenza
Problemi,SoluzioniedAlgoritmi
44/60
ProcessoperlaCreazionedi
unAlgoritmo– 3/5
• Osservazione: nell’esempiovistoinprecedenza,ilprocessosequenziale
nonèfissomadipendedaidatidaelaborare,inparticolaredaltipodi
mercedafatturare
• L’algoritmodescriveuninsiemecostituitodaduesequenzediesecuzione
diverse
Problemi,SoluzioniedAlgoritmi
45/60
ProcessoperlaCreazionedi
unAlgoritmo– 4/5
• Esempio: algoritmopereffettuareunatelefonata
1.
2.
3.
Sollevailricevitore
Componiilnumero
SE qualcunorisponde ALLORA
• Conducilaconversazione
4.
ALTRIMENTI
• Deponiilricevitoree
• Ripetil’interoprocedimento,apartiredalpunto1.
Problemi,SoluzioniedAlgoritmi
46/60
ProcessoperlaCreazionedi
unAlgoritmo– 5/5
• Unalgoritmo puòesserevistocomeuntestoingradodidescrivere un
insiemedisequenzediesecuzione
• L’algoritmopereffettuareunatelefonatapotrebbeavereunprocesso
ciclicochenonterminamai
• L’interlocutorenonrispondemaialtelefono
Problemi,SoluzioniedAlgoritmi
47/60
Esempio:ProdottodidueNumeri
medianteAddizioniSuccessive– 1/5
• 7 * 3 =21
• 7 èdettomoltiplicando
• 3 èdettomoltiplicatore
• UtilizzandoilmetododelleAddizioniSuccessive,lamoltiplicazionepuò
essereespressacome
• 7 + 7 + 7 =21
• L’algoritmopotrebbeesserecostituitosemplicementedalseguente
testo
• “Sisommiilmoltiplicandoasestessounnumerodivolteugualealvalore
delmoltiplicatore”
Problemi,SoluzioniedAlgoritmi
48/60
Esempio:ProdottodidueNumeri
medianteAddizioniSuccessive– 2/5
• Specifichiamoconmaggioredettaglio leoperazionirichiesteevitandoi
costruttiambigui
• Adesempiopotremmoscrivere
1.
2.
3.
Sisommiilmoltiplicando asestesso,esidecrementidiunoilvaloredel
moltiplicatore
Sisommiancorailmoltiplicando alvalore ottenutodallaprecedente
somma,esidecrementidinuovoilvalore ottenutodallaprecedente
sottrazione
Siripetailprocedimentofinoache,perdecrementisuccessivi,il
moltiplicatore nonraggiungailvalorezero
Problemi,SoluzioniedAlgoritmi
49/60
Esempio:ProdottodidueNumeri
medianteAddizioniSuccessive– 3/5
1.
7+ 0 = 7(Val.prec.somma)
3 – 1 = 2(Val.prec.sottrazione)
2.
7 + 7 = 14(Val.prec.somma)
2 – 1 = 1 (Val.prec.sottrazione)
3.
7 +14=211 – 1 = 0 (Val.prec.sottrazione)
Sequenzadioperazioni
effettuatesulmoltiplicando
Sequenzadioperazioni
effettuatesulmoltiplicatore
Problemi,SoluzioniedAlgoritmi
50/60
Esempio:ProdottodidueNumeri
medianteAddizioniSuccessive– 4/5
• Osservazione: perevitareambiguitàespecificaredivoltainvoltadi
qualevaloresistaparlando,sièstaticostrettiadusareleespressioni
• “valoreottenutodallaprecedentesomma”
• “valoreottenutodallaprecedentesottrazione”
• Perdistingueretalivalorisiricorreasimbolioidentificatori(detti
variabili)perriferirsisenzaambiguità,divoltainvolta,alvalore
desiderato
Problemi,SoluzioniedAlgoritmi
51/60
Esempio:ProdottodidueNumeri
medianteAddizioniSuccessive– 5/5
• Algoritmo
1. SiaM ilvaloredelmoltiplicando,N ilvaloredelmoltiplicatoreed
M1 ilrisultato(inizialmenteugualeazero)
2. SiripetanoleseguentioperazionifinoacheilvalorediN non
diventiugualea0
• SisommiilvaloredelmoltiplicandoM alvalorediM1 esichiamiil
risultatoancoraM1
• Sisottragga1dalvalorediN,esichiamiilrisultatoancoraN
3.
AllafineilvalorediM1 èilrisultatocercato
• IsimboliM,N eM1 sonodettiidentificatoridivariabili
• M1 èdettoaccumulatoredirisultato
Problemi,SoluzioniedAlgoritmi
52/60
Esempio:ConsultazioneLibro
inBiblioteca– 1/6
• Ilibrisonodispostisugliscaffali
• Laposizionediognilibroèfissaedèindividuatadaduecoordinate
• Scaffale(numerodelloscaffale)
• Posizionenelloscaffale
• Labibliotecaèdotatadiunoschedario(ordinatoperautore/ietitolo),
doveognischedacontienenell’ordine
•
•
•
•
•
Cognomeenomedell’autore
Titolodellibro
Edizioneedatadipubblicazione
Numerodelloscaffaleincuisitrova
Posizioneattribuitaallibronelloscaffale
Problemi,SoluzioniedAlgoritmi
53/60
Esempio:ConsultazioneLibro
inBiblioteca– 2/6
Esempiodischeda
Autore: Sciuto Donatella,Buonanno Giacomo,MariLuca
Titolo: IntroduzioneaiSistemiInformatici
Edizioneedatadipubblicazione: IIIEdizione,2005
Scaffale: 42
Posizione: 81
Problemi,SoluzioniedAlgoritmi
54/60
Esempio:ConsultazioneLibro
inBiblioteca– 3/6
• Primaformulazionedell’algoritmo
1. Decidiillibrodarichiedere
2. Prelevaillibrorichiesto
• Osservazione: seunpassononèdirettamentecomprensibileed
eseguibiledall’esecutore(operazionesemplice)alloraoccorre
dettagliarloasuavoltamedianteunulteriorealgoritmo
Problemi,SoluzioniedAlgoritmi
55/60
Esempio:ConsultazioneLibro
inBiblioteca– 4/6
• AlgoritmoperilPrelievo
1.
2.
3.
4.
5.
6.
Decidiillibrodarichiedere
Cercalaschedadellibrorichiesto
Segnatinumeroscaffaleeposizione
Cercaloscaffaleindicato
Accediallaposizioneindicataeprelevaillibro
Scriviituoidatisulla“schedaprestito”
Problemi,SoluzioniedAlgoritmi
56/60
Esempio:ConsultazioneLibro
inBiblioteca– 5/6
• Ilsotto-algoritmodiricerca
1.
2.
3.
Prendilaprimascheda
Esaminasetitoloeautore/isonoquellicercati.Incasopositivolaricerca
terminaconsuccesso,altrimentipassaallaschedasuccessivaeripeti
Seesauriscileschedealloraillibrocercatononesiste
Problemi,SoluzioniedAlgoritmi
57/60
Esempio:ConsultazioneLibro
inBiblioteca– 6/6
• AlgoritmoperilPrelievo
1.
2.
Decidiillibrodarichiedere
Cercalaschedadellibrorichiestocomesegue
1.
2.
3.
3.
4.
5.
6.
Prendilaprimascheda
Esaminasetitoloeautore/isonoquellicercati.Incasopositivolaricerca
terminaconsuccesso,altrimentipassaallaschedasuccessivaeripeti
Seesauriscileschedealloraillibrocercatononesiste
Segnatinumeroscaffaleeposizione
Cercaloscaffaleindicato
Accediallaposizioneindicataeprelevaillibro
Scriviituoidatisulla“schedaprestito”
Problemi,SoluzioniedAlgoritmi
58/60
Esercizi
• Perchénell’esempioperilcalcolodelmassimoinunalistadi10
elementinonèstatopostomax=0?
• Comegeneralizzarelaproceduraperlistedilunghezzan?
• Cometrovarel’elementominimoinA?
• Cometrovarelaposizionedelpiùgrandeelemento?
Problemi,SoluzioniedAlgoritmi
59/60
Riferimenti
• Libroditesto
• Capitolo3
• Paragrafi1,2,3,5
Problemi,SoluzioniedAlgoritmi
60/60