Realizziamo un semplice programma per trovare un numero primo con Scratch.
Scegliamo uno sfondo e uno sprite qualsiasi.
Io ad esempio ho scelto questa scena.
Dopo chiediamo al nostro programma di inserire un numero in input, realizzando lo script sul gattino. Memorizziamo il numero immesso da tastiera in una variabile di nome numero.
Per verificare se un numero è primo dobbiamo dividerlo progressivamente per un numero che parta da 1 e che si fermi al numero stesso. Così al termine se i divisori sono solo due allora il numero è primo.
Quindi impostiamo la variabile divisore ad 1. Dopo costruiamo un ciclo ripeti fino a quando che faremo terminare quando il divisore raggiunge il numero, escludendo proprio la divisione per il numero stesso. Difatti tutti i numeri sono divisibili per se stesso e per uno. Quindi iniziamo escludendo proprio il numero stesso.
Il divisore ogni volta si incrementa di 1 ed il ciclo continuerà fino a quando il divisore arriva a numero -1. Infatti non appena la condizione numero=div è verificata si esce fuori dal ciclo.
Adesso ci serve un contatore che si incrementi ogni volta che troviamo un divisore. Chiamiamo questo contatore conta e lo inizializziamo a zero. Dopo, se troviamo un divisore allora incrementiamo il suo valore di 1.
Quindi adesso ci rimare da controllare, alla fine del ciclo, se il contatore vale più di 1. Se si, allora il numero non è primo.
Trovare un numero primo con Scratch – ottimizzazione
Chiaramente è possibile fare alcune ottimizzazioni, infatti potremmo uscire fuori dal ciclo non appena viene trovato un divisore.
Modifichiamo la condizione inserendo tramite l’operatore logico o la condizione conta >1.
Ecco dunque il programma completo:
Questo è un semplice esempio per trovare un numero primo con Scratch, nella prossima lezione implementeremo altri algoritmi.
Il DHCP (Dynamic Host Configuration Protocol) è un programma di utilità software che assegna automaticamente gli indirizzi IP ai dispositivi di una rete.
In questo modo si elimina la necessità di assegnare manualmente gli indirizzi IP agli host collegati ad una rete, in quanto tutto viene fatto dinamicamente.
Dunque se si utilizza un server DHCP non c’è bisogno della presenza di un amministratore di rete. Infatti è lo stesso software a tenere traccia degli indirizzi IP.
Funzionamento DHCP
Ogni indirizzo IP viene tenuto per un tempo predeterminato, trascorso il quale il server DHCP può utilizzare il precedente indirizzo per un qualsiasi altro computer che entra nella rete.
Un
server DHCP assegna ad un host le seguenti informazioni:
– Altri valori opzionali come il server DNS (Domain Name System)
Quindi il sever DHCP riceve la richiesta da parte di un qualsiasi host che vuole collegarsi alla rete. Dopo seleziona le informazioni di indirizzamento IP da una serie di indirizzi predefiniti memorizzati all’interno di un database. Poi ‘offre’ questi valori all’host che richiede la rete e se accetta gli viene assegnato l’indirizzo IP per un certo periodo di tempo.
Quindi il client DHCP, che è rappresentato da un determinato host che si collega alla rete, si connette al server DHCP che assegna all’host le informazioni dettagliate prima.
Verificare se il client DHCP è abilitato
Per vedere se il client DHCP del nostro computer è abilitato basta seguire la stessa procedura che abbiamo utilizzato per conoscere il MAC Address o l’IP privato.
Quindi andiamo su Windows start, digitiamo cmd e sul prompt dei comandi inseriamo ipconfig /all, tra le altre voci avremo anche le informazioni riguardo il DHCP.
Questo messaggio compare per ogni scheda di rete installata sul vostro computer.
Se è disabilitato basta andare su Windows start e digitare services.msc.
Si aprirà la seguente finestra:
Andiamo sulla voce Client DHCP e scegliamo proprietà.
Nella finestra scegliamo la voce automatico.
Proteggere la rete
Impostando il DHCP si può evitare che qualcuno usi la rete senza permesso. Infatti andando nel pannello di controllo del router si può impostare un indirizzo IP iniziale ed uno finale. In questo modo il DHCP assegna gli indirizzi IP all’interno di un intervallo.
Quindi ad esempio se a casa ci sono 10 device da collegare si può impostare un range compreso tra 192.168.1.1 e 192.168.1.10. Quindi gli altri dispositivi non si possono collegare alla rete che così è protetta. Per permettere il collegamento di altri dispositivi occorre cambiare nuovamente il range.
CIDR sta per Classless Inter-Domain Routing ed è un metodo utilizzato per allocare gli indirizzi IP introdotto nel 1993. Questo metodo sostituisce lo schema classful dove gli indirizzi dovevano appartenere ad una specifica classe (A, B e C).
Difatti il metodo
classful risulta poco efficiente nell’allocazione degli IP, in
quanto si creano reti e sotto reti troppo piccole o troppo grandi.
Quindi si è deciso
di impiegare un meccanismo che è in grado di assegnare più
efficacemente l’indirizzamento nelle reti.
Nelle lezioni
precedenti infatti abbiamo parlato di subnet mask e abbiamo
utilizzato queste:
255.255.255.0
indicata anche con /24, 255.255.0.0 indicata anche con /16 e
255.0.0.0 indicata anche con /8.
Supponiamo di voler
indirizzare 300 host allora in questo caso non posso utilizzare la
subnet 255.255.255.0 che in binario si rappresenta con questa
notazione 11111111.11111111.11111111.00000000. Infatti gli host
indirizzabili sono 256.
Allora potrei optare
per questa subnet 255.255.0.0 indicata anche con /16 dove posso
indirizzare 65.536 host. Ma sono eccessivi.
Dunque potrei
utilizzare la notazione CIDR /23 che lascia 9 bit per gli host e
quindi i computer indirizzabili sono 2^9, cioè 512.
Con CIDR /23 si utilizza dunque la subnet 255.255.254.0, indicata in binario 11111111.11111111.11111110.00000000.
Tabella CIDR
Di seguito la
tabella con le notazioni CIDR:
CIDR
Subnet in decimale
Subnet in binario
Indirizzi disponibili
/0
0.0.0.0
00000000.00000000.00000000.00000000
232=4.294.967.296
/1
128.0.0.0
10000000.00000000.00000000.00000000
231=2.147.483.648
/2
192.0.0.0
11000000.00000000.00000000.00000000
230=1.073.741.824
/3
224.0.0.0
11100000.00000000.00000000.00000000
229=536.870.912
/4
240.0.0.0
11110000.00000000.00000000.00000000
228=268.435.456
/5
248.0.0.0
11111000.00000000.00000000.00000000
227=134.217.728
/6
252.0.0.0
11111100.00000000.00000000.00000000
226=67.108.864
/7
254.0.0.0
11111110.00000000.00000000.00000000
225=33.554.432
/8
255.0.0.0
11111111.00000000.00000000.00000000
224=16.777.216
/9
255.128.0.0
11111111.10000000.00000000.00000000
223=8.388.608
/10
255.192.0.0
11111111.11000000.00000000.00000000
222=4.194.304
/11
255.224.0.0
11111111.11100000.00000000.00000000
221=2.097.152
/12
255.240.0.0
11111111.11110000.00000000.00000000
220=1.048.576
/13
255.248.0.0
11111111.11111000.00000000.00000000
219=524.288
/14
255.252.0.0
11111111.11111100.00000000.00000000
218=262.144
/15
255.254.0.0
11111111.11111110.00000000.00000000
217=131.072
/16
255.255.0.0
11111111.11111111.00000000.00000000
216=65.536
/17
255.255.128.0
11111111.11111111.10000000.00000000
215=32.768
/18
255.255.192.0
11111111.11111111.11000000.00000000
214=16.384
/19
255.255.224.0
11111111.11111111.11100000.00000000
213=8.192
/20
255.255.240.0
11111111.11111111.11110000.00000000
212=4.096
/21
255.255.248.0
11111111.11111111.11111000.00000000
211=2.048
/22
255.255.252.0
11111111.11111111.11111100.00000000
210=1.024
/23
255.255.254.0
11111111.11111111.11111110.00000000
29=512
/24
255.255.255.0
11111111.11111111.11111111.00000000
28=256
/25
255.255.255.128
11111111.11111111.11111111.10000000
27=128
/26
255.255.255.192
11111111.11111111.11111111.11000000
26=64
/27
255.255.255.224
11111111.11111111.11111111.11100000
25=32
/28
255.255.255.240
11111111.11111111.11111111.11110000
24=16
/29
255.255.255.248
11111111.11111111.11111111.11111000
23=8
/30
255.255.255.252
11111111.11111111.11111111.11111100
22=4
/31
255.255.255.254
11111111.11111111.11111111.11111110
21=2
/32
255.255.255.255
11111111.11111111.11111111.11111111
20=1
Considerazioni
Le ultime due /31 e /32 chiaramente non permettono di creare delle reti in quanto in ogni rete ci sono sempre due indirizzi speciali, uno riservato all’indirizzo di rete, composto da tutti zeri nella parte dedicata all’host e un altro, detto di broadcast, che serve a trasmettere a tutti i partecipanti della rete ed è composto da una serie di uno nella parte dedicata all’host.
Quindi, il numero
massimo di host che una sottorete può contenere è 2^h–2 (dove h è
il numero di bit).
Consideriamo poi che le notazioni CIDR da /0 a /7 non vengono utilizzate per le singole sotto-reti essendo il numero di host molto grande.
La subnet mask,
detta anche netmask, viene utilizzata per indicare la porzione di
rete di un indirizzo IP.
Nella scorsa lezione
abbiamo parlato di classi di indirizzi IP e abbiamo parlato di
possibili host indirizzabili.
Il subnetting
consiste in una divisione logica di una rete e la subnet mask
specifica come essa è suddivisa. Infatti, dopo aver configurato lo
schema di subnetting si possono configurare correttamente gli
indirizzi IP della rete LAN.
La subnet mask è un numero dotted decimal. In genere tutti gli host che appartengono ad una rete locale LAN hanno la stessa subnet.
Negli indirizzi di classe A il primo ottetto dell’indirizzo IP indica la porzione di rete. Quindi la netmask è 255.0.0.0, detta anche /8 in quanto i bit di rete sono 8 e indica che sono disponibili 16.777.216 indirizzi IP assegnabili.
Negli indirizzi di
classe B i primi due ottetti dell’indirizzo IP indicano la porzione
di rete. Quindi la subnet mask è 255.255.0.0, detta anche /16 in
quanto i bit di rete sono 16 e indica che sono disponibili 65.536
indirizzi IP assegnabili.
Per quanto riguarda invece gli indirizzi di classe C i primi tre ottetti dell’indirizzo IP indicano la porzione di rete. Quindi la netmask è 255.255.255.0, detta anche /24 in quanto i bit di rete sono 24 e indica che sono disponibili 256 indirizzi IP assegnabili.
Invece per gli indirizzi di classe D ed E, non è definita una subnet mask.
Esempi di subnet mask
Facciamo degli esempi puramente indicativi:
– 10.45.36.121 indirizzo di classe A con netmask 255.0.0.0
– 175.220.110.25 indirizzo di classe B con netmask 255.255.0.0
– 192.168.1.64 indirizzo di classe C con netmask 255.255.255.0
Per conoscere la subnet mask della vostra rete, seguite la prossima lezione dove si spiega come trovare un indirizzo ip.
Commenti recenti