FondamentidiInformaticaProblemi,SoluzioniedAlgoritmi
Prof. Chr i st ian Espos i toCorso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )A .A . 2017/18
Problemi,SoluzioniedAlgoritmi
ComeInstruire i Calcolatori aRisolvere Problemi• Glielaboratorisonostrumentiperrisolvere(oaiutarearisolvere)problemibasatisuinformazioniedati
•Macomeciòavviene?1. Abbiamobisognodicodificareopportunamenteinformazioniedati2. Abbiamobisognodiimpartirelegiusteistruzioniperrisolvere
correttamenteiproblemi
Problemi,SoluzioniedAlgoritmi 02/60
RelazionetraRealtàeModello:ComeModellareunProblema
Modello
F = m × a
re tf
ft 1213
tt 1415
Costruzione modello
Ricerca dellasoluzione
Interpretazionedella soluzione
Mondo Reale
Problemi,SoluzioniedAlgoritmi 03/60
RisolvereunProblema
Risolvere unProblema
1.Scegliereastrazione definendouninsiemedidatirilevantichecaratterizzanolarealtà
2.Scegliererappresentazione dei dati
3.Individuareunprocedimentoadeguato(Algoritmo epoiProgramma)
4.Scomporreeventualmenteilprocedimento insotto-procedimenti
Problemi,SoluzioniedAlgoritmi 04/60
IlTermineAlgoritmo:Etimologia• DerivadalmatematicoAraboMuḥammad ibn Mūsā al-Khwārizmī (c.780-850),autoredeltestoAl-jabrw’al-muqabâla (dacuiancheiltermineAlgebra)
Problemi,SoluzioniedAlgoritmi 05/60
Algoritmi:unpo’diStoria• Algoritmiditiponumericofuronostudiatidamatematicibabilonesieindianipiùdi3000annifa
• Algoritmiinusofinoatempirecentifuronostudiatidaimatematicigrecinel500a.C.• AlgoritmodiEuclide perilMassimoComunDivisore• Algoritmigeometrici(calcoloditangenti,sezionidiangoli,etc)• Etc
Problemi,SoluzioniedAlgoritmi 06/60
GliAlgoritminelTrattamentodell’Informazione– 1/3• Unalgoritmoconsentedirealizzareunparticolaretrattamentodell’informazioneopiùingeneraledirisolvereunospecificoproblema• Calcolarelasommadiduenumeri• Calcolarelalunghezzadell’ipotenusadiuntriangolorettangolo• Risolvereun’equazionedisecondogrado• Maanche…
Problemi,SoluzioniedAlgoritmi 07/60
GliAlgoritminelTrattamentodell’Informazione– 2/3• TrasmissionedatiinInternet• Comesigestisceinpraticailflussodidatinellarete?• RicercanelWEB• ComefaGoogleatrovareleinformazioninelWEB?• Bioinformatica• ComeilDNAdeterminalenostrecaratteristiche?• Processieconomici• Comesigestisconoleasteon-linesuEbay?• ComesieffettualacompravenditadiazionisuInternet?• Organizzazionedirisorseeservizi• Comesischedulanoivolidelleaerolinee?• Comesiassegnanolefrequenzenellecelledellereticellulari?• Etc
Problemi,SoluzioniedAlgoritmi 08/60
GliAlgoritminelTrattamentodell’Informazione– 3/3• L’esperienzaquotidianasuggerisceinfinitiesempidialgoritmi
•Molteazionichesvolgiamoabitualmentepossonoesseremodellatemediantealgoritmi• Istruzionidimontaggio• Preparazionedelcaffè• Prelievobancomat• Preparazionediunricetta• Indicazioniperunlavoroamaglia• Etc
Problemi,SoluzioniedAlgoritmi 09/60
Algoritmo:Definizioni• Definizione1: proceduradicalcolobendefinita,cheprendeuninsiemedivaloricomeinputeproduceuninsiemedivaloricomeoutput
• Definizione2: sequenzadiazionielementaricheconsenteditrasformareidatiinizialineirisultatifinaliattraversounnumerofinitodipassinonambigui
• Note• Insiemedidatiinizialibendefinito• Sequenzadipassipuòessereeseguitadaunesecutore(ades.calcolatore)
ALGORITMODati iniziali Dati finali (soluzione)
Problemi,SoluzioniedAlgoritmi 10/60
Esempio:Algoritmoperprenderel’Automobile• Algoritmo
1. Aprirel’auto2. Aprirelaportiera3. Sedersialpostodiguida4. Allacciarelacintura5. Schiacciarelafrizione6. Avviareilmotore7. Inserirelaprimamarcia8. Togliereilfrenoamano9. Rilasciare“delicatamente”lafrizioneperpartire
Osservazione: ipassisonoeseguitiinsequenzael’ordinedelleistruzionièessenzialeperlacorrettezza
Problemi,SoluzioniedAlgoritmi 11/60
Algoritmi:EsecutoreeLinguaggio– 1/3• Unalgoritmopresupponelapresenzadiqualcuno(oqualcosa)ingradodieseguirlo,chiamatoesecutore• Ininformatical’esecutoreèilcalcolatore
• L’algoritmoviene“letto”dall’esecutore• L’esecutore,partendodaidatiininput,esegue(inunbenprecisoordine)tutteleistruzionidell’algoritmostesso,ottenendoalterminedellapropriaesecuzioneidatiinoutput
• Peressereeseguito,l’algoritmodeveessereformulatoinunlinguaggiocomprensibiledall’esecutore• Unesecutorepuòeseguireunalgoritmoformulatoinunlinguaggiochenonconosce,apattochel’algoritmostessosiapreventivamentetradottoinunlinguaggiocheinvecegliènoto
Problemi,SoluzioniedAlgoritmi 12/60
Algoritmi:EsecutoreeLinguaggio– 2/3• L’algoritmodeve• Prevederesoltantoistruzionicherichiedonoall’esecutoredieffettuareoperazionielementari• Operazionicheeglisacompieresenzabisognodiulteriorispecificazioni
• Essereformulato in unlinguaggiononambiguo,incuicioèogniistruzionecaratterizziunivocamenteunadelleoperazionichel’esecutoreèingradodicompiere
• Specificaresenzaambiguitàl’ordinediesecuzione delleistruzioni,cuil’esecutoredeveattenersiscrupolosamente
Problemi,SoluzioniedAlgoritmi 13/60
Algoritmi:EsecutoreeLinguaggio– 3/3• L’esecuzionediunalgoritmodapartediun“esecutore”(uomoomacchina)sitraduceinunasuccessionedioperazioni chevengonoeffettuateneltempo,evocandounprocessosequenziale• Seriedieventicheoccorronounodopol’altro,ognunoconuninizioedunafinebenidentificabile
• Unalgoritmo puòrichiederel’esecuzionedialtrialgoritmiprecedentementespecificatiall’esecutore
Istruzione Istruzione Istruzione Istruzione Istruzione Istruzione
Problemi,SoluzioniedAlgoritmi 14/60
Algoritmi:CaratteristichePrincipali– 1/2• L’algoritmodeveessereformulatoinunnumerofinitodiistruzionie deveterminare, fornendoidatiinoutput,inuntempofinito
• L’algoritmopuòessere• Deterministico: eseguendolostessoalgoritmopiùvoltesuglistessidatidiinput,l’esecutoredevegeneraresempreglistessidatidioutput
• Probabilistico: eseguendolostessoalgoritmopiùvoltesuglistessidatidiinput,l’esecutoredevegeneraredatidioutputsemprediversi
• Noicioccuperemosolodialgoritmideterministici
• Sepossiamospecificareunalgoritmoallorapossiamoautomatizzarelasoluzione
Problemi,SoluzioniedAlgoritmi 15/60
Algoritmi:CaratteristichePrincipali– 2/2• Unalgoritmodevepossedereleseguentiproprietà• Correttezza:produrresempreunasoluzione,apattocheidatiininputsianovalidi• Determinatezza: utilizzareleistruzionidibasefornitedall’esecutore• Efficacia: risolvereilproblematramitelacombinazionediistruzionidibase• Efficienza: risolvereilproblemausandolaminorquantitàpossibiledirisorsefisiche• Tempodiesecuzione,memoria,etc
• Unalgoritmopuòessereespressoinvarieforme• Linguaggiumani,pseudo-codici,linguaggigrafici,linguaggidiprogrammazione,etc
Problemi,SoluzioniedAlgoritmi 16/60
Algoritmi:FasidelProcessodiCreazione
Problemi,SoluzioniedAlgoritmi 17/60
ComeRappresentareunAlgoritmo• Unasoluzionealgoritmicaadunproblema,peressereeseguitadauncalcolatore,deveessererappresentatainmanieraformale• Formale: descrizioneinterminidisequenzadioperazionielementari
• Esistononumerosistrumentiperrappresentareunasoluzioneinmodoformale,ipiùutilizzatisono• Pseudocodici(testuale)• Diagrammidiflusso(grafico)
Problemi,SoluzioniedAlgoritmi 18/60
Pseudocodici• Nellarappresentazionedeglialgoritmiconvieneastrarsidallospecificolinguaggiodiprogrammazione
• Perfarequestosiusaunlinguaggiodettopseudocodice• Nellopseudocodice• Siimpieganometodiespressivipiùchiarieconcisirispettoailinguaggidiprogrammazionereali• Sipossonousarefrasiinlinguaggionaturalepersintetizzareproceduretalvoltacomplesse,manonambigue
Problemi,SoluzioniedAlgoritmi 19/60
Pseudocodici:Esempio1• Rappresentazionemediantepseudocodicediunpossibilealgoritmoperlapreparazionedeltè(N.B.esecutoreumano)
INIZIOALGORITMOpreparareUnaTazzaDiTè1. Collegareilbollitoreallacorrenteelettrica2. Metterelabustinaditèinunatazza3. Metterel’acquanelbollitore4. Accendereilbollitore5. Aspettarel’ebollizionedell’acqua6. Aggiungerel’acquaallatazza7. Rimuoverelabustinaditèconilcucchiaio/forchetta8. Aggiungerelattee/ozucchero9. Servire
FINEALGORITMOpreparareUnaTazzaDiTè
Problemi,SoluzioniedAlgoritmi 20/60
Pseudocodici:Esempio1• Rappresentazionemediantepseudocodicediunpossibilealgoritmoperlapreparazionedeltè(N.B.esecutoreumano)
INIZIOALGORITMOpreparareUnaTazzaDiTè1. Collegareilbollitoreallacorrenteelettrica2. Metterelabustinaditèinunatazza3. Metterel’acquanelbollitore4. Accendereilbollitore5. Aspettarel’ebollizionedell’acqua6. Aggiungerel’acquaallatazza7. Rimuoverelabustinaditèconilcucchiaio/forchetta8. Aggiungerelattee/ozucchero9. Servire
FINEALGORITMOpreparareUnaTazzaDiTè
NotazioneinCamelCase
Problemi,SoluzioniedAlgoritmi 21/60
Pseudocodici:Esempio2• Problema: creareunalgoritmochetrovailpiùgrandeelementodellalistadiinputA contenente10 elementi• Input: A (unalistadi10 numeri)• Output:max (l’elementopiùgrandeinA)
• IlprimoelementodiAèrestituitodaA(1)INIZIOALGORITMOtrovaMaxmax = A(1)Per i che va da 2 a 10
Se A(i) > maxmax = A(i) //Istruzione eseguita se A(i) > max
Incrementa irestituisci maxFINEALGORITMOtrovaMax
Indicei 1 2 3 4 5 6 7 8 9 10
A 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 enonambigue
• Permeglioaffrontarel’ultimopuntosifaspessoricorsoaidiagrammidiflusso (oflow-chart)• Strumentigrafici perrappresentare ilflussologico dioperazioni cheportanoallarisoluzione diunproblema
• Costituisconounlinguaggiomoltoutileperdescrivere glialgoritmi
Problemi,SoluzioniedAlgoritmi 23/60
DiagrammidiFlusso– 2/3• Ilflusso diesecuzione puòessererappresentatograficamente conundiagrammadiflusso• 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:BlocchidiInizioeFine• Unalgoritmo(ediconseguenzaunasuarappresentazionegrafica)deveavereuninizio edunafine
• Tral’inizioelafinecidevesempreesserealmenoun’istruzione
Inizio
Fine
Problemi,SoluzioniedAlgoritmi 26/60
DiagrammidiFlusso:BloccodiConnessione• Larisoluzionediunproblemaconsistenell’esecuzioneordinatadiunasequenzadioperazioni• L’ordine nell’esecuzione delleistruzionièfondamentale• Neiflow-chartègarantitodall’orientamento dellefrecce checolleganoiblocchi
Problemi,SoluzioniedAlgoritmi 27/60
DiagrammidiFlusso:BlocchidiAzioneGenericaedI/O
Azionegenerica
AzionediI/O
Problemi,SoluzioniedAlgoritmi 28/60
DiagrammidiFlusso:BloccodiDecisioneBinaria(oCondizionale)• Possonoesserepresentiistruzionicondizionali,lacuiesecuzionedipendecioèdascelteeffettuateinbaseaidati
• Concettualmente,possiamoimmaginarecheilflussodiesecuzionesiramifichi• Inbaseadunacondizione vienedecisoseeseguireun’operazioneoppureun’altra
?
Diramazione(condizionale)
Problemi,SoluzioniedAlgoritmi 29/60
EsempioStart
A>=0?
LeggiunvaloreA
Stop Stop
StampaA Stampa-A
si no
Problemi,SoluzioniedAlgoritmi 30/60
RappresentazioneAlternativadeiBlocchiElementari
START
Inizio
END
Fine
I/O
Operazioni di ingresso/
usc i ta
PROCESS
Elaborazione
Predicato
Se lez ione a due vie
Sì NoSUB-PROCESS
Sottoprogramma
Problemi,SoluzioniedAlgoritmi 31/60
Pseudocodicevs.DiagrammidiFlusso• Pseudocodice• Vantaggi• Immediato
• Svantaggi• Menoastratto• Interpretazionepiùcomplicata
• Diagrammidiflusso• Vantaggi• Piùintuitiviperchégrafici• Piùastratti
• Svantaggi• Richiedonoapprendimentodellafunzionedeivaritipidiblocco
Problemi,SoluzioniedAlgoritmi 32/60
StrutturediControllo:Controllarel’OrdinedelleIstruzioni– 1/4
SELEZIONESEMPLICE
Problemi,SoluzioniedAlgoritmi 33/60
StrutturediControllo:Controllarel’OrdinedelleIstruzioni– 2/4
SELEZIONEADUEVIE
Problemi,SoluzioniedAlgoritmi 34/60
StrutturediControllo:Controllarel’OrdinedelleIstruzioni– 3/4
CICLOACONDIZIONEINIZIALE
Problemi,SoluzioniedAlgoritmi 35/60
StrutturediControllo:Controllarel’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:BaseBelevataall’esponenteE
b e ris = ris * b e > 02 4 1
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:Algoritmopercalcolareilmassimotra2numerix ey1. Leggiilvaloredix dall’esterno
2. Leggiilvalorediy dall’esterno
3. Calcolaladifferenzad frax ey(d=x-y)
4. Sedèmaggioredi0 vaialpasso6., altrimentiproseguiinsequenza
5. Stampa“ilmassimoè…”seguitodalvalorediy evaia7.
6. Stampa“ilmassimoè…”seguitodalvaloredix
7. Terminal’esecuzione
=
Problemi,SoluzioniedAlgoritmi 41/60
AlgoritmieProgrammi• Algoritmo: sequenzadiazionipersvolgereilcalcolo
• Programma: algoritmoespressoinnotazioneformale(linguaggiodiprogrammazione)
• CreazioneProgramma• Fase1 =Algoritmo• Fase2 =Implementazionedell’algoritmoinundatolinguaggio(diprogrammazione)
Problemi,SoluzioniedAlgoritmi 42/60
ProcessoperlaCreazionediunAlgoritmo– 1/5• Talvoltailprocessoperlarisoluzionediunproblemaèfisso• Semprelostessoadognidiversaesecuzione
• Esempio: algoritmopercalcolarel’importodiunafattura1. Cercal’aliquotaIVAsullatabella2. Moltiplical’importonettoperl’aliquotatrovata3. Sommailrisultatoall'importonetto
• Questoalgoritmoècompostodatreistruzioni• Chedevonoessereeseguiteinsequenza
Problemi,SoluzioniedAlgoritmi 43/60
ProcessoperlaCreazionediunAlgoritmo– 2/5• Altrevoltelostessoalgoritmopuòportareapiùprocessisequenzialidifferenti• Asecondadellecondizioniiniziali
• Esempio: ilprecedentealgoritmo,quandoèrichiestodidoverconsiderarelapossibilitàchelamerceinesamenonsiasoggettaadIVA,diventa
• SE lamercedafatturareèsoggettaadIVA ALLORA1. CercalacorrettaaliquotaIVAsullatabella2. Moltiplical’importoperl’aliquotatrovata3. Sommailrisultatoall’importonetto• ALTRIMENTI4. Tienicontosolodell’importodipartenza
Problemi,SoluzioniedAlgoritmi 44/60
ProcessoperlaCreazionediunAlgoritmo– 3/5• Osservazione: nell’esempiovistoinprecedenza,ilprocessosequenzialenonèfissomadipendedaidatidaelaborare,inparticolaredaltipodimercedafatturare• L’algoritmodescriveuninsiemecostituitodaduesequenzediesecuzionediverse
Problemi,SoluzioniedAlgoritmi 45/60
ProcessoperlaCreazionediunAlgoritmo– 4/5• Esempio: algoritmopereffettuareunatelefonata
1. Sollevailricevitore2. Componiilnumero3. SE qualcunorisponde ALLORA
• Conducilaconversazione4. ALTRIMENTI
• Deponiilricevitoree• Ripetil’interoprocedimento,apartiredalpunto1.
Problemi,SoluzioniedAlgoritmi 46/60
ProcessoperlaCreazionediunAlgoritmo– 5/5• Unalgoritmo puòesserevistocomeuntestoingradodidescrivere uninsiemedisequenzediesecuzione
• L’algoritmopereffettuareunatelefonatapotrebbeavereunprocessociclicochenonterminamai• L’interlocutorenonrispondemaialtelefono
Problemi,SoluzioniedAlgoritmi 47/60
Esempio:ProdottodidueNumerimedianteAddizioniSuccessive– 1/5• 7 * 3 =21• 7 èdettomoltiplicando• 3 èdettomoltiplicatore
• UtilizzandoilmetododelleAddizioniSuccessive,lamoltiplicazionepuòessereespressacome• 7 + 7 + 7 =21
• L’algoritmopotrebbeesserecostituitosemplicementedalseguentetesto• “Sisommiilmoltiplicandoasestessounnumerodivolteugualealvaloredelmoltiplicatore”
Problemi,SoluzioniedAlgoritmi 48/60
Esempio:ProdottodidueNumerimedianteAddizioniSuccessive– 2/5• Specifichiamoconmaggioredettaglio leoperazionirichiesteevitandoicostruttiambigui
• Adesempiopotremmoscrivere1. Sisommiilmoltiplicando asestesso,esidecrementidiunoilvaloredel
moltiplicatore2. Sisommiancorailmoltiplicando alvalore ottenutodallaprecedente
somma,esidecrementidinuovoilvalore ottenutodallaprecedentesottrazione
3. Siripetailprocedimentofinoache,perdecrementisuccessivi,ilmoltiplicatore nonraggiungailvalorezero
Problemi,SoluzioniedAlgoritmi 49/60
Esempio:ProdottodidueNumerimedianteAddizioniSuccessive– 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)
Problemi,SoluzioniedAlgoritmi
Sequenzadioperazionieffettuatesulmoltiplicando
Sequenzadioperazionieffettuatesulmoltiplicatore
50/60
Esempio:ProdottodidueNumerimedianteAddizioniSuccessive– 4/5• Osservazione: perevitareambiguitàespecificaredivoltainvoltadiqualevaloresistaparlando,sièstaticostrettiadusareleespressioni• “valoreottenutodallaprecedentesomma”• “valoreottenutodallaprecedentesottrazione”
• Perdistingueretalivalorisiricorreasimbolioidentificatori(dettivariabili)perriferirsisenzaambiguità,divoltainvolta,alvaloredesiderato
Problemi,SoluzioniedAlgoritmi 51/60
Esempio:ProdottodidueNumerimedianteAddizioniSuccessive– 5/5• Algoritmo1. SiaM ilvaloredelmoltiplicando,N ilvaloredelmoltiplicatoreed
M1 ilrisultato(inizialmenteugualeazero)2. SiripetanoleseguentioperazionifinoacheilvalorediN non
diventiugualea0• SisommiilvaloredelmoltiplicandoM alvalorediM1 esichiamiilrisultatoancoraM1
• Sisottragga1dalvalorediN,esichiamiilrisultatoancoraN3. AllafineilvalorediM1 èilrisultatocercato
• IsimboliM,N eM1 sonodettiidentificatoridivariabili
•M1 èdettoaccumulatoredirisultato
Problemi,SoluzioniedAlgoritmi 52/60
Esempio:ConsultazioneLibroinBiblioteca– 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:ConsultazioneLibroinBiblioteca– 2/6
Autore: Sciuto Donatella,Buonanno Giacomo,MariLuca
Titolo: IntroduzioneaiSistemiInformatici
Edizioneedatadipubblicazione: IIIEdizione,2005
Scaffale: 42
Posizione: 81
Esempiodischeda
Problemi,SoluzioniedAlgoritmi 54/60
Esempio:ConsultazioneLibroinBiblioteca– 3/6• Primaformulazionedell’algoritmo1. Decidiillibrodarichiedere2. Prelevaillibrorichiesto
• Osservazione: seunpassononèdirettamentecomprensibileedeseguibiledall’esecutore(operazionesemplice)alloraoccorredettagliarloasuavoltamedianteunulteriorealgoritmo
Problemi,SoluzioniedAlgoritmi 55/60
Esempio:ConsultazioneLibroinBiblioteca– 4/6• AlgoritmoperilPrelievo1. Decidiillibrodarichiedere2. Cercalaschedadellibrorichiesto3. Segnatinumeroscaffaleeposizione4. Cercaloscaffaleindicato5. Accediallaposizioneindicataeprelevaillibro6. Scriviituoidatisulla“schedaprestito”
Problemi,SoluzioniedAlgoritmi 56/60
Esempio:ConsultazioneLibroinBiblioteca– 5/6• Ilsotto-algoritmodiricerca
1. Prendilaprimascheda2. Esaminasetitoloeautore/isonoquellicercati.Incasopositivolaricerca
terminaconsuccesso,altrimentipassaallaschedasuccessivaeripeti3. Seesauriscileschedealloraillibrocercatononesiste
Problemi,SoluzioniedAlgoritmi 57/60
Esempio:ConsultazioneLibroinBiblioteca– 6/6• AlgoritmoperilPrelievo
1. Decidiillibrodarichiedere2. Cercalaschedadellibrorichiestocomesegue1. Prendilaprimascheda2. Esaminasetitoloeautore/isonoquellicercati.Incasopositivolaricerca
terminaconsuccesso,altrimentipassaallaschedasuccessivaeripeti3. Seesauriscileschedealloraillibrocercatononesiste
3. Segnatinumeroscaffaleeposizione4. Cercaloscaffaleindicato5. Accediallaposizioneindicataeprelevaillibro6. Scriviituoidatisulla“schedaprestito”
Problemi,SoluzioniedAlgoritmi 58/60
Esercizi• Perchénell’esempioperilcalcolodelmassimoinunalistadi10elementinonèstatopostomax=0?
• Comegeneralizzarelaproceduraperlistedilunghezzan?
• Cometrovarel’elementominimoinA?
• Cometrovarelaposizionedelpiùgrandeelemento?
Problemi,SoluzioniedAlgoritmi 59/60
Riferimenti• Libroditesto• Capitolo3• Paragrafi1,2,3,5
Problemi,SoluzioniedAlgoritmi 60/60