Fondamenti di informatica
Introduzione
L’informatica NON è:
- Lo studio del calcolatore, il quale risulta essere solamente uno strumento. Sono molti infatti gli oggetti in grado di elaborare dati e informazioni, e allo stesso tempo ci sono settori dell’informatica che non utilizzano alcun tipo di calcolatore, come l’informatica teorica.
- Lo studio di un linguaggio di programmazione, è solo uno strumento per descrivere soluzioni algoritmiche a problemi, è quindi solo un mezzo e non un fine. Esistono diversi linguaggi e diverse classi di linguaggi:
- Logici (Prolog), si scrivono solamente i vincoli del problema e si procede attraverso la logica.
- Imperativi (Pascal), dicono al calcolatore passo passo le azioni da compiere.
- Ad oggetti (Java, C++), si descrivono degli oggetti e si fanno interagire tra di loro.
- Funzionali (Lisp), qualunque calcolo viene visto come una funzione.
Python può funzionare come tutti questi linguaggi.
- Lo studio delle applicazioni, le applicazioni sono utilizzate dagli specifica, utenti finali mentre gli informatici si occupano della progettazione, realizzazione validazione della della e della delle applicazioni.
L’informatica è.
Un approccio tradizionale parte dalla definizione di algoritmo: una procedura per risolvere un problema in un numero finito di passi e definisce l’informatica come:
- Lo studio degli algoritmi, che comprende:
- Le loro proprietà formali e matematiche.
- Le loro realizzazioni hardware.
- Le loro realizzazioni software.
- Le loro applicazioni.
- Lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione, e applicazione.
- La scienza della rappresentazione e dell’elaborazione dell’informazione.
Il termine informatica deriva dalla contrazione del termine informazione automatica:
(Trattamento) (automatico) (dell’informazione)
Trattamento: rappresentazione, conservazione, elaborazione.
Automatico: deleghiamo uno strumento.
Informazione: relazione tra dati.
Problemi, istanze e algoritmi
L’informatica si occupa quindi principalmente di risolvere problemi: un problema è una classe di domande omogenee a cui dare una risposta mediante una procedura ben definita.
Ogni singola domanda si chiama istanza del problema.
Ogni istanza è caratterizzata da:
- Un insieme di dati di partenza (es. {12, 13}), l’input.
- Un risultato cercato (es. 156), l’output.
La soluzione di un problema è definita da una procedura che, a partire da qualsiasi insieme di dati di partenza, produce un risultato.
In particolare, la soluzione è un algoritmo, di cui diamo una definizione più dettagliata:
Alla base dell’informatica c’è il concetto di algoritmo:
Un algoritmo è una sequenza finita di passi elementari che dai dati di partenza produce un risultato per ogni istanza di un problema.
- Finitezza: ogni algoritmo deve terminare.
- Generalità: ogni algoritmo deve fornire una soluzione per tutti i problemi appartenenti ad una data classe.
- Non ambiguità: i passi successivi devono essere definiti in modo univoco.
Cos’è un programma?
Un programma è una procedura scritta utilizzando un linguaggio formale in modo tale che possa essere eseguita da un calcolatore, quindi una traduzione in un linguaggio comprensibile dal calcolatore.
Un programma per un calcolatore è una collezione di istruzioni che permettono di risolvere istanze di un problema.
In questa definizione, per “istruzione” si intende un passo elementare eseguibile da un calcolatore.
Storia
L’uomo da sempre ha avuto bisogno di strumenti che lo aiutassero nel calcolo: l’abaco fu il primo esempio di calcolatore, fu inventato 4000 anni fa e i romani lo utilizzavano facendo i conti con i sassolini.
Nel tempo vennero sviluppate diverse macchine il cui scopo era quello di svolgere calcoli, erano quindi calcolatrici più che veri e propri computer. Con il termine calcolatrice si indicavano anche le addette ai calcoli negli uffici.
La Macchina Analitica è stato il primo prototipo di un computer meccanico sviluppato per eseguire compiti generici. Il progetto fu sviluppato dall’inglese Charles Babbage (1791–1871), che cercò anche di realizzarlo praticamente.
La macchina analitica, azionata da un motore a vapore, avrebbe dovuto comporsi di quattro parti:
- La memoria (store).
- Un’unità di calcolo (mill).
- La sezione di ingresso (lettore di schede perforate).
- La sezione di uscita (stampa dei risultati).
Possiamo considerare come prima programmatrice Ada Byron, la quale ideò un algoritmo per la macchina analitica per generare i numeri di Bernoulli, è considerato il primo algoritmo per essere eseguito da una macchina.
Nel 1928 David Hilbert, chiese di esibire una procedura, eseguibile del tutto meccanicamente, in grado di stabilire, per ogni formula espressa nel linguaggio della logica del primo ordine, se tale formula è considerabile vera o falsa all’interno del sistema formale della logica del primo ordine.
Per rispondere a questa domanda Alonzo Church sviluppò il λ-calcolo su cui basò il concetto di funzione effettivamente calcolabile e Alan Turing introdusse il modello di calcolo oggi noto come Macchina di Turing.
Nel 1936 Church e Turing, indipendentemente, dettero una risposta negativa al problema posto da Hilbert. In particolare, Turing studiò il problema della fermata che chiede se sia sempre possibile, dato un algoritmo e un input finito, stabilire se l’algoritmo in questione termini o continui la sua esecuzione all’infinito.
Turing dimostrò che non può esistere un algoritmo generale che possa risolvere il problema per tutti i possibili input e algoritmi. Il problema è indecidibile.
Non è chiaro chi ha costruito il primo calcolatore elettronico. I calcolatori di prima generazione erano enormi e pesavano tonnellate. I calcolatori di seconda generazione furono i primi commerciali e vengono sviluppati linguaggi di programmazione, memorie secondarie come i nastri e i dischi, sistemi operativi, dispositivi di input (tastiere) e di output (stampanti).
Con i calcolatori di terza generazione vi è l’invenzione del circuito integrato, vengono introdotti sul mercato anche per uso domestico a casa e in ufficio con il sistema operativo MS-DOS. Infine nel 1984 l’Apple produce il Macintosh con l’interfaccia grafica a icone.
Come funziona un calcolatore elettronico
L’architettura dei moderni calcolatori è basata sul modello di John von Neumann.
Egli capì che i programmi non dovevano stare per forza su elementi rigidi esterni e neppure essere letti sequenzialmente da lente schede perforate, ma risiedesse in una memoria scrivibile ad accesso veloce, assieme ai dati da elaborare e alle costanti numeriche.
I componenti principali di un calcolatore secondo l’architettura di von Neumann sono:
- La memoria, dove vengono memorizzati programmi e dati da elaborare e i risultati.
- L’Unità di Elaborazione Centrale, detta CPU (Central Processing Unit), ha il compito di elaborare i dati secondo le istruzioni del programma.
- Le unità periferiche, per immettere dati nel calcolatore e per ottenerli in uscita dal calcolatore.
- Il bus, che connette tra loro i componenti permettendo il transito dei dati.
Memoria e bit
La memoria è costituita da una serie di celle contenenti una parola (word).
Ciascuna parola è composta da una sequenza di bit (binary digit).
Il bit è l’unità minima di memoria e può essere in uno di due stati, indicati come 0 e 1. Gli attuali calcolatori hanno celle con parole di 32 o 64 bit, organizzate in byte.
Un byte è una sequenza di 8 bit. Quindi le celle di 32 bit sono composte da 4 byte, mentre quelle di 64 bit da 8 byte. In generale con n bit posso distinguere 2n stati (per calcolare i bit necessari per codificare dei dati, 2n = x, quindi log₂ x = n). La quantità di memoria si misura in byte e multipli del byte.
La memoria di un calcolatore è una sequenza di celle, sono numerate e arrivano a miliardi. Il numero delle celle si dice indirizzo.
CPU
La CPU è il dispositivo principale del calcolatore ed è composta da:
- L’Unità di Controllo, detta anche CU (Control Unit), controlla tutte le operazioni del calcolatore, regola il tempo con il quale svolgere le istruzioni, preleva le istruzioni dalla memoria e i dati necessari all’esecuzione, invia i segnali di esecuzione alle altre unità.
- L’unità logico-aritmetica, detta ALU (Arithmetic e Logic Unit), si occupa di eseguire le istruzioni aritmetiche e logiche.
- I registri, memoria locale della CPU dove memorizzare gli operandi e i risultati delle opera
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Fondamenti cpp
-
Fondamenti di informatica
-
Appunti Fondamenti I (C)
-
Lezione 1 Fondamenti di informatica