Programmazione nella Scuola Primaria – 9

3

Abbiamo visto nei post precedenti come si programma usando Python. Ma Python è l’unico gioco in città? (cit.)

No, tutt’altro abbiamo tante alternative, vediamone un paio, limitatamente all’esercizio di Collatz. Come già per Python lo espongo in modo elementare in modo che risulti immediatamente comprensibile. Poi quando si cresce si potrà fare come fanno i nerd.

Questa è la versione Python:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# collatz.py - prima versione

n = 42 # cambiare questo numero 

print n,
while n > 1:
	if n % 2 == 1:
		n = 3 * n + 1
	else:
		n = n / 2
	print n,
print '\nfatto!'

Ruby è un linguaggio di programmazione simile a Python, ecco come diventa lo script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# coll.rb - collatz in Ruby 1.9

n = 15
print n, " "
until n == 1
    if n.even?
        n = n / 2
    else 
        n = (3 * n + 1)
    end
    print n, " "
end
print "\nciao!\n"

rb

Tutto chiaro vero? A differenza di Python non conta il rientro e i vari blocchi vengono chiusi con la parola riservata end. Non ho resistito e la riga 6 l’ho scritta usando il metodo even?. Sì perché con Ruby tutto è un oggetto (ci sarebbe da fare un discorso lungo ma non è il luogo). Ovviamente potevo scrivere la riga in modo normale: if n % 2 == 0 che è esattamente cosa fa even?.
Benché usato principalemte per il web Ruby fa quasi tutto quello che fa Python e ha parecchi estimatori. Ovviamente c’è per Windows, gratuito, qui: RubyInstaller dove trovate manuali, tutorial e tutto quanto.

E che ne dite di Lua?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
-- coll.lua Collatz con Lua 5.0

n = 15
io.write(n, ' ')
while n ~= 1 do
    if math.mod(n, 2) == 0 then 
        n = n / 2
    else
        n = 3 * n + 1
    end    
    io.write(n, ' ')
end
print("\nciao!")    

lua

Molto simile ai precedenti. Non c’è l’operatore % (o non mi ricordo come si scrive) ma c’è la funzione mod, del modulo math. Lua (Luna in portoghese) è nato in Brasile dove è usatissimo (tutti i programmatori brasiliani che conosco usano Lua, ne conosco peraltro uno solo, ciao Lole!). Lua ha caratteristiche che si apprezzano solo quando il lavoro dventa non banale, cioè mi piace. Per Windows trovate tutto qui: luaforwindows.

Con l’installazione avrete a disposizione anche l’ambiente integrato SciTE, non sarete obbligati a usare il Blocco note.

E ci sarebbero ancora millemila alternative come il Basic o JavaScript. Ma poi il post diventerebbe troppo lungo. Però una cosa devo aggiungerla: il Lisp. Non una versione di quelle ufficiali (per il Lisp esistono tante varianti, molte più di quelle che riuscite a immaginare), una versione piccola, facile ed efficientissima: newLISP.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
; coll.nl Collatz con newLISP

(set 'n 15)
(print n " ")
(while (> n 1) 
    (if (= (% n 2) 0)
        (set 'n (/ n 2))
        (set 'n (+ (* n 3) 1)))
    (print n " "))
(print "\nciao!\n")
(exit) 

nl

Beh, sì, sembra diverso.
Per oggi basta così ma lo sapete che…

Annunci
Post a comment or leave a trackback: Trackback URL.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: