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


appunti di informatica, Appunti di Fondamenti di informatica

preparativi esame informatica diviso in moduli delle alide date dal professore

Tipologia: Appunti

2024/2025

Caricato il 19/05/2026

ly_itto
ly_itto 🇮🇹

2 documenti

1 / 19

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
modulo 11
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Anteprima parziale del testo

Scarica appunti di informatica e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

informatica appunti modulo 1

- ingegneria informatica - progettazione e realizzazione di impianti o di sistemi informatici - si compone di hardware (sensori e attuatori) + software (programmazione controllore logico programmabile che riceve segnali input e invia output) + rete (rete industriale che collega dispositivi per consentire comunicazione e coordinamento) - costruzione di calcoli - programmazione di base dei calcolatori - sviluppo di codice o software che interagisce direttamente con hardware - permette ai calcolatori di eseguire operazioni di base > gestione memoria + controllo dei dispositivi input/output + gestione processi - elaboratore elettronico (computer) - macchina automatica o dispositivo in grado di elaborare dati secondo un insieme di istruzioni - architettura di elaborazione - come è costruito fisicamente e logicamente un calcolatore > insieme dei componenti hardware e delle regole con cui interagiscono - comprende : CPU + memoria principale e secondaria + bus di comunicazione + periferiche I/O + instruction set architecture - sistema operativo - software di sistema che si interpone tra hardware e utente > compito di gestire le risorse hardware e software della macchina - reti - sistemi che collegano dispositivi per permettere comunicazione e condivisione di risorse tra di loro > vari tipi : LAN (copre area geografica limitata), WAN (copre area vasta) e PAN (copre un corto raggio)

  • Hard disk > orientazioni magnetiche
  • memoria SSD o chiavette USB > cariche elettriche nei transistor
  • CD/DVD > usa zone riflettenti e non sulla superficie del disco per rappresentare 0 e 1 - alfabeto binario
  • insieme di più byte = WORD - rappresentazione dei numeri nei calcolatori
  • ogni cifra (bit) rappresenta una potenza di 2
  • 1011 = 1 × 2 3
  • 0 × 2 2
  • 1 × 2 1
  • 1 × 2 0 = 8 + 0 + 2 + 1 = 11
  • Il bit più a sinistra ha l’esponente più alto perché rappresenta la parte più grande del numero
  • Man mano che ci spostiamo a destra, l’esponente diminuisce e i valori diventano più piccoli
  • Il numero 5 in binario è 101 per convertirlo in numero binario bisogna usare il metodo della divisione
  • 5 ÷^2 =^2 con^ resto^ di^1 =^ primo^ bit^ partendo^ da^ destra
  • 2 ÷^2 =^1 con^ resto^ di^0 =^ secondo^ bit
  • 1 ÷ 2 = 0 con resto 1 = terzo bit
  • numeri binari puri > senza segno > positivi
  • formula > 2 n^ −^1 dove n = 8
  • esempio > 10010101 1 ⋅ 2 7
  • 0 ⋅ 2 6
  • 0 ⋅ 2 5
  • 1 ⋅ 2 4
  • 0 ⋅ 2 3
  • 1 ⋅ 2 2
  • 0 ⋅ 2 1
  • 1 ⋅ 2 0 1 ⋅ 128 + 0 ⋅ 64 + 0 ⋅ 32 + 1 ⋅ 16 + 0 ⋅ 8 + 1 ⋅ 4 + 0 ⋅ 2 + 1 ⋅ 1 128 + 0 + 0 + 16 + 0 + 4 + 4 + 0 + 1 = 149
  • numero negativo > tre metodi
  • modulo e segno
  • primo bit rappresenta segno > 0 = positivo
  • 1 = negativo
  • restanti 7 il valore assoluto
  • complemento a 1
  • numeri positivi rappresentati dal modulo e hanno il primo bit di segno uguale a 0
  • numeri negativi si ottengono complementando il numero positivo corrispondente > si scambiano gli 1 con gli 0 e viceversa
  • complemento a 2
    • metodo 1 aritmetico > formula > X = 2 n^ – X
    • metodo 2 bitwise
        • 5 = 00101
      • − 5 = 11010 > complemento a 1
      • − 5 = 11011 > complemento a 2 > aggiungo 1 - concetto peso
  • Più bit usi, più "pesa" la rappresentazione in termini di memoria
  • architettura del computer > i computer lavorano con gruppi di 8, 16, 32, 64 bit perché è più efficiente leggere e scrivere dati in blocchi fissi
  • uniformità dei dati > se hai una lista di numeri e alcuni sono a 3 bit, altri a 5, altri a 7, sarebbe un disastro gestirli > renderli della stessa lunghezza
  • numeri con segno > se vuoi rappresentare anche i numeri negativi potresti aver bisogno di più bit - Come si calcola quanti numeri posso rappresentare con N bit?
  • formula > numeri rappresentabili = 2 numero^ di^ bit - numeri interi con notazione in eccesso
  • metodo alternativo per rappresentare i numeri interi con segno
  • si sceglie numero K (bias) per rappresentare lo zero
  • i numeri restanti sono definiti in modo incrementale e decrementale N+K - numeri in virgola fissa
  • posizione virgola è stabilita in anticipo e rimane invariata per tutti i numeri
  • xxxx , yyyy (x parte intera , y parte frazionaria)
  • esempio > 0000, 1110
  • parte intera > 0000 > 0 2 n − 1 = 2 3 0 ⋅ 2 3
  • 0 ⋅ 2 2
  • 0 ⋅ 2 1
  • 0 ⋅ 2 0
  • la parte decimale in binario è ,
  • numero completo > 13,25 =1101,
  • conversione in notazione scientifica binaria
  • per avere una sola cifra a sinistra della virgola spostiamo la virgola di 3 posizioni
  • 1101,01 > 1,10101 ⋅ 211
  • Problema: una CPU a 8 bit può rappresentare e calcolare numeri oltre 255?
  • una CPU a 8 bit può calcolare numeri maggiori di 225 ma non in un’unica operazione hardware
  • Con 8 bit (1 byte) si hanno 2 8 = 256 combinazioni, quindi si possono rappresentare numeri da 0 a 255 > CPU può combinare byte per rappresentare numeri grandi - D i f f e r e n za tra CPU, software e interfaccia
  • hardware > gestisce l’ampiezza dei registri (quanti bit elabora in una singola operazione) + gestisce l’ampiezza del bus dati (quanti bit trasferisce tra memoria e CPU) + esegue operazioni elementari sui bit (somme, spostamenti, confronti, ecc.)
  • software > coordina più operazioni a 8 bit per ottenere risultati più ampi + definisce formati di Calcolo Parte intera Parte decimale successiva 0,25 × 2 = 0,5 0 0, 0,5 × 2 = 1,0 1 0, Numero di byte Bit totali Combinazioni possibili Valori rappresentabili 1 byte 8 bit (^) 2⁸ = 256 0 → 255 2 byte 16 bit (^) 2¹⁶ = 65.536 0 → 65. 3 byte 24 bit (^) 2²⁴ = 16.777.216 0 → 16.777. 4 byte 32 bit 2³² ≈ 4 miliardi (^) 0 → 4.294.967.

rappresentazione (come i numeri vengono interpretati) + estende le capacità dell’hardware, permettendo di lavorare con numeri “più lunghi”

  • output > rappresentazione visiva dei dati - operazioni aritmetiche tra numeri binari
  • somma binaria operazione risultato prestito 0 + 0 0 0 1 + 0 1 0 1 + 1 0 1 0 + 1 1 0
  • somma in complemento a 1
  • se c’è un riporto finale, bisogna sommare quel riporto al risultato
  • somma in complemento a 2
  • se c’è un riporto finale (carry out), lo si scarta
  • sottrazione binaria operazione risultato prestito 0 - 0 0 0 1 - 0 1 0 1 - 1 0 0 0 - 1 1 1 > in prestito da cifra a sinistra
  • moltiplicazione binaria > somme + shift operazione risultato 0 x 0 0 1 x 0 0 1 x 1 1 0 x 1 0
  • divisione binaria > si divide più volte il dividendo finchè non si ottiene il resto 0 > obiettivo trovare quoziente e resto - overflow in complemento a 2
  • risultato supera intervallo presentabile
  • regola : overflow = carryin ⊕ carryout carry in carry out overflow 0 0 NO 1 1 NO 0 1 SI 1 0 SI - operazioni di scorrimento > shift
  • sinistro << moltiplica per 2
  • legge duale > A. B = B. A
  • associativa
  • legge booleana > (A + B) + C = A + (B + C)
  • legge duale > A. (B. C) = (A. B). C
  • distributiva
  • legge booleana > A. (B + C) = A. B + A. C
  • legge duale > A + (B. C) = (A + B). (A +C)
  • assorbimento
  • legge booleana > A. (A + B) = A
  • legge duale > A + (A. B) = A
  • elemento neutro
  • legge booleana > 0 + A = A, 1. A
  • legge duale > 1. A = A , 0 + A = A
  • complementare
  • legge booleana > A. A’ = 0 , A + A’ = 1
  • legge duale > A. A’ = 0 , A + A’ = 1
  • leggi di De Morgan
  • trasformare espressione logica con una negazione di AND o OR
  • trasformazione di OR negato
  • ¬(A+B)=¬A⋅¬B
  • trasformazione di AND negato
  • ¬(A⋅B)=¬A+¬B
  • strutture dati
  • metodi di organizzazione e gestione delle informazioni in memoria > permettono al computer di conservare, accedere e modificare i dati in modo efficiente
  • classificazione
  • tipi fondamentali (o primitivi) > tipi base con cui vengono rappresentate le informazioni elementari > si distinguono sulla base della quantità di memoria occupata + tipo codifica utilizzato
  • boolean > valori logici
  • char > caratteri singoli
  • Integer > numeri interi
  • float > numeri con virgola mobile
  • tipi derivati o strutturati > tipi composti costruiti a partire dai tipi fondamentali > organizzare le informazioni in memoria secondo dei criteri logici - array > collezione di elementi dello stesso tipo - vettore > elementi dell’array occupano posizioni contigue in memoria + ogni elemento è individuato tramite un indice + dimensione non modificabile + elemento i-esimo si indica N(i)/N[i] - array bidimensionale > matrice > tabella di valori organizzata > collezione ordinata di elementi + ogni elemento identificato da indice riga e indice colonna + notazione M[i,j] - struct (o record) > insieme di campi di tipo diverso - dato derivato che rappresenta un insieme ordinato di elementi di tipo diverso correlati fra loro - stack (pila) > struttura LIFO (“Last In, First Out”) > l’ultimo elemento inserito è il primo a uscire - contenitore di elementi omogenei + essere riempita o svuotata solo da un lato, chiamato “cima” (top) + operazioni PUSH X inserisce elemento e POP () rimuove ultimo elemento inserito - queue (coda) > struttura FIFO (“First In, First Out”) > il primo elemento inserito è il primo a uscire
  • symbol table
    • struttura dati fondamentale nei linguaggi di programmazione > memorizzare il rapporto tra identificatori e memoria
    • identificatori > nomi simbolici usati in un programma per dare identità a vari elementi
  • 1 modulo
  • 2 modulo
  • dichiarare una variabile perché il computer deve sapere in anticipo byte da riservare + tipo dati + come interpretarli - UML
  • linguaggio consente di modellare diversi aspetti dei sistemi o processi analizzati
  • utile per scopo analisi + progetto software
  • usa il diagramma
  • diagramma delle classi
  • descrivere classi + attributi delle classi + relazioni fra classi
  • classe > definisce un concetto generale > attributi + metodi
  • oggetto > istanza concreta di una classe > valori specifici
  • diagramma delle attività
  • definire sequenza temporale delle operazioni svolte in parallelo > fork : indica che da un'attività si passa a più attività parallele > Join : unisce le attività parallele in un unico flusso > per attività alternative si usa il simbolo del rombo
  • diagramma degli stati
  • descrive comportamento delle classi in termini di macchina a stati (descrive comportamento del sistema)
  • diagramma dei casi d’uso
  • descrive il sistema nelle modalità in cui esso è percepito e utilizzato dagli utenti che interagiscono con lo stesso > requisiti funzionali di un sistema - linguaggi di programmazione
  • codice macchina
  • direttamente comprensibile ed eseguibile dal processore
  • ogni istruzione rappresentata da una sequenza di bit
  • codici operativi op-code indicano quale operazione deve essere eseguita
  • operandi specificano i dati su cui operare
  • codice assembler
  • utilizza mnemonici per rappresentare le istruzioni del linguaggio macchina rendendo la programmazione leggibile
  • ogni istruzione corrisponde direttamente a un’istruzione in linguaggio macchina
  • codici mnemonici sostituiscono numeri binari
  • lavorare direttamente con i registri
  • tradotto in linguaggio macchina da assembler
  • metacodice
  • no eseguibile o comprensibile
  • sequenza di byte e rappresenta istruzioni e operandi
  • indipendente da piattaforma hardware
  • necessita interprete per tradurre codice in linguaggio macchina
  • Codice intermedio tra linguaggio alto livello (java, Python, c#)
  • linguaggi evoluti
  • costrutti sintattici che facilitano scrittura del codice e definizione dei dati
  • possiedono strutture di controllo di alto livello
  • necessitano compilatori o interpreti
  • compilatori
  • programmi che agiscono su un programma sorgente e producono il corrispondente codice macchina
  • passi che convertono il programma sorgente in altre fasi intermedie
  • linker > unisce file oggetto generati da compilatore a librerie esterne e produce il file eseguibile
  • loader > caricare eseguibile in memoria ed eseguirlo
  • linguaggio Python
  • funziona diversamente da linguaggio C / C++
  • non usa assembly e non utilizza linker separato
  • Insieme immutabile (frozenset) > frozenset({1, 2, 3}) > Come un set, ma immutabile
  • Numero complesso (complex) > 2 + 3j > Numeri con parte reale e immaginaria
  • Byte (bytes) > b"ciao" > Sequenza di byte immutabile
  • Bytearray bytearray(b"ciao") Sequenza di byte modificabile
  • Memoryview > memoryview(b"ciao") > Accesso efficiente ai dati binari - linguaggio C
  • dichiarare variabili
  • #include int main() { int x = 5; // dichiarazione esplicita: int float y = 3.14; // float char c = 'A'; // carattere printf("%d\n", x); return 0; }