Ir ao conteúdo

Ariel Souto

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

Tudo que Ariel Souto postou

  1. @osvaldomp Desculpem a demora. Deu certo. Muitíssimo obrigado!
  2. @osvaldomp Segue: =SE($S$11<>$S$13; VERDADEIRO; FALSO) Se puder, veja a mensagem anterior que tem uma imagem exemplificando bem o que eu preciso fazer.
  3. @Midori Infelizmente não deu certo. Fecha meu excel. Não dá nenhum erro, mas na hora que o código roda, o excel fecha. Não sei o motivo, mas apenas fecha sozinho. Mas tudo bem, se não der certo não tem problema. Era só algo que eu queria fazer por perfeccionismo meu mesmo. MUITÍSSIMO OBRIGADO pela sua disposição de tempo em me ajudar. Eu vou te explicar melhor o meu caso, pois talvez você consiga me ajudar de outra forma. Tenho uma lista de validação de dados. Quando eu seleciono algum nome da lista, em alguns campos escondidos são puxadas as informações desse nome. Quando eu clico no botão buscar, essas informações desses campos escondidos são copiadas para outros campos do design da planilha. Até aqui, ok. Mas quando eu deleto o nome lá da lista de validação de dados ou seleciono outro nome, enquanto eu não clico em buscar novamente, ficam os dados antigos que foram copiados. Minha intenção em fazer aquilo que pedi ajuda no tópico era para que assim que tal célula ficasse verdadeira, esses dados fossem limpados para que quando eu colocasse outro nome da lista de validação de dados, na parte do programa, as células estivessem em branco. Seguem todos para ilustrar melhor.
  4. @Midori Colei o código, como você passou, mas deu erro (segue imagem em anexo). Aí, após o erro da imagem, eu olhei o código e pensei que talvez seria porque não tinha End If e coloquei. Por fim, parece que o código roda, mas parece que enquanto o valor da célula é VERDADEIRO, o código fica rodando loucamente sem parar e trava o excel. Ele travou o excel imediatamente (nem pude conferir se rodou mesmo a macro). Porque essa macro que eu quero rodar é o seguinte: se a célula for verdadeiro, rode a macro de limpar alguns campos da planilha. Aí acho que ele está fazendo isso sem parar. O código que eu coloquei com o End If: ***MUDEI A CÉLULA BJ17 PARA BD17, mas por questões pessoais mesmo. Private Sub Worksheet_Calculate() If [BD17] = True Then Call limpar_busca_paciente End If End Sub
  5. Queridos, boa noite. Estou com um problema e gostaria da ajuda de vocês. Eu tenho uma célula com uma fórmula que resulta em verdadeiro ou falso. Quando essa célula está com o valor verdadeiro, eu gostaria que ela executasse uma macro automaticamente. Falso: não chama nada. Verdadeiro: chama a macro automaticamente 1 vez. Poderiam me ajudar com isso? Sou extremamente agradecido pela ajuda de vocês.
  6. @Midori Amigo, teria como você copiar meu código e colocar isso que você mostrou dentro do meu código? Porque eu não sei onde colocar. Como eu disse, eu copiei esse código de um vídeo no youtube, então nem entendo ele. Se puder me ajudar dessa forma, te agraço de coração. P.S: não precisa, eu CONSEGUI! MUITO OBRIGADO! Mas você poderia me ajudar em outra coisa? Eu vi aqui que o filterIndex do PDF é 26. Eu gostaria de salvar em PDF apenas algumas planilhas específicas, sabe como faço isso por código? Seria possível? Exemplificando: tenho vários botões para salvar em PDF. Um botão abriria um salvar como com tipo PDF, porém para salvar a página 23. Outro abriria um salvar como com tipo PDF, porém para salvar a página 24. Outro seria para a página 25, outro para a página 26, outro para as páginas 27 a 28 e outro para as páginas 29 a 30.
  7. Queridos, boa tarde. Eu estou apanhando aqui para fazer algo. 1) Quero fazer um botão Salvar como para a pessoa clicar nele e abrir a janela de salvar como (isso eu já fiz e vou colocar o código VBA logo abaixo que copiei de um vídeo do youtube). Porém, quando abre a janela de salvar como, ela abre para salvar como tipo pasta de trabalho excel, porém eu preciso que abra já pré-definido como pasta de trabalho excel habilitada para macro. 2) Depois que eu conseguir fazer isso acima, eu gostaria de fazer um botão do mesmo jeito que o de cima, mas com a opção pré definida de pdf. Vocês poderiam me ajudar? Segue código VBA: Sub Salvar_Como_Janela() ' ' Salvar_Como_Janela Macro ' ' Dim Form As FileDialog Set Form = Application.FileDialog(msoFileDialogSaveAs) With Form .Show .Execute End With End Sub
  8. @Flávio Pedroza Muito obrigado pela ajuda.
  9. @Flávio Pedroza Obrigado pela dica, Flávio. Vou tentar fazer agora como você disse. Mas antes, eu gostaria de você desse uma olhada no que eu fiz enquanto estava aguardando alguma resposta: Eu fiz a opção 3 mesmo. Eu não gostei muito dela porque achei que ficou repetindo muito nos parâmetros. //MÉTODOS DA TROCA DE SENHA -------------------------------------------------------------------- public void BloquearTrocaDeSenha() { if (_tentativasTrocaDeSenha == 0) { _permissaoDeTrocaDeSenha = false; } else { _permissaoDeTrocaDeSenha = true; } } public void PermitirTrocaDeSenha(int code, int senhaAtual, int senhaNova) { BloquearTrocaDeSenha(); if (_permissaoDeTrocaDeSenha == true) { ConfirmarPinCode(code, senhaAtual, senhaNova); } else { Console.WriteLine("A troca de senha, por motivos de segurança, está temporariamente bloqueada. Entre em contato com o gerente."); } } public void ConfirmarPinCode(int code, int senhaAtual, int senhaNova) { //gerando um PinCode aleatório. //Random numAleatorio = new Random(); //int pinCode = numAleatorio.Next(1, 3); int pinCode = 1; //deixei esse por enquanto para testar. if (pinCode == code) { VerificarSenhaAtual(senhaAtual, senhaNova); } else { Console.WriteLine("ERRO: PinCode Inválido."); _tentativasTrocaDeSenha--; } } public void VerificarSenhaAtual(int senhaAtual, int senhaNova) { if (senhaAtual == _senha) { VerificarTamanhoDaSenhaNova(senhaNova); } else { Console.WriteLine("ERRO: sua senha atual está errada. Operação finalizada."); _tentativasTrocaDeSenha--; } } public void VerificarTamanhoDaSenhaNova(int senhaNova) { if (senhaNova.ToString().Length > 5) { _senha = senhaNova; } else { Console.WriteLine("ERRO: infelizmente não foi possível trocar a senha. Ela deve ter no mínimo 6 dígitos."); } } Você achar que do jeito que eu fiz acima está correto/usual para o mercado de trabalho? (Claro que vou fazer do jeito que você sugeriu, que com certeza será o mais ideal, mas gostaria de saber se esses métodos com ifs chamando outros métodos e repetindo vários parâmetros de método em método está correto ou se teria uma forma melhor de fazer essa parte).
  10. Bom dia/tarde/noite. Sou iniciante em programação, iniciando meus estudos de lógica de programação 06/06/2019. No momento estou aprendendo C# e gostaria de tirar uma dúvida com vocês, que com certeza são mais experientes do que eu. Estou realizando um exercício para melhor fixação e aprendizagem. Nesse exercício criei uma classe Conta. Já implementei as propriedades e alguns métodos. No momento estou querendo realizar um método de AlterarSenha() e dentro dele tem várias etapas. Segundo a ideologia Clean Code, devemos reduzir o nosso código ao máximo e para isso utilizamos os métodos. Dentro desse método que quero chamar, vão existir as seguinte etapas: 1) Verificar se a propriedade bool _permissaoDeTrocaDeSenha está como true. (criei essa propriedade, pois se eu tentar trocar a senha e errar 3 tentativas ela se tornará false e bloqueará a troca de senha) 2) Vou criar um código aleatório com o método Random() para gerar um PinCode. Aqui preciso verificar se o PinCode que o cliente recebeu e digitou bate com o PinCode gerado. 3) Vou solicitar que o cliente digite a senha atual e verificar se a senha digitada bate com a atual. 4) Vou conferir se a nova senha tem mais de 5 caracteres. Enfim, bolei assim: public void AlterarSenha(int pinCode, int senhaAtual, int senhaNova) { //1) se _permissaoTrocaDeSenha = true. //2) se pinCode = PinCode. //3) se senhaAtual = _senha. //4) se senhaNova.length > 5. //entra na troca: alterar _senha para senhaNova. //senão: "ERRO: infelizmente não foi possível trocar a senha. Ela deve ter no mínimo 6 dígitos." //senão "ERRO: sua senha atual está errada. Operação finalizada." //senão "PinCode Inválido!" //senão "A troca de senha, por motivos de segurança, está temporariamente bloqueada. Entre em contato com o gerente." } Bom, agora vem a minha pergunta: Eu ACHO que devo criar um método separado para cada etapa dessas (seguindo a ideologia Clean Code e POO, buscando no futuro talvez uma reutilização de código, por exemplo). Aí eu fiquei me questionando: 1) Devo criar esses métodos um dentro do outro, tipo uma cascata? 2) Ou devo criar todos esses métodos dentro do método principal AlterarSenha()? 3) Ou devo criar todos esses métodos de forma individual dentro da Classe Conta? (Se essa for a resposta correta, serão MUITOS métodos dentro da Classe Conta, pois além desses que citei acima, a Classe Conta já tem outros métodos que eu criei como: Sacar(), Depositar(), etc... E nesse caso como eu organizaria esse tanto de métodos para que fique fácil encontrá-los no código? Seria por ordem alfabética?) Sou grato a todos que puderem me ajudar.
  11. Muito obrigado, galera! Vocês são fera!!! Vou juntar a grana e esperar a Black Friday para ver se consigo comprar mais barato ainda HAHAHAHA. Abraços.
  12. @Christian C. Torres A Kabum já me enviaria o PC montado? Além disso preciso comprar a licença do Windows. Nela, será que já vem o pacote office?
  13. Eu gostaria de agradecer a todos vocês que se prestaram a me responder e ajudar. Eu realmente sou leigo nesse assunto e vocês me ajudaram a ter uma noção de quanto, mais ou menos, devo juntar para fazer essa aquisição. Eu calculei que com R$2500 à vista consigo comprar o PC na especificação que me passaram + monitor + teclado + SDD extra para o meu notebook. MUITO OBRIGADO! Apenas mais uma dúvida: O Christian e o Grievous me passaram duas especificações diferentes. Gostaria de saber se ambas são sem placa de vídeo ou se alguma dessas especificações tem placa de vídeo. E se elas não tiverem, eu não preciso de placa de vídeo para rodar nem o Dota 2 e nem o The Sims 4? Grato.
  14. Bom dia a todos. Primeiramente eu gostaria de explicar o título do tópico. Sei que um Pc Gamer jamais seria simples, mas escolhi essa palavra porque as necessidades que eu quero ao comprar um Pc Gamer pra mim é muito diferente do que a maioria das pessoas querem. Eu jogo apenas Dota 2 e The Sims 4 e não me importo com um SUPER gráfico. Pra mim, o jogo pode rodar no gráfico mais baixo que não faz diferença. O que importa pra mim é o desempenho do jogo ser muito bom. Atualmente tenho um notebook i5 3ª geração com 6GB de memória e GForce GT 740M. Ele me atende bem, mas já está velho e ficando bem lento! Quando jogo Dota 2 e The Sims 4 os lags são por conta de internet via wi-fi e raramente por conta do notebook. Então o que eu tenho atende as minhas necessidades para jogar, mas como eu disse, ele está velho e lento e eu tenho que formatar ele a cada 6 meses ou 1 ano. Gostaria de saber a opinião de vocês, se apenas um SSD já resolveria minha necessidade, sem precisar comprar um novo Pc. Ou se é melhor procurar um novo Pc mesmo com algumas especificações melhores: i5 8ª geração, 8GB de memória e uma GForce melhor. O que vocês me sugerem? Além disso, minha esposa gosta de jogar comigo e preciso comprar um outro notebook ou Pc que atendam os mesmo requisitos para jogarmos juntos. Será que compro um Pc Gamer ou Notebook? Estou achando os preço extremamente salgados quando procuro por notebook gamer ou pc gamer! Está tudo na faixa de R$3000+ e isso vai muito além das minha finanças e das minhas necessidades. Será que montar um pc escolhendo peça por peça sairia mais em conta? Traduzindo: preciso ou revitalizar meu notebook com um SSD ou comprar um outro notebook ou pc gamer, e comprar mais um notebook ou pc gamer de igual qualidade para as mesmas necessidades. Com o conhecimento de vocês, poderiam me ajudar? Eu não quero gastar muito. Apenas o necessário para atender às minhas necessidades como citei acima. Não preciso de gabinete bonito, teclado bonito, nada disso. Apenas a funcionalidade bonita e o preço mais belo ainda hahahaha! Obrigado galera!
  15. Pessoal, MUITO OBRIGADO! Sou muito grato a vocês! É o único fórum de dúvidas da internet que respondem. Eu realmente não tinha entendido como deveria ser feita a entrada do input, por mais que tivesse entendido o código. As vezes procuramos um grande erro e no fim era algo tão simples. Como eu faço para fechar o tópico? Minha dúvida já foi solucionada.
  16. @MassakiMsk Espera! Eu devo digitar nesse exemplo que você me deu: Letras (enter) 3 (enter) 4.5 (enter)? Ou eu devo digitar TUDO e só depois apertar o enter? Porque eu estou tentando fazer da primeira forma. E aí quando eu digito Letras e aperto o enter dá esse erro.
  17. @Flávio Pedroza Pois é, eu também não vejo erros no código mas fica dando esse erro (System.IndexOutOfRangeException: 'Index was outside the bounds of the array.') e eu não sei mais o que fazer. Existe alguma outra forma de escrever na mesma linha?
  18. Bom dia a todos. Eu comecei a aprender C# ontem e para testar meus conhecimentos iniciais estou fazendo alguns testes do URI JUDGE. Eu não consegui resolver dois problemas iniciais (1010 e 1012) porque a entrada de dados não deve ser feita em linhas separadas e sim na mesma linha com um espaço entre elas. Eu pesquisei bastante como fazer isso e encontrei em vários locais, mas quando eu implemento retorna um erro: System.IndexOutOfRangeException: 'Index was outside the bounds of the array.' A FORMA COMO ENCONTREI PARA SE IMPLEMENTAR A ENTRADA DE DADOS NA MESMA LINHA: usando string[] e split(' '). using System; namespace EscreverNaMesmaLinha { class Program { static void Main(string[] args) { string x; int y; double z; string[] vet = Console.ReadLine().Split(' '); x = vet[0]; y = int.Parse(vet[1]); z = double.Parse(vet[2]); Console.WriteLine(x); Console.WriteLine(y); Console.WriteLine(z); } } } Infelizmente essa forma acima não está funcionando. Talvez esteja desatualizada, não sei. Vocês poderiam me ajudar? Segue o link dos dois problemas propostos no site do URI JUDGE. Problema 1010: https://www.urionlinejudge.com.br/judge/pt/problems/view/1010 Problema 1012: https://www.urionlinejudge.com.br/judge/pt/problems/view/1012 Obrigado a todos que se disporem em me ajudar e me desculpem por qualquer erro.
  19. Senhores, conto com a ajuda de vocês. (ESSE É MEU PRIMEIRO POST. POR FAVOR, DESCONSIDEREM QUALQUER ERRO) BREVE INTRODUÇÃO: Eu comecei a aprender programação há 10 dias (06/06/2019) e estou aprendendo por enquanto por um PDF de Lógica de Programação e vídeos no YouTube. Aprendi ontem (15/06/2019) em um vídeo sobre o CLEAN CODE (dividir o código em várias funções para facilitar a leitura do código por futuros programadores que derem manutenção nele, como também facilitar a correção de bugs). Eu ainda não sei fazer função direito (ainda não entendi tão bem), mas eu aprendi como fazer procedimento (similar à função, porém sem retorno) e eu fiz hoje um JOGO DA VELHA todo com base nessa ideia de CLEAN CODE e procedimentos. Gostaria que vocês olhassem o meu algoritmo (por mais que ainda seja em PORTUGOL) para eu saber se estou aprendendo e programando corretamente. Obs.: o JOGO DA VELHA funciona perfeitamente. (Então não quero que procurem erros, pois está funcionando bem, mas quero que vejam se esse estilo de programação, dividindo em procedimentos e chamando os procedimentos no algoritmo principal, é o jeito certo de programar). 1) Se esse for o jeito certo, continuarei aprendendo e programando assim. 2) Se esse não for o jeito certo, por favor, poderiam me orientar qual a melhor maneira de programar com base no CLEAN CODE? SEGUE ABAIXO TODO O ALGORITMO E OS PROCEDIMENTOS Algoritmo "JOGO DA VELHA COM PROCEDIMENTOS" //aqui se inicia o algoritmo Var //aqui são as variáveis globais nomeJogador, simboloJogador : VETOR [1..2] DE CARACTERE tabela : VETOR [1..3,1..3] DE CARACTERE contador, linha, coluna : INTEIRO PROCEDIMENTO jogadores() //nomeando os jogadores. VAR INICIO ESCREVAL () ESCREVAL ("- JOGADORES") ESCREVA () PARA contador DE (1) ATE (2) FACA ESCREVA ("Digite o nome do(a)", contador,"º jogador(a): ") LEIA (nomeJogador[contador]) FIMPARA FIMPROCEDIMENTO PROCEDIMENTO simbolos() //os símbolos dos jogadores. VAR INICIO simboloJogador[1] := "X" simboloJogador[2] := "O" ESCREVAL () PARA contador DE (1) ATE (2) FACA ESCREVAL ("O(A) jogador(a) ", nomeJogador[contador]," tem por símbolo: ", simboloJogador[contador],".") FIMPARA ESCREVAL () FIMPROCEDIMENTO PROCEDIMENTO tabuleiroEmBranco() //o tabuleiro. VAR contadorLinha, contadorColuna : INTEIRO INICIO PARA contadorLinha DE (1) ATE (3) FAÇA PARA contadorColuna DE (1) ATE (3) FAÇA tabela[contadorLinha,contadorColuna] := "_" SE (contadorlinha = 3) ENTAO tabela[contadorLinha,contadorColuna] := " " FIMSE FIMPARA FIMPARA tabuleiroAtualizado() FIMPROCEDIMENTO PROCEDIMENTO tabuleiroAtualizado() //atualização do tabuleiro conforme os jogadores fizerem as jogadas. VAR INICIO ESCREVAL () ESCREVAL (" 1 2 3 ") ESCREVAL ("1 _",tabela[1,1],"_|_",tabela[1,2],"_|_",tabela[1,3],"_") ESCREVAL ("2 _",tabela[2,1],"_|_",tabela[2,2],"_|_",tabela[2,3],"_") ESCREVAL ("3 ",tabela[3,1]," | ",tabela[3,2]," | ",tabela[3,3]," ") FIMPROCEDIMENTO PROCEDIMENTO rodadas() //as rodadas com as jogadas dos dois jogadores. VAR jogadas : INTEIRO INICIO REPITA jogadas := jogadas + 1 PARA contador DE (1) ATE (2) FACA ESCREVAL () ESCREVA ("Jogador ", nomeJogador[contador],", em qual LINHA fará sua jogada? ") LEIA (linha) erroLinha() ESCREVA ("Jogador ", nomeJogador[contador],", em qual COLUNA fará sua jogada? ") LEIA (coluna) erroColuna() erroTabelaPreenchida() tabela[linha,coluna] := simboloJogador[contador] tabuleiroAtualizado() vencedor() SE (jogadas = 5) E (contador = 1) ENTAO ESCREVAL () ESCREVAL ("DEU VELHA! HA HA HA HA!") interrompa FIMSE FIMPARA ATE (jogadas = 5) FIMPROCEDIMENTO PROCEDIMENTO erroLinha() //identifica erro se a linha for diferente de 1, 2 ou 3. VAR INICIO SE ((linha <> 1) E (linha <> 2) E (linha <> 3)) ENTAO ESCREVAL () ESCREVAL ("ERRO: linha inválida.") ESCREVA ("Jogador ", nomeJogador[contador],", em qual LINHA fará sua jogada? ") LEIA (linha) FIMSE FIMPROCEDIMENTO PROCEDIMENTO erroColuna() //identifica erro se a coluna for diferente de 1, 2 ou 3. VAR INICIO SE ((coluna <> 1) E (coluna <> 2) E (coluna <> 3)) ENTAO ESCREVAL () ESCREVAL ("ERRO: coluna inválida.") ESCREVA ("Jogador ", nomeJogador[contador],", em qual COLUNA fará sua jogada? ") LEIA (coluna) FIMSE FIMPROCEDIMENTO PROCEDIMENTO erroTabelaPreenchida() //identifica erro se o campo da tabela já estiver preenchido. VAR INICIO SE ((tabela[linha,coluna] = "X") OU (tabela[linha,coluna] = "O")) ENTAO ESCREVAL () ESCREVAL ("ERRO: essa linha e coluna já estão preenchidas.") ESCREVA ("Jogador ", nomeJogador[contador],", em qual LINHA fará sua jogada? ") LEIA (linha) ESCREVA ("Jogador ", nomeJogador[contador],", em qual COLUNA fará sua jogada? ") LEIA (coluna) FIMSE FIMPROCEDIMENTO PROCEDIMENTO vencedor() //classificando um vencedor VAR msgVencedor : CARACTERE INICIO msgVencedor := ("TEMOS UM(A) VENCEDOR(A): o(a) Jogador(a) " + (nomeJogador[contador]) +"!") //vencedor em linhas SE (tabela[1,1] = simboloJogador[contador]) E (tabela[1,2] = simboloJogador[contador]) E (tabela[1,3] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE SE (tabela[2,1] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[2,3] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE SE (tabela[3,1] = simboloJogador[contador]) E (tabela[3,2] = simboloJogador[contador]) E (tabela[3,3] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE //vencedor em colunas SE (tabela[1,1] = simboloJogador[contador]) E (tabela[2,1] = simboloJogador[contador]) E (tabela[3,1] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE SE (tabela[1,2] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[3,2] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE SE (tabela[1,3] = simboloJogador[contador]) E (tabela[2,3] = simboloJogador[contador]) E (tabela[3,3] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE //vencedor em diagonal SE (tabela[1,1] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[3,3] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE SE (tabela[1,3] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[3,1] = simboloJogador[contador]) ENTAO ESCREVAL () ESCREVAL (msgVencedor) fimalgoritmo FIMSE FIMPROCEDIMENTO Inicio //aqui é o algoritmo principal chamando apenas os procedimentos. ESCREVAL ("JOGO DA VELHA - TOP1000") jogadores() simbolos() ESCREVAL (nomeJogador[1]," x ", nomeJogador[2]," - QUE COMECEM OS JOGOS!") tabuleiroEmBranco() rodadas() Fimalgoritmo //aqui termina o algoritmo Agradeço a todos vocês que puderem me orientar se estou programando corretamente ou se é melhor programar tudo junto dentro do algoritmo principal sem esses procedimentos. Att, Ariel Souto

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!