Introduzione alla programmazione      


Introduzione by Tenshi e Gormel
L'avvento del Karaoke Templater, ha facilitato molto la creazione di effetti, ma anche questo sistema "semplificato" ha delle limitazioni, per cui, in certi casi, si è obbligati a passare all'utilizzo di script in Lua (come l'utilizzo di un numero di iterazioni variabili o effetti che agiscono sui frame).
Avere una conoscenza di base di programmazione, aiuta molto a capire come funziona il Lua, ma dato che non tutti possiedono queste conoscenze di base (io in primis :p), partiamo dall'ABC.
N.B. Le definizioni che troverete non necessariamente sono complete, infatti non servono da studio di questa materia, ma hanno solo lo scopo di far capire l'argomento di cui si sta parlando per poter comprendere il passo successivo della creazione di script Lua.
Innanzitutto...

Cos'è un programma (informaticamente parlando)?
Un programma è una serie di operazioni specifiche, eseguite in modo consequenziale da un computer, con lo scopo di produrre un determinato risultato, che non è altro che la risoluzione di un problema.
Esempio:
Se il mio problema è effettuare la somma di due numeri (es. 7 e 13), il programma fa in modo che il computer esegua l'operazione matematica e mi restituisca la soluzione al mio problema, cioè il risultato (20 nell'esempio di prima).
Il programma viene eseguito dal computer solo se è scritto in un determinato linguaggio che il computer è in grado di capire, questo linguaggio si chiama "linguaggio macchina binario" ed è costituito da sequenze di 1 e 0.
Es.
10110111011100011101100010110001001101110010111101010101

Dato che risulterebbe piuttosto ostico scrivere programmi in questo modo, il linguaggio che solitamente si usa per creare programmi (linguaggio di programmazione), tende ad essere più vicino al linguaggio usato dall'uomo.
Ma proprio perché il computer è in grado di capire solo il suo linguaggio, il programma creato con un linguaggio di programmazione "umano" (chiamato codice sorgente), deve essere reso leggibile dal PC trasformandolo in linguaggio macchina (codice oggetto) e questo viene fatto utilizzando un compilatore (un programma apposito che crea un file eseguibile del programma creato) o un interprete (il programma deve essere eseguito tramite un altro programma, che è appunto l'interprete).

Come funziona un Linguaggio di Programmazione?
Quindi un linguaggio di programmazione è quell'insieme di parole e simboli che formano un algoritmo (wiki: sequenza logica di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine stabilito, permettono la soluzione di un problema in un numero finito di passi).
Un linguaggio di programmazione deve rispettare certi fondamenti ben definiti, per garantire l'assenza di ambiguità e la rapidità di esecuzione, in particolare: lessico e sintassi.
Il lessico è un insieme di parole o simboli (o istruzioni) utilizzabili, ognuna con un significato specifico e inequivocabile. La sintassi sono le regole che indicano come unire le varie parole per creare una "frase" di senso compiuto.
Ad esempio, se dovessi chiedere a Giorgio di passarmi la mela che è sul tavolo, e mi mancasse una parte del lessico, ne uscirebbe qualcosa del genere:
"Giorgio, dammi la cosa che è sul coso"
Se invece mi mancasse solo la sintassi, riuscirei a spaventare il povero Giorgio dicendogli:
"Mela la Giorgio tavolo che sul dammi è"
(con un risultato ancora peggiore)
In un linguaggio di programmazione molto semplice e diffuso, quale il Basic ad esempio, per far scrivere la frase "Ciao a tutti" sullo schermo, si usa l'istruzione PRINT, che deve essere usata in questo modo:
PRINT "Ciao a tutti"
Se scrivessi invece:
"Ciao a tutti" PRINT
Il computer si rifiuterebbe di eseguire, mostrandoci un messaggio di errore sintattico.
Allo stesso modo, il computer si rifiuterebbe di lavorare, se proviamo a istruirlo in questo modo:
SCRIVI "Ciao a tutti"
Infatti "lui" non conosce la parola "SCRIVI". La sintassi andrebbe anche bene, ma qui si tratta di un errore lessicale.

I linguaggi di programmazione sono moltissimi, ma la cosa interessante è che si basano quasi tutti su strutture molto simili, quindi imparare un linguaggio significa avere le basi per impararli tutti.

Come creiamo il codice sorgente?
Abbiamo detto che il programma, che noi scriviamo nel semplice linguaggio di programmazione "umano", si chiama codice sorgente.
Non è altro che la scrittura di un semplice file di testo e, dato che l'aspetto stilistico generale del nostro scritto non è rilevante per il programma, solitamente non viene usato un programma di videoscrittura (tipo WinWord) ma un più semplice editor di testo (tipo il Blocco Note).

Concetti fondamentali da capire durante la programmazione sono:
Le variabili: sono "aree di memoria" con un nome specifico, a cui noi assegniamo un valore di qualsiasi tipo (numeri, stringhe di testo, liste e così via...).
Scrivendo:
a = 3
Ecco che ho già creato la mia variabile di nome "a" a cui assegno il valore numerico "3".
Ad una variabile, può essere associata anche un'espressione matematica, che può comprendere anche la variabile stessa dopo che l'ho definita inizialmente.
Es.
a = 3
a = a + 1
Oppure, gli si può assegnare una parola, una frase o un testo, una stringa quindi. Questa stringa, però, dev'essere delimitata e di solito si usano le virgolette.
Es.
a = "Ciao a tutti"
a = "Questa è una stringa"

A che cosa servono le variabili?
Le variabili sono le strutture essenziali di un linguaggio di programmazione e del programma stesso. Utilizzando le variabili, ad esempio, è più facile scrivere delle complicate operazioni matematiche conservando la leggibilità del listato.
Le variabili sono importantissime anche per eseguire calcoli ripetitivi o per memorizzare grandi quantità di dati.

L'istruzione è un comando, una funzione, oppure una regola descrittiva del linguaggio di un programma, che ordina ad un computer di eseguire una particolare operazione o un insieme di operazioni.
Le espressioni sono dei costrutti che combinano uno o più valori (costanti o variabili), utilizzando operatori e funzioni che sono elaborati secondo un certo ordine.
L'ordine di precedenza tra operatori stabilito dal linguaggio, normalmente può essere alterato mediante parentesi.
Ad esempio:
a + a è un'espressione in cui si somma la variabile "a" definita precedentemente.
a + 5 è un espressione in cui somma una variabile ad una costante numerica.

Le strutture di controllo permettono di controllare il flusso dell'esecuzione del programma, alterandolo in base al risultato di una espressione (che può ridursi al contenuto di una variabile, o essere anche molto complessa).
In pratica specificano se, quando, in quale ordine e quante volte devono essere eseguite le istruzioni che lo compongono.
I sottoprogramma sono blocchi di codice che possono essere richiamati da qualsiasi altro punto del programma.