Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Il computer
- 1942 - 52
- 1958 - 63
- 1964 - 80
- 1980 - oggi
- Futuro
Esistono due grandi classi di elaboratori:
- Elaboratori di uso generale (general-purpose computer) es. PC
- Elaboratori dedicati (special-purpose computer) es. computer dentro alla lavatrice
Server: è un elaboratore che fornisce dei "servizi" ad altri elaboratori (chiamati client) attraverso una rete (computer network)
Server farm: si fa riferimento all'insieme di elaboratori server collocati in un apposito locale (centro di calcolo) presso una media o grande azienda
(Big iron) Mainframes: sono elaboratori di grandi prestazioni usati principalmente da grandi imprese per rilevanti applicazioni software
Super computer: grandissimi calcolatori. IBM Blue Gene/Q (Luglio 2012) Labs - Potenza: 16 PFlops (Peta flops)
Super computer (bozJune 2010) 16.400.000.000 moltiplicazioni al secondo (16.4 miliardi)
Flops = Floating point - operazioni con numeri con la virgola cioè COMPLICATE
Peta = mille miliardi di operazioni
Operazione per secondo
Dobbiamo tradurre il problema in una serie di passi/passaggi così che il PC comprenda la situazione
La soluzione a un problema passa generalmente attraverso un algoritmo. Algoritmo + Dati = Programma
- Algoritmo semplice: cucinare la pasta
- Algoritmo complesso: ordinare un mazzo di carte
Algoritmi x ordinamento più famosi: - Bubblesort - Quicksort
Diagramma di flusso
- Calcolo del massimo tra due valori A e B
- Soluzione: il massimo è il più grande tra A e B
Soluzione formale
- Reset (Inizializzare max = 0) A, B - Inizia
- Mettere max = B, stop
La programmazione consiste nella scrittura di un "documento" (file sorgente) che descrive la soluzione del problema in oggetto.
In genere non esiste "la" soluzione ad un certo problema.
Diagrammi di flusso (flow-chart)
Blocchi di inizio fine
- Start
- Stop
Blocchi di azione
- Azione generica
- I/O
Input (tastiera), Output (schermo/video)
Blocco di decisione
Condizione
Es.
Start
MAX:=0
NO
A>B?
Sì
MAX:=B
MAX:=A
Stop
Blocco di connessione
Architettura degli Elaboratori
RAM
Random Access Memory - Accesso casuale alla memoria
Microprocessore
(MP) è un chip che realizza le funzioni "Central Processing Unit" (CPU) in un computer o in un sistema elettronico.
Registri:
- ALU: Unità aritmetica e logica
- Unità di controllo: Gestisce unità, decodifica istruzioni, ciclo fetch
- Bus: Trasporto di segnali per governare le attività nel tutto
Massima memoria integrata:
- La dimensione dell'ABUS determina il max numero di celle di memoria indirizzabili
- ABUS da 20 bit
- Max memoria = 2ABUS x DBUS
- Esempio: 232 celle x 232 word = 232 x 4 bytes
La memoria esterna
Non dipende dall'ABUS perchè viene vista come un periferico (in input e/o in output I/O)
Memoria
La massima quantità di memoria esterna dipende dal bus I/O (ovvero su cui sono collegate periferiche)
Dati
I dati numerici sono più usati e tutti gli altri tipi di dati vengono trasformati in numerici.
In C tutti i dati devono essere dichiarati prima di essere usati.
- La dichiarazione di un dato richiede:
- L'allocazione di uno spazio in memoria atto a contenere il dato
- L'assegnazione di un nome a tale spazio in memoria
La dichiarazione va nella parte dichiarativa (globale o locale). Occorre specificare: nome, tipo e modalità d'accesso.
Se la modalità di accesso non è specificata è sottintesa: variabile
Identificatori da parole chiave
- char: intera a 8 bit usato per i caratteri (codifica ASCII)
- int: intero
- float: reale (floating point singola precisione, ex. 32 bit)
- double: reale ( " " " doppia " " ex. 64 bit)
La dimensione di questi tipi dipende dall'architettura (non definita dal linguaggio), ad eccezione del char. 1 char = 8 bit = 1 byte sempre.
Sono presenti dei modificatori ai tipi base:
- signed / unsigned: applicabili a char e int
- valore numerico con segno
- valore numerico senza segno
- signed 2n-1 -> - 2n-1 + 1
- unsigned 2n -> +
short / long: applicabili a int. Utilizzabili anche senza specificare int. dimensione
- es. long int: numero intero con il doppio di bit 64 bit
- short int: ". . . la metà di bit 16 bit
- long long int: ". . . quadruplo di bit 128 bit
es. [signed / unsigned] short [int]
int
long [int]
long long [int]
es. int x;
short int stipendio;
6,02 * 1023 = 6,02 e 23 "realtà" in C
Unicode
Mettete tutti i caratteri di tutte le lingue del mondo (+ di un milione)
UTF-8
È la codifica di Unicode più usata.
- 1 byte per caratteri ascii (MSB = 0)
- 2 byte per caratteri latini con simboli diacritici, greci, cirillico, armeno, ebraico, arabo, simboli matematici
- 3 byte per altra lingue di uso comune
- 4 byte per caratteri rarissimi
Raccomandata da IETFF per e-mail
Rappresentazione di un testo in formato ascii
Ogni riga terminata dal terminatore di MGA
- in MS–DOS e Windows = CR+LF
- in UNIX = LF
- in MacOS = CR
Pagine talvolta separate da FF
Codifiche o formati di testo/stampa
Non confondere il formato di un file Word con codici ascii
Un testo può essere memorizzato in due formati:
- Formattato = sono memorizzati i seguenti di byte che permettono l'aspetto del testo (e.g. font/spaziatura)
- Non formattato = sono memorizzati unicamente i caratteri che compongono il testo
(Portable Document Format) è un formato open di file basato su un linguaggio di descrizione di pagina sviluppato da Adobe Systems per rappresentare documenti in modo indipendente dall'hardware e dal software utilizzati per generarli o per visualizzarli.
Un file PDF può descrivere documenti che contengono testo e/o immagini a qualsiasi risoluzione.
While
< inizializzazione >
while ( < condizione > )
< blocco >
< incremento >
ES Dan N, stampa la somma S dei primi N numeri interi.
int N, S, i;
i = 1
S = 0
scanf("%d\n",&N);
while (i <= N)
{
S = S + i;
i++;
}
printf("Somma: %d\n", S);
Do
Sinntassi :
do
< blocco >
while ( < condizione > )
ES. LETO n CONTROLA CHE SIA POSITIVO SE NO RIPETE LA LETTURA
int n;
do
scanf("%d", &n);
while (n <= 0)
Stringhe
Sequenze di caratteri terminate dal carattere '0' (null)
Sintassi: char s[]
Es. char s[] = "ciao"
La stringa vuota non è un vettore "vuoto"
char s[] = "";