DOUG LLOYD: Va bene, allora parliamo di loop. Così i cicli sono genere di freddo perché consentono al programma per eseguire linee di codice più e più e più volte. Ripetutamente, senza dover copiare e incollare o comunque ripeterli. Ci sono tre principali tipi di cicli vedrai. Probabilmente dovrete occasione di usare ciascuno come si procede attraverso CS50. Alcuni di questi cicli sono abbastanza familiare a voi da zero, Così ancora una volta, come abbiamo fatto con condizionali, noi li metteremo fianco a fianco se c'è una analogia possiamo trarre. Il primo è per sempre da zero, che confronta a while (true). Questo è ciò che chiamiamo un ciclo infinito. Le righe di codice tra il riccio bretelle, proprio come i pezzi del puzzle che si adattano all'interno del C del blocco per sempre, eseguirà ripetutamente dall'alto a fondo, più e più e più volte, per sempre. Dopo tutto, se vi ricordate il nostro discussione di espressioni booleane, vero è sempre vero. Quindi, se stiamo facendo qualcosa di così lungo come vero è true-- sembra un po 'Silly-- vero è sempre vero, così che sarà sempre eseguito. Sarà eseguito sempre e mai e mai fino a quando non trovare un modo per uscire di esso con un'istruzione break, che ancora una volta, abbiamo visto un po 'di tempo fa abbiamo stavano parlando di interruttore. O altrimenti solo uccidere il nostro il programma, che tra l'altro, se sei mai trovato in un situazione con un ciclo infinito e non si sa come fermare l'esecuzione del programma. Basta premere il controllo e la C e che uccideranno il vostro programma per voi. Ma questo, di nuovo, è chiamato un ciclo infinito. Si tratta di un ciclo che verrà eseguito per sempre. Ora, mentre i cicli non sono sempre infinita, perché anche possiamo sostituire il booleano espressione con qualcosa un po 'più utile di un semplice vero. Quindi, ecco un altro esempio. Mentre e alcuni booleano espressione e parentesi graffe poi. Questo è più o meno analogo ripetere fino a quando, partendo da zero. Anche se in un secondo, io sarò spiegare la differenza. Quindi, in C, se l'espressione booleana all'interno del ciclo while restituisce true, le linee di codice tra le parentesi graffe eseguirà ripetutamente più e più volte e più volte fino espressione booleana FALSE. Così, per esempio, si potrebbe avere una sorta di contatore. Così si dice all'inizio del questo ciclo dice int x è uguale a zero. Mentre x è inferiore a 100, fare un paio cose all'interno che le parentesi graffe, poi alla fine del ciclo, si dice x plus plus, si sta incrementando x. Alla fine x otterrà a 100 e si vuole fermare perché la condizione x è minore di 100 non sarà più vero come Appena x è uguale a 100. 100 è non inferiore a 100. Ora un po 'confusamente, il comportamento del blocco zero è invertito. Quindi state molto attenti se questa è la prima incursione nel usando i loop. Fondamentalmente, la ripetizione fino blocco Scratch ripeterà qualcosa più e più e più volte, fino l'espressione, la booleana espressione nel esagono è vero. Così sarà continuare a fare fino a quando non è vero. Nel frattempo, il ciclo while sarà continuare a farlo fino a quando non è falso. Quindi sono abbastanza simili, ma c'è quella poca distinzione solo stare attenti soprattutto come si fanno la tua prima incursione da transizione Scratch in c. Il prossimo tipo di ciclo è in realtà abbastanza simile. Si chiama do while. Questo ciclo eseguirà tutte le linee di codice tra le parentesi graffe una volta, e poi si controlla l'espressione booleana. Se l'espressione booleana restituisce true, andrò indietro e ripetere questo processo più e più e soltanto quando i booleano espressione equivale a false. Quindi questo ciclo, a differenza di un ciclo while, è garantito per eseguire almeno una volta. Questo può essere molto utile. Infine, abbiamo un ciclo for. Per i cicli sono di tipo sintatticamente poco attraente e c'è un sacco di cose qui, in modo da portare con me come cerchiamo di rompere questi pezzi a parte. In generale, il caso d'uso di un ciclo for è voi voglio ripetere qualcosa di un certo numero di volte. In questo esempio qui, Ho il blocco di ripetizione da zero, che è analogo al ciclo for in C, ripetendo qualcosa 10 volte. E il ciclo for su là sinistra, che è un ciclo che quattro avrebbe fatto la stessa cosa. Ciò andrebbe 10 volte. Contare da zero, abbiamo incrementare ogni passaggio del ciclo. E continuiamo a farlo fino a quando i è inferiore a 10. Allora, cosa succede? Ci sono un sacco di codice lì. Rompiamo giù a ciò che sta accadendo passo dopo passo come si scava attraverso un ciclo for. La prima cosa che è successo è la variabile contatore è il centro. Tutto a sinistra di quel primo virgola all'interno delle parentesi viene eseguito. In questo caso, siamo dicendo int i è uguale a 0. Dichiarazione di una nuova variabile chiamata i, che le variabili è un tipo intero e stiamo dicendo il valore all'interno tale variabile sarà zero. La seconda cosa che facciamo è abbiamo poi valutare subito l'espressione booleana. Espressione booleana è nella centro dei due punti e virgola. I è inferiore a 10. Questo è vero qui, giusto? Abbiamo appena detto i è uguale a zero e quindi 0 è inferiore a 10, e così quella condizione è vero e ci sarà ora procedere eseguire il corpo del ciclo. Se fosse falso. Se, per esempio, ho detto invece di i è uguale a 0 non vi ho detto che è uguale a 15, int i è uguale a 15. Beh, 15 non è inferiore a 10, in modo da non avrebbe mai entrare nel corpo del ciclo perché l'espressione booleana ci sarebbe valutare falsa. Dopo andiamo attraverso da cima a fondo, incontriamo che parentesi graffa di chiusura, una terza cosa succede. La variabile contatore è incrementato, o meglio, le linee di codice di una dichiarazione dopo la secondo virgola all'interno della per loop parentesi viene eseguito. Quindi partiamo da dicendo int i è uguale a 0. Poi controlliamo se l'espressione booleana è vera. 0 è inferiore, 10 quindi è vero. Così stiamo andando a procedere nel corpo del ciclo. Le cose accadranno all'interno del ciclo, e quando incontriamo che graffa chiusa brace, la prossima cosa che fare è diciamo i più, più. Ero a zero ora ho è uno. Poi, abbiamo ancora una volta controllare il valore di l'espressione booleana nel mezzo. Uno è inferiore a 10. Quindi andremo attraverso questo elaborare ancora e ancora. Arriveremo alla chiusura di nuovo parentesi graffa. Ti incrementiamo i da 1 a 2 e da 2 a 3. E così via e così via e così via, fino alla fine i valori del diventa 10. È 10 meno di 10? No. Contando da 0, siamo andati attraverso 10 iterazioni di ciclo. Abbiamo ripetuto 10 volte, solo come abbiamo fatto nel blocco Scratch. E così che è fondamentalmente la processo per quattro loop. Ora togliere il codice vero e proprio e la messa in appena alcune affermazioni generali di base. Ecco cosa succede. Tutte le dichiarazioni in iniziare vengono eseguiti prima. Si potrebbe avere più di una. Poi, l'espressione booleana è selezionata. Se l'espressione restituisce true, eseguire il corpo del ciclo una volta. Se l'espressione valuta false, abbiamo finito. Noi non eseguiamo il corpo del ciclo affatto. Dopo che abbiamo eseguito il corpo del ciclo una volta, noi allora facciamo ciò che è in la parte di incremento lì. Che di solito è sarà qualcosa come i più, più o qualcosa di simile, che modifica una variabile contatore. Poi, dopo incrementiamo, abbiamo controllare di nuovo l'espressione e ripetere i passi più e più e oltre fino l'espressione è non è più vero. Ma quali sono i casi d'uso di un ciclo? Utilizzare di utilizzare un ciclo while quando si vuole un ciclo per ripetere un numero imprecisato di volte, ma possibilmente potrebbe non funzionare affatto. Un esempio molto comune di un po 'di loop in uso è quello di eseguire il flusso di controllo per un gioco. Si potrebbe non sapere per quanto tempo il utente sta per giocare, ma si desidera mantenere facendo la stessa cosa. Aggiornamento delle posizioni di vari sprite sulla scheda. Si desidera mantenere le cose movimento in ogni momento, ma non si sa quando la utente sta per smettere di giocare o quando stanno andando a corto di vita. Quindi un ciclo while è davvero buono per qualcosa di simile. Questo è un buon caso d'uso. Per un ciclo Do While, è piuttosto simile. Volete un ciclo per ripetere uno sconosciuto numero di volte, ma almeno una volta. È possibile utilizzare questo per un gioco troppo, ma un caso molto comune l'uso si richiede all'utente per l'input. In generale, si potrebbe dire qualcosa come, mi danno un numero intero positivo, e si potrebbe mettere che all'interno di un ciclo Do While. Così sarà sempre chiedere loro di almeno una volta per un intero positivo. Se ti danno un numero intero positivo, si potrebbe uscire dal giro. Si potrebbe essere fatto. L'espressione booleana in nel frattempo fare potrebbe essere falso. E non sarà chiedere loro di nuovo. Se ti danno un numero negativo in cui si digita una parola o qualcosa che è non molto utile a si, è possibile utilizzare il do ciclo while per tornare indietro e fare ancora e ancora e ancora. Sicuramente si desidera chiedere loro di dare un numero, una volta, ma non sai quante volte dopo di che potrebbero essere nocivi. E così un fare mentre è un grande uso caso per chiedere conferma all'utente per l'input. E un loop per uso caso tipico è quando si desidera ripetere un ciclo un numero discreto di volte, anche se non si potrebbe conoscere il numero di volte Attualmente il programma viene compilato. Così, per esempio, forse avete un programma dove richiedere all'utente un numero. Ed entrano 100. E poi il vostro ciclo for sarà in tal caso, eseguire 100 volte. O forse entrano 1.000 nel programma e quindi eseguire il ciclo 1000 volte. È un certo numero di volte. Essi non necessariamente sapere che cosa quel numero è il programma viene compilato momento. Non è come un ciclo while dove potrebbe essere infinita. E 'piuttosto un numero che proprio non lo so. Ora, anche se ho delineati tutti questi casi d'uso, dovete sapere che in condizioni abbastanza molto ogni circostanza, si può scambiare tutto tre di questi cicli. È possibile utilizzare un ciclo for in cui si altrimenti utilizzare un ciclo while. È possibile utilizzare un ciclo for, ovunque devi usare un do while e così via. Può essere un po 'difficile a volte, così generalmente si tratta di una buona pratica di aderire a un tipico caso d'uso. Utilizzare un ciclo Do While se volevamo qualcosa una volta, almeno. Utilizzare un ciclo for, se si vuole fare qualcosa di un certo numero di volte. Dopo tutto, è per questo che ci sono tre diversi tipi di cicli. Così possono essere usati nel giusto contesto. Ma si può interscambiare loro se si vuole. Se ti trovi bene con loop, mentre e si desidera utilizzare sempre cicli while. E 'qualcosa che si può fare, anche se potrebbe essere un po sintatticamente difficile, dove un ciclo for sarebbe molto più semplice. Il mio nome è Doug Lloyd e questo è CS50.