Eu gostaria de mostrar para vocês como funciona o depurador no contexto que a gente têm várias funções, que uma função vai chamando a outra, então deixa eu abrir aqui o IDLE e vamos abrir aquele exercício do Bhaskara, que a última versão que eu fiz que têm três funções, aqui. Então nós temos três funções, a função delta, main e imprime_raizes. Seu quiser executar isso aqui no depurador. Primeiro deixa eu diminuir o tamanho dessa janela aqui, pronto. E para executar no depurador, eu clico aqui nesta outra janela e aparece a opção Debug aqui encima, daí eu abro aqui o Debugger, ele vai abrir esta janelinha do Debug Control. Eu vou querer que esse Debug Control. Deixa eu diminuir o tamanho dessa janela. Eu vou querer aqui no Debug Control selecionar aqui, Source. Source significa o código fonte. Eu quero que a medida que a gente vai passando passo a passo no código, que ele vai mostrando aqui no código fonte, onde que a gente está executando. Então o que é que eu vou fazer? Eu vou mandar executar, então eu seleciono aqui o programa e dou Run ou aperto F5 e ele executa. Nesse caso ele simplesmente definiu essas variáveis, esses métodos, desculpa, essas funções, delta, main e imprime_raizes. Então, eu preciso agora dar Go, ele só simplesmente carregou, agora eu vou aqui no meu Debug Control e vou clicar o Go. Ao clicar o Go, a gente vê que está disponível, eu posso chamar aqui as determinadas, as funções, eu posso chamar a função delta ou a main ou a própria imprime_raizes. Eu vou começar, eu vou chamar a função main, mais eu quero para ficar bem claro aqui, eu vou mudar o nome dessas variáveis, esse o a, b e c que estão nessa função main. para não confundir com os abc dos outros lugares eu vou chamar. Esse é o a_digitado pelo usuário, vou chamar todo mundo, o a_digitado pelo usuário, o b_digitado pelo usuário e o c_digitado pelo usuário. Então eu vou passar, então como parâmetro o a_digitado, o b_digitado e o c_digitado pelo usuário, mudei só para ficar mais didático aqui, para ficar mais claro. Então eu vou executar aqui novamente e dar aqui o Go novamente. Então, aqui eu vou, vamos pegar, executar exemplo. Então eu vou digitar main e agora a gente já viu que estamos aqui, eu vou fazer o seguinte, têm dois, têm três comandos que a gente pode fazer. O Go que executa tudo de uma vez. O Step, aqui tem esse botão chamado Step onde eu estou apontando aqui, o que é que ele faz, ele vai passo a passo e se tem uma determinada função, ele entra dentro daquela função e vai mostrando o passo a passo. Então eu vou fazer aqui Step, que é para entrar dentro da função main, então você vê, ele está mostrando aqui olha, pintou de cinza para mostrar que ele entrou dentro da função main e agora ele está fazendo passo a passo. Então, se eu faço Step ele faz o passo a passo e entra dentro de uma função. O Over, o que é que é o Over? O Over, ele executa aquela linha inteira e se tem uma chamada de função ele não vai entrar dentro da função e mostrar, fazer depuração daquela função passo a passo, ele vai executar aquela função inteira. Particular aqui eu estou aqui chamando a função float input, eu não quero que ele entre e mostre lá dentro, eu quero que ele execute a função, essa linha inteira de uma vez, então eu vou dar aqui Over agora, daí olha ele imprimiu agora: Digite o valor de a. Daí eu vou imprimir, vou digitar 10, daí ele mostrou, já foi para a linha de baixo. A linha de baixo agora, vou dar de novo Over na linha de baixo e ele fala: Digite o valor de b. De novo mostrou que já foi para linha de baixo. Dá Over de novo, e ó digite os valores de c. Vou dar dez. Ele foi para essa linha aqui: imprime_raizes(a_digitado, b_digitado, c_digitado). Se eu der Over, ele vai executar essa linha tudo de uma vez e eu não vou ter a opção de executar passo a passo esse imprime_raizes, que não é o que eu quero, então eu vou dar Step e ele vai daí começar a executar. Note que aqui baixo a gente vê o valor das variáveis, a_digitado vale dez, b_digitado vale 20 e c_digitado vale dez de novo. Isso aqui ele vai passar como parâmetro, se eu clicar o Step aqui, a gente vai ver que vai sumir essas variáveis aqui, porque essas variáveis só existem dentro do main. Vou apertar o Step, pronto sumiram aquelas variáveis e agora elas se chamam a, b e c, por quê? Porque aqui dentro do imprime_raizes, agora estou ó, estou no método, na função imprime_raizes, dentro de imprime_raizes, a, b e c valem dez, 20, dez, porque foi passado como parâmetro pela função main, passou para função imprime_raízes esses três valores, então agora se chamam a, b e c, aqui dentro se chama a, b e c. Agora de novo tenho delta, se eu clicar no Step novamente daí ele vai para dentro da função delta, ele está mostrando aqui que está dentro da função delta que vai calcular isso, se eu der Step ele vai sair da função delta, voltou para cá, só que agora já tem valor d, d está valendo zero, nesse caso o delta foi zero. Daí eu vou dar Step, ele entrou, if d é igual a zero, d assim vale zero, então ele está executando essa linha aqui, raiz de recebe tal, tal. Eu vou dar Over aqui, pronto, veio para a linha seguinte, só que aqui ó apareceu outra variável raiz de que vale menos. Daí eu vou dar Over, ele imprime e acabou a execução da, acabou a execução do imprime_raizes e voltou para o main, mas não tinha mais nenhum outro comando e acabou a execução do main também, então aqui a gente vê toda a execução do main. Então o depurador é útil porque a gente pode ver qual a função que está sendo executada, a gente qual a função, aqui nessa janelinha a gente consegue ver qual função que chamou qual função que chamou qual função, aqui baixo a gente vê o valor das variáveis locais, naquele contexto, quais são as variáveis que são válidas, qual o valor de cada variável e dessa forma a gente pode ter uma noção de como está a execução do nosso programa. [MÚSICA] [MÚSICA] [MÚSICA]