Tutte le categorie
Competenze per programmare: la rappresentazione digitale dei numeri interi e decimali
Gino Visciano |
Skill Factory - 24/03/2024 21:11:45 | in Tutorials
I numeri che usiamo si chiamano "Numeri reali", in base alle loro caratteristiche li possiamo organizzare nei seguenti insiemi:
I numeri, sia interi (relativi), sia decimali (razionali), servono per esprimere rispettivamente quantità intere o frazionarie.
Sono irrazionali i numeri che non si possono indicare attraverso il rapporto tra numeri interi, come ad esempio il pi greco, che indica il rapporto tra la misura della circonferenza di un cerchio e il suo diametro oppure il numero di Nepero (e).
In programmazione per indicare la parte decimale di un numero si usa il punto "." al posto della virgola ",", quindi negli esempi userò questa convenzione.
Esempio 1
Per indicare la quantità di auto nell'immagine seguente, basta usare il numero intero 9:
mentre per indicare la quantità di auto nell'immagine seguente, bisogna usare il numero decimale 8.5, perché l'ultima auto è divisa a metà:
Esempio 2
Il risultato dell'espressione 10/2 è 5 che è un numero intero, perché il numero 10 può essere diviso esattamente in due parti intere, ciascuna composta da 5 unità.
Il risultato dell'espressione 10/3 è 3.33333 che è un numero decimale, perché il numero 10 può essere diviso in 3 parti intere, ciascuna composta da 3 unità, ma ne resta una che deve essere frazionata in 3 parti decimali da 0.33333.
Attenti, quando la quantità di cifre decimali di un numero è indefinita, ovvero quando l'unità non è divisibile in parti esattamente uguali, come nel caso del riusultato della divisione 10/3 = 3.33333..., il numero può essere scritto nel modo seguente:
e si legge 3.3 periodico, perché il numero di 3 della parte decimale potrebbe essere infinito.
In programmazione, quando il numero di decimali è periodico, bisogna indicare la precisione del numero ovvero il numero di cifre da indicare dopo la virgola, per questo motivo nei linguaggi di programmazione si fa la distinzione tra numeri decimali a singola precisione (float) e doppia precisione (double). Di solito i numeri a doppia precisione si usano in ambiti scientifici, quelli a singola precisione per tutti gli altri ambiti.
Esempio 3
I numeri si possono anche rappresentare sugli assi cartesiani, come mostra l'immagine seguente:
Se l'asse cartesiano è orizzontale si chiama asse delle ascisse e si indica con la lettera X, mentre se è verticale si chiama asse delle ordinate e si indica con la lettera Y.
Un piano su cui si disegna sia l'asse delle "Ascisse", sia l'asse delle "Ordinate" viene detto "Piano Cartesiano".
Il numero 0, si trova nel punto in cui gli assi X e Y s'incontrano e viene chiamato origine. Lo zero divide i numeri positivi (segno +) da quelli negativi (segno -) di entrambi gli assi; sia i numeri positivi, sia i numeri negativi sono infiniti.
Attenti, quando scrivete un numero positivo, non siete obbligati ad indicare il segno +, mentre quando scrivete un numero negativo il segno - è obbligatorio.
Sugli assi cartesiani, la parte decimale di un numero è sempre compresa nel segmento che unisce due numeri interi consecutivi.
L'immagine seguente mostra la posizione del numero 2.5 sull'asse X:
Ricordate che il punto centrale di un segmento che lo divide in due parti uguali è detto punto medio.
L'immagine seguente mostra la posizione del il numero -3.2 sull'asse X:
Per indicare la parte decimale 0.2 dovete posizionarvi esattamente nel punto che corrisponde alla quinta parte del segmento, perché 1/5=0.2, come mostra l'immagine.
Come ci ha insegnato il filosofo greco Democrito, un segmento può essere diviso infinite volte, per questo motivo la quantità di cifre decimali di un numero può anche essere molto grande; maggiore è il numero di decimali, tanto maggiore è il numero di volte che vengono divise le parti del segmento. La precisione, ovvero la quantità di cifre decimali di un numero, serve per capire fino a quando dobbiamo continuare dividere le parti del segmento, per evitare di continuare all'infinito.
In che modo i computer memorizzano i numeri interi?
I computer sono macchine elettroniche di tipo digitale, a differenza degli uomini, per scrivere i numeri possono usare solo due cifre: 0 e 1 chiamate bit (binary digit), per questo motivo usano il sistema di numerazione binario.
I computer memorizzano i numeri nella RAM (Random Access Memory); la memoria ad accesso casuale composta da tanti interruttori, chiamati flip-flop, che permettono di scrivere i numeri in forma binaria - se l'interruttore spento (-) la cifra è zero, se è acceso (+) la cifra è uno.
Clicca qui per conoscere la differenza tra mondo reale e mondo digitale.
Nei linguaggi di programmazione le variabili oppure gli oggetti che possono contenere tipi interi si dichiarano con: int oppure Integer, ad esempio:
int x=10;
Integer y=20;
In SQL le colonne di una tabella che possono contenere numeri interi di dichiarano con la parola chiave numeric, ad esempio:
create table magazzino(id numeric(7), quantita numeric(7),...);
Quando un computer memorizza nella RAM un numero intero, usa il primo bit a sinistra (quello più significativo) per indicare il segno; se il primo bit più significativo è 0 il numero intero è positivo, altrimenti è negativo. Gli altri bit servono per indicare il modulo del numero intero.
Per i numeri positivi, il modulo è rappresentato semplicemente dal valore binario del numero da memorizzare.
Per i numeri negativi, il modulo è rappresentato in complemento a 2.
2.147.483.647 = [0](segno)[1111111 11111111 11111111 11111111](modulo = valore binario del numero 2147483647)
–2.147.483.648 = [1](segno)[00000000 00000000 00000000 00000000](modulo = complemento a 2 del numero 2147483648)
Complemento a 2
Per calcolare il complemento a 2 di un numero binario è semplice, basta invertire i valori dei bit, gli zeri diventano uno e gli uno diventano zero e aggiungere 1 al numero che si ottiene.
Ad esempio, il complemento a 2 binario del numero 10 (decimale) si calcola nel modo seguente:
1) converto il numero 10 decimale in binario:
10 (decimale) = 1010 (binario)
2) Calcolo il complemento a 1 del numero 1010 invertendo gli zeri con uno e gli uno con zero:
1010 (binario) = 0101 (complemento a 1)
3) aggiungo 1 al numero 0101:
0101+
0001=
---------
0110 (Complemento a 2 del numero binario 1010)
Allo stesso modo possiamo calcolare il complemento a 2 del numero decimale 2.147.483.648:
1) converto il numero 2.147.483.648 decimale in binario:
2.147.483.648 (decimale) = 10000000 00000000 00000000 00000000 (binario)
2) Calcolo il complemento a 1 del numero 10000000 00000000 00000000 00000000 invertendo gli zeri con uno e gli uno con zero:
10000000 00000000 00000000 00000000 (binario) = 01111111 11111111 11111111 11111111 (complemento a 1)
3) aggiungo 1 al numero 01111111 11111111 11111111 11111111:
01111111111111111111111111111111+
00000000000000000000000000000001=
-----------------------------------------------------------
10000000000000000000000000000000 (Complemento a 2 del numero binario 01111111111111111111111111111111)
...
stipendio decimal(9,2),
...)
La rappresentazione nei computer a virgola fissa è molto semplice: il byte più significativo rappresenta il segno, un certo numero di byte viene utilizzato per rappresentare la parte intera, segue quindi un altro numero di byte per rappresentare la parte decimale, come mostra l'immagine seguente:
Ad esempio, convertiamo in binario il numero decimale 17,55, immaginando di avere 16 bit a disposizione:
1) Il bit più significativo è uguale a 0, perché il numero è positivo.
2) La parte intera, immaginiamola di 7 bit, è uguale a:
2^6=64 -> 0
2^5=32 -> 0
2^4=16 -> 1
2^3=8 -> 0
2^2=4 -> 0
2^1=2 -> 0
2^0=1 -> 1
17 (decimale) = 0010001 (binario)
Se la parte intera fosse stata negativa avremmo dovuto calcolare il complemento a 2.
3) La parte decimale, immaginandola di 8 bit, è uguale a:
2^-1=0.5 -> 1
2^-2=0.25 -> 0
2^-3=0.125 -> 0
2^-4=0.0625 -> 0
2^-5=0.03125 -> 1
2^-6=0,015625 -> 1
2^-7=0,0078125 -> 0
2^-8=0,00390625 -> 0
0.55 (decimale) = 10001100 (binario)
Quindi
17.55 (decimale) =0(segno) 0010001.10001100
bit 31 (1) segno
bit 23-30 (8) esponente
bit 0-22 (23) mantissa
mentre per la precisione doppia l'organizzazione è la seguente:
bit 63 (1) segno
bit 52-62 (11) esponente
bit 0-51 (52) mantissa
INFORMATICA APPLICATA
Laboratorio
Creare un programma che trasforma i numeri interi nella rappresentazione binaria a 32 bit usata dai computer per memorizzare le informazioni numeriche.
Soluzione JavaScript
// Funzioni
function convertiBinario(numeroIntero){
let numeroBinario=[]
let resto
while (numeroIntero>1){
resto=numeroIntero%2
numeroBinario.push(resto)
numeroIntero=Math.floor(numeroIntero/2)
}
numeroBinario.push(numeroIntero)
for(let i=31-numeroBinario.length;i>0;i--){
numeroBinario.push(0)
}
numeroBinario.reverse()
return numeroBinario
}
function complemento2(numeroBinario){
let inverti=[1,0]
riporto=1
for (let i=0;i<numeroBinario.length;i++){
numeroBinario[i]=inverti[numeroBinario[i]]
}
for(let i=numeroBinario.length-1;i>0;i--){
if (numeroBinario[i]==1 && riporto==1){
numeroBinario[i]=0
riporto=1
}else if (numeroBinario[i]==1 && riporto==0){
numeroBinario[i]=1
riporto=0
}else if (numeroBinario[i]==0 && riporto==1){
numeroBinario[i]=1
riporto=0
}else{
numeroBinario[i]=0
riporto=0
}
}
}
// Programma
let input=require("readline-sync");
let numeroIntero=0
let numeroBinario=[]
let numeroBinarioStr=""
let segno=0
numeroIntero=parseInt(input.question("Numero intero: "))
while (numeroIntero<-2147483648 || numeroIntero> 2147483647){
print("Errore: inserire un numero compreso tra -2147483648 e 2147483647")
numeroIntero=parseInt(input.question("Numero intero: "))
}
if (numeroIntero<0){
segno=1
numeroBinario=convertiBinario(-(numeroIntero))
complemento2(numeroBinario)
}
else if (numeroIntero>0){
segno=0
numeroBinario=convertiBinario(numeroIntero)
}
numeroBinarioStr="["+segno+"]["
for (let i=0;i<numeroBinario.length;i++){
if (i<31){
numeroBinarioStr+=numeroBinario[i]
}
}
numeroBinarioStr+="]"
console.log(numeroBinarioStr)
Soluzione Python
# Funzioni
# Converte numero intero in binario
def convertiBinario(numeroIntero):
numeroBinario=[]
while numeroIntero>1:
resto=numeroIntero%2
numeroBinario.append(resto)
numeroIntero=int(numeroIntero/2)
numeroBinario.append(numeroIntero)
for i in range(31-len(numeroBinario)):
numeroBinario.append(0)
numeroBinario.reverse()
return numeroBinario
# Calcola il complemento a due di un numero binario
def complemento2(numeroBinario):
inverti=[1,0]
riporto=1
for i in range(len(numeroBinario)):
numeroBinario[i]=inverti[numeroBinario[i]]
for i in range(len(numeroBinario)-1,0,-1):
if numeroBinario[i]==1 and riporto==1:
numeroBinario[i]=0
riporto=1
elif numeroBinario[i]==1 and riporto==0:
numeroBinario[i]=1
riporto=0
elif numeroBinario[i]==0 and riporto==1:
numeroBinario[i]=1
riporto=0
else:
numeroBinario[i]=0
riporto=0
# Programma
numeroIntero=0
numeroBinario=[]
segno=0
numeroIntero=int(input("Numero intero: "))
while numeroIntero<-2147483648 or numeroIntero> 2147483647:
print("Errore: inserire un numero compreso tra -2147483648 e 2147483647")
numeroIntero=int(input("Numero intero: "))
if numeroIntero<0:
segno=1
numeroBinario=convertiBinario(-(numeroIntero))
complemento2(numeroBinario)
elif numeroIntero>0:
segno=0
numeroBinario=convertiBinario(numeroIntero)
print("["+str(segno)+"][",end="")
for i,x in enumerate(numeroBinario):
if i<31: print(x,end="")
print("]")
Leggi anche le altre lezioni:
COMPETENZE PER PROGRAMMARE: MONDO REALE E MONDO DIGITALE
COMPETENZE PER PROGRAMMARE: I SISTEMI DI NUMERAZIONE
Segui sul canale YouTube "Skill Factory Channel" la PlayLIst: COMPETENZE PER PROGRAMMARE
Per consultare il catalogo dei corsi online della nostra Academy ...
... collegati al nostro sito: www.skillfactory.it
Sei uno studente oppure un lavoratore? Scopri qual è il tuo livello di EQF.
Gino Visciano |
Skill Factory - 06/03/2024 23:15:13 | in Formazione e lavoro
La formazione può essere formale, non formale e informale.
L'apprendimento formale segue regole e piani predefiniti, come avviene a scuola o attraverso i percorsi di formazione professionale, questo tipo di formazione è riconosciuto e può essere verificato e certificato.
L'apprendimento non formale è quello che avviene attraverso le esperienze formative personali o aziendali, fatte per approfondire le conoscenze e le abilità in uno specifico ambito di competenze e che servono per favorire la propria crescita professionale. Questo tipo di formazione è molto importante, ma può essere certificata da attestati oppure qualifiche non riconosciti dal sistema di formazione formale.
L'apprendimento informale avviene attraverso le esperienze risultanti dalle attività della vita quotidiana legate al lavoro, alla famiglia, al tempo libero. Questo tipo di formazione, pur essendo fondamentale per la vita di ogni cittadino, non può essere certificato, ma deve essere dimostrato attraverso la capacità di sapere e saper fare.
In Europa, prima del 2008, ogni nazione utilizzava un proprio sistema di formazione e qualifica. Con l'obiettivo di favorire la mobilità dei cittadini, le pari opportunità e un adeguato livello di formazione permanente, nel 2008 è stato creato l'EQF.
L'EQF (European Qualifications Framework) è il quadro europeo delle qualificazioni, nasce allo scopo di comparare il livello d'istruzione e il livello di qualifica professionale degli studenti e dei lavoratori di tutta l'Europa.
Il Centro europeo per lo sviluppo della formazione professionale (Cedefop) e la Fondazione europea per la formazione (ETF), in quanto agenzie europee, svolgono un ruolo importante nel sostenere l'attuazione dell'EQF.
In Italia l'EQF è conosciuto come quadro nazionale delle qualificazioni (QNQ), rappresenta il dispositivo nazionale che favorisce le attività per rendere comparabili i livelli di studio e le qualifiche professionali degli studenti e dei lavoratori italiani, con quelli delle altre nazioni europee.
In linea con il quadro europeo delle qualifiche (EQF) , il QNQ si sviluppa su tre dimensioni:
1) conoscenze
2) abilita'
3) autonomia e responsabilita'.
Attraverso queste tre dimensioni si può descrivere il tipo di competenza che bisogna avere per raggiungere uno degli 8 livelli di qualificazione EQF, dove il livello 1 è il più basso e l'8 è il più alto.
Il QNQ è stato istituito nel 2013 dal MINISTERO DEL LAVORO E DELLE POLITICHE SOCIALI di concerto con il MINISTERO DELL'ISTRUZIONE, DELL'UNIVERSITA' E DELLA RICERCA.
Il Quadro nazionale delle qualificazioni è lo strumento che descrive e classifica le qualifiche rilasciate nell'ambito del Sistema nazionale di certificazione delle competenze.
Per leggere gli articoli del decreto pubblicati sulla "Gazzetta Ufficiale", clicca qui.
Per avere una mappa dettagliata del lavoro e delle qualificazioni, del nostro Sistema nazionale di certificazione delle competenze, puoi consultare l'ATLANTE DEL LAVORO E DELLE QUALIFICAZIONI.
L'Atlante nasce dal lavoro di ricerca condotto dall'INAPP (Istituto Nazionale Per l'Analisi delle Politiche Pubbliche), con la partecipazione di diversi soggetti istituzionali, delle parti datoriali e sindacali, delle rappresentanze bilaterali, delle associazioni professionali, degli esperti settoriali e degli stakeholder del sistema lavoro-learning.
Per accedere all'ATLANTE DEL LAVORO E DELLE QUALIFICAZIONI, clicca qui.
La tabella seguente mostra la corrispondenze tra i livelli EQF e i titoli di studio che si possono coseguire in Italia:
Livello EQF | Tipologia di qualificazione
1 Diploma di licenza conclusiva del I ciclo di istruzione
2 Certificazione delle competenze di base acquisite in esito all'assolvimento dell'obbligo di istruzione
3 Attestato di qualifica di operatore professionale
4 Diploma professionale di tecnico, Diploma liceale, Diploma di istruzione tecnica, Diploma di istruzione professionale, Certificato di specializzazione tecnica superiore
5 Diploma di tecnico superiore
6 Laurea, Diploma Accademico di I livello
7 Laurea Magistrale, Diploma Accademico di II livello, Master universitario di I livello, Diploma Accademico di specializzazione (I), Diploma di perfezionamento o master (I)
8 Dottorato di ricerca, Diploma accademico di formazione alla ricerca, Diploma di specializzazione, Master universitario di II livello, Diploma Accademico di specializzazione (II), Diploma di perfezionamento o master (II)
Utilizzando la tabella seguente, puoi individuare il livello EQF che corrisponde al tuo profilo professionale in base al livello di conoscenza, abilità, autonomia e responsabilità raggiunto:
Per informazioni e contatti: www.skillfactory.it
Il 2024 è un anno bisestile. In programmazione come facciamo a capire se un anno è secolare e bisestile?
Gino Visciano |
Skill Factory - 02/03/2024 12:20:59 | in Home
Il 2024 è un anno bisestile, perché febbraio è di 29 giorni. Questo significa che il 2024 durerà 366 giorni e non 365 giorni come accade per gli anni non bisestili.
Nel calendario Gregoriano è bisestile un anno ogni 4, questa correzione è necessaria perché astronomicamente un anno solare dura circa 365,25 giorni.
Se non tenessimo conto di questa variazione, ogni 4 anni si accumulerebbe un ritardo di un giorno. I continui ritardi accumulati nel tempo, modificherebbero le date delle stagioni che corrispondono agli equinozi di primavera e autunno e i solstizi d'estate e inverno, spostandole in avanti nel tempo.
Gli anni secolari, ovvero quelli divisibili per 100, sono bisestili se oltre ad essere divisibili per 100 sono divisibili anche per 400. Quindi un anno è sicuramente bisestile se è divisibile per 400.
Ad esempio il 1600 è bisestile perché è divisibile per 400, mentre il 1700 non è bisestile perché non è divisibile per 400.
Gli anni non secolari sono bisestili solo se sono divisibili per 4.
Quindi, un programmatore, per verificare se un anno è bisestile, deve prima controllare se è secolare, in caso affermativo deve anche vedere se è divisibile per 400. Se l'anno non è secolare, per essere bisestile deve essere divisibile per 4.
Il programma Python seguente, ci permette di verificare se un anno è secolare e bisestile:
# Verifica se l'anno è bisestile
# Funzione
def tipo_anno():
try:
messaggio="L'anno "+str(v_anno.get())+" "
if v_anno.get()%100==0:
messaggio=messaggio+"è secolare e "
if v_anno.get()%400==0:
messaggio=messaggio+"bisestile."
else:
messaggio=messaggio+"non è bisestile."
else:
messaggio=messaggio+"non è secolare e "
if v_anno.get()%4==0:
messaggio=messaggio+"bisestile."
else:
messaggio=messaggio+"non è bisestile."
tk.messagebox.showinfo(title='Informazioni', message=messaggio)
except:
messaggio="Inserisci l'anno da verificare"
tk.messagebox.showinfo(title='Errore', message=messaggio)
def reset():
v_anno.set("")
# Programma
import tkinter as tk
from tkinter.messagebox import showinfo
root=tk.Tk()
root.geometry('350x100+150+150')
root.resizable(False, False)
root.title('Verifica anno secolare e bisestile')
v_anno=tk.IntVar(root,"")
lbl_anno=tk.Label(root,text="Inserisci l'anno per verificare se è secolare e bisestile").pack(pady=5)
txt_anno=tk.Entry(root, justify="right",textvariable=v_anno).pack(pady=5)
frm_button=tk.Frame(root)
btn_verifica=tk.Button(frm_button,text="VERIFICA",command=tipo_anno).pack(side=tk.LEFT)
btn_reset=tk.Button(frm_button,text="RESET",command=reset).pack(side=tk.RIGHT)
frm_button.pack()
root.mainloop()
Se sei interessato ad approfondire questo argomento, clicca qui, per imparare a creare un calendario perpetuo con Python.
Al via i corsi di specializzazione dell'Academy delle professioni digitali - "Skill Factory".
Gino Visciano |
Skill Factory - 23/02/2024 15:16:10 | in Formazione e lavoro
Da marzo sono aperte le iscrizioni per partecipare ai corsi di specializzazione dell'Academy delle professioni digitali. Un progetto innovativo - firmato Skill Factory - per creare gli specialisti del digitale che servono alle aziende che vogliono essere competitive.
L'Academy, diretta da Gino Visciano, con il suo team di esperti in formazione digitale, ti permette di acquisire le competenze trasversali, tecniche e manageriali, per creare uno dei 6 profili professionali più richiesti dal mercato del lavoro digitale:
Clicca sull'immagine per accedere al dettaglio dei corsi.
È garantita:
- Alta professionalità tecnica e didattica
- Lezioni online con docente
- Laboratori asincroni reali, con supporto remoto in smart working
- Flessibilità per permettere anche a chi studia o lavora di seguire i corsi
- Pagamento mensile
- Assistenza alla compilazione del cv
- Presentazione del cv ai Job Partner della Skill Factory
- Orientamento e preparazione al colloquio di lavoro
- Digital badge che attesta la partecipazione al corso e certifica le competenze acquisite.
Per finalizzare l’iscrizione al corso sarà necessario versare la prima rata mensile con possibilità di recesso entro il primo mese.
Per informazioni e contatti:
sito: www.skillfactory.it
cell.: 3270870141
tel.: 08118181361
Competenze per programmare: Mondo Reale e Mondo Digitale
Gino Visciano |
Skill Factory - 25/02/2023 10:16:25 | in Tutorials
Nell'era della trasformazione digitale è importante capire la differenza tra "Mondo reale" e "Mondo digitale".
Oggi, mondo reale e mondo digitale, coesistono, ampliando lo spazio fisico in cui viviamo con quello cibernetico, che può essere considerato come un Universo parallelo, alternativo a quello fisico.
Il mondo reale è quello in cui viviamo, composto dalle cose che osserviamo e tocchiamo, quello digitale è il mondo delle cose che assumono la forma di numeri binari.
Il mondo digitale esiste grazie al Ciberspazio (Cyberspace), la rete delle reti, chiamta Internet, che interconnette tutti i sistemi informatici ed elettronici del mondo, su cui girano i software e le applicazioni che permettono il funzionamento di Internet e del mondo cibernetico.
Il termine è stato utilizzato la prima volta nel 1982, nella forma inglese cyberspace, in un racconto di fantascienza dal titolo "Burning Chrome".
I tipi di applicazioni più conosciuti del cyberspace sono i seguenti:
- Social media;
- Social network;
- Motori di ricerca;
- Portali;
- Siti Web;
- Blog;
- E-Commerce;
- E-Learning
- Community;
- Suite applicative;
- Etc..
Qual è la diiferenza tra mondo reale e mondo digitale?
La risposta è semplice, il mondo reale è fatto di informazioni analogiche, quello digitale è fatto di cifre binarie, perché gli apparecchi elettronici possono gestire solo due stati fisici (flip-flop), che noi identifichiamo con le cifre 0 e 1, chiamate bit (Binary Digit).
Come sono fatte le informazioni analogiche?
Tutto cio che percepiamo nel mondo reale ha una forma analogica. Senza scendere in tenicismi complessi, possiamo dire che tutto quello che vedete o ascoltate, sotto forma di immagini o suoni, fatto di punti, linee oppure onde, è analogico.
Gli apparecchi elettronici, a differenza degli uomini, non possono memorizzare le immagini e i suoni in forma analogica, ma lo possono fare in forma digitale; sequenze di cifre binarie chiamate bit.
Fisicamente i bit negli apparecchi elettronici corrispondono a sequenze di interruttori (Flip-Flop) che possono assumere lo stato 0 oppure 1.
La cosa importante è che qualunque informazione analogica può essere trasformata in digitale e viceversa.
E' vero che le informazioni digitali sono più precise di quelle analogiche?
Si, è vero. I numeri sono grandezze precise, le immagini e i suoni possono anche essere interpretati male; questo è evidente con gli orologi.
Un orologio anlagico indica le ore, i minuti e i secondi attraverso tre lancette diverse, la posizione delle lancette, quando viene letta l'ora, può essere interpretata male e la persona potrebbe leggere un informazione non esatta.
Un orologio digitale indica le ore, i minuti e i secondi attraverso cifre, in questo caso l'ora letta è sempre esatta.
In che modo le informazioni analogiche possono essere trasformate in digitali?
La risposta a questa domanda complessa, può diventare semplice se facciamo riferimento all'informatica.
Quando scrivete qualcosa con un dispositivo elettronico, utilizzate la tastiera:
Tutti i caratteri della tastiera, noi li percepiamo come informazioni analogiche, perchè sono composti da punti e linee, quindi il testo che scriviamo noi lo possiamo ricordare, il dispositivo che stiamo usando no.
Per permettere al dispositivo elettronico di memorizzare i caratteri usati per scrivre un testo, devono essere convertiti in numeri; per questo motivo è nata la tabella dei codici ASCII (pronuncia ASKII) che associa a 256 caratteri diversi, un numero da 0 a 255:
Per approfondire la conoscenza del codice ASCII clicca qui.
Ad esempio, se digitate un carattere "A" oppure un carattere "1", entrabi vengono prima convertiti nei rispettivi codici ASCII 65 e 49, successivamente i numeri decimali vengono convertiti in banario, per permettere al dispositivo elettronico di memorizzarli attraverso sequenze di 8 flip-flop (interruttori elettrici), capaci di rappresentare i bit 0 oppure 1:
A=6510=010000012
1=4910=001100012
L'immagine seguente mostra le fasi di conversione di un messaggio ti tipo testo in binario:
Ricordate che per indicare in binario il numero 255, che corrisponde all'ultimo carattere del codice ASCII, servono otto cifre (bit); per questo motivo l'unità di misura minima dell'informatica è il byte (8 bit).
Anche le immagini composte da punti o linee e i suoni formati da onde sinusoidali, possono essere convertiti in sequenze di byte, in questo modo possono essere memorizzati dai dispositivi elettronici.
L'immagine seguente mostra forme diverse di onde sonore in forma analogica:
PRINCIPALI STRUMENTI DEL MONDO REALE E DEL MONDO DIGITALE
- COLORI
- IMMAGINI
- SUONI
- POSTA
- LIBRI
- CHIAVI
- FIRME
- SOLDI
- MAGAZZINO
IDENTITA' DIGITALE
- INTELLIGENZA ARTIFICIALE
- REALTA AUMENTATA O METAVERSO
Quali rischi corriamo quando siamo connessi al mondo digitale?
Come per il modo reale, anche in quello digitale si corrono dei rischi, quindi bisogna stare molto attenti a non assumere comportamenti sbagliati.
Quando siete connessi ad Internet con la vostra identità digitale e comunicate con qualcuno, state attenti, perché non sempre chi sta dall'altra parte è realmente chi dice di essere!!!
Non fidatevi di chi vi propone cose strane, ma soprattutto prima di fare qualunque cosa che vi viene richiesta, confidatevi con qualcuno molto vicino a voi.
Un altro rischio molto diffuso quando siete interconnessi ad Internet, è quello del furto d'informazioni riservate come ad esempio:
- Carta d'identità;
- Informazioni di genere, politiche, religiose;
- Password di carte di credito, bmt, conti correnti, etc..
Questa attività, chiamata "Phishing", spesso avviene attraverso l'installazione sul proprio computer di software malevoli, chiamati malware.
Per evitare questo tipo di attacchi, bisogna installare sul proprio computer un buon antivirus, non aprire allegati di mail sospette e non navigare su siti non conosciuti.
Infine attenti ai bulli, perché potreste trovarli anche nel mondo digitale.
Purtroppo in Internet, il fenomeno del cyberbullismo è molto comune; sia nella vita reale, sia in quella digitale. Anche se avete paura non dovete mai subire minacce da parte di altre persone, le conseguenze potrebbero essere molto gravi.
Se siete vitteme o conoscete qualcuno che è vittima di bullismo o cyberbullismo, è sempre meglio denunciare subito l'accaduto a qualcuno molto vicino a voi o alla polizia!!!
INFORMATICA APPLICATA
Laboratorio
Creare un programma che trasforma un messaggio di tipo testo in ASCII e in binario (Byte).
Soluzione JavaScript
// Funzioni
function decimaleBinario(decimale) {
var binario = [];
var numero = 0;
var posizione = 7;
for (var x = 0; x < 8; x++) {
binario.push(0);
}
numero = decimale;
while (numero >= 2) {
risultato = Math.floor(numero / 2);
resto = numero % 2;
binario[posizione] = resto;
posizione--;
numero = risultato;
}
binario[posizione] = numero;
return binario.join('');
}
// Programma
var input = require("readline-sync");
var messaggio = "";
var risposta = "";
var riga = "";
var ascii = [];
var binario = [];
var x = 0;
do {
ascii = [];
binario = [];
messaggio = input.question("Messaggio da convertire: ");
for (var x = 0; x < messaggio.length; x++) {
ascii.push(messaggio.charCodeAt(x));
binario.push(decimaleBinario(messaggio.charCodeAt(x)));
}
console.log("Conversione del messaggio in ASCII:");
riga = "";
for (x = 0; x < ascii.length - 1; x++) {
riga = riga + ascii[x] + ","
}
riga = riga + ascii[x] + "."
console.log(riga);
console.log("Conversione del messaggio in binario (Byte):");
riga = "";
for (x = 0; x < binario.length - 1; x++) {
riga = riga + binario[x] + ","
}
riga = riga + binario[x] + "."
console.log(riga);
risposta = input.question("Vuoi inserire un altro messaggio (s/n)? ")
while (risposta.toLowerCase() != 's' && risposta.toLowerCase() != 'n') {
console.log("Errore: inserire s oppure n.");
risposta = input.question("Vuoi inserire un altro messaggio (s/n)? ")
}
} while (risposta.toLowerCase() == 's');
Soluzione Python
import math
# Funzioni
def decimaleBinario(decimale):
binario = []
numero = 0
posizione = 7
for x in range(8):
binario.append('0')
numero = decimale
while numero >= 2:
risultato = math.floor(numero / 2)
resto = numero % 2
binario[posizione] = str(resto)
posizione = posizione-1
numero = risultato
binario[posizione] = str(numero)
return ''.join(binario)
# Programma
messaggio = ''
risposta = 's'
riga = ''
ascii = []
binario = []
x = 0
while risposta == 's':
ascii = []
binario = []
messaggio = input("Messaggio da convertire: ")
for carattere in messaggio:
ascii.append(ord(carattere))
binario.append(decimaleBinario(ord(carattere)))
print("Conversione del messaggio in ASCII:")
riga = ""
for x in range(len(ascii)-1):
riga = riga + str(ascii[x]) + ","
x=x+1
riga = riga + str(ascii[x]) + "."
print(riga)
print("Conversione del messaggio in binario (Byte):")
riga = ""
for x in range(len(binario)-1):
riga = riga + binario[x] + ","
x=x+1
riga = riga + binario[x] + "."
print(riga)
risposta = input("Vuoi inserire un altro messaggio (s/n)? ")
while risposta != 's' and risposta != 'n':
print("Errore: inserire s oppure n.")
risposta = input("Vuoi inserire un altro messaggio (s/n)? ")
Come eseguire il programma JavaScript
Per eseguire il programma JavaScript, bisogna installare il framework node.js sul proprio computer.
Il download del file d'installazione può essere fatto collegandosi al link: https://nodejs.org/it/download/.
Il file di download deve corrispondere al sistema operativo installato sul proprio computer.
Dopo il download eseguire il file per installare node.js.
Per verificare se il framework node.js è stato installato correttamente, dal prompt dei comandi del sistema operativo usato, eseguire il comando:
node --version
dovrebbe essere visualizzata la versione di node.js installata, come mostra l'immagine seguente:
Successivamente bisogna creare una cartella "laboratori" dove salvare il programma JavaScript da eseguire.
Per salvare il programma nella cartella "laboratori", basta copiarlo nel blocco note o in qualunque editor di testo e salvarlo con il nome:
analogico_digitale.js
Infine, da prompt dei comandi, entrare nella cartella laboratori ed eseguire il comando:
npm install readline-sync
Questa libreria serve per permettere l'inserimento di dati da tastiera, quando viene eseguito il programma.
A queso punto si può eseguire il programma con il comando node, che è l'interprete JavaScript di node.js, come mostra l'esempo seguente:
node analogico_digitale
Come eseguire il programma Python
Per eseguire il programma Python, bisogna installare il framework python sul proprio computer.
Il download del file d'installazione può essere fatto collegandosi al link: https://www.python.org/downloads/.
Il file di download deve corrispondere al sistema operativo installato sul proprio computer.
Dopo il download eseguire il file per installare python.
Attenzione, durante l'installazione è importante spuntare l'opzione "Add Python 3.X to PATH:
Per verificare se il framework python è stato installato correttamente, dal prompt dei comandi del sistema operativo usato, eseguire il comando:
python --version
dovrebbe essere visualizzata la versione di python installata, come mostra l'immagine seguente:
Successivamente bisogna creare una cartella "laboratori" dove salvare il programma python da eseguire.
Per salvare il programma nella cartella "laboratori", basta copiarlo nel blocco note o in qualunque editor di testo e salvarlo con il nome:
analogico_digitale.py
Infine, da prompt dei comandi, entrare nella cartella laboratori ed eseguire il comando:
python analogico_digitale.py
Lezione precedente (I Sistemi di numerazione)
Per informazioni e contatti: www.skillfactory.it