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