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
ALGEBRA BOOLEANA
L'algebra booleana è una rappresentazione astratta di due valori, 0 e 1, vero o falso. Esistono le variabili booleane che sono solo questi due valori. Viene usata l'algebra per le proposizioni, una frase che ha solo due valori, vero o falso. L'1 è il vero e lo 0 è il falso. Combinando più numeri ottengo proposizioni composte. Sono importanti:
- AND
- OR
- NOT
Ho 4 possibili combinazioni di tavole della verità dell'AND (mi ricordo le cose di medicina), dell'OR e del NOT.
LEGGI DI DE MORGAN
Afferma che la negazione di A e B non è altro che la negazione di non A o non B. Nel negarsi, and diventa or, e or diventa and (vedo slides). XOR invece è la disgiunzione esclusiva: se uno dei due è vero, allora è vero, se invece entrambi sono veri sarà falso. IF-THEN, cioè l'implicazione è sempre vera tranne quando A è vera e B è falsa significa che A vera → non può
implicare una condizione falsa. Una funzione booleana si crea partendo dalle tavole della verità, partendo da OR, AND e NOT. Si vanno a vedere i valori in cui la funzione è vera. SAREBBE NELLA SECONDA FILA IN BLU HO AND PRIMA E OR DOPO. E SOTTO HO A AND VERO (NON FALSO) 12 INFORMATICA (PROGRAMMAZIONE) RAPPRESENTAZIONE INTERNA DEI DATI Tutto ciò che è calcolato dagli elaboratori è sotto forma di bit. Nel calcolatore distinguiamo diverse rappresentazioni di dati. Per esempio con un semaforo bastano 4 bit. Combinare più bit si passa da 2 stati, a 4, a 8 e così via... si sono identificati diversi modi di rappresentare i nostri dati:
- shortint: 8 bit
- integer: 16 bit. Rappresentiamo fino a 65000 stati possibili
- longint: 32 bit
- byte: 8 bit
- word: 16 bit
non c'è un limite per la lunghezza dei numeri interi a parte la grandezza del calcolatore che si sta usando.
13 INFORMATICA (PROGRAMMAZIONE) LEZIONE 4 01-04-2020 Il 7
È il massimo numero rappresentabile e il -8 è il primo, ho quindi 16 numeri possibili. Per somma di numeri vedi slides. Per cambiare di segno da - a + segno il positivo, faccio il binario, lo nego e poi faccio più 1: (-238) = (238) = (011101110) = not(011101110) = (100010001) +1= (100010010)10 2 2 2 2 (-112) = (1110000) = not (0111000) = 10001111 + 1 = -112 = (10010000)10 2 2 2 NUMERI REALI IN VIRGOLA FISSA Per i numeri reali invece, vediamo 1234567,8. Bisogna trovare un equilibrio tra le cifre intere e decimali rappresentate. A= xxxx.dddd la virgola fissa esclude molte possibilità di rappresentazione. NUMERI REALI IN VIRGOLA MOBILE Un numero reale a in base b può essere scritto come (immagine): ed ho E = base 10 e B = base 2 la parte intera è >=1 e <9 con 1 cifra e se la base è 2 deve essere >=1 e <1 cioè 1. Nel sistema binario si vedono mantissa ed esponente nella formula che c'è nelle slides. NelloSTANDARD IEEE 754 (su 32 bit) ho un minimo = 1x2-128 e un massimo = 1x2127 rappresentabili perché tra un valore e l'altro ho infiniti valori sulla retta (MACCHINA DISCRETA). Nella formula delle slides ho:
- S = bit di segno
- M = 1.m mantissa in binario, 1 è il bit implicito (più significativo)
- K = 2n-1
- n = numero di bit per esponente (8)
Gli esempi di rappresentazione dei reali in virgola mobile più usati sono il SINGLE 1.5 E-45..3.4 E+38 (32 bit) e il DOUBLE 5.0 E-324..1.7 E+308 (64 bit).
CODICE ASCII è la rappresentazione interna dei caratteri. Convenzione definita con dei protocolli - decodifica:
A a : - + / * B b , ; 0 1 2 3 4 5 6 7 8 9 rappresentati in modo diverso (0 = nullo) - ASCII da 0 a 127 con 128 stati + 8 bit di controllo. Il bit di controllo bisogna verificare se la lettera digitata dalla tastiera arriva correttamente nei registri della CPU. Oggi giorno ha perso di significato. Dopo la caduta del muro di
Berlino c'è stata la necessità di implementare anche i caratteri russi, cinesi, giapponesi, arabi e greci16 bit: UNICODE. I primi 7 bit rappresentano la vecchia decodifica ASCII. 14 INFORMATICA (PROGRAMMAZIONE)LEZIONE 5-6 08/15-04-2020Python è un linguaggio interpretato di alto livello e non è specifico ad una certa problematica. È stato creato da Guido Van Rossum nel 1991. Ha diverse interfacce: shell >>> mi indica una linea di comando per farla eseguire sviluppo integrato editor+shell modalità grafica, Pycharm e Qt5 tra cui PythonI linguaggi di programmazione hanno diverse possibilità di struttura: modulare, il più semplice con funzioni e librerie (Python è anche orientato agli oggetti), strutturata, orientata agli oggetti, nata negli anni 80 ma diffusa con il CC+ negli anni 90, funzionale.C'è una tipizzazione dinamica, i linguaggi sono dinamici e anche i dati, si possono espandere orestringerein base alle decisioni. I dati sono di alto livello e le librerie fanno da padrone e come nel C il linguaggio è alleggerito e ci si appoggia alle librerie che possono essere sostituite o aggiornate (come Python che si aggiorna parecchio e spesso, e in ogni aggiornamento cambia molto). Ecco i tasti:- >>> help (significa modalità scrivo il comando e eseguito immediatamente ma esiste anche uno script, scrivo salvo e poi eseguo, usando la modalità dell'editor) in modalità interattiva mi permette di entrare nei programmi di guida, non collegato a internet e posso usare dei sottocomandi per delle spiegazioni brevi:
- Help> keywords
- Help> modules (presenta le librerie installate)
- Help> while
- Help> ('for') e mi spiega che cos'è il for...
- Help> quit
- Se non metto il maggiore è uno script, e non lo esegue subito, e quindi salvo e per eseguire dico run -> run module
print (“salve”)
è ciò che deve essere stampato sullo schermo. Salve è una costante di tipo testo e ciò si scrive con una sola virgoletta o con una doppia e eseguendo ottengo la scritta salve mondo. Ecco come ordino alla macchina di scrivere un testo. Ci possono essere anche delle costanti di tipo numerico, ma il numero non va tra apici. Questo perché i numeri si capisce già che è una costante e le parole invece le percepisce come comandi se non ci sono gli apici. Quindi per i numeri avrò print (3.14)
. Posso anche scrivere delle espressioni e gli spazi non sono necessari print (25 + 17)
. Le cose tra parentesi sono input e tra i risultati nella pagina mescono gli output. Se avessi print (2+5, a)
a cosa è? Da questa riga non lo so e a è una variabile invece se è tra virgolette è un testo. Se metto end=””
sto dicendo come deve finire.e metterà quello che c’è tra le virgolette, quindi nulla, e salvemondo non va a capo e la stampa successiva me la mantiene sulla stessa riga tutto attaccato. Potrei anche mettere uno spazio tra le due virgolette dopo l’end, quindi end=” “. Posso anche scrivere from_future_importprint_function era per il Python 2 e leggeva anche così, anche senza parentesi ma in Python 3 non è possibile. 15 INFORMATICA (PROGRAMMAZIONE)I commenti sono testo non interpretato, non eseguito dall’interprete e sono fatti con # oppure metto”””scrivo tutto e alla fine ancora”””. Si possono mettere anche degli operatori aritmetici, e per tutti i calcoli metto sempre e solo parentesi tonde per l’ordine di priorità del calcolo. In Python, le variabili non hanno bisogno di dichiarazione. Vengono create attraverso l’assegnazione di un valore (variabile = assegnazione, tipoa=5=. È un’assegnazione,
non un'uguaglianza, significa che devo mettere il valore 5 nella variabile a. scriverei a=13 # copiamo il valore 13 in una nuova variabile di nome a. Se poi metto print, salvo e eseguo, la a non si vede perché non gli ho detto di mostrarmi il contenuto se lo voglio metto print(a) e poi salvo ed eseguo e ora si vede. Se cambiassi il contenuto, nell'esecuzione successiva il suo valore sarà cambiato. Il linguaggio è case-sensitive quindi dato diverso da Dato e diverso da DATO. L'assegnazione prende il risultato di destra e lo copia nella variabile di sinistra. Quindi una variabile è una scatola contenente un'informazione (dato/valore). Se metto gli apici ad a non è più una variabile, ma scrive il testo/lettera a. Posso anche dare lo stesso valore a più variabili o più valori a più variabili così: x=y=z=3.14 x,y = 3.14, 2.71. Per esempio se ho x=x+1 è vero perché è solo
un’assegnazione non una espressione matematica, e questovalore si chiama incremento, incremento di 1 il contenuto di x. Ovviamente alla fine dell’assegnazione la xconterà il valore nuovo.
Spesso si va ad indicare il tipo di dato che la variabile deve rappresentare, di tipo intero, di tipo reale o unastringa di caratteri. Questa cosa in Python è automatica, in base al risultato dell’espressione. Per i numeriimmaginari si usa la j come parte immaginaria e per estrarre le parti reali e immaginarie faccio: x.real,x.imag, a.real, a.imag, s.real e s.imag è un testo, non esiste l’attributo per gli oggetti di tipo stringa.
CREARE UN PROGRAMMA IN PYTHON
Devo trovare l’algoritmo per trasformare gli input in output. Per fare questo devo fare l’analisi:
- prima individuare gli input e gli output, anche senza sapere l’ordine
- capire come trasformare gli input in output
una volta eseguita l’analisi passo all’implementazione
Che prevede la trasformazione dell'algoritmo in linguaggio di alto livello, Python quindi. Per esempio, creare un programma in Python che calcola la somma di due numeri:
- #INPUT x=12 y=3
- #ELABORAZIONE uso assegnazioni per creare una somma che conterrà l'elaborato somma = x + y
- #OUTPUT mi da il risultato della somma print (somma) e devo crearla questa somma nell'elaborazione. Se devo modificare il calcolo parto dal codice iniziale in input. Chi riesce a modificarlo? Solo chi sa dove andare a toccare e poi eseguire. Ma non è sempre così semplice.
Un modo professionale è quello di richiederli all'utente, non inserirli a mano. La funzione x=y= input("inserire il valore di x" e di y) mi dà come risultato una stringa di caratteri e poi mi va a scegliere il dato da inserire. Così se eseguo mi chiede i dati che voglio inserire durante l'esecuzione. Si legge sempre una stringa di caratteri.
16 INFORMATICA (PROGRAMMAZIONE)
Nel senso che si può utilizzare il tag html per evidenziare una parola o una frase.