CodeGym/Blogue Java/Random-PT/Antigo Nível 02
John Squirrels
Nível 41
San Francisco

Antigo Nível 02

Publicado no grupo Random-PT

CodeGym – aprendendo a programar em Java

Antigo Nível 02 - 1Que tal uma maneira totalmente nova de estudar programação e obter uma educação? Isso não se parece com nada que você já viu antes. Que tal aprender, onde você tem objetivo, meio e resultado? Tenho o prazer de apresentar a você os novos cursos de programação online para aprender Java.

1 O treinamento é um jogo online

Você pega uma tarefa, executa-a e recebe uma recompensa. Eu acho que é claro e comum para você. As tarefas são as mais diversas: leitura de código, resolução de tarefas, vídeo-aulas, correção de erros no código, adição de novos recursos, grandes tarefas, criação de jogos e muito mais.

2 Apenas o essencial

Para que o curso não durasse 5 anos, joguei fora tudo o que era útil e deixei dele apenas o mais necessário. Analisei dezenas de vagas no mercado de trabalho. Todos os tópicos que o novato precisa saber para conseguir um emprego de desenvolvedor Java Junior estão incluídos no curso.

3 Eu abordei seu treinamento completamente

Um curso completo contém 500 miniaulas e 1200 (!) tarefas práticas . As tarefas são pequenas, mas são numerosas. Há uma grande quantidade deles. Apenas esse mínimo, fazendo isso, você obterá uma experiência tão valiosa. Há também trabalho em dupla, jogos diversos, grandes tarefas, projetos reais e outros tipos de prática.

4 Você não pode terminar o jogo e não se tornar um desenvolvedor

Curso contém 40 níveis. Você pode passar para o próximo nível, somente se tiver resolvido a maior parte das tarefas no nível atual. Começando com pouco e fácil, terminando com grande e muito útil. Cada pessoa que chegar ao final receberá de 300 a 500 horas de experiência prática. E isso dá uma grande chance de ganhar. E para conseguir um emprego.

5 Preparação para entrevista de emprego orientada para objetivos

Os últimos 10 níveis são dedicados à redação de um currículo, à preparação para a entrevista e à obtenção de habilidades de trabalho em equipe. Serão adicionados os vídeos das entrevistas de emprego e sua análise. Bem e, certamente, perguntas típicas em entrevista com respostas. Antigo Nível 02 - 2

6 Você pode resolver tarefas diretamente no local

É muito prático e eficaz. Tendo acabado de analisar uma nova tarefa em aula, você teria que fazer a sua própria por analogia aqui mesmo, no site. Para quem deseja fazer a tarefa no IDE, existe um plug-in que permite receber uma tarefa em dois cliques e entregá-la para verificação em um . Palestras, análise de exemplos, resolução de tarefas diretamente em um site da Web, resolução de tarefas em IDE - a lacuna entre teoria e prática é tão tênue quanto nunca antes.

7 Verificação instantânea de tarefas (em menos de um segundo)

Você conhece a situação em que entregou uma tarefa/trabalho para verificação e teve que esperar pelo resultado por uma semana, porque a pessoa que verifica está ocupada? Este é apenas o caso da maioria dos cursos off-line. No CodeGym você obterá resultados de compilação e verificação de sua solução de tarefa em menos de um segundo, depois de pressionar um botão «Executar/Verificar».

8 CodeGym adora, quando você passa tempo no Facebook durante o estudo

No Facebook existe uma página dedicada ao projeto. Nele você pode encontrar artigos técnicos interessantes, histórias motivacionais, notícias do CodeGym e muitas outras informações úteis.

9 Cobertura

Nas palestras há muitas referências a diferentes sites, onde você pode ler as explicações de outros palestrantes. Meu objetivo é que você entenda o material, não apenas me escute.

10 Você só vai precisar do seu cérebro e do seu computador para se tornar um desenvolvedor

Levará de 3 a 6 meses, dependendo de quanto tempo você pratica.

11 Suporte

Antigo Nível 02 - 3Sem dúvida, perguntas surgirão quando você enfrentar milhares de tarefas. Criamos um serviço especial, onde você poderá tirar dúvidas sobre as tarefas. Outros alunos CodeGym, moderadores, voluntários e membros fundadores do serviço estarão respondendo a você.

12 Comunidade

Acreditamos que a força está na união. Por isso criamos a Comunidade, onde você pode tirar dúvidas; discutir diferentes tópicos, compartilhar artigos e blog. Além disso, uma comunidade é o lugar ideal para conseguir um emprego conhecido. Portanto, sinta-se à vontade para fazer perguntas inteligentes e dar respostas inteligentes. Quanto mais ativo você se comportar e ajudar os outros, maiores serão as chances de que outro membro da associação sugira que você participe de seu projeto.

Você atingiu um novo nível

Nível 2

Antigo Nível 02 - 4

1 Elly, a base de tudo

- Ei, amigo. Hoje, quero contar a você como um programa Java típico é estruturado. A questão é que todo programa Java consiste em classes e objetos . - Eu já sei quais são as aulas. E o que são objetos? - Por analogia com a construção de um pequeno navio, primeiro você precisa fazer um desenho e depois entregá-lo ao estaleiro. Com base neste desenho será montado um navio. Ou cinco navios. Na verdade, quantos você quiser. Dezenas de naves idênticas são construídas com base em um desenho, é disso que se trata! - Todas as coisas na programação Java são exatamente as mesmas. - O programador é como um engenheiro de design. E se o engenheiro projetista precisa fazer desenhos, o programador Java precisa escrever classes. Em seguida, as peças são feitas com base nos desenhos e os objetos são feitos com base nas classes. - Primeiro escrevemos as classes (fazemos desenhos), e depois em tempo de execução do programa, a Java Virtual Machine cria objetos usando essas classes. Da mesma forma, os navios são feitos. Há um desenho e muitos navios. Existem diferentes embarcações que têm nomes diferentes e transportam várias cargas. No entanto, eles são muito parecidos: todos têm a mesma estrutura e podem realizar as mesmas tarefas. - No caso dos navios, está tudo claro. Dê-me mais algumas comparações para entender exatamente do que se trata? - Claro. Por exemplo, abelhas... Antigo Nível 02 - 5- Ah não, espera um pouco, abelhas me lembram algo ruim. Pense melhor em um formigueiro. - Um formigueiro é um bom exemplo de interação de objetos. No formigueiro mais simples, existem três classes de formigas: uma rainha, soldados e formigas operárias. Há uma diferença no número de formigas para cada classe. A rainha está sozinha no ninho; há dezenas de soldados e centenas de formigas trabalhando. Então, podemos dizer, existem três classes e centenas de objetos. As formigas se comunicam entre si, com as mesmas formigas e formigas de outras classes de acordo com regras estritas. - Este é um exemplo perfeito. Para um programa típico, é tudo a mesma coisa. Um objeto principal cria objetos de todas as outras classes. Os objetos começam a interagir uns com os outros e com o "mundo exterior" de um programa. O comportamento dos objetos é codificado dentro deles. - Eu não entendo muito bem. Em vez disso, não entenda nada. - Essas duas explicações são lados diferentes da mesma moeda. A verdade está em algum lugar. O primeiro exemplo (aquele com desenho e navios) mostra a relação entre a classe e os objetos desta classe. A semelhança é muito próxima. O segundo exemplo (aquele com o formigueiro) mostra a relação entre as classes escritas e os objetos que existem em tempo de execução. - Você quer dizer que primeiro precisamos escrever classes para todos os objetos existentes em um programa e, além disso, descrever sua interação? - Sim, mas é mais fácil do que parece. Em Java, todas as coisas no tempo de execução do programa são objetos e, ao escrever o programa, você deve descrever diferentes formas de interação do objeto. Objetos apenas chamam métodos uns dos outros e passam os dados necessários para eles. - Não é óbvio, mas quase claro. - Mas como você sabe quais métodos chamar e quais dados você precisa passar para os métodos? - Cada classe tem sua descrição para especificar para que a classe foi criada. Cada método também tem sua descrição do que faz e quais dados devem ser enviados a ele. Para usar a classe, você precisa saber em geral o que ela faz. Além disso, você precisa saber exatamente o que cada método dessa classe faz. Mas você não precisa saber como isso é feito . É um tipo de mágica. - Humph. Parece que sim.   - Aqui, dê uma olhada em um código de classe que copia um arquivo: Antigo Nível 02 - 6- Não é tão fácil, mas já entendi. - Multar. Te vejo mais tarde Jacaré!

2 Risha, Variáveis ​​e tipos primitivos

- Ei você, mão de obra gratuita. - Quer dizer, «Oi, Amigo». Quero familiarizá-lo com a estrutura interna das variáveis. Você já sabe que cada variável tem um pedaço de memória associado a ela, onde a variável armazena seu valor. - Sim. Você disse isso da última vez. - Multar. É bom que você se lembre disso. Então eu vou continuar. - aulas . Quando descrevemos uma nova classe em um programa, isso significa que declaramos um novo tipo composto complexo , cujos dados serão outros tipos complexos ou tipos primitivos. Antigo Nível 02 - 7- Ainda está claro para uma maravilha. - Como os tipos grandes (complexos) consistem em muitos tipos pequenos (primitivos), seus objetos usam muita memória. Mais do que as variáveis ​​usuais de tipo primitivo. Às vezes muito mais. A atribuição de variáveis ​​de tipos complexos levava muito tempo e exigia a cópia de grandes quantidades de memória. É por isso que variáveis ​​de tipo complexo armazenam não o objeto em si, mas uma mera referência de objeto (que é um endereço de quatro bytes). Isso é suficiente para acessar os dados do objeto. A JVM assume todas as dificuldades relacionadas a ela. - Eu não entendo. - Já discutimos que a variável é como uma caixa. Para armazenar 13 nele, você pode escrever o número em uma folha de papel e colocá-lo em uma caixa. - Agora imagine que você tem que guardar em uma caixa (variável) algo um pouco maior. Por exemplo, um cachorro, um carro ou seu vizinho Joe. Para simplificar, você pode fazer uma coisa fácil: coloque a foto do cachorro em vez do cachorro, a placa do carro em vez do carro e o número de telefone de Joe escrito em uma folha de papel em vez do próprio Joe. - Agora pegamos um pedaço de papel e escrevemos o número de telefone de Joe nele. É como uma referência de objeto. Se tirarmos da caixa uma folha onde está escrito o número de Joe, tirarmos cópias e colocarmos em algumas caixas, as referências a Joe aumentarão, mas só pode haver um Joe. - A vantagem de tal armazenamento de dados é quepode haver muitas referências e apenas um objeto . - É emocionante. A propósito, eu quase entendi. Responda apenas a mais uma pergunta: o que acontece se eu atribuir uma variável de tipo complexo a outra variável de tipo complexo? - Então essas duas variáveis ​​conterão o mesmo endereço. E, portanto, se você alterar os dados armazenados em uma variável de tipo complexo, os dados da outra também serão alterados . Porque você sabe , há realmente apenas um objeto ao qual as variáveis ​​armazenam referências. No entanto, pode haver muitas variáveis ​​que armazenam referências ao objeto. - E o que é armazenado em variáveis ​​de tipo complexo (tipo de referência/classe) enquanto não há referências de objeto? Pode realmente haver tal coisa? - Sim, amigo. Você tirou as palavras da minha boca. Isso pode ser. Se não houver referência de objeto na variável de tipo de referência (complexa), ela armazena null , uma «referência nula» especial. Na verdade, ela simplesmente armazena o endereço de um objeto igual a 0. Mas a Java Virtual Machine nunca cria objetos com endereço zero, portanto ela sempre sabe que se a variável de referência for 0, então não há nenhum objeto ali. Antigo Nível 02 - 8Eu entendi direito? As variáveis ​​são divididas em dois tipos - primitivas e de referência. Uma variável de tipo primitivo armazena um valor enquanto uma variável de tipo de referência armazena uma referência de objeto. Tipos primitivos são int, char, boolean e alguns mais. O resto são variáveis ​​de referência, elas são formadas usando classes. - Isso mesmo, garoto.

3 Elly, quais objetos são

Antigo Nível 02 - 9- Aqui está seu professor favorito novamente. Como avançamos rapidamente, vou lhe dizer o que são objetos e como lidar com eles. - Para criar qualquer objeto, você precisa escrever o nome do tipo de objeto (classe) e a palavra-chave new antes dele. Digamos que temos uma classe Cat, então: Antigo Nível 02 - 10- O que acontece se você apenas criar um objeto e não atribuí-lo [sua referência] a nenhuma variável? - Se você fizer isso, a Java Virtual Machine criará o objeto e imediatamente o declarará como lixo (objeto não utilizado). Depois de um tempo, ele excluirá esse objeto durante a coleta de lixo. - Como posso destruir o objeto se não preciso mais dele? - Você não pode.Assim que não houver nenhuma variável para armazenar uma referência de objeto, o objeto será sinalizado como lixo e a JVM o destruirá durante a próxima coleta de lixo. Contanto que haja pelo menos uma referência de objeto, ela será considerada ativa e não será destruída. Quando quiser destruir rapidamente o objeto, defina todas as suas referências como nulas, ou seja, atribua um valor nulo a todas as variáveis ​​que se referem a esse objeto. - Entendi. Não parece nada difícil depois das palestras anteriores. - Ok, então aqui estão algumas tarefas para você melhorar suas habilidades. Eles também estão em System.out. Mas depois haverá outros mais difíceis. E você poderia nos mostrar de que aço você é feito.
Tarefas
1 Escreva um programa que exiba: «Passo a passo e a coisa está feita.».
2 Escreva um programa que exiba 7 vezes: «É meio divertido fazer o impossível.».
3 Escreva um programa que exiba: «Sempre deseje aprender algo útil.».

4 Risha, Visibilidade de variáveis.

- Oi, meu aluno favorito. Agora vou falar sobre a visibilidade das variáveis . - Por que, também existem variáveis ​​invisíveis? - Não, as variáveis ​​são visíveis nos locais do código onde essa variável pode ser acessada. Algumas variáveis ​​podem ser acessadas de qualquer lugar em um programa, outras apenas dentro de sua classe e algumas variáveis ​​podem ser acessadas apenas dentro de um método. - Por exemplo, você não pode referenciar a variável antes dela ser declarada. - Está claro. - Aqui estão alguns exemplos: Antigo Nível 02 - 111 Uma variável declarada em um método existe/é visível desde o início da declaração até o final do método. 2 Uma variável declarada em um bloco de código existe até o final deste bloco de código. 3 Variáveis ​​- argumentos do método - existem em qualquer lugar dentro do escopo do método. 4 Variáveis ​​de classe/objetos existem durante todo o tempo de vida de seu objeto. Modificadores de acesso especiais públicos e privados também controlam sua visibilidade. 5 Variáveis ​​de classe estática existem no tempo de execução do programa. Os modificadores de acesso também determinam sua visibilidade. - Adoro fotos, tudo se encaixa. - Bom para você, amigo. Sempre soube que você é um sujeito inteligente. - Também falarei sobre modificadores de acesso . Não tenha tanto medo, não é ciência de foguetes. Estas são as palavras público e privado que você vê. - Não estou com medo, só está frio aqui. - Sim claro. Você pode controlar o acesso (visibilidade) de métodos e variáveis ​​em sua classe das outras classes. Para cada método ou variável, você pode especificar apenas um modificador de acesso. 1 Modificador público Uma variável, método ou classe sinalizada com um modificador público pode ser acessada de qualquer lugar no programa. É o mais alto grau de abertura, sem restrições. 2 Modificador private Uma variável ou método sinalizado com um modificador private só pode ser acessado a partir da classe onde foi declarado. Para todas as outras classes, um método ou variável sinalizada são invisíveis, como se não existissem. Este é o maior grau de fechamento (visível apenas da mesma classe). 3 Padrão do modificador Se algum modificador não sinalizar uma variável ou método, ele é considerado um padrão do modificador. Variáveis ​​ou métodos com esse modificador (ou seja, sem nenhum) são visíveis para todas as classes do pacote em que são declaradas. Somente no mesmo pacote. Às vezes, esse modificador é chamado de pacote para indicar que o acesso a variáveis ​​e métodos é possível para todo o pacote, cuja classe pertence à guia Explicação: Antigo Nível 02 - 12

5 Diego, Tarefas para criar um monte de variáveis

- Ei amigo. Se necessário, guardo uma cópia do contrato para você. Aquele mesquinho sorrateiro Risha é felizmente inconsciente. Você deveria ter visto os valores em meu contrato. Heh heh. - Muito bem Diego. Acho que você me ensina coisas realmente úteis. - Claro, amigo. Não há ganho sem dor. Mas ainda alguém sofre a dor sem ganho. - Vamos melhor virar a mão para estudar. Agora vou mostrar como criar um monte de variáveis ​​de diferentes maneiras: Antigo Nível 02 - 13- Nossa, Diego! Você é tão esperto. - Heh heh! Obrigado, amigo. - Acho que você já perdeu minhas tarefas. Então aqui estão alguns deles. Esses humanos, alienígenas, não sabem nada sobre nossa vida robótica. Quem além de mim vai te ensinar isso?
Tarefas
1 Escreva um programa que exiba 3 vezes: «Muitas pessoas estão vivas apenas porque é ilegal atirar nelas.».
2 Escreva um programa que exiba: «Se eu quiser sua opinião, peço que preencha os formulários necessários.».
3 Escreva um programa que exiba 20 vezes: «Eu nunca disse a maioria das coisas que disse.».

6 Elly, Passando por referência. Variáveis ​​de referência

- Ei, amigo, sou eu de novo, Elly. Desculpe, eu sempre digo isso, mas é assim que as coisas são feitas na Terra no século 31. Explicarei as características das variáveis ​​de referência e como passar argumentos referenciais para funções (métodos). - Estou pronto. - Pois bem, variáveis ​​de referência são variáveis ​​de todos os tipos, exceto as primitivas. Essas variáveis ​​contêm apenas o endereço do objeto (referência do objeto). - As variáveis ​​de tipos primitivos armazenam um valor e um tipo, e as variáveis ​​de classe armazenam referências aos objetos da mesma classe, poço ou nulo. Estou certo? - Absolutamente. - Então, o que é uma referência? - Objeto e sua referência estão ligados, digamos, como um homem e seu número de telefone. Um número de telefone não é um homem, mas pode ser usado para ligar para um homem para pedir-lhe algo, orientá-lo ou comandá-lo. Uma referência também é usada para interagir com um objeto. Todos os objetos interagem uns com os outros através de referências. - É como se as pessoas se comunicassem pelo telefone? - Isso mesmo. Quando você atribui um objeto primitivo, seu valor é copiado (duplicado). Quando você atribui uma variável de referência, apenas o endereço do objeto (número de telefone) é copiado, e não o próprio objeto. - ОK, entendi. - Uma referência oferece outra vantagem: você pode passar uma referência de objeto para qualquer método, e este método poderá modificar (alterar) nosso objeto usando sua referência chamando seus métodos e acessando dados dentro do objeto. Antigo Nível 02 - 14- Os valores das variáveis ​​a & b são trocados dentro do método swap . Quando você chama o método swap , as variáveis ​​a & b recebem cópias dos valores m & n . Portanto, os valores das variáveis ​​m & n permanecem os mesmos quando você altera os valores de a & b . É claramente visível no código da coluna da direita. - Para ser sincero, não entendi nada disso. Posso ter mais alguns exemplos? - No caso do tipo de referência, você pode fazer isso: Antigo Nível 02 - 15- As variáveis ​​aeb são atribuídas referências a emma e alice, respectivamente, os valores de aeb mudam dentro dos objetos emma e alice. - Então é possível declarar classes dentro de outras classes também? Uau! - Quanto ao resto, não está claro. - Nem todos ao mesmo tempo.

7 Elly, chamada de função, valor de retorno

- Bem, então vamos virar. Falaremos sobre como funciona a chamada de método, e então você tenta novamente dar uma olhada na aula anterior, ok? - Negócio! - Bem, então falarei sobre a chamada de função/método e os valores retornados. - Os comandos são agrupados em funções, para que você possa executá-los em um único bloco, como um comando complexo. Para fazer isso, você precisa escrever o nome da função (método) e, em seguida, entre parênteses, especificar valores e parâmetros. Antigo Nível 02 - 16- No exemplo acima, escrevemos uma função exibindo a string passada 4 vezes. Em seguida, chamamos a função print4 na linha 6. - Quando chegar a execução da linha 6, o programa pulará para a linha 9 e a variável s receberá um valor “Gosto de movê-lo, movê-lo”. - Em seguida, as linhas 11-14 serão executadas e, finalmente, a função será concluída e o programa continuará com a linha 7. - Entendi. - Você pode não apenas passar argumentos (parâmetros) para a função, mas também retornar o resultado (valor) da operação da função. Isso é feito usando a palavra-chave return. Aqui está o que parece: Antigo Nível 02 - 17- Acho que estou pegando. É o mesmo código à esquerda e à direita. À esquerda, é apenas apresentado como uma função separada. - A função calcula um valor e passa para quem a chamou usando o comando return. Pelo menos eu acho que sim. - Basicamente, é verdade. - E qual é o tipo vazio? - Algumas funções apenas fazem algo, mas não calculam e retornam nenhum valor, como nosso método main().Para essas funções foi criado um tipo de resultado especial void (um tipo vazio). - Por que não podemos especificar nada, se uma função não retorna nada? - Pense em como cada variável é declarada: tipo e nome. Uma função é declarada com tipo, nome e parênteses. O nome da função seguido pelos parênteses é uma chamada de função! - Então foi mais fácil criar um "tipo vazio" do que dividir as funções em duas categorias, aquelas que retornam um valor e as que não retornam um valor? - Exatamente! Você é um pensador rápido, meu garoto. - E como posso retornar um tipo vazio? - Você não pode. Veja como funciona: quando a JVM executa um returncomando, ele calcula o valor da expressão à direita da palavra return, armazena esse valor em uma área de memória especial e sai imediatamente da função . Ele usa o valor salvo como resultado de uma chamada de função no local onde a função foi chamada. Você pode ver isso no exemplo acima. - Você quer dizer o lugar onde int m = min(a,b) transformado em m = m2 ? - Sim. Após a chamada da função, tudo continua a funcionar como se, em vez da função, seu resultado fosse escrito no mesmo local. Leia essa frase mais uma vez e observe o código do último exemplo. - Parece fácil, mas é difícil na realidade. Eu consegui só um pouquinho, isso é tudo. - Tudo bem.Na primeira tentativa, você pode entender apenas o que já sabe. Quanto mais você entra em uma nova área para você, mais ela fica obscura. E o resultado será ainda mais incrível. Com o passar do tempo, tudo fica claro. - Bem, se sim, então vamos continuar.

8 Diego

- Ei, amigo. Aqui estão algumas tarefas para você. Agora você é capaz de fazer algo mais do que System.out. Faça o seu melhor! Eu acredito em você!
Tarefas
1 Mínimo de dois números
Escreva uma função que retorne no mínimo dois números.
2 Máximo de dois números
Escreva uma função que retorne no máximo dois números.
3 Mínimo de três números
Escreva uma função que retorne um mínimo de três números.
4 Mínimo de quatro números
Escreva uma função que retorne um mínimo de quatro números.
A função min(a,b,c,d) tem que usar (chamar) a função min(a, b)
5 Duplicação de string
Escreva uma função que exiba três vezes a string passada. Cada string deve estar em uma nova linha.
6 Exibição de texto
Escreva uma função que exiba a string passada (palavra) três vezes na mesma linha.
As palavras devem ser separadas por um espaço e não precisam se fundir em uma só.

9 Diego, nome completo da turma

Antigo Nível 02 - 18- Ei, amigo, quero falar sobre os nomes completos das classes. - Você já sabe que as aulas estão nos pacotes. Portanto, um nome de classe completo é um nome que abrange todos os pacotes separados por pontos e um nome de classe. Exemplos: Antigo Nível 02 - 19 - Para usar a classe em seu próprio código, você precisa especificar seu nome completo. No entanto, você pode usar um nome curto - apenas um nome de classe. Para fazer isso, você precisa “importar” esta classe especificando seu nome e adicionando a palavra import antes de declarar uma classe. As classes do pacote java.lang (String, Integer,...) são importadas por padrão. Você não precisa especificá-los. Exemplo: Antigo Nível 02 - 20- Um exemplo de uso de nomes curtos: Antigo Nível 02 - 21- Entendi. - Multar.

10 Professor, Palestra sobre classes e objetos

Antigo Nível 02 - 22- Ei, amigo. Espero que você tenha entendido tudo que Elly e Risha lhe contaram hoje. Apenas para garantir, como prometi, aqui estão os links para mais material: 1 Minhas anotações 2 Pensando em Java. Aquele livro incrível de que já falei. Seria ótimo se você lesse. - Espero que você tenha tempo para dar uma olhada. - Aham. Claro que vou!

11 de julho

- Ei, amigo! Espero que você esteja para um descanso duro e cansativo?

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário