Oggi:19/12/2018
Computer e algoritmiDal Problema all'AlgoritmoAlgoritmi e loro RappresentazioneDiagrammi di Flusso

Il computer è una macchina costituita da due elementi fondamentali: hardware e software. L’hardware comprende l’insieme degli elementi fisici ed il software l’insieme delle istruzioni capaci di governare tali elementi. Lo analizzeremo in maniera molto schematica: ci proponiamo semplicemente di introdurre un livello minimo di terminologia necessaria ai nostri scopi.

Hardware: componenti fisici di un computer.

Hardware system: un insieme di elementi interconnessi in modo tale da comporre un computer funzionante in grado di eseguire delle istruzioni.

Dal punto di vista funzionale un computer ha la seguente architettura.

funzioni
Figura 0.1

Input: dispositivo hardware in grado di accettare dati che vengono forniti al computer per essere elaborati ( tastiera, mouse, ………).

Output: dispositivo hardware che presenta i dati elaborati dal computer (video, stampante, ………..).

CPU (Unità Centrale di Processo): parte del computer che esegue le istruzioni lette dalla memoria primaria.

Dati: informazione che può essere gestita da un computer.

I dati gestibili da un computer sono rappresentati tramite successioni di bit, dove un bit vale 0 o 1; inoltre, 8 bit formano 1 byte; con 1 byte si codificano tutti i caratteri maiuscoli e minuscoli, le cifre, i segni di interpunzione e alcuni comandi (andare a capo, cancellare lo schermo, ……) secondo la codifica ASCII ( per esempio 01000001 corrisponde alla lettera maiuscola A ). Le ultime versioni dei sistemi operativi supportano la codifica Unicode che estende e completa quella ASCII. Lo standard Unicode utilizza 2 byte, 16 bit, per comporre un singolo carattere, per cui è in grado di rappresentare 65536 simboli distinti; in questo modo è possibile utilizzare anche lingue complesse come l’arabo ed il cinese.

La CPU ( Unità Centrale di Processo ) corrisponde in linea di massima ad un microprocessore; esso è costituito dai registri dove si conservano i dati o le istruzioni, dall’Unità Aritmetico-Logica e dall’Unità di Controllo. Il compito della CPU consiste nell'eseguire calcoli e confronti sui dati, controllare il flusso dei dati in ingresso ed in uscita, gestire le varie memorie, etc.

Possiamo schematizzare i compiti della CPU attribuendogli delle sottounità nel modo seguente

  • L'unità di controllo conosce l'istruzione da eseguire (perché contenuta nel registro Program-counter); preleva l'istruzione da eseguire dalla memoria principale e la pone nel registro delle istruzioni
  • L’Unità Aritmetico-Logica esegue calcoli e confronti ( servendosi dei dati inseriti nei registri )
  • L’unità di Memoria gestisce essenzialmente la memoria primaria o centrale leggendo e scrivendo dati su di essa
  • L’Unità di Input/Output ( in breve I/O ) gestisce tastiera, mouse, video, dischi, stampanti, ecc.

Memoria primaria: la parte del computer che contiene i dati che vengono utilizzati durante una sessione di lavoro.

Tale memoria, detta RAM, "Random Access Memory", è una memoria volatile, nel senso che conserva i dati soltanto quando il computer è acceso. D'altra parte è qui che si conservano le istruzioni e i dati. Ogni informazione è codificabile in un numero apposito di byte; l’indirizzo del primo di questi byte consente di accedere direttamente all’area di memoria che contiene l’informazione.

Memoria secondaria: la parte del computer che contiene i dati in maniera permanente.

La memoria secondaria non è volatile, nel senso che conserva i dati anche quando il computer è spento: questo tipo di memoria è quella presente nei floppy-disk, negli hard-disk, nei CD-ROM, e così via.

Tutte le operazioni della CPU, siano esse eseguite sulla RAM o sulle porte di I/O, hanno la necessità di “muovere dei dati” da una parte all’altra del computer. Il BUS costituisce il canale di comunicazione attraverso cui “viaggiano i dati”. Tutte le attività interne del computer sono scandite dal clock; esso rappresenta, grosso modo, il tempo che intercorre tra una prestazione e l’altra della CPU. Esiste un componente elettronico che scandisce il tempo mandando un segnale a tutti gli altri componenti elettronici che ne hanno bisogno: in questo modo tutti gli eventi della CPU sono scanditi e gli altri componenti si sincronizzano alla CPU.

Un computer può servire più utenti contemporaneamente, sistema multiutente, oppure può eseguire più compiti, sistema multitasking. Il termine contemporaneamente può indurre l’utente a ritenere sia a sua completa disposizione ( nel senso che tutte le sue risorse sono completamente disponibili).
In realtà, in un sistema multiutente, ogni utente gestisce il sistema soltanto per una piccola porzione di tempo; data l’elevata capacità di elaborazione, tale tempo gli sembrerà sufficiente per la completa gestione delle risorse del computer. Il termine time-sharing è una modalità con cui un sistema distribuisce le risorse tra i vari utenti.

Il sistema multitasking consente ad un singolo utente di eseguire più compiti nello stesso momento. Anche in questo caso le parole “nello stesso momento” hanno un significato diverso: un computer manda in stampa un certo documento, la stampante lo conserva nella sua memoria e lo stampa un po’ alla volta mentre attende un input dalla tastiera o dal mouse ed esegue un certo calcolo.

Il computer è in grado di elaborare dei dati eseguendo una sequenza ordinata di comandi ( i programmi ). Esso interpreta ogni singolo comando e lo esegue.

Indichiamo con il termine software l’insieme di tutti i programmi che consentono la gestione del sistema computer.
Con il termine programmazione intendiamo la realizzazione del software necessario ai nostri scopi: possiamo pensare di realizzare un sistema operativo(!), una sua componente, un programma di utilità, un programma che

  • gestisce un elemento del computer (driver),
  • traduce un linguaggio in un altro ( parliamo di linguaggi del computer ),
  • aiuta a scrivere testi ( word processor ),
  • esegue ricerche su archivi di dati di grandi dimensioni ( DBMS),
  • risolve problemi particolari ( ALTRE APPLICAZIONI ).