Olá e bem-vindo. Nesta palestra, quero falar sobre a tomada
de decisão, especificamente as declarações if.
Portanto, a linguagem de programação c fornece
uma capacidade geral de tomada de decisão na forma de uma instrução if.
Nós sabemos quais são as declarações até este ponto.
Portanto, agora vamos apenas adicionar uma palavra-chave na frente dela e também colocá-la entre parênteses.
Então, o que parece é algo assim.
Se a palavra-chave e depois entre os parênteses esquerdo e direito,
você tem algo chamado expressão.
Nós sabemos o que são expressões e a diferença entre as declarações.
Essa expressão deve ser avaliada como verdadeira ou falsa.
E então você tem uma declaração de programa.
E então este é o tipo mais simples de instrução if.
Portanto, se você disser a expressão e a instrução
do programa, poderá substituir isso por algum
pseudocódigo, algo como se não estiver chovendo, então irei nadar.
E se você traduzir esse pseudocódigo para c, o pseudocódigo não
é uma sintaxe
real, é uma forma de descrever algo em código no idioma inglês.
E então, se dissermos uma
instrução if em c, tudo o que você faria é colocar a condição entre parênteses, não está chovendo.
E então, após a instrução if, uma
única instrução ou várias instruções.
Se você tiver várias instruções, coloque-as entre chaves.
Mas, neste
caso, temos uma declaração. Portanto, dentro do corpo, a instrução if é: "Vou nadar.
Então não tem que estar chovendo para executar eu irei nadar.
É por isso que está no fluxo de controle. Na verdade, você nem sempre está executando "Eu vou nadar"
Depende da condição e se é verdadeiro ou falso.
Portanto, você pode ignorar o código neste caso. Então você não tem um processo sequencial.
Portanto, a instrução if é usada para estipular a
execução de uma instrução de programa com base em uma condição especificada, uma
capacidade de tomada de decisão. Então você só vai nadar se não estiver chovendo.
Você só executará o código no corpo da instrução if se não estiver chovendo.
As chaves são necessárias para instruções compostas dentro do bloco if.
Então, por exemplo, se você dissesse que se não está chovendo eu vou nadar ou
antes de você nadar, você vai colocar seu maiô, você vai
se vestir e depois vai nadar.
Então você teria que colocar essas chaves lá.
E, novamente, teremos exemplos específicos para mostrar isso.
Mas as chaves não são necessárias se você tiver apenas uma única instrução, elas são opcionais.
Você pode fornecê-los ou não.
Eu geralmente coloco as chaves em todas as minhas declarações if apenas para consistência.
Aqui está um exemplo de uma instrução if comum na linguagem de programação c.
Nesse caso, estamos declarando duas variáveis, uma com o nome score e outra com o big.
A pontuação é 95, grande como 90.
Aqui temos apenas uma declaração simples no corpo
e não tem colchetes. E, basicamente, estamos dizendo que se a pontuação for maior do
que grande, a pontuação é 95. Portanto, se 95 for
maior que 90, é uma expressão booleana. Vai ser avaliado como verdadeiro neste caso.
Portanto, o que será exibido na tela é o jackpot.
E então temos o mesmo exemplo, exceto que usamos as
chaves porque temos mais de uma instrução no corpo da instrução if.
Portanto, no exemplo inferior, se a pontuação for maior
do que grande, temos uma chave esquerda para iniciar o bloco da instrução
if e uma chave final para encerrar o bloco da instrução if.
Isso se refere ao corpo da instrução if.
E então, neste caso, temos duas declarações. Vamos primeiro incrementar a pontuação em 1
e, em seguida, exibiremos sua vitória.
Portanto, observe a diferença aqui, colchetes e não colchetes.
Você ainda pode colocar os colchetes em uma única instrução, eles são opcionais.
Mas se você tiver várias instruções, os colchetes são obrigatórios.
O colchete esquerdo significa o início do
bloco, o colchete direito significa o final do bloco.
As declarações If são muito simples quando são apenas um
único elevador If palavra-chave parênteses à esquerda e à direita, dentro dos parênteses em uma expressão.
E quando as instruções if ficam mais complicadas, essas expressões podem se tornar múltiplas expressões.
Portanto, você pode começar a usar alguns dos operadores lógicos que
aprendemos em termos de como podemos usar o e ou o ou.
Portanto, se a pontuação for maior do que grande e algo mais
for necessário.
Portanto, podemos ter várias perguntas em uma única instrução if ou podemos dividi-las.
Mas este é um exemplo básico de
instrução if, novamente a sintaxe bastante
básica, você não vê nenhum ponto-e-vírgula no final
da instrução if, apenas no final de printfs.
Então você só tem os colchetes final e inicial.
Agora você também pode adicionar uma cláusula else à sua instrução if.
Isso é apoiado por c. Portanto, você pode estendê-lo um
pouco com um pequeno acréscimo que permite que você tenha muito mais flexibilidade.
Por exemplo, se disséssemos se a chuva de hoje é pior
do que a
chuva de ontem, pegarei meu guarda-chuva. Senão, se não estiver chovendo
tanto quanto ontem, vou levar minha jaqueta.
Portanto, o outro é dizer o que acontece quando a pergunta
para a resposta é falsa.
Do contrário, vou pegar minha jaqueta e depois vou trabalhar.
Portanto, este é exatamente o tipo de tomada de decisão que a instrução if else fornece.
Faça algo quando for verdade, também faça algo quando for falso.
Então você tem a palavra-chave if, e, entre parênteses, você tem sua expressão booleana, algo
que avalia como verdadeiro ou falso.
Então você tem sua instrução que é executada a instrução um, se for verdadeira.
Caso contrário, você usa a palavra-chave else.
É opcional, você nem sempre precisa fornecer o else. Somente se você quiser fazer algo
se a expressão booleana for falsa, você diz a afirmação dois.
E, novamente, neste caso, não temos colchetes dentro do
corpo do bloco if ou do bloco else
porque temos apenas instruções simples.
Se tivermos mais de uma instrução dentro de qualquer um desses
corpos, temos que fornecer um colchete para iniciar e terminar.
Portanto, aqui está um exemplo de uma instrução else com um if.
Nesse caso, vamos determinar se um número é par ou ímpar.
Portanto, temos nossa função principal, é onde entramos.
E criamos algumas variáveis, uma é chamada de número para testar, a outra é chamada de resto.
Ambos são do tipo int.
Estamos declarando-os na mesma linha, separando-os por vírgulas.
Não os inicializamos ainda.
Na próxima linha de código, vamos imprimir algumas saídas para pedir ao usuário que insira algumas informações.
Em seguida, usamos a função scanf.
Estamos lendo em um número inteiro, então podemos fazer porcentagem i ou porcentagem d.
E não estamos lendo uma string ou qualquer palavra.
Então, vamos colocar o e comercial na frente da variável onde vamos armazenar os dados.
Portanto, o usuário irá inserir um número para testar.
E então também obteremos o restante de tudo o que eles inseriram por 2, porque isso
nos dirá
se algo é par ou ímpar ou não. Se você pode dividir um
número por 2 e o resto é 0, isso significa
que é um número par. Caso contrário, é estranho.
A parte importante deste programa é o fundo onde estamos usando a condição.
Até este ponto, todas as linhas foram executadas.
Mas quando temos uma instrução if e uma condição entre parênteses, se
o resto for igual a zero
e você perceberá que sempre terá que usar igual a igual para
comparação, não use igual. Lembre-se de que igual é para
atribuição, atribuição de dados a um valor. Igual a igual serve para comparar números.
Estamos comparando uma variável de resto a zero.
E se for zero, vamos imprimir mesmo.
Caso contrário, a palavra-chave else está na próxima linha, iremos imprimir ímpar.
Você notará que não há colchetes em if ou the else porque há apenas instruções simples.
Vamos executar isso e ver como funciona em blocos de código.
Bem, aqui está o nosso programa. É descrito, como acabei de mencionar, exatamente da mesma maneira.
Vamos apenas imprimir pares ou ímpares. Então, vamos construir isso.
E queremos ter certeza de que não há erros.
Você tem alguns feeds de linha extras aqui.
Agora, quando executarmos este programa, basicamente poderemos ter uma
saída par ou ímpar.
Vai pedir-nos o número a ser testado. Vou inserir 33, o que é estranho.
Vai dizer que o número é ímpar. Portanto, é um programa muito simples.
O importante aqui é que você não está executando determinado código.
Você também executará a linha 19, se o resto for igual a 0.
Se não for, você vai realmente para a linha 21. E os colchetes novamente são opcionais.
Você pode colocá-los lá
e o IDE fará um preenchimento automático para você, o que
é muito bom.
Mas, novamente, geralmente gosto de adicioná-los porque são fáceis e tornam
o código ainda mais legível.
Depende do seu estilo de formatação.
Algumas pessoas gostam de colocar o colchete no início da instrução else, assim.
Alguns gostam de tê-lo na outra linha, depende de como está o seu formato.
E, na verdade, isso pode ser feito automaticamente no IDE, formatando o código.
Mas isso funciona da mesma maneira e é quase ainda mais fácil de ler.
E se você precisar adicionar mais instruções,
adicione-as facilmente e não precisa se preocupar em adicionar colchetes.
Então eu adquiro o hábito de adicionar colchetes.
Novamente, a outra coisa importante aqui é igual a igual.
Você não pode fazer iguais. Se você fizer o equals e executar o programa,
verá que há uma grande diferença. Portanto, uma instrução
if else muito simples, muito, muito útil. Você só executará a linha 19 se o restante for ímpar.
Caso contrário, você executará a linha 22.
Vamos falar um pouco mais sobre uma instrução else if.
Então você também pode ter um outro. Se for assim, aprendemos sobre se, aprendemos sobre outra coisa.
Você pode lidar com tomadas de decisão complexas adicionais adicionando uma instrução if à sua cláusula else.
Portanto, é como fazer uma pergunta adicional.
Você não vai realmente executar algo se a condição no original for falsa, você
vai fazer outra pergunta.
Então você diz se a expressão 1,
você tem algum código que vai executar se for verdade.
Caso contrário, caso contrário,
você diz se depois disso, o que
é perfeitamente legal. Esta é uma instrução if dentro de uma instrução else.
Então você executa o programa dois. Caso contrário, você executa outra coisa.
Portanto, isso estende a instrução if de uma decisão lógica de dois valores para
uma decisão lógica de três valores.
Aqui você está fazendo duas perguntas.
E se a pergunta para a primeira resposta for verdadeira, você
executa a instrução do programa um.
Então você faz sua segunda pergunta, apenas se a primeira pergunta for verdadeira ou
se a primeira pergunta for falsa.
E se isso for verdade, então você realmente executa algum código e executa outra coisa.
Portanto, você tem três ramificações aqui,
essencialmente, três linhas separadas de código que podem ser executadas ou não.
Declaração do programa 1, declaração do programa 2 ou declaração do programa 3.
Você pode reescrever este código para usar um else if.
No momento, o if está em uma linha separada, mas você pode realmente fazer algo assim, se
a expressão um fizer outra coisa if.
Você não precisa colocá-lo em uma linha separada. Pode ser uma única linha
e então você pode ter um outro fora dela.
A única coisa complicada sobre isso é que a cláusula else será executada.
E isso é a mesma coisa. Portanto, esta cláusula else será executada para
todos os três.
Portanto, é um pouco confuso no
primeiro exemplo porque parece que o segundo else
só está sendo executado se o outro if
for false.
Mas está realmente sendo executado se a primeira expressão também for falsa.
Se você tivesse colchetes lá, você poderia realmente aninhar essas instruções if.
E o externo, o último else só seria executado com
base na pergunta do segundo se responder.
Entraremos no aninhamento quando falarmos sobre instruções if aninhadas e loops aninhados.
As instruções if aninhadas estão apenas colocando um if do lado e if,
e você deve ter cuidado onde
está a cláusula else, porque o else deve corresponder à última instrução if.
Aqui está outro exemplo onde vamos realmente tentar implementar a função de sinal.
Vamos retornar 1 0 ou 1 negativo.
Portanto, esta é uma avaliação de três camadas aqui.
O que este programa está fazendo na rotina principal é
que estamos criando algumas variáveis do tipo int, número e sinal.
Estamos fazendo com que o usuário insira um número e o estamos armazenando na variável de número.
E se o número for menor que 0, o sinal será igual a 1 negativo.
Do contrário, se o número for igual a 0, será 0.
Caso contrário, se ambos forem falsos, seu sinal será igual a 1, o que significa que é positivo.
Portanto, este é um exemplo de como o else if pode ser muito útil.
E você pode ter vários outros ifs. Vemos apenas um lá, mas poderíamos ter 100 se quiséssemos.
Senão, se o número for igual a 2, do contrário, se o número for igual a 3, do contrário, se o número for igual a 4.
E você também pode ver que os colchetes não são usados
aqui, mas os colchetes serão usados se você tiver várias instruções dentro do corpo.
E quando você usa instruções if,
também deve observar que usará muitos operadores lógicos
e operadores de comparação e operadores relacionais.
Então você está usando o símbolo de menos aqui. Os operadores lógicos, lembre-se, são
os "e" comerciais. Dois deles para e
ou, e os operadores relacionais são onde você está comparando valores.
Então, quando você está fazendo coisas como menor ou menor que igual ou maior que.
Eles são usados bastante quando você está usando números em suas expressões de instrução if.
Ao usar o "e" comercial, você está, na verdade, fazendo várias perguntas.
Se isso for verdade e isso for verdade ou se isso for verdade ou.
É uma maneira de reduzir outras instruções else if também.
Portanto, você pode reescrever este código aqui se o número for menor que 0
E também, se você quisesse ter o
sinal, não poderia realmente ser do jeito que está agora.
Mas se você pudesse colocar um E comercial ali e pudesse dizer que o
número é menor que 0 e é igual a 0, então
o sinal é 1 negativo e 0. Quer dizer, você não pode fazer isso
especificamente, mas pode ver como pode adicionar várias perguntas aqui.
Portanto, teremos um desafio específico em que escreveremos um programa que use instruções if.
Estes são alguns bons exemplos. Você vai querer colocar esses exemplos dentro de seu IDE e ver o que acontece.
Mas o else if é novamente uma maneira de fazer várias perguntas.
Declaração aninhada if else.
As instruções if l aninhadas significam que você pode usar uma instrução if ou outra
if dentro de outra instrução if ou else if.
É por isso que é conhecido como aninhamento.
Você pode usar várias coisas internamente e pode continuar fazendo isso indefinidamente.
Não há limite para o número de aninhamentos que você não viu.
Portanto, a sintaxe é semelhante a esta.
Se uma expressão booleana é igual a true,
então dentro dela e quando você faz o aninhamento, normalmente, você quer usar os colchetes.
Mesmo que você não precise fazer isso para instruções simples, porque torna muito mais legível.
Portanto, se a expressão booleana 1 for verdadeira, aí
dentro você dirá se a expressão booleana 2 for verdadeira.
Você não executaria realmente se a expressão booleana 2, a menos
que a expressão booleana 1 fosse verdadeira.
E então, dentro do corpo da expressão booleana 2, você executaria o código se isso fosse verdade.
Portanto, um exemplo de uma instrução if aninhada seria algo assim.
Se o jogo terminar é igual a 0 e lá dentro se o jogador a se mover for igual a você, você
terá uma impressão.
A chave aqui é perceber que não há colchetes
e é um pouco mais difícil de entender. A única maneira de seguir isso é através do
recuo, que é outra coisa que você deseja fazer ao escrever instruções if em blocos de código.
Você sempre deseja recuar o bloco porque torna mais fácil de ler.
Imagine se isso não tivesse o
recuo, como seria mais difícil combinar o else e o ifs.
Portanto, use recuo, mas provavelmente também use colchetes, os colchetes ajudam a torná-lo ainda mais legível.
E lembre-se, a legibilidade é um grande negócio, porque a legibilidade o ajuda a encontrar e corrigir seus erros muito mais rápido.
Portanto, neste caso, só vamos executar seu movimento impresso na tela se
o jogador a ser movido for igual a ue game over for igual a 0.
Só vamos executar meu movimento exibido na tela se o jogo
for igual a 0, mas o jogador a ser movido não for igual a u.
E por último, só vamos executar o jogo acabou
se o jogo não for igual a 0.
Portanto, temos três condições aqui
para imprimir três declarações diferentes.
E você poderia realmente escrever se o jogo acabou igual a
0 e "e" comercial e o "e" comercial, o jogador a ser movido é igual a u.
Mas o problema com isso seria o seu, caso contrário, a minha jogada pode não
ser correta, porque você ainda tem que comparar o jogador para se mover.
Portanto, há momentos em que você pode usar o "e" comercial para simplificar o
código, há momentos em que não pode. Nesse caso, você não pode, porque
o primeiro else está dentro do if aninhado.
Portanto, o aninhamento é bastante aplicável e você o usará,
portanto, familiarize-se com ele. Novamente, a sintaxe para a instrução if é muito direta.
A expressão booleana dentro e, em seguida, use colchetes para instruções individuais.
Caso contrário, você usa colchetes.
Você não usa colchetes para estados únicos. Caso contrário, use colchetes.
Há também um terceiro tipo
de maneira de fazer perguntas em seu programa. Isso é chamado de operador condicional, e
falamos sobre isso quando falamos sobre operadores, mas é
necessário um pouco mais de compreensão.
Portanto, o operador condicional é um operador único.
É diferente de todos os outros operadores em c.
A maioria dos operadores em c são unários ou binários.
Unário significa que os operadores recebem um único argumento ou um único operando.
Binário significa que eles têm operandos em ambos os lados.
Portanto, o operador mais é um operador binário porque você faz 5 mais 3,
dois operandos.
O negativo é um operador unário porque você diz como 3 negativo.
Bem, há uma terceira opção, há um operador ternário, que leva três operandos.
E este é o operador condicional.
Você tem dois símbolos que são usados para denotar esse operador, esse operador condicional.
É o ponto de interrogação e os dois pontos.
E realmente é equivalente a uma instrução if else.
A aparência é que o primeiro operando é colocado antes do ponto
de interrogação, que seria a condição, a expressão booleana nos exemplos anteriores.
E então a segunda coisa entre o ponto de interrogação e os
dois pontos seria basicamente o corpo da declaração if se a declaração if fosse verdadeira.
E então os dois pontos são o terceiro, e
isso seria se a condição fosse avaliada como falsa, você estaria executando
aquele corpo de código, então é como o corpo da instrução else.
Portanto, esse operador de virada nada mais é do que uma instrução if else apenas uma notação abreviada,
você pode escrevê-lo muito mais rápido.
A diferença aqui também é que não há colchetes, portanto, você só pode ter
expressões ou declarações únicas dentro do corpo do após o ponto de interrogação ou após os dois pontos.
Portanto, se o operador condicional for avaliado como
uma das duas expressões, dependendo se a expressão lógica corresponde a,
dependendo se a condição é verdadeira.
Se a condição for falsa, a expressão 2 é avaliada.
Portanto, novamente, ele se comporta como uma instrução if else.
Observe também como o operador está organizado em relação aos operandos.
O caractere de ponto de interrogação segue a condição de expressão lógica.
À direita do ponto de interrogação estão os dois operandos, expressão um e expressão dois.
Eles representam as escolhas.
O valor resultante da operação será o valor da expressão um se
a condição for avaliada como verdadeira.
E então o valor da expressão dois se for falso. Então, exatamente o que eu disse se mais.
Vejamos um exemplo. Parece engraçado de ler, mas o
que isso significa é que se x igual a y for maior
que 7, então
o que isso está fazendo? Ele está cumprindo uma tarefa?
X é igual a y. Então, se x é 5 ey é 9, isso
vai dizer que se x é maior que 9, vai
definir o número como 25 x. Caso contrário, ele definirá x como 50.
Portanto, é um pouco confuso ler primeiro.
Isso resulta em x sendo definido como 25 se y for maior que 7 ou como 50, caso contrário.
Portanto, é uma maneira fácil de fazer uma atribuição da expressão.
X igual a y é maior que 7.
Se y for maior que 7, x é igual a 25, caso contrário, 50.
É por isso que x é igual a há pornografia.
Portanto, o operador ternário e as condições estão do lado direito da atribuição e
é normalmente assim que você o usa. Você diz que x é igual, o resultado
desse operador ternário.
Portanto, todo o operador ternário é y maior que 7. Então, ele está apenas dizendo se y é maior
que 7, 25, caso contrário, 50. E então você atribui isso a x.
E é normalmente assim que você o usa. É o mesmo
que dizer usando uma instrução if. Se y for maior que 7, x é igual a 25, caso contrário, x é igual a 50.
Mas é muito menos código.
A limitação desse operador condicional é que
você só pode ter duas variáveis gravadas usando o operador condicional, um
mínimo máximo.
Você não pode simplesmente fazer uma tonelada deles. Portanto, é um pouco limitante. Geralmente é usado para atribuição.
Então, uma longa palestra, muitos exemplos diferentes.
Isso será mais aplicável quando fizermos nosso desafio.
Mas se as declarações vão ser usadas, e
são muito, muito fáceis de aprender. Antes que você perceba,
você conhecerá a sintaxe como a
palma da sua mão, parênteses, colchetes e outras palavras-chave.
E então, ocasionalmente, você usará esse operador condicional.
Mais uma vez, talvez à medida que você se torna mais avançado em c, você começará
a perceber, uau, essa instrução if demorou muito para eu
escrever, talvez eu possa escrever em uma única linha usando o operador condicional com
meu ponto de interrogação e meus dois-pontos.
Novamente, muito útil para atribuir variáveis com base nas condições. Obrigada.