Che cos’è l’Informatica?
Che cos’è l’Informatica?
Non è facile da definire!
Alcune affermazioni vere:
Vediamo qualche esempio…
Problema: cercare un parola su un dizionario
Come risolverlo?
Proviamo a descrivere un metodo di soluzione:
Problema: trovare il massimo di un insieme di tessere numerate
Come risolverlo?
Proviamo a descrivere un metodo di soluzione:
Problema: riposizionarci per ordine alfabetico
Come risolverlo?
Proviamo a descrivere un metodo di soluzione:
Quelli che abbiamo visto sono esempi di algoritmi
Un algoritmo è processo che risolve un problema
Sia data una funzione: \[ f: D_I \mapsto D_O \]
In altre parole: una funzione descrive un problema
Se una funzione definisce un problema, allora…
Un algoritmo è un procedimento che computa (o valuta) una funzione \(f: D_I \mapsto D_O\)
Una funzione può ammettere diversi algoritmi
Un algoritmo deve soddisfare alcune proprietà fondamentali
Ce ne sono diverse, ma a noi ne interessano due in particolare:
Eseguibilità: Ogni azione elementare dell’algoritmo deve essere eseguibile (in tempo finito)
Non Ambiguità: Ogni azione deve essere interpretabile in modo non ambiguo
Per eseguire un algoritmo è necessario un elaboratore
Questo è un elaboratore:
Per eseguire un algoritmo è necessario un elaboratore
Questo è un elaboratore:
Per eseguire un algoritmo è necessario un elaboratore
Questo è un elaboratore (Wozniak, Apple I, 1976):
Per eseguire un algoritmo è necessario un elaboratore
Questo è (parte di) un elaboratore (Analytical Engine, 1837):
Per eseguire un algoritmo è necessario un elaboratore
Questo è un elaboratore (beh, soddisfa la definizione):
Dal nostro punto di vista:
Un elaboratore è una entità che può:
- Memorizzare informazioni
- Eseguire su di esse alcune operazioni elementari
Quindi l’elaboratore determina:
E.g. dati: numeri interi, operazioni: ‘+’, ‘<’, ‘=’
Dal nostro punto di vista:
Un elaboratore è una entità che può:
- Memorizzare informazioni
- Eseguire su di esse alcune operazioni elementari
Una osservazione importante:
Dimostrazione dovuta ad Alan Turing, Alonzo Church (negli anni ’30)
Consideriamo ora la non-ambiguità:
Per definire in modo non ambiguo un algoritmo:
Ci serve un linguaggio (per esempio testuale) che:
Un linguaggio di questo tipo si chiama linguaggio formale
Si chiama linguaggio di programmazione un linguaggio formale:
Si chiama programma un testo scritto in un linguaggio di programmazione
Questo è un programma per l’esempio 2 (max di una serie di numeri)
L’informatica è la scienza degli algoritmi?
Non esattamente: non tutti i programmi sono algoritmi
E.g. Programmi che non “calcolano un risultato”
Ma in sostanza cosa fa un programma?
Il che ci porta alla definizione di Informatica che adotteremo!
L’Informatica è la scienza della rappresentazione e dell’elaborazione dell’informazione