Non sei registrato? Registrati subito cliccando QUI! E utilizza tutte le funzionalita' del sito!

1 - Variabili e convenzioni lessicali

Breve corso sul linguaggio di programmazione Lua, attraverso l'utilizzo della console interattiva e di LOVE,un nuovissimo tool per la creazione di applicazioni/giochi in 2D.

1 - Variabili e convenzioni lessicali

Messaggioda napco » 18/01/2010, 3:08

Commentare il codice

La prima regola di un programmatore è commentare SEMPRE! Un programma ben commentato risulta più gradevole alla vista, meglio organizzato e più leggibile. Un programma non commentato rallenta il tempo di debugging, rendendo difficile localizzare un errore, rende difficile ad altra gente leggere e comprendere il funzionamento del programma stesso e soprattutto, a lungo termine, ne rende difficile la lettura anche da parte del programmatore stesso.

I commenti, in Lua, sono indicati dal doppio trattino "--". All'interno della stessa riga di un programma, tutto ciò che precede "--" è considerato codice, mentre tutto ciò che lo segue è considerato commento.

 Codice: Seleziona tutto
-- Sono un commento molto bello e utile.


Variabili ed Identificatori

Una variabile, in Lua, è un contenitore di dati contrassegnato da un "identificatore" specifico. L'identificatore o, semplicemente, nome della variabile, può essere composto da qualsiasi lettera (maiuscola o minuscola) o numero (purchè non sia il primo carattere). L'unico simbolo che può far parte del nome è "_", che viene solitamente utilizzato come spaziatore in identificatori molto lunghi es:
 Codice: Seleziona tutto
meglio_utilizzare_identificatori_brevi_per_evitare_di_confondersi

In Lua esistono "parole riservate al linguaggio" che non possono essere utilizzate come identificatori. Queste parole sono:

and
local
true
false
nil
in
and
or
not
for
while
do
until
break
repeat
if
then
else
elseif
function
return
end


Inizializzazione e tipi di dato!

Ogni variabile, contrassegnata dal relativo identificatore, può essere "inizializzata" in qualsiasi momento all'interno del nostro programma. Prima di essere inizializzata la variabile è comunque esistente, ma il suo valore è nil (nullo). Per inizializzare una variabile, si utilizza l'operatore di assegnamento "=":
 Codice: Seleziona tutto
nome_variabile = valore

Ad una variabile può essere assegnato un valore di qualsiasi "tipo": numerico, booleano, stringa, nullo, table (set eterogeneo di valori) e funzione (eh si, in Lua si possono creare funzioni in run-time, e trattarle come fossero variabili normalissime!).

Per verificare il tipo del valore di una determinata variabile, durante l'esecuzione del nostro programma, si può utilizzare la funzione type(), che restituisce una stringa diversa in base al tipo di variabile che le passiamo:

 Codice: Seleziona tutto
variabile_da_verificare = 20
print(type(variabile_da_verificare)) -- Stamperà la stringa "number"


Quando una variabile è stata inizializzata con un determinato tipo di dato, come nell'esempio precedente, nulla ci impedisce di reimpostarla assegnandole un valore di tipo diverso:

 Codice: Seleziona tutto
variabile_stupida = 10
print(type(variabile_stupida)) -- "number"
variabile_stupida = "bau"
print type(variabile_stupida) -- "string"


number (Numero)

Il tipo "number" è rappresentato da qualsiasi numero intero o decimale. La funzione "type()", in presenza di una variabile di questa tipologia, restituisce la stringa "number".

 Codice: Seleziona tutto
variabile_number = 10 -- Complimenti, hai inizializzato una variabile di tipo number!!


string (Stringa)

Una stringa è rappresentata da una qualsiasi sequenza di caratteri e simboli racchiusi tra apici ' o doppi apici ". La forza del linguaggio Lua è la mole di funzioni che mette a disposizione per elaborare stringhe e tables, e che vedremo tra qualche lezione. Nel caso delle stringhe, la funzione "type()" restituisce la stringa "string".

 Codice: Seleziona tutto
variabile_cretina = 'sono una stringa!'
variabile_stupidella = "pure io, però uso i doppi apici e vengo usata più spesso!"


boolean (Booleani)

Le variabili booleane possono contenere solamente due valori: "true" (vero) e "false" (falso), un po' come gli switch in RPGMaker.

 Codice: Seleziona tutto
variabile_booleana = false


La funzione "type()" ci restituirà la stringa "boolean".

nil (Nullo)

Una qualsiasi variabile, prima di essere inizializzata, è di valore "nil" (nullo). Se, durante il nostro programma, dovessimo aver bisogno di "resettare" una variabile, sarà sufficiente:

 Codice: Seleziona tutto
variabile_da_resettare = nil


"type()" restituirà la stringa "nil"!

Conclusione ed esercizi

Nella prossima lezione tratteremo le tables (set di valori) e le funzioni (piccoli frammenti di programma che eseguono una routine predefinita e che possono essere chiamati in qualsiasi momento). Giusto per riscaldarvi un pochino, vi propongo un paio di esercizi in attesa della prossima lezione (che stavolta arriverà prima^^):

Esercizio 1: Inizializzate una variabile, assegnandole un valore numerico.
Inizializzate una seconda variabile, in modo che sia uguale alla prima. Ora, assegnate alla prima variabile un valore di tipo "string" e stampatela su schermo.

Esercizio 2: Inizializzate una variabile con qualsiasi valore e di qualsiasi tipo (eccetto table e function). Inizializzate una seconda variabile. Questa nuova variabile dev'essere di tipo "string" e deve contenere, come valore, la stringa che descrive il tipo della prima variabile.

Esercizio 3: Create, in un file di testo .lua, un micro programmino che:
inizializzi una variabile per ciascun tipo di dato spiegato durante la lezione, che stampi su schermo le variabili di tipo number e string, e che infine stampi a schermo i tipi di ciascuna variabile precedentemente inizializzata. Commentate poi il programma, testatelo utilizzando la console interattiva ed infine allegatelo al topic!

Nota: Nonostante non sia stato spiegato il modo di risolvere i primi due esercizi, dovreste arrivare alla soluzione tranquillamente usando l'intuito.
Ultima modifica di napco il 25/01/2010, 18:00, modificato 1 volta in totale.
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 1 - Variabili e convenzioni lessicali

Messaggioda Ally » 18/01/2010, 4:10

O_O
Devo pazientare e leggere tutto ^^
Dalla prima occhiata però sembra molto simile all'RGSS,quindi per chi fa già uso di quel 'linguaggio' non sarà poi così difficile(spero).
Bella lezione comunque :)
Posterò sicuramente la mia prova all'esercizio ;)
ImmagineClicca qui per ingrandire
Spoiler: mostra
Figlio Illegittimo n°001 della:
ImmagineClicca qui per ingrandire
Avatar utente
Ally
Fondatori
Fondatori
 
Messaggi: 5354
Iscritto il: 09/08/2009, 16:07
Località: Genova
Grazie dati: 127 volte
Grazie ricevuti: 121 volte
Ruolo: Scripter
Progetto/i VX: Essence
Tool Preferito: RM2k/2k3

Re: 1 - Variabili e convenzioni lessicali

Messaggioda napco » 18/01/2010, 4:15

Beh, diciamo che entrambi i linguaggi non hanno "fronzoli vari" come i punti e virgola o il dover specificare il tipo di variabile come in C. Comunque conoscerne uno facilita l'apprendimento dell'altro!
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 1 - Variabili e convenzioni lessicali

Messaggioda herupty » 24/01/2010, 21:05

mi da errore all'esercizio 1(stdin:1: '=' expected near 'type')
ecco il programmino
Spoiler: mostra
 Codice: Seleziona tutto
variabile = 10
variabile_due = 10
variabile = "sono una stringa!"
print type(variabile) -- "string"


comunque provo gli altri esercizi
lool | +
io: ma nel chara maker non trovo l'elmo
*invio l'img*
ally: ma sono chara mack quelli del template °_°
io: lo so
io: poi riadatto qualcosina
ally: mi servono!
ally: me ne ero dimenticato °_°

io: loool tu l'hai messo e nn ti ricordi che c'è OMG
ally: evvaiiiiii
ally: posso fare i chara nel mio stileeeeeeeee

io: XD
io: (da mettere in firma)
Avatar utente
herupty
Apprendista Maker
Apprendista Maker
 
Messaggi: 640
Iscritto il: 30/12/2009, 21:16
Località: Milano
Grazie dati: 6 volte
Grazie ricevuti: 2 volte
Ruolo: Graphic
Tool Preferito: S.E.R.P.E. ;P

Re: 1 - Variabili e convenzioni lessicali

Messaggioda napco » 25/01/2010, 17:21

perdonate l'errore idiota... colpa mia! ciò che va stampato tramite la funzione "print" va incluso tra parentesi, come ogni altra chiamata a funzione:

 Codice: Seleziona tutto
print(type(variabile))
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 1 - Variabili e convenzioni lessicali

Messaggioda herupty » 25/01/2010, 17:47

ah...grazie
lool | +
io: ma nel chara maker non trovo l'elmo
*invio l'img*
ally: ma sono chara mack quelli del template °_°
io: lo so
io: poi riadatto qualcosina
ally: mi servono!
ally: me ne ero dimenticato °_°

io: loool tu l'hai messo e nn ti ricordi che c'è OMG
ally: evvaiiiiii
ally: posso fare i chara nel mio stileeeeeeeee

io: XD
io: (da mettere in firma)
Avatar utente
herupty
Apprendista Maker
Apprendista Maker
 
Messaggi: 640
Iscritto il: 30/12/2009, 21:16
Località: Milano
Grazie dati: 6 volte
Grazie ricevuti: 2 volte
Ruolo: Graphic
Tool Preferito: S.E.R.P.E. ;P

Re: 1 - Variabili e convenzioni lessicali

Messaggioda napco » 25/01/2010, 18:04

Ecco, ho editato la lezione correggendo l'errore! Comunque l'esercizio di herupty è corretto, anche se nell'esercizio intendevo inizializzare la seconda variabile con un valore uguale alla prima, fingendo però di non conoscerlo:
 Codice: Seleziona tutto
variabile = 10
variabile_due = variabile
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 1 - Variabili e convenzioni lessicali

Messaggioda herupty » 25/01/2010, 20:15

Esercizio 1
Spoiler: mostra
 Codice: Seleziona tutto
variabile = 10
variabile_t = variabile
variabile = "sono una stringa!"
print (variabile) -- "string"


Esercizio 2
Spoiler: mostra
 Codice: Seleziona tutto
var = 100
vari = (type(var))
print (vari)


Esercizio 3
Spoiler: mostra
 Codice: Seleziona tutto
-- definisco le variabili --
var_n = 10  -- variabile di tipo "number"
var_s = "ciao" -- variabile di tipo "string"
var_b = true -- variabile di tipo "boolean"
var_r = nil -- variabile da rasettare

-- stampo i valori di var_n e var_s --
print ((var_n),(var_s))

-- stampo il tipo di veriabile di ognuna di esse
print (type(var_n))
print (type(var_s))
print (type(var_b))
print (type(var_r))


il problema è che mi da errore quando lo apro nella console...
io scrivo
 Codice: Seleziona tutto
dofile("es3.lua")

e mi esce questo errore:
 Codice: Seleziona tutto
es3.lua:1: unexpected symbol near ' '
start traceback:
[C]: in function 'dofile'
stdin:1: in main chunk
[C]: ?
lool | +
io: ma nel chara maker non trovo l'elmo
*invio l'img*
ally: ma sono chara mack quelli del template °_°
io: lo so
io: poi riadatto qualcosina
ally: mi servono!
ally: me ne ero dimenticato °_°

io: loool tu l'hai messo e nn ti ricordi che c'è OMG
ally: evvaiiiiii
ally: posso fare i chara nel mio stileeeeeeeee

io: XD
io: (da mettere in firma)
Avatar utente
herupty
Apprendista Maker
Apprendista Maker
 
Messaggi: 640
Iscritto il: 30/12/2009, 21:16
Località: Milano
Grazie dati: 6 volte
Grazie ricevuti: 2 volte
Ruolo: Graphic
Tool Preferito: S.E.R.P.E. ;P

Re: 1 - Variabili e convenzioni lessicali

Messaggioda napco » 26/01/2010, 1:54

E' una cosa stranissima! L'esercizio è giusto, e copiaincollando il tuo codice non mi da nessun errore °°

Se fosse un problema della console (cosa che non capisco, visto che con me funzia) non ci sarebbe comunque da preoccuparsi, visto che quando inizieremo a programmare giochi la abbandoneremo!

Non è che usi linux?

Comunque nell'esercizio 3, dove hai utilizzato la funzione "print" con più argomenti, non era necessario racchiuderli tra parentesi. Non è un errore, comunque. Bravo!
Podi raggiunti: | +
ImmagineClicca qui per ingrandireImmagineClicca qui per ingrandireImmagineClicca qui per ingrandire
Avatar utente
napco
Maker Viandante
Maker Viandante
 
Messaggi: 205
Iscritto il: 24/11/2009, 16:55
Località: Marte
Grazie dati: 0 volte
Grazie ricevuti: 0 volte
Ruolo: Scripter
Tool Preferito: C(++)ervello

Re: 1 - Variabili e convenzioni lessicali

Messaggioda herupty » 26/01/2010, 16:27

grazie...comunque ho risolto...
non so come ho fatto, ma ho risolto
lool | +
io: ma nel chara maker non trovo l'elmo
*invio l'img*
ally: ma sono chara mack quelli del template °_°
io: lo so
io: poi riadatto qualcosina
ally: mi servono!
ally: me ne ero dimenticato °_°

io: loool tu l'hai messo e nn ti ricordi che c'è OMG
ally: evvaiiiiii
ally: posso fare i chara nel mio stileeeeeeeee

io: XD
io: (da mettere in firma)
Avatar utente
herupty
Apprendista Maker
Apprendista Maker
 
Messaggi: 640
Iscritto il: 30/12/2009, 21:16
Località: Milano
Grazie dati: 6 volte
Grazie ricevuti: 2 volte
Ruolo: Graphic
Tool Preferito: S.E.R.P.E. ;P

Prossimo

Torna a Programmare in Lua

 


  • Argomenti correlati
    Risposte
    Visite
    Ultimo messaggio

SEO Search Tags

      scrivere variabili a schermo lua

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti