Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Só complementando... o this traduzindo significa "este", ou seja, nesse contexto ele serve para referenciar ao próprio objeto. Ex.: public Conta (int numero ) { this.numero = numero ; } Veja, o this.numero equivale a "esteObjetivoQueEstáSendoExecutadoAgora.numero". Como o "." serve para "acessar algo do objeto", ao usar "this.numero" eu estou acessando o atributo numero do tal objeto... aquele que está declarado no objeto em si, lá em cima (public int numero;) Já o "numero" que vem depois do igual (=), se refere ao campo que foi passado pelo parâmetro... observe que os atributos/variáveis tem o mesmo nome (para o Java, é apenas uma coincidência. Para o programador, apenas para facilitar a associação de uma coisa com a outra)... o "this" aí está servindo para dizer que o da esquerda é o do objeto e o que não tem o this é o do parâmetro.. Já aqui: public Conta (int numero , double limite ) { this(numero); this.limite = limite; } Basicamente esse "()" serve para chamar um "procedimento", nesse caso, ao se referenciar ao objeto (usando o this), você está se referindo ao um procedimento específico, que é chamado de "construtor" (que ajuda a "construir" um objeto de uma classe). Logo equivale a: esteObjetivoQueEstáSendoExecutadoAgora(), ou seja, um construtor desse objeto... como está passando uma parâmetro (int), o Java vai chamar o construtor que tem esse mesmo tipo no parâmetro, logo o public Conta (int numero). Veja que não existe correlação com o "numero" que você passou, e o "numero" que está no objeto... o que importa é o tipo!!! se é "int", então serve... (ex.: se fosse int e double seria o outro) Ai vem a pergunta: por não faz assim? public Conta (int numero , double limite ) { this.numero = numero this.limite = limite; } Daria para fazer... depende do contexto... nesse caso, tá mais para "demonstração que o recurso existe" ou "se acostumar uma boa prática". (pelo assim que entendo no momento) Veja esse exemplo: public Conta (int numero) { Double limitePadrao = 100.0; this.numero = limitePadrao; this.limite = limite; } Nesse contexto, caso seja informado só o número, eu determinei o limite padrão... Veja que as duas linhas de baixo equivalem (fazem a mesma coisa) ao segundo construtor... poderia ficar assim: public Conta (int numero ) { Double limitePadrao = 100.0; this(numero,limitePadrao); } Entende? RESUMINDO: 1) o this simplesmente serve para referenciar o próprio objeito (ai você pode acessar um atributo ou um procedimento dele); 2) um construtor nada mais é que um procedimento como qualquer outro, o que muda é que ao criar um objeto, o Java chama um deles;
  2. Olá @Vengefull. Poste o que já conseguiu fazer... tente fazer por partes... ex.: 1-Faça o programa ler 5 números armazenando num vetor. Para testar, após, exibir esses 5 números na tela; (não precisa testar com 80!) 2-Implemente um recurso para que controle o valor máximo e mínimo do número, ou seja, que só aceite números entre 1 e 80; 3-Implemente um recurso para "sortear" um número; Por ai vai.. Tente fazer a primeira parte. Testa! se tiver dúvidas posta aqui informando em qual parte não está conseguindo fazer ou está dando erro... depois faz a segunda... etc... No aguardo.
  3. Olá @Abner Matias, Como diria Chaves: «não tem por onde» :). A ideia do Fórum é justamente compartilhar o conhecimento... Também agradeço pelo feedback.
  4. Olá. Esse trecho identado ficaria assim: Veja que a identação basicamente faz "deixar um dente* pra frente em relação ao que ele está dentro"... (* um dente eu deixei com 3 espaços) Por favor, poste o código completo. No aguardo. adicionado 7 minutos depois Por favor, tente identar o seu código seguindo o "padrão" que eu sugeri no código acima... ai dou uma olhada e corrijo se precisar... No aguardo.
  5. Olá @Dani_boy. Dê uma olhada nessa postagem...
  6. Olá. Antes: por favor, ao postar um código, utilize a tag CODE... botão <>. Dê uma olhada nesta postagem: Vamos lá: Creio que o seu código está "meio certo", pois, de certo modo ele (teoricamente) estará exibindo o resultado desejado, mas o processo contém algumas pequenas falhas... cito elas abaixo: (elas são interdependentes, mas vou tratá-las individualmente para explicar cada uma) 1) Está calculando o valor do IPVA mesmo que quando não é necessário. 2) Está verificando o ano duas vezes sem necessidade; 3) Não está tratando o ano de 1989 (experimente informar esse ano). Para "resolver" o 3 (o mais fácil): Bastaria ajustar o se, mudando de ">1989" para ">1988". (ou ">=1889"... vai funcionar, mais tem diferença lógica!!!) se anof>1988 então Para "resolver" o 1: Você poderia colocar o trecho do cálculo dentro da verificação do ano maior que 1988... se anof>1988 então se combus <> "gasolina" então ipva<-(2/100*preco) senao ipva<-(4/100*preco) fimse escreval(">>Valor do IPVA R$: ",ipva:3:2) fimse Para "resolver o 2": Como ">1988" é justamente o que não é "<=1988", basta usar o "senão" daquele "SE"... se anof<=1988 então Escreval("** VEÍCULO ISENTO **") senao se combus <> "gasolina" então ipva<-(2/100*preco) senao ipva<-(4/100*preco) fimse escreval(">>Valor do IPVA R$: ",ipva:3:2) fimse *** Tente dá uma nova olhada no meu primeiro comentário e tente reanalisar os contextos... Qualquer dúvida é só postar... Obs.: outro questão muito importante é sobre a identação, é de fundamental importância!!! Sempre mantenha o seu código identado! Caso deseje, poste o código completo que refazemos uma analise e, caso tenha dúvidas, identamos também... No aguardo.
  7. Olá. Por favor, poste aqui o seu código para podermos analisar e, quem sabe, também poder servir de ajuda para outros membros com dúvidas semelhantes. No aguardo
  8. A proposta do fórum não é "entregar uma resposta pronta", mas sim "tentar auxiliar para que o próprio usuário encontre a sua resposta"... . Talvez eu não tenha sido tão claro, mas sugiro dá uma revisada no que eu disse... Minha sugestão: Revise o conceito de SE (ou if, para outras linguagens). Tente verificar e entender as diferenças em usar somente os "SE" e usar "SE/SENAO" (ou if/else, para outras linguagens). O princípio do "SE" é universal! Entendendo ele, você entenderá o que está errado. No aguardo. adicionado 5 minutos depois Para facilitar o entendimento, tente fazer esse problema verificando o ano, mas apenas exibindo "** VEÍCULO ISENTO **", ou "** NECESSÁRIO PAGAR IPVA **".
  9. Olá @Joao emilioborges, Então, você precisa condicionar as respostas as respectivas categorias... no caso temos 2: ou é <=1988 ou é >1988!, ou seja, ou apresenta "que é isento" ou "apresenta o valor do IPVA"... Veja que esse "ou" está no conceito de "eventos mutuamente exclusivos", pois não pode ser "menor igual a 1988 e ao mesmo tempo ser maior que 1988"... logo, devem-se utilizar o "se/senao". Algo do tipo: se anof<=1988 então //aqui instruções caso seja de 1988 pra trás; senao //aqui instruções caso não seja de 1988 pra trás (é de 1989 pra cima); fimse Pra adiantar, a estrutura da verificação do combustível e o que você chamou de "comando de saída", ficam dentro do "senao"... entende? (vai ter um se/senão dentro do senão do primeiro se... não tem problema!). Perceba também que poderíamos dizer que "** VEÍCULO ISENTO **"" também é um "comando de saída"... ou seja, ou você "informa que é isento", ou "calcula o IPVA e exibe o resultado". No aguardo.
  10. Olá. No mínimo foi uma solução estranha, rs. Pode ser tido conhecidência.... tinha algum ponto de ferrugem ou algo do tipo? no meu, por exemplo, tinha uma sujeirinha verde num pino... o computador só ligava quando queria... :). Chegou a fazer outro procedimento antes dessa limpeza? Outra coisa, qual o seu Sistema Operacional? No aguardo.
  11. Olá @Mahanjane Mutchywane, os exercícios devem ser feitos em qual linguagem de programação? Tente fazer um deles e poste o que já conseguiu fazer e onde está com dúvidas. No aguardo.
  12. Olá @Ariel Santiago Rodrigues, por favor, poste o que já conseguiu fazer e onde está com dúvidas. No aguardo.
  13. ADENDO: para corrigir o "então" no VisuaAlg, pressionem "ctrl+u", e coloque para substituir então por então. Selecionar "substituir todos"..
  14. Olá @respostadealgoritmos, vamos lá: 1) ESTRUTURA SE/SENÃO Você está colocando os fimse fora do lugar. Vide primeira resposta do @devair1010. 2) QUANTIDADE DE NOTAS Para pegar a quantidade, você está utilizando uma divisão, mas na verdade você precisa da parte inteira. Vide segunda resposta @devair1010. 3) CÁLCULO DO RESTO Pelo que eu entendi, você está utilizando "um resto para cada nota", mas o "resto" é uma coisa só... ou seja, você tem um montante só, e vai tirando os valores de dele. *** No aguardo.
  15. Olá @respostadealgoritmos, por favor, poste o seu código atual para analisarmos. No aguardo.
  16. @Cainã Rinaldi Esteche, ai já se trata de outra contexto, no caso, outra linguagem de programação. Por favor, dê uma olhada no Fórum correspondente e caso necessário, crie uma postagem lá... Tópicos sobre C/C#/C++
  17. Olá. Creio é o mesmo princípio usando DIV e MOD... a diferença é que com esses operadores a conta fica mais prática. Você precisa calcular cada cédula deixando o resto para próxima... tira as de 50 que cabe, do resto tira as de 20, do resto tira as de 10.. por ai vai. No aguardo.
  18. Olá... @gokurim02, qual a linguagem de programação que o professor pediu para fazer esse algoritmo? Por favor, poste o que já conseguiu fazer e onde está com dúvidas. No aguardo.
  19. Olá @Jaedson Alves. A divisão de um número inteiro por outro inteiro resulta em um número real, logo, a variável que recebe o resultado tem que ser real (ou classe maior - que abrange o real...). Daí ou você segue como a orientação de @Jaedson Alves, ou declara outra variável para efetuar as contas... (mais prático alterar para real). ADENDO: 1) sim, toda divisão vai resultar em real, vale lembrar que "todo inteiro também é real, mas nem todo real é inteiro"; 2) esse cálculo efetuado no algoritmo é curioso..., acho que seria interessante usar uma outra variável para contar quantos loops foram necessário para chegar ao "1". Dessa forma, além de mostrar os números, mostraria também a quantidade. No aguardo.
  20. Olá @Ariel Santiago Rodrigues. 1) Como postar um código Ao postar um código, favor utilizar a tag CODE, para manter a postagem organizada... Obs.: já editei e ajustei a suas postagem anterior 2) Comparação de array (vetores) Uma forma simples seria você comparar posição por posição do array novo com as respectivas posições dos array já existentes, ou seja, valor em A[1] com o valor em V1[1], valor em A[2] com o valor em V1[2] etc... faz o mesmo com V2 e V3... (algumas linguagens bastaria verificar diretamente, ex.: "if ( A = B ) then" (se um vetor é igual ao outro)... não sei se funciona no Pascal (a depender, pode variar de compilador para compilador também). A maneira mais fácil é utilizar um laço de repetição... mais prático usar o FOR. A comparação seria algo como: if (A[i] = V1[i]) then Um conceito que pode te ajudar é o de "FLAG". Você poderia usar uma variável para servir como "bandeira" para sinalizar se está repetindo ou não. Ex.: var IGUAL :boolean; Daí, antes de começar a verificar o array, inicializa a variável como true ("é igual"). Caso uma das posições seja diferente (usando um if), muda a flag para false. Após a verificação do array, verifica o valor dessa flag. (true = está igual, false = está diferente). Tente primeiro fazer a comparação com apenas dois array (um já existente e o novo). Após "estar ok", implementar a comparação com o restante (2 ou mais) array. 3) ADENDO Só um comentário sobre a sua citação: Veja, o "i" é a variável de controle... servindo para "percorrer o(s) vetor(es)"... ou seja, para cada valor de "i", você estaria usando para acessar uma posição dum array... no "i"=1, você estaria acessando "A[1]", entende? daí, temos 2 pontos: a ) ou você quis dizer "para cada A" ou "para cada array novo"; b ) ou realmente seria "5 números" para cada posição... daí a lógica muda um pouco... (acho que é o primeiro... uma explicação está no item 2) *** No aguardo.
  21. Olá @Genesis Snapware. Como assim? explique melhor o que você precisa...
  22. Olá @carlosmixz, conseguiu resolver?
  23. Olá @Brian Dias. 1) POSTAGEM DE CÓDIGOS Ao postar um código, utilize a tag CODE, botão <> na barra de ferramentas. Veja mais aqui: Obs.: A postagem anterior já foi corrigida. 2) CÁLCULOS Trate o problema como conta matemática (disciplina). Como faria essa conta no papel??? Para para o VisuAlg será apenas uma automação! Entende? ou seja, teoricamente, no momento, a sua dúvida está na interpretação do texto e como efetuar o cálculo. Tente fazer essa conta, só após, tente "traduzir" para VisuAlg. *** No aguardo.
  24. Olá. Vide comentário anterior: Então, ao compilar, cai na linha: SE ((((rrep>=12) e (crep="físico")) ou ((rrep>=24) e (crep="telefone"))) e (rqtr>=9) e (rporcentagem>=0.65) e (rban>=2) e (rporcentagem2>=0.65) e (rroupas=>1) e (rroupas2>=0) e (lcafe="sim") e (lres="não") e (lbar="não") e (ldiet="não") e (lserv="não") e (ltv="não") e (lrefr="não") e (lnet="não") e (lhidro="não") e (lar="não") e (lest="não") e (lmano="não") e (lcol="não") e (lban2="não") e (lserv2="não")) então Provavelmente o erro está ai... Como citado, você tem que verificar os "operadores racionais" e se os parênteses estão certos! O VisuAlg tem duas limitações péssimas: 1) Não aponta o erro na compilação, mas apenas quando vai executar; 2) Não aponta a coluna, no máximo aponta a linha (e nem sempre acerta). Mas olhando a linha temos um: (rroupas=>1) Não existe esse operador lógico "=>", como sabido, é ">=". *** Obs.: para testar a execução (já que o VisuAlg não verifica na compilação) a sintaxe, retire as perguntas. Deixe só os SE. Faça isso... ache a linha do erro, e vá olhando primeiro operador por operador relacional. Vai (deveria) achar esse "=>"). Verifica se tem mais algum. Corrige e compila. Vê se tem outro erro. (não vai ter). Se tivesse, provavelmente seria dos parênteses (não é o caso). Para testar, pode usar de testes de mesas... cria algumas respostas e anota os resultados esperados, daí vai executando mentalmente os se, e vê se bate com o esperado. Após testa na prática e vê se realmente confere. PS: Em divisões, é necessário inserir uma proteção contra divisão por 0, pois matematicamente é um erro ("dá pau"). No caso, em: rporcentagem<-(rquant/rporc) e rporcentagem2<-(rquant2/rporc2) Teriam que ter um "se rporc" e "se rporc2" "diferentes de 0" respectivamente antes deles. No aguardo.
  25. Olá @Augusto Ruviaro. Tranquilo. A proposta é justamente "forçar" o auto-amadurecimento! e reforçar alguns conceitos básicos... (tb estimular a pesquisa)... espero que esteja ajudando, mais que atrapalhando, rs Que erro está dando? não compila ou não está correspondendo ao que você precisa? As minhas sugestões anteriores são relativas à sintaxe, ou seja, "fazer estar de acordo com as regras do VisuAlg e fazer o programa rodar". Se o programa vai fazer o que você quer ou não é outra parte! São duas coisas diferentes. Creio que a primeira parte já está OK... Para a segunda parte, como o VisuAlg é sequencial, pode ter certeza que o erro está na condição que está dando erro pra cima! Certo? a primeira parte que você deve olhar logo é na condição em si... veja se todas as "regras para ser 3 estrelas" estão certas... ldiet="sim" Isso não seria "cardápio com dietas especiais ?"? tem isso no 3 estrelas? Vá olhando um por um... Após retificar o que for necessário, dá uma olhada para ver se as variáveis estão sendo coletadas corretamente... (acho que tão, deve ser no se mesmo)... Estão com os tipos corretos etc. *** No aguardo.

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!