Anteprima
Vedrai una selezione di 10 pagine su 42
Appunti Elementi di informatica e programmazione Pag. 1 Appunti Elementi di informatica e programmazione Pag. 2
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 6
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 11
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 16
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 21
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 26
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 31
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 36
Anteprima di 10 pagg. su 42.
Scarica il documento per vederlo tutto.
Appunti Elementi di informatica e programmazione Pag. 41
1 su 42
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

MEMORIE DI MASSA:

-hard disk (dischi magnetici)

-SSD (dischi a stato solido)

-CD,DVD,BLU-RAY (dischi ottici)

DISCHI MAGNETICI

hard disk

Un consiste di un insieme

di piatti con due superfici

magnetizzabili.

Ogni superficie ha una propria testina

di lettura/scrittura ,ed i dischi ruotano

attorno ad un perno centrale. Organizzazione fisica dei record:

-Le superfici sono organizzate in cerchi

concentrici (tracce) e in spicchi di pari

grandezza (settori) separati da parti vuote

(gap) .

-Tutte le tracce equidistanti dal centro (su

più piatti) forma un cilindro ƒ

-Ogni traccia traccia contiene contiene lo

stesso numero di bit (densità di

memorizzazione variabile dalla periferia

verso il centro)

PRESTAZIONI DEGLI HARD DISK

- Tempo di accesso

Seek Time

●​ : la testina deve arrivare alla traccia giusta. Dipende dalla meccanica ed

è misurato in millisecondi (10-100ms) ƒ

Latency Time

●​ : il disco deve ruotare fino a portare il record nella posizione giusta ƒ

dipende dalla velocità di rotazione, misurata in giri/min (RPM) ‹

- Transfer Rate ƒ

Velocità di trasferimento del disco → dipende dalla densità e dalla velocità di rotazione ƒ

misurata in MB per secondo (MBps) ,valore tipico: 5-80 MBps 20

DISCHI OTTICI

I dischi ottici sono costituiti da un materiale riflettente. Le

informazioni sono contenute nel disco a spirale ,ed il

laser che esegue la lettura lo fa proprio seguendo

questa spirale con modalità di accesso sequenziale.

In base al fatto che il laser venga più o meno riflesso,si

riesce a riconoscere l’informazione(bit).

Nonostante l’accesso sequenziale le tecnologie ottiche

moderne permettono una rapida velocità di lettura. → quando si passa da 1 a 0 si “perde la

bruciatura”, mentre tra una sequenza di

0 viene mostrata

TIPI DI DISCHI OTTICI

Dischi di sola lettura:

●​ CD-ROM

●​ DVD-ROM

●​ BD(blu-ray disk)-ROM

Dischi scritti una sola volta:

●​ CD-R

●​ DVD-R

●​ DVD+R

●​ BD-R

Dischi scritti più volte (possono essere scritti più volte da dei masterizzatori appositi)

●​ CD-RW

●​ DVD-RW

●​ DVD+RW

●​ BD-RE 21

LE PERIFERICHE DEL CALCOLATORE

• Indirizzamento:

●​ I/O mappato in memoria→la periferica riconosce come propri degli indirizzi dai bus

indirizzi che non coincidono con le parole di memoria

●​ I/O isolato → gli indirizzi coincidono con le parole di memoria

• Sincronizzazione:

●​ A controllo di programma:

ciclo di polling→se la periferica è pronta ad agire con noi:

1.Legge il registro di stato della interfaccia di I/O della periferica

2.Ricavare il bit di sincronizzazione

3.Se il risultato è 0 torna al passo 1.

4.Viceversa procedere e acquisire il dato→leggi il registro dati della interfaccia di I/O della

periferica

●​ A interruzione

Quando la periferica è pronta ad essere sincronizzata con la CPU lo segnala attraverso un

segnale di interruzione al bus controlli che va ad interrompere ciò che sta facendo la CPU.

-la CPU deve saper ricominciare il lavoro che è stato interrotto

-identificazione di chi ha interrotto→la CPU interroga ogni periferica per capire che ha

effettuato l’interruzione,oppure la periferica stessa annuncia al bus dati che è stata lei a

interrompere

-priorità nell’interruzione

●​ Ad accesso diretto della memoria

Un dispositivo hardware chiamato DMA permette il trasferimento di una grande quantità di

dati.

LA TASTIERA

Quando si preme un tasto sulla tastiera viene inviato un segnale elettrico che rappresenta

dei bit. STRIN→area della memoria centrale che memorizza i dati emessi dalla tastiera.

SCHERMO

Costituito da una tabella di righe e colonne di pixel. 22

Per trasmettere un’immagine dei pixel vengono accesi o spenti secondo una determinata

codifica.

Ogni pixel è costituito da 3 “luci” RGB(red,green,blue),ed in base alla loro intensità

determinano un colore. Nella memoria deve essere memorizzato il livello di intensità di

ciascuna di queste lampadine.

Ogni lampadina è codificata da 8 bit→256 colori(per lampadina). 24

8 bit+8 bit+8 bit=24 bit (3 lampadine totali)→in totale è quindi possibile avere 2 colori=16M

Alcuni esempi di risoluzione(pixel) sono 1024x728 o 2024 x 1536(=3M→servono 12MB).

La frequenza invece è solitamente è di 60 Hz, quindi se per esempio bisogna trasferire

12MB con una frequenza di 60 Hz→60•12=720 MB/s

LINGUAGGIO DI PROGRAMMAZIONE C

Nella programmazione è importante astrarsi dalle problematiche,ovvero togliere l’attenzione

da esse e porla su altre cose.

●​ Il linguaggio macchina è un modo di astrazione dalle problematiche

●​ il linguaggio assembly invece utilizza simboli per sostituire(tradurre) le operazioni del

linguaggio macchina ed anch’esso è un modo di astrazione. Anche questo però ha

diverse problematiche ,per esempio le uniche strutture di controllo sono le parole di

memoria TOP-DOWN

Per risolvere il problema è utile utilizzare la procedura , ovvero scomporre in

sottoproblemi.

Un linguaggio di programmazione deve quindi essere:

●​ funzionale (facile da scrivere)

●​ mantenibile (facile da modificare)

●​ efficiente (CPU time e memoria richiesta)

●​ portabilità (esecuzione in piattaforme differenti)

CLASSIFICAZIONE DEI LINGUAGGI DI PROGRAMMAZIONE

1.​ gen: macchina

2.​ gen: assembly

3.​ gen: C, C++,Java…

4.​ gen: dipende dal database e non da un algoritmo (es. SQL)

5.​ gen: descrivo il problema e non la soluzione (es PROLOG)

PARADIGMI DI PROGRAMMAZIONE

●​ strutturata:si assume come regola che il programma è costituito da strutture di

controllo(es. C)

●​ procedurale:(es.COBOL)

●​ orientata agli oggetti:i programmi devono definire oggetti software,ovvero degli

agglomerati di dati o procedure(es.Java,Python)

●​ funzionale: programmi scritti come def.di una funzione matematica

●​ dichiarativa:il programma descrive il problema da risolvere

Tutti questi linguaggi necessitano di un traduttore(compilatore),che traduce al calcolatore in

linguaggio macchina

1.​ INTERPRETAZIONE SOFTWARE(traduzione istruzione x istruzione)

2.​ COMPILAZIONE(il programma è tradotto interamente) 23

LINGUAGGIO C

IDE: Integrated Development Environment

# →direttiva al calcolatore es. #include #define #ifndef

I programmi sono costituiti da identificatori simbolici: caratteri alfanumerici e caratteri

underscore(_)

IDENTIFICATORI:

●​ predefiniti (es.printf)→già predefiniti da altri,quindi non possono essere utilizzati

come variabili

●​ riservati→es main

●​ keyword→parole chiave,sia predefinite che riservate(es. if,for)

Un programma deve avere quindi questo aspetto:

#direttive

funzioni int main (void){

dichiarazione variabili,istuzioni…

}

ALCUNE CONVENZIONI DEL LINGUAGGIO DI PROGRAMMAZIONE C

1.​ _underscore→utilizzato per separare(come spazio) es.somma_pos,

oppure utilizzare la lettera maiuscola es.sommaPos

2.​ su una riga al più una istruzione→ ; punto e virgola utilizzato x la fine di

un’istruzione

3.​ parti logicamente distinte separate(per esempio da una riga vuota)

4.​ uso delle parentesi graffe che denotano un blocco di istruzioni:

→parentesi aperta:primo/ultimo carattere della riga

→parentesi chiusa:preceduta da (a capo/invio)

→ciò che sta in mezzo a due graffe è detto indentato (tab)

5.​ 3 stili di graffe:parentesi su una riga assestante,parentesi graffa aperta(primo

carattere di una riga),parentesi graffa aperta(ultimo carattere di una riga)

6.​ COMMENTI:non sono istruzioni e servono solo a noi (non modificano il programma

che li ignora), se su una sola riga può essere utilizzata questa convenzione:

//commento altrimenti /* commento */ 24

TIPO DI UNA VARIABILE

INTERI CARATTERI REALI

Predefiniti: , , num.

Essi sono definiti ad hoc dal programmatore,come una data del calendario,un cognome, un

dato di un piano cartesiano,dati anagrafici ecc…

KEYWORDS per le variabili:

interi→int (dato intero)→32 bit

➔​

○​ short/long

○​ unsigned/signed

○​ long long int(64 bit)

carattere→char (8 bit)

➔​

○​ signed/unsigned

○​ “\n” →a capo

reali→float(32 bit) , double(64 bit)

➔​

○​ il punto equivale alla virgola e serve per separare il numero dal decimale es. 37.0

1

○​ La e serve per separare la mantissa dalla base es 3,7e1=3,7•10

Quindi una variabile si esprime così:

TIPO(int/char/(float/double)) elenco di identificatori(separati dalla virgola) ;

es. int x,y ; →si comunicano al calcolatore gli interi x e y

Esistono anche variabili di sola lettura(costanti),read only e vengono espresse così:

const TIPO elenco di identificatori ;

es. const float piGreco=3,14 ; 25

OPERAZIONI

●​ ASSEGNAMENTO

ident(lvalue/VAR)=exp ;

v1=v2=exp → uguale a → v1=(v2=exp)

●​ OPERAZIONI ARITMETICHE

●​ /(divisione) con operandi interi→divisione tra interi es. ⅔*3=0

●​ / con operanti reali→divisione tra reali es. 2.0/3.0*3.0=2.0

NB il resto % può essere utilizzato solo con operandi interi

●​ CONVERSIONE DI TIPO

1.Con operatori aritmetici

2.Con operatori di assegnamento

3.Invocazione(casting)

1.OPERATORI ARITMETICI

Attraverso un’operazione aritmetica l’operando più

piccolo è promosso nel tipo dell’altro operando.

Char(8 bit) < short int(16) < long int(32) < float(32)

< double(64) 26

2.OPERATORI DI ASSEGNAMENTO

3.OPERAZIONE DI CASTING→ TIPO(exp)

es. int(x) con questa operazione x viene trasformato in un intero. L’operazione di casting

può essere utile per evitare overflow.

ASTRAZIONE PROCEDURALE

int main(void)→= int main() { funzione principale→in ogni programma ci deve essere

almeno una fz. “main”

id(elenco di argomenti)→(separati dalla virgola)

l’ultima istruzione deve essere “return 0”, perché per convenzione se tutto è andato a buon

fine la fz. main restituisce 0

}

void→riga ad hoc

non void→riga ad hoc,exp 27

printf

VISUALIZZAZIONE

printf(“stringa,exp1,exp2,...)

stringa→elenco di caratteri racchiusi da “...”→indica al calcolatore come visualizzare le

espressioni successive.

Gli specificatori “trasformano” que

Dettagli
Publisher
A.A. 2023-2024
42 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher alter.verse di informazioni apprese con la frequenza delle lezioni di Elementi di informatica e programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Brescia o del prof Saetti Alessandro.