introduzione alla programmazione - unisacesposito/.../argomento06_introprogrammazion… ·...

47
Fondamenti di Informatica Introduzione alla Programmazione Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2017/18 Introduzione alla Programmazione

Upload: others

Post on 16-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

FondamentidiInformaticaIntroduzioneal laProgrammazione

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

IntroduzioneallaProgrammazione

Page 2: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

IProgrammi– 1/2• Negliultimiannil’Information&Communication Technology(ICT)èdiventatounelementostrategicoperilbusiness,oltrecheunostrumentoessenzialeintutteleattivitàlavorativeesociali• Haacquisitounvaloreirrinunciabilepertutteleistituzionipubblicheeprivate,perleimprese,masoprattuttopertuttinoi

• Ilprogrammarappresental’elementodibaseperilmondodell’ICT

IntroduzioneallaProgrammazione 01/46

Page 3: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

IProgrammi– 2/2• Fannoormaipartediogninostraattività• SistemiOperativi• Virus,Troian,Malware• Videogiochi• ATM,semafori,ilmotorediricercaGoogle,sistemiperilsupportodeltrasporto

• Emoltoaltroancora…

• Differisconosottovariaspetti• Obiettivi• Funzionalità• Algoritmi• Risorse• Etc

IntroduzioneallaProgrammazione 02/46

Page 4: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Perchéimparareaprogrammare?– 1/7• Automatizzareazionieprocessi• Risparmiaretempo• Risparmiarerisorse

• Imparareunnuovomododipensare(Computational Thinking)• Utilizzodell'informaticaedellacomputazioneperrisolvereproblemi

• Usarel’informaticainareeacuilepersonenonhannoancorapensato

• Programmarerichiedespessodifarfronteanuovesfide,quindiunprogrammatoreinconsciamenteacquisiràcapacitàdiproblem solving

• Questaabilitànonèsoloutilenellaprogrammazione,maèancheessenzialenellavitareale

• Aggiungereunanuovalingua(linguaggio)edun’importanteabilitàallenostrecompetenze

IntroduzioneallaProgrammazione 03/46

Page 5: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Perchéimparareaprogrammare?– 2/7• Imparareunnuovolinguaggiopermettedi• Usarenuoveformeespressive• Creareoggetticheinrealtàsembranonontangibili,macheinrealtàlosono

• Losonoperchéinmolticasihannocambiatoilnostromododivivere,maancheperilloroimpattoeconomico

IntroduzioneallaProgrammazione 04/46

Page 6: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Perchéimparareaprogrammare?– 3/7• Utilizzandoideecreativeecompetenzediprogrammazioneèpossibilecrearetecnologierivoluzionariestandocomodamentesedutialpropriocomputer• Laprogrammazioneconsenteallenostreideediprendereformaematerializzarsi• Disolitoiltuttonascedallanecessitàdirisolvereproblemiconcreti

IntroduzioneallaProgrammazione 05/46

Page 7: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Perchéimparareaprogrammare?– 4/7• IlCERN(Conseil européen pourlarecherche nucléaire),ilpiùgrandelaboratorioalmondodifisicadelleparticelle,avevanecessitàdistrumentisoftware(programmi)chepermettesseroladiffusionediinformazionifraisuoidiversicentridiricerca• Perrisolverequestoproblema,SirTimothyJohnBerners-LeesviluppòiprogrammicherappresentanolabaseconcettualeperilWorldWideWeb(WWW)

IntroduzioneallaProgrammazione 06/46

Page 8: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Perchéimparareaprogrammare?– 5/7• DuranteisuoianniuniversitariMarkZuckerberg nonriuscivaatrovareunmodoefficaceperraccogliereinformazionisuglialtristudentidellasuauniversità(Harvard)• PerrisolverequestoproblemahacreatoFacebook• Originariamenteprogettatoperglistudentidell’UniversitàdiHarvard,fuprestoapertoancheaglistudentidialtreuniversitàescuole

• “Facebook”prendespuntodaunelencoconnomeefotografiadeglistudenti,chealcuneuniversitàstatunitensidistribuisconoall'iniziodell'annoaccademicoperaiutaregliiscrittiasocializzaretraloro

IntroduzioneallaProgrammazione 07/46

Page 9: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Perchéimparareaprogrammare?– 6/7• Finoalfebbraio2005nonerapossibilecondividereerenderepubblicisullareteInternetiproprivideo• Perrisolverequestoproblema,3ragazzichelavoravanoaPaypal (ChadHurley,SteveChen eJawed Karim)crearonoYouTube

IntroduzioneallaProgrammazione 08/46

Page 10: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Perchéimparareaprogrammare?– 7/7• LarryPageeSergey Brin immaginaronounluogochepermettesselorodiaccedere,inmanierasempliceerapida,atutteleinformazionipresentisullareteInternet• PerfarequestohannocreatoGoogle,unpotentemotorediricercachevieneutilizzatodadiversimiliardidipersoneintuttoilmondo

IntroduzioneallaProgrammazione 09/46

Page 11: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Cos’èunProgramma– 1/2• Definizione1: implementazionediunalgoritmoespressainunlinguaggiodiprogrammazionespecifico

• Definizione2: notazione(formaleenonambigua)concuièpossibiledescrivereglialgoritmi

Problema ModellazionedelProblema Algoritmo Programma

IntroduzioneallaProgrammazione 10/46

Page 12: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Cos’èunProgramma– 2/2• Osservazione: “ilcalcolatoredevecapirequellocheglivienedettoedevesaperfareciòcheglivienechiesto”• Risolvereproblemicomplessimedianteazionielementari• Leistruzioni corrispondonoadazionielementari• Somma,differenza,prodotto,divisione(epocopiù)

• Istruzioni edati sononumeribinari

• Problemiconnessi• Interagireconlamacchinamedianteunlinguaggiopiùvicinoagliumani

• Soluzione• Linguaggidialtolivello(MATLABedaltri)• Traduttori/Compilatori/Interpreti

IntroduzioneallaProgrammazione 11/46

Page 13: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ChiCreaunProgramma?• Ilprogrammatore sioccupadi• Progettareunalgoritmoefficaceperlarisoluzionediunproblemadato• Tradurrequestoalgoritmoinistruzionieseguibilidauncomputermedianteunlinguaggiodiprogrammazione

IntroduzioneallaProgrammazione 12/46

Page 14: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 1/8• Laprogrammazione consistenellascrittura diuntesto,dettoprogramma(ocodice)sorgente,chedescriveinterminidiistruzioninoteallamacchinalasoluzioneperundatoproblema• Esempio:ricercadelvalormassimoinunaseriedinumeri

• Ingeneralenonesisteunasolasoluzioneaduncertoproblema• Lesoluzionipotrebberoesserenumerose

• Laprogrammazioneconsisteneltrovarelastrada“migliore”checonduceallasoluzionedelproblemainoggetto1. Disolitosipartedaltrovareunaprimastrada,chenondeveessereper

forzalamigliore2. Successivamente,sicercanoeventualialtrestrademigliori

IntroduzioneallaProgrammazione 13/46

Page 15: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 2/8• Programmare èun’operazionecreativa• Nonesisteunproblemaugualeaunaltroenonesistonosoluzioniuniversali

• Programmatoridiversiscrivonoprogrammidiversiperrisolverelostessoproblema• Lesoluzionipossonoessereugualmenteefficienti

• Programmareèun’operazioneorganizzataperstep successivi

• Ècompletamenteinefficienteunapproccio“diretto”• Scriveredirettamenteilprogrammadefinitivopartendodalproblema

IntroduzioneallaProgrammazione 14/46

Page 16: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 3/8• Obiettivo: risolvereunproblema• Fasidelprocessodiprogrammazione

1. Modellazionedelproblema2. Ricercadellasoluzionemigliore(idea)3. Conversionedell’ideainunasoluzioneformale (algoritmo)4. Traduzionedell’algoritmoinunasequenzadiistruzioni

comprensibiliall’esecutore(inquestocasol’elaboratoreelettronico)• Programma

5. Valutazionedelprogrammaconuninsiemesignificativodidatipergarantirechefunzioneràinognioccasione(qualsiasisianoidatidiinput)

6. Opportunadocumentazionedelprogrammaabeneficiodichilouseràedeventualmentelomodificherà

IntroduzioneallaProgrammazione 15/46

Page 17: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 4/8• Iprogrammi sonointesiperessereeseguitidaicomputer maancheperesserelettidallepersone• Chepossonoessereanchediversedaquellechehannoscrittoilprogramma

• Ènecessarioquindimigliorare ilpiùpossibilelaleggibilitàe lachiarezzadeiprogrammi• Ilcodice relativoadunprogramma presentaunastrutturagerarchica:leistruzioni possonoessereannidateall’internodialtre istruzioni• Quindibisognausarel’indentazione (rientro)inmodoopportuno

• Aggiungere commenti significativi (icommentisonoistruzioninoneseguitedall’elaboratore)• Primadiunadichiarazionedifunzione/proceduraspiegareacosaessaserveequalisonoisuoiparametri

• Dopoimportantidichiarazionidivariabili• Primaodopoistruzioniimportanti

IntroduzioneallaProgrammazione 16/46

Page 18: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 5/8

INIZIOALGORITMOtrovaMax% La funzione A(1) restituisce il valore dell’elemento in posizione 1max = A(1) % La variabile max memorizza il massimo valore corrente in A Per i che va da 2 a 10

%La funzione A(i) restituisce il valore dell’elemento in posizione iSe A(i) > max

max = A(i) % Istruzione eseguita se A(i) > maxIncrementa i

restituisci maxFINEALGORITMOtrovaMax

IntroduzioneallaProgrammazione

Comm

enti

17/46

Page 19: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 5/8

IntroduzioneallaProgrammazione

INIZIOALGORITMOtrovaMaxmax = A(1) For i = 2 to 10 %Inizio ciclo a condizione iniziale

If A(i) > max %Inizio blocco di selezione semplicemax = A(i) %Unica istruzione appartenente al

blocco di selezione sempliceEndIf %Fine blocco di selezione sempliceIncrementa i

EndFor %Fine ciclo a condizione inizialerestituisci maxFINEALGORITMOtrovaMax

Istruzioniappartenentialbloccodelcicloacondizioneiniziale

Istruzioniappartenentialbloccoprincipaledell’algoritmotrovaMax

18/46

Page 20: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 6/8• Alcunefunzionalitàrichiedonopocherighedicodice• Èbuonaprassiilraggruppare/mantenere questefunzionalitàall'internodiblocchiseparatidicodice• Ades.,raggruppandoilcodiceinfunzioni

• Consistent Naming Scheme• I nomidivariabiliefunzionidevonoaveredelimitatoridiparola.Sonodueleopzionipiùcomuni• camelCase: Primaletteradiogniparolaèinmaiuscolo(disolitotrannelaprimaparola)

• underscore: Underscoretraleparole(_),comeadesempio:trova_max_nella_lista(A)

• Ledueopzionipossonoancheesserecombinate

IntroduzioneallaProgrammazione 19/46

Page 21: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 7/8• PrincipiodelDon’t Repeat Yourself• Loscopo perlamaggiorpartedeiprogrammi (edeicomputeringenerale)èquellodiautomatizzare leoperazioniripetitive

• Questoprincipiodovrebbeesseremantenutointuttoilcodice• Lostessopezzodicodicenondeveessereripetuto

• Evitaretroppilivellidiannidamento/indentazione• Troppilivellidiindentazione possonorendereilcodice piùdifficiledaleggereeseguire

• Evitare discrivere inorizzontale lungherighe dicodice

IntroduzioneallaProgrammazione 20/46

Page 22: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ComevieneScrittounProgramma?– 8/8• Usarenomisignificativiecoerentiperlevariabili• Levariabili devonoesseredescrittive• Usarenomicoerentiperlevariabilichehannolostessotipodiruolo

• Refactoring delcodice• Quandosifa“refactoring”,siapportanomodifichealcodicesenzacambiarenessunadellesuefunzionalità

• Nonincludecorrezionidierrori

• Sipuòpensareal“refactoring”comeadun’operazionedipulizia,fattaalloscopodimigliorarelaleggibilitàelaqualitàdelcodice,soprattuttoinchiavefutura

• Èpossibilemigliorarelaleggibilitàdelcodiceduranteilprocessodirefactoring utilizzandoiconcettivistipoc’anzi

IntroduzioneallaProgrammazione 21/46

Page 23: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazione– 1/2• Definizione: unlinguaggiodiprogrammazioneèunlinguaggioartificiale percomunicareconlemacchine

• Piùprecisamente,ilinguaggidiprogrammazionesonodisolitousatiper• Esprimerealgoritmi• Controllareilcomportamentodellemacchine

• Quantisonoilinguaggidiprogrammazionepresentialmondo?• Piùdi1000• Ipiùdiffusisonoelencatiqui:http://www.tiobe.com/tiobe-index/

• Sinoticheognilinguaggiodiprogrammazionehaavutooriginedamotivazionispecifiche

IntroduzioneallaProgrammazione 22/46

Page 24: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazione– 2/2

IntroduzioneallaProgrammazione 23/46

Page 25: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazione:ElementiCostitutivi• Ognilinguaggiodiprogrammazione• Disponediuninsiemedi“parolechiave”• Keyword• Ècaratterizzatodaduecomponenti,complementaril’unaconl’altra• Sintassi: insiemedelleregolechespecificanocomecomporreistruzionibenformate

• Semantica: specificailsignificatodiogniistruzionebenformata,valeadirelasuccessionedelleoperazionichevengonocompiutequandol’istruzionevieneeseguita

IntroduzioneallaProgrammazione 24/46

Page 26: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazione:Classificazione

• Linguaggidialtolivello(viciniall’utente)• Vgenerazione: linguaggididescrizionedeiproblemiorientatiallarisoluzioneautomatica

• IVgenerazione: linguaggiperspecificiambitiapplicativi(ades.MATLAB)• IIIgenerazione: linguaggiimperativieproceduralidiusogenerale

• Linguaggidibassolivello (viciniall’hardware)• IIgenerazione: linguaggiassemblativi(usodicodicimnemoniciperleistruzioni)

• Igenerazione: linguaggimacchina(sequenzedibit)

Utente

Hardware

IntroduzioneallaProgrammazione 25/46

Page 27: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazionediPrimaGenerazione• Glielaboratoricomprendonoinmanieradirettasoloistruzioniinbinario• Ciascunelaboratorehailpropriosetdiistruzioni

• I primiprogrammieranofortementedipendentidallamacchina• Piùprecisamenteeranoscrittiinlinguaggiomacchina (ocodicemacchina)

• Pro• Moltoefficienteperlemacchine

• Contro• Difficiledaprogrammarepergliumani• Nonportabile

• Ancoramotoutilizzatoperlaprogrammazione difunzioni abassolivello• Driver,interfacceversofirmwareehardware,etc

IntroduzioneallaProgrammazione 26/46

Page 28: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggioMacchina• Illinguaggiomacchinaèdirettamente eseguibile dall’elaboratore• Senzanessunatraduzione

• Istruzioni edoperandi relativialprogrammainesecuzione sonocaricatiinmemoria equindisonomemorizzatiinformabinaria

• Vincolo: conoscenzadeimetodidirappresentazionedelleinformazioniutilizzati

• Esempio• Istruzione:carica nelregistro• 10010000 11001100

IntroduzioneallaProgrammazione 27/46

Page 29: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazionediSecondaGenerazione– 1/2• Unlinguaggioassembly (oassemblativo)utilizzacodicimnemoniciperrappresentareleistruzioni• Ilcodicepuòesserelettoescrittodaprogrammatoriumani• Maèancorafortementedipendentedallamacchina

• Peressereeseguitodaunelaboratore,uncodiceassembly deveessereconvertito (daunassemblatore),inunaformacomprensibiledallamacchina• Medianteunprocessochiamatoassemblaggio

IntroduzioneallaProgrammazione 28/46

Page 30: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazionediSecondaGenerazione– 2/2• Pro• Adattiadessereusatiinelaborazioniestremamenteintensive• Giochi,videoediting,manipolazionegrafica,rendering,etc

• Contro• Necessitàdiconoscereindettagliolecaratteristichedellamacchina(registri,dimensionedeidati,setdiistruzioni,etc)• Anchesemplicialgoritmirichiedonomolteistruzioni

IntroduzioneallaProgrammazione 29/46

Page 31: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazionediTerzaGenerazione– 1/2• Ilinguaggidiprogrammazionedialtolivello usanoparole English-like,notazionematematica epunteggiatura perscrivereprogrammi• Sonopiùviciniailinguaggiumani• Ilprogrammatorepuòastrarredaidettaglilegatiall’architetturaedesprimereiproprialgoritmiinmodosemplice

• Leistruzioniesprimonounaseriediazioni

• Pro• Portabili,indipendentidallamacchina• Human-friendly

• Contro• Nonsempresonomoltoefficienti

IntroduzioneallaProgrammazione 30/46

Page 32: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

LinguaggidiProgrammazionediTerzaGenerazione– 2/2

• Lemacchinecomprendonoedeseguonosoltantocodicimacchina

• Ilprogrammaprimadiessereeseguitodeveesseretradottoinlinguaggiomacchina

• Traduttore

• Latraduzionevieneeffettuatadauncompilatore,uninterprete,ounacombinazionedientrambi

IntroduzioneallaProgrammazione 31/46

Page 33: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Traduttore• Iltraduttoreèunprogrammacheconverte ilcodicediprogrammiscrittiinundatolinguaggiodiprogrammazione (sorgenti)nellacorrispondenterappresentazioneinlinguaggiomacchina (eseguibili)

IntroduzioneallaProgrammazione

Faciledacapireperil

programmatore

Contieneparoleininglese

Programmatraduttore

Illinguaggiodeicomputer

NumeriBinari

Linguaggiodialtolivello

Linguaggiomacchina

32/46

Page 34: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Assemblatorevs.Traduttore

Programma inlinguaggio diprogrammazione (Codicesorgente)

Programma inlinguaggiomacchina (Codice oggetto)

Traduttore

Programma inlinguaggioassemblativo (Codice sorgente)

Programma inlinguaggiomacchina (Codice oggetto)

Assemblatore

IntroduzioneallaProgrammazione 33/46

Page 35: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

TipidiTraduttore:Compilatorevs.Interprete– 1/2• Compilatore• Accettainingressol’interoprogramma(istruzionichelocompongono)eproduceinuscitalarappresentazionedell’interoprogrammainlinguaggiomacchina

• Interprete• Traduceedeseguedirettamenteciascunaistruzionedelprogrammasorgente• Istruzioneperistruzione• Unaallavolta

IntroduzioneallaProgrammazione 34/46

Page 36: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

TipidiTraduttore:Compilatorevs.Interprete– 2/2• Qualedelleduesoluzionièlamigliore?• Compilazione• Pro: applicazionipiùveloci• Contro:maggiorlavoronelprocessodimessaapuntoemanutenzione• Interpretazione• Pro: consentetempidisviluppopiùcontenuti• Contro: produceprogrammimenoefficienti

IntroduzioneallaProgrammazione 35/46

Page 37: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Compilatore

IntroduzioneallaProgrammazione 36/46

Page 38: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Interprete

Unità CentralediElaborazione Memoria

Busdisistema

ProgrammaP inunlinguaggioadaltolivelloLDatidelprogrammaP

Programmainterprete dellinguaggio adaltolivello L

Datidell’interprete

IntroduzioneallaProgrammazione 37/46

Page 39: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

CPUcomeInterpretedelsuoLinguaggioMacchina

Unità CentralediElaborazione(CPU): interprete ed esecutore dellinguaggio macchina L

Memoria

Busdisistema

ProgrammaP inlinguaggiomacchinaL

DatidelprogrammaP

IntroduzioneallaProgrammazione 38/46

Page 40: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ParadigmidiProgrammazione– 1/2• Èpossibileaffrontareilproblemadelladescrizionedeiprogrammiinmodidifferenti

• Definizione: unparadigmadiprogrammazioneèunmodelloconcettualecheforniscela“struttura”diunprogramma

• Perparadigmidiprogrammazionesiintendonoi“modi”incuivengonospecificatiiprogrammi

• Nonsitrattadeltipodilinguaggiousato,madelcontestopiùampioalqualeuncertolinguaggioappartiene• Comevieneorganizzatalaprogrammazione econqualicaratteristiche• Stile,livellodidettaglio,“formamentis”delprogrammatore,etc

IntroduzioneallaProgrammazione 39/46

Page 41: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ParadigmidiProgrammazione– 2/2• Soluzionidifferenti costituisconoparadigmidiprogrammazionedifferenti

• Iparadigmi piùcomuni sono• Imperativo/Procedurale• AdOggetti• Funzionale

IntroduzioneallaProgrammazione 40/46

Page 42: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ProgrammazioneImperativa/Procedurale• Iprogrammisonosequenzedicomandicheagisconosuidatiosull’ordinediesecuzionedelleistruzioni

• Ilprogrammatoredevedefiniretuttelestrutturedatietuttiglialgoritmicheoperanosudiesse

• Chiamateasottoprogrammigestitecompletamentedalprogrammatore• Anchesenonsempre

• Costruttitipici: assegnamento,cicli,if-then-else,procedureconpassaggiodiparametri,etc

• Esempi: Assembly,FORTRAN,C,COBOL,Pascal,etc

IntroduzioneallaProgrammazione 41/46

Page 43: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ProgrammazioneadOggetti• Iprogrammidefinisconodelleastrazioni(classi)dielementideldominiodiapplicazionedelprogramma

• Leclassicontengonoinformazionisuidatimaancheilcodicepergestirli• Ingenereditipoimperativo

• Esempi: C++,Java,etc

IntroduzioneallaProgrammazione 42/46

Page 44: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ProgrammazioneFunzionale–1/2• Ilprogrammaèunadefinizionedifunzioninelsensopiùmatematicodeltermine

• Approcciodichiarativo: ilprogrammaèunadefinizionedifunzione,il“calcolo”èbuilt-in

• Ordinesuperiore: gliargomentidellefunzionidefinitepossonoesseresiavaloriditipiprimitivichealtrefunzioni

• L’interpretesioccupadivalutare,inbaseallefunzionidibaseeaquelledefinite,unaqualsiasiespressionebenformata

• L’algoritmodivalutazionenonèscrittodalprogrammatore,mavariaasecondadellinguaggio

IntroduzioneallaProgrammazione 43/46

Page 45: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

ProgrammazioneFunzionale–2/2• Ilinguaggifunzionalipossonoessereusaticomemetalinguaggi perdefinirealtrilinguaggi

• Lemoderneimplementazionisonopiuttostoefficienti

• Esempi:Miranda,Haskell,LISP,etc

IntroduzioneallaProgrammazione 44/46

Page 46: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Riassumendo• Algoritmo: descrizionedicomesirisolveunproblema

• Programma: algoritmoscrittoinmodochepossaessereeseguitodauncalcolatore(linguaggiodiprogrammazione)

• Linguaggiomacchina: linguaggioeffettivamente“compreso”dauncalcolatore,caratterizzatoda• Istruzioniprimitivesemplici (ades.max 2operandi)• Attenzioneall’efficienza (costi,complessità,velocità)• Difficileenoiosodautilizzareperunprogrammatore

• Dueaspettirilevanti• Produrrealgoritmi: capirelasequenzadipassicheportanoallasoluzionediunproblema

• Codificarliinprogrammi: renderlicomprensibilialcalcolatore

IntroduzioneallaProgrammazione 45/46

Page 47: Introduzione alla Programmazione - UNISAcesposito/.../Argomento06_IntroProgrammazion… · Algoritmo Programma Introduzione alla Programmazione 10/46. Cos’è un Programma –2/2

Riferimenti• Libroditesto• Capitolo4• Paragrafi1,2e3

IntroduzioneallaProgrammazione 46/46