L`architettura dell`elaboratore e la programmazione
Transcript
L`architettura dell`elaboratore e la programmazione
Struttura fondamentale dell’elaboratore ed elementi di programmazione Corso: Laboratorio Matematico-Informatico I Titolare del Corso: Nicoletta Del Buono Il calcolatore • I calcolatori elettronici sono stati costruiti per la prima volta durante la Seconda Guerra Mondiale – ENIAC (Electronic Numerical Integrator and Automatic Calculator – 1943-1946 Università della Pennsylvania) • E’ una macchina costituita da due parti fondamentali – HARDWARE – SOFTWARE Hardware e Software L’informazione digitale • Hardware: il materiale elettronico, elettrico, elettromagnetico e meccanico di cui la macchina è composta, indipendentemente dalle applicazioni per le quali può essere impiegata • Software: il complesso delle istruzioni che rendono possibile utilizzare la macchina per ottenere risultati desiderati • L'elaboratore è una macchina numerica o digitale che si contrappone alle apparecchiature analogiche. – complesso di istruzioni che l'hardware deve comprendere ed eseguire – digitale Æ "digit" (cifra o numero) • L'elaboratore gestisce l’informazione trasmissibile in forma digitale (cioè lavora su numeri). – I numeri sono 0 e 1 (notazione numerica binaria) – L'informazione a due valori è detta bit (binary digit). L’informazione digitale: codifica Architettura di un calcolatore • L'associazione di bit ad una informazione è detta codifica. • Ogni tipo di informazione può essere gestita mediante una codifica BINARIA • Per gestire una informazione un po' più articolata di due soli stati (0 o 1), si considerano i bit a gruppi di 8 (un byte) • Lo schema che illustra il funzionamento di un calcolatore è dovuto a John Von Neumann (1903-1957) • Schema prossimo all'effettiva struttura dei moderni calcolatori – byte Æ stringa composta da 8 bit consecutivi – 1 bit può assumere due stati (0 o 1) Æ un byte può assumere tutti gli stati da 00000000 a 11111111, con tutte le situazioni intermedie – 28= 256 diverse combinazioni con cui esprimere l'informazione Unità dell’hardware • Le unità che costituiscono un calcolatore sono le seguenti: – Unità di ingresso (input) Æconsentono l'immissione di dati nella memoria – Unità di memoria Æ in cui vengono registrate le informazioni – Unità di controllo o unità di elaborazione centrale detta anche processore (Central Processing Unit o CPU) Æ presiede a tutte le operazioni del calcolatore, interpretando le istruzioni prelevate dalla memoria e inviando alle specifiche unità i segnali per l'esecuzione delle operazioni – Unità aritmetico-logica (Arithmetic-Logic Unit o ALU) Æ esegue operazioni aritmetiche o logiche – Unità di uscita (ouput) Æ presenta i risultati dell'elaborazione Unità di I/O • Un computer elabora i dati e fornisce risultati eseguendo determinate istruzioni. • I dati e i programmi devono essere inseriti dall'esterno. • Le unità I/O consentono di inserire i dati utilizzando codifiche "naturali“ e di ottenere come risultato dati scritti con le medesime codifiche – Codificare/Decodificare i dati del linguaggio naturale in binario e viceversa – Trasmettere e ricevere dati dalla CPU in codice binario Unità di I/O • Per ricevere e/o trasmettere bit (o byte) è necessario una passaggio di segnali elettrici binari. – Il passaggio di dati avviene tramite collegamenti – Le componenti di I/O sono collegate al calcolatore tramite un cavo con due estremità: una attaccata all'apparecchio e l'altra attaccata al calcolatore tramite le porte o interfacce (seriale, parallela, USB, PS/2, rete, firewire, video). Unità di I/O: le porte • Le porte di I/O sono localizzate (generalmente) sul lato posteriore del computer e sono utilizzate per collegare alla macchina i dispositivi esterni – Porta/E PS/2 per il collegamento del mouse e della tastiera – Porta Seriale per il modem, o in generale per dispositivi che non richiedono un flusso di dati molto veloce – Porta Parallela per la stampante, o in generale per qualunque dispositivo che richieda un flusso di dati più veloce rispetto alla capacità della porta seriale. – Porta USB (Universal Serial Bus) per connettere ogni dispositivo USB • la tecnologia USB consente di creare "catene" di dispositivi collegati tutti su un'unica porta – Porta Video per connettere il monitor al computer – Porta di Rete per collegare la macchina direttamente ad una rete di computer, senza usare il modem – Porta SCSI per dispositivi che richiedono un flusso di dati molto veloce (scanner, masterizzatore esterno, ecc.) Unità di I/O • Le unità di I/O sono: – – – – – – – – – – tastiera mouse monitor stampante casse scanner videocamera lettore cd/dvd masterizzatore modem Memoria • Memoria di un computer è il supporto materiale che contiene le unità informative (bit) – memorie centrali o di massa • I parametri caratteristici della memoria – capacità (quantità di memoria disponibile) espressa in byte (8 bit), o nei suoi multipli, o in word (cioè sequenza di bit) • il KiloByte (KB) pari a 1024 Byte (circa 1000 Byte) • MegaByte (MB) pari a 1.048.576 Byte (circa un milione di Byte) • GigaByte (GB) pari a 1.073.741.824 Byte (circa un miliardo di Byte) – Tempo di accessoÆ tempo necessario per eseguire una singola operazione di lettura e di scrittura • il parametro che rappresenta la velocità di memoria è il nanosecondo (milardesimi di secondo) Memoria • CM (Central Memory)Æ memoria nella quale sono collocati i byte, sui quali vengono effettuate operazioni di scrittura e lettura da parte della CPU. • La memoria centrale è detta memoria RAM (Random Access Memory - memoria ad accesso casuale) Æ memoria volatile l'informazione ivi registrata viene perduta all'atto dell'interruzione della alimentazione elettrica • Memoria di Massa Æ permette il salvataggio dei dati – svolge il ruolo di archivio di informazioni (programmi e dati); – se necessario, una parte delle informazioni viene spostata nella memoria centrale per essere elaborata e quindi riportata nella memoria di massa Memoria: supporti • Dischi ottici – la memorizzazione dei dati avviene "bruciando" con un laser la superficie – i dati scritti su un disco ottico non possono più essere cancellati – esistono dei dischi particolari (CD riscrivibili) che consentono la cancellazione e la riscrittura per un numero limitato di volte – si suddividono in: • WORM, Write Once Read Many, sui quali è possibile scrivere una sola volta ma leggere molteplici volte (CD-ROM), • riscrivibili Memoria: supporti • I supporti per le memorie di massa si possono poi dividere in 4 grandi categorie – dipendono dal tipo di memoria e di apparecchiatura meccanica che il supporto di registrazione richiede • Dischi magnetici – la memorizzazione dei dati avviene magnetizzando la superficie tramite un'apposita testina di lettura/scrittura. – Sullo stesso disco i dati possono essere scritti, cancellati e riscritti per un numero indefinito di volte senza logorare il supporto – Si suddividono in • removibili (floppy, zip) • fissi (hard disk) Memoria: supporti • Dischi magneto-ottici – dischi a supporto magnetico su cui la scrittura dei dati può avvenire solo dopo un forte riscaldamento della superficie con un fascio laser. – insensibili ai campi magnetici – nessuna cancellazione accidentale – utilizzati nei sistemi in cui è richiesto il frequente salvataggio di una grande quantità di dati in condizioni di sicurezza (es. unità di backup) Memoria: supporti • Nastri magnetici – usati per creare periodicamente copie (backup) del contenuto degli hard disk – lettura/scrittura molto lenta (alcune ore) – unità sequenzialiÆi dati vanno letti o scritti in sequenza (non sono possibili operazioni di selezione di una porzione predefinita) CPU • La CPU è costuituita da: – ALU (Arithmetic-Logic Unit, unità aritmeticologica) gestisce le operazioni matematiche e gli operatori logici o booleani (AND, OR, NOT) – CU (Central Unit, unità di controllo) coordina le operazioni della ALU sulla base di un'organizzazione programmata con le unità di I/O, il Clock (orologio) e la CM (Central Memory) CPU • Central Processing Unit (CPU) o processore • Unità di calcolo del calcolatore – – – – – esegue le istruzioni dei vari programmi sovrintende al funzionamento del calcolatore esegue tutti i calcoli gestisce il trasferimento di dati attraverso la memoria e i dischi attiva e/o disattiva le diverse componenti del calcolatore • Il processore è caratterizzato da un proprio linguaggio macchina attraverso il quale si esprimono i programmi memorizzati. • Il processore accede alla memoria, interpreta le istruzioni in linguaggio macchina e provvede alla loro esecuzione CPU • Il ritmo di lavoro del processore è scandito da un segnale elettrico (detto clock) generato internamente al computer e costituito da rapidissimi impulsi che si ripetono centinaia di milioni di volte per secondo – la velocità del clock si misura in GigaHertz (GHz) • La ALU riceve dalla CU delle istruzioni sottoforma di operazioni da compiere e di sequenze di byte • La CU regola il flusso dei byte che entrano ed escono dalla ALU • Ad ogni scatto del clock – la CU fornisce un'istruzione alla ALU – la ALU "trova" le sequenze di byte nella CM, in cui sono collocati i byte sui quali vengono effettuate operazioni di scrittura e lettura da parte della CPU I Software • I programmi permettono il funzionamento dell’hardware • Un programma Æ serie di operazioni elementari che il calcolatore esegue in sequenza e che trasforma un insieme di dati di input in un insieme di dati di output • I programmi scritti in linguaggio macchina (costituiti da sequenze di numeri binari) sono I soli eseguibili direttamente dall’hardware • Si possono distinguere diversi tipi di software – Sistema Operativo (Linux, Windows, Mac Os,…) – Applicazioni (editor di testo, sistemi di gestione di data-base, giochi…) Che cosa è la programmazione • Programmazione è l’attività di sviluppo di programmi per un calcolatore • Obiettivo: risoluzione di specifici problemi • Diverse fasi: – specifica dei requisiti: fase di formulazione del problema in modo più o meno formale – analisi del problema: comprensione del problema e sua scomposizione in parti gestibili – definizione di un algoritmo: progettazione di una soluzione al problema – scrittura del codice: implementazione dell’algoritmo in uno specifico linguaggio di programmazione – testing e debugging: verifica della soluzione e correzione degli eventuali errori – manutenzione Che cosa è la programmazione Diagrammi di flusso • Un algoritmo è un insieme ordinato di passi che descrive un processo sequenziale atto a risolvere una classe di problemi partendo da alcuni dati iniziali e restituendo dei dati in uscita dopo una serie di elaborazioni • Esistono diversi tipi di progettazione di un algoritmo • I diagrammi di flusso (flow-chart) permettono la realizzazione grafica di un algoritmo • Definiti mediante un alfabeto e una sintassi • L’alfabeto (o insieme di simboli) è costituito da specifiche figure geometriche (blocchi elementari) e simboli di connessione tra tali figure – progettazione bottom-up Æ formalizzazione di un algoritmo partendo dalle parti più specifiche – progettazione top-downÆ descrizione in termini generali e individuazione di sottoproblemi più semplici e così via… Diagrammi di flusso: alfabeto • Blocchi elementari di un diagramma di flusso e loro significato: – ellisse (limitatore di processo): determina l’inizio e/o la fine di un algoritmo – rettangolo (blocco azione): descrive singole istruzioni – rombo (blocco decisionale): consente la selezione di strade alternative – parallelogramma (blocco di comunicazione o I/O): permette l’inserimento e/o l’uscita dei dati – freccia/e (simbolo di interconnessione): regola la sequenzialità delle istruzioni all’interno del diagramma di flusso Diagrammi di flusso: schemi • Fra i possibili modi di connettere blocchi elementari e frecce che rispettino la definizione di un grafo di flusso, si possono individuare alcuni schemi di composizione fondamentali – sequenza – selezione – iterazione Diagrammi di flusso: sintassi • Un diagramma di flusso è un grafo contenente: – – – – un blocco iniziale (ellisse) un blocco finale (ellisse) un numero finito di blocchi azione (rettangoli) un numero finito di blocchi di controllo (rombi) • Regole di composizione di un flow chart – ciascun blocco azione deve avere una freccia entrante ed una uscente – ciascun blocco controllo deve avere una freccia entrante e due uscenti – ciascuna freccia entra in un blocco o si inserisce in un altra freccia – ciascun blocco deve essere raggiungibile dal blocco iniziale – il blocco finale deve essere raggiungibile dal blocco iniziale Diagrammi di flusso: sequenza • Uno schema di sequenza descrive la composizione sequenziale di due azioni elementari di un processo Inizio A1 A2 Fine Diagrammi di flusso: selezione • Uno schema di selezione permette di effettuare una scelta di due diverse azioni elementari in dipendenza dall’esito di un controllo Diagrammi di flusso: iterazione • Uno schema di iterazione permette di ripetere un blocco azione un certo numero di volte in dipendenza dell’esito di un controllo modello 1 Inizio V C1 A1 A1 F Fine Inizio C1 Fine modello 2 A2 Inizio A1 V C1 F V Fine Proprietà di un algoritmo • Un algoritmo è composto da una sequenza di schemi di flusso fondamentali (detti anche schemi di flusso strutturati) e deve soddisfare I seguenti requisiti: – generalità – finitezza (si deve raggiungere il flocco fine in un numero finito di passi) – non ambiguità (non devono essere presenti isctruzioni che si contraddicono) – ottimalità (deve risolvere il problema in studio con il numero minimo di operazioni) Esempi di flow-chart • Somma di due numeri positivi • Somma di due numeri nota la somma di un numero e di una unità • Moltiplicazione di due interi non negativi utilizzando le operazioni somma 1 e sottrati 1 • MCD tra due numeri positivi • Calcolo della norma infinito di un vettore • Calcolo del fattoriale • Calcolo della somma di un polinomio • Algoritmo di Horner