Estratto del documento

Codifica in base 2

Base 10 => [42] => 4= decina, 2= unità => codifica in base alla posizione => ogni elemento della codifica è come se venisse moltiplicato per una potenza del 10 => 4•101 + 2•100 = 42

Base B

42 = 4•B + 2•B1

Base 2

[42]= 25 + 23 + 21 = 32+8+2 = 42 => è possibile rappresentarla in forma binaria ovvero in forma di bit = 0•25 +1•24 +0•23 + 1•22 +0•21 +1•20 = [101010]

Somma

101 + 11 =

  • [101] = 1•22 + 0 • 21 + 1•20 = 5
  • [11] = 1•21 + 1•20 = 3
  • 1 + 1 fa 10 => 0 con riporto di 1 (1 + 1 = 2 in base 10, ma in base 2 => 1•21 + 0•20 = [10])
  • 1 + 0 fa 1 senza riporto
  • 101 + 11 = 1000 (in colonna)
  • Controllo = 5 + 3 = 8 => [1000]2 = 23

Prodotto

Inizio moltiplicando 0•101, poi faccio 1•101 e infine sommo i due risultati traslando di una posizione.

Base 2 = moltiplicare per due traslare verso sinistra e aggiungere uno zero => se si divide si sposta verso destra.

Controllo = 101 = 4+1 = 5 => 10 = 2 => 5*2 = 10 => [1010] = 23 + 0•22 + 1•21 + 0•20 = 8+2 = [10].

Regola dei resti successivi

  • Faccio partire da k=1 la sommatoria e porto fuori dalla sommatoria a•20
  • Riscrivo la sommatoria facendola partire da k=0 e quindi merendo k+1 al posto di k
  • Riscrivo 2k+1 come 2•2k
  • Porto fuori il 2 dalla sommatoria
  • N(dividendo)= Q(quoziente)•D(divisore) + R => R= il resto è la cifra meno significativa del bit = posizione = ultima cifra della rappresentazione posizionale => in questo caso D=2 e R=a
  • Facciamo la stessa cosa però spostando tutto in avanti di un numero mettendo quindi k+2 dentro la sommatoria e fuori a1
  • Ad ogni divisione per la base, cioè 2, il resto è l’ultima cifra nella rappresentazione posizionale
  • 125:2=62 con resto di 1 => 62:2=31 resto 0 => 31:2=15 resto 1 => 15:2=7 resto 1 => 7:2=3 resto 1 => 3:2=1 resto 1 => 1:2=0 resto 1 => 111101 sono i resti

Base esadecimale

  • Base 16 => dopo il 9 si usano lettere => [1,2,3,4,5,6,7,8,9,A,B,C,D,E,F]
  • [16] = [10] = [0001 0000] => Pacchetti di 4 bit = vedo quanto valgono in base 10 => possibile convertirli da binario a esadecimale => 16 in base 10 si rappresenta in base 16 come 10
  • [75] = [0100 1011] (partendo da destra = 1+21+23+26 = 75) => = [4B] => B perché sarebbe 11 utilizzato per i colori

Interi senza segno

  • Supponiamo di avere un numero limitato di N bit
  • Vogliamo rappresentare dei numeri interi senza segno
  • Con N bit possiamo rappresentare i numeri da 0 a 2N - 1
  • Sequenza di 8Bit = 1 Byte => numeri da 0 a 255 => DA 0 A 28 - 1

Interi con segno

  • Complemento a 2 => Usando il complemento 2 si rappresentano i valori tra -2N-1 a 2N-1 - 1
  • Rappresentazione a 2 in cui il bit più significativo ha peso negativo
  • Con 8 bit ad esempio avremo valori in [-128, 127]
  • Il complemento a due si calcola invertendo tutti i bit => 1 diventa 0 e 0 diventa 1, e aggiungendo 1
  • -23 = servono 6 bit perché 26 = 64 => [-32, 31]
  • Resti successivi: [23] = [010111]2
  • Complemento a 1: [101000] + 1 = (CA1 = inverto tutti i bit e aggiungo 1 facendolo diventare CA2) CA1
  • Complemento a 2: [101001] = -25 + 23 + 21 = -23 (il primo bit ha valenza negativa) CA2
  • Overflow = Rappresentare un numero che supera il valore massimo rappresentabile => in 8 bit è 255
  • Underflow = Rappresentare un numero più piccolo di quello più piccolo rappresentabile

Numeri con virgola mobile

Float - Segno • mantissa • base =(caratteristica)

  • Secondo lo standard IEEE 754 la rappresentazione di un float è la seguente:
  • Segno=1bit => 0 positivo, 1 negativo
  • Caratteristica= 8bit
  • Mantissa=23bit
  • Forma normale mantissa rispetta vincolo 1≤ m < B => base 2= 1 ≤ m < 2
  • Parte frazionaria numero reale = [1,a1a2…ak] = 2-1 + 2-2 … 2-k
  • Moltiplicando iterativamente per 2 ottengo le cifre 0 o 1 della parte intera
  • e= c+(27 -1) => invece che rappresentare la caratteristica direttamente in un complemento a due si codifica un intero a 8bit detto esponente secondo questa formula => 8bit = [128;127]=> Es. e=178 allora c=178-127=51, il numero sarà s•m•251

Caratteri e stringhe

  • Caratteri = interi di 8bit
  • Stringhe = sequenze di caratteri
  • Spyder e codifica ASCII

Formato programmi

  • File sorgente = .py
  • # => commento => testo libero a singola riga => se metto ‘‘‘ tre apici => più righe
  • Spazi = tra una parola chiave e l’altra => tiene il codice ordinato
  • Tab = tabulatore = 4 spazi
  • A capo = per terminare un’ istruzione occorre andare a capo (dopo il due punti)
  • Righe vuote = Si considera pythonica una sola riga vuota
  • : => stessa riga
  • /n = a capo

Tipi di dato

  • INT = interi senza segno => precisione arbitraria
  • FLOAT = 64 Bit => Spaziano su insiemi numerici R, N e Z => limitazioni come l’underflow e l’overflow
  • CHAR = caratteri = rappresentati su 8 bit = 1 Byte => 255 valori => codifica ASCII
  • STR = stringhe = sequenze di caratteri => ‘ciao’ o “ciao” = apici singoli o doppi
  • Costante = valore che non si può modificare durante l’esecuzione
  • Variabile: dà il nome ad una locazione di memoria in cui è memorizzato un valore di un certo tipo
  • Per capire di che tipo si tratta => type(variabile)
  • Definite al momento dell’assegnazione => nome non può iniziare con un numero => Possono contenere tutti i caratteri alfanumerici compresi gli _

Sintassi

  • <> = simbolo che può espandersi
  • | = alternativa
  • [] = opzionalità di un simbolo (sia terminale che non terminale)
  • Simboli terminali non si possono espandere => simboli non terminali si possono espandere e possono essere definiti secondo una certa logica
  • Semantica di ciascuna espressione è suddivisibile in: Valore assunto dall’espressione (quanto fa l’espressione) e Side-effects sulle variabili usate (quello che modifica le variabili)

Espressioni e operatori

  • Combinano variabili e costanti tramite operatori
  • Semantica di ciascuna espressione è suddivisibile in:
  • Valore assunto dall’espressione
  • Side-effects sulle variabili usate = Alcune espressioni modificano valore delle variabili che contengono
  • Operatore assegnazione: = assegnare un valore ad una variabile => operatore binario => semantica => variare il valore dell’operando sinistro (solo variabili) sostituendovi il valore dell’operando destro => Non commutativo: a=b è diverso da b=a => combinare più operatori tramite l’operatore di assegnazione => x+=10 #x=x+10; x/=2 #x=x/2; x*=a+1 #x=x*(a+1)
  • Operatori binari relazionali => Si usano per determinare la relazione tra due valori => espressione relazionale ha valore False o True.
  • Le costanti False e True sono costanti di tipo bool
  • Operatori logici binari: and, or => Algebra di Boole
  • Combinare valori di verità/falsità ottenuti da espressioni relazionali => and = prodotto => or = somma
  • Valori di variabili Booleane: {0,1}
  • Un’espressione logica ha valore False o True
  • Esiste anche l’operatore unario di negazione: not

Parsing sintattico

  • Albero sintattico dell’espressione
  • Si riconosce ogni elemento terminale (es. <op>)
  • Combinazione di più elementi terminali dà origine ad elementi non terminali (<expr>)
  • Al termine se l’albero si conclude con <expr> l’espressione è sintatticamente corretta.
  • Ordine operatori: operatori aritmetici: * / + - => in generale si mette le parentesi => metalinguaggio = elementi terminali (intero) e non terminale (variabile = devo vedere cosa è) => serve per sintassi

Liste

  • Definizione = sequenza di locazioni di memoria contenenti variabili o costanti => Lista = nome collettivo ad un insieme di valori di cui si mantiene l’ordine
  • Definisco una Lista => Posso accedere alle sue locazioni usando un indice => L’accesso ad una lista si chiama indicizzazione => a partire da un indice (valore intero positivo) si ottiene una variabile => vector = [1,2,3] => vector[0] = 1 => se l’indice è un intero negativo parto dall’ultimo elemento => vector = [-30,-20,-10] => vector[-1] = -10
  • Operazione di Slicing => lista[Indice d’inizio : Indice di fine : Passo]
  • Sottolista: a[3:6] = "a di 3 : 6" elementi dalla posizione 3 alla posizione 6 esclusa
  • Sottocampionamento della lista a[3:6:2] = stessa sottolista di prima ma considero un elemento ogni 2 => 2 è il passo
  • Alcuni indici si possono omettere:
    • lista[:4] => tutti da 0 a 4 = parte dall’inizio
    • lista[6:] => parte da 6 e arriva infondo
    • lista[::-1] => stessa lista però al contrario
  • Sono strutture dinamiche a cui posso aggiungere elementi in coda usando i metodi:
    • lista.append(4) => aggiungo 4 alla lista all’ultima posizione
    • lista.extend(lista2) = accoda gli elementi della lista2 alla lista1
    • lista.sort() = elementi in ordine crescente
    • list.remove(elemento) = rimuove dalla lista quell’elemento
    • list.insert(posizione, oggetto da mettere)
    • ' '.join(lista) => unisce termini lista con nel mezzo il termine ' '
    • list.pop(posizione) = elimina elemento a quella posizione
    • len(nome lista) LUNGHEZZA = dice quanto è lunga una lista => restituisce un intero
  • >>> numbers = [17, 123] >>> numbers[1] = 5 >>> sono modificabili => print(numbers) = [17, 5]
  • >>> [1, 2, 3] * 3=[1, 2, 3, 1, 2, 3, 1, 2, 3] - Operatore * = ripete un elenco un dato numero di volte

Stringhe

IMPORTANTE: si mette tra virgolette. Sequenza di caratteri => indicizzazione

Anteprima
Vedrai una selezione di 4 pagine su 15
Riassunto del Corso di Informatica Pag. 1 Riassunto del Corso di Informatica Pag. 2
Anteprima di 4 pagg. su 15.
Scarica il documento per vederlo tutto.
Riassunto del Corso di Informatica Pag. 6
Anteprima di 4 pagg. su 15.
Scarica il documento per vederlo tutto.
Riassunto del Corso di Informatica Pag. 11
1 su 15
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher meteosieve di informazioni apprese con la frequenza delle lezioni di Informatica 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 Firenze o del prof Becattini Federico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community