![Page 1: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/1.jpg)
FondamentidiInformaticaIntroduzioneal la Programmazione
Prof. Chr i st ian Espos i toCorso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )A .A . 2016/17
IntroduzioneallaProgrammazione
![Page 2: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/2.jpg)
IProgrammi– 1/2• Negliultimiannil’Information&Communication Technology(ICT)èdiventatounelementostrategicoperilbusiness,oltrecheunostrumentoessenzialeintutteleattivitàlavorativeesociali• Haacquisitounvaloreirrinunciabilepertutteleistituzionipubblicheeprivate,perleimprese,masoprattuttopertuttinoi
• Ilprogrammarappresental’elementodibaseperilmondodell’ICT
IntroduzioneallaProgrammazione 02/46
![Page 3: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/3.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/4.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/5.jpg)
Perchéimparareaprogrammare?– 2/7• Imparareunnuovolinguaggiopermettedi• Usarenuoveformeespressive• Creareoggetticheinrealtàsembranonontangibili,macheinrealtàlosono
• Losonoperchéinmolticasihannocambiatoilnostromododivivere,maancheperilloroimpattoeconomico
IntroduzioneallaProgrammazione 04/46
![Page 6: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/6.jpg)
Perchéimparareaprogrammare?– 3/7• Utilizzandoideecreativeecompetenzediprogrammazioneèpossibilecrearetecnologierivoluzionariestandocomodamentesedutialpropriocomputer• Laprogrammazioneconsenteallenostreideediprendereformaematerializzarsi• Disolitoiltuttonascedallanecessitàdirisolvereproblemiconcreti
IntroduzioneallaProgrammazione 05/46
![Page 7: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/7.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/8.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/9.jpg)
Perchéimparareaprogrammare?– 6/7• Finoalfebbraio2005nonerapossibilecondividereerenderepubblicisullareteInternetiproprivideo• Perrisolverequestoproblema,3ragazzichelavoravanoaPaypal (ChadHurley,SteveChen eJawed Karim)crearonoYouTube
IntroduzioneallaProgrammazione 08/46
![Page 10: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/10.jpg)
Perchéimparareaprogrammare?– 7/7• LarryPageeSergey Brin immaginaronounluogochepermettesselorodiaccedere,inmanierasempliceerapida,atutteleinformazionipresentisullareteInternet• PerfarequestohannocreatoGoogle,unpotentemotorediricercachevieneutilizzatodadiversimiliardidipersoneintuttoilmondo
IntroduzioneallaProgrammazione 09/46
![Page 11: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/11.jpg)
Cos’èunProgramma– 1/2• Definizione1: implementazionediunalgoritmoespressainunlinguaggiodiprogrammazionespecifico
• Definizione2: notazione(formaleenonambigua)concuièpossibiledescrivereglialgoritmi
Problema ModellazionedelProblema Algoritmo Programma
IntroduzioneallaProgrammazione 10/46
![Page 12: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/12.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/13.jpg)
ChiCreaunProgramma?• Ilprogrammatore sioccupadi• Progettareunalgoritmoefficaceperlarisoluzionediunproblemadato• Tradurrequestoalgoritmoinistruzionieseguibilidauncomputermedianteunlinguaggiodiprogrammazione
IntroduzioneallaProgrammazione 12/46
![Page 14: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/14.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/15.jpg)
ComevieneScrittounProgramma?– 2/8• Programmare èun’operazionecreativa• Nonesisteunproblemaugualeaunaltroenonesistonosoluzioniuniversali
• Programmatoridiversiscrivonoprogrammidiversiperrisolverelostessoproblema• Lesoluzionipossonoessereugualmenteefficienti
• Programmareèun’operazioneorganizzataperstep successivi
• Ècompletamenteinefficienteunapproccio“diretto”• Scriveredirettamenteilprogrammadefinitivopartendodalproblema
IntroduzioneallaProgrammazione 14/46
![Page 16: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/16.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/17.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/18.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/19.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/20.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/21.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/22.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/23.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/24.jpg)
LinguaggidiProgrammazione– 2/2
IntroduzioneallaProgrammazione 23/46
![Page 25: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/25.jpg)
LinguaggidiProgrammazione:ElementiCostitutivi• Ognilinguaggiodiprogrammazione• Disponediuninsiemedi“parolechiave”• Keyword• Ècaratterizzatodaduecomponenti,complementaril’unaconl’altra• Sintassi: insiemedelleregolechespecificanocomecomporreistruzionibenformate
• Semantica: specificailsignificatodiogniistruzionebenformata,valeadirelasuccessionedelleoperazionichevengonocompiutequandol’istruzionevieneeseguita
IntroduzioneallaProgrammazione 24/46
![Page 26: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/26.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/27.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/28.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/29.jpg)
LinguaggidiProgrammazionediSecondaGenerazione– 1/2• Unlinguaggioassembly (oassemblativo)utilizzacodicimnemoniciperrappresentareleistruzioni• Ilcodicepuòesserelettoescrittodaprogrammatoriumani• Maèancorafortementedipendentedallamacchina
• Peressereeseguitodaunelaboratore,uncodiceassembly deveessereconvertito (daunassemblatore),inunaformacomprensibiledallamacchina• Medianteunprocessochiamatoassemblaggio
IntroduzioneallaProgrammazione 28/46
![Page 30: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/30.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/31.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/32.jpg)
LinguaggidiProgrammazionediTerzaGenerazione– 2/2
• Lemacchinecomprendonoedeseguonosoltantocodicimacchina
• Ilprogrammaprimadiessereeseguitodeveesseretradottoinlinguaggiomacchina
• Traduttore
• Latraduzionevieneeffettuatadauncompilatore,uninterprete,ounacombinazionedientrambi
IntroduzioneallaProgrammazione 31/46
![Page 33: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/33.jpg)
Traduttore• Iltraduttoreèunprogrammacheconverte ilcodicediprogrammiscrittiinundatolinguaggiodiprogrammazione (sorgenti)nellacorrispondenterappresentazioneinlinguaggiomacchina (eseguibili)
IntroduzioneallaProgrammazione
Faciledacapireperil
programmatore
Contieneparoleininglese
Programmatraduttore
Illinguaggiodeicomputer
NumeriBinari
Linguaggiodialtolivello
Linguaggiomacchina
32/46
![Page 34: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/34.jpg)
Assemblatorevs.TraduttoreProgramma inlinguaggio diprogrammazione (Codicesorgente)
Programma inlinguaggiomacchina (Codice oggetto)
Traduttore
Programma inlinguaggioassemblativo (Codice sorgente)
Programma inlinguaggiomacchina (Codice oggetto)
Assemblatore
IntroduzioneallaProgrammazione 33/46
![Page 35: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/35.jpg)
TipidiTraduttore:Compilatorevs.Interprete– 1/2• Compilatore• Accettainingressol’interoprogramma(istruzionichelocompongono)eproduceinuscitalarappresentazionedell’interoprogrammainlinguaggiomacchina
• Interprete• Traduceedeseguedirettamenteciascunaistruzionedelprogrammasorgente• Istruzioneperistruzione• Unaallavolta
IntroduzioneallaProgrammazione 34/46
![Page 36: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/36.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/37.jpg)
Compilatore
IntroduzioneallaProgrammazione 36/46
![Page 38: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/38.jpg)
Interprete
Unità CentralediElaborazione Memoria
Busdisistema
ProgrammaP inunlinguaggioadaltolivelloLDatidelprogrammaP
Programmainterprete dellinguaggio adaltolivello L
Datidell’interprete
IntroduzioneallaProgrammazione 37/46
![Page 39: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/39.jpg)
CPUcomeInterpretedelsuoLinguaggioMacchina
Unità CentralediElaborazione(CPU): interprete ed esecutore dellinguaggio macchina L
Memoria
Busdisistema
ProgrammaP inlinguaggiomacchinaL
DatidelprogrammaP
IntroduzioneallaProgrammazione 38/46
![Page 40: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/40.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/41.jpg)
ParadigmidiProgrammazione– 2/2• Soluzionidifferenti costituisconoparadigmidiprogrammazionedifferenti
• Iparadigmi piùcomuni sono• Imperativo/Procedurale• AdOggetti• Funzionale
IntroduzioneallaProgrammazione 40/46
![Page 42: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/42.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/43.jpg)
ProgrammazioneadOggetti• Iprogrammidefinisconodelleastrazioni(classi)dielementideldominiodiapplicazionedelprogramma
• Leclassicontengonoinformazionisuidatimaancheilcodicepergestirli• Ingenereditipoimperativo
• Esempi: C++,Java,etc
IntroduzioneallaProgrammazione 42/46
![Page 44: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/44.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/45.jpg)
ProgrammazioneFunzionale–2/2• Ilinguaggifunzionalipossonoessereusaticomemetalinguaggi perdefinirealtrilinguaggi
• Lemoderneimplementazionisonopiuttostoefficienti
• Esempi:Miranda,Haskell,LISP,etc
IntroduzioneallaProgrammazione 44/46
![Page 46: Introduzione alla Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/46.jpg)
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 Programmazionecesposito/materiale/lezioni/Lezione...I Programmi –1/2 • Negli ultimi anni l’Information & CommunicationTechnology (ICT) è diventato un elemento](https://reader033.vdocuments.pub/reader033/viewer/2022041706/5e45386ac5ed5e4dd776aff0/html5/thumbnails/47.jpg)
Riferimenti• Libroditesto• Capitolo4• Paragrafi1,2e3
IntroduzioneallaProgrammazione 46/46