CorsoInforma+cadiBase FlowChart Abbiamode8oChe.. • INFORMATICA:scienzaetecnicachetra-al'elaborazione automa4cadeida4edeiprocedimen4dicalcolo • CALCOLATOREOELABORATOREELETTRONICO: macchinaele-ronicaingradodimanipolareautoma4camente informazioni,eseguendooperazionisuda4forni4iningresso (input),pero-eneredeirisulta4emessicomeda4inuscita (output) • PROGRAMMA:insiemediistruzionichepossonoessere eseguitedaunelaboratoreele-ronico. • PROGRAMMATORE:Sioccupadirealizzareopera4vamentele applicazioni,scrivendoleistruzioniso-oformadilineedi codicebasatesuspecificilinguaggidiprogrammazione. ModellodiComputer(semplificato) Dati In Ingresso Dati in Uscita Elaborazione dei Dati Informa+ca SecondolaACM(Associa4onforCompu4ng Machinery)… L’Informa4caèloStudiosistema4codeglialgoritmi chedescrivonoetrasformanol’Informazione:la loroteoria,analisi,proge-o,efficienza, realizzazioneeapplicazione. RisoluzionediunProblema L’uomo descrive l’algoritmo che la macchina deve seguire per risolvere il problema (ad esempio con i Diagrammi di flusso) Problema Algoritmo Programma Linguaggio Macchina Input Macchina La descrizione viene tradotta in Linguaggio di alto livello (ad esempio il linguaggio C) Il programma di alto livello viene tradotto in linguaggio Macchina, ovvero codice binario (ad esempio dal compilatore) Output EsempidiAlgoritmi Rice%apercucinareglispaghe0 ➔MeIl’acquanellapentola ➔Faibollirel’acqua ➔MeIlapastanell’acqua ➔Aggiungiunpo’disale ➔A-endi6minu4 ➔Scolalapasta EsempidiAlgoritmi Verificaseunnumeroèpariodispari ➔Prendiilnumero ➔Calcolailrestodelladivisioneinteradelnumero per2 ➔Seilrestoèzero – Allorailnumeroèpari – Altrimen4ilnumeroèdispari Algoritmi Conilterminealgoritmosiintende,ingenere,unmetodo perlarisoluzionediproblemiu+lizzandounnumero finitodipassi. Daquestadefinizionesievinconolequa-roproprietà fondamentalidell'algoritmo: • lasequenzadiistruzionideveesserefinita(finitezza); • essadeveportareadunrisultato(effe0vità); • leistruzionidevonoessereeseguibilimaterialmente (realizzabilità); • leistruzionidevonoessereespresseinmodonon ambiguo(nonambiguità). Cara8eris+chediunalgoritmo • Azionieseguibilienonambigue – Nonsonoammessi“unpò”e“apiacere”,chenonsono termini adaIadunamacchina • Determinis+co – Fa-ounpasso,ilsuccessivoèunoedunosolo,ben determinato.Alterna4vesonopossibili,malasceltadeveessere unica • Numerofinitodipassi • Terminazione – L’esecuzioneprimaopoidevefinireeprodurreunrisultatoin tempofinito – Osservazione:la3nonimplicala4 Esempiodinonterminazione SiconsideriilnumeroN • ScrivereN • ScrivereilnumerosuccessivoadN • Ripetereilpassoprecedente Esempiodinonterminazione Trovailpiùgrandenumeroprimo. Nonesisteunprogrammacheriesceadareuna rispostaintempofinito(Numerofinitodipassi) TuJiproblemisonorisolvibili??? No.. Unproblemarisolvibileconunalgoritmosidice computabile Risoluzionediunproblema Generalmentelarisoluzionediunproblema consistenelprenderealcunida4iniziali(input) rela4vialproblemaenelfornireun risultato(output)cherisolvequest’ul4mo. Algoritmo Input Esecutore Output NonècosìFacile Perscriverelagiusta“sequenzadipassi”bisogna essereunbravocuoco! PrepararegliSpagheI: • Ingredien4(acqua,Sale,SpagheI) • Eseguirelarice-a • ServiregliSpagheI Codificadell’Algoritmo Affinchèunamacchinariescaacomprendereed eseguireipassispecifica4daunalgoritmo, quest’ul4modeveessereprimacodificatoinun opportunoprogrammascri-oinunlinguaggioad altolivello(cheverràsuccessivamentecompilato/ interpretato) Algoritmo Traduzione Programma Rappresentazionedeglialgoritmi E’necessariofarriferimentoadeiformalismiche: • nonintroducanoambiguità • sianouniversalmentericonosciu4edinterpreta4allo stessomododaungenericoesecutore • perme-anodirappresentareinmodoefficaceun algoritmo • Cos4tuiscanounu4lestrumentoperpoipoterpassare allafasedicodificainunlinguaggiodiprogrammazione Rappresentazionedeglialgoritmi 1. Rappresentazionegrafica – Diagrammiablocchi/FlowChart 2. Rappresentazionetestuale – NotazioneLineareStru-urata/PseudoCodice Algoritmi:operazionibase Leoperazioniprimariesono: • Trasferimentodiinformazioni(istruzionidiI/O) • le8urada+,scri8urarisulta+,visualizzazioneda+ intermedi • Esecuzionedicalcoli(valutazioneespressioni) • Istruzionidiassegnamento • Stru8uredicontrollo(chemodificanoilflusso sequenzialediesecuzionedelleoperazioni) DiagrammidiFlusso Idiagrammiablocchi(deIanchediagrammidiflusso) sonounlinguaggiodimodellazionegraficoper rappresentarealgoritmi(insensolato). Essoconsentedidescrivereledifferen4operazioniso-o formadiunoschemaincuilediversefasidelprocessoe ledifferen4condizionichedevonoessererispe-ate vengonorappresenta4dasimboligraficideIblocchi elementari.Iblocchisonocollega4tralorotramitefrecce cheindicanolacronologia. DiagrammidiFlusso Ogniazioneelementareèrappresentatadaun blocco. Esistono54pidiblocchielementari: Blocco finale Blocco iniziale Blocco Elaborazione Blocco Controllo Blocco I/O IstruzionidiI/O • le-uradida4ininput • scri-uradeirisulta4inoutput Conne8ori Isingolidiagrammidevonoessereuni4tramitei conne+ori. L’esecuzionedelleistruzionideveesserefa-a sequenzialmente,ovveroseguendoiconne-ori. Quandosiscrivel’algoritmobisognafaremolta a%enzionealladirezionedelflussodiesecuzione. IstruzionediAssegnamento Conce8odivariabile • Iden4ficatadaun’e4che-a/iden4ficatore simbolico • Puòesserecomodopensareallavariabilecome aduncontenitoreincuipossiamomemorizzareo reperiredeida+u+lizza+duranteilcalcolo • L’istruzionediassegnamentoperme-edi assegnareunvaloreadunavariabile IstruzionediAssegnamento Unavariabilenumericaèunaen4tàcara-erizzatada • Unnome • Unvalore(contenuto) • Puòcambiareneltempo Unacostantenumericaèunaen4tàcara-erizzatada • Unnome • Unvalore(contenuto) • Nonpuòcambiareneltempo IstruzionediAssegnamento A=5 Alla Variabile A assegno il valore 5 Espressione Un’espressioneèunacombinazionedioperatori aritme4ci,costan4evariabilichepuòessere calcolatagenerandounsingolovalorenumerico Es:X+1X+(Y*5) IstruzionediAssegnamento • Istruzionediassegnamento:“ ” • VariabileEspressione X5YX+4 X=5 Y=X+4 AssegnoallaVariabilexilvalore5 LaVariabileYconterràilvaloredellasommatrail numero4edilvaloreassegnatoallavariabileX Esempio Descriveremediantediagrammidiflusso,un algoritmochecalcolilasommadiduenumerileI ininput Diagrammadiflusso:Somma Inizio Z X+Y Leggi X Scrivi Z Leggi Y Fine Esempio2 Descrivere,mediantediagrammidiflusso,un algoritmochescambiivalorididuevariabilile-e ininput. Diagrammadiflusso:Scambio Inizio Leggi X Leggi Y Aux Y Y X X Aux Scrivi Y Scrivi X Fine Flussodiesecuzione Sipossonoaverecasiincuinelflussodiesecuzione sidevesceglieretradiversedirezioni Ladirezionedascegliereèsubordinataalverificarsi diunacondizione Lacondizionepuòassumereduesta+: – Vero – Falso Inques4casisiparladiistruzionecondizionale Stru8uredicontrollo TuIglialgoritmidevonoada-arsiadunaclassediproblemi peressereapplica4almondorealeeleoperazionida effe-uareperraggiungerelasoluzionespessodifferisconoa secondadeicasichesipresentano. Perquestoesistonodellepar4colaristru-uredellinguaggio cheperme-onodicontrollareilflussodiesecuzione(quindi delleoperazioni),ovverodieseguireunacertaseriedi istruzionianchepiu'voltenelmomentoincuisiverificadi unaseriedicondizioni. Questestru-uresonoassolutamenteindispensabili,infaI nonesisteunlinguaggiodiprogrammazioneincuinone' possibilecontrollareilflussodelprocesso. Stru8uredicontrollo Quasilatotalitàdeiprogrammihalanecessitàdisvolgere alcuneistruzioniocompieredeterminateoperazioni (oppureevitaredicompierealcuneoperazioni)aseconda deida4dipartenza. Peresempiounprogrammacheesegueunadivisionetra duenumeria/bdovràevitaredicompierel'effeIva operazionearitme4caseildatob=0. PerquestointuIilinguaggidiprogrammazioneesistono deipar4colaricostruIchegeneralmenteperme-onodi: -Scegliereseeseguireomenounacertaporzionedi codice,oppure -Eseguirepiùvolteunacertapartedicodice. Stru8uredicontrollo IstruzioniCondizionali La selezione (o scelta) permette a un programma di proseguire secondo uno tra due (o più) flussi di istruzioni alternative, a seconda del risultato di un test o del verificarsi di una condizione. L’iterazione (o ciclo, o loop) consiste nella ripetizione di una o più istruzioni, e si può ottenere collegando il flusso in uscita da un blocco con il flusso in entrata nel blocco stesso o in uno precedente. In tal modo si possono eseguire compiti ripetitivi senza specificare uno per uno un gran numero di singoli passi, ma scrivendo per esempio un’istruzione del tipo: “esegui il prossimo passo 1.000 volte”. IstruzioniCondizionali Selezionebinaria.Nellaselezioneiltestolacondizionesono 4picamentecos4tui4daunavariabilelogica,scri-adentro ilsimbolodidecisione,(bloccocontrollo)dalqualeescono duefrecce.Questeindicanolepossibiliazionidacompiersi asecondadelvaloredellavariabile,comemostralafigura. IstruzioniCondizionali Sipuòanchevolerecompiereunacertaazioneseiltestola condizionehannounvalorevero,enessunaazionenel casocontrario. Esempio Descriveremediantediagrammadiflusso,un algoritmochedeterminiilmassimotradue numerileIininput DiagrammadiFlusso:Max Inizi Vero X>Y Scrivi X Falso Leggi X Scrivi Y Leggi Y Fine Stru8uraIF-ELSE L’istruzionecondizionaleif-elseècostruitaperscegliere l’esecuzionediun’istruzioneinalterna4vaaun’altraa secondadelvaloreassuntodaunadatacondizione. if(condizione) {operazione} L'operazionepuòanchenonessereracchiusatra parentesigraffe. Vediamounsempliceesempio. if($a==5){ echo"Lavariabileavale5"; } Inquestocasoverràstampatalastringa"Lavariabilea vale5"soloquando$asaràugualea5. Stru8uraIF-ELSE Abbiamointrodo-oilcontrolloreelse:aggiungelapossibilitàdieseguire un'istruzionealterna4vanelcasolacondizionenonsiavera. if(condizione) {operazione1} else {operazione2} VediamooradiapplicaretuIicasifinoravis4,u4lizzandol'annidamento dipiùif:l'importanteèricordarsidichiuderesempreunacondizioneche sièaperta. if($a>$b) {echo"aèmaggioredib";} else {if($a<$b){echo"aèminoredib";} else {if($a==$b){echo"aèugualedib";} }} Stru8urediControlloIteraJve Lestru-uredicontrollo"itera4ve"consentonodi specificarecheunadataistruzioneoundatobloccodi istruzionidevonoessereesegui4ripetutamente.Esse vengonoanchede-ecicli. Ognistru-uradicontrollodiquesto4podeveconsen4redi specificareso-oqualicondizionil'iterazione(ripe4zione) ditaliistruzionidebbaterminare,ovverolacondizionedi terminazionedelciclooppure,equivalentemente,la condizionedipermanenzanelciclo. Stru8uraWhile Ilciclowhile(mentre,ofintantoché)èindicatoquandola condizionedipermanenzainuncicloèunagenerica condizionebooleana,indipendentedalnumerodi iterazionieseguite.Leformetradizionalidiciclowhile possonoessereparafrasatecome"ripe4(ilcodice controllato)fintantochérestaveralacondizioneC".Un esempio4picoèlale-uradida4daunfiledicuinonsi conoscaaprioriladimensione;essopotrebbeassumere laforma"leggiilprossimodatofinchénonincontrilafine delfile". Stru8uraWhile Vediamounsempliceesempio: $i=1; while($i<=10) { echo$i; $i++; } Questociclocon4nuaadincrementarelavariabile$ifino aquandononsaràugualea10edognivoltastampailsuo valore.Inpra4caverràstampatalastringa"12345678 910". Stru8uraDo-While Unmodoalterna4vopereseguirelastessacosasaràricorrerealciclodo..while. L'unicadifferenzaècheilvaloredellacondizionevienecontrollatoallafinedel cicloenonall'inizio.Inpra4calaprimaoperazionevienesempreeseguita,sia chelacondizionesiaveraofalsa. do { operazione } while(condizione) Vediamol'esempio: $i=1; do { echo$i; $i++; } while($i<=10) Stru8ureDa+ Unastru8urada+èun'en4tàusataperorganizzareun insiemedida4all'internodellamemoriadelcomputer,ed eventualmentepermemorizzarliinunamemoriadi massa.Lasceltadellestru-ureda4dau4lizzareè stre-amentelegataaquelladeglialgoritmi. Lastru8urada+èunmetododiorganizzazionedeida+, quindiprescindedaida+effeJvamentecontenu+. Ciascunlinguaggiodiprogrammazioneoffrestrumen4,piùo menosofis4ca4,perdefinirestru-ureda4,ovvero aggregareda4di4poomogeneooeterogeneo. GliArray Unarrayèunastru-urada+omogenea,checon4eneun numerofinitodielemen4dellostesso4po,adesempio unve-oredi10interi.Ques4elemen4sonoindividua4 a-raversounindicenumerico,che4picamentevada0al numeromassimodielemen4menouno.Ladimensione delve-oredeveesseredichiarataalmomentodellasua creazione.Ve-orididimensionediversacos4tuiscono4pi dida4diversi. Glielemen4dell'array(levariabilichelocos4tuiscono)sono iden4ficatedallostessonomedell'arrayedaunoopiù indici,cheindicanolaposizionedell'elementoall'intero delve-oreodellamatrice. GliArray Arraymonodimensionale: Unarrayadunadimensioneècos4tuitodauninsiemefinito dielemen4omogeneiincorrispondenzabiunivocaconun insiemediindici. Arraybidimensionalepuòessereconsideratounarraydi arraymonodimensionalicioèognicomponentedell’array èessostessounarray L’accessoadognicomponentediunarraybidimensionalesi hatramiteunacoppiadiindici(i,j) Ilprimoindicesiriferisceallarigaedilsecondoallacolonna GliArray Array Monodimensionale X X[0] X[1] X[2] X[3] X[4] X[5] X[6] X[7] Array Bidimensionale COLONNE A R I G H E A[0][0] A[0][1] A[0][2] A[0][3] A[0][4] A[1][0] A[1][1] A[1][2] A[1][3] A[1][4] A[2][0] A[2][1] A[2][2] A[2][3] GliArray Essigodonodelleseguen4proprietà: • Gliarraysonounodei4pididatostru-urato • Sonocompos4daelemen4omogenei • Ognielementoèiden4ficatoall’internodelve-oreda unnumerod’ordinede-oancheindicedell’elemento • E’possibileriempireoleggereunasolaposizioneper volta • Ilnumerodeglielemen4ède-odimensioneo lunghezzadelve-ore GliArray Adesempio,pensiamodivolermemorizzareinomi deigiornidellaseImanaall'internodell'arraydi 4postringachiamatogiorno;avremolaseguente stru-ura: $giorno[0]="lunedi'"$giorno[1]="martedi'" $giorno[2]="mercoledi'"$giorno[3]="giovedi'" $giorno[4]="venerdi'"$giorno[5]="sabato" $giorno[6]="domenica" Array Esercizisugliarray