Doug LLOYD: Todo ben, entón imos falar sobre loops. Entón lazos son unha especie de arrefecer porque permiten que o seu programa para realizar liñas de código máis e máis e máis. Repetidamente, sen ter que copiar e pega ou non repetir a eles. Existen tres grandes tipos de loops que podes ver. Probablemente vai ter a oportunidade de usar cada un a medida que avanza a través CS50. Algúns deses lazos son bastante familiar para ti a partir de cero, Entón, de novo, como fixemos con condicionais, nós imos poñer-los de xeito conxunto se hai unha analoxía que podemos sacar. En primeiro lugar é para sempre a partir de cero, o que compara con while (true). Isto é o que chamamos un loop infinito. As liñas de código entre o rizado tirantes, así como as pezas do puzzle que se encaixan no interior do C do bloque para sempre, executará repetidamente dende arriba abaixo, máis e máis e máis, para sempre. Ao final, se recorda nosa discusión de expresións booleanas, verdade é certo. Entón, se estamos facendo algo tan longo como verdadeiro é true-- parece un pouco silly-- verdade é certo, polo que sempre vou correr. Vai executar para sempre e sempre e sempre, ata que atopar unha forma de saír dela con unha instrución break, que unha vez máis, vimos hai pouco nos estaban falando switch. Ou doutra forma só matar nosa programa, que, de feito, se algunha vez atopa-se nun situación cun loop infinito e non sabe como deixar o seu programa sexa executado. Só ten que premer en control e C e que vai matar o seu programa para ti. Pero este, de novo, é chamado un loop infinito. É un ciclo que vai executar para sempre. Agora, mentres lazos non son sempre infinito, porque podemos substituír o booleano expresión con algo un pouco máis útil que certo. Entón, aquí está outro exemplo. Mentres algúns booleana e expresión e chaves, a continuación, rizado. Iso é moi fermoso análogo repetir ata que, a partir de cero. Aínda que nunha segunda, eu vou explicar a diferenza. Así, en C, a expresión booleana dentro do loop while avalía como true, as liñas de código entre as chaves levará a cabo varias veces, unha e outra e máis ata expresión booleana valorada como falsa. Así, por exemplo, pode ter algún tipo de contador. Entón diga que a principios do ese bucle dicir int x é igual a cero. Mentres x é inferior a 100, fai un par cousas dentro daquela chaves, entón, ao final do seu ciclo, di x plus plus, está incrementando x. Finalmente x terá a 100 e deixar porque a condición x é inferior a 100 deixará de ser verdade como logo que x é igual a 100. 100 non sexa inferior a 100. Agora un pouco confusa, o comportamento do bloque cero é invertida. Entón, ter moito coidado se este é súa primeira incursión usando loops. Basicamente, a repetición ata que o bloque no scratch vou repetir algo máis e máis e máis, ata que a expresión, a booleana expresión no hexágono é certo. El seguirá facendo lo ata que é certo. Mentres tanto, o loop while será seguir a facelo ata que é falso. Entón son moi similares, pero hai que pouca distinción só ter coidado especialmente de como fai súa primeira incursión de transición riscar en c. O seguinte tipo de lazo é realmente moi similar. Chámase a facer mentres loop. Este ciclo pode realizar todas as liñas de código entre as chaves dunha vez, e, a continuación, pode comprobar a expresión booleana. Se a expresión booleana avalía a verdade, vai volver e repetir que proceso máis e máis e máis ata que o booleano expresión é valorada como falsa. Polo tanto, este loop, a diferenza dun loop while, é garantir a realizar polo menos unha vez. Isto pode ser moi útil. Para rematar, temos un lazo for. Loops son unha especie de sintaticamente pouco atractivo e hai moita cousa a suceder aquí, para ter comigo como nós tentar romper esas pezas separadas. Xeralmente, o caso de uso dun loop for é vostede quero repetir algo un número específico de veces. Neste exemplo aquí, Eu teño o bloque de repetición a partir de cero, o que é análogo ao bucle for en C, repetindo 10 veces algo. E o loop for en á esquerda alí, o que é un circuíto que catro faría o mesmo. Este sería 10 veces. Contando desde cero, nós incrementar cada paso do loop. E nós continuar facendo iso ata que eu sexa inferior a 10. Entón o que ocorre? Hai unha morea de código alí. Imos división la o que está a suceder paso a paso como nós cavar a través dun loop. O primeiro que pasou é a variable do contador é o centro. Todo á esquerda daquel primeiro punto e coma dentro dos parénteses é executado. Neste caso, estamos dicindo int i é igual a 0. Declarando unha nova variable chamada i, que as variables é un tipo enteiro e estamos dicindo o valor dentro esa variable será cero. A segunda cousa que facemos é Nós, entón, avaliar inmediatamente a expresión booleana. Expresión booleana está no medio dos dous puntos e comas. I é inferior a 10. Isto é certo aquí, non? Nós só dixo que eu é igual a cero, e así por 0 é inferior a 10, e de xeito que a condición é certo e nós agora continuar para realizar o corpo do lazo. Se era falsa. Se, por exemplo, eu dixen ao contrario de i é igual a 0 alí dixen i é igual a 15, int i é igual a 15. Ben 15 é igual ou superior a 10, polo que nunca entrar no corpo do loop porque a expresión booleana non sería avaliada como falsa. Despois de que pasamos de arriba abaixo, nos atopamos con que claves de peche, unha terceira cousa acontece. A variable contador é incrementado, ou mellor, as liñas de código de unha instrución despois do segundo punto e coma no para loops parénteses é executado. Entón, imos comezar por dicindo int i é igual a 0. A continuación, comprobar se hai ou non a expresión booleana é certa. 0 é menor que, 10 polo que é certo. Entón, nós estamos indo para continuar para dentro do corpo do ciclo. As cousas van ocorrer dentro do loop, e cando nos atopamos con que de peche cinta, a seguinte cousa que facer é dicir que eu plus, plus. Eu era cero agora é un deles. Entón, unha vez comprobar o valor de A expresión booleana no medio. Unha delas é inferior a 10. Entón, imos pasar por iso procesar de novo e de novo. Nós imos chegar ao peche chaveta novo. Imos incrementar i de De 1 a 2 e de 2 a 3. E así por diante e así por diante e así por diante, ata que Finalmente eu de valor se fai 10. 10 é inferior a 10? Non. Contando desde 0, temos ido a través de 10 iteracións do loop. Temos repetido 10 veces, só como fixemos no bloque de borrador. E por iso é basicamente o proceso para un loop de catro. Agora aproveitar a código real e colocando- en só algunhas declaracións xerais básicos. Mira o que acontece. Todas as declaracións en comezar son executados primeiro. Pode ter máis dun. A continuación, a expresión booleana é comprobada. Se a expresión é valorada como certa, realizar o corpo do loop dunha soa vez. Se a expresión é valorada como falso, estamos a facer. Non realizar o corpo do circuíto en todo. Despois temos o executado corpo do circuíto de novo, que, a continuación, facer o que está a parte incremento alí. Que é xeralmente vai ser algo así como i plus, ademais de ou algo así, que modifica unha variable de contador. Entón, despois de que incrementar, nós comprobar a expresión de novo e repita os pasos máis e máis e máis ata que a expresión é non é máis certo. Entón, cales son os casos de uso dun loop? Use usa un loop while cando quere un loop para repetir un número descoñecido de veces, pero el posiblemente pode non funcionar todos. Un exemplo moi común de un ao bucle en uso é executar o fluxo de control para un xogo. Pode non saber canto tempo o usuario estará xogando, pero quere manter facendo o mesmo. Actualizar os cargos de varios sprites no cadro. Quere manter as cousas movéndose en todo momento, pero non sabe cando o usuario vai deixar de xogar ou cando eles están indo a executar para fóra de vidas. Así, un loop while é realmente bo para algo así. Isto é un bo caso de uso. Para un loop Do While, é moi similar. Quere un loop para repetir un descoñecido número de veces, pero polo menos unha vez. Podes usar isto para un xogo tamén, pero un caso de uso moi común é avisar o usuario para entrada. Xeralmente, pode dicir algo como, me dar un enteiro positivo, e pode poñer isto dentro dun loop Do While. Polo que vai sempre lles pedir a menos unha vez por un enteiro positivo. Se eles dan-lle un enteiro positivo, pode saír do loop. Pode ser feito. A expresión booleana en facendo mentres pode ser falsa. E non vai pedir-lles novo. Se eles dan-lle un número negativo, onde eles tipo algunha palabra ou algo que se non é realmente útil para vostede, pode utilizar o Do While loop para volver e facer iso de novo e de novo e de novo. Definitivamente quero preguntar los a darlle un número novo, pero non sabe cantas veces despois de que poden ser pragas. E así a facer mentres el é un gran uso caso para avisar o usuario para entrada. E unha para loops usar caso é tipicamente cando que quere repetir un loop un número discreto de veces, aínda que quizais non saber o número de veces o momento en que o programa está feita. Así, por exemplo, é posible que teña un programa onde solicitar ao usuario un número. E eles entran 100. E entón o seu ciclo é vontade Nese caso correr 100 veces. Ou que eles entran 1000 no seu programa e despois executar o loop de 1.000 veces. É un número específico de veces. Non necesariamente saber o que este número é o programa de momento está feita. Non é como un loop while onde podería ser infinita. É si un número que simplemente non sei. Agora mesmo teño delineados todos estes casos de uso, ten que saber que en moi moi todas as circunstancias, pode cambiar todo tres destes ciclos. Podes usar un loop onde doutro xeito, usar un loop while. Podes usar un loop onde queira pode usar un loop Do While e así por diante. Pode ser un pouco complicado, ás veces, de modo xeral, é unha boa práctica a unirse a un caso de uso típico. Use un loop Do While se quería algo xa, polo menos. Use un loop for, se quere facer algo que un número específico de veces. Ao final, é por iso que hai tres diferentes tipos de loops. Así, poden ser empregados no contexto correcto. Pero pode cambiar Los se queres. Se se sentir cómodo con loops mentres e sempre quere usar mentres loops. É algo que pode facer, aínda pode ser un pouco sintaticamente complicado, onde un loop Sería moito máis simple. O meu nome é Doug Lloyd e este é CS50.