Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmi e Computer: Introduzione all'Informatica, Appunti di Elementi di Informatica

appunti presi in classe sulle slides

Tipologia: Appunti

2018/2019

Caricato il 26/03/2019

sara-bissoli
sara-bissoli 🇮🇹

3 documenti

1 / 7

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
CAPITOLO 2 – ALGORITMI E COMPUTER
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
1 E 2 5matematico 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ì: Il concetto di
Algoritmo “UN ALGORITMO È UNA SEQUENZA FINITA DI OPERAZIONI DA SVOLGERE PER
RISOLVERE UN DATO PROBLEMA”.
Perché queste due definizioni, così diverse, di algoritmo?
Perché 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”.
Se qualcuno vi insegna la ricetta della pasta frolla, vi sta fornendo un algoritmo:
In una terrina mettete la farina
formate una conca in mezzo ad essa e rompete al centro le uova
ora metteteci lo zucchero, la scorza di limone grattugiata, il pizzico di sale e il burro
quindi iniziate a lavorare gli ingredienti con la punta delle dita di modo che l'impasto non si riscaldi
ad operazione conclusa formate una palla, avvolgetela con la pellicola trasparente per alimenti e
adagiatela in frigorifero a riposare per 30 minuti.
Se l’algoritmo è corretto e voi lo svolgete rigorosamente, certamente la vostra pasta frolla sarà ottima.
Anche senza bisogno che qualcuno ce lo spieghi, vediamo subito che per essere sicuri di poter fare un’ottima
pasta frolla abbiamo bisogno che:
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Algoritmi e Computer: Introduzione all'Informatica e più Appunti in PDF di Elementi di Informatica solo su Docsity!

CAPITOLO 2 – ALGORITMI E COMPUTER

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 1 E 2 5ammad 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ì: Il concetto di Algoritmo “UN ALGORITMO È UNA SEQUENZA FINITA DI OPERAZIONI DA SVOLGERE PER RISOLVERE UN DATO PROBLEMA”.

Perché queste due definizioni, così diverse, di algoritmo?

Perché 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”.

Se qualcuno vi insegna la ricetta della pasta frolla, vi sta fornendo un algoritmo:

  • In una terrina mettete la farina
  • formate una conca in mezzo ad essa e rompete al centro le uova
  • ora metteteci lo zucchero, la scorza di limone grattugiata, il pizzico di sale e il burro
  • quindi iniziate a lavorare gli ingredienti con la punta delle dita di modo che l'impasto non si riscaldi
  • ad operazione conclusa formate una palla, avvolgetela con la pellicola trasparente per alimenti e adagiatela in frigorifero a riposare per 30 minuti.

Se l’algoritmo è corretto e voi lo svolgete rigorosamente, certamente la vostra pasta frolla sarà ottima.

Anche senza bisogno che qualcuno ce lo spieghi, vediamo subito che per essere sicuri di poter fare un’ottima pasta frolla abbiamo bisogno che:

  1. Ci sia dato il materiale con cui lavorare (gli ingredienti)
  2. Ci sia spiegato quale procedimento applicare attraverso un numero finito di istruzioni elementari (la ricetta)
  3. Tutto questo, alla fine, produce un risultato (la pasta frolla).

Utilizzando UN LINGUAGGIO PIÙ AFFINE ALL’INFORMATICA , abbiamo bisogno:

1. Di un input 2. Di un algoritmo 3. E noi, alla fine, dobbiamo produrre un output.

ESEMPI DI ALGORITMI IN INFORMATICA SONO :

  • L’algoritmo di Euclide per il calcolo del Massimo Comun Divisore (MCD) di due numeri interi
  • L’algoritmo per la ricerca delle soluzioni di una equazione di II grado
  • L’algoritmo PageRank di Google, che stabilisce quale sito far apparire prima nei risultati di una ricerca

Ma anche i seguenti sono esempi di algoritmi Le indicazioni strada li per raggiungere una data località, le istruzioni per assemblare un mobile

I DIAGRAMMI DI FLUSSO

In informatica il diagramma di flusso (in inglese flow chart ) è un linguaggio di modellazione grafico per rappresentare il flusso di controllo ed esecuzione di algoritmi ; esso consente di descrivere in modo schematico ovvero grafico:

  • le operazioni da compiere , rappresentate mediante sagome convenzionali (rettangoli, rombi, esagoni, parallelogrammi, rettangoli smussati...), ciascuna con un preciso significato logico e all'interno delle quali un'indicazione testuale descrive tipicamente l'attività da svolgere
  • la sequenza nella quale devono essere compiute , rappresentate con frecce di collegamento (flusso).

Per questa loro connotazione topologica i diagrammi di flusso possono essere ricondotti alla classe più ampia dei diagrammi a blocchi , che a loro volta rientrano nell'ancora più vasta categoria delle mappe concettuali , utilizzate soprattutto per la descrizione e la rappresentazione delle informazioni e della conoscenza.

PROPRIETÀ DEGLI ALGORITMI

Abbiamo visto che quello di algoritmo non è un concetto strettamente informatico.

In Informatica tuttavia, per essere definito tale, un algoritmo deve rispettare alcune proprietà , definite negli anni ‘60 da Donald Knuth (Stanford University):

  • (^) Finitezza : Un algoritmo deve terminare dopo un numero finito di passi
  • Definitezza : Ogni passo deve essere rigorosamente definito; le azioni da svolgere devono essere rigorose e non ambigue (operazioni elementari)
  • Quali problemi possono essere risolti con un approccio di tipo algoritmico?
  • Come può essere reso più semplice scoprire e definire un algoritmo?
  • Come possono essere migliorate le tecniche di rappresentazione e di comunicazione degli algoritmi?
  • Come possono essere analizzate e comparate le caratteristiche di diversi algoritmi?
  • Come possiamo utilizzare gli algoritmi per manipolare l’informazione?
  • Come possiamo applicare degli algoritmi per produrre comportamenti intelligenti?
  • Che impatto può avere l’applicazione degli algoritmi sulla società?

Rispondere a queste domande presuppone di operare con un elevato grado di astrazione il che significa: ignorare i dettagli interni di un dato oggetto, per concentrarsi sulle sue proprietà esterne*.

(*Liberamente tratto da «Computer Science: an overview 11° ed» - j. Brookshear (Pearson 2012))

IL COMPUTER

Ripartiamo dalla definizione di Computer: «Macchina in grado di elaborare dati, automatica e programmabile» e dalle sue due componenti fondamentali:

  • La componente fisica ovvero «Hardware» (stampante, cd, usb, hard disk etc…)
  • La componente immateriale ovvero «Software» (antivirus, adobe, office etc…)

La prima cosa da fare per cercare di spiegare il computer è quella di porsi la seguente domanda: Perché il computer è diventato uno strumento così importante e pervasivo della nostra società?

PERCHÉ TUTTA L’INFORMAZIONE DEL PIANETA PUÒ ESSERE TRADOTTA ATTRAVERSO SEQUENZE DI IMPULSI ELETTRICI Immagini, testi, voce, dati, film, musica, vengono codificati in sequenze di BIT 0110011100110…

A differenza della mente umana che è in grado di affrontare e risolvere problemi nuovi utilizzando capacità cognitive, intuizione e ragionamento, il computer, che è una macchina, è invece un semplice «esecutore» di istruzioni impartite dall'esterno:

Le istruzioni vengono impartite ATTRAVERSO UN ALGORITMO studiato per risolvere un problema a partire da dei dati di input affinché si produca un risultato in output, attraverso l’elaborazione dei dati stessi.

Il computer, in quanto mero esecutore di algoritmi, deve essere opportunamente istruito e ciò avviene ad opera di un programmatore capace di comunicare e interagire con la macchina attraverso dei linguaggi di programmazione che possono essere ad alto, medio o basso livello di astrazione.

Il più basso livello di astrazione è il cosiddetto «linguaggio macchina».

COSA SONO I BIT E COSA È LA CODIFICA DIGITALE?

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:

  • La corrente c’è => 1
  • La corrente non c’è => 0

Attraverso diverse combinazioni di 1 e 0 può essere rappresentato, in un computer, l’intero «Universo delle Informazioni»

Il BIT è l’elemento fondamentale di informazione ma normalmente viene aggregato in un insieme che costituisce esso stesso un elemento importante in informatica. Questo è il:

BYTE

Il BYTE è costituito da una sequenza di 8 BIT. Poiché ad un BYTE può essere associato uno dei nostri caratteri, esso talvolta viene anche detto «carattere».

Il BYTE è anche l’entità elementare utilizzata nella memorizzazione

Un altro termine importante da conoscere e che spesso viene utilizzato come riferimento è «WORD» che è dato da 2 BYTE e LONGWORD (4 BYTE).

Con WORD si rappresentano per esempio i piccoli interi, con LONGWORD gli interi e i numeri reali, e così via

I MULTIPLI DEL BIT E DEL BYTE

È importante a questo punto fare una breve panoramica su quelli che sono i «multipli» del BIT/BYTE che ci servono per rappresentare, per esempio, la capacità di memoria o la velocità di un dispositivo di archiviazione.

  • KILO k ≈ un migliaio Kb (Kilobit) – KB (Kilobyte)
  • MEGA M ≈ un milione Mb (Megabit) – MB (Megabyte)
  • GIGA G ≈ un miliardo Gb (Gigabit) – GB (Gigabyte)
  • TERA T ≈ mille miliardi Tb (Terabit) – TB (Terabyte)

È importante sottolineare che i valori dati (come potenze di 2) valgono quando si parla di supporti di memorizzazione, non nel caso ci si riferisca a questi valori per misurare la velocità di trasmissione.

Per esempio, quando vi interconnettete a Internet e vi viene segnalato che state scaricando un file alla velocità di 300Kb/s, sappiate che in questo caso 300K vale 300.000 e non 307.200 (300X1024).

CPU

La Central Processing Unit (CPU) o Unità di Elaborazione in italiano risiede all’interno del computer.

FUNZIONE: «elaborare i dati ricevuti in ingresso, secondo gli ordini impartiti dal programma» questo può essere fatto solo con l’ausilio di un’altra unità, ossia la «Unità di Memoria» nella quale risiedono:

  • i dati da elaborare
  • 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:

La MEMORIA CENTRALE RAM (Random Access Memory) = è una memoria «volatile» che ha la funzione di supportare le attività di elaborazione (alta velocità, bassa capacità)

La MEMORIA DI MASSA (Hard Disk) = è «permanente» e serve a memorizzare i dati e i programmi che debbono poter essere utilizzati anche in più sessioni di utilizzazione del computer