Invece ad esempio i vettori di vettori sono bidimensionali; i vettori di vettori di vettori sono tridimensionali, ecc… In genere, sebbene non vi sia alcun limite, non si utilizzano più di tre dimensioni.
Il numero dei valori Costante coincide con il numero di dimensioni del vettore.
Una matrice ad esempio richiede due costanti, un vettore tridimensionale richiede tre costanti e così via.
Facciamo degli esempi:
vettore – int a[M]
matrice – int a[M][N]
vettore tridimensionale int a[M][N][P]
Rappresentazione di una matrice
Per rappresentare una matrice facciamo riferimento ad una tabella in cui il primo indice rappresenta la riga, il secondo la colonna.
<TipoElementi><NomeArray>[<Righe>] [ <Colonne>]
dove righe e colonne indicano rispettivamente il numero di righe e di colonne della matrice.
Guardiamo questa matrice di esempio, ho omesso gli indici di riga e colonna.
12
21
33
44
67
1
6
11
58
34
23
2
45
8
6
11
4
7
18
3
1
7
9
34
78
In questa matrice il numero 8, in grassetto è l’elemento (2,3) cioè di riga 2 e colonna 3 (ricordiamo che gli indici di riga e di colonna partono da 0). L’ultimo numero, 78, sarà l’elemento (4,4) cioè di riga e colonna 4.
Quindi si può accedere ad un singolo elemento di un array bidimensionale usando i doppi indici (per righe e colonne). Ad esempio A[2][3] seleziona il quarto elemento della terza riga.
Se invece utilizziamo un solo indice, ad esempio A[2], selezioniamo tutta la terza riga, che rappresenta un array monodimensionale.
JavaScript è un linguaggio utilizzato nella programmazione web lato client. Ciò significa che gli script sono interpretati dal browser web, nel computer di ciascun utente.
Ricordiamo che invece i linguaggi web lato server contengono codice che viene eseguito sul server (dove è ospitato il sito web). Cioè, dopo aver elaborato il codice, viene inviato al browser dell’utente che ne ha fatto richiesta.
Nella scorsa lezione abbiamo parlato di come integrare il codice JavaScript nelle nostre pagine web e quindi quale metodo di inclusione conviene utilizzare piuttosto che un altro. In questa lezione approfondiremo alcuni concetti, tra cui quello di funzione.
function JavaScript
Una function è un blocco di codice dove inserire delle istruzioni ed è eseguita quando è invocata (chiamata).
In genere una funzione viene richiamata in una pagina web tramite un pulsante o al verificarsi di un determinato evento.
Una function in JavaScript ha un nome ed inoltre può avere anche dei parametri racchiusi tra due parentesi tonde.
Le istruzioni da eseguire sono invece indicate tra parentesi graffe.
Facciamo dunque degli esempi per capire meglio il funzionamento:
function ora() {
var d = new Date();
var ora = d.toLocaleTimeString();
alert(ora);
}
Notiamo innanzitutto che stiamo utilizzando new Date() per creare un oggetto di tipo Date.
L’oggetto Date è utilizzato per lavorare con le date e con gli orari. Il metodo toLocaleTimeString restituisce l’ora.
All’interno della function ora(), che non ha parametri racchiusi tra parentesi tonde, memorizziamo l’ora in una variabile e richiamiamo il metodo alert. Ricordiamo che il metodo alert() serve per creare una finestra che si apre nel browser. Nel nostro caso specifico mostrerà l’ora.
Dopo inseriamo nella nostra pagina web un richiamo alla funzione creata in JavaScript nel punto desiderato.
Ad esempio si può inserire un pulsante che al click richiami la funzione ora.
Potete vedere il risultato facendo clic sul pulsante sotto: ‘mostra l’ora‘. Vi mostrerà l’orario attuale.
Realizziamo lo stesso esempio ma visualizzando il messaggio nella pagina html, piuttosto che in una finestra di dialogo. Utilizziamo il semplice metodo document.write per questo scopo, come nell’esempio sotto:
function ora() {
var orario=new Date();
var ora=orario.toLocaleTimeString();
document.write("Altro modo per visualizzare un messaggio! ");
document.write("
Orario: " + ora + "
")
}
<body onload="ora()">
...
</body>
Provate ad inserire questo codice per visualizzare l’orario nella vostra pagina web per vederne il risultato.
In Scratch è possibile anche creare delle storielle. Io ne ho inventata una semplicissima che si intitola Pico e il dinosauro.
Struttura della storia
La storia è strutturata così:
Pico si muove fino ad arrivare ad una certa distanza dal dinosauro.
A quella distanza il dinosauro apre la bocca e chiede dove va Pico.
Pico con fare deciso gli dice che sta andando al castello a sconfiggere l’orco.
Ecco che allora il dinosauro lo fa passare.
Blocchi in Scratch
Per la creazione di questo gioco ho utilizzato i blocchi in Scratch. I blocchi servono a creare una sequenza di passi o azioni che poi si possono semplicemente utilizzare richiamandone il nome.
Inserisco innanzitutto lo sfondo e gli sprite che servono. Io ho scelto quelli della figura sotto.
Creo i blocchi per il movimento di Pico. Vado sulla sezione altri blocchi e clicco su crea un blocco. Decido ad esempio di chiamarlo movimento. Quindi definisco in questo blocco i passi che Pico deve compiere facendogli cambiare costume (Pico ha tanti costumi predefiniti).
Quando si clicca sulla bandierina Pico si muove fino alla posizione x=-20. Gli altri blocchi che ho programmato per Pico sono basati sullo scambio di messaggi tra Pico e il Dinosauro.
Il dinosauro manderà il messaggio fermati che gli consentirà di cambiare costume, passando al costume pico-d. Quando invece riceverà il messaggio dove, ovvero, dopo aver risposto alla domanda del dinosauro su dove andava, Pico manderà il messaggio orco al dinosauro che farà e dirà qualcosa e dopo gli manderà a sua volta il messaggio vai!
Di seguito gli script associati allo sprite dinosauro:
È facile e divertente creare delle storie in Scratch! Se ti è piaciuta e vuoi scaricare la storia completa clicca sul link sotto:
Realizziamo degli algoritmi sui triangoli con scratch per verificare se un triangolo è isoscele, equilatero o scaleno.
Prendiamo tre numeri in ingresso e verifichiamo se questi possono essere la lunghezza dei tre lati di un triangolo e poi determiniamo se il triangolo avente come lati le lunghezze indicate è equilatero, isoscele o scaleno.
Partiamo dal fatto che non sempre è possibile costruire un triangolo. Infatti ricordiamo la proprietà fondamentale dei lati di un triangolo che dice: In un triangolo ogni lato è minore della somma degli altri due.
Sviluppo dell’algoritmo sui triangoli con Scratch
Uso delle funzioni logiche
Scegliamo uno sfondo ed uno sprite. Io ho scelto quelli della figura sotto:
Creiamo tre variabili e le chiamiamo lato1, lato2 e lato3.
Quindi dopo aver chiesto in input i tre lati, verifichiamo che tutte e tre le condizioni siano vere. Se non sono vere facciamo visualizzare in output il messaggio: ‘Non è sempre possibile costruire un triangolo! In un triangolo ogni lato è minore della somma degli altri due!’
Se invece sono vere possiamo determinare se si tratta di un triangolo equilatero, isosceleoppure scaleno.
Come?
Dapprima verifichiamo se i tre lati sono uguali con la funzione logica e:
se lato1=lato2 e lato2=lato3
allora il triangolo è equilatero.
Dopo verifichiamo se i lati sono uguali a due a due, usando la funzione logica o:
lato1=lato2 o lato2=lato3 o lato1=lato3
se ciò è vero allora il triangolo è isoscele.
Se le due condizioni sopra non sono vere allora il triangolo è scaleno.
Allego lo script sotto:
Sviluppo dell’algoritmo sui triangoli con scratch
Senza l’uso delle funzioni logiche
Ho apportato delle modifiche alla verifica che determina se si tratta di un triangolo equilatero, isoscele oppure scaleno.
La verifica se i tre numeri presi in input possono essere la lunghezza dei tre lati di un triangolo la lascio risolta sempre con gli operatori logici per evitare strutture con troppi se, ma si potrebbe modificare anche quella.
Quindi, se lato1=lato2 controllo che anche lato2=lato3, se ciò è vero si tratta di un triangolo equilatero, altrimenti selato2 è diverso da lato3 comunque sarà isoscele(in quanto rimane vera la condizione che lato1=lato2).
Se invece lato1 non è uguale a lato3 mi rimangono due opzioni affinché sia isoscele: o lato2=lato3 oppure lato1=lato3. Costruisco la struttura sempre con i se annidati. Dunque se lato2=lato3 allora il triangolo è isoscele, altrimenti se lato1=lato3 è isoscelealtrimenti è scaleno.
Allego lo script sotto:
L’algoritmo sui triangoli è stato sviluppato anche con Algobuild, se vuoi vederlo vai al link: triangoli con algobuild.
Creiamo adesso un gioco in Scratch dove lo squalo mangia dei pesci e guadagna punti, ma attenzione se tocca il granchio perde una vita.
Istruzioni
Forniamo ad esempio le seguenti istruzioni:
Ogni volta che lo squalo mangia Fish1 o Fish3 o Fish5 guadagna 5 punti
Se mangia Octopus guadagna 10 punti
Se invece mangia la stella marina guadagna 20 punti
Ogni volta che lo squalo toccherà il granchio (crab) perderà una vita
Chiaramente si possono aggiungere tanti altri pesci!
Procedimento
Per prima cosa ho scelto lo sfondo dell’acquario che è presente in Scratch e ho aggiunto i pesci e lo squalo. Ho fatto in modo di far apparire le istruzioni del gioco per spiegare al giocatore come funziona.
Quindi ho creato il seguente sprite:
Quando si preme lo spazio verrà mandato il messaggio di inizio gioco che farà partire il tutto. Di seguito lo script associato allo sprite sopra:
Ho poi creato gli script per i pesci facendoli muovere da una parte all’altra. Gli script per fish1, fish3 e fish5 sono uguali, ho solo fatto variare le coordinate di partenza.
Dopo ho creato lo script per il polpo (octopus), facendolo muovere solo lungo l’asse delle y e facendogli cambiare costume.
Poi ho creato lo script per la stella marina, facendola scomparire per 12 secondi dopo che viene mangiato dallo squalo.
Ci rimane adesso lo script per lo squalo che si muoverà grazie all’uso delle frecce direzionali. Ho fatto in modo che ogni 0.1 secondi cambiasse costume spalancando la bocca per mangiare i pesciolini. Le vite diminuiscono ogni volta che tocca il granchio (crab) e infine passa al costume shark-c che lo rappresenta sfinito!!
Infine ho inserito i due script game over e vittoria!
Chiaramente, questa è solo una base di partenza, potete personalizzarlo come meglio credete.
Per chi volesse scaricare il file completo di Scratch, può cliccare sotto: