



Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Il concetto di algoritmo e le sue proprietà, che sono necessarie per garantire che un computer possa portare a termine il suo compito. Vengono discusse le definizioni intuitive e formali di algoritmo, esempi di algoritmi in informatica, le proprietà di finitezza, definitezza, input, output e efficacia definite da Donald Knuth, e il processo di analisi, progetto, programmazione, testing e manutenzione di un algoritmo.
Tipologia: Dispense
1 / 5
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




Il concetto di Algoritmo: Nella nostra carrellata storica abbiamo visto che molti hanno tentato per secoli di costruire delle macchine automatiche in grado di realizzare delle operazioni e di produrre dei risultati senza l’intervento dell’uomo: da Pascal e Poleni a Babbage e poi Turing, Zuse fino ai grandi scienziati e imprenditori moderni. Fare delle operazioni in maniera automatica significa: realizzare degli algoritmi senza che sia dovuto l’intervento dell’uomo. Poiché questo è l’unico scopo di una macchina automatica e poiché noi siamo interessati a capire come funziona una tale macchina, sarà utile, prima di proseguire, cercare di comprendere bene cosa sia un algoritmo. Il dizionario Treccani lo definisce più o meno così: “Termine, derivato dall’appellativo al-Khuwārizmī del matematico Muḥammad ibn Mūsa del 9° sec., originario di quello che è l’attuale Uzbekistan, che designa qualunque schema o procedimento sistematico di calcolo. Con un algoritmo si tende a esprimere in termini matematicamente precisi il concetto di procedura generale, di metodo sistematico valido per la soluzione di una certa classe di problemi”. Se questa definizione non è abbastanza chiara, proviamo più semplicemente a dirlo così: “un algoritmo è una sequenza finita di operazioni da svolgere per risolvere un dato problema”. Ancora oggi non esiste una «definizione di algoritmo» che ne definisca pienamente il concetto in termini formali ci si deve accontentare di definizioni più o meno intuitive come quella prima evidenziata. Uno dei tentativi più riusciti è quello proposto da Turing con la sua «macchina» ed è proprio per questo motivo che la Macchina di Turing è ancora oggi lo strumento più potente utilizzato per decidere se un dato procedimento sia o meno calcolabile con una macchina automatica. Detto questo, quello di «Algoritmo» è forse il più importante concetto dell’Informatica e noi, per comodità, lo considereremo nella sua accezione più semplice che ribadiamo: “un algoritmo è una sequenza finita di operazioni da svolgere per risolvere un dato problema”. Anche senza bisogno che qualcuno ce lo spieghi, vediamo subito che per essere sicuri di poter fare un’ottima pasta frolla abbiamo bisogno che:
un'indicazione testuale descrive tipicamente l'attività da svolgere
BIT e BYTE Abbiamo già visto che i computer hanno bisogno di un proprio linguaggio per poter comunicare tra loro e con gli esseri umani. Così come gli uomini utilizzano dei simboli elementari nel proprio linguaggio (fonemi per linguaggio verbale; caratteri per linguaggio scritto), anche il computer utilizza delle proprie entità elementari che noi codifichiamo in: 0 e 1 BIT (Binary digIT). Tutta l’informatica è costruita su questi due simboli. Perché vengono utilizzati solo i due simboli 0 e 1? La ragione è già detta e facilmente intuibile: dal punto di vista tecnologico è molto facile rilevare il passaggio o meno di una corrente all’interno di un conduttore. Sarebbe altresì molto difficile e dispendioso costruire dei circuiti in grado di distinguere tra dieci segnali diversi (0…9). Quella binaria invece è una «informazione di stato» molto semplice che può assumere soltanto due valori: vero/falso; acceso/spento; si/no. In pratica:
indipendentemente dalle sue prestazioni o dal suo costo, può essere ricondotto ad un modello unitario: uno schema di «blocchi funzionali» che lo descrive in termini generici. Il modello di von Neumann è di notevole importanza in quanto descrive l'architettura hardware su cui è basata la maggior parte dei moderni computer programmabili. Fu sviluppato negli anni ‘40 dal matematico ungherese John von Neumann nell’ambito del progetto EDVAC*. Da una parte abbiamo l’uomo, dall’altra abbiamo il computer. Due linguaggi completamente diversi. Serve qualcosa che consenta di trasferire l’informazione da una parte all’altra. Questa prima componente è una «unità di ingresso al mondo dei BIT» È un mediatore linguistico capace di acquisire informazioni dall’Utente ovvero dal mondo esterno e di trasferirle al Computer. In modo del tutto simmetrico abbiamo necessità di trasferire informazione dal mondo del Computer al mondo Esterno: al mondo degli Esseri Umani. Dati che sono codificati in forma di BIT all’interno della memoria del computer, debbono essere trasferiti a noi in una forma che sia per noi comprensibile. «unità di uscita dal mondo dei BIT» CPU: La Central Processing Unit (CPU) o Unità di Elaborazione in italiano risiede all’interno del computer. È il suo cuore e ha la funzione di: «elaborare i dati ricevuti in ingresso, secondo gli ordini impartiti dal programma» Ma questo può essere fatto solo con l’ausilio di un’altra unità, ossia la «Unità di Memoria» nella quale risiedono sia i dati da elaborare, sia i programmi da eseguire. Memoria: L’Unità di Memoria, come detto, ha la funzione di contenere sia i dati da elaborare, sia il programma delle istruzioni da eseguire. In prima approssimazione possiamo distinguere due tipi fondamentali di memoria: