coding – arkenidar.com /wordpress conscious Planet Sat, 20 Nov 2021 15:02:08 +0000 it-IT hourly 1 https://wordpress.org/?v=6.0 186265917 Snow Dog Academy /wordpress/2021/09/06/snow-dog-academy/ /wordpress/2021/09/06/snow-dog-academy/#comments Mon, 06 Sep 2021 07:20:40 +0000 /wordpress/?p=330 Oggi scade il termine per l’invio delle soluzioni al compito per la selezione dei corsisti alla Snow Dog Academy (https://snow.dog/academy). Ho inviato la mia!

GitHub: https://github.com/arkenidar/snowdog-academy-v2

Hosting:

]]>
/wordpress/2021/09/06/snow-dog-academy/feed/ 1 330
#Lua: vero o falso? /wordpress/2021/08/29/lua-vero-o-falso/ /wordpress/2021/08/29/lua-vero-o-falso/#respond Sun, 29 Aug 2021 07:19:11 +0000 /wordpress/?p=313
darcan@hp1:~$ lua
Lua 5.4.2  Copyright (C) 1994-2020 Lua.org, PUC-Rio
> not true
false
> not false
true
> false or false
false
> false or true, true or false, true or true
true    true    true
> true and true
true
> false and true, true and false, false and false
false   false   false
> 

https://it.wikipedia.org/wiki/Algebra_di_Boole

https://en.wikipedia.org/wiki/Boolean_algebra

In questo articolo ho fatto riferimento a come ci possa essere un concetto di vero/falso per il computer. A che pro? In genere questo vero/falso viene chiamato “condizione Booleana” (vedasi George Boole e la sua algebra Booleana). La condizione serve a determinare il corso dell’esecuzione del programma (corso detto in gergo: “flusso”, come nei “diagrammi di flusso”).

]]>
/wordpress/2021/08/29/lua-vero-o-falso/feed/ 0 313
#Lua: “mentre” vero fai… /wordpress/2021/08/28/lua-mentre-vero-fai/ /wordpress/2021/08/28/lua-mentre-vero-fai/#respond Sat, 28 Aug 2021 11:02:40 +0000 /wordpress/?p=307 Eccoci a una esercitazione in cui ancora una volta introduco dei concetti senza spiegarli, lasciando all’intuito di fare il restante.

Ecco. Dico solo: “while” significa mentre. E di preciso: “mentre questo è vero fai questo”, mentre è vera questa condizione logica che può essere vera o falsa fai questa o queste operazioni computazionali.

Più facile vederlo:

File: conta-zero.lua https://replit.com/@dariocangialosi/introduzionelua#conta-zero.lua

In questo file di esempio una variabile ha un valore iniziale, che viene decrementato sottraendo uno. Fa questo mentre la condizione “maggiore o uguale a zero” e’ vera altrimenti fine (end). Finito il ciclo termina anche l’ultima istruzione o blocco di istruzioni e il processo del programma esce e il programma si chiude.

]]>
/wordpress/2021/08/28/lua-mentre-vero-fai/feed/ 0 307
#Lua: tabelle /wordpress/2021/08/27/lua-tabelle/ /wordpress/2021/08/27/lua-tabelle/#respond Fri, 27 Aug 2021 07:12:21 +0000 /wordpress/?p=276 Luando#5: Qui parleremo delle tabelle, una facilitazione di Lua per gestire dati, e vi mostrerò qualcosa a riguardo, anche se ha anche caratteristiche avanzate come le meta-tabelle che cito soltanto, qui.

Alla base una tabella permette due cose: ancora una volta l’abbinamento tra lettura e scrittura, come per l’IO (Input e Output, ricordate?).

Supponiamo di avere una tabella inizialmente vuota:

tabella1={}

Oppure una tabella inizialmente con qualche elemento:

tabella2={"nord","sud","ovest","est"}

Vediamo che succede a leggerci e a scriverci:

return tabella2[1] -- restituisce "nord"

Cosi come visto sopra si legge dalla tabella. Si usa la seguente sintassi: (sintassi? si, come per una grammatica analizzabile dal computer)

nome_tabella[chiave] -- restituisce il valore

Valori? Chiavi? Si, una tabella in senso astratto è una associazione chiavi-valori, ogni chiave con il suo valore e ogni valore con la sua chiave (un pò come ogni variabile ha il suo nome e il suo valore contenuto, anche valore nil).

Questa che abbiamo vista era una tabella con chiavi di tipo intero: 1,2,3,4 sono le chiavi, avendo i 4 elementi (1:nord, 2:sud, 3:ovest, 4:est, nell’esempio sopra). Nota: in Lua il primo elemento a chiave numerica ha chiave 1 e non zero (altri linguaggi iniziano a contare da zero, in Lua si inizia contare da 1).

Infatti passiamo alle associazioni con chiavi di tipo stringa (negli esempi precedenti le chiavi erano di tipo intero, numero intero):

tabella_stringhe={base=4.5, altezza=7}

Vedete? Molto simili alle assegnazioni delle variabili. Lo spiego: crea una tabella vuota (ovvero “{}” se ricordate) e pone la chiave chiamata “base” (chiave di tipo stringa!) al valore numerico “4.5” e la chiave “altezza” (stringa, non intero) al valore numerico “7” (vedi sopra, sintassi stile assegnazioni di variabili).

Infatti scoprirete che le variabili in Lua usano le tabelle, ma non vorrei confondervi. Dicevamo: leggere dati e scrivere dati.

nome_tabella[chiave] -- restituisce il valore
nome_tabella[chiave]=valore -- assegna un valore

Se vi sembra inizialmente complicato ricordatevi soltanto di queste due sintassi, per leggere un valore la prima, per scrivere un valore la seconda. Nota: anche le variabili possono essere sia lette che scritte:

variabile1="valore1" -- scrive in variabile1
return variabile1 -- legge da variabile1 per restituirlo mediante return

In breve il solo nome permette di leggere il valore, il nome con un “=” di assegnazione associa un valore a quel nome. Associa. Sia nel caso delle variabili che delle tabelle si tratta di associazioni, sebbene temporanee perchè ri-assegnabili (per questa variabilità si parla di variabili).

local triangolo={base=4.5, altezza=7} -- dati_triangolo
return (triangolo.base*triangolo.altezza)/2

Ecco un’altra sintassi:

nome_tabella.chiave -- restituisce il valore
nome_tabella[chiave] -- restituisce il valore

La sintassi con il “.” punto è adatta però soltanto alle chiavi di tipo stringa (ma senza spazi eheh). Queste due sintassi si equivalgono in questo caso mostrato:

triangolo.base -- con il "." punto per le chiavi stringa senza spazi
triangolo["base"] -- con le parentesi quadre generiche

Per il momento basta così ma ricordate che con le parentesi quadre avendo la “chiave” potete fare riferimento a un valore contenuto nella tabella, sia per poterlo leggere (e usare) sia per poterlo scrivere (e modificare).

]]>
/wordpress/2021/08/27/lua-tabelle/feed/ 0 276
#Lua: variabili e assegnazioni /wordpress/2021/08/26/lua-variabili-e-assegnazioni/ /wordpress/2021/08/26/lua-variabili-e-assegnazioni/#respond Thu, 26 Aug 2021 21:49:17 +0000 /wordpress/?p=271 Luando#4: In questa puntata si studieranno le variabili e le assegnazioni di un valore a una variabile. Una variabile è un contenitore di vari valori (cioè dati). Una variabile ha un suo nome identificativo. Far contenere un valore alla volta a una variabile (sganciandola da quel valore precedente) viene detto operazione di assegnazione. Assegna un valore a una variabile, che viene identificata da un nome. La prima assegnazione crea la variabile che altrimenti avrebbe il valore speciale riservato nil, tipico delle variabili inesistenti.

Kate evidenzia il codice Lua
-- variabile1 ha valore nil (non esiste ancora)
local variabile1="testo (valore di tipo stringa)" -- ora esiste e ha valore stringa
variabile2=123 -- variabile2 inizia ad esistere ma come variabile globale
local variabile3 -- variabile3 inizia ad esistere come variabile locale ma ha valore nil
variabile3=variabile2 -- variabile3 ora ha valore 123
variabile1=2 -- variabile1 ora ha valore 2, non stringa di testo ma di tipo numerico
variabile3=variabile3+variabile1 -- assegna la somma di due variabili quindi
-- equivale a variabile3=123+2 quindi variabile3=125

L’operatore di assegnazione è “=” e si usa come (dove assegnare)=(cosa assegnare).

]]>
/wordpress/2021/08/26/lua-variabili-e-assegnazioni/feed/ 0 271
#Lua I.O.: leggi & scrivi dati. /wordpress/2021/08/26/lua-i-o-leggi-scrivi/ /wordpress/2021/08/26/lua-i-o-leggi-scrivi/#respond Thu, 26 Aug 2021 13:15:20 +0000 /wordpress/?p=256 Luando#3: Input e Output (I.O.) ovvero Input per leggere dati (ricezione) e Output per scrivere dati (emissione).

Nelle app classiche, dove non c’è una interfaccia grafica (G.U.I.) c’è una U.I. (Interfacciamento con l’Utenza) di tipo testuale a console, riga di comando.

ecco un programma testuale a console (command line interface)

Esempio: input-output.lua https://replit.com/@dariocangialosi/introduzionelua#input-output.lua

io.write() scrive una stringa di testo nella console di testo, quindi avanzando il cursore di scrittura, posizionando più avanti, in base a cosa e quanto ha scritto.

io.read() nell’esempio invece legge dall’utente un dato, nel caso di io.read(“*n”) un Numero. Ovvero il programma si ferma in attesa che l’utente digiti nella console un input, concludendo poi con la pressione del tasto invio per confermare. In questo caso della lettura di un numero viene prima letto un testo, che poi verrà convertito in numero se possibile, altrimenti dovrà essere gestita tale condizione limite.

]]>
/wordpress/2021/08/26/lua-i-o-leggi-scrivi/feed/ 0 256
#Lua] Dati: tipi e operazioni /wordpress/2021/08/26/lua-dati-tipi-e-operazioni/ /wordpress/2021/08/26/lua-dati-tipi-e-operazioni/#respond Thu, 26 Aug 2021 12:02:50 +0000 /wordpress/?p=249 Luando#2: Questa è la seconda lezione di Luando, un corso in Italiano su Lua script, un linguaggio per formare le istruzioni di un programma informatico.

Nella scorsa e prima puntata abbiamo visto i Commenti, modo di rendere del testo escluso, specialmente a fine di commentare il funzionamento, documentandolo.

In questa sessione vedremo come esistano i dati, cioè le informazioni che il programma riceve ed emana, elaborandole, processandole, calcolandole.

I dati hanno particolari formati, chiamati “tipi di dato”, e delle operazioni su di essi, chiamate “operazioni sui dati di un tipo”, ad esempio un tipo di dato numerico e operazioni sui dati di tipo numerico. Oppure un tipo di dato testuale detto in gergo stringa.

darcan@hp1:~$ lua
Lua 5.4.2  Copyright (C) 1994-2020 Lua.org, PUC-Rio
> return 1+1, 2-3, 4*3, 5/2
2       -1      12      2.5
> return "stringa1 ".."e stringa2 di testo concatenate"
stringa1 e stringa2 di testo concatenate
> return "stringa più numero convertito in stringa: "..tostring(math.pi)
stringa più numero convertito in stringa: 3.1415926535898

Ad esempio qui sopra ci sono le quattro operazioni aritmetiche basilari (+ – * /), le stringhe di testo e l’operazione di concatenazione di due stringhe (..), e infine un numero (math.pi, il pi greco approssimato) e questo numero viene convertito in stringa per essere concatenato a una seconda stringa (concatenazione tra stringhe, non tra stringa e numero).

]]>
/wordpress/2021/08/26/lua-dati-tipi-e-operazioni/feed/ 0 249
#Luando: i Commenti? Cosa e perché? /wordpress/2021/08/26/luando-i-commenti-cosa-e-perche/ /wordpress/2021/08/26/luando-i-commenti-cosa-e-perche/#comments Thu, 26 Aug 2021 06:37:37 +0000 /wordpress/?p=240 Luando#1: Ecco il primo morso: cosa sono i Commenti? E perché esistono? E come rendono la vita un poco migliore 😉 ?

Cosa sono i commenti? Nel linguaggio Lua i Commenti sono parti di testo che vengono ignorate durante l’esecuzione delle istruzioni. Quindi non vengono eseguiti.

Esempio:

passaggio1()
--passaggio2()
passaggio3()
-- la riga del passaggio2() non viene eseguita
-- e nemmeno queste descrittive

Quindi abbiamo scoperto due usi: “disabilitare” cioè disattivare una parte del programma, in questo caso disattivare il secondo passaggio, quindi saltandolo.

E scrivere del testo di commento, dei Commenti per descrivere qualcosa di attinente e associato a quel punto del programma in formato testuale. Quindi per spiegazioni del testo, dello script Lua.

Queste due funzionalità: 1- disattivare 2- descrivere, sono i motivi principali per l’esistenza dei Commenti.

Rendono la vita un poco migliore perché in questo modo sia si hanno direttamente nel testo del programma delle spiegazioni, e sia perché si può disattivare (e riattivare!) per effettuare prove di funzionamento (prove che poi capirete perché si fanno durante le fasi di scrittura e modifica).

Per riattivare basta rimuovere i due trattini “–” iniziali:

passaggio1()
passaggio2() -- ecco il passaggio2 ri-attivato
--passaggio3() -- disattivo il passaggio3
--[[ vedete che si può commentare anche
 "durante" il rigo? oltre che inizio rigo?
questo è un commento multi-rigo, invece --]]
passaggio4() -- qua è di nuovo programma eseguito
Preso da Kate che gestisce i file punto lua (.lua)

Ultima chicca extra, un ultimo morso:

--[[
passaggio5()
passaggio6()
passaggio7()
passaggio8()
--]]

Così (sopra) è disattivato da passaggio5 al passaggio8.

---[[
passaggio5()
passaggio6()
passaggio7()
passaggio8()
--]]

Così (sopra) è riattivato perché vengono considerati 2 commenti su rigo singolo e non 1 singolo commento multi rigo.

A seguire una immagine GIF che lo va vedere:

multi rigo on/off, disattivazione e riattivazione di più righi

E con questa chicca concludo. Riassumo: in caso di testo da far ignorare per disattivarlo o per inserire testo umano che il computer dovrà ignorare usate i commenti per farlo ignorare. I commenti in Lua si aggiungono con un “–” doppio trattino. Un pò di pratica per vederlo in azione. E se non avete capito questo è opzionale per così dire ma mostra come ci sia un testo su più righi che vengono analizzati grammaticalmente. E con questa analisi se trova i due trattini allora ignora il resto del rigo. Tempo al tempo e buona digestione. Proseguirò, spero.

File: commenti.lua https://replit.com/@dariocangialosi/introduzionelua#commenti.lua

]]>
/wordpress/2021/08/26/luando-i-commenti-cosa-e-perche/feed/ 1 240
Luando: un corso Lua in Italiano /wordpress/2021/08/26/luando-un-corso-lua-in-italiano/ /wordpress/2021/08/26/luando-un-corso-lua-in-italiano/#respond Thu, 26 Aug 2021 05:51:18 +0000 /wordpress/?p=237 Lua significa Luna. E’ un nome di battesimo di un sistema informatico che vive al seguente link HTTP: https://www.lua.org/

Questo sistema informatico consente di definire il comportamento del computer istruzione per istruzione, modificando programmi pre-esistenti o creandoli, costruendoli mediante scrittura e modifica di riscrittura.

Di solito consiglio di studiare linguaggi di questo genere mediante SoloLearn.com ma è 1- in Inglese 2- alcuni linguaggi non sono comunque trattati tra cui il linguaggio Lua script.

Io lo tratterò in piccoli metaforici morsi masticabili e inghiottibili, digeribili e nutrienti. E in Italiano. Un pò di gergo sarà comunque fornito, non dico necessario ma prima o poi serve parlare in gergo. Cercherò di renderlo un poi per non sovraccaricare.

Ieri ho voluto lanciarmi nel parlarne un pò: /wordpress/2021/08/25/preparativi-mini-corso-su-lua-script/

Ma adesso come dicevo andrò per piccoli morsi digeribili. Alla prossima!

]]>
/wordpress/2021/08/26/luando-un-corso-lua-in-italiano/feed/ 0 237
preparativi mini corso su Lua script /wordpress/2021/08/25/preparativi-mini-corso-su-lua-script/ /wordpress/2021/08/25/preparativi-mini-corso-su-lua-script/#respond Wed, 25 Aug 2021 17:14:19 +0000 /wordpress/?p=231 Ho studiato molto e anche applicato vari linguaggi di programmazione al fine di scrivere dei programmi e lavorare come programmatore ovvero scrittore di programmi informatici.

Ho voluto scegliere Lua come linguaggio di scripting per alcune sue caratteristiche, anche se è inusuale usarlo come linguaggio per iniziare perlomeno nelle cerchie che conosco.

E’ usato in particolare come linguaggio di scripting da incorporare in modo da rendere scriptabile ovvero programmabile un programma. Ad esempio in Google Chrome è incorporato JavaScript per rendere scriptabili le pagine web scritte in linguaggio HTML.

Ogni linguaggio ha sia il suo ecosistema sia i suoi fattori culturali di gruppo. Lua ha trovato spazio nell’ambito ludico e didattico, e magari che si possa fare didattica in modo ludico? Chissà.

Intanto c’è un gran parlare di algoritmi. Ma sapreste riconoscerli? Un esempio di algoritmo che ci hanno insegnato è l’algoritmo della moltiplicazione mediante somme ripetute. I computer sono ottimi nella ripetitività sistematica e nelle operazioni matematiche elettroniche.

Ed ecco un programmino scritto in linguaggio Lua

Ho cercato qualcosa di semplice per iniziare sapendo che le cose andranno a complicarsi e sofisticarsi ma non troppo presto, accontentiamoci 🙂

“Function” significa “funzione”. Ci sono due parametri numerici: “da_accumulare” e “quante_volte”. Accumulare con un accumulatore significa sommare insieme. Inizialmente lo si pone a zero poi andrà incrementandosi divenendo “il valore precendente + da_accumulare”.

Per determinare quante volte ripeterlo fa un conto alla rovescia, vedasi la sottrazione. Quando arriva a zero non è più maggiore di zero quindi esce dalla ripetizione determinata dall’essere dentro il ciclo “while” che significa “mentre” è vera una condizione specificata.

Ecco un algoritmo. Un algoritmo è valido su una casistica quindi è relativamente generico, esso generalizza, in questo caso sulla categoria dei numeri naturali.

Esempio: 4 per 2. La variabile chiamata accumulatore diventa 0. Per 2 volte somma 4 all’accumulatore che avrà valori prima 0 poi 4 poi 8 e finisce il ciclo while, producendo 8, che viene restituito all’esterno della funzione con una “return” che è una parola chiave del linguaggio come anche “function” e “while”. Sono parole riservate ad usi specifici precostruiti e forniscono funzionalità.

eccola nuovamente. riuscite ad intravedere qualcosa?

ecco come lo uso:

ecco un esempio di uso

Il file per intero lo trovi al seguent link: https://replit.com/@dariocangialosi/introduzionelua#introduzione.lua

]]>
/wordpress/2021/08/25/preparativi-mini-corso-su-lua-script/feed/ 0 231