Trovare un numero primo con Scratch

Trovare un numero primo con Scratch

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.

sfondo numero primo con Scratch

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.

chiedere un 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.

divisore

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.

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:

Trovare un Numero primo con Scratch ottimizzazione

Questo è un semplice esempio per trovare un numero primo con Scratch, nella prossima lezione implementeremo altri algoritmi.

Alcuni link utili

Indice tutorial Scratch 3.0

Indice argomenti Scratch 2.0

Numeri primi in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili

Selecion sort in Scratch

Esempio di successione di Fibonacci con Algobuild

La successione di Fibonacci in C++

DHCP

DHCP

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:

Indirizzo IP

Subnet mask

Gateway di defualt

– 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:

client dhcp

Andiamo sulla voce Client DHCP e scegliamo proprietà.

automatico

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.

Alcuni link utili

Indice argomenti reti

1 – Introduzione alle reti

2 – Reti Pan, Lan, Man, Wan e Gan

3 – Tecnologia Bluetooth

4 – Tecnologia Wi-Fi

5 – Tecnologia WiMAX

6 – Topologia delle reti

7 – Hub e Switch

8 – Bridge e Router

9 – Commutazione di pacchetto e di circuito

10 – Mac Address

CIDR

CIDR

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.

Alcuni link utili

Indice argomenti reti

1 – Introduzione alle reti

2 – Reti Pan, Lan, Man, Wan e Gan

3 – Tecnologia Bluetooth

4 – Tecnologia Wi-Fi

5 – Tecnologia WiMAX

6 – Topologia delle reti

7 – Hub e Switch

8 – Bridge e Router

9 – Commutazione di pacchetto e di circuito

10 – Mac Address

Subnet mask

Subnet mask

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.

Alcuni link utili

Indice argomenti reti

1 – Introduzione alle reti

2 – Reti Pan, Lan, Man, Wan e Gan

3 – Tecnologia Bluetooth

4 – Tecnologia Wi-Fi

5 – Tecnologia WiMAX

6 – Topologia delle reti

7 – Hub e Switch

8 – Bridge e Router

9 – Commutazione di pacchetto e di circuito

10 – Mac Address

Classi indirizzi IP

Classi indirizzi IP

Le classi degli indirizzi IP sono 5: A, B, C, D ed E.

Classi indirizzi IP – Classe A

Gli indirizzi di classe A sono riservati alle reti realizzate nelle grandi aziende e seguono questa notazione: 0-127.H.H.H

Dove, il primo byte rappresenta la rete, mentre gli altri 3 byte rappresentano l’host (indicato con H).

Quindi si possono collegare 2^24, cioè 16.777.216 dispositivi meno due. Infatti gli indirizzi composti dai bit finali tutti a 0 e tutti a 1 hanno un significato speciale.

Notiamo che il primo byte rappresenta un numero decimale, il cui valore può essere un numero compreso 0 a 127. Tradotto in binario, secondo la notazione a 8 bit, abbiamo valori compresi tra 00000000 e 01111111. Quindi il primo bit è sempre 0.

Classi indirizzi IP – Classe B

Gli indirizzi di classe B vengono usati per le reti medie, come ad esempio quelle universitarie.

Seguono questa notazione 128-191.N.H.H, dove i primi due byte rappresentano la rete, mentre gli altri due byte rappresentano gli host per ogni rete.

Dunque, avendo due byte a disposizione si possono indirizzare nella rete 2^16, cioè 65.536 meno sempre i due che hanno i bit finali tutti a 1 oppure tutti a 0.

Gli indirizzi IP di classe B, in binario iniziano con i bit 10, infatti 128 corrisponde a 10000000 e 191 corrisponde a 10111111.

Classi indirizzi IP – Classe C

Gli indirizzi di classe C individuano piccole reti attuate dai provider dei servizi con abbonamenti Internet. Per intenderci sono le reti che abbiamo nelle nostre case o nelle scuole piccole.

Difatti consentono di indirizzare 2^8 meno due, cioè 254, dispositivi nella rete.

La notazione è la seguente 192-223.N.N.H, dove i primi tre byte rappresentano la rete mentre l’ultimo rappresenta l’host.

Questi indirizzi in binario iniziano con i bit 110.

Classi indirizzi IP – Classe D

Questa classe di indirizzi IP è speciale in quanto utilizzata per il multicasting.

In notazione decimale gli IP variano nel modo seguente: 224-239.X.X.X;

Tutti e 32 i bit dell’indirizzo sono utilizzati per indicare un gruppo, non un singolo host.

Questi indirizzi in binario iniziano con i bit 1110.

Classe E

La classe di indirizzi E, è utilizzata per test sperimentali, la notazione decimale è 240-255.x.x.x.

Questi indirizzi in binario iniziano con i bit 1111.

Esempi indirizzi IP

Facciamo degli esempi puramente indicativi di classi di indirizzi IP

– 10.45.36.121 classe A

– 175.220.110.25 classe B

– 192.168.1.64 classe C

Alcuni link utili

Indice argomenti reti

1 – Introduzione alle reti

2 – Reti Pan, Lan, Man, Wan e Gan

3 – Tecnologia Bluetooth

4 – Tecnologia Wi-Fi

5 – Tecnologia WiMAX

6 – Topologia delle reti

7 – Hub e Switch

8 – Bridge e Router

9 – Commutazione di pacchetto e di circuito

10 – Mac Address