Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e...

85
pag. 1 ATOMIC Parti a razzo a programmare!! v 1.07 - 22/06/2018 MANIFESTO Atomic è un linguaggio di programmazione a scopo didattico. È stato progettato per rispettare queste caratteristiche: - Realmente facile da imparare, soprattutto per chi non ha mai programmato - Esplicito e intuitivo, facilmente leggibile e prossimo all’italiano parlato - Flessibile, tollerante ma preciso Atomic non è uno strumento per creare progetti a lungo termine, è stato pensato come una “propulsione esplosiva” che permette di “partire a razzo” con la programmazione a discapito della longevità d’utilizzo. Questo documento è concepito come guida rivolta ai docenti. Per la comprensione non sono necessarie particolari conoscenze informatiche per quanto riguarda la programmazione ma solo conoscenze base sull’utilizzo di un pc e di matematica. Buona lettura! INDICE CODING O PROGRAMMAZIONE? ...................................................................................................................... 3 PERCHÉ USARE UN LINGUAGGIO TESTUALE? ................................................................................................... 3 ATOMIC È UN LINGUGGIO PIÙ AVANZATO RISPETTO ALLA PROGRAMMAZIONE VISUALE? ............................ 3 AMBIENTE DI SVILUPPO INTEGRATO ................................................................................................................ 4 UN AMBIENTE SICURO .................................................................................................................................... 10 ATOMIC IN NOTEPAD ++ ................................................................................................................................. 11 TIPI DI DATI ...................................................................................................................................................... 12 EVENTI ............................................................................................................................................................. 13 ESPRESSIONI .................................................................................................................................................... 14 VARIABILI ......................................................................................................................................................... 16 CHE NOME DARE ALLE VARIABILI? .................................................................................................................. 18 ELENCO DELLE VARIABILI INTEGRATE ............................................................................................................. 19 FUNZIONI ......................................................................................................................................................... 20 Funzioni di disegno di forme geometriche ...................................................................................................... 21 Funzioni di disegno del testo ........................................................................................................................... 23

Transcript of Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e...

Page 1: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 1

ATOMIC Parti a razzo a programmare!!

v 1.07 - 22/06/2018

MANIFESTO

Atomic è un linguaggio di programmazione a scopo didattico.

È stato progettato per rispettare queste caratteristiche:

- Realmente facile da imparare, soprattutto per chi non ha mai programmato

- Esplicito e intuitivo, facilmente leggibile e prossimo all’italiano parlato

- Flessibile, tollerante ma preciso

Atomic non è uno strumento per creare progetti a lungo termine, è stato pensato come una “propulsione esplosiva” che permette

di “partire a razzo” con la programmazione a discapito della longevità d’utilizzo.

Questo documento è concepito come guida rivolta ai docenti. Per la comprensione non sono necessarie particolari conoscenze

informatiche per quanto riguarda la programmazione ma solo conoscenze base sull’utilizzo di un pc e di matematica.

Buona lettura!

INDICE

CODING O PROGRAMMAZIONE? ...................................................................................................................... 3

PERCHÉ USARE UN LINGUAGGIO TESTUALE? ................................................................................................... 3

ATOMIC È UN LINGUGGIO PIÙ AVANZATO RISPETTO ALLA PROGRAMMAZIONE VISUALE? ............................ 3

AMBIENTE DI SVILUPPO INTEGRATO ................................................................................................................ 4

UN AMBIENTE SICURO .................................................................................................................................... 10

ATOMIC IN NOTEPAD ++ ................................................................................................................................. 11

TIPI DI DATI ...................................................................................................................................................... 12

EVENTI ............................................................................................................................................................. 13

ESPRESSIONI .................................................................................................................................................... 14

VARIABILI ......................................................................................................................................................... 16

CHE NOME DARE ALLE VARIABILI? .................................................................................................................. 18

ELENCO DELLE VARIABILI INTEGRATE ............................................................................................................. 19

FUNZIONI ......................................................................................................................................................... 20

Funzioni di disegno di forme geometriche ...................................................................................................... 21

Funzioni di disegno del testo ........................................................................................................................... 23

Page 2: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 2

Funzioni di disegno delle immagini ................................................................................................................. 25

Caricare immagini da internet ......................................................................................................................... 28

Disegnare immagini animate ........................................................................................................................... 29

Funzioni di casualità ........................................................................................................................................ 30

Funzioni matematiche, trigonometriche e vettoriali ...................................................................................... 31

Funzioni sul testo (stringhe di testo) ............................................................................................................... 33

Funzioni sul colore ........................................................................................................................................... 34

Funzioni sull’audio ........................................................................................................................................... 35

Funzioni sulle interfacce .................................................................................................................................. 37

Tasti virtuali ..................................................................................................................................................... 38

Interruttori ....................................................................................................................................................... 39

Caselle di spunta .............................................................................................................................................. 40

Barre di controllo ............................................................................................................................................. 41

Gruppi di opzioni ............................................................................................................................................. 42

Caselle di testo ................................................................................................................................................ 43

Eliminare interfacce ......................................................................................................................................... 44

Funzioni sulle date e sugli orari ....................................................................................................................... 45

Funzioni sui file di testo ................................................................................................................................... 47

INTRODUZIONE ALLA PROGRAMMAZIONE AD OGGETTI ................................................................................ 48

Funzioni di base sugli oggetti .......................................................................................................................... 50

Funzioni avanzate sugli oggetti ....................................................................................................................... 53

Funzioni sui percorsi ........................................................................................................................................ 57

Funzioni miscellanea ....................................................................................................................................... 59

AUMENTA E DIMINUISCI ................................................................................................................................. 60

COMMENTI ...................................................................................................................................................... 60

COSTANTI ......................................................................................................................................................... 61

COSTRUTTO SE................................................................................................................................................. 65

UTILIZZO DELLE VARIABILI TIMER .................................................................................................................... 67

OPERATORI LOGICI .......................................................................................................................................... 68

COSTRUTTO FINCHE ........................................................................................................................................ 71

COSTRUTTO RIPETI PER ................................................................................................................................... 73

TABELLE (ARRAYS) ........................................................................................................................................... 74

DEFINIRE LE PROPRIE FUNZIONI ...................................................................................................................... 77

DEFINIRE FUNZIONI CHE RESTITUISCONO UN VALORE ................................................................................... 78

INSERIRE SUGGERIEMENTI PER LE PROPRIE FUNZIONI ................................................................................... 79

Page 3: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 3

INCLUDERE CODICE ESTERNO ......................................................................................................................... 80

DEBUG ............................................................................................................................................................. 81

CONSIDERAZIONI FINALI E IPOTESI FUTURE DI SVILUPPO .............................................................................. 82

ATOMIC IN SINTESI .......................................................................................................................................... 83

CODING O PROGRAMMAZIONE?

Solitamente al termine coding (inteso come l’uso di strumenti per la programmazione didattica) viene associata solo la

programmazione visuale praticata dai bambini, mentre con il termine programmazione ci si riferisce alla programmazione

professionale praticata tramite linguaggi testuali dagli informatici. Atomic è un ibrido che tenta di rompere questa linea di confine.

Molti studenti, soprattutto se sosterranno un indirizzo di studio di tipo scientifico, avranno a che fare con i linguaggi di

programmazione testuali, anche se non diventeranno degli informatici. Per tale motivo in questo manuale non si fa distinzione tra il

termine coding e programmazione (intesa come programmazione didattica).

PERCHÉ USARE UN LINGUAGGIO TESTUALE?

La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole

sintattiche possono cambiare sensibilmente da linguaggio a linguaggio. Esistono già vari strumenti che permettono di fare coding

didattico come Scratch e code.org ma che utilizzano la programmazione visuale. Utilizzando linguaggi visuali è impossibile

commettere errori sintattici; questo è un grosso vantaggio per la produttività ma, dato che “sbagliando s’impara”, anche un grosso

limite. Il salto tra la programmazione visuale e quella testuale (ovvero quella dei “veri” linguaggi di programmazione) consiste

proprio nell’apprendere la sintassi di quel linguaggio: in quel momento si passa dall’avere una serie di opzioni da poter incastrare

tra loro in modo intuitivo al panico di ritrovarsi di fronte ad un foglio bianco (letteralmente!).

Atomic affianca un minimo di programmazione visuale alla piena libertà sintattica della programmazione testuale; per questo vuole

posizionarsi come “gradino mancante” nella scala dell’apprendimento della programmazione.

ATOMIC È UN LINGUGGIO PIÙ AVANZATO RISPETTO ALLA

PROGRAMMAZIONE VISUALE?

No, è semplicemente diverso. Ogni linguaggio, che sia visuale o testuale, offre caratteristiche e vantaggi diversi. È possibile iniziare

ad utilizzare Atomic dopo aver imparato un linguaggio visuale come è possibile iniziare a programmare da zero con Atomic.

Non c’è un età minima consigliata per iniziare a programmare con un linguaggio testuale; l’unico limite rispetto ad un linguaggio

visuale è la capacità di utilizzare in modo più o meno fluido la tastiera.

Page 4: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 4

AMBIENTE DI SVILUPPO INTEGRATO

Avviando l’interprete di Atomic si hanno a disposizione solo due opzioni: Mini editor ed Esegui file.

Cliccando su Esegui file si scegli direttamente il file di testo da eseguire (.txt).

Cliccando su Mini editor si apre un piccolo IDE (ambiente di sviluppo integrato):

Questa applicazione interna è molto pratica e minimale ma è consigliata solo per testare brevi pezzi di codice. Oltre a delle comode

interfacce per inserire frammenti di codice possiede solo le funzionalità base di un semplice editor di testo (carica, salva, annulla

con CTRL+Z, copia/incolla con CTRL+C/V). Il suo utilizzo è altamente sconsigliato quando si lavora con un codice lungo oltre le 30-

40 righe.

Le prime 5 icone a sinistra sono:

Esegui: esegui il codice che hai scritto

Esci: torna all’interfaccia principale

Apri: apri un file di testo

Salva: salva il lavoro in un file di testo

Opzioni: apri le opzioni

Le icone successive permettono di inserire frammenti di codice pronti all’uso e, nel caso di pezzi più lunghi, sono accompagnati da

commenti che spiegano il loro funzionamento e spiegano come devono essere completati.

Le interfacce si rifanno alla programmazione a blocchi, simili a quelle utilizzate in Scratch e Code.org.

Tuttavia, a differenza di quest’ultimi Atomic non utilizza la programmazione a blocchi ma converte istantaneamente il blocco

selezionato in codice e lo inserisce nella posizione corrente del puntatore.

Page 5: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 5

L’icona Kit pronti permetti di inserire pezzi di codice pronti per essere eseguiti e modificati. Alcuni kit comprendono funzioni

speciali per un determinato gioco o esercizio e possono far comparire delle interfacce aggiuntive che semplificano la scrittura o la

modifica del codice (es. gioco delle direzioni)

L’icona Costrutti permette di inserire le strutture sintattiche di base di ATOMC, gli “scheletri” su cui basare le proprie creazioni.

Page 6: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 6

L’icona Funzioni permette di inserire la maggior parte delle funzioni di Atomic. Le funzioni sono divise per categoria, in modo da

avere una buona panoramica delle “azioni” disponibili.

L’icona Colori permette di visualizzare ed inserire i colori di base disponibili ed esaminarne la composizione.

Page 7: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 7

L’icona Note musicali permette di inserire e ascoltare l’anteprima delle note musicali.

Premendo il tasto Ctrl è possibile suonare la tastiera senza inserire le note.

L’icona Suoni permette di ascoltare e inserire i suoni integrati in Atomic.

Page 8: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 8

L’icona Caratteri tipografici permette di visualizzare e inserire caratteri tipografici (font).

L’icona Variabili permette di visualizzare e inserire le variabili integrate.

Page 9: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 9

L’icona Tastiera simboli permette di inserire agevolmente i simboli di Atomic nella posizione del cursore.

L’icona Apri cartella risorse apre la cartella dove è possibile inserire immagini, animazioni, suoni e musica personalizzati.

Page 10: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 10

UN AMBIENTE SICURO

Malware Atomic è un ambiente di sperimentazione sicuro. Con Atomic non è possibile creare programmi che danneggino il computer (sia

involontariamente che volontariamente), poiché l’unica cartella al quale Atomic ha accesso è la sua cartella delle risorse. Se dei file

sospetti compaiono in questa cartella vengono immediatamente cancellati.

Evita il blocco del computer Nel caso il computer si blocchi poiché sta tentando di eseguire un ciclo infinito interrompe automaticamente l’esecuzione del

codice dopo 25000 iterazioni. Nel caso di un caricamento eccessivo di risorse (immagini e audio) Atomic blocca il caricamento.

Avvisa in caso di prestazioni troppo basse Se l’esecuzione del codice è pesante (causando un rallentamento) viene notificato durante l’esecuzione del programma. Se il calo di

prestazioni è significativo e perdura nel tempo il programma viene arrestato per evitare il surriscaldamento della macchina.

Filtro Internet Atomic può accedere ad internet ma un filtro interno impedisce di visualizzare e scaricare materiale da siti pornografici, siti che

contengono malware o altri siti non adatti ai minori. La lista nera e l’algoritmo di filtraggio sono costantemente aggiornati, tuttavia

non garantiamo che sia impossibile eludere il blocco.

In caso di tentato accesso a materiale pornografico viene mostrato un avviso deterrente.

Segnalazioni Per qualsiasi problema riscontrato relativo alla sicurezza potete segnalare il caso scrivendo a [email protected] .

Page 11: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 11

ATOMIC IN NOTEPAD ++ Per lavorare con del codice corposo è consigliabile l’utilizzo di Notepad++

Notepad++ è un editor di testo gratuito e open source per sistemi MS Windows, che supporta diversi linguaggi di programmazione.

È scaricabile gratuitamente a questo indirizzo: https://notepad-plus-plus.org/download/v7.3.3.html .

Una volta scaricato è possibile importare il file che definisce il linguaggio Atomic (Atomic.xml).

La procedura è molto semplice: Linguaggio -> Definisci il tuo linguaggio… -> Importa… -> Atomic.xml

Dopo averlo importato chiudere Notepadd++. Riaprendolo la voce “Atomic” comparirà in fondo al menu “Linguaggio”.

Selezionate “Atomic” per formattare il testo secondo la sintassi di Atomic.

Se non si vuole scaricare Notepad++ è possibile scrivere codice Atomic semplicemente con il Blocco note, l’unico svantaggio è

l’assenza di formattazione automatica (evidenziazione) del codice.

I file di Atomic sono semplici file di testo con estensione “.txt”.

Page 12: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 12

TIPI DI DATI

Un tipo di dato identifica l'insieme di valori che una variabile può assumere e le operazioni che si possono effettuare su

quell’insieme di valori.

In Atomic esistono solo due tipi di dato: numero e testo.

Un numero (numero reale) è un qualsiasi dato di tipo numerico, sia intero che decimale.

Esempi:

1, 2, 3.56, 257, 1000, 24525.23

I numeri possono essere manipolati tramite espressioni e da un gran numero di funzioni.

La maggior parte delle funzioni richiedono l’utilizzo di numeri per essere utilizzate.

Un testo (stringa di testo) è un qualsiasi dato testuale racchiuso tra i simboli " " (virgolette).

Esempi:

"Ciao", "Siamo in Italia", "Oggi ci sono 20°C"

I testi possono essere manipolati e disegnati tramite apposite funzioni.

Nelle variabili è anche possibile memorizzare riferimenti a delle risorse più complesse come immagini, suoni, font, percorsi, date…

queste risorse vengono memorizzate con riferimenti numerici e quindi, oltre ad essere propriamente utilizzati nelle funzioni a loro

dedicate, possono essere trattati come dei normali numeri.

Page 13: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 13

EVENTI

Gli eventi indicano quando una determinata parte del codice dovrà essere eseguita.

Esistono solo due eventi in Atomic: INIZIA e CICLO CONTINUO.

L’evento INIZIA viene eseguito una sola volta quando inizia il programma.

L’evento CICLO CONTINUO viene eseguito subito dopo INIZIA e continua ad essere eseguito ogni 1/30 secondi (ogni trentesimo di

secondo) finché il programma è in esecuzione.

La sintassi da utilizzare è la seguente:

INIZIA

… codice …

CICLO CONTINUO

… codice ...

È possibile inserire gli eventi anche tramite l’icona costrutti:

INIZIA

CICLO CONTINIO

Page 14: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 14

ESPRESSIONI

Un’espressione è un costrutto che utilizza numeri, variabili e costanti combinandoli con gli operatori per restituire un risultato.

Gli operatori utilizzabili sono i seguenti:

OPERATORE DESCRIZIONE

+ Somma

- Sottrazione

* Moltiplicazione

/ Divisione

^ Potenza

Esempi:

È anche possibile utilizzare le parentesi tonde “( )” per modificare l’ordine di esecuzione dei calcoli.

Ad esempio:

L’ordine in cui vengono eseguiti i calcoli è uguale a quello convenzionale della matematica:

1° - vengono calcolate tutte le sotto espressioni nelle parentesi, a partire da quelle più interne

2° - vengono calcolati gli elevamenti a potenza

3° - vengono calcolate le moltiplicazioni e le divisioni

4° - vengono calcolate le addizioni e le sottrazioni

Esempio:

da come risultato 64:

= ((2+6)/2)^(2+1) = (8/2)^(2+1) = 4^(2+1) = 4^3 = 64

ovvero:

Page 15: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 15

Come in matematica è anche possibile utilizzare costanti e variabili (vedi più avanti) all’interno di un’espressione

Esempi:

Ad esempio in matematica (cane*5/2)+topo^2 si potrebbe scrivere in questo modo:

Dove c sta per cane e t per topo.

Nel caso serva, per migliorare la leggibilità è possibile inserire uno spazio tra gli elementi di una espressione.

Ad esempio le seguenti forme di scrittura sono valide:

Un numero che contiene una parte decimale può essere scritto utilizzando il punto (.) o la virgola (,).

Esempio:

Sono entrambe scritture valide.

Un’espressione può essere utilizzata all’interno di altri costrutti, come valore di una variabile o come argomento di una funzione.

Page 16: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 16

VARIABILI

Le variabili sono locazioni di memoria che contengono delle informazioni modificabili. Le variabili hanno un nome in modo che è

possibile averne un riferimento. Una variabile in Atomic può contenere sia un numero reale che una stringa (una riga di testo).

Esistono anche variabili integrate come ad esempio x del mouse e y del mouse che indicano la posizione del cursore del mouse.

Prima di utilizzare una variabile bisogna dichiararla. Normalmente è buona prassi dichiararle nell’evento INIZA, tuttavia possono

anche essere dichiarate nell’evento CICLO CONTINUO (in alcuni casi è più vantaggioso).

Per modificare e dichiarare una variabile si utilizza la stessa sintassi, ovvero:

nome = valore

Ci sono vari modi per dichiarare o modificare il valore di una variabile:

Tramite numero, es:

Tramite testo, es:

Tramite costante, es:

Tramite altra variabile, es:

Tramite espressione, es:

Tramite funzione che restituisce un valore (tutte quelle che iniziano con “ottieni”), es:

Una variabile può contenere due tipi di valore: numero o testo.

Nel corso della sua esistenza una variabile può cambiare il tipo di valore che contiene (tipizzazione dinamica).

Ad esempio:

è una scrittura valida.

Page 17: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 17

E’ possibile gestire gli spazi tra il simbolo “=“ come si preferisce, le seguenti forme di scrittura sono valide:

Solo le variabili integrate come x del mouse possono avere un nome separato da spazi “ “.

Le variabili definite dall’utente se formate da due o più parole possono essere divise dal simbolo “_”.

Variabili create automaticamente

In alcuni casi una variabile può essere creata automaticamente da Atomic, vedi le sezioni dedicate all’interfaccia utente (tasti

virtuali, interruttori, caselle di spunta, gruppo di opzioni, caselle di testo, barre di controllo).

Page 18: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 18

CHE NOME DARE ALLE VARIABILI?

In matematica spesso le variabili sono nominate con una sola lettera. Questa astrazione dei nomi (il più delle volte convenzionale)

può risultare molto comoda a un matematico, un fisico o un chimico… ma di certo non a un bambino o a un ragazzo che si appresta

ad imparare i rudimenti della programmazione. A parte rari casi convenzionali (come x e y per le coordinate cartesiane) è sempre

meglio nominare una variabile con una o più parole che facciano riferimento al suo scopo.

Esempio:

I dati e la soluzione del problema sono facilmente leggibili all’interno del codice.

Se sostituiamo i nomi espliciti delle variabili con delle lettere, otteniamo questo:

Il codice è più breve e più elegante ma la sua comprensione non è immediata.

Per tale motivo in questo manuale raramente vengono usate singole lettere come nomi di variabili. Piuttosto, se il contesto è

astratto, vengo usati nomi di animali o comunque delle parole.

Page 19: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 19

ELENCO DELLE VARIABILI INTEGRATE

Le variabili integrate sono delle variabili già presenti in Atomic. Non è necessario dichiararle.

Alcune possono essere modificate manualmente, altre vengono gestite automaticamente e possono essere solamente lette.

NOME VARIABILE DESCRIZIONE MODIFICABILE MANUALMENTE?

x del mouse La posizione in pixel sull’asse x del cursore (freccetta) del mouse no y del mouse La posizione in pixel sull’asse y del cursore (freccetta) del mouse no larghezza finestra La larghezza in pixel della finestra si altezza finestra L’altezza in pixel della finestra si colore sfondo Il colore dello sfondo della finestra si nome finestra Il nome della finestra visualizzato in alto (stringa) si tasto “nome”* è stato premuto Il risultato della verifica se il tasto “nome”* è stato premuto (vero o falso) no tasto “nome”* è stato rilasciato Il risultato della verifica se il tasto “nome”* è stato rilasciato (vero o falso) no tasto “nome”* è premuto Il risultato della verifica se il tasto “nome”* è attualmente premuto (vero o falso) no rotella del mouse in su Il risultato della verifica se la rotella del mouse è stata ruotata in su (vero o falso) no rotella del mouse in giu Il risultato della verifica se la rotella del mouse è stata ruotata in giù (vero o falso) no timer 1, timer 2, timer 3, timer 4, timer 5, timer 6, timer 7, timer 8

Le variabili timer sono 8 variabili che decrescono automaticamente di 1 ogni secondo e possono essere usate per semplificare la gestione del tempo.

si

* “nome” può essere una delle seguenti parole: invio, barra spaziatrice, indietro, ctrl, alt, freccia su, freccia giù, freccia sinistra,

freccia destra, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, Q, W, E, R, T, Y, U, I, O, P, A, S, D, F, G, H, J, K, L, Z, X, C, V, B, N, M, sinistro del mouse, destro

del mouse, centrale del mouse.

Page 20: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 20

FUNZIONI

Una funzione è un costrutto che esegue automaticamente un’operazione complessa utilizzando determinati argomenti (parametri,

caratteristiche) forniti dal programmatore.

Le funzioni in Atomic hanno questa forma:

nome della funzione --> (ARGOMENTO 1: … ) (ARGOMENTO 2: … ) …

Normalmente nei linguaggi di programmazione gli argomenti di una funzione vanno forniti in un certo ordine e tutti gli argomenti

necessari vanno forniti.

Esempio in pseudocodice:

nome_funzione(argomento1,argomento2,argomento3);

Un esempio concreto di un altro linguaggio:

draw_circle(100,300,200,0);

Questa funzione di un altro linguaggio (il gml, uno tra i più facili da imparare) disegna un cerchio alla posizione x 100, y 300 con 200

pixel di raggio.

A parte l’inglese, per un neofita è difficile capire a cosa si riferiscono quei numeri senza guardare un manuale o perlomeno senza un

suggerimento come “draw_circle(x,y,r,outline);”.

In Atomic invece gli argomenti delle funzioni hanno un’etichetta e possono essere dati in un ordine casuale.

La funzione vista qui sopra scritta in Atomic diventa:

che può anche essere scritta senza problemi in questo modo:

Inoltre è possibile aggiungere in modo chiaro altri argomenti supportati dalla funzione:

è anche possibile non specificare degli argomenti (anche se fondamentali), ad esempio:

disegnerà un cerchio blu di una dimensione imprecisata in un punto imprecisato.

disegnerà un cerchio nero (colore di base) di una dimensione imprecisata in un punto imprecisato.

Una funzione può anche avere zero argomenti supportati (nessun argomento è richiesto per il suo funzionamento).

Alcune funzioni non restituiscono alcun valore ma svolgono semplicemente un lavoro (ad esempio disegna cerchio) altre invece,

tutte quelle che iniziano con “ottieni”, restituiscono un risultato che può essere memorizzato in una variabile (ad esempio ottieni la

media tra).

L’argomento di una funzione può essere un numero reale, una stringa (riga di testo), un’espressione, una variabile o una costante.

Gli argomenti di una funzione sulla stessa linea possono anche essere racchiusi nella stessa parentesi e separati da una virgola e

uno spazio. Inoltre il simbolo “-->” si può omettere. Esempio:

Questa sintassi è valida e si avvicina di più ai linguaggi di programmazione più avanzati.

Page 21: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 21

Funzioni di disegno di forme geometriche

Le funzioni di disegno sono le più facili da apprendere, le uniche nozioni richieste per il loro utilizzo sono le basi della geometria

euclidea e del piano cartesiano. Inoltre offrono un primo approccio molto concreto al linguaggio.

disegna cerchio --> (X:) (Y:) (RAGGIO:) (COLORE:) (TRASPARENZA:) (SOLO CONTORNO:)

disegna ellisse --> (X 1:) (Y 1:) (X 2:) (Y 2:) (COLORE:) (TRASPARENZA:) (SOLO CONTORNO:)

disegna rettangolo --> (X:) (Y:) (BASE:) (ALTEZZA:) (COLORE:) (TRASPARENZA:) (SOLO CONTORNO:)

disegna linea --> (X 1:) (Y 1:) (X 2:) (Y 2:) (SPESSORE:) (COLORE:) (TRASPARENZA:)

disegna punto --> (X:) (Y:) (COLORE:) (TRASPARENZA:)

disegna poligono regolare --> (X:) (Y:) (NUMERO LATI:) (RAGGIO:) (ROTAZIONE:) (COLORE:) (TRASPARENZA:) (SOLO CONTORNO: )

disegna triangolo --> (X 1:) (Y 1:) (X 2:) (Y 2:) (X 3:) (Y 3:) (COLORE:) (TRASPARENZA:) (SOLO CONTORNO:)

Ecco un esempio in cui vengono utilizzate queste funzioni:

Page 22: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 22

Alcuni aspetti sul disegno che richiedono un chiarimento:

1) l’origine della finestra (il piano cartesiano) come in altri ambiti informatici è in alto a sinistra e non in basso a sinistra come da

convenzione matematica. Questo ribaltamento dell’asse y è comodo soprattutto quando si lavora con il testo.

2) L’unità per esprimere le dimensioni in Atomic è una sola: il pixel. La griglia standard è composta da quadratini di 25 pixel.

3) l’argomento TRASPARENZA deve contenere un valore compreso tra 0 e 1.

0=completamente trasparente, 1=completamente visibile, 0.5=mezzo trasparente. Questo range di valori (logica fuzzy) è molto

utilizzato sia in Atomic che in generale nell’informatica.

4) I colori visualizzati sul monitor in realtà sono numeri ma sono esprimibili tramite costanti (rosso, verde, giallo, blu, ecc… ) vedi la

sezione COSTANTI per la lista di tutti i colori disponibili. È anche possibile creare colori personalizzati (vedi più avanti).

5) Se si utilizza gli eventi, tutte le funzioni di disegno vanno utilizzate nell’evento CICLO CONTINUO. Questo può sembrare contro

intuitivo ma la spiegazione è semplice: lo schermo del computer è come una lavagna che ogni trentesimo di secondo viene

cancellata. Se ciò non avvenisse sarebbe impossibile creare l’illusione delle animazioni. Immaginate di disegnare molte cose sempre

sullo stesso foglio e sempre nella stessa posizione, dopo un po’ quello che apparirà sarà solo un ammasso di colore scuro e informe!

Asse X

Ass

e Y

200

100 400

300 Y

X

LARGHEZZA

ALTEZZA

Page 23: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 23

Funzioni di disegno del testo

Queste funzioni servono per visualizzare dei testi all’interno del programma che si vuole creare. La funzione principale è disegna

testo; questa funzione può essere molto semplice e immediata da utilizzare ma può anche essere arricchita da molti argomenti per

personalizzare la visualizzazione del testo. Per introdurla è consigliabile utilizzare solo gli argomenti X, Y, TESTO e COLORE .

disegna testo --> (X:) (Y:) (TESTO:) (SCALA:) (COLORE:) (TRASPARENZA:) (ROTAZIONE:) (LARGHEZZA CASELLA:) (INTERLINEA:)

(ALLINEAMENTO ORIZZONTALE: ) (ALLINEAMENTO VERTICALE: ) (STILE: )

L’argomento TESTO a differenza di quelli visti fino ad ora deve essere una stringa ovvero un testo racchiuso tra i simboli “ “.Se non

si utilizzano questi simboli il programma cercherà di scrivere il valore di una variabile o una costante che abbia quel nome.

Gli altri argomenti sono interessanti per la realizzazione di “impaginazioni” elaborate, utili all’introduzione del web design,

mostrando come l’utilizzo degli editor testuali (in alternativa agli editor visuali) permetta il pieno controllo della grafica.

Esempio semplice per introdurre la funzione:

Esempio più complesso:

Page 24: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 24

ottieni stile testo --> (CARATTERE: ) (DIMENSIONI: ) (GRASSSETTO: ) (CORSIVO: )

La funzione ottieni stile testo permette di definire uno stile partendo da un carattere tipografico (vedi sezione COSTANTI, per la

lista dei caratteri disponibili)

Esempio:

stile_fumetto nell’esempio è la variabile al cui interno viene memorizzato lo stile (è possibile usare qualsiasi nome valido come

nome per la variabile). Il simbolo = che precede la funzione indica l’assegnazione di un dato alla variabile, in questo caso un dato

complesso ottenuto da una funzione.

Page 25: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 25

Funzioni di disegno delle immagini

Con la funzione disegna immagine è possibile disegnare qualsiasi immagine di formato .png e .jpg.

Queste immagini per poter essere disegnate vanno inserite all’interno della cartella risorse. È possibile accedere a questa cartella

dal mini editor cliccando sull’icona Apri cartella risorse.

In alternativa è possibile accedere alla cartella digitando %LOCALAPPDATA%/Atomic/ sulla barra di Explorer.

Una volta entrati nella cartella è possibile visualizzare il vero indirizzo cliccando sulla barra (l’indirizzo varia a seconda del computer;

nell’esempio è C:\Users\BerGAME\AppData\Local\Atomic); una volta visualizzato è possibile copiarlo e creare un comodo

collegamento sul desktop (desktop -> click destro -> nuovo -> collegamento).

Page 26: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 26

Una volta inserita un’immagine nella cartella è possibile utilizzarla in Atomic utilizzando la funzione ottieni immagine:

ottieni immagine --> (NOME: ) (ORIGINE X:) (ORIGINE Y:)

Esempio, dopo aver inserito l’immagine fotografia_bella.jpg nella cartella immagini di Atomic:

foto nell’esempio è la variabile al cui interno viene memorizzata l’immagine (è possibile usare qualsiasi nome valido come nome per

la variabile). Il simbolo = che precede la funzione indica l’assegnazione di un dato alla variabile, in questo caso un dato complesso

ottenuto da una funzione.

gli argomenti ORIGINE X e ORIGINE Y rappresentano il punto d’origine relativo da cui l’immagine viene disegnata. Normalmente è

l’angolo in alto a sinistra ovvero x 0,y 0. Se per esempio la vostra immagine è larga 300 pixel e lunga 200 pixel e volete impostare

l’origine al centro l’origine sarà x 150, y 100 .

Esempio:

Impostare l’origine è utile quando si vuole giocare con la rotazione e la scala delle immagini.

Questa figura dovrebbe chiarire il concetto:

È anche possibile organizzare le immagini in cartelle, ad esempio se creo la cartella immagini_gatti dentro la cartella Immagini e

all’interno ci inserisco l’immagine gatto.jpg, posso richiamare l’immagine gatto.jpg in questo modo:

Una volta ottenuta una variabile contenente l’immagine desiderata è possibile disegnarla usando la funzione disegna immagine:

disegna immagine --> (IMMAGINE: ) (X:) (Y:) (SCALA ASSE X:) (SCALA ASSE Y:) (COLORE:) (TRASPARENZA:) (ROTAZIONE:)

Esempio:

Page 27: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 27

Se si inseriscono troppe immagini è possibile che non ci sia abbastanza spazio disponibile per memorizzarle tutte

contemporaneamente (soprattutto se grandi). Se questo succede il programma si arresta (crash per “out of memory”).

Per evitare ciò è possibile eliminare dalla memoria un’immagine che non ci serve più con la funzione elimina immagine.

elimina immagine --> (NOME: )

Esempio:

elimina immagine --> (NOME: foto)

Se un’immagine non esiste più o non è mai esistita (per esempio se si sbaglia a digitarne il nome) ma tentiamo comunque di

disegnarla, al suo posto verrà visualizzata un’immagine alternativa con scritto “immagine non trovata!”.

È importante inserire le immagini che ci servono una sola volta per ogni immagine; il modo più facile per farlo è inserirle

nell’evento INIZIA. Se si vuole inserire un’immagine nell’evento CICLO CONTINUO bisogna stare attenti che l’immagine venga

inserita una sola volta altrimenti il programma terminerà in poco tempo visualizzando l’errore “out of memory” poiché ogni

trentesimo di secondo verrà inserita un’immagine identica nella memoria!

Page 28: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 28

Caricare immagini da internet

Oltre alle immagini nella cartella risorse è possibile caricare e disegnare immagini presenti sul web (rete internet).

Questa pratica è l’ideale per realizzare progetti che si vogliono condividere, poiché in questo modo basta passare soltanto il codice

(file di testo .txt) evitando di passare tutte le immagini utilizzate.

Per utilizzare un’immagine presente sul web bisogna precedere l’indirizzo dalla parola chiave internet/ ed escludere dall’url il

protocollo (“http://” o “https://”) e l’eventuale “www.”.

La sintassi sarà quindi: (NOME: internet/...indirizzo… )

Se ad esempio si vuole utilizzare l’immagine all’indirizzo https://upload.wikimedia.org/wikipedia/it/8/88/Gatto_Rosso.JPG:

Il codice da utilizzare sarà:

Page 29: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 29

Disegnare immagini animate

Per inserire immagini animate dobbiamo utilizzare una striscia (strip) di immagini in sequenza; ad esempio questa, la sequenza di

un personaggio che cammina:

Se abbiamo un’animazione in formato “.gif” per utilizzarla dobbiamo prima trasformarla in una striscia in formato “.png”. Per farlo

è possibile utilizzare vari tool online, ad esempio: https://xattools.firebaseapp.com/ConvertAnimation.html

Una volta ottenuta la striscia basta specificare il numero di fotogrammi che contiene tramite l’argomento FOTOGRAMMI della

funzione ottieni immagine.

Tramite l’argomento VELOCITA ANIMAZIONE della funzione disegna immagine è possibile definire la velocità dello scorrimento dei

fotogrammi in fotogrammi al secondo.

Con questa tecnica potete modificare velocemente animazioni esistenti o creare immagini animate da zero con semplici programmi

di grafica (anche con Microsoft Paint!)

Esempio completo:

Page 30: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 30

Funzioni di casualità

ottieni uno a caso di questi valori --> (VALORE 1:) (VALORE 2:) (VALORE 3:) … (VALORE 8:)

ottieni un valore compreso tra questi --> (VALORE 1:) (VALORE 2:)

ottieni un valore intero compreso tra questi --> (VALORE 1:) (VALORE 2:)

attiva casualità diversa per ogni avvio

Queste funzioni permettono di assegnare valori casuali alle variabili. La funzione attiva casualità diversa per ogni avvio permette di

ottenere una casualità totale: se questa funzione non viene utilizzata ogni volta che si avvia un determinato programma (sempre lo

stesso, con nessuna modifica) la generazione casuale è sempre la stessa.

Esempio:

Supponiamo che con questa riga di codice la variabile test assuma il valore 8. Ogni volta che il programma verrà avviato il risultato

sarà sempre 8.

Invece scrivendo:

Verosimilmente può succedere questo: la prima volta che il programma verrà avviato la variabile test assumerà il valore 8, la

seconda volta 5, la terza 7, ecc..

Page 31: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 31

Funzioni matematiche, trigonometriche e vettoriali

Queste funzioni sono utili per esercizi matematici e geometrici applicabili anche a materie come il disegno e la musica.

ottieni l’arrotondamento per difetto di --> (VALORE:)

ottieni l’arrotondamento per eccesso di --> (VALORE:)

ottieni il valore intero di --> (VALORE:)

ottieni il valore decimale di --> (VALORE:)

ottieni il valore assoluto di --> (VALORE:)

ottieni il segno di --> (VALORE:)

ottieni il massimo tra --> (VALORE 1:) (VALORE 2:) (VALORE 3:) … (VALORE 8:)

ottieni il minimo tra --> (VALORE 1:) (VALORE 2:) (VALORE 3:) … (VALORE 8:)

ottieni la media tra --> (VALORE 1:) (VALORE 2:) (VALORE 3:) … (VALORE 8:)

ottieni il valore più vicino alla media tra --> (VALORE 1:) (VALORE 2:) (VALORE 3:) … (VALORE 8:)

ottieni l’interpolazione lineare tra --> (VALORE 1:) (VALORE 2:) (PERCENTUALE:)

ottieni il valore limitato della variabile tra --> (VALORE 1:) (VALORE 2:) (VARIABILE: )

ottieni la funzione esponenziale di --> (VALORE:)

ottieni il logaritmo naturale di --> (VALORE:)

ottieni il logaritmo in base 2 di --> (VALORE:)

ottieni il logaritmo in base 10 di --> (VALORE:)

ottieni il logaritmo in base n di --> (VALORE:) (BASE:)

ottieni la potenza di --> (VALORE:) (ESPONENTE:)

ottieni il quadrato di --> (VALORE:)

ottieni la radice quadrata di --> (VALORE:)

ottieni il seno di --> (VALORE:) (UNITA:)

ottieni il coseno di --> (VALORE:) (UNITA:)

ottieni la tangente di --> (VALORE:) (UNITA:)

ottieni l’arcoseno di --> (VALORE:) (UNITA:)

ottieni l’arcocoseno di --> (VALORE:) (UNITA:)

ottieni l’arcotangente di --> (VALORE:) (UNITA:)

Page 32: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 32

ottieni l’arcotangente 2 di --> (VALORE 1:) (VALORE 2:) (UNITA:)

L’argomento UNITA può essere la stringa “radianti” o la stringa “gradi”

ottieni il valore convertito da radianti a gradi di --> (VALORE:)

ottieni il valore convertito da gradi a radianti di --> (VALORE:)

ottieni la componente x del vettore dato angolo e lunghezza --> (LUNGHEZZA:) (ANGOLO:)

ottieni la componente y del vettore dato angolo e lunghezza --> (LUNGHEZZA:) (ANGOLO:)

ottieni distanza tra due punti --> (X1:) (Y1:) (X2:) (Y2:)

ottieni direzione tra due punti --> (X1:) (Y1:) (X2:) (Y2:)

ottieni differenza angolare tra --> (VALORE 1:) (VALORE 2:)

Page 33: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 33

Funzioni sul testo (stringhe di testo)

Queste funzioni servono per manipolare i testi (stringhe di testo).

ottieni numero da testo --> (TESTO: )

ottieni il simbolo di un testo a una determinata posizione --> (TESTO: ) (POSIZIONE: )

ottieni il numero di parole specificate in un testo --> (TESTO:) (PAROLA:)

ottieni lunghezza testo --> (TESTO:)

ottieni testo con parola sostituita --> (TESTO:) (PAROLA:) (NUOVA PAROLA: )

ottieni testo con parola sostituita solo la prima volta --> (TESTO:) (PAROLA:) (NUOVA PAROLA: )

ottieni testo con altro testo inserito alla fine --> (TESTO: ) (TESTO INSERITO: )

ottieni testo con inserito altro testo a una determinata posizione --> (TESTO: ) (TESTO INSERITO: ) (POSIZIONE:)

inserire espressioni in una stringa di testo

Utilizzando i simboli < > per racchiudere il nome di una variabile o una qualsiasi espressione il suo valore verrà rappresentato

all’interno della stringa di testo.

Esempio:

Questo codice disegnerà la stringa “Ciao! Io ho 10 anni!”

NB: Questa funzionalità sostituisce la funzione ottieni testo combinato, obsoleta dalla versione 1.06 e in iter di deprecazione.

Testo a capo

Se si vuole ottenere del testo a capo in una stringa è possibile scrivere al suo interno (a capo).

Esempio:

Page 34: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 34

Funzioni sul colore

Queste funzioni sono utili per creare colori personalizzati e ad introdurre i sistemi di colore RGB e HSV.

ottieni colore rgb --> (ROSSO:) (VERDE:) (BLU:)

ottieni colore hsv --> (TINTA:) (SATURAZIONE:) (LUMINOSITA:)

Gli argomenti devono essere valori interi compresi tra 0 e 255

È anche possibile mischiare colori tra loro per ottenerne di nuovi in modo intuitivo.

ottieni miscela colori da --> (COLORE 1: ) (COLORE 2: ) (VALORE: )

L’argomento VALORE deve essere compreso tra 0 e 1: 0 = COLORE 1, 1 = COLORE 2, 0.5 = miscela al 50% tra i due colori.

Esempio:

Page 35: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 35

Funzioni sull’audio

La funzione principale per quanto riguarda l’audio è suona che permette di emettere un suono impostandone anche il volume

(inteso come gain) e l’intonazione. L’argomento ripeti suono permette di ripetere il suono all’infinito (loop) se impostato su vero.

suona --> (SUONO:) (VOLUME:) (INTONAZIONE:) (RIPETI SUONO: )

è possibile utilizzare qualsiasi numero per l’intonazione ma è consigliabile utilizzare le note musicali (vedi sezione costanti).

Come suoni è possibile utilizzare dei suoni già integrati in Atomic (vedi sezione costanti) o utilizzare dei suoni personalizzati.

Esempio completo:

Per utilizzare un suono o una musica presente sul web bisogna precedere l’indirizzo dalla parola chiave internet/ ed escludere

dall’url il protocollo (“http://” o “https://”) e l’eventuale “www.”.

Attualmente sono supportati solo i suoni in formato .ogg

Esempio:

Per un maggiore controllo dello streaming è disponibile la funzione ottieni suono per caricare il suono e memorizzarlo in una

variabile. In questo modo il suono partirà senza ritardi e sarà possibile modificarlo durante l’esecuzione.

Esempio:

Altre funzioni sull’audio sono:

interrompi suono --> (SUONO: )

interrompi tutti i suoni

imposta volume principale --> (VOLUME:)

1=massimo, 0=muto

ottieni volume principale

ottieni valore volume di --> (SUONO:)

ottieni valore intonazione di --> (SUONO:)

ottieni risultato controllo se sta suonando --> (SUONO:)

modifica suono in esecuzione --> (SUONO:) (INTONAZIONE:) (VOLUME:)

Page 36: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 36

È possibile suonare semplici melodie tramite la funzione suona melodia.

suona melodia --> (SUONO:) (NOTE:) (RIPETI MELODIA:) (VOLUME:) (BPM:)

La sintassi da utilizzare per scrivere una melodia è la seguente: (NOTE: nota - nota - nota - )

Ogni trattino divide un battito (NB: battito è diverso da battuta musicale!)

Esempio:

Per inserire una pausa in un battito è possibile inserire uno spazio vuoto.

Esempio:

È possibile inserire più pause in modo da rendere più precisa la disposizione temporale delle note.

Esempio:

Se una linea è troppo lunga è possibile utilizzare i simboli >> per andare a capo.

Esempio:

Per modificare la velocità d’esecuzione di una melodia si può modificare l’argomento BPM (battiti per minuto).

Tramite l’argomento SUONO si indica il suono da utilizzare come strumento musicale.

Tramite l’argomento RIPETI MELODIA si indica se la melodia deve essere ripetuta all’infinito (vero) o se deve essere eseguita una

sola volta (falso).

Tramite l’argomento VOLUME si indica il volume (inteso come gain) con il quale verrà suonata la melodia (1=massimo, 0=muto).

Esempio completo:

Questa funzione permette di comporre musica velocemente (per quanto semplice). Inoltre offre una visualizzazione chiara ed

immediata della disposizione temporale delle note.

Page 37: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 37

Funzioni sulle interfacce

In Atomic esistono degli oggetti speciali d’interfaccia grafica per l’utente (Conosciuta anche come GUI – Graphical User Interface).

Questi oggetti semplificano la programmazione dell’interazione utente e sono molto utili per creare applicazioni che manipolano e

controllano dati.

Questi oggetti funzionano tutti in modo simile:

- si usa una funzione per creare l’interfaccia necessaria (solitamente nell’evento INIZIA)

- si utilizza il NOME dell’interfaccia per ottenere il valore di cui permette il controllo da parte dell’utente.

Le interfacce disponibili sono:

Tasti virtuali

Interruttori

Caselle di spunta

Barre di controllo

Gruppi di opzioni

Caselle di testo

N.B. se volete create un’interfaccia nell’evento CICLO CONTINUO fate attenzione che venga creata una sola volta inserendo la

funzione all’interno di una condizione.

Esempio:

Page 38: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 38

Tasti virtuali

I tasti virtuali sono degli oggetti speciali disegnati all’interno della finestra. Questi tasti possono avere caratteristiche grafiche

personalizzate (colore, testo, dimensioni…) e rendono possibile programmare delle azioni tramite l’utilizzo del mouse: ad esempio

emettere un suono, disegnare una forma o svolgere qualsiasi altra funzione o gruppo di funzioni.

Questo tipo di interfaccia è quella graficamente più versatile, nonché la più comune.

Per creare un tasto virtuale si utilizza la funzione crea tasto virtuale:

crea tasto virtuale --> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (COLORE SFONDO: ) (COLORE TESTO: ) (TRASPARENZA: ) (LARGHEZZA: )

(ALTEZZA: ) (CLASSE:)

L’argomento ETICHETTA è una stringa di testo che viene disegnata all’interno del tasto, questa può essere diversa dal nome.

L’argomento CLASSE è utile per definire la grafica di tasti simili usando un solo argomento (vedi poco più avanti).

Per utilizzare un tasto virtuale si utilizza il suo NOME come una variabile.

La variabile (che viene creata automaticamente assieme al tasto) contiene uno di questi valori:

è cliccato l’utente sta premendo il tasto (pressione continua)

non è cliccato l’utente non sta premendo il tasto

è stato cliccato l’utente ha premuto il tasto (singolo click)

Esempio:

Questo esempio disegna un cerchio se il tasto viene cliccato.

Quando bisogna creare molti tasti simili può essere utile creare una classe di tasti per definire una sola volta il loro aspetto e la loro

posizione. Questa funzione rende molto più veloce la scrittura del codice e la sua modifica, inoltre lo rende più snello e leggibile.

crea classe di tasti --> (NOME:) (ETICHETTA: ) (X: ) (Y: ) (COLORE SFONDO: ) (COLORE TESTO: ) (TRASPARENZA: ) (LARGHEZZA: )

(ALTEZZA:)

Esempio:

Page 39: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 39

Interruttori

I Gli interruttori sono degli oggetti speciali disegnati all’interno della finestra; possono avere un colore personalizzato e

un’etichetta descrittiva.

Il loro funzionamento è simile a quello dei tasti virtuali: possono essere cliccati e ad ogni click l’interruttore passa da attivo a

disattivo o viceversa.

Per creare un interruttore si utilizza la funzione crea interruttore:

crea interruttore --> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (COLORE: ) (VALORE PREDEFINITO: )

L’argomento ETICHETTA è una stringa di testo che viene disegnata a destra dell’interruttore, questa può essere diversa dal nome.

L’argomento VALORE PREDEFINITO indica lo stato dell’interruttore al momento della sua creazione (0 o 1, vedi poco più sotto).

Per utilizzare un interruttore si utilizza il suo NOME come una variabile.

La variabile (che viene creata automaticamente assieme all’interruttore) contiene un valore booleano: 1 (vero, ON) o 0 (falso, OFF)

Esempio:

OFF, disattivo, 0

ON, attivo, 1

Questo esempio disegna un cerchio se l’interruttore è attivo.

Page 40: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 40

Caselle di spunta

Le caselle di spunta sono degli oggetti speciali disegnati all’interno della finestra; possono avere un un’etichetta descrittiva.

Il loro funzionamento è del tutto identico a quello degli interruttori: possono essere cliccati e ad ogni click la casella passa da attiva

a disattiva o viceversa. Le caselle di spunta si differenziano dagli interruttori solo per l’aspetto grafico; di solito vengono utilizzate

per settare impostazioni minori rispetto a quelle controllate dagli interruttori.

Per creare una casella si spunta si utilizza la funzione crea casella di spunta:

crea casella di spunta --> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (COLORE: ) (VALORE PREDEFINITO: )

L’argomento ETICHETTA è una stringa di testo che viene disegnata a sinistra della casella, questa può essere diversa dal nome.

L’argomento VALORE PREDEFINITO indica lo stato della casella al momento della sua creazione (0 o 1, vedi poco più sotto).

Per utilizzare una casella di spunta si utilizza il suo NOME come una variabile.

La variabile (che viene creata automaticamente assieme alla casella) contiene un valore booleano: 1 (vero, ON) o 0 (falso, OFF)

Esempio:

OFF, disattiva, 0

ON, attiva, 1

Questo esempio disegna un cerchio se la casella ha il segno di spunta.

Page 41: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 41

Barre di controllo

Le barre di controllo sono degli oggetti speciali disegnati all’interno della finestra; possono avere un colore personalizzato e

un’etichetta descrittiva.

Le barre di controllo permettono di selezionare tramite il mouse un valore compreso tra un massimo e un minimo specificati.

Le barre di controllo possono essere orizzontali o verticali in base alla funzione usata:

crea barra di controllo orizzontale --> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (LARGHEZZA: ) (COLORE: )

(VALORE MINIMO: ) (VALORE MASSIMO: ) (VALORE PREDEFINITO: )

crea barra di controllo verticale --> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (ALTEZZA: ) (COLORE: )

(VALORE MINIMO: ) (VALORE MASSIMO: ) (VALORE PREDEFINITO: )

Esempio:

Questo esempio modifica il raggio di un cerchio in funzione della barra.

In base alla funzione utilizzata le barre possono avere una LARGHEZZA o

un’ALTEZZA personalizzata.

L’argomento ETICHETTA è una stringa di testo che viene disegnata sotto

la barra, questa può essere diversa dal nome.

L’argomento VALORE PREDEFINITO indica il valore della barra al

momento della sua creazione.

Per utilizzare una barra si utilizza il suo NOME come una variabile.

La variabile (che viene creata automaticamente assieme all’interruttore)

contiene un valore numerico.

Page 42: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 42

Gruppi di opzioni

I gruppi di opzioni sono degli oggetti speciali disegnati all’interno della finestra; possono avere un un’etichetta descrittiva.

I gruppi di opzioni sono formati da più opzioni selezionabili. A differenza delle caselle di spunta i gruppi di opzioni permettono di

selezionare una sola casella per gruppo.

Per creare un gruppo di opzioni si utilizza la funzione crea gruppo di opzioni:

crea gruppo di opzioni --> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (COLORE: ) (VALORE 1:) … (VALORE 8:) (VALORE PREDEFINITO: )

L’argomento ETICHETTA è una stringa di testo che viene disegnata a sinistra della casella, questa può essere diversa dal nome.

L’argomento VALORE PREDEFINITO indica l’opzione selezionata al momento della sua creazione (può essere qualsiasi tipo di dato,

vedi poco più sotto).

È possibile specificare fino a 8 valori (opzioni) per ogni gruppo; questi valori possono essere numeri o stringhe di testo.

Per utilizzare un gruppo di opzioni si utilizza il suo NOME come una variabile.

La variabile (che viene creata automaticamente assieme al gruppo di opzioni) contiene il valore dell’opzione selezionata.

Esempio:

Questo esempio disegna una forma geometrica colorata in base all’opzione selezionata.

Page 43: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 43

Caselle di testo

Le caselle di testo sono degli oggetti speciali disegnati all’interno della finestra; possono avere un un’etichetta descrittiva e il colore

del testo personalizzato.

Le caselle di testo permettono di inserire dati testuali durante l’esecuzione del programma. All’interno di una casella si può anche

selezionare, copiare e incollare testo.

Per creare una casella di testo si utilizza la funzione crea casella di testo:

crea casella di testo--> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (COLORE: ) (TESTO: ) (LARGHEZZA:)

Oppure, se si desidera una casella di testo con più linee, la funzione crea casella di testo multilinea:

crea casella di testo multilinea --> (NOME: ) (ETICHETTA: ) (X: ) (Y: ) (COLORE: ) (TESTO: ) (LARGHEZZA:) (ALTEZZA)

L’argomento ETICHETTA è una stringa di testo che viene disegnata a sinistra della casella, questa può essere diversa dal nome.

L’argomento TESTO indica il testo predefinito della casella al momento della sua creazione.

L’argomento COLORE indica il colore del testo.

Per utilizzare una casella di testo si utilizza il suo NOME come una variabile.

La variabile (che viene creata automaticamente assieme alla casella) contiene la stringa di testo contenuta all’interno della casella.

Esempio:

Questo esempio disegna il testo inserito dall’utente nella casella applicando un semplice effetto grafico di sfocatura da movimento

in tempo reale.

Page 44: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 44

È anche possibile impostare il testo all’interno di una casella:

imposta testo in una casella di testo --> (NOME: ) (TESTO: )

Esempio:

Questo esempio cancella il testo inserito dall’utente quando viene premuto il tasto invio.

Eliminare interfacce È possibile rimuovere qualsiasi interfaccia precedentemente creata (tasti virtuali, interruttori, caselle di spunta, gruppi di opzioni,

barre di controllo e caselle di testo) tramite la funzione distruggi interfaccia.

distruggi interfaccia --> (NOME: )

Esempio:

NB: Questa funzione sostituisce la funzione distruggi tasto virtuale, obsoleta dalla versione 1.06 e in iter di deprecazione.

Page 45: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 45

Funzioni sulle date e sugli orari

Tramite queste funzioni è possibile ottenere date, informazioni e calcoli tra date e orari.

Questa è la funzione che permette di ottenere la data attuale come valore numerico

(è un valore numerico che può essere utilizzato dal computer per fare calcoli):

ottieni data attuale

Questa è la funzione che permette di ottenere la data attuale come stringa di testo:

ottieni data attuale come testo

Il formato con cui verrà visualizzata sarà: “gg/mm/aaaa – hh:mm:ss”

Esempio:

Queste sono le funzioni che permettono di ricavare un elemento (secondo, minuto, giorno, ecc..) dalla data attuale:

ottieni secondo attuale

ottieni minuto attuale

ottieni ora attuale

ottieni giorno attuale

ottieni nome del giorno attuale

ottieni mese attuale

ottieni nome del mese attuale

ottieni anno attuale

Queste funzioni sono utili per rappresentare una data nel modo che si preferisce, ad esempio: “Giovedì 10 Settembre 2020”.

Esempio:

Per ottenere un valore numerico che rappresenta una data è possibile utilizzare la funzione ottieni una data:

ottieni una data --> (GIORNO: ) (MESE: ) (ANNO: ) (ORA: ) (MINUTO: ) (SECONDO: )

Gli argomenti non specificati conterranno il valore 0.

Per controllare se una data è oggi:

ottieni risultato controllo se la data è oggi --> (DATA: )

Restituisce 1 (vero) se la data scritta come argomento è oggi o 0 (falso) se la data non è oggi.

Page 46: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 46

Esempio:

Per ricavare un elemento (secondo, minuto, giorno, ecc..) da una qualsiasi data è possibile utilizzare la funzione ottieni elemento

da questa data:

ottieni elemento da questa data --> (ELEMENTO: ) (DATA: )

L’argomento DATA richiede una variabile contenente una data. Questa variabile deve essere stata creata precedentemente tramite

la funzione ottieni data attuale o ottieni una data.

L’argomento ELEMENTO definisce cosa vogliamo ottenere dalla data.

Le stringhe supportate sono:

“secondo”, “minuto”, “ora”, “giorno”, “nome del giorno”, “settimana”, “mese”, “nome del mese”, “anno”.

Esempio:

Per confrontare due date è possibile utilizzare la funzione ottieni risultato confronto date:

ottieni risultato confronto date --> (DATA 1: ) (DATA 2: )

Questa funzione restituisce una di queste stringhe:

“DATA 1 è precedente a DATA 2”, “DATA 1 è successiva a DATA 2”, “DATA 1 è uguale a DATA 2”.

È possibile ottenere la differenza tra due date nell’unità che si preferisce tramite la funzione ottieni differenza tra due date.

ottieni differenza tra due date --> (DATA 1: ) (DATA 2: ) (UNITA: )

Per definire un’ unità è possibile utilizzare le seguenti stringhe:

“in secondi”, “in minuti”, “in ore”, “in giorni”, “in settimane”, “in mesi”, “in anni”.

Le unità incomplete verranno riportate come frazioni.

Page 47: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 47

Funzioni sui file di testo

Con Atomic è possibile creare, leggere e modificare file di testo (txt, csv, html, css, ini… ecc.) Questi file vengono creati, letti e

modificati nella cartella delle risorse di Atomic (%LOCALAPPDATA%/Atomic)

scrivi su questo file --> (NOME:) (TESTO:)

scrivi una nuova linea su questo file --> (NOME:) (TESTO:)

Con queste funzioni è possibile scrivere su un file di testo inserendo del nuovo testo alla fine del documento. Se il file non esiste

verrà creato automaticamente.

sovrascrivi su questo file --> (NOME:) (TESTO:)

Con questa funzione è possibile sovrascrivere su un file di testo (il testo precedente viene cancellato). Se il file non esiste verrà

creato automaticamente.

ottieni testo da questo file --> (NOME:)

Con questa funzione è possibile ottenere una stringa di testo contenente l’intero testo del file.

ottieni una riga di testo da questo file --> (NOME:) (RIGA:)

Con questa funzione è possibile ottenere la riga di testo specificata del file.

Esempio:

.

È anche possibile memorizzare il valore delle variabili all’interno del file di testo. Esempio:

Page 48: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 48

INTRODUZIONE ALLA PROGRAMMAZIONE AD OGGETTI

Atomic è un linguaggio di programmazione orientato agli oggetti .

Il paradigma ad oggetti offre diversi vantaggi:

fornisce un sistema “concreto” che fa riferimento al mondo reale

è facile da gestire e mantenere

favorisce la modularità e il riuso del codice

Quando si parla di oggetti è importante distinguere due elementi fondamentali:

oggetti

esemplari di oggetti (conosciuti anche come istanze, dalla mal traduzione di instance)

Un oggetto è astratto, ovvero è la descrizione generica di un tipo di esemplare.

Un esemplare è la concretizzazione di un oggetto.

Un elemento può quindi essere un oggetto o un esemplare.

Esempio:

Oggetto: cane

Esemplare: Fuffy

L’oggetto cane è la descrizione generica di un cane.

L’esemplare Fuffy è un esemplare di cane, unico, identificabile e concreto.

Fuffy e cane sono elementi.

ELEMENTI

Page 49: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 49

EREDITARIETA’ E GERARCHIA

Per ogni oggetto si possono definire delle caratteristiche, queste caratteristiche sono ereditarie.

Gli esemplari ereditano le caratteristiche dell’oggetto a cui appartengono.

Esempio: se la caratteristica COLORE dell’oggetto gatto è arancione tutti gli esemplari di gatto saranno (di base) arancioni.

A loro volta gli oggetti possono appartenere ad altri oggetti sempre più generici ed ereditarne le loro caratteristiche.

In questi casi l’oggetto contenuto viene chiamato oggetto figlio e il contenitore oggetto genitore.

Ad esempio l’oggetto cane può appartenere all’oggetto canidi; a sua volta canidi può appartenere all’oggetto mammiferi; mammiferi può appartenere ad animali, ecc...

ESEMPLARI UNICI

Il sistema gerarchico oggetti-esemplari è molto comodo e potente ma non sempre è utile, perciò un esemplare può anche essere unico ovvero non ereditare alcuna caratteristica ma essere definito interamente durante la sua stessa creazione.

LE CARATTERISTICHE DI OGGETTI ED ESEMPLARI

Gli oggetti/esemplari possono avere le caratteristiche qui sotto riportate.

Queste caratteristiche coincidono con le loro variabili locali integrate nonché con gli argomenti delle funzioni a loro dedicate.

NOME: indica il nome dell’esemplare o dell’oggetto *default: nome casuale alfanumerico]

OGGETTO: indica l’oggetto a cui appartiene l’esemplare *default: nessuno]

GENITORE: indica l’oggetto genitore *default: nessuno]

X: indica la posizione sull’asse x *default: 0+

Y: indica la posizione sull’asse y *default: 0+

Z: indica la profondità, una profondità minore o uguale a 0 imposta l’oggetto al di sotto della griglia. *default: -1]

IMMAGINE: indica l’immagine dell’oggetto/esemplare. *default: immagine predefinita]

SCALA ASSE X: indica la scala dell’immagine sull’asse x *default: 1+

SCALA ASSE Y: indica la scala dell’immagine sull’asse y *default: 1+

TRASPARENZA: indica la trasparenza dell’immagine *default: 1+

COLORE: indica il colore (blend) dell’immagine *default: bianco+

VELOCITA: indica la velocità in px/step dell’oggetto/esemplare *default: 0+

DIREZIONE: indica la direzione in gradi dell’oggetto/esemplare *default: 0+

ROTAZIONE: indica la rotazione in gradi dell’immagine dell’oggetto/esemplare *default: 0+

Page 50: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 50

Funzioni di base sugli oggetti

CREARE OGGETTI ED ESEMPLARI

Per creare oggetti bisogna utilizzare la funzione crea un oggetto:

crea un oggetto --> (NOME:) (GENITORE:) (X:) (Y:) (Z: ) (SCALA ASSE X:) (SCALA ASSE Y:) (IMMAGINE:) (TRASPARENZA:) (COLORE:)

(VELOCITA:) (DIREZIONE:) (ROTAZIONE:)

Come per tutte le funzioni, è possibile omettere qualsiasi argomento lasciando intatto il valore di default, tuttavia omettendo il nome non sarà possibile utilizzare l’oggetto creato.

Esempio:

Per creare esemplari bisogna utilizzare la funzione crea un esemplare:

crea un esemplare --> (NOME:) (OGGETTO:) (X:) (Y:) (Z: ) (SCALA ASSE X:) (SCALA ASSE Y:) (IMMAGINE:) (TRASPARENZA:) (COLORE:)

(VELOCITA:) (DIREZIONE:) (ROTAZIONE:)

Creando un esemplare è possibile aggiungere caratteristiche e modificare le caratteristiche ereditate.

Esempi:

MODIFICARE UN ELEMENTO (OGGETTO/ESEMPLARE)

Per modificare un elemento (un oggetto o un esemplare) bisogna utilizzare la funzione modifica un elemento.

modifica un elemento --> (NOME:) (X:) (Y:) (Z: ) (SCALA ASSE X:) (SCALA ASSE Y:) (IMMAGINE:) (TRASPARENZA:) (COLORE:)

(VELOCITA:) (DIREZIONE:) (ROTAZIONE:) (VELOCITA ANIMAZIONE:) (FOTOGRAMMA:)

Modificando un esemplare si modifica il singolo esemplare individuato.

Modificando un oggetto si modificano tutti gli esemplari di quell’oggetto ma non il modello astratto.

Modificando un oggetto genitore si modificano anche tutti gli esemplari dell’oggetto figlio.

Esempio:

Page 51: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 51

CREARE VARIABILI LOCALI

Ogni oggetto/esemplare oltre alle variaibli locali integrate può contenere delle variabili locali personalizzate.

Per dichiarare una variabile locale bisogna scriverla come se fosse un argomento della funzione crea un oggetto o crea un esemplare, ovvero nella forma (variabile: valore).

Esempio:

Come nelle variabili globali per le variabili composte da più parole è necessario usare il simbolo “_”. Esempio:

N.B. le variabili locali possono anche essere scritte in maiuscolo ma questa pratica è sconsigliata, poiché compromette la coerenza sintattica e l’evidenziazione del codice. Esempi:

LEGGERE UNA VARIABILE LOCALE

Per leggere una variabile locale ci sono due metodi.

Il più semplice è richiamarla all’interno di una funzione che evoca esplicitamente l’oggetto/esemplare.

Le funzioni in cui è possibile farlo sono: crea un oggetto, crea un esemplare, modifica un elemento.

La forma da utilizzare è (ETICHETTA: VARIABILE).

Esempio:

È anche possibile inserire la variabile in un’espressione. Esempio:

Il secondo metodo permette di leggere e utilizzare ovunque la variabile.

Utilizzando il costrutto “del” nella forma <nome variabile> del <nome elemento> è possibile leggere ed utilizzare una variabile locale all’interno di qualsiasi espressione.

Esempi:

Page 52: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 52

N.B. il costrutto “del” permette di leggere una variabile locale ma non di modificarla. L’unico modo per modificare una variabile locale è utilizzando la funzione modifca elemento. Ad esempio, non è possbile scrivere:

La forma corretta da utilizzare è la seguente:

Gli articoli partitivi dell’, della e dello possono essere usati in modo equivalente a del. Ad esempio, queste scritture sono valide:

Page 53: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 53

Funzioni avanzate sugli oggetti

ottieni risultato controllo collisione tra --> (ELEMENTO 1: ) (ELEMENTO 2: )

Controlla se è avvenuta una collisione tra due elementi. La funzione restituisce 1 (vero) se la collisione è avvenuta o 0 (falso) se non

si è verificata la collisione indicata.

Esempio:

ottieni risultato controllo se esistono esemplari di --> (ELEMENTO:)

Controlla se esistono esemplari di un oggetto o se esiste un esemplare con quel nome. Se l’esito del controllo è positivo la funzione

restituisce 1 (vero) altrimenti restituisce 0 (falso).

Esempio:

distruggi un esemplare --> (ESEMPLARE:)

Distrugge l’esemplare specificato.

Esempio:

distruggi tutti gli esemplari di --> (OGGETTO: )

Distruggi tutti gli esemplari dell’oggetto specificato.

Esempio:

Page 54: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 54

ottieni nome dell’esemplare più vicino a --> (X:) (Y:) (OGGETTO:)

Individua l’esemplare dell’oggetto specificato che è più vicino alle coordinate specificate e restituisce il suo nome.

Esempio:

ottieni nome dell’esemplare più lontano da --> (X:) (Y:) (OGGETTO:)

Individua l’esemplare dell’oggetto specificato che è più lontano alle coordinate specificate e restituisce il suo nome.

Esempio:

ottieni numero esemplari esistenti di --> (OGGETTO:)

Controlla e restituisce il numero di esemplari presenti nella finestra dell’oggetto specificato.

Esempio:

ottieni numero totale di esemplari esistenti

Controlla e restituisce il numero complessivo di tutti gli esemplari presenti nella finestra.

Esempio:

ottieni risultato controllo se elemento è stato cliccato --> (ELEMENTO:)

Controlla se l’elemento specificato è stato cliccato (click singolo). Se l’esito del controllo è positivo la funzione restituisce 1 (vero)

altrimenti restituisce 0 (falso).

Esempio:

Page 55: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 55

ottieni risultato controllo se elemento è cliccato --> (ELEMENTO:)

Controlla se l’elemento specificato è cliccato (click prolungato). Se l’esito del controllo è positivo la funzione restituisce 1 (vero)

altrimenti restituisce 0 (falso).

Esempio:

ottieni risultato controllo se il mouse è entrato in questo elemento--> (ELEMENTO:)

Controlla se il cursore del mouse è all’interno dell’area dell’elemento indicato. Se l’esito del controllo è positivo la funzione

restituisce 1 (vero) altrimenti restituisce 0 (falso).

Esempio:

ottieni risultato controllo se il mouse è uscito da questo elemento --> (ELEMENTO:)

Controlla se il cursore del mouse è uscito dell’area dell’elemento indicato. Se l’esito del controllo è positivo la funzione restituisce 1

(vero) altrimenti restituisce 0 (falso).

Esempio:

muovi un elemento verso un punto --> (ELEMENTO: ) (X: ) (Y: ) (VELOCITA: )

Muovi l’elemento specificato verso le coordinate specificate alla velocità (pixel per step) specificata.

Esempio:

ottieni risultato controllo se elemento è uscito dalla finestra --> (ELEMENTO: )

Controlla se la posizione dell’elemento indicato è oltre il bordo della finestra. Se l’esito del controllo è positivo la funzione

restituisce 1 (vero) altrimenti restituisce 0 (falso).

Esempio:

Page 56: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 56

ottieni risultato controllo se elemento ha toccato il bordo della finestra --> (ELEMENTO: )

Controlla se la posizione dell’elemento indicato coincide con il bordo della finestra. Se l’esito del controllo è positivo la funzione

restituisce 1 (vero) altrimenti restituisce 0 (falso).

Esempio:

trasporta elemento al lato opposto quando esce dalla finestra --> (ELEMENTO: )

trasporta l’elemento indicato al lato opposto della finestra quando la sua posizione è oltre il bordo della finestra.

Esempio:

ottieni risultato controllo se ci sono elementi in questo punto --> (X: ) (Y: )

Controlla se è presente almeno un elemento in quella posizione. Se l’esito del controllo è positivo la funzione restituisce 1 (vero)

altrimenti restituisce 0 (falso).

Esempio:

distruggi elementi che si trovano in questo punto --> (X: ) (Y: )

Distruggi tutti gli elementi le cui coordinate coincidono con il punto specificate.

Esempio:

ottieni distanza tra due elementi --> (ELEMENTO 1: ) (ELEMENTO 2: )

Ottieni la distanza in pixel tra i due elementi indicati. Nel caso vengano indicati degli oggetti verranno considerati gli esemplari più

vicini tra loro. La distanza tiene conto dell’immagine associata agli esemplari (maschera di collisione).

Esempio:

Page 57: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 57

Funzioni sui percorsi I percorsi sono degli insiemi di coordinate; sono delle risorse che vanno immagazzinate nelle variabili.

Grazie ai percorsi è possibile programmare movimenti complessi da far eseguire agli oggetti.

Per creare un percorso bisogna utilizzare la funzione ottieni un percorso.

percorso = ottieni un percorso --> (TIPO: ) (CHIUSO:) (COORDINATE: x,y / x,y / …,… )

L’argomento TIPO indica il tipo di percorso: dritto o curve.

DRITTO

CURVE

L’argomento CHIUSO indica se il percorso è chiuso (1, vero) o aperto (0, falso).

CHIUSO

APERTO

Page 58: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 58

Le coordinate vanno specificate tramite la sintassi x,y/x,y/…

Il simbolo “/”divide le coppie di ascisse e ordinate.

Esempio:

Per muovere un oggetto usando un percorso bisogna utilizzare la funzione assegna un percorso da seguire a un elemento.

assegna un percorso da seguire a un elemento --> (ELEMENTO: ) (PERCORSO:) (VELOCITA:) (RELATIVO:) (QUANDO FINISCE:)

(DISEGNA PERCORSO:)

l’argomento ELEMENTO definisce l’oggetto o l’esemplare a cui assegnare il percorso.

L’argomento VELOCITA assegna la velocità di percorrenza in pixel per step.

L’argomento RELATIVO (vero o falso) indica se il percorso va applicato a partire dalle coordinate dell’oggetto oppure se le

coordinate da seguire sono assolute.

L’argomento QUANDO FINISCE permette di specificare all’oggetto che cosa fare quando raggiunge la fine del percorso, è possibile

utilizzare diverse parole chiave:

stai fermo

torna al punto di partenza

continua a muoverti in quella direzione

torna indietro

L’argomento DISEGNA PERCORSO (vero o falso) permette di disegnare o meno il percorso assegnato all’oggetto

Esempio completo:

Altre funzioni sui percorsi:

ferma movimento di un elemento --> (ELEMENTO: )

ottieni risultato controllo se questo elemento è arrivato alla fine del percorso assegnato --> (ELEMENTO: )

ottieni velocità percorrenza percorso --> (ELEMENTO: )

imposta velocità percorrenza percorso --> (ELEMENTO: ) (VELOCITA: )

Page 59: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 59

Funzioni miscellanea

Queste sono le funzioni generiche che attualmente non rientrano in nessuna categoria:

imposta griglia --> (VISIBILE:) (COLORE SFONDO:) (COLORE LINEE: ) (DIMENSIONE:)

salva schermata

esci dal programma

riavvia il programma

Page 60: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 60

AUMENTA E DIMINUISCI

In Atomic esistono dei costrutti per aumentare e diminuire in modo intuitivo il valore di una variabile.

Per aumentare di 1 la variabile orsetto_lavatore si può scrivere:

Ovvero prende il valore di se stesso e somma 1

In altri linguaggi questa operazione può essere scritta in questo modo:

orsetto_lavatore +=1;

o addirittura

orsetto_lavatore ++;

Queste scritture sono sicuramente veloci e comode per un programmatore navigato ma molto distanti dal linguaggio umano.

In Atomic è possibile scrivere l’operazione soprariportata in questo modo:

o per diminuirla, per esempio di 2:

è anche possibile diminuire o aumentare in base al risultato di una espressione, ad esempio scrivendo:

COMMENTI

Come la maggior parte dei linguaggi di programmazione Atomic supporta i commenti.

I commenti sono parti del codice che vengono ignorate dal computer.

È possibile commentare una linea di codice utilizzando il simbolo “//”. Esempio:

La prima e la terza linea verranno ignorate dal computer.

Lo scopo dei commenti è duplice.

In primo luogo permettono di inserire all’interno del codice delle descrizioni che migliorano la comprensione da parte degli umani,

facilitandone la condivisione e il lavoro a lungo termine.

In seconda istanza permettono di eliminare temporaneamente parti di codice senza doverle cancellare; in pratica permettono di

disattivare pezzi di codice.

Per quest’ultimo utilizzo vengono comodi i commenti multilinea, che utilizzano i simboli “/*” e “*/”. Esempio:

Page 61: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 61

COSTANTI

Le costanti sono valori non modificabili già integrati in Atomic.

Possono essere utilizzate nello stesso modo delle variabili.

Lista delle costanti matematiche:

NOME VALORE

vero, intero, intera 1

falso, niente, nullo 0

pi greco 3,1415926535 …

numero di nepero 2,7182818284 ...

sezione aurea 1,6180339887...

mezza, mezzo, un mezzo 0,5

un terzo 0,333333…

un quarto 0,25

un quinto 0,2

un sesto 0,16666666…

un settimo 0,1428571…

un ottavo 0,125

un nono 0,1111111111…

un decimo 0,1

tre quarti 0,75

due terzi 0,666666666…

Costanti di semplificazione scrittura del codice

N.B. queste costanti non sono utilizzabili nelle espressioni!

NOME VALORE

è stato cliccato “è stato cliccato”

non è cliccato “non è cliccato”

è cliccato “è cliccato”

al centro “al centro”

a destra “a destra”

a sinistra “a sinistra”

in alto “in alto”

in basso “in basso”

radianti “radianti”

gradi “gradi”

è uguale a “=“

è maggiore di “>“

è minore di “<“

è maggiore o uguale a “>=“

è minore o uguale a “<=“

è diverso da “!=“

Lista delle costanti che rappresentano un colore:

NOME COLORE VALORE RGB

arancione 255,160,64

argento 220,220,220

azzurro 0,127,255

bianco 255,255,255

blu 0,0,255

bronzo 205,127,50

castagno 205,92,92

castagno scuro 152,105,96

ciano 0,255,255

corallo 255,127,80

giallo 255,255,0

grigio 192,192,192

grigio chiaro 242,242,242

Page 62: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 62

grigio scuro 129,128,128

magenta 255,0,255

marrone 128,0,0

nero 0,0,0

oro 255,192,0

rosa 255,192,203

rosso 255,0,0

rosso vermiglione 227,66,52

verde 0,255,0

verde acqua 0,128,128

verde oliva 128,128,0

verde scuro 0,128,0

viola 143,0,255

Costanti musicali

NOME NOTA VALORE

Do

1

Do diesis Re bemolle

1.061068702290076

Re

1.122137404580153

Re diesis Mi bemolle

1.190839694656489

Mi

1.259541984732824

Fa

1.33587786259542

Fa diesis Sol bemolle

1.412213740458015

Sol

1.49618320610687

Sol diesis La bemolle

1.587786259541985

La

1.679389312977099

La diesis Si bemolle

1.778625954198473

Si

1.885496183206107

Le costanti musicali possono essere utilizzate per intonare un suono.

Esempio:

suona --> (SUONO: suono miao) (INTONAZIONE: Fa diesis)

Di base un suono è relativamente intonato in Do.

Questo perché la frequenza “normale” del miagolio di un gatto è diversa ad esempio da quella del muggito di una mucca.

Per intonare due suoni tra loro su una stessa nota bisogna applicare una correzione a uno dei due suoni sommando o sottraendo

una nota (aumentando o diminuendo la frequenza).

Page 63: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 63

Esempio:

INIZIA

correzione = La

CICLO CONTINUO

suona --> (SUONO: suono muu) (INTONAZIONE: correzione + Fa diesis)

suona --> (SUONO: suono miao) (INTONAZIONE: Fa diesis)

Per utilizzare note di ottave superiori o inferiori basta moltiplicare o dividere la nota per due elevato al numero di ottava

desiderato. Ovvero Nota*2^Ottava o Nota/2^Ottava.

Tre ottave inferiori La/2^3 La/8

Due ottave inferiori La/2^2 La/4

Una ottava inferiore La/2^1 La/2

Normale (ipotetica La4) La*2^0 La

Una ottava superiore La*2^1 La*2

Due ottave superiori La*2^2 La*4

Tre ottave superiori La*2^3 La*8

Questa formula in teoria è sempre valida: ipoteticamente se volessimo ottenere 20 ottave superiori potremmo scrivere La*2^20

ovvero La*1048576, tuttavia il suono ottenuto sarebbe talmente alto da risultare impercepibile da un umano. Per questo stesso

motivo a volte anche lavorando con ottave “ragionevoli” il suono potrebbe non sentirsi se la sua intonazione di base è molto bassa

o molto alta. L’ideale è lavorare con suoni intonati di base in Do4 ovvero 262Hz.

Esempio:

suona --> (SUONO: suono beep1) (INTONAZIONE: DO*2) //intonato in DO di una ottava più alta

suona --> (SUONO: suono beep2) (INTONAZIONE: FA/4) //intonato in FA di due ottave più basse

Alcune costanti indicano una risorsa come un suono o un font integrato in Atomic.

Lista delle costanti che rappresentano un suono:

NOME DESCRIZONE

suono beep1 Suono di interfaccia

suono beep2 Suono di interfaccia

suono beep3 Suono di interfaccia

suono miao Verso del gatto

suono bau Verso del cane

suono quak Verso dell’oca

suono beee Verso della pecora

suono squit Verso del topo

suono muuu Verso della mucca

suono uhahah Verso della scimmia

suono hiii Verso del cavallo

suono hiho Verso dell’asino

suono driiin Suono del campanello

suono errore Suono negativo di interfaccia

suono ok Suono positivo di interfaccia

suono nota piano Do4 del pianoforte

Page 64: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 64

Lista delle costanti che rappresentano un font (carattere tipografico):

Nome Esempio

Calibri Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0 1 2 3 4 5 6 7 8 9

Verdana Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0 1 2 3 4 5 6 7 8 9

Times New Roman Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0

1 2 3 4 5 6 7 8 9

Tahoma Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0 1 2 3 4 5 6 7 8 9

Comic Sans Cantami o diva del pelide Achille l’ira funesta che infinite

addusse 0 1 2 3 4 5 6 7 8 9

Brush Script Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0 1 2 3 4 5 6 7

8 9

Old English Text Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0 1

2 3 4 5 6 7 8 9 Chiller Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0 1 2 3 4 5 6 7 8 9

Gigi Cantami o diva del pelide Achille l’ira funesta che infinite addusse 0 1 2 3 4 5 6 7 8 9

Bauhaus 93 Cantami o diva del pelide Achille l’ira funesta che infinite

addusse 0 1 2 3 4 5 6 7 8 9

Page 65: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 65

COSTRUTTO SE

Il costrutto se permette di eseguire un pezzo di codice solo se una certa condizione è vera.

La sintassi da utilizzare è la seguente:

se <espressione> <confronto> <espressione> allora <esegui questo codice> .

Esempio:

se la variabile gatto è uguale a 1 tutto il codice compreso tra “allora” e il simbolo “.” viene eseguito, altrimenti viene ignorato.

è possibile utilizzare i seguenti operatori:

OPERATORE DESCRIZIONE SIMBOLO EQUIVALENTE IN MATEMATICA

= è uguale a =

> è maggiore di >

< è minore di <

<= è maggiore o uguale a ≥

>= è minore o uguale a ≤

!= è diverso da ≠

Esempi:

è possibile utilizzare la forma estesa (descrizione) al posto del simbolo. Esempio:

è anche possibile inserire più righe di codice controllate da un se. Esempio:

In questi casi può essere più comodo, come in altri linguaggi di programmazione, utilizzare le parentesi graffe “{ }” al posto di

“allora” e “.” In modo da identificare a vista d’occhio i blocchi di codice.

Parentesi graffa aperta: { = allora

Parentesi graffa chiusa: } = .

Esempio, equivalente a quello riportato sopra:

Nulla vi vieta di usare questa notazione anche per delle singole linee se lo ritenete più comodo. Esempio:

Page 66: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 66

è anche possibile inserire dei controlli se dentro altri controlli se. Esempio:

Che può anche essere scritto in questo modo:

Questo esempio disegna un cerchio che partendo da un raggio di 1 pixel cresce fino ad avere un raggio di 100 pixel.

È altresì possibile fare confronti di uguaglianza con stringhe di testo, ad esempio:

Page 67: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 67

UTILIZZO DELLE VARIABILI TIMER

Come accennato nella sezione dedicata alle variabili integrate, in Atomic esistono delle variabili timer (timer 1, timer 2, … , timer 8).

Il loro funzionamento è molto semplice: ogni secondo queste variabili decrescono automaticamente di un’unità fino a raggiungere

lo zero, simulando di fatto un conto alla rovescia.

Esempio:

Questo codice fa emettere un suono al computer ogni 5 secondi.

È anche possibile specificare valori decimali per esprimere decimi e centesimi di secondo.

Esempio:

Questo codice fa emettere un suono al computer ogni 5.24 secondi, ovvero ogni 5 secondi, 2 decimi di secondo e 4 centesimi di

secondo. N.B. i timer lavorano in base agli fps e non in base all’orologio del computer. Essendo Atomic volutamente limitato a 30

fps Il margine di precisione è di 0.03 secondi, ovvero 3 centesimi di secondo (1/30). Per questo motivo per ottenere una precisione

assoluta i decimali devono essere un multiplo di 3.

L’utilizzo dei timer semplifica la gestione del tempo; qui sotto è riportato un esempio equivalente ma senza l’utilizzo dei timer.

Esempio senza timer:

Il tempo va moltiplicato per 30 (1 secondo = 30 passaggi) e va aggiunta una dichiarazione diminuisci per decrementare la variabile.

Page 68: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 68

OPERATORI LOGICI

Gli operatori logici sono delle congiunzioni utili per legare insieme due o più condizioni fra loro; considerando come condizione una

qualsiasi affermazione che può essere vera o falsa.

Esempi concettuali:

Luisa vorrebbe un fidanzato bello bello = vero

Anna vorrebbe un fidanzato bello ma anche simpatico bello = vero e simpatico = vero

Laura, che è meno esigente, vorrebbe un fidanzato bello o simpatico bello = vero o simpatico = vero

Mentre per Luisa basta una sola variabile per esprimere la propria condizione, per quanto riguarda Anna e Laura le loro condizione

sono più complesse: implicano l’utilizzo e la relazione tra due variabili. Nel caso di Anna la condizione si verifica solo se entrambe le

variabili sono vere (lo vuole sia bello sia simpatico) mentre per quanto riguarda Laura (che si accontenta) basta che almeno una

delle due variabili sia vera (lo vuole che sia almeno bello o che sia almeno simpatico, se poi è sia bello che simpatico tanto meglio!)

Questa logica è ciò che sta alla base dell’algebra di Boole. Questo ramo dell’algebra viene ampiamente utilizzato in informatica e in

elettronica. Gli operatori di congiunzione visti sopra sono chiamati operatori booleani, operatori logici o porte logiche. Le

espressioni contenenti gli operatori logici vengono chiamate espressioni booleane.

Atomic supporta parzialmente le espressioni booleane: l’uso estensivo degli operatori logici permette di abbreviare molto il codice,

rendendo potenzialmente criptici molti passaggi fondamentali per la comprensione dell’algoritmo o comunque può renderli

intrinsecamente macchinosi da comprendere, poiché semanticamente poco chiari.

Operatori logici unari

L’unico operatore unario supportato (tramite una funzione) è la negazione (NOT, NON).

NOME VERO NOME “SIMBOLO INFORMATICO” SIMBOLO MATEMATICO

negazione NOT ! ¬

Semplicemente la negazione inverte il vero con il falso e viceversa.

Per ottenere l’operatore NOT, è possibile usare questa funzione:

ottieni la negazione di --> (VALORE:)

Esempio:

Come già specificato nella sezione “costanti” si ricorda che 1=vero e 0=falso.

gatto2 è 0 (falso), cane2 è 1 (vero).

È anche possibile invertire il valore della variabile negando la variabile stessa, esempio:

Questo esempio spegne/accende una luce premendo il tasto invio.

Questa logica è riassumibile in queste due frasi:

se è vero che la luce è accesa allora fai in modo che non sia vero che la luce è accesa (se la luce è accesa spegnila).

Se è falso che la luce è accesa allora fai in modo che non sia falso che la luce è accesa (se la luce è spenta accendila).

Page 69: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 69

Operatori logici binari

Questi sono gli operatori logici binari supportati:

NOME VERO NOME “SIMBOLO INFORMATICO” SIMBOLO MATEMATICO

e AND && ʌ

o OR || v

o esclusivamente XOR ^^ ⊕

Le espressioni booleane possono essere quindi utilizzate all’interno del costrutto se in questa forma:

se <espressione booleana> allora <esegui questo codice> .

Esempi:

“e” restituisce vero se entrambe le espressioni sono vere (x ʌ y)=1 solo se (x=1 ʌ y=1)

“o” restituisce vero se almeno una delle espressioni è vera (x v y)=1 solo se (x=0 ʌ y=1) v (x=1 ʌ y=0) v (x=1 ʌ y=1)

“o esclusivamente” restituisce vero solo se una delle due espressioni è vera e l’altra falsa (x⊕y)=1 solo se (x=0 ʌ y=1) ⊕ (x=1 ʌ y=0)

È possibile combinare più operatori logici all’interno di un’espressione booleana.

Esempio:

I calcoli di verità vengono eseguiti da sinistra a destra (a differenza di altri linguaggi che seguono l’ordine di priorità).

Come per le espressioni aritmetiche per modificare l’ordine di priorità dei calcoli è possibile utilizzare le parentesi tonde.

Esempio:

se (coniglio= 1 e anatra= 0) o esclusivamente (cane=1 o (pollo=1 e tacchino=0)) allora gatto=vero .

N.B. Usando alcune tecniche è possibile riprodurre il funzionamento della maggior parte delle espressioni logiche senza utilizzare

parentesi e proposizioni lunghe. Espressioni logiche troppo lunghe possono mandare in confusione anche i programmatori

navigati; per questo, in ambito didattico, è utile “spezzettarle” in proposizioni più piccole.

Prendiamo ancora ad esempio questo codice:

se (coniglio= 1 e anatra= 0) o esclusivamente (cane=1 o (pollo=1 e tacchino=0)) allora gatto=vero .

Può essere riprodotto scomponendolo in questo modo:

Scritto in questo modo il codice è più ingombrante ma molto più schematico. In questo modo ogni passaggio è più chiaro.

Tutti gli operatori logici possono essere scomposti in semplici istruzioni se, qui sotto verranno illustrate le tecniche per farlo.

Queste tecniche possono anche essere combinate tra loro per simulare espressioni booleane complesse. Potete anche accorciare il

codice utilizzando gli operatori logici nei passaggi in cui sono semanticamente facili da comprendere, ricordando comunque che

l’obbiettivo è schematizzare il ragionamento scomponendolo in piccole proposizioni logiche.

L’operatore AND (“e”) è il meno problematico da scomporre e può essere simulato usando una seria di se.

Page 70: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 70

se alfa=1 e (beta=2 e (gamma=23 e delta=74)) allora omega = 100 .

Come se ci trovassimo davanti ad una serie di addizioni le parentesi vanno bellamente ignorate; l’esempio diventa:

L’operatore OR (“o”) può essere traslato come una lista (se c’è almeno una cosa vera nella lista allora la condizione è vera)

se alfa=1 o (beta=2 o (gamma=23 o delta=74)) allora omega = 100 .

anche in questo caso le parentesi non hanno importanza e possono essere tralasciate:

L’operatore XOR (“o esclusivamente”) è il più complesso da scomporre e richiede l’utilizzo di una variabile contatore (es. “i”).

se alfa=1 o esclusivamente (beta=2 o esclusivamente (gamma=23 o esclusivamente delta=74)) allora omega = 100 .

Diventa:

Come potete notare anche in questo caso le parentesi non hanno importanza (non hanno mai rilevanza in una espressione logica

contenente un solo tipo di operatore). L’utilizzo della variabile i è necessario per verificare quante espressioni sono vere. A

differenza di OR (“o”), la condizione per cui XOR restituisca vero è che solo una delle proposizioni sia vera, se due o più sono vere la

condizione non è soddisfatta.

Questo è un esempio di scomposizione con più tipi di operatori logici:

se alfa=1 e (beta=2 o (gamma=23 o esclusivamente delta=74)) allora omega = 100 .

Una scomposizione corretta è questa:

In questo caso le parentesi sono rilevanti. Non esiste un metodo univoco per scomporre un’espressione logica in proposizioni meno

complesse, l’importante è che il metodo sia chiaro e attinente al conteso (e ovviamente che funzioni!).

Page 71: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 71

COSTRUTTO FINCHE

Il costrutto finche ha una sintassi molto simile al costrutto se:

finche <espressione> <confronto> <espressione> allora <esegui questo codice> .

Esempio:

questo pezzo di codice aumenta istantaneamente la variabile gatto, portandola a 100.

Questo perché il costrutto finche esegue un ciclo, ovvero svolge una iterazione: ripete l’operazione alla massima velocità di calcolo

possibile finche non ottiene il risultato per cui lavora; nel nostro caso finche la variabile gatto non sarà minore di 100, quindi

quando gatto sarà maggiore o uguale a 100.

Qual è lo scopo?

Se il nostro obbiettivo è portare istantaneamente la variabile gatto a 100 basta usare una semplice assegnazione:

perché allora utilizzare un ciclo finche?

La risposta è: per potere fare più cose contemporaneamente utilizzando una sola variabile mentre (while) raggiunge il valore 100,

senza dover scrivere decine di righe di codice simili.

Un esempio pratico

Mettiamo il caso che vogliamo disegnare 20 cerchi equidistanti; possiamo scrivere:

Questo codice è corretto ma è lungo e ridondante.

La stessa cosa utilizzando finche si può scrivere in questo modo, utilizzando la variabile cerchi come unità:

Page 72: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 72

Il funzionamento è il seguente:

- ogni trentesimo di secondo la variabile cerchi viene riportata al valore 1 prima che inizi il ciclo

- ad ogni passaggio del ciclo viene disegnato un cerchio alla posizione x 40 per il numero di cerchi già disegnati

- ad ogni passaggio del ciclo la variabile cerchi viene aumentata di 1, il ciclo avrà quindi 20 passaggi (finche cerchi < 20)

In realtà è possibile fare molto di più, ad esempio modificare il raggio dei cerchi in modo progressivo:

Il costrutto finche è lo strumento più potente presente in Atomic, le sue applicazioni sono infinite e permettono di automatizzare

una valanga di compiti noiosi e ripetitivi.

ATTENZIONE A NON CREARE CICLI INFINITI!

I cicli finche eseguono il codice finche la condizione è vera, se questa condizione è sempre vera il ciclo non terminerà mai e il

programma si bloccherà irrimediabilmente (crash).

Ad esempio, questo codice farà sicuramente crashare il programma (fidatevi, non provatelo!):

la variabile prova è sempre maggiore di 100, quindi il computer dovrebbe disegnare un numero infinito di cerchi:

il programma si blocca in attesa che il computer finisca di calcolare dove disegnare tutti i cerchi… Ma il calcolo non finirà mai!

Page 73: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 73

COSTRUTTO RIPETI PER

Il costrutto ripeti per è una forma semplificata del costrutto finche e in molti casi può sostituirlo.

La sintassi è la seguente:

ripeti per <espressione> volte: <esegui questo codice> .

Esempio:

La differenza con il ciclo finche è che il numero di ripetizioni è già definito in partenza.

Come nella maggior parte dei linguaggi di programmazione il ciclo ripeti per (for) e il ciclo finche (while) possono essere utilizzati per

svolgere gli stessi compiti in base alla comodità del programmatore.

Anche per il ciclo ripeti per è possibile utilizzare le parentesi graffe al posto dei simboli “ : ” e “ . ”; esempio:

Page 74: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 74

TABELLE (ARRAYS)

In Atomic gli arrays sono chiamati tabelle.

Le tabelle sono strutture di dati, dei contenitori per memorizzare, ed in seguito accedere, a grandi quantità di informazioni.

Le tabelle possono essere monodimensionali (vettori, una sola colonna) o bidimensionali (matrici, più colonne).

Ogni cella di una tabella è come se fosse una variabile.

Esempi:

Tabella monodimensionale (1D, vettore, lista)

1

32

2

432432

32.1

Tabella bidimensionale (2D, matrice)

1 4324 523

32 21 65

2 76 25

432432 6347 6

32.1 654 3

A differenza di altri linguaggi le tabelle sono “prefabbricate” e pronte all’uso.

Ogni tabella ha 200 righe e 16 colonne (anche se non vengono utilizzate o disegnate). Ogni cella può contenere numeri reali o

stringhe di testo.

Ad esempio, la colonna a sinistra contiene un nome di persona (stringa di testo)

e la colonna a destra l’età di quella persona (numero reale):

“Paolo” 43

“Maria” 21

“Giovanni” 10

“Matteo” 56

“Silvia” 8

È anche possibile inserire tipi di dato diversi in una stessa colonna; esempio:

“Paolo” 43

21 “Maria”

“Giovanni” 10

323.54 56

“Silvia” 8,14

In Atomic non sono presenti costrutti per utilizzare le tabelle ma solo delle funzioni specifiche.

Creare una tabella

crea tabella --> (NOME:)

Con questa funzione creiamo una tabella assegnandoli un nome univoco

(non può essere un nome già usato per una variabile o una costante).

Page 75: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 75

Il sistema per riferirsi ai dati contenuti nelle celle di una tabella è molto semplice e si basa su RIGHE e COLONNE ordinate:

Modificare il valore di una cella di una tabella

modifica tabella --> (NOME:) (RIGA:) (COLONNA: ) (NUOVO VALORE:)

Con questa funzione si può assegnare o modificare un valore contenuto in una cella, specificando il NOME della tabella e

identificando la cella tramite gli argomenti RIGA e COLONNA. Se la tabella è monodimensionale si può omettere l’argomento

COLONNA. L’argomento NUOVO VALORE sarà il nuovo valore contenuto in quella cella.

Leggere e memorizzare in una variabile il contenuto di una cella

variabile = ottieni dato da tabella --> (NOME:) (RIGA:) (COLONNA:)

Con questa funzione si può leggere il contenuto di una cella e memorizzarlo in una variabile

Se la tabella è monodimensionale si può omettere l’argomento COLONNA.

Modificare/dichiarare velocemente un’intera tabella

riempi tabella --> (NOME:) (COLONNA 1:) (COLONNA 2:) (COLONNA 3:) … (COLONNA 8:)

con questa funzione è possibile riempire tutte le celle di una tabella specificando una stringa di testo e usando il simbolo “|” per

separare i valori di una colonna .

Esempio:

il risultato sarà questa tabella:

Distruggere una tabella

distruggi tabella --> (NOME:)

distruggendo una tabella si libera spazio nella memoria (migliorando le prestazioni).

Ciò consente anche di riassegnare il nome utilizzato ad una nuova tabella.

È buona prassi distruggere una tabella quando non è più necessaria.

Page 76: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 76

Disegnare una tabella:

disegna tabella --> (NOME:) (X:) (Y:) (RIGHE:) (COLONNE:) (COLORE SFONDO: ) (COLORE TESTO: ) (COLORE LINEE:) (SCALA:)

disegnare una tabella è utile per correggere gli errori nel codice e per avere una visione più chiara dei dati e della loro

organizzazione

Esportare una tabella

esporta tabella --> (NOME:) (INDIRIZZO:)

è possibile esportare tabelle in formato . csv (compatibili con Microsoft Excel e altri programmi simili).

Esempio:

Questo esempio crea il file tabella.csv nella cartella %LOCALAPPDATA%/Atomic.

Il file generato può essere aperto e modificato con Microsoft Excel.

Funzioni avanzate sulle tabelle: ! Queste funzioni non sono ancora state implementate.

ottieni il valore più basso tra questi valori in tabella --> (NOME:)(COLONNA:)

ottieni il valore più alto tra questi valori in tabella --> (NOME:)(COLONNA:)

ottieni la riga in cui si trova la prima occorrenza di questo valore in tabella --> (NOME:)(VALORE:)

ottieni la colonna in cui si trova la prima occorrenza di questo valore in tabella --> (NOME:)(VALORE:)

mischia a caso le celle di questa tabella --> (NOME:)

ordina in ordine ascendente le righe della tabella in base a una colonna --> (NOME:)(COLONNA:)

ordina in ordine decrescente le righe della tabella in base a una colonna --> (NOME:)(COLONNA:)

ordina in ordine ascendente le righe della tabella in base a una colonna --> (NOME:)(COLONNA:)

ordina in ordine alfabetico le righe della tabella in base a una colonna --> (NOME:)(COLONNA:)

ordina in ordine alfabetico inverso le righe della tabella in base a una colonna --> (NOME:)(COLONNA:)

copia tabella --> (NOME:) (NOME NUOVA TABELLA:)

Page 77: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 77

DEFINIRE LE PROPRIE FUNZIONI

È possibile definire nuove funzioni usando il costrutto definisci funzione. La sintassi è la seguente:

definisci funzione “nome funzione”

{

… codice …

}

Definendo nuove funzioni è possibile sostituire intere parti di codice con poche parole o una frase. Questo rende più veloce la

scrittura e rende il codice più snello e leggibile, soprattutto se contiene parti ridondanti la cui scrittura non può essere evitata

tramite cicli ripeti per e finche.

Il nome della funzione deve essere scritto tra le virgolette (come stringa) e può quindi contenere spazi vuoti. Tra le graffe è possibile inserire qualsiasi funzione, espressione e costrutto.

All’interno delle graffe è anche possibile definire degli argomenti tramite delle etichette (stringhe) tra i simboli “< >”.

Queste etichette possono corrispondere agli argomenti già integrati in Atomic oppure essere diverse.

Esempio:

Gli argomenti definiti all’interno della funzione verranno sostituiti con valori reali nel momento in cui la funzione verrà richiamata

all’interno del codice.

Ad esempio se si scrive disegna casa --> (X: 500) tutti i punti <”X”> verranno modificati automaticamente in 500:

disegna rettangolo --> (X: <"X">) (Y: <"Y">-<"ALTEZZA">) (BASE: <"LARGHEZZA">) (ALTEZZA: <"ALTEZZA">) (COLORE: <"COLORE">)

disegna triangolo --> (X 1: <"X">) (Y 1: <"Y">-<"ALTEZZA">) (X 2: <"X">+<"LARGHEZZA">) (Y 2: <"Y">-<"ALTEZZA">)

(X 3: <"X">+<"LARGHEZZA">/2)

(Y 3: <"Y">-<"ALTEZZA">-100/[<"ALTEZZA">/75]) (COLORE: rosso)

disegna rettangolo --> (X: 500) (Y: <"Y">-<"ALTEZZA">) (BASE: <"LARGHEZZA">) (ALTEZZA: <"ALTEZZA">) (COLORE: <"COLORE">)

disegna triangolo --> (X 1: 500) (Y 1: <"Y">-<"ALTEZZA">) (X 2: 500+<"LARGHEZZA">) (Y 2: <"Y">-<"ALTEZZA">)

(X 3: 500+<"LARGHEZZA">/2)

(Y 3: <"Y">-<"ALTEZZA">-100/[<"ALTEZZA">/75]) (COLORE: rosso)

Questo vale per tutti gli argomenti specificati.

Page 78: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 78

DEFINIRE FUNZIONI CHE RESTITUISCONO UN VALORE

È anche possibile definire funzioni che restituiscono un valore, ovvero che permettono di ottenere un valore:

definisci funzione “ottieni … nome funzione”

{

… codice …

con questa funzione ottieni …

}

Le uniche due differenze da una funzione normale sono:

il nome della funzione deve iniziare con “ottieni”

il codice tra le graffe deve contenere il costrutto “con questa funzione ottieni <espressione>”

Il costrutto “con questa funzione ottieni” indica il valore (ricavato da una variabile o da un’espressione) che si otterrà utilizzando

quella funzione.

Esempio:

Schema di funzionamento:

Il costrutto “con questa funzione ottieni” può anche contenere direttamente gli argomenti specificati per la funzione.

Ad esempio il codice soprariportato può anche essere abbreviato in questo modo:

Page 79: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 79

Attenzione ai nomi che diamo alle funzioni: se da un lato definire nuove funzioni rende il codice meno ingombrante, dall’altro lato

è facile abusarne scrivendo del codice criptico senza rendersene conto; a quel punto ci si ritrova davanti ad un codice di difficile

lettura ed interpretazione, in primo luogo per gli altri ma a lungo termine anche per se stessi. Per evitare queste situazioni è buona

prassi scegliere un nome chiaro per ogni funzione. Ad esempio, se creiamo una funzione che disegna una stella un buon nome può

essere “disegna stella”, un pessimo nome è un’abbreviazione tipo “distel” o “ds”.

Un altro vantaggio oltre alla riciclabilità del codice è la sua manutenibilità: in questo modo si può evitare di editare decine di righe

di codice uguali, rendendo più veloce la modifica del programma e la correzione degli errori.

INSERIRE SUGGERIEMENTI PER LE PROPRIE FUNZIONI È possibile inserire dei suggerimenti per le proprie funzioni. Questi suggerimenti verranno visualizzati nella barra in basso

dell’editor esattamente come per le funzioni integrate. La sintassi da utilizzare è la seguente:

Suggerimento “testo del suggerimento”

Il costrutto suggerimento va utilizzato all’interno del blocco (delimitato dalle parentesi graffe) che definisce la funzione:

definisci funzione “nome funzione”

{

Suggerimento “testo del suggerimento”

… codice …

}

Esempio:

Il testo del suggerimento comparirà dopo il simbolo -->.

È possibile definire qualsiasi testo per il suggerimento ma è consigliato attenersi a questa sintassi basilare:

(ARGOMENTO 1: ) (ARGOMENTO 2:) (ARGOMENTO 3:) …

Inserendo, se necessario, altre informazioni tra i simboli “ : ) ”.

Specificare il suggerimento per una funzione personalizzata è fondamentale per far si che l’utilizzatore capisca il suo utilizzo,

soprattutto se la definizione della funzione è inclusa dall’esterno.

Page 80: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 80

INCLUDERE CODICE ESTERNO Per includere del codice esterno in qualsiasi punto basta utilizzare il costrutto includi:

includi “nome del file.txt”

il file deve trovarsi in %LOCALAPPDATA%/Atomic/.

È possibile specificare file che si trovano in sottocartelle di %LOCALAPPDATA%/Atomic/. Esempio:

All’interno del codice esterno è possibile definire funzioni che potranno poi essere usate nel codice invocante.

Definire le proprie funzioni e includerle tramite file esterni permette di estendere l’operatività di Atomic.

In sintesi questo metodo di lavoro “a livelli” permette di:

realizzare lavori più vasti e articolati

suddividere il codice in modo chiaro in piccole parti ben distinte

poter modificare progetti complessi usando funzioni molto specifiche e chiare definite dall’autore del progetto

poter modificare progetti complessi usando poche righe di codice

poter riciclare grandi quantità di codice (fino a creare delle proprie librerie)

Il grande vantaggio in ambito didattico è la possibilità di offrire l’accesso a progetti complessi tramite un interfaccia semplice e

“sicura” agli studenti meno esperti. Allo stesso tempo gli studenti più avanzati hanno la possibilità di modificare il codice che si

trova “sotto il cofano” dei progetti. Inoltre l’evidenziazione delle funzioni personalizzate e i suggerimenti funzionano anche

quando il codice che definisce le funzioni è incluso dall’esterno.

Attenzione agli eventi!

Il costrutto includi funziona in modo molto semplice: prende il codice contenuto nel file specificato e lo “inietta” nel punto in cui è

presente il costrutto. Se il file iniettato contiene già gli eventi INIZIA e CICLO CONTINUO, e a sua volta il codice su cui stiamo

lavorando li contiene, il codice finale verrà diviso in più eventi, creando quindi un malfunzionamento.

Page 81: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 81

DEBUG

Tramite il costrutto debug è possibile fermare momentaneamente l’esecuzione del programma e mostrare un qualsiasi messaggio,

anche inerente al codice, ad esempio mostrando il valore di una variabile o il risultato di un’espressione in quel determinato

momento. È possibile utilizzare il costrutto debug anche all’interno di cicli finche e ripeti per.

La sintassi è molto semplice:

debug “stringa”

Esempio:

Page 82: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 82

CONSIDERAZIONI FINALI E IPOTESI FUTURE DI SVILUPPO

Atomic è un linguaggio interpretato quindi è potenzialmente multipiattaforma, se il progetto prende piede sicuramente verranno

rilasciate versioni per Mac e Linux; da valutare più attentamente la realizzazione di un’interprete per Android e iOS. Più difficile, ma

non impossibile, è la realizzazione di un’interprete per browser web (HTML5). Se il porting su Mac e Linux è indubbiamente

giustificabile e vantaggioso, altrettanto non si può dire dei sistemi operativi mobile: il fine ultimo di Atomic è quello di essere un

linguaggio didattico, se si esclude a priori la possibilità di scrivere codice su mobile (fattibile ma estremamente scomodo e

sconveniente) l’unico motivo per creare interpreti mobile è stimolare l’utente ad utilizzare il linguaggio per poter vedere le proprie

creazioni anche al di fuori di un ambiente desktop (cosa che in se non aggiunge una grande valenza educativa).

La criticità per quanto riguarda le piattaforme web e mobile sono le performance. L’attuale interprete di Atomic è stato realizzato

in linguaggio GML in tempi brevissimi grazie a Game Maker Studio, del quale condivide alcune logiche e alcune funzioni. Questo

farà storcere il naso agli sviluppatori più navigati ma l’utilizzo di Game Maker Studio ha il vantaggio di rendere molto facile ampliare

il progetto: scrivere funzioni per Atomic in GML attualmente è molto semplice, quindi anche i programmatori meno esperti

possono collaborare al progetto scrivendo e proponendo le loro funzioni. L’unico svantaggio di questo approccio di sviluppo molto

veloce e user friendly è che il codice scritto non è ottimizzato: i token finali che vengono letti dal programma sono simili al codice

originale, l’ideale invece è trasformare i token in bytecode per incrementare le prestazioni. Tuttavia come già scritto l’obiettivo di

Atomic non è quello di essere competitivo dal punto di vista delle prestazioni ma è quello di diventare il miglior linguaggio didattico

possibile.

Un linguaggio in italiano al giorno d’oggi non è in controtendenza? In questi anni si assiste ad un’internazionalizzazione sempre

più spinta e l’inglese viene insegnato sempre “di più e prima” (ormai a partire dalla scuola dell’infanzia!) tuttavia la propria lingua

madre è indubbiamente la migliore per imparare concetti nuovi. La logica della programmazione per alcuni può risultare difficile,

apprenderla direttamente in inglese di certo non migliora le cose e inoltre presuppone una buona conoscenza della lingua, cosa che

non è scontata, soprattutto in età evolutiva. In questo modo si separano due competenze specifiche: la comprensione di una

lingua, e la comprensione di una sintassi, una maniera di scrivere propedeutica alla programmazione. Non è comunque escluso che

il linguaggio implementi anche una traduzione in inglese: in questo modo diventerebbe un linguaggio utile a consolidare la lingua

straniera e renderebbe ancor meno traumatico il passaggio ai veri linguaggi di programmazione. Potrebbe addirittura essere

tradotto in altre lingue per essere diffuso al di fuori dell’Italia.

Attualmente il codice sorgente di Atomic non è disponibile, verrà reso interamente open source solo quando sarà abbastanza

maturo, solo se otterrà interesse e solo una volta creata una community di sviluppatori, docenti e ricercatori, interessati ad

ampliare il progetto.

Page 83: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 83

ATOMIC IN SINTESI

ESPRESSIONI Operatori aritmetici: +, -, *,/,^

È possibile utilizzare valori interi e decimali, le parentesi tonde, variabili e costanti.

Esempio:

DICHIARARE/MODIFICARE UNA VARIABILE GLOBALE Sintassi:

x = y

nome variabile = valore

Esempi:

COMMENTI Sintassi:

//commento su singola linea

/*commento

multilinea*/

Esempi:

FUNZIONI Sintassi:

f --> (X: a) (Y: b) …

nome funzione --> (NOME ARGOMENTO: valore) (NOME ARGOMENTO: valore)

Oppure tramite sintassi abbreviata:

f (X: a, Y: b … )

nome funzione (NOME ARGOMENTO: valore, NOME ARGOMENTO: valore)

Esempi:

Page 84: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 84

DICHIARARE/MODIFICARE UNA VARIABILE GLOBALE

TRAMITE UNA FUNZIONE CHE RESTITUISCE UN VALORE Sintassi:

x = f --> (X: a) (Y: b) …

x = nome funzione --> (NOME ARGOMENTO: valore) (NOME ARGOMENTO: valore)

Oppure tramite sintassi abbreviata:

x = f (X: a, Y: b … )

x = nome funzione (NOME ARGOMENTO: valore, NOME ARGOMENTO: valore)

Esempi:

AUMENTARE/DIMINUIRE UNA VARIABILE Sintassi:

aumenta x di y

diminuisci x di y

Esempio:

ISTRUZIONI CONDIZIONALI se, finche, ripeti per x volte

Sintassi:

C ,…-

Condizione { blocco di istruzioni }

Esempi:

LEGGERE LE VARIABILI LOCALI DEGLI OGGETTI Sintassi:

x del y (del/dell’/dello/della)

variabile dell’oggetto

Esempi:

Page 85: Parti a razzo a programmare!! - Atomic€¦ · La programmazione informatica è un mondo enorme e nonostante il pensiero computazionale sia universale le sue regole ... Notepad++

pag. 85

CREARE E MODIFICARE OGGETTI/ESEMPLARI Sintassi:

f --> (CARATTERISTICA: valore) (variabile locale: valore)

CARATTERISTICA = variabile già integrata nell’oggetto (NOME, OGGETTO, GENITORE, X, Y, Z, IMMAGINE, SCALA ASSE X, SCALA ASSE

Y, TRASPARENZA, COLORE, VELOCITA, DIREZIONE, ROTAZIONE)

variabile locale = caratteristica extra dell’oggetto dal nome e valore arbitrario.

Esempi:

DEFINIRE NUOVE FUNZIONI Sintassi:

definisci funzione “nome funzione” , … }

Oppure con restituzione di un valore:

definisci funzione “ottieni … nome funzione”

{

con questa funzione ottieni …

}

Esempi:

INCLUDERE CODICE Sintassi:

includi “…”

Esempio