Sei sulla pagina 1di 42

03-04-2019

GIUSEPPE DEL FIORE


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 2


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 3


DUE DOMANDE

1. Cos’è il pensiero computazionale?

2. Cos’è il coding?

Ing. Giuseppe Del Fiore 03/04/19 4


Definizione
Il pensiero computazionale (Computational Thinking) è il
processo mentale coinvolto nella formulazione di un problema e
nell’espressione delle sue soluzioni, in modo che possano esser
effettivamente portate a termine da un esecutore – umano o
artificiale

In poche parole…
Il pensiero computazionale è la capacità di risolvere un
problema pianificando una strategia

Ing. Giuseppe Del Fiore 03/04/19 5


È la palestra del pensiero computazionale
Coding, codifica, codice…
L’atto in cui si scrive codice utile a definire comandi che una macchina
eseguirà.
La nostra vita quotidiana è caratterizzata da codici, da linguaggi di programmazione utili a compiere
azioni come:
- Leggere la posta elettronica

- Interagire con Facebook

- Prelevare al bancomat

- Inviare un sms

- Acquistare un biglietto del bus da un dispositivo automatico, ecc.


Ing. Giuseppe Del Fiore 03/04/19 6
Coding, codifica, codice…

Ing. Giuseppe Del Fiore 03/04/19 7


Programmazione a Blocchi

Ing. Giuseppe Del Fiore 03/04/19 8


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 9


Realizzare App Android senza conoscere nessun
linguaggio di programmazione (Java)
q Progetto ideato e realizzato nei laboratori di Google

q 10 Agosto 2011 ceduto al MIT Massachusetts Institute of Technology

q 03 Dicembre 2013 versione 2

Ing. Giuseppe Del Fiore 03/04/19 10


Creare una nuova app

Cosa ci serve?

1. Computer

2. Connessione ad internet

3. Account Gmail

4. Uno smartphone o tablet Android

Ing. Giuseppe Del Fiore 03/04/19 11


Operazioni preliminari
1. Login con account Google

2. Permettere al MIT di accedere al

proprio account Google

3. Accettare le condizioni d’uso

4. Cambiare la lingua

5. Creare un nuovo progetto

6. Dare un nome al progetto

Ing. Giuseppe Del Fiore 03/04/19 12


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 13


Main Bar

Componenti
utilizzati
Schermata di
progettazione

Proprietà della
componente selezionata
Componenti disponibili: unità minime
coinvolte nella costruzione di un app

Ing. Giuseppe Del Fiore 03/04/19 14


Blocchi disponibili: consentono di definire come la
nostra app dovrà comportarsi a seguito, ad esempio, di un
particolare input dell'utente, o dopo un fissato lasso di tempo

Ing. Giuseppe Del Fiore 03/04/19 15


Button Il classico pulsante grafico
CheckBox Casella di scelta (true/false)
DatePicker Apre un pop-up per la selezione di una data
Image Mostra un’immagine
Label Una stringa testuale
ListPicker Permette di selezionare un elemento da una lista
ListView Consente di creare una lista di elementi testuali
Notifier Consente di creare notifiche
PasswordTextBox Campo per l'inserimento di password (nascosta)
Screen E’ l'elemento genitore (lo schermo) che contiene tutti gli altri
Slider Genera una barra con all'interno un cursore draggabile
Spinner Apre un menu di scelta multipla
TextBox Campo per l'inserimento di testo
TimePicker Apre un pop-up per la selezione di un orario
WebViewer Consente di aprire una URL remota
Ing. Giuseppe Del Fiore 03/04/19 16
La gestione del layout è basata su una serie di
contenitori che consentono di creare una sorta di
griglia che si adatta alle dimensioni dello
schermo
HorizontalArrangement Gestisce diversi elementi impilandoli orizzontalmente
HorizontalScrollArrangement (da sinistra a destra)
VerticalArrangement Gestisce diversi elementi affiancandoli verticalmente
VerticalScrollArrangement (dall’alto verso il basso)
TableArrangement Consente di creare un layout tabellare

Ing. Giuseppe Del Fiore 03/04/19 17


Dimensioni dei componenti
q Automatico: si adatta al contenuto
q Riempi il contenitore: riempi tutto lo spazio nel
componente attuale
q x pixels: dimensioni esatte (sconsigliato)
q x percent: rispetto alla dimensione dello schermo

Nello screen1 (vale per tutti gli schermi), è possibile


selezionare la versione responsive (default: fixed)

Ing. Giuseppe Del Fiore 03/04/19 18


Camcorder Apre la videocamera integrata nel device per la registrazione di un video
Camera Apre la videocamera integrata nel device per scattare una foto
Consente di selezionare un'immagine tra quelle presenti nella galleria del
ImagePicker
dispositivo
Consente di riprodurre un file audio e di controllare la vibrazione del device
Player
(consigliato per file audio di lunga durata)
Consente di riprodurre un file audio e di controllare la vibrazione del device
Sound
(consigliato per file audio di breve durata)
Consente di accedere al microfono integrato nel device per effettuare una
SoundRecorder
registrazione audio
Consente di attivare la funzionalità di riconoscimento vocale integrata in Android al
SpeechRecognizer
fine di convertire un parlato in testo
Consente di trasformare un testo in un parlato attraverso un sintetizzatore vocale
TextToSpeech
(tra i vari linguaggi è supportato anche l'italiano)
Consente di riprodurre un file video all'interno di un player dotato dei normali
VideoPlayer
comandi attivabili al touch dell'utente
Consente di effettuare traduzioni in tempo reale attraverso le API offerte dal
YandexTranslate
traduttore automatico di Yandex

Ing. Giuseppe Del Fiore 03/04/19 19


Crea uno sprite circolare che si muove secondo le proprietà ad esso
Ball
assegnate
Pannello rettangolare bidimensionale sensibile al touch all'interno del
Canvas
quale è possibile disegnare e riprodurre animazioni
Crea uno sprite sulla base di un'immagine che si muove secondo le
ImageSprite
proprietà ad esso assegnate

Ing. Giuseppe Del Fiore 03/04/19 20


AccelerometerSensor Intercetta lo scuotimento del dispositivo e ne misura le accelerazioni
BarcodeScanner Consente di leggere un codice a barre
Fornisce l’ora corrente, permette di attivare allarmi ad intervalli
Clock
regolari, permette di fare calcoli che coinvolgono date e ore
Consente di accedere alle informazioni di geolocalizzazione
LocationSensor
(latitudine, longitudine, altitudine e indirizzo)
NearField Consente di accedere alle funzionalità NFC
OrientationSensor Consente di rilevare l'orientamento del device
Può rilevare la velocità angolare nelle tre dimensioni, misurata in gradi
GyroscopeSensor
per secondo
Pedometer Rileva il numero di passi effettuati, usando l’accelerometro

Ing. Giuseppe Del Fiore 03/04/19 21


Consente di effettuare la scelta di un contatto tra quelli disponibili
ContactPicker
nella rubrica del device
Consente di inserire una casella di testo con auto-completamento
EmailPicker all'interno della quale può essere digitato il nome di un contatto o un
indirizzo email
Componente non visibile che consente di effettuare una chiamata ad
PhoneCall
un numero prestabilito
PhoneNumberPicker Mostra i numeri di telefono dei contatti presenti nella rubrica
Componente non visibile che consente di condividere file o messaggi
Sharing
tra l'applicazione ed altre app installate sul device
Consente di inviare un messaggio di testo con un messaggio e ad un
Texting
numero predefinito
Consente di comunicare con Twitter ed effettuare alcune operazioni
Twitter
come, ad esempio, inviare un tweet

Ing. Giuseppe Del Fiore 03/04/19 22


Componente non visibile che consente di scrivere e/o leggere un
File
file all'interno del device
Componente non visibile che consente di comunicare con Google
FusionTablesControl Fusion Tables (un servizio sperimentale di Google che consente di
gestire e condividere data tables)
Componente non visibile che consente di memorizzare (e leggere)
TinyDB dati all'interno di una sorta di database (estremamente semplificato)
mediante un meccanismo di tags
Componente non visibile che consente di interagire con un web-
TinyWebDB
service per la memorizzazione (e la lettura) dati in remoto

Ing. Giuseppe Del Fiore 03/04/19 23


Consente di lanciare una nuova activity (ad esempio è possibile aprire
ActivityStarter il browser con una pagina preselezionata o effettuare una ricerca su
Google)
BluetoothClient Consente di attivare un client Bluetooth
BluetoothServer Consente di attivare un server Bluetooth
Componente non visibile attraverso il quale è possibile inoltrare
Web
chiamate HTTP mediante GET, POST, PUT e DELETE

Componenti che consentono di interagire, attraverso Bluetooth, coi robot della famiglia
MINDSTORMS prodotti dalla LEGO

Ing. Giuseppe Del Fiore 03/04/19 24


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 25


Eventi: when ... Do
Quando succede X fai Y

Metodi: azione che può essere


compiuta da un componente

Proprietà: caratteristica di un
componente che può essere
manipolata

Ing. Giuseppe Del Fiore 03/04/19 26


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 27


Definire una stringa Operazioni comuni: trim, upcase,
downcase, length, is empty

Unire più stringhe Dividere una stringa

Confrontare due stringhe Tagliare una stringa

Inizia o Contiene Effettuare sostituzioni

Ing. Giuseppe Del Fiore 03/04/19 28


Definire un numero Operazioni comuni: addizione, sottrazione,
moltiplicazione, divisione, potenza

Massimo e minimo Numeri casuali

Formattare numero
Arrotondamenti
decimale

Verificare se è
Comparazione: =, ≠, >, ≥, <, ≤
un numero

Ing. Giuseppe Del Fiore 03/04/19 29


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 30


Porzioni di memoria all'interno delle quali vengono immagazzinate delle
informazioni affinché possano essere utilizzate nella fase di elaborazione del
programma

Variabili Locali
Variabili Globali

Assegnare un valore

Recuperare un valore

Ing. Giuseppe Del Fiore 03/04/19 31


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 32


Controllo di flusso Cicli Controllo
dell’applicazione

Ing. Giuseppe Del Fiore 03/04/19 33


Uguale e
Valori booleani
diverso

Negazione And e Or

Ing. Giuseppe Del Fiore 03/04/19 34


Impostare un colore

Impostare un colore personalizzato

Ricavare il valore RGB da


un determinato colore

Ing. Giuseppe Del Fiore 03/04/19 35


Una lista è struttura dati astratta e dinamica che denota una collezione
omogenea di dati. Gli elementi contenuti sono contraddistinti da un indice
numerico che parte da 1. Una lista può contenere al suo interno altre liste.

Tre operazioni comuni

Ing. Giuseppe Del Fiore 03/04/19 36


Una procedura è un insieme di blocchi nativi che vengono raggruppati insieme per assolvere
ad una funzione specifica astraibile dal contesto generale. Ogni procedura potrà essere
richiamata all'interno dell'applicazione passando eventuali argomenti ed ottenendo in risposta
l'elaborazione attesa

Esempio: somma
di due numeri

Ing. Giuseppe Del Fiore 03/04/19 37


q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 38


Un database è un insieme di strutturati, memorizzati in modo persistente su un
device, che sono interrogabili utilizzando opportune chiavi di accesso

TinyDB: permette di salvare dati sulla memoria TinyWebDB: è un componente che comunica
del telefono mediante l’associazione a dei tag con un servizio Web al fine di memorizzare e
Dispone di 5 metodi: recuperare informazioni organizzate
§ ClearAll() - cancella tutti i dati dell'app
mediante l’associazione a dei tag
§ ClearTag(tag) - cancella i dati associati allo specifico tag

§ GetTags() - restituisce un elenco di tutti i tag presenti


nel data store
§ GetValue(tag, valueIfTagNotThere) - restituisce il valore
corrispondente ad uno specifico tag o, qualora questo sia
vuoto, il valore di default specificato
in valueIfTagNotThere
§ StoreValue(tag, valueToStore) - salva un dato valore
(valueToStore) associandolo ad un dato tag

Ing. Giuseppe Del Fiore 03/04/19 39


API (Application Programming Interface): è una risorsa remota, raggiungibile tramite una
connessione di rete, che assolve ad uno specifico compito e ne restituisce il risultato
all'applicazione stessa che lo potrà utilizzare come se l'intero processo fosse stato gestito in loco

WEB: componente che permette di Esempio: interagire con la risorsa di Yahoo Finance
eseguire le principali richieste http://finance.yahoo.com/d/quotes.csv?f=l1&s=CODICE
HTTP al fine di sviluppare un app che consenta, al click su un pulsante,
di visualizzare il prezzo attuale di un’azione, il cui codice è
§ GET: prelevare informazioni di una specificato in una casella di testo (Es.‘GOOG’ per Google)

risorsa

§ POST: creare un nuova risorsa

§ PUT: aggiornare una risorsa

§ DELETE: cancellare una


determinata risorsa
Ing. Giuseppe Del Fiore 03/04/19 40
q Coding e Pensiero Computazionale
q Introduzione a Mit App Inventor 2
q Architettura di una app: components e behaviors
q I controlli di base: eventi, metodi e proprietà
q Stringhe, numeri, operazioni e funzioni matematiche
q Gestire le variabili
q Strutture di controllo, liste e procedure
q Interazione con i Database e API
q Condividere e distribuire un app

Ing. Giuseppe Del Fiore 03/04/19 41


Condividere il progetto Condividere un file Pubblicazione su
eseguibile Google Play

In screen1 inserire e
modificare in fase di
aggiornamento

Il file .apk generato sarà


pubblicato su Google play
seguendo le procedure
riportate su questa pagina
Ing. Giuseppe Del Fiore 03/04/19 42

Potrebbero piacerti anche