Scarica Elementi di informatica e programmazione e più Appunti in PDF di Elementi di Informatica solo su Docsity!
INFORMATICA
Elementi
PROGRAMMAZIONE E INFORMATICA
17.09. https://www.brescianet.com/unibs/DIMI/ qmvnr3h TIPI DI APP Esistono due diverse tipologie di applicazioni:
- App dekstop
- (^) Applicazioni locali che richiedono l’installazione ex. Word, photoshop
- Web app
- applicazioni che non devono essere installate ma si appoggiano a un browser (com crome, safari…) per funzionare ex. Gmail, google docs COME FUNZIONANO LE WEB APP Una web app funziona grazie a un modello stabilito, un rapporto duale tra CLIENT e SERVER. Il client HTTP invia una richiesta attraverso la rete al server HTTP. Il server riceve la richiesta, legge i dati dal disco fisso (o da un database) ed elabora una risposta, che viene rimandata al client.
- CLIENT: è un computer(più precisamente un browser) che richiede un servizio e poi riceve il sevizio
- SERVER: computer remoto che ospita l’applicazione, i dati e eroga il servizio La comunicazione tra client e server è possibile grazie a delle “regole di comunicazione” conosciute da entrambi gli interlocutori (client / server) chiamate PROTOCOLLI.
- TPC/IP: è il protocollo di base di internet, gestisce come i pacchetti di dati viaggiano in rete
- HTTP/HTTPS: è un protocollo specifico per le pagine web
- HTTP —> protocollo che permette al client di interagire e scambiare file con il server
- (^) HTTPS —> protocollo che permette al client di interagire e scambiare file con il server solo che in modo più sicuro, tramite scrittura crittografata
_- prende i dati richiesti,
- li inserisce dentro un modello di pagina HTML, -_ (^) invia la pagina completa al client. I linguaggi lato server (es. PHP, ASP) possono interrogare un database tramite comandi SQL, elaborare i dati e restituire al client una pagina HTML+CSS+JS personalizzata. I DataBase server sono programmi specializzati nell’ estrarre velocemente i dati ex. Cercando su un sito “studenti DIMI 25-26” il server usa PHP/ASP per creare una querty SQL e restituire i dati in un formato leggibile (HTLM+CSS) Querty SQL SELECT * FROM studenti WHERE dipartimento =“DIMI” and coorte=“25-26” FORMATI Il formato di salvataggio è la modalità usata da un app per salvare i dati Formato nativo: formato di salvataggio di defoutl per la specifica app ex. .docx per Word Formato portabile: formato scritto in un idioma leggibile dalla maggior parte delle app ex. .pdf Formato testuale: formato più portabile in assoluto, formato da una sequenza di caratteri ASCII priva di caratterizzazioni tipografiche ex. .txt IMPORTAZIONE: lettura di un formato non nativo ESPORTAZIONE: salvataggio di dati in un formato non nativo ex. scrivo un documento in Word (.docx) e per mandarlo a un mio amico lo converto in PDF DATABASE Il database è un archivio che contiene tutti i dati organizzati in tabelle
- Tabelle: contengono dati omogenei
- Campo: proprietà di un’istanza contenuta in una tabelle
- Record: entità contenuta in una tabella
- Relazione: collegamenti logici tra le tabelle
- Paragrafo: sequenza di char terminata dall’invio ex. Tabella studenti (matricola, nome, dipartimento)
Tabella esami (codice esame, matricola, voto) Relazione —> collega lo studente ai suoi esami OPEN SURCE È un programma in cui il codice sorgente (sequenza di istruzioni che indica ad un interprete quello che deve fare, scritto) è disponibile a chiunque e chiunque lo può modificare Negli open surce il sorgente è scritto in un linguaggio ad alto livello ovvero un linguaggio simile al parlato ex. Firefox, LibreOffice… FLOW-CHART I Flow-chart costituiscono la rappresentazione grafica di un elenco di procedure operative che tutte le entità coinvolte in un processo devono seguire affinché si possano raggiungere gli obiettivi prefissati. Le procedure operative definiscono le regole che tutti devono rispettare nell'esecuzione di una determinata attività. Vengono creati con programmi di grafica vettoriale come Visio ed OpenDraw. GRAFICA Grafica vettoriale: descrivo le immagini con equazioni matematiche permettendo di scaricarle senza perdere qualità usata per la creazione di flow-chart SUITE APP ESTENSIONE (^) + r Microsoft Office Word .docx (.doc) Winword Excel .xlsx (.xls) Excel Power point .pptx (.ppt) Powerpnt Acces .accdb (.mdb) Msaccess Outlook // Outlook Skype for B. // Lync Visio .vsdx (.vsd) Visio Publisher .pub Mspub Onenote .one Onenote Project .mpp Winproj
- Pages: programma di videoscrittura
- Foto: grafica pittorica e collezione di foto
- (^) Mail: posta elettronica PROGETTO Il progetto è un insieme di attività temporanee, con un inizio e una fine definiti, orientate al raggiungimento di un obiettivo unico e specifico PROCESSO Con processo si definiscono l’insieme di attività ripetitive e continuative, svolte secondo regole predefinite per produrre risultati standardizzati nel tempo. ESTENSIONE: dice al sistema operativo quale app usare per leggere il file Programmi di posta elettronica da deckstop devono essere configurati sul mio account, ovvero identifico i server coinvolti (smtp, pop3, imap) e posso usarlo solo sul mio pc (o su ogni pc su cui è stato configurato l’account) Web app di posta invece posso accedere da qualsiasi postazione TIPOLOGIE DI PROGRAMMA Programma commerciale: programma che ha un costo ex. Microsoft Office, Adobe Photoshop… Shareware: programma gratuito per un periodo iniziale ex. WinRAR, UltraEdit… Freeware: programma totalmente gratuito ex. Chrome, VLC Media Player… Adware: programma gratuito ma con spot pubblicitari ex. Spotify free, la maggior parte delle app per il telefono… SUITE APP ESTENSIONE (^) + r Open Office .org Writer .odt swriter Calc .ods scalc Impress .odp simpress Base .odb sbase Drawn .odg sdraw Math .odf smath
Donationware: programma gratuito ma con donazione ex. Audacity, GIMP… OPEN OFFICE
- (^) Writer: programma di video scrittura, ha estensione .odt
- (^) Calc: fogli di calcolo, ha estensione .ods
- (^) Impress: presentazioni, ha estensione .odp
- (^) Draw: grafica, ha estensione .odg
- Mah: creazione formule matematiche, ha estensione .odf
- Base: gestione di archivi, ha estensione .odb L'open office è un'applicazione multipiattaforma ovvero gira più sistemi operativi. APP MULTIPIATTAFORMA Un'applicazione si dice multipiattaforma se è usabile su sistemi operativi differenti. Un modo per ottenere un software multipiattaforma è quello di scrivere, per ogni sistema operativo da supportare, la corrispondente versione nativa (esempio Microsoft Office per MAC e per WIN). ASSEMBLER Il linguaggio macchina (o assembler) è il vero set di istruzioni binarie comprensibile direttamente dall’hardware che la CPU (processore) utilizza per descrivere ed eseguire algoritmi. Ogni processore ha il proprio set di istruzioni, quindi un programma scritto in assembler è strettamente legato a una specifica architettura PROGRAMMA ESEGUIBILE Un programma eseguibile non è altro che un algoritmo (comprensibile all'utente umano) codificato in linguaggio macchina, che il calcolatore può interpretare ed eseguire. Non è facilmente modificabile, neppure da parte di utenti esperti. Pertanto modificare un programma eseguibile richiede un elevato know how ed un enorme dispendio di tempo e risorse API Le API di un sistema operativo possono essere immaginate come il linguaggio assembler di quel sistema operativo, un app si dice nativa per un sistema operativo quando è implementata con le API di quel sistema operativo.
Il disco cloud è un volume di archiviazione virtuale ospitato su infrastrutture di cloud computing, utilizzato come se fosse un disco fisico, ma con tutti i benefici della flessibilità e ridondanza del cloud. ex. Google drive (per google docs), One Drive (per office online) e iCloud Drive (per iCloud ) Download: indica l'azione di scaricare da un server una risorsa ex. un file Upload: indica l'azione di caricare su un server una determinata risorsa, quindi è l'operazione opposta al Download ARCHEOLOGIA INFORMATICA In origine, gli spreadsheet (fogli di calcolo) erano strumenti cartacei utilizzati soprattutto in ambito finanziario. Il termine spread indica, nel gergo di borsa, la differenza tra il prezzo di acquisto e quello di vendita di un titolo. La trasformazione in forma elettronica rese possibile, in pochi istanti, calcoli che prima richiedevano intere giornate di lavoro. Il principio di fondo dei fogli di calcolo elettronici è un tipico esempio di applicazione che emula, automatizza e semplifica attività già note all’uomo, trasformandole in processi rapidi, flessibili e meno soggetti a errori. VisiCalc (1979) Negli anni 1978-79, Dan Bricklin e Bob Frankston svilupparono “VisiCalc”, il primo foglio elettronico per computer personali, disponibile su Apple. La versione commerciale fu lanciata nell’estate del 1979 e rivoluzionò il modo di lavorare con i dati. Lotus 1-2-3 (1983) Nel 1983 la Lotus rilasciò “Lotus 1-2-3”, che superò rapidamente VisiCalc, diventando il nuovo punto di riferimento per i fogli di calcolo digitali. Tra i motivi del successo ci furono la velocità, grazie alla programmazione in linguaggio assembly x86, la compatibilità con VisiCalc e l’unione di piu ambienti di lavoro in un unico programma (foglio elettronico, grafici, database). Nel 1991 furono distribuite versioni di Lotus 1-2-3 per i principali sistemi con interfaccia grafica: OS/2 (IBM), Windows (Microsoft) e Mac OS (Apple). Tuttavia, l’arrivo di “Microsoft Excel”, meglio integrato con le altre applicazioni della suite Office, rese progressivamente obsoleto Lotus 1-2-3.
- INTERFACCIA TESTUALE: non richiede potenza di calcolo perchè basata su simboli ASCII, più complessa da usare poiché richiede necessita la conoscenza di comandi specifici, molto potente e automatizzatile
- (^) INTERFACCIA GRAFICA: richiede molta potenza di calcolo, molto più semplici e intuitive, adatte soprattutto per utenti alle prime armi. Le shortcuts sono retaggio delle cli (interfaccia testuale) 01.10. RAPPRESENTAZIONE NUMERICA L'informazione è costituita da forma (rappresentazione) e significato (semantica). L’uomo assegna alla rappresentazione un significato, un significato può avere anche diverse rappresentazioni. La definizione del codice non deve comportare ambiguità e deve associare ad ogni stato un unica entità d’informazione N.B. La codifica non è ambigua se a stati differenti si associa lo stesso significato N.B. la codifica risulta ambigua se a un unico stato vengono associati diversi significati Una rappresentazione richiede un insieme finito di simboli per la codifica, il numero di simboli è generalmente minore della quantità di valori da rappresentare. Questo insieme di simboli prende il nome di alfabeto. CODICE BINARIO Il calcolatore utilizza il sistema binario, ciò significa che è dotato di dispositivi a 2 stati per la codifica delle informazioni. Una componente che ammette solo 2 stati si dice bit. Rappresentazione esterna: umanamente comprensibile Rappresentazione interna: adottata dal calcolatore La stessa sequenza cambiando i codici di codifica, cambiando quindi il software che la legge, può cambiare il suo significato ex. 0100 0001 se interpretata da un softwear di codifica numerica significa 65 se invece è un software di codifica testuale invece lo
- Crescita esponenziale delle combinazioni
- Il numero di combinazioni possibili cresce in modo esponenziale con il numero di bit:
- Questa crescita esponenziale spiega come anche un piccolo aumento del numero di bit consenta di rappresentare una quantità molto maggiore di informazioni.
- Byte e multipli
- I bit vengono spesso raggruppati in byte, dove 1 byte = 8 bit
- Le unità di misura della memoria sono basate su potenze di 2 con esponenti multipli di 10: MECCANISMI DI CODIFICA Il bit può assumere due soli valori alternativi: 0 e 1, che rappresentano due stati opposti o due scelte egualmente possibili ex. acceso/spento, vero/falso, sì/no… In un sistema digitale, questi due valori vengono realizzati fisicamente mediante segnali elettrici che assumono due livelli di tensione diversi:
- (^) livello basso → rappresenta lo 0
- (^) livello alto → rappresenta l’
Numero di bit ( k ) Combinazioni possibili ( 2 )
k Unità Simbolo Byte 8 bit Kilobyte (KB) Megabyte (MB) Gigabyte (GB) Terabyte (TB)
20
30
40
10
Questi sistemi, che elaborano informazioni sotto forma di segnali discreti (0 e 1), sono detti sistemi di elaborazione digitali. Quando si deve rappresentare una realtà discreta composta da stati distinti, cioè possibili informazioni o valori diversi, è necessario determinare quanti bit servono per codificarla. Combinando più bit tra loro, il numero totale di configurazioni cresce esponenzialmente secondo la formula. Per poter rappresentare tutti gli stati distinti, il numero di combinazioni generate dai bit deve essere almeno pari a. Pertanto, il numero minimo di bit richiesto è quello che soddisfa la condizione In altre parole, bisogna scegliere il numero di bit sufficiente a generare un numero di combinazioni uguale o superiore al numero di stati da rappresentare. ex. cerco il più piccolo valore di per poter rappresentare 10 stati distinti Usando la formula ottengo che , con 4 bit posso rappresentare 10 stati differenti CODIFICA DEGLI INTERI La codifica di un numero intero consiste nel rappresentarlo con un insieme di simboli (cifre) secondo determinate regole. Nel corso della storia e anche nei calcolatori moderni si usano vari sistemi di numerazione, ognuno con un proprio modo di associare i simboli ai valori. I principali sistemi da conoscere sono:
- Sistema di numerazione additivo Nel sistema additivo, il valore di un numero è dato dalla somma dei valori dei simboli che lo compongono, indipendentemente dalla posizione. Ogni simbolo ha un valore fisso, e il valore complessivo si ottiene aggiungendo (o in certi casi sottraendo) i valori dei simboli.
- Sistema di numerazione unaria Il sistema unario è il più semplice in assoluto, infatti un numero viene rappresentato ripetendo un simbolo tante volte quanto il valore del numero.
- Sistema di numerazione posizionale
N
N
k
N
N
k
≥ N
k
k
≥ 10 k = 4
‣ TEOREMA: della rappresentazione dei numeri naturali Questo teorema dice due cose fondamentali:
- Ogni numero naturale può essere rappresentato in qualunque base come somma pesata di potenze di , il che vuol dire che per ogni numero e base , esiste una sequenza di cifre tale che
- La rappresentazione è unica, a patto che:
- ogni cifra sia compresa tra e
- la cifra più a sinistra ( ) non sia zero (per evitare zeri iniziali superflui) In altre parole il teorema dice che tutti i numeri naturali possono essere costruiti combinando le potenze della base scelta (2, 8, 10, 16, ecc.) moltiplicate per le cifre della posizione, questa combinazione è sempre possibile e sempre unica, se le cifre sono scelte correttamente (cioè tra e ) Codifica posizionale in base B Nel caso di sequenze finite il teorema della rappresentazione dei numeri naturali resta valido (purché valga: ) pertanto posso codificare in modo univoco un numero naturale N (fissata una base B) mediante una sequenza di cifre associate alle potenze , il valore associato a questa rappresentazione è: Il sistema di numerazione posizionale decimale rende possibile l'applicazione degli algoritmi in colonna delle quattro operazioni. Gli algoritmi possono essere applicati ai numeri scritti anche per basi diverse da dieci, sono composti da istruzioni che oltre a tener conto delle cifre coinvolte considerano anche l’informazione relativa alla posizione Un numerale rappresenta un numero solo se si specifica un codice (sistema di numerazione. Infatti uno stesso numerale può avere diverse rappresentazioni a seconda della codifica usata.
B > 1 B
N B ci
N =
n
i = 0
ciB
i
ci 0 B − 1
cn
B − 1
0 ≤ ci < B
ci B
i
N
N = cn − 1 ⋅ B
n − 1
+... + ci ⋅ B
i
+... + c 0 ⋅ B
0
n − 1
i = 0
ci ⋅ B
i
Con digit ottengo disposizioni con ripetizione, pertanto posso usarle per rappresentare un intero compreso tra e. Quindi il massimo valore rappresentabile con digit in base è: Per rappresentare in base intero naturale servono cifre tali che da cui segue che ex. per rappresentare in base serve un numero di cifre quindi Conversione dalla base 10 a una base B generica Il metodo standard (e più usato) è quello delle divisioni successive
- Si parte prendendo e dividendolo per la base
- Ottengo così un quoziente e un resto
- Il resto è la cifra meno significativa (cioè l’ultima cifra nella rappresentazione in base B)
- (^) Prendo il quoziente e ripeti il processo (lo divido di nuovo per ) finché il quoziente diventa 0
- (^) La rappresentazione in base si ottiene leggendo i resti da fondo (l’ultimo ottenuto) verso cima (al primo) Questo metodo è quello usato per la conversione dalla base 10 alla base 2, dividendo quindi per 2 e leggendo dal basso verso l’alto i resti Conversione da una base B generica alla base 10 Il corrispondente numero in base 10 è pari alla sommatoria delle potenze di B dove i coefficienti sono le cifre della rappresentazione di partenza OPERAZIONI CON NUMERI BINARI Somma
k B
k
0 B
k
N k B
N = B
k
B k
N ≤ ( B
k
− 1 ) k ≥ [ logB ( N + 1 )]
N = 350 B = 2
k ≥ [ log 2 ( 350 + 1 )] ≈ 8,455... k ≥ 9
N 10 B
q r
r
q B
B
N =
n − 1
i = 0
ci ⋅ B
i
- Utilizzare gli n-1 bit restanti per la rappresentazione binaria del suo valore assoluto 00000000 =+ 10000000 =- La rappresentazione in modulo e segno con n bit dimezza l'intervallo dei valor assoluti rappresentabili riducendo il range a [0, ] oss. l’intervallo di rappresentazione è simmetrico oss. le operazioni algebriche risultano più complesse Conversione dalla rappresentazione modulo e segno alla base 10
- Il bit più significativo viene codificato come segno
- Gli n-1 bit restanti sono codificati come valore assoluto del numero relativo pertanto si utilizza la stessa procedura vista per i numeri naturali
- Codifica in eccesso k L'importanza di questa rappresentazione è data dal fatto che è utilizzata nella rappresentazione dei numeri in virgola mobile. Il procedimento utilizzato in questa codifica si basa sul trasformare tutti gli interi negativi in valori ≥ 0.
- Tutti i numeri che devono essere codificati vengono traslati verso l’alto di una costante K che corrisponde al modulo del numero negativo più piccolo appartenente all'intervallo di rappresentazione iniziale [ ]
- l'intero negativo più piccolo^ verrà rappresentato con una sequenza di bit composta da tutti zero. oss. la rappresentazione in eccesso-K della somma di due numeri x e y si ottiene sommando le due rappresentazioni in eccesso-K e poi sottraendo la costante k se tolgo K ottengo che è la rappresentazione in eccesso-K della somma oss. la codifica conserva il verso delle disuguaglianze quindi oss. Le moltiplicazioni e le divisioni risultano più complesse ex. -106 nella notazione in eccesso in eccesso-K a 8 bit utilizzando come K il valore standard IEEE 754 ( ).
n − 1
− K , A
− K
( x + y )( y + k ) = x + y + 2 k → x + y + k
( x + y )
x 1 > x 2 ⟺ X 1 > X 2
n − 1
Con 8 bit , l’intervallo di rappresentazione diventa , il -106 appartiene a questo range, convertendolo in binario
- Rappresentazione in complemento a In un sistema che usa il complemento a 1: - I numeri positivi si rappresentano in binario come al solito, con il bit di segno = 0 (positivi) - I numeri negativi si rappresentano prendendo la versione binaria del corrispondente numero positivo e invertono tutti i bit, questo invertire tutti i bit è proprio l’operazione “complemento a 1” Il bit più significativo risulta 1 nel caso di numeri negativi, 0 nel caso di positivi. ex. 01111111= = 127, per rappresentare il suo negativo ottengo 01111111= = - oss. l’intervallo di rappresentazione è simmetrico oss. sono presenti due rappresentazioni dello 0, quello positivo 00000000 e quello negativo 10000000
- Rappresentazione in complemento a In un sistema che usa il complemento a 2: - I numeri positivi si rappresentano in binario come al solito, con il bit di segno = 0 (positivi) - I numeri negativi si rappresentano prendendo la versione binaria del corrispondente numero positivo, invertono tutti i bit (calcolo in complemento a 1) e aggiungo 1 al risultato, questa operazione è il “complemento a 2” ex. 0011=3 per rappresentare il suo negativo in complemento a 2 1100+1=1101= - oss. l’intervallo di rappresentazione è asimmetrico oss. esiste una sola rappresentazione dello 0 Conversione dalla base 10 alla rappresentazione del complemento a 2
K = 2
7
[− 2
7
7
] = [−127,128]
− 106 + K = − 106 + 127 = 21
( 21 ) 10 = 2 × 10
1
+ 1 × 10
0
n − 1
n − 1