Pensiero computazionale Lezione 10 MIT AppInventor
Ripetizioni Dov è Ripeti 10 volte? Cosa succede: La variabile number assume i valori 1,2,.,9,10 by è l incremento A quel punto il ciclo termina Potete utilizzarla oppure no Nota: La variabile number esiste solo all interno del ciclo Errore
Codice equivalente Esempio: python for number in range(1,11): print(number) print( Finito! ) Alcuni commenti: range(1,11) restituisce i numeri da 1 a 10 utilizziamo l indentazione per stabilire quali comandi fanno parte del ciclo e quali no In altri linguaggi si fa uso delle parentesi graffe
Ripetizioni E possibile scorrere tutti gli elementi di una lista La variabile item assume i valori alberto, alice, federica, francesco Come prima, esiste solo all interno del ciclo
Codice equivalente Esempio: python lista=[ alberto, alice, federica, francesco ] for item in lista: print(item) print( Finito! )
Ripetizioni Il ciclo while viene eseguito fintanto che la condizione associata è vera Ripeti per sempre: Attenzione, probabile consumo batteria Cerca un elemento nella lista
Codice equivalente Esempio: python lista=[ alberto, alice, federica, francesco ] indice = 0 while lista[indice]!= federica : indice = indice+1 print(indice) Stampa: 2
Liste E possibile creare liste vuote Aggiungere valori dinamicamente
Liste E possibile creare liste vuote Aggiungere valori dinamicamente F (n) = ( F (n 1) + F (n 2) n>1 1 n apple 1
Codice equivalente Esempio: python L=[1,1] for i in range(10): L.append(L[len(L)-1] + L[len(L)-2]) print(l) Stampa: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]
Contenuto delle liste Le liste possono contenere qualunque oggetto
Ci sono due tipi di procedure Procedure Quelle che eseguono delle azioni, senza restituire un risultato Quelle che eseguono delle azioni e restituiscono un risultato (funzioni) Simile alla funzionalità Nuovi blocchi di Scratch
Parametri E possibile aggiungere parametri cliccando sul simbolo *
Una volta creata una procedura, è possibile inserire blocchi all interno Questa procedura disegna una croce su un canvas Parametri
Parametri Una volta completata una procedura, è possibile invocarla Questi blocchi disegnano una croce su tutto il canvas
Funzioni Una funzione può restituire un valore Questa funzione calcola il fattoriale di un numero Sono presenti due blocchi particolari: variabile locale (initialize local) un blocco che restituisce un valore
Codice equivalente Esempio: python def factorial(n): tot = 1 for i in range(2,n+1): tot = tot*i return tot print(factorial(10)) Stampa: 3628800
Database Database E possibile memorizzare informazioni in un database associato all applicazione TinyDB - http://ai2.appinventor.mit.edu/reference/components/storage.html ClearAll(): Clear the entire data store in the TinyDB. ClearTag(text tag): Clear the entry with the given tag. any GetTags(): Return a list of all the tags in the TinyDB. any GetValue(text tag, any valueiftagnotthere): Retrieve the value stored under the given tag. If there's no such tag, then return valueiftagnotthere. StoreValue(text tag, any valuetostore): Store the value under the given tag. The storage persists on the phone when the app is restarted.
Aggiungerlo è semplice Creare il database Basta trascinare TinyDB nell area del Viewer TinyDB non ha proprietà
Esempio: gestione punteggio massimo (record) Per aggiungere un elemento, si aggiunge semplicemente una coppia (tag, valuetostore) Il nome del tag lo decidete voi Il valore viene associato al tag specificato Esempio di gestione del punteggio massimo: Questo blocco scrivere nella label lblrecord il valore registrato nel tag record, oppure 0 se non c è nessun valore (è la prima volta che si gioca)
Esempio: gestione punteggio massimo (record) Per aggiungere un elemento, si aggiunge semplicemente una coppia (tag, valuetostore) Il nome del tag lo decidete voi Il valore viene associato al tag specificato Esempio di gestione del punteggio massimo: Se il valore del punteggio appena ottenuto è maggiore del record, si memorizza il nuovo punteggio nel tag record
Esercizi per oggi: http://www.bbuio.it/didattica/appinventor/ Provate il numero 5 (liste, database) https://www.dropbox.com/sh/t9ambiww4neoudq/5dkbmyr5jr? n=146248414 Provate il numero 14 (liste) Componenti: Hour of Python: https://hourofpython.com/ Risorse in Italiano: http://www.mrwebmaster.it/android/guide/guida-app-inventor/ http://seblogapps.blogspot.it/p/elenco-tutorial.html Risorse in Inglese http://www.appinventor.org/book2 http://explore.appinventor.mit.edu/tutorials