Olá! Vamos então aprender uma coisa que a gente chama de execução condicional. Tem alguns momentos que a gente quer escrever determinado trecho de código, que só vai ser executado caso alguma condição seja satisfeita. Então, a gente não vai executar aquilo sempre, só alguns casos. E como que a gente faz isso? A gente faz com o comando if, que praticamente toda a linguagem de programação tem esse comando if, não é? Como é que o comando if? Eu digito aqui if, i f, não é, e daí eu digito uma condição. Essa condição vai ser uma expressão booleana cujo valor é verdadeiro ou falso, daí eu digito ':' e daí na linha de baixo eu coloco alguns espaços, por exemplo dois espaços ou quatro espaços para dar o que a gente chama de indentação, e daí, eu escrevo aqui o meu comando que eu quero que seja executado, está? Esse aqui é o formato genérico ali do comando if e, sempre assim. Se a condição for verdadeira ele executa o comando, caso contrário, se a condição não for verdadeira, for falsa, ele não executa o comando, ele vem aqui para a linha seguinte executar o, por exemplo o comando seguinte que está aqui, está? Vamos aqui exemplo no nosso interpretador. Então, eu posso, por exemplo, se eu tenho aqui temperatura é igual a 102. Daí, eu posso ter trecho de código que eu falo: if temperatura é maior que 100, daí, então, eu posso querer dizer que a aguaFerve =, recebe true. Se a temperatura for maior que 100 a água vai ferver, então, coloquei valor true nessa variável de aguaFerve. Então, se eu fizer executar isso aqui, se eu for olhar agora o valor dessa variável aguaFerve, ela está valendo true, porquê? Porque a temperatura é maior que 100. Agora, vamos supor que eu quero na verdade eu quero fazer mais do que comando, eu quero executar dois comandos caso a temperatura for maior que 100. Daí, o que eu posso fazer, voltando aqui a esse formato genérico aqui, eu posso colocar outros comandos aqui desde que eu use o mesmo, a mesma indentação. Então, se eu coloquei aqui quatro espaços, aqui eu coloco os mesmos quatro espaços, está? Então, dessa forma eu estou como se fosse criando bloco aqui que, todo esse bloco é executado, caso essa condição seja verdadeira. Note que aqui pode ter quantos comandos eu quiser desde que eu sempre use a mesma indentação. Posso ter dezenas aqui se quiser, comandos dentro de único if. Então, eu poderia escrever algo do tipo: se a temperatura é maior que 100, não só a aguaFerve como a evaporação, eu quero que ela receba "muito rápida". Então, executando isso aqui, não só a variável aguaFerve contém esse valor booleano true, como a variável evaporação, contém aqui string cujo conteúdo do string é "muito rápida". Então, uma única condição levando à execução de dois comandos. Então, isso é o que a gente chama de execução condicional, tem uma expressão booleana que, define se determinado pedaço de código vai executar ou não. Agora, tem alguns casos que você quer executar alguns comandos, caso a condição seja verdadeira mas, caso a condição seja falsa você quer executar outro grupo de comandos. Daí, como que a gente faz isso? A gente usa o if else. Então, é assim, if condição, os comandos, else, caso contrário, dois pontos, e daí, que a gente coloca outros comandos. Então, esses aí vão ser os comandos que vão ser executados caso seja verdadeira, três comandos diferentes, caso seja verdadeira e, aqui, ou mais comandos que vão ser executados caso seja falso. Então, vou colocar aqui, por exemplo, dois comandos mas, pode ser quantos você quiser. Então, nesse caso, se a condição for verdadeira ele executa apenas esses três, se a condição for falsa, ele executa apenas esses dois. E, ambos os casos depois que ele executou esses comandos do if else, ele, ambos os casos pula para o comando seguinte aqui, que é o comando que vem depois aqui do else sem essa indentação, note que não tem mais esses espaços que eu coloquei aqui no começo. Então, você vê que na linguagem Python esses espaços aqui são muito importantes. Tem outras linguagens de programação que simplesmente ignoram os espaços, os espaços não tem nenhum significado. Python tem esse significado de definir os blocos, particular, os blocos aí do if e do else, são identificados, são definidos com essa indentação. Vamos fazer exemplinho aqui de programinha. Eu vou abrir o meu editor de textos aqui, e eu vou criar novo programa. Então, vamos ver aqui exemplo de uso do if else, num caso ali pouquinho mais concreto. Vamos fazer programinha que eu vou perguntar aqui para o meu usuário, qual que é o tempo de jogo. Então, eu vou usar o comando input para fazer a pergunta e eu vou perguntar: "quanto tempo temos já jogado?" Eu vou perguntar isso, só que eu quero esse valor como número inteiro. Se eu fizer input ele sempre volta como string, como uma cadeia de carateres, eu vou converter isso aqui para inteiro colocando esse int aqui, e já resolve o meu problema. Dai eu vou falar o seguinte: if tempoDeJogo é menor ou igual a 90, "Quanto tempo temos já jogado?" não é, singular, se eu fizer if tempoDeJogo menor ou igual a 90, daí eu posso falar algo do tipo: "Ainda tem jogo pela frente", e posso falar alguma outra coisa, se eu gosto de futebol posso falar: "Que bom, eu adoro futebol". Você pode trocar pelo seu esporte preferido aqui, está, não precisa se ater ao futebol. Mas, por outro lado, else, eu posso falar caso contrário, ou seja se o tempo de jogo não é menor ou igual a 90, se ele é maior que 90, daí eu digo "Putz, está acabando o jogo" e, além disso, se o seu time estiver ganhando você pode falar "Apita logo, juiz!!!" Então, esse aqui é o nosso programa. Salvei aqui, num arquivo chamado jogo.py. Daí, eu posso executar aqui, Python, vou executar o Python 3, a versão 3, jogo.py e ele me pergunta: "Quanto temos já jogado?". Então, se já jogamos 45 minutos, ele vai falar: "Ainda tem jogo pela frente" "Que bom eu adoro futebol" Por outro lado, se já foram jogados ali 92 minutos, ele vai falar "Putz está acabando o jogo" "Apita logo, juiz!!!" Então, a gente vê exemplo ali, que a gente executa blocos diferentes de código, dependendo do que está acontecendo. Agora, eu vou querer que você use o if else para fazer exercício, desafio que eu vou dar para vocês. E o desafio é bem mais complexo do que a gente viu até agora, que é fazer programa que calcula as raízes de uma equação de segundo grau. Vejamos aqui se a gente tem uma equação quadrática não é? Uma equação desse tipo aqui ax2 mais bx mais c é igual a 0, não é, o que é que a gente tem nessa equação? x é variável, a gente tem essas constantes, esses parâmetros, o a, o b e o c, que são os valores de entrada ali para o nosso programa e, a gente vai, então, dizer qual é a a raiz dessa equação, a raiz você tem uma parábola assim, são os pontos que a parábola encontra ali o eixo x. Mas note que o if vai ser importante aqui porque tem três casos diferentes. Primeiro, lembra qual é a fórmula? A fórmula de Bhaskara, não é, Bhaskara é aquele matemático indiano que inventou essa fórmula de Bhaskara aqui não é, que diz que x é igual a menos b mais ou menos raiz quadrada de b2 menos 4ac dividido por 2a. Está aqui a fórmula de Bhaskara. Então, essa parte aqui que tem a raiz a gente chama de delta e, porque é que o if é importante? Porque se o delta for igual a zero, daí, essa equação aqui ela só tem uma raiz, porque essa parábola vai encostar aqui no ponto mínimo vai encostar aqui no zero, então ele só vai ter uma raiz, isso se o delta for igual a zero. Se o delta for negativo ela não vai ter raízes reais, as raízes vão ser imaginárias. Vamos fazer programa que calcule apenas raízes reais, então, nesse caso do delta for menor que zero, eu quero que o programa diga: "Esta equação não possui raízes reais". Se o delta for igual a zero ela vai dizer: "A raiz desta equação é" e o valor da raiz, se o delta for maior que zero estritamente, daí o seu programa vai falar: "As raízes da equação são", e vai dar a primeira raiz e vai dar a segunda raiz e, para isso você vai precisar do comando if, ou talvez mais do que comando if para discernir esses 3 casos diferentes. Agora, você já sabe tudo o que você precisa para calcular esse resultado não é, para aplicar essa fórmula e dar o resultado, os três possíveis resultados, com exceção de uma coisa, a gente ainda não viu como fazer raiz quadrada, não é? Toda a vez que você tiver necessidade de procurar algo novo na linguagem Python que você não sabe, o que é que você faz? Você vai ali no Google e você digita, por exemplo: Python documentation, nesse caso eu quero saber como se faz raiz quadrada, não é? Então, eu vou digitar inglês: square root, raiz quadrada inglês. E daí, o que é que a gente vê? Os dois primeiros links é a documentação do Python da versão 2.7 e da versão 3.5.1. Eu vou abrir essa versão mais recente aqui não é, versão 3.5.1, e a gente caiu nessa página aqui que é a documentação do módulo Math da linguagem Python. Então, é módulo que provê acesso a funções matemáticas definidas ali, não é, mathematical functions, particular, se eu buscar aqui por square root, a gente vê que essa função math.sqrt aqui, ela devolve a raiz quadrada de x. Então, vamos ver como usa ela. Se eu abrir aqui o meu interpretador Python e perguntar, por exemplo, qual a raiz quadrada math.sqrt de oito, e eu apertar enter, que é que acontece? Opa, deu erro, ele falou: " o nome math is not defined". E porquê? Quando você usa módulo externo que não é padrão, você precisa primeiro importar este módulo e a gente faz isso com o comando import. Então, simplesmente escrevo import math e a partir daí todas aquelas funções matemáticas do módulo math já estão disponíveis para mim. Então, se eu repetir a mesma coisa aqui, fizer math.sqrt(8) aí ele vai dar ali o valor da raiz quadrada de oito. Só para a gente ter a certeza que ele está calculando certo, vamos pegar a raiz quadrada de nove, que a gente sabe qual é, não é, a raiz quadrada de nove é três, então, pronto já temos uma forma de calcular. Então, se tiver uma variável delta lá que, vai ter todo cálculo ali, vamos supor que o delta deu isso aqui, e daí, você pode simplesmente fazer math.sqrt(delta) e você já tem ali a raiz quadrada do delta. Então, tudo isso é o que você precisa para fazer esse exercício. Então, vamos lá, com afinco, quero que vocês façam esse programa. Relembrando, esse programa vai receber como entrada três valores, o a, b e c, que são as constantes ali da equação de segundo grau e daí você vai usando a fórmula de Bhaskara, imprimir as raízes, sendo que tem três casos se delta é menor que zero você vai dizer que não tem raízes reais, se delta igual a zero você vai dizer que tem uma raiz real que é tal, se delta for maior que zero, você vai dizer que tem duasraízes reais que são: tal e tal. Então, trabalhe com afinco nesse problema, não desistam, está, não vai na primeira dificuldade já cair fora, fica lá até sair, está? Então, ao trabalho. [MÚSICA] [MÚSICA] [MÚSICA]