Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'Informatica: Storia e Evoluzione dei Calcolatori e Processori, Dispense di Elementi di Informatica

Una panoramica introduttiva all'informatica, trattando argomenti come l'elaborazione di dati, problematiche associate alla codifica e decodifica di dati, hardware e software, e la storia dei calcolatori e processori. Il testo copre le origini storiche dell'informatica, dalla macchina abacus alle prime macchine calcolatrici meccaniche e elettroniche, fino alle generazioni successive di elaboratori e processori. Il documento include anche una classificazione degli elaboratori e una breve introduzione al linguaggio C.

Tipologia: Dispense

2019/2020

Caricato il 20/02/2020

simone-d-angelo-7
simone-d-angelo-7 🇮🇹

3 documenti

1 / 84

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica
(12BHDxx)
2
Settimana n. 1
Contenuti
Introduzione all’informatica
Cenni storici
Concetto di programma
Diagrammi di flusso
Definizione di Informatica
•Linformatica e` la scienza che rappresenta e manipola le
informazioni
3
Elaboratore Elettronico
input
(dati)
output
(risultati)
(elaborazione)
4
Problematiche
Codifica dei dati in un formato comprensibile
all’elaboratore
Codifica degli ordini in una sequenza di operazioni
che costituiscono l’elaborazione
Decodifica dei risultati in un formato comprensibile
all’uomo
5
Hardware e Software
Un elaboratore elettronico è formato da due componenti:
-Hardware: Componente “fisica”, consistente di parti elettroniche,
meccaniche, magnetiche ed ottiche
-Software: Componente “non tangibile”, consistente di:
Programmi:
Le “istruzioni” per l’hardware
Dati:
Le informazioni su cui i programmi operano
6
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54

Anteprima parziale del testo

Scarica Introduzione all'Informatica: Storia e Evoluzione dei Calcolatori e Processori e più Dispense in PDF di Elementi di Informatica solo su Docsity!

Informatica

(12BHDxx)

2

Settimana n. 1

Contenuti

  • Introduzione all’informatica
  • Cenni storici
  • Concetto di programma
  • Diagrammi di flusso

Definizione di Informatica

  • L’informatica e` la scienza che rappresenta e manipola le

informazioni

3

Elaboratore Elettronico

input

(dati)

output

(risultati)

(elaborazione)

4

Problematiche

  • Codifica dei dati in un formato comprensibile

all’elaboratore

  • Codifica degli ordini in una sequenza di operazioni

che costituiscono l’elaborazione

  • Decodifica dei risultati in un formato comprensibile

all’uomo

Hardware e Software

  • Un elaboratore elettronico è formato da due componenti:
    • Hardware : Componente “fisica”, consistente di parti elettroniche, meccaniche, magnetiche ed ottiche
    • Software : Componente “non tangibile”, consistente di:
      • Programmi: Le “istruzioni” per l’hardware
      • Dati: Le informazioni su cui i programmi operano

Le Tecnologie come Fattore Abilitante dei

Cambiamenti Industriali e Sociali

18001800

20002000

19001900

7

La Pervasività

8

Un po’ di Storia: Abacus

9

B. Pascal (1642)

10

J.M. Jacquard (Punched Card Loom - 1801)

  • Il software per la

computazione meccanica

C. Babbage (Analyical Engine – 1833)

Elaboratori Special-Purpose

19

Elaboratori General-Purpose

  • Classificati in base a complessità e capacità di calcolo
    • Personal Computer (PC)
      • Elaboratori per uso personale
    • Workstation (WS)
      • Elaboratori per uso professionale
      • Grafica e capacità di calcolo elevate
    • Minicalcolatori
      • Mainframe di dimensioni/complessità/prestazioni ridotte
    • Mainframe
      • Calcolatori delle generazioni precedenti
      • Molti utenti connessi tramite terminali
    • Supercalcolatori
      • Calcolatori con più unità di elaborazione per calcoli complessi

20

Personal (client) Workstation

Mainframe (host)

Server

Elaboratori General-Purpose (Cont.)

21

Server

  • Un server è un elaboratore che fornisce dei “servizi” a

altri elaboratori (chiamati clients) attraverso una rete

(computer network)

22

Server Farm

  • Con il termine server farm si fa riferimento all’insieme di

elaboratori server collocati in un apposito locale (centro di

calcolo) presso una media o grande azienda

Mainframe

  • Mainframes (colloquialmente indicati anche come Big

Iron) sono elaboratori di grandi prestazioni usati

principalmente da grandi imprese per rilevanti

applicazioni software (mission critical application)

IBM z

mainframe

IBM BlueGene/Q

Livermore Labs

Potenza: 16 PFLOPS (PETA FLOPS)

16 000 000 000 000 moltiplicazioni secondo

Supercomputer (2012)

25

Elaboratori General-Purpose (Cont.)

Prezzo [KEuro]

Prestazioni

[Mop/s]

PC

WS

Mini

Mainframe

Supercalcolatori

(^10 9) tendenza

26

Le Ultime Parole Famose…

“Penso che nel mondo ci sia mercato per quattro o cinque computer”

Thomas Watson (Presidente IBM, 1943)

Computer venduti nel 2014: 320.000. Tablet venduti nel 2014: 290.000. Smartphone venduti nel 2014: 1.288.000. Autovetture vendute nel 2014: 71.150.

27

1980

1990

2000

Low cost computing

Low cost local storage

Multimedia over the network

2005

Web 2.

La Storia Recente

28

I Dati Digitali: Tutto Diventa “ bit ”

TestiTesti

DatiDati

VoceVoce

MusicaMusica

ImmaginiImmagini

FilmatiFilmati

01101100

La Grande Convergenza

  • Satellitare
  • DTT (digitale terrestre)
  • Satellitare
  • DTT (digitale terrestre)
    • Telefono via

Internet (VOIP)

37

Esempio di Soluzione di un Problema

  • Problema: Calcolo del massimo

tra due valori A e B

  • Soluzione: Il massimo è il più

grande tra A e B...

  • Soluzione formale:
    1. inizialmente: max = 0
    2. se A > B allora max = A; stop
    3. altrimenti max = B; stop

Soluzione

formale

Problema

Soluzione

informale

38

Altro Esempio di Soluzione di un Problema

  • Problema: Calcolo del massimo

comun divisore (MCD) fra due

valori A e B

  • Soluzione: Usiamo la definizione di

MCD: è il numero naturale più

grande per il quale possono

entrambi essere divisi.

  • Soluzione formale: ??? Soluzione

formale

Problema

Soluzione

informale

39

Formalizzazione della Soluzione

  • La differenza tra una soluzione informale ed una formale

sta nel modo di rappresentare un algoritmo:

  • Informale: Descrizione a parole
  • Formale: Descrizione in termini di sequenza di operazioni elementari
  • Esistono vari strumenti per rappresentare una soluzione

in modo formale

  • Più usati:
    • Pseudo-codice
    • Diagrammi di flusso

40

Formalizzazione della Soluzione (Cont.)

  • Pseudo-codice
    • Vantaggi
      • Immediato
    • Svantaggi
      • Descrizione dell’algoritmo poco astratta
      • Interpretazione più complicata
  • Diagrammi di flusso
    • Vantaggi
      • Più intuitivi perchè utilizzano un formalismo grafico
      • Descrizione dell’algoritmo più astratta
    • Svantaggi
      • Richiedono l’apprendimento della funzione dei vari tipi di blocco

Diagrammi di Flusso (Flow-Chart)

  • Sono strumenti grafici che rappresentano l’evoluzione

logica della risoluzione del problema

  • Sono composti da:
    • Blocchi elementari per descrivere azioni e decisioni (esclusivamente di tipo binario)
    • Archi orientati per collegare i vari blocchi e per descrivere la sequenza di svolgimento delle azioni

Diagrammi di Flusso (Cont.)

  • I blocchi elementari sono:
    • Blocco diinizio (Start)
    • Blocco difine (Stop)
    • Blocco diazione generica
    • Blocco diazione di I/O
    • Blocco didecisione
    • Blocco diconnessione
    • (Simbolo dirichiamo di un blocco)

43

Start

Stop

Diagrammi di Flusso: Blocchi di Inizio/Fine

44

azione generica

Diagrammi di Flusso: Blocchi di Azione

azione di I/O

45

condizione

V F

Diagrammi di Flusso: Blocco di Decisione

46

Diagrammi di Flusso: Blocco di Connessione

Costruzione di Diagrammi di Flusso

  • Per mezzo dei diagrammi di flusso si possono

rappresentare flussi logici complicati a piacere

  • E’ però preferibile scrivere diagrammi di flussostrutturati,

che seguano cioè le regole della programmazione

strutturata

  • Così facendo si ottiene:
    • Maggiore formalizzazione dei problemi
    • Riusabilità del codice
    • Maggiore leggibilità

Diagrammi di Flusso Strutturati

  • Definizione formale:
    • Diagrammi di flusso strutturati: Composti dastrutture elementari indipendenti tra loro
    • Struttura elementare = Composizione particolare di blocchi elementari
    • Sempre riducibili ad un diagramma di flusso elementare costituito da un'unica azione
  • Rispetto a diagrammi di flusso non strutturati questo implica l’assenza disalti incondizionati all'interno del flusso

logico del diagramma

condizione

V

F

Repeat-Until

struttura

55

Verifica di Strutturazione

  • Per verificare se un diagramma di flusso è strutturato si

devono compiere i seguenti passi:

  • Etichettare ogni blocco (esempio: 1,2,3,4,…)
  • Sostituire ad ogni struttura elementare individuata una struttura “generica”, avente per etichetta l’unione delle etichette
  • Se si è fatta almeno una sostituzione, ripetere il passo precedente
  • Se alla fine si ottiene un diagramma lineare, allora il diagramma originale è strutturato

56

Start

V

F

3 Stop

Diagramma di Flusso Strutturato: Esempio

57

Diagramma di Flusso Strutturato: Esempio (Cont.)

Start

V

F

Stop

58

Diagramma di Flusso Strutturato: Esempio (Cont.)

Start

Stop

Diagramma di Flusso Strutturato: Esempio (Cont.)

Start

Stop

Start

Stop

V

F

Diagramma di Flusso non Strutturato: Esempio

61 62

Settimana n. 2

Contenuti

  • Linguaggi di programmazione
  • Architettura di un elaboratore
  • Uso del compilatore

63

Stadi di Sviluppo di un Programma

Soluzione

formale

Programma

Problema

Soluzione

informale

64

Dalla Soluzione al Programma

  • La scrittura del programma vero e proprio è praticamente

immediata a partire dalla soluzione formale

  • I linguaggi di programmazione forniscono infatti costrutti

di diversa complessità a seconda del tipo di linguaggio

Quali Linguaggi?

  • Diversi livelli (di astrazione)
    • Linguaggi ad alto livello
      • Elementi del linguaggio hanno complessità equivalente ai blocchi dei diagrammi di flusso strutturati (condizionali, cicli,…) - Esempio: C, C++, Basic, Pascal, Fortran, Java, etc. - Indipendenti dall’hardware
    • Linguaggi “assembler”
      • Elementi del linguaggio sono istruzioni microarchitetturali
        • Dipendenti dall’hardware
        • Esempio: Assembler del microprocessore Intel Core

Quali Linguaggi? (Cont.)

  • Esempi:
    • Linguaggi ad alto livello if (x > 3) then x = x+1;
    • Linguaggi assembler LOAD Reg1, Mem[1000] ADD Reg1, 10

Specifico per una specifica architettura (microprocessore)

73

Astrazione dei Dati

3

‘a’

Memoria

Indirizzi

-11.

X; intero; valore=

c; carattere; valore=‘a’

t; reale; valore=-11.

74

Istruzioni

  • Indicano le operazioni che il linguaggio permette di

eseguire (traducendole) a livello macchina:

  • Pseudo-istruzioni
    • Direttive non eseguibili
  • Istruzioni elementari
    • Operazioni direttamente corrispondenti adoperazioni hardware
    • Esempio: Interazione con i dispositivi di I/O, modifica/accesso a dati
  • Istruzioni di controllo del flusso
    • Permettono di eseguire delle combinazioni di operazioni complesse

75

Esempio di Programma

PROGRAM prova ; // programma di prova CONSTANTS pi = 3. coeff = 0. VARIABLES x : INTEGER y : REAL c : CHARACTER BEGIN PROGRAM x = 2 ; IF ( y > 2 ) THEN y = x * pi ; PRINT x , y ; END PROGRAM

Identificatori

Pseudo-istruzione PAROLE CHIAVE

Istruzione

di controllo

del flusso

Specifica di tipo

Specifica di celle di memoria

Parte

“operativa”

Istruzioni

elementari

76

Linguaggio di Programmazione

  • Imparare un linguaggio significa conoscere:
    • Le parole chiave
    • I tipi predefiniti
    • Le istruzioni e la loro sintassi
  • In questo corso:
    • Linguaggio C
  • Estensione dei concetti a linguaggi analoghi è immediata

Lo Sviluppo di un Programma

1. Scrittura di un programma

  • File “sorgente”
  • Scritto utilizzando un linguaggio di programmazione

2. Traduzione di un programma in un

formato comprensibile al calcolatore

  • Articolato in più fasi
  • Gestito automaticamente da un programma chiamato traduttore
  • In questo corso ci occuperemo del

primo punto

  • Ma è importante sapere cosa succede nella fase successiva!

Scrittura del programma

Scrittura del programma

Traduzione del programma

Traduzione del programma

Scrittura del Programma

  • Un sorgente C è un normale file di testo
  • Si utilizza un editor di testi
    • Blocco Note
    • Editor specializzati per programmatori (ambienti integrati)

79

Editor per Programmatori

  • Colorazione ed evidenziazione della sintassi
  • Indentazione automatica
  • Attivazione automatica della compilazione
  • Identificazione delle parentesi corrispondenti
  • Molti disponibili, sia gratuiti che commerciali

80

Compilatore C

  • Traduce i programmi sorgenti scritti in linguaggio C in

programmi eseguibili

  • È a sua volta un programma eseguibile, a disposizione del

programmatore

  • Controlla l’assenza di errori di sintassi del linguaggio
  • Non serve all’utente finale del programma
  • Ne esistono diversi, sia gratuiti che commerciali

81

Ambienti Integrati

  • Applicazioni software integrate che contengono al loro

interno

  • Un editor di testi per programmatori
  • Un compilatore C
  • Un ambiente di verifica dei programmi (debugger)
  • IDE: Integrated

Development

Environment

82

Traduzione di un Programma

File sorgente

File oggetto

File eseguibile

CompilatoreCompilatore

LinkerLinker LibrerieLibrerie Librerie

Questo file può essere direttamente caricato in memoria ed eseguito

Architettura degli elaboratori Memoria

Unità elaborazione

Unità uscita

Unità ingresso

Memoria centrale (RAM)

Memoria di massa (dischi)

I Blocchi Fondamentali dell’Elaboratore

Massima Memoria Esterna

  • La memoria esterna (es. dischi) non dipende dall’Abus

perché viene vista come un periferico (di input e/o di

output)

  • La massima quantità di memoria esterna dipende dal bus

di I/O (quello su cui sono collegati i periferici)

91

Unità di Input/Output

  • Trasformano informazioni dal mondo umano a quello del

computer e viceversa:

  • umano = diversi tipi di segnali fisici, analogici, asincroni
  • computer = segnali solo elettronici, digitali, sincroni

92

Controllo

Interfaccia (controller)

Interfaccia (controller)

Dati

I Bus Esterni (I/O)

Piastra madrePiastra madre

Universali

USB

Firewire (IEEE

Orientati alle

memorie di massa

SCSI

EIDE

Unità di controllo

Unità di controllo

Registri (Memoria locale)

Unità aritmetica (ALU)

CPU

94

Registri

  • Elementi di memoria locale usati per conservare

temporaneamente dei dati (es. risultati parziali).

  • Pochi (8...128)
  • Dimensione di una word (8...64 bit)

Unità Operativa

  • Svolge tutte le elaborazioni richieste (aritmetiche, logiche,

grafiche, ...).

  • E’ composta di:
    • ALU
    • flag
    • registri

ALU (Arithmetic-Logic Unit)

  • Svolge tutti i calcoli (aritmetici e logici)
  • Solitamente composta da circuiti combinatori

97

Principio di Funzionamento di un Elaboratore

  • Il processore esegueprogrammi
    • Programma = Insieme di istruzioni
    • Istruzioni = Direttive comprensibili dal processore corrispondenti a delle azioni: - Operazioni aritmetiche - Interazione con dispositivi di I/O - Interazione con memoria - Operazioni di controllo
  • Dati = Informazioni su cui il programma opera

Principio di Funzionamento (Cont.)

  • Principio dello “stored computer program”
    • Dati e programmi risiedono nella memoria di massa
      • Vista utente:FILE
    • Per efficienza, per essere eseguiti DEVONO sempre essere caricati nella memoria centrale prima di essere eseguiti
  • Giustificazione:
    • Compromesso velocità/quantità
      • Poca memoria “veloce”, molta memoria “lenta”

Principio di Funzionamento (Cont.)

Disco Memoria Centrale

Microprocessore

  1. Caricamento programma
  2. Lettura dati
  3. Scrittura risultati

Preleva una istruzione dalla memoria centrale

Interpreta l’istruzione

Esegue l’istruzione

Ciclo di Esecuzione delle Istruzioni

Il Clock

  • Ogni elaboratore contiene un elemento di

temporizzazione (detto clock ) che genera un riferimento

temporale comune per tutti gli elementi costituenti il

sistema di elaborazione.

Linguaggio dei Calcolatori

  • Qual è il linguaggio dei calcolatori?
  • Un calcolatore è un dispositivo:
    • Elettronico:
      • Funzionamento basato su segnali elettrici
    • Digitale:
      • Segnali elettrici “particolari” che hanno solamente due valori (segnalibinari)
  • E’ possibile rappresentare lo “stato” di un calcolatore

tramite un insieme di simboli che hanno solo due valori

Bit e Byte

  • Per convenzione, i due valori del segnale sono identificati

con 0 e 1

  • Bit = Singolo valore 0/1 = Binary digIT (cifra binaria)
  • Un gruppo di 8 bit viene denominato Byte
  • Un gruppio di 2 Byte viene denominato Word
  • Multipli del Byte
    • Kilo K 210 ~ un migliaio
    • Mega M 220 ~ un milione
    • Giga G 230 ~ un miliardo
    • Tera T 240 ~ mille miliardi

Terminologia

1 0 1 1 0 1 1 0

LSB

Least Significant Bit

MSB

Most Significant Bit

111

Perché Binario?

  • Esistono diversi vantaggi pratici derivanti dall’utilizzo di un

dispositivi binario:

  • Semplicità e facilità di costruzione
  • Precisione e robustezza dei segnali
  • Precisione nella duplicazione
  • E’ inoltre possibile rappresentare qualunque tipo di

informazione senza limitazioni

  • Informazione binaria usata come codifica

Rappresentazione dell’Informazione

  • Qualunque informazione trattata da un elaboratore deve

essere rappresentata tramite segnali binari:

  • Dati numerici
  • Dati non numerici
  • Per motivi di efficienza, qualunque tipo di dato viene

trasformato in dato numerico

Settimana n. 3

Contenuti

  • Il linguaggio C
  • Variabili
  • Costanti
  • Visibilità delle variabili
  • Rappresentazione dei dati numerici e non numerici

115

Genesi del Linguaggio C

  • Sviluppato tra il 1969 ed il 1973 presso gli AT&T Bell Laboratories ( Ken Thompson, B. Kernighan, Dennis

Ritchie)

  • Per uso interno
  • Legato allo sviluppo del sistema

operativo Unix

  • Nel 1978 viene pubblicato “The C

Programming Language”, prima specifica ufficiale del linguaggio

  • Detto “K&R”

Ken Thompson

Brian Kernighan

Dennis Ritchie

116

Caratteristiche Generali del Linguaggio C

  • Il C è un linguaggio:
    • Imperativo ad alto livello
      • ... ma anche poco astratto
    • Strutturato
      • ... ma con eccezioni
    • Tipizzato
      • Ogni oggetto ha un tipo
    • Elementare
      • Pochekeyword
    • Case sensitive
      • Maiuscolo diverso da minuscolo negli identificatori!
    • Portabile
    • Standard ANSI

117

Storia

  • Sviluppo
    • 1969-
    • Ken Thompson e Dennis Ritchie
    • AT&T Bell Labs
  • Versioni del C e Standard
    • K&R (1978)
    • C89 (ANSI X3.159:1989)
    • C90 (ISO/IEC 9899:1990)
    • C99 (ANSI/ISO/IEC 9899:1999, INCITS/ISO/IEC 9899:1999)
  • Non tutti i compilatori sono standard!
    • GCC:Quasi C99, con alcune mancanze ed estensioni
    • Borland & Microsoft:Abbastanza C89/C

118

Diffusione Attuale

  • I linguaggi attualmente più diffusi al mondo sono:
    • C
    • C++, un’evoluzione del C
    • Java, la cui sintassi è tratta da C++
    • C#, estremamente simile a Java e C++
  • Il linguaggio C è uno dei linguaggi più diffusi
  • La sintassi del linguaggio C è ripresa da tutti gli altri

linguaggi principali

Un Esempio

#include <stdio.h>

int main(void)

printf("hello, world\n");

return 0;

Identificatori

  • Si riferiscono ad una delle seguenti entità:
    • Costanti
    • Variabili
    • Tipi
    • Sottoprogrammi
    • File
    • Etichette
  • Regole:
    • Iniziano con carattere alfabetico o “_”
    • Contengono caratteri alfanumerici o “_”