LEZIONE 1
Video rappresenta evoluzione del valore dei brand a partire dagli anni 2000
2018 serie di marchi legati a mondo dell’informatica in qualche modo. Valore dell’informazione è sempre
più importante.
Nessuna di queste aziende può essere immaginata senza sito web
Cos’è e come gestire l’informazione dato
Prima distinzione da fare è iniziare a distinguere cos’è il (elemento oggettivo riferito a un elemento o
l’informazione
evento) e cos’è (è un modo di interpretare il nostro dato nel momento in cui facciamo dei
collegamenti tra i dati e diamo un obiettivo).
Es. concetto temperatura 38°
38° è un dato se lo colleghiamo ad altri dati e gli diamo un obiettivo ha un’interpretazione e rappresenta
un’informazione diversa. Se 38° è temperatura che ci viene rilevata prima di entrare in un ristorante non mi
farà entrare mentre se è la temperatura rilevata su un pezzo di carne significa che dovrà continuare a
cuocere.
Nel momento in cui diamo un collegamento ad altri dati e gli diamo un obiettivo ha un’interpretazione,
quindi rappresenta un’informazione diversa.
Nel momento in cui diamo significato a dati oggettivi (= ad esempio un numero), nel momento in cui
creiamo una finalità possiamo costruire una rappresentazione dei dati in modo da estrarre conoscenza.
Possiamo a quel punto definire la conoscenza, elaborarla e interpretarla.
L'informazione ha l'obiettivo di creare una rappresentazione dei dati in modo da estrarre conoscenza
tramite la sua elaborazione oppure migliorare la loro interpretazione da parte dell'utente.
L'informazione ha l'obiettivo di creare una rappresentazione dei dati in modo da estrarre conoscenza
tramite la sua elaborazione oppure migliorare la loro interpretazione da parte dell'utente.
Il modo e la forma in cui trattiamo i dati diventano fortemente dipendenti dagli obiettivi che abbiamo.
Possiamo definire l’informatica come uno studio sistematico degli algoritmi che descrivono e trasformano
l’informazione -> teoria, analisi, progetto, studio dell’efficienza, realizzazione e applicazione.
«l’informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro
teoria, analisi, progetto, efficienza, realizzazione e applicazione.»
È uno studio sistematico, l’informatica non è un far andare le cose, vi stanno dietro teorie, è una scienza di
gestione dell’informazione che si occupa di algoritmi (= serie di passi per elaborare l’informazione). Non è
solo un modo per descrivere l’informazione ma anche un modo per trasformarla. Esempio più semplice di
trasformazione è gestione di schermi di diverse dimensioni, richiede di trasformare la stessa info per
trasformarla in modo diverso. L’informazione è qualcosa con cui abbiamo a che fare tutti i giorni.
L’informatica è un modo per rappresentare e gestire l’informazione.
L’informatica è lo studio sistematico di tecniche e metodi per:
Rappresentare
• l’informazione: astrarre i concetti importanti da quelli trascurabili,
per modellare opportunamente la realtà di interesse
Elaborare gestire
• e l’informazione: uso e trasformazione dell’informazione in modo funzionale agli
obiettivi
Elaborazione per l’informazione, parliamo di trasformazione automatica cioè capire come velocizzare
quest’informazione perché spesso bisogna gestire grandi quantità di calcoli.
In caso di grandi quantità di dati e sia necessaria un'elaborazione veloce dell'informazione, si ricorre all'uso
di strumenti automatici: calcolatori elettronici.
Passaggio da gradi celsius a fahrenheit è una forma di trasformazione, elaborazione dell’informazione. Se la
facciamo a mano è trasformazione dell’informazione, quella in cui ci focalizziamo nell’informatica è una
trasformazione automatica, cioè capire come possiamo velocizzare quest’informazione, perché in alcuni
elaborare grandi quantità di dati.
casi avremo da
Il concetto di elaborare grandi quantità di dati è alla base dell’informatica perché c’erano dei calcoli che
non si potevano fare a mano, richiedevano tempo, riuscire a farle con un calcolatore ci permette di
velocizzare le cose. Quindi abbiamo dei calcolatori elettronici (computer) che non fanno altro che ricevere
una serie di informazioni d’ingresso (informazioni e non dato, perché abbiamo già trasformato e dato
un’interpretazione iniziale) lo passiamo a un calcolatore con cui analizziamo questi dati e da questo
ricaviamo un’informazione in uscita e una conoscenza, può essere uno, può essere l’altro, può essere
entrambi.
Es. tempera è informazione d’ingresso, c’è un calcolatore che elabora l’informazione velocemente e da una
serie d’informazioni in uscita (visualizzazione della temperatura) e la conoscenza (risposta data a utente). Ci
sono altri sistemi che sono un po’ più complessi: es telefono ha una sua telecamera quello che faccio
quando guardo telefono leggo come informazione d’ingresso la visualizzazione del volto e da quello
informazione in uscita (se persona corrisponde o è salvata) e conoscenza (percorso che viene sbloccato) ->
sistema di elaborazione delle informazioni.
I calcolatori elettronici permettono: (aspetti tra loro collegati, uno richiede l’altro)
• Una rappresentazione efficace dell’informazione
• Un’elaborazione sistematica, veloce e pratica dell’informazione
Il calcolatore esegue algoritmi per l'elaborazione ed utilizza elementi di memoria per immagazzinare le
informazioni che sta elaborando. Si può analizzare qualsiasi sistema informatico e si vedrebbe che si riduce
a questo: fornire informazione, avere algoritmo che la elabora, avere elementi di memoria che servono a
immagazzinare informazione e su questo arrivare ad avere informazione d’uscita con una conoscenza.
Se vogliamo progettare un sistema dobbiamo definire qual è l’obiettivo della nostra elaborazione e capire
come gestire elaborare l’informazione per arrivare a una soluzione automatica (algoritmo) attraverso l’uso
di un calcolatore.
La specifica è un linguaggio naturale comprensibile a una persona, mentre l’algoritmo è comprensibile al
calcolatore. Umano ha problema di capire come convertire il suo problema in un algoritmo comprensibile
dal suo elaboratore.
Vedremo come passare dalla specifica di un problema alla sua soluzione automatica (algoritmo) attraverso
l’uso di un calcolatore:
• La specifica è una descrizione semi-formale del problema
• È necessario passare dalla specifica ad un algoritmo che risolve il problema dato
• Infine affinché l’algoritmo trovato sia eseguibile dal calcolatore dovrà essere definito in un linguaggio
comprensibile al calcolatore stesso
• Capiremo come rappresentare l’informazione
Un algoritmo è una sequenza finita di operazioni elementari che sono eseguibili dal calcolatore e non
ambigue che giunge certamente a terminazione.
L’algoritmo permette di risolvere uno specifico compito o problema e deve seguire queste caratteristiche:
caso costruzione lego, Ikea e preparazione ricetta -> sequenza di operazioni elementari, sono degli
algoritmi? No, alla fine serve momento di interpretazione delle cose che potrebbe non portare allo stesso
identico risultato per il caso delle istruzioni, per le ricette invece è una sequenza di operazioni elementari
sono comprensibili ma non è detto che siano non ambigue, sequenza di passi ma non è un algoritmo finché
non diamo informazioni in più che lo rende non ambiguo. Inoltre per le istruzioni è necessario essere in
grado di decifrare i disegni, interpretarli.
L’esecutore di questi passi è una persona e non un calcolatore (è molto complesso far comprendere un
linguaggio grafico ad un calcolatore). L’esecutore è una persona che conosce la lingua italiana. I passi sono
spesso non precisi ed ambigui, richiedendo quindi il buonsenso dell’esecutore.
Altro esempio: Prodotto di due numeri interi positivi tramite somme ripetute
1. Leggi A
2. Leggi
3. Somma A a sé stesso B volte
4. Scrivi il risultato
È qualcosa che è semplice ma non intuitivo, abbiamo capito cosa fare ma non è detto che sia non ambiguo,
stiamo usando operazioni non elementari.
I passi sono definiti in modo che possano essere eseguiti senza ambiguità?
• ABBASTANZA (ma non ancora in modo completo)
I passi sono comprensibili ad uno specifico esecutore (cioè il calcolatore)?
• NO, L’esecutore è ancora una persona che conosce la lingua italiana
Il nostro algoritmo deve avere una formulazione che non sia specifica per una serie sola di valori ma deve
essere un algoritmo che risolve in modo completo il problema che vogliamo risolvere, risolvere in modo
completo -> gestire gli errori e deve funzionare per ogni valore ammesso per la specifica.
La descrizione di un algoritmo per un esecutore deve avere una formulazione generale
Alcune osservazioni importanti:
• Gli algoritmi prevedono particolari passi destinati ad acquisire i valori dei dati da utilizzare ed
elaborare in ogni specifica esecuzione
• La soluzione individuata deve essere generale, cioè non deve valere solo per alcuni valori
predefiniti dei dati
• La soluzione deve funzionare per ogni valore ammesso dalla specifica
Esempio:
Un algoritmo per calcola il prodotto di due numeri per somme ripetute non eseguirà tale calcolo solo per
due valori predefiniti MA sarà in grado di eseguire il calcolo per una qualsivoglia coppia di numeri acquisiti
dall’utente
Dal momento in cui si programma un sito web si deve ipotizzare che persona possa immettere informazioni
fuori dalla specifica
Rappresentazione di un algoritmo
• Descrizione delle operazioni eseguibili e dei dati su cui agiscono le operazioni
• Descrizione di tutte le possibili sequenze di operazioni da eseguire per risolvere il problema dato
(flusso di controllo)
• Deve essere univoco (sia da parte del programmatore che dell’esecutore) il modo di andare da dati
in ingresso a dati di uscita (flusso di esecuzione)
Flusso di controllo: la descrizione a priori di tutte le possibili sequenze nell’esecuzione dei passi
dell’algoritmo, in particolare di operazioni in alternativa e di operazioni da ripetere più volte ciclicamente
Flusso di esecuzione: la sequenza di operazioni effettivamente eseguite durante una particolare esecuzione
dell’algoritmo e che dipende dagli specifici valori che i dati assumono in quell’esecuzione
Faccio questa operazione se il mio numero A è maggiore di 5, nel flusso di controllo manca da definire cosa
faccio se non è maggiore di 5, devo definire che in quel caso magari non eseguo operazioni. Nel momento
in cui fornisco dei dati andrò a costruire un percorso nel flusso di controllo che dipenderà dalla gestione di
queste situazioni.
Flusso di controllo definito come una rappresentazione generale statica dell’algoritmo dove descriviamo
tutte le possibili sequenze, andiamo a descrivere la sequenza di passi, la selezione, ecc.
Flusso di esecuzione sono operazioni eseguite di volta in volta dato un valore che viene specificato, è un
analisi dinamica di quello che succede dati dei valori.
Quali sono le proprietà che deve avere un algoritmo. L’ideale e che l’algoritmo dia la soluzione al compito a
cui è stato predisposto, compito è descrizione dell’algoritmo passato al calcolatore. Il calcolatore esegue
specifica senza sapere se sia giusto o sbagliato è compito del programmatore se algoritmo sia giusto o
sbagliato e il calcolatore arriva alla soluzione dell’algoritmo non del problema
L’algoritmo ottiene la soluzione del compito cui è preposto
• Il calcolatore eseguirà l’algoritmo a prescindere che sia giusto o sbagliato; è compito del programmatore
garantire che l’algoritmo sia corretto
L’algoritmo perviene alla soluzione del problema nel modo in cui è predisposto
• Il calcolatore arriverà alla soluzione nel modo in cui è stato programmato; è compito del programmatore
definire come ottenere un modo più veloce o come usare la minima quantità di risorse fisiche
Se l’algoritmo arriva a una soluzione «sbagliata», la colpa è del programmatore. Quando c’è un problema
che non si riesce a risolvere bisogna cercare di capire dove andare a lavorare
Prima cosa a cui dobbiamo pensare quando progettiamo un algoritmo è su cosa deve elaborare. Dobbiamo
immaginare tutto quello che succede nell’elaborare l’algoritmo.
dati
I sono un primo elemento ma dovendo considerare tutto quello che succede durante l’algoritmo
dobbiamo immaginare quali sono i dati che dobbiamo fornire in ingresso, quali sono i dati che vogliamo che
il nostro algoritmo produca, ma anche passo dopo passo quali sono i dati necessari per dei calcoli
intermedi, ad esempio, questo è molto importante nel momento in cui si calcola un algoritmo per due
motivi:
1. Non dobbiamo tenere in considerazione solo dimensione dati ingresso e in uscita ma dato che i dati
staranno in memoria durante l’algoritmo dobbiamo arrivare a capire qual è la quantità di memoria
che il nostro algoritmo ha bisogno
2. Dobbiamo capire tipologia di dati che utilizziamo perché dobbiamo poi capire come utilizzarli
Prima cosa che dobbiamo capire sui dati è se sia una variabile o una costante. Se ragioniamo sul numero di
mesi che ci sono in un anno, questa è un’informazione costante perché qualunque cosa succeda il numero
di mesi rimane 12. Ci sono altri valori che non cambiano mai nel nostro algoritmo (pi greco).
Non cambiare mai è diverso da cambiare con una bassissima probabilità perché nell’altro caso c’è
possibilità che il nostro dato assuma un valore diverso e quindi dobbiamo dare la possibilità all’algoritmo di
mantenere il valore modificato.
Questo porta a idea di come i dati vengano rappresentati perché devono essere sempre rappresentati in
modo univoco e comprensibile per il calcolatore, il calcolatore non deve avere ambiguità su come
interpretare l’informazione. Se noi diciamo che un valore è costante non ci potremo fare operazioni di
modifica, perché quello è un’operazione ambigua. Nel momento in cui l’informazione è variabile dobbiamo
trovare un modo per rappresentarla in modo che il calcolatore la possa utilizzare. La variabile, quindi,
rappresenta un dato che può variare il suo valore; mentre una costante è un valore che noi siamo sicuri, per
come è costruito l’algoritmo (o per la definizione dei dati) questo non potrà mai cambiare. A seconda di
come classifichiamo l’informazione utilizzeremo elementi diversi e da questo arriveranno rappresentazioni
diverse.
Una volta definiti i dati su cui lavorare andremo a definire una serie di operazioni che prendono dei dati e
producono un risultato. Combinando le operazioni creiamo le espressioni e utilizzando le espressioni
riusciamo a fare le trasformazioni da ingresso e uscita. Tutte queste operazioni sono quelle che poi
potremo usare nel nostro algoritmo. Proprietà soprattutto di atomicità va a ricordare che nel momento in
cui definiamo queste operazioni ci rappresenta il set minimo di operazioni che possiamo utilizzare e poi ci
dovremo ricondurre il nostro algoritmo a utilizzare solo ed esclusivamente queste operazioni, indivisibili e
comprensibili dal calcolatore.
Quindi i dati d’ingresso li trasformiamo verso dati in uscita, ma gli algoritmi fanno delle scelte nel momento
in cui dobbiamo prendere flussi di controllo diversi ed eseguire delle operazioni a seconda di una
condizione piuttosto che un’altra (esempio calcolare valore assoluto di un numero, ci sono operazioni
diverse a seconda del risultato di un’operazione). Flusso di controllo: specifica delle possibili successioni dei
passi dell’algoritmo
Mettendo insieme i dati, le operazioni e il flusso di controllo si ha la possibilità di eseguire qualsiasi tipo di
algoritmo.
La variabile si può immaginare come un contenitore di informazioni. Parliamo di variabili quindi di elementi
che possono cambiare il loro valore durante l’esecuzione, un valore costante non ha bisogno di essere
salvato in memoria, non ha bisogno di un contenitore per rappresentare l’informazione perché nel nostro
algoritmo lo possiamo rappresentare direttamente.
Andiamo ad utilizzare un contenitore d’informazioni in memoria solo nel momento in cui l’elemento è
definito variabile, se la variabile cambia molto poco, raramente, è quasi costante nel tempo io avrò il mio
contenitore di informazioni che per la maggior parte del tempo avrà all’interno uno stesso valore. Nel
momento in cui vado a fare un’operazione e vado a cambiare quel valore, il mio contenitore di memoria
dove ho assegnato la variabile conterrà il nuovo valore e se andrò ad utilizzarlo sarò sicuro che conterrà
l’ultimo valore.
variabile
La può e deve avere sempre un valore, vuol dire che non posso avere più valori associati alla
stessa variabile, se devo avere più valori devo avere più variabili (es data composta da giorno mese e anno,
non posso immaginarli con un’unica variabile ma tre contenitori diversi). Una variabile non è mai vuota
(problema informatico) perché nel momento in cui dico che una determinata area di memoria rappresenta
un valore, qualunque operazione io faccia su quel contenitore vado a prendere il valore che c’è dentro, la
memoria non ha la possibilità di sapere
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti Fondamenti di Informatica teoria - algebra di boole
-
Appunti di Fondamenti di Informatica teoria - von Neumann
-
Appunti Fondamenti di Informatica teoria - sistemi di operativi
-
Appunti Fondamenti di Informatica teoria - sistemi di numerazione