Tudo certo. Então agora vamos falar sobre algo realmente útil em programming-- instruções condicionais. Então expressões condicionais permitir que os seus programas para tomar decisões e diferente garfos na estrada, algo Eu aludiu a pouco mais cedo, dependendo dos valores das variáveis, ou com base no que o usuário insere na o programador, na linha de comando, ou se você tiver um prompt ou algo assim. C tem um casal de diferentes maneiras expressar expressões condicionais, que nós também, por vezes, vai chamar um desvio condicional em seus programas. E alguns deles vão olhar muito familiar para você a partir do zero, por isso vamos mesmo retirá-los -se lado a lado, apenas você pode fazer essa analogia em sua cabeça. Então, se-- se é uma bonita simples condicional. Se você se lembrar de zero à direita aqui você poderia preencher esse é hexágono com uma expressão de azul se mouse para baixo ou se X for menor que 10, ou algo assim. E, em seguida, se x era inferior a 10, ou se o rato foi, de facto, para baixo, todo o código dentro do parte do enigma seria executado. Todas as coisas que se encaixam interior que forma C. Da mesma forma, temos se no lado esquerdo lá. Se a expressão booleana, que eu só estou usando como um substituto para um dos booleano expressões que anteriormente discutidos, chaveta aberta, perto chaveta. Então pense encaracolado aberto cinta e chaveta fechado como uma espécie de análogo ao sanduíche efeito do se bloco à direita do princípio. Se a expressão booleana no caso afirmação é verdadeira, em seguida, todas as linhas de código entre as chaves executará a fim a partir de cima para baixo. Se a expressão booleana é falso, vamos saltar sobre tudo in-between as chaves, porque nós só quer ir para baixo que bifurcação na estrada se a expressão booleana é verdadeira. Podemos dar um passo ainda mais com se outra coisa. Portanto, este bloco Scratch é muito semelhante ao que vimos apenas um segundo atrás, excepto leva dois caminhos diferentes com base sobre o que acontece. Portanto, se o mouse foi para baixo, X ou se foi inferior a 10, vamos fazer tudo o que está no meio que o primeiro garfo, que primeiro C., Caso contrário, se o mouse é up, ou x é igual ou superior a 10, vamos fazer de tudo no segundo set. E isso é análogo ao que você vê aqui para expressão C. Se booleano, fazer as coisas entre o primeiro conjunto de chaves. Else, fazer as coisas entre o Segundo conjunto de chaves. Portanto, se o booleano expressão é verdadeira, vamos fazer tudo o que é entre o primeiro set. Se a expressão booleana é false, que provocaria a mais, e gostaríamos de fazer tudo o que está em o segundo conjunto de chaves. Mais uma vez, de cima para baixo, todos linhas entre as chaves. Em C, é possível criar uma cadeia de if-else if-else. Na verdade, você pode ter if-else if-else -se mais, se, e assim por diante e assim por diante e assim ligar. Em risco, isto exigiu aninhando os blocos. Você adiciona um else if-, e você tinha que colocar outro dentro do mais, e assim por diante, e ele ficou tipo de aninhada e complicado. Mas C, não temos de fazer isso. Nós podemos realmente só tem que seja uma cadeia como este. Mais uma vez, como você poderia esperar, todos estes ramos são mutuamente exclusivas. Você só pode nunca ir descer um do ramo. Se isso é verdade. Caso contrário, se isso é verdade. Caso contrário, se isso é verdade. Caso contrário, fazer isso. Então, todos os quatro ramos neste exemplo são mutuamente exclusivas. É uma cadeia de if-else if-else. É possível, porém, e por vezes muito úteis, para criar uma cadeia de não ramos mutuamente exclusivos. Neste exemplo, apenas o terceiro e quarta partes são mutuamente exclusivas. Pode ser que você poderia satisfazer a primeira condição, e você poderia satisfazer a segunda condição, e você poderia satisfazer o terceiro caso em que condition-- você iria para baixo o primeiro ramo, em seguida, você vai para baixo um segundo ramo, então você deve ir para baixo o terceiro ramo. Ou talvez você satisfazer a primeira condição, e à segunda condição, mas você não satisfaz a terceira condição. Nesse caso você vai para baixo o primeiro ramo eo segundo ramo, e, em seguida, o quarto ramo, A razão para isto é que a outra só irá ligar-se ao mais próximo se. Assim, mesmo que não haja uma outra pessoa aqui, que não cria necessariamente um mutuamente cadeia exclusiva de tudo. É apenas a expressão lá com booleana 3-- expressão que é a mutuamente exclusivos com a outra pessoa. Por isso, é possível, e às vezes bastante útil, como eu disse, para criar uma cadeia de ramos não mutuamente exclusivas. Vamos dar uma olhada em um diferente tipo de condicional, que você não tenha visto antes no Scratch. Há algo chamado a instrução switch. A instrução switch é tipo de limpo, porque é uma instrução condicional que permite você especifique casos distintos, em vez de depender booleana expressões de tomar decisões por você. Assim, por exemplo, vamos dizer que eu tenho este programa, e eu estou pedindo ao usuário a contribuir para mim. Então eu digo, int x = Obter Int (), e se você não estiver familiarizado ainda, obter int é uma função que é Também incluídos na biblioteca de CS50, por isso, se você # include CS50.H você terá Obter acesso a Int () e toda a sua cousins-- GetFloat, GetString, e assim por diante. Basicamente um Get função para cada tipo de dados que nós já discutimos. Então Int x é igual a GetInt. Basicamente o que está acontecendo é que estou no terminal. Estou pedindo que o usuário digite um número. E aqui eu estou comutando o que estou fazendo, dependendo em que o usuário digitou no prompt. Então, se eles digitado um, eu imprimir um. E então eu quebrar. Se eles tipo dois, eu imprimir dois. E então eu quebrar. É importante intervalo entre cada caso porque senão você vai cair. Então, se eu não tinha qualquer breaks lá, eo usuário um digitado, o que aconteceria é que iria imprimir um, dois, três, desculpe. Esse é um tipo de comportamento estranho, certo? Você pode pensar assim. Mas na verdade existem alguns casos em que esta poderia ser uma coisa muito útil. Então aqui está outro exemplo de um interruptor declaração onde eu omitir as pausas. Mas eu faço isso de propósito. Então o que acontece aqui? Pense por um segundo. Você pode até querer fazer uma pausa no vídeo. O que acontece aqui se o usuário digita quatro? Então eu perguntei ao usuário a entrada. E eles fornecem o valor 4. O que será impresso quando eu faço isso? No slide anterior, houve rupturas entre todos os casos. E assim seria apenas imprimir quatro e depois parar. Mas, neste caso, ele não vai. O que vai acontecer é você cairá através de cada caso. Portanto, neste caso Eu organizei meus casos de tal forma que, se o utilizador 4, Vou imprimir quatro, três, dois, um, decolar. E se eles digitado 5, gostaria de começar às cinco e fazer a mesma coisa. Se eles digitado 1, eu o faria basta fazer um, explosão fora. Portanto, neste caso, eu estou usando um interruptor tipo de inteligentemente de modo que eu pretendo cair através de todos os casos. Mas geralmente você provavelmente vai quer quebrar entre todos eles, a menos que você tem uma situação como esta, onde você está tipo de alavancar o fato de que você vai cair através dos casos sem interrupção. Então esse é o segundo do major tipos de declarações condicionais. A última das quais é:? Então eu tem dois trechos de código C aqui. Um à esquerda e outro à direita. O da esquerda deveria provavelmente ser muito familiar para você. Eu tenho Int x. E eu provavelmente deveria pediram ao usuário for-- isso provavelmente deve ser Int x é igual a GetInt, ou algo parecido. E então eu estou fazendo uma decisão. Se alguma expressão booleana é verdade, atribuir o valor x 5. Caso contrário, atribuir o valor x 6. Que à esquerda, provavelmente, deve ser bastante familiar a partir de nossa discussão Se Else de apenas um momento atrás. Você ficaria surpreso de saber que a linha à direita faz exatamente a mesma coisa? Então, isso é chamado de:? Ou às vezes chamado o operador ternário. E é muito legal. É geralmente usado como um truque bonito. Mas o que ele permite que você a fazer é simular um If Else com muito pequeno, realmente trivialmente curta desvios condicionais. Você geralmente não usaria:? Se você tinha seis linhas de código entre cada conjunto cintas de encaracolado. Mas se você é apenas tomar uma decisão rápida, se você estiver indo para fazer uma coisa ou o outro e é muito simples, este pode ser um exemplo de como a fazê-lo com:? o operador ternário. Então Int x é igual a expressão? A coisa após a pergunta marca é o valor de x será se a expressão é verdadeira. A coisa após a cólon é o valor de x seria se a expressão era falsa. Então, eu estou me perguntando, é a expressão verdadeira? Se for, atribuir o valor x 5. Se não é, atribuir o valor x 6. Mais uma vez, como eu disse. Isso geralmente é apenas um truque bonito. E, por vezes, se você se tornar realmente confortável com isso, você vai fazer isso porque parece tipo de fresco em seus programas. Geralmente eu estou apresentando-a você agora para que você estiver familiarizado com ele se você vê-lo. Mas certamente sabe que você não tem escrevê-lo em qualquer um dos seu código. Mas é algo para estar familiarizado com, porque você definitivamente vai encontrar trechos de código aqui e lá onde isso:? sintaxe, AKA o operador ternário, é usado. Resumo tão rápido em o que são condicionais, e quais são as opções disponíveis para você em C. Se você tem e if-else, e se outra pessoa se, et cetera. Você pode usar expressões booleanas para aqueles que tomar decisões. Com declarações switch você usa casos discretos para tomar decisões. Você poderia dizer especificamente, se é um, ou se é dois, ou se é três, Eu vou fazer essa coisa, ou essa coisa, ou esta coisa. E:? Podem ser usadas para substituir muito simples ramos if-else, ou if-else cadeias para fazer seu código parece um pouco extravagante. Eu sou Doug Lloyd. E este é CS50.