‫Bem-vindo de volta a este vídeo, vamos consertar o trabalho que fizemos e ver como
‫podemos descobrir.
‫Portanto, neste exemplo, é muito básico.
‫E realmente sabemos que temos esse método que faz a lógica.
‫Direito.
‫Então é ele que descobre se um amigo é festeiro ou não.
‫E isso é algo que geralmente o ajudará a depurar, porque se você souber o
‫que um método específico fará, poderá criar um ponto de interrupção nesse ponto.
‫Tudo bem.
‫Portanto, se você trabalha em um programa que nunca usou antes, visto antes, então, é claro, você
‫precisa, em primeiro lugar, olhar para ele e entender o que todos os métodos fazem.
‫E é por isso que aqui, é claro, seria útil ter um resumo do que está acontecendo aqui.
‫Tudo bem.
‫Então explique, OK, o que isso faz?
‫Qual é o resumo deste método?
‫Então você pode usar apenas o tripple.
‫Sim, mais lixo.
‫E então você pode adicionar um pequeno resumo.
‫Portanto, essa é a lógica para descobrir quem A é um amigo da festa ou quem será o amigo da festa ou algo parecido.
‫Não é um inglês perfeito, mas acho que você entende qual é a ideia.
‫Então, depois de fazer isso, você saberá, OK, tudo bem.
‫É aqui que está a lógica e nosso programa funciona por si mesmo.
‫Direito?
‫Então está funcionando como pretendido, mais ou menos, exceto, é claro, que nos mostra aos amigos que temos um nome longo
‫e não aqueles com nome curto.
‫Portanto, provavelmente o problema está na lógica, como selecionamos algo.
‫Então aqui já podemos ver ou provavelmente este é o método em que temos o problema para que possamos nos
‫livrar deste ponto de interrupção e deste também.
‫E então podemos dar uma olhada em nosso método aqui.
‫Então, vamos apenas adicionar um ponto de interrupção em um método de amigos de festa e então podemos analisá-lo.
‫Então, vamos começar com isso.
‫E o que é importante, é claro, são os valores, certo?
‫Então, queremos saber os valores.
‫E nesse caso, interessa-nos o nome mais curto e talvez também o comprimento aqui, porque essa é a lógica,
‫certo?
‫Então, o que faríamos é ir para a próxima etapa.
‫E podemos ver, OK, a lista consiste em sete valores, então tudo bem.
‫Então, isso parece funcionar.
‫Temos todos os nossos amigos lá.
‫Então, até esse ponto, tudo parece estar bem.
‫Em seguida, vamos para a próxima etapa.
‫Portanto, temos o nosso olho, que é o nosso.
‫Contador e está em zero.
‫Tudo bem, tudo bem, e a última contagem é sete, então podemos ir para a próxima etapa.
‫Agora, temos uma comparação aqui.
‫Se a lista tiver comprimento maior, menor comprimento.
‫E aí podemos ver que o nome mais curto é Frank.
‫Então foi assim que começamos.
‫Direito.
‫Portanto, a lista começa com Frank.
‫Então, pelo menos eu, que é zero.
‫Teremos Frank.
‫Então tudo bem.
‫Agora, vamos para a próxima etapa, pois parece que essa condição na instrução if não era verdadeira.
‫Tudo bem.
‫Em seguida, podemos ir para a próxima iteração ou próxima etapa.
‫E está comparando novamente, agora podemos ver que a lista ainda é de sete pessoas e que tivemos um comprimento de string
‫retornado com três e o outro tinha cinco.
‫Então, o que está acontecendo aqui?
‫Estamos olhando para Joe e Joe deve ser o próximo na lista porque ele tem um nome mais curto do que
‫Frank.
‫E isso é algo que sabemos porque escrevemos o programa.
‫Mas por algum motivo, com certeza, esse nome ainda é Frank.
‫Então, neste ponto, poderíamos perceber que eles estão bem?
‫Portanto, provavelmente temos um erro aqui.
‫Portanto, estamos comparando o criado com, embora deva ser menor do que agora.
‫Direito.
‫Ou menor então e agora, se nos livrarmos do ponto de interrupção e executarmos nosso programa novamente, veremos, OK, temos os
‫nomes mais curtos, Joe e Frank e Maria.
‫Tudo bem.
‫Então isso é ótimo.
‫Portanto, agora nosso programa está livre de bugs.
‫Bem, e é claro, não é porque ainda temos muitos problemas aqui.
‫Então, um deles é que temos essa lista com Frank, Joe, Michelle e assim por diante.
‫Tudo bem.
‫Por isso, criamos a lista manualmente para sabermos o que ela contém.
‫Mas agora vamos ver.
‫O que tentamos fazer é tentar convidar dez pessoas.
‫Mas nossa filha acabou de nos dar uma lista de sete pessoas.
‫Então, vamos executar este código.
‫E.
‫Temos uma exceção, perfeito, então essa é a grande vantagem das exceções, você sabe que algo está errado com seu
‫código e você pode consertar porque às vezes, como acabamos de ver, se você não vê
‫os bugs, eles são muito difíceis Consertar.
‫E aqui está um argumento fora do intervalo de exceção.
‫O índice estava fora do intervalo, deve ser não negativo e menor que o tamanho da coleção.
‫Então você pode ver os detalhes sobre isso.
‫Você pode ver um pouco mais sobre essa exceção e ela lhe dirá tudo o que você precisa saber.
‫Direito.
‫Então, muita informação.
‫Na maioria das vezes, é demais.
‫Mas o que isso quer dizer é que estamos tentando exis um elemento na lista que está fora de nosso alcance.
‫OK, então o que poderia ser?
‫Bem, pode ser a lista que estamos tentando acessar para que possamos ir aqui.
‫E podemos ver que temos uma exceção, temos uma lista de contagem zero.
‫Então o que está acontecendo, por que a lista é zero, porque vimos antes que a lista era sete, certo?
‫Então, por que a lista de repente é zero?
‫Porque nós nunca realmente.
‫Olhamos a lista e deletamos a lista, certo?
‫Nós vamos.
‫O que fizemos foi remover um elemento da lista, então tínhamos uma lista que remove.
‫E isso é um erro do iniciante, por assim dizer, porque como eu disse antes, estamos passando
‫por referência, não estamos passando por valor as diferenças para seguir quando dizemos.
‫Que queremos ter uma lista aqui e assim que este método for chamado, que é o caso aqui, então get
‫party friends é chamado aqui e passamos uma lista chamada friends.
‫Portanto, passamos essa lista aqui, o que não significa que passamos os valores.
‫Nós não.
‫Na verdade, passamos a referência para esses valores, o que significa que todos esses valores estão em algum lugar em
‫nossa memória.
‫Então, lá na memória do nosso computador.
‫Direito.
‫E estamos nos referindo a esses valores.
‫Então nós dizemos, OK, eu gostaria de ir para essa memória onde você tem todos os seus amigos.
‫Então, eu gostaria de ir para o Frank.
‫Eu gostaria de ir ao Joe e assim por diante.
‫Assim, uma vez que trabalhamos com esta lista, por exemplo, removemos um elemento dessa lista.
‫Não criamos uma cópia com os valores e depois removemos os elementos da lista.
‫Mas na verdade estamos apagando nesta memória.
‫Portanto, estamos excluindo Frank da lista.
‫Estamos excluindo Joe da lista.
‫Portanto, você pode ver facilmente se usar isso para cada loop para verificar seus amigos.
‫OK, então vou usá-lo novamente para que possamos realmente ver algo.
‫Então, vou passar por isso para cada loop.
‫E como você pode ver, apenas Angelena é exibida apenas por Angelena, porque Angelina é a sétima na
‫lista.
‫E acabei de remover seis pessoas da lista.
‫Vamos fazer isso de novo com quatro pessoas.
‫Só para você ver que Maria, Carlos e Angelina ainda estão lá.
‫Então você.
‫Eu vejo.
‫Na verdade, é a Michelle.
‫Tudo bem.
‫Então, melhor ainda, temos uma situação muito estranha em que Michelle, Carlos e Angelina ainda estão
‫na lista.
‫OK, então estamos constantemente removendo alguém da lista.
‫E isso cria um monte de problemas porque se outra pessoa ou usarmos essa
‫lista de amigos em outro lugar, ela estará vazia e corrompida.
‫Não terá os valores iniciais lá.
‫E isso é algo que não devemos fazer.
‫Então, o que podemos fazer é criar um buffer aqui.
‫Vou criar um novo buffer verbal chamado buffer, que será uma nova lista de strings.
‫E será minha lista, então vou apenas passar minha lista que foi passada para mim neste momento.
‫Tudo bem.
‫E vou armazená-lo no Buffer.
‫Portanto, será uma nova lista.
‫E agora o que podemos ver é que, é claro, temos que remover agora do buffer.
‫Portanto, removeremos desta cópia da lista.
‫Não vamos remover da própria lista.
‫Tudo bem.
‫Essa é a diferenciação importante que devemos fazer.
‫Estamos removendo da cópia agora.
‫Agora, claro, a gente também tem que usar o buffer aqui para pegar a frente da festa, porque senão nunca
‫vamos liberar nada da lista que será sempre de sete pessoas.
‫Portanto, mesmo nesta lista de buffers, sempre haverá sete pessoas e não funcionará corretamente.
‫Tudo bem.
‫Para que sejamos Frank, Jo, Michelle, tudo ainda está na lista.
‫OK, então o for each loop funciona bem.
‫E, em comparação, o que poderíamos fazer é fazer outro loop de quatro e verificar com amigos de festa
‫apenas para ver se agora temos apenas sete festas, três amigos de festa.
‫Então você pode ver que são amigos da quarta festa.
‫Então, todos eles estão lá e Joe, Frank e Maria também estão lá.
‫Portanto, não excluímos a lista de amigos.
‫Excluímos os elementos da lista de buffer.
‫E agora, é claro, não precisamos mais disso.
‫Então, isso foi apenas para fins de teste e depuração.
‫Mas agora temos um programa que funciona bem.
‫Agora, você poderia dizer, tudo bem, não temos mais nenhum bug.
‫Bem, mas ainda não corrigimos aquele bug que tínhamos antes, onde se entrássemos em 10 anos.
‫Nós gostaríamos.
‫Obtenha um bug ou um erro, na verdade um argumento fora do intervalo de exceção.
‫Então, o que podemos fazer aqui?
‫Porque estamos tentando acessar um elemento que não existe.
‫Portanto, estamos tentando acessar um elemento de lista, embora nossa lista esteja vazia.
‫Então, vamos contar é zero.
‫E isso é algo que vamos consertar no próximo vídeo, porque, de novo, isso tem mais de 10
‫minutos e não quero fazer vídeos superlongos.
‫Vou mostrar como consertar isso no próximo vídeo porque temos muitos problemas resultantes
‫disso.
‫Tudo bem.
‫Então, vamos corrigi-los no próximo vídeo.
‫Vejo você lá.