[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:04.68,Default,,0000,0000,0000,,Fino ad ora abbiamo scritto codice con if-test. E se il risultato è Dialogue: 0,0:00:04.68,0:00:08.98,Default,,0000,0000,0000,,vero, allora otteniamo a schermo le rows [NdT righe] dai dati. Quindi, in questa piccola sezione, voglio mostrarvi come, Dialogue: 0,0:00:08.98,0:00:13.38,Default,,0000,0000,0000,,invece, potete contare il numero di rows nelle quali l'if-test è vero. Dialogue: 0,0:00:13.38,0:00:17.62,Default,,0000,0000,0000,,E questo è molto simile a ciò che si fa veramente con i computer. Allora Dialogue: 0,0:00:17.62,0:00:21.96,Default,,0000,0000,0000,,per farlo, dobbiamo aggiungere del codice a quello che Dialogue: 0,0:00:21.96,0:00:26.00,Default,,0000,0000,0000,,abbiamo. Allora, è tutto scritto qui, ma ve lo mostro in questo esempio Dialogue: 0,0:00:26.00,0:00:30.40,Default,,0000,0000,0000,,di codice. Ci sono tre cose che devono essere aggiunte per poter contare. La prima è Dialogue: 0,0:00:30.40,0:00:34.59,Default,,0000,0000,0000,,l'introduzione di una nuova variabile, con la quale potrò contare. La imposterò Dialogue: 0,0:00:34.59,0:00:38.53,Default,,0000,0000,0000,,a zero e lo faccio prima dell'inizio del loop. Quindi, Dialogue: 0,0:00:38.53,0:00:43.16,Default,,0000,0000,0000,,count è uguale a zero. Poi, dentro al loop, dentro all'if-statement, dove Dialogue: 0,0:00:43.16,0:00:48.16,Default,,0000,0000,0000,,stamperei le row come abbiamo fatto molte volte. Ma allora avrò Dialogue: 0,0:00:48.16,0:00:52.91,Default,,0000,0000,0000,,anche questo codice: count=count+1. Ed è una linea divertente. Dialogue: 0,0:00:52.91,0:00:57.47,Default,,0000,0000,0000,,Vi dirò cosa fa. Quanlunque valore sia immagazinato in count Dialogue: 0,0:00:57.47,0:01:02.01,Default,,0000,0000,0000,,aumenta di uno. Quindi passa da cinque a sei, o da dieci a undici, Dialogue: 0,0:01:02.01,0:01:06.48,Default,,0000,0000,0000,,Ma lasciate che vi spieghi come funziona. In matematica Dialogue: 0,0:01:06.48,0:01:10.96,Default,,0000,0000,0000,,questa linea non ha molto senso. Un po' come che valore è uguale a se stesso Dialogue: 0,0:01:10.96,0:01:15.95,Default,,0000,0000,0000,,più uno. Ma il motivo per cui funziona in un computer è che la funzione del segno uguale Dialogue: 0,0:01:15.95,0:01:20.48,Default,,0000,0000,0000,,in codice è più semplice che in matematica. E il concetto Dialogue: 0,0:01:20.48,0:01:25.14,Default,,0000,0000,0000,,chiave da capire è che prima considera il lato destro. E poi Dialogue: 0,0:01:25.14,0:01:29.47,Default,,0000,0000,0000,,solo dopo aver risolto ed ottenuto un valore, allora quel valore è immagazzinato Dialogue: 0,0:01:29.47,0:01:33.85,Default,,0000,0000,0000,,nella variabile nel lato sinistro. Immaginiamo la primissima esecuzione. Count è Dialogue: 0,0:01:33.85,0:01:38.19,Default,,0000,0000,0000,,a zero e poi arriva a questa linea. La prima cosa che fa è prendere in considerazione Dialogue: 0,0:01:38.19,0:01:42.36,Default,,0000,0000,0000,,il lato destro. Quindi count è zero, zero più uno è uno. Quindi Dialogue: 0,0:01:42.36,0:01:46.54,Default,,0000,0000,0000,,da questa parte abbiamo uno. Una volta arrivati a questo, lo immagazzina in count così ora Dialogue: 0,0:01:46.54,0:01:50.87,Default,,0000,0000,0000,,count è uno. Potete vedere che l'azione inizia con count Dialogue: 0,0:01:50.87,0:01:54.95,Default,,0000,0000,0000,,che è zero e poi diventa uno. Quindi aumenta. La Dialogue: 0,0:01:54.95,0:01:59.10,Default,,0000,0000,0000,,volta successiva, se l'if-statement è vero, il valore Dialogue: 0,0:01:59.10,0:02:03.66,Default,,0000,0000,0000,,a destra vale uno. Uno più uno fa due, ed ho ottenuto Dialogue: 0,0:02:03.66,0:02:08.10,Default,,0000,0000,0000,,che due sia archiviato in count, che adesso vale due. Dialogue: 0,0:02:08.10,0:02:12.96,Default,,0000,0000,0000,,Quindi, alla fine, non serve un comando generale per queste cose, Dialogue: 0,0:02:12.96,0:02:17.34,Default,,0000,0000,0000,,dovete solo sapere che x=x+1 per una variabile, aumenta sempre Dialogue: 0,0:02:17.34,0:02:22.57,Default,,0000,0000,0000,,di uno, ogni volta che viene eseguito. Allora, dicevo che ci sono tre parti. Abbiamo impostato Dialogue: 0,0:02:22.57,0:02:27.78,Default,,0000,0000,0000,,zero e count=count+1 nell'if-statement e poi Dialogue: 0,0:02:27.78,0:02:33.20,Default,,0000,0000,0000,,alla fine stampiamo qualunque valore sia rimasto in count dopo Dialogue: 0,0:02:33.20,0:02:39.48,Default,,0000,0000,0000,,che il for-loop è stato eseguito. Adesso proviamo. Se eseguo questo ciò che vediamo è che Dialogue: 0,0:02:39.48,0:02:44.20,Default,,0000,0000,0000,,il loop viene eseguito, controlla i nomi che iniziano con "A". Dialogue: 0,0:02:44.20,0:02:48.98,Default,,0000,0000,0000,,Vediamo tutti questi nomi che iniziano per "A". Poi, alla fine, c'è questa line "count:258" Dialogue: 0,0:02:48.98,0:02:54.13,Default,,0000,0000,0000,,Quello che ci mostra è che quando il for-loop è iniziato count era a zero. Dialogue: 0,0:02:54.13,0:02:58.73,Default,,0000,0000,0000,,The for-loop ha fatto tutti i suoi conti. L'if-statement era vero, sembra, 258 volte Dialogue: 0,0:02:58.73,0:03:03.63,Default,,0000,0000,0000,,su 2.000 valori. E otteniamo questo "count: 258". Che compare a schermo Dialogue: 0,0:03:03.63,0:03:08.17,Default,,0000,0000,0000,,per questa linea. Che viene eseguita solo dopo il loop, dopo che tutte le Dialogue: 0,0:03:08.17,0:03:12.81,Default,,0000,0000,0000,,stampe interne sono state fatte. Ok, adesso facciamo un po' di esperimenti. Una cosa semplice Dialogue: 0,0:03:12.81,0:03:17.29,Default,,0000,0000,0000,,da fare è, beh, e se togliessi i print dentro al loop? Dialogue: 0,0:03:17.29,0:03:21.82,Default,,0000,0000,0000,,Vediamo, continuerò a cercare attraverso le row, ho ancora l'if-statement, ma Dialogue: 0,0:03:21.82,0:03:25.97,Default,,0000,0000,0000,,l'unica cosa che succede dentro all'if-statement è count=count+1. Dialogue: 0,0:03:25.97,0:03:30.62,Default,,0000,0000,0000,,Solo aumentare di uno. Se eseguo adesso il programma, ottengo semplicemente Dialogue: 0,0:03:30.62,0:03:35.80,Default,,0000,0000,0000,,questa linea. Lo eseguo e semplicemente, bam, 258. Inizia a Dialogue: 0,0:03:35.80,0:03:39.71,Default,,0000,0000,0000,,sembrare più quello che ci si aspetta da un computer, che Dialogue: 0,0:03:39.71,0:03:43.88,Default,,0000,0000,0000,,assimila grandi quantità di dati, li esamina e restituisce Dialogue: 0,0:03:43.88,0:03:47.90,Default,,0000,0000,0000,,una specie di risposta finale. Ok, allora, proviamo qualche problema. Dialogue: 0,0:03:47.90,0:03:52.02,Default,,0000,0000,0000,,E come al solito, otteniamo la variabile come soluzione. Calcoliamo quanti nomi iniziano con "X" e poi Dialogue: 0,0:03:52.02,0:03:56.19,Default,,0000,0000,0000,,paragoniamoli a quanti iniziano con "Y". Allora, se voglio contare quanti nomi iniziano Dialogue: 0,0:03:56.19,0:03:59.75,Default,,0000,0000,0000,,con "X", cambio count e count=count + uno Dialogue: 0,0:03:59.75,0:04:03.62,Default,,0000,0000,0000,,count=count+1 lo posso lasciare. Quindi, dirò, quanti iniziano Dialogue: 0,0:04:03.62,0:04:07.41,Default,,0000,0000,0000,,con "X"? Se lo eseguo, mi darà sei. E adesso, oh beh, e se volessi sapere Dialogue: 0,0:04:07.41,0:04:11.54,Default,,0000,0000,0000,,quanti iniziano con "Y"? Possiamo tenere tutta la struttura Dialogue: 0,0:04:11.54,0:04:16.15,Default,,0000,0000,0000,,e cambiare solo "Y". Il risultato è diciassette, quindi credo che Dialogue: 0,0:04:16.15,0:04:21.28,Default,,0000,0000,0000,,ci siano più nomi che inziano con "Y", molti di più che con "X". Dialogue: 0,0:04:21.28,0:04:26.09,Default,,0000,0000,0000,,Poi vediamo quante bambine ci sono con il nome che inizia con "A", poi cambiamo e contiamo quanti nomi di bambini Dialogue: 0,0:04:26.09,0:04:30.97,Default,,0000,0000,0000,,iniziano con "A". Questo richiederà il materiale della scorsa lezione. Dialogue: 0,0:04:30.97,0:04:39.31,Default,,0000,0000,0000,,Diciamo startsWith("A"). Aggiungiamo e ("&&") row.getField("gender")=="girl" Dialogue: 0,0:04:39.31,0:04:47.14,Default,,0000,0000,0000,,E poi dentro mettiamo Dialogue: 0,0:04:47.14,0:04:55.50,Default,,0000,0000,0000,,count=count+1. Ok, 169. Il prossimo problema è Dialogue: 0,0:04:55.81,0:05:04.15,Default,,0000,0000,0000,,quanti sono i nomi di bambini. Per i bambini mi basta cambiare questo. L'impostazione dell'if Dialogue: 0,0:05:04.15,0:05:10.20,Default,,0000,0000,0000,,e la funzione sono le stesse. E' solo che se prima Dialogue: 0,0:05:10.20,0:05:16.02,Default,,0000,0000,0000,,avremmo scritto print(row), ora abbiamo count=count+1 per fare il conteggio. Dialogue: 0,0:05:16.02,0:05:21.16,Default,,0000,0000,0000,,[incomprensibile] ci sono più nomi [incomprensibile]. Okay, questa è una prima Dialogue: 0,0:05:21.16,0:05:25.02,Default,,0000,0000,0000,,occhiata alle basi del conteggio. Proviamo alcuni esercizi.