-
Posts
3.940 -
Cadastrado em
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Simon Viegas postou
-
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;
-
logica VisualG Sistema gerador
Simon Viegas respondeu ao tópico de Vengefull em Programação - iniciantes
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. -
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.
-
gostaria de saber o erro aqui??visualg
Simon Viegas respondeu ao tópico de Joao emilioborges em Programação - iniciantes
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. -
Olá @Dani_boy. Dê uma olhada nessa postagem...
-
gostaria de saber o erro aqui??visualg
Simon Viegas respondeu ao tópico de Joao emilioborges em Programação - iniciantes
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. -
gostaria de saber o erro aqui??visualg
Simon Viegas respondeu ao tópico de Joao emilioborges em Programação - iniciantes
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 -
gostaria de saber o erro aqui??visualg
Simon Viegas respondeu ao tópico de Joao emilioborges em Programação - iniciantes
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 **". -
gostaria de saber o erro aqui??visualg
Simon Viegas respondeu ao tópico de Joao emilioborges em Programação - iniciantes
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. -
Videos do Youtube travando
Simon Viegas respondeu ao tópico de Lucas Coelho em Problemas de desempenho
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. -
Operacoes artimetricas simples
Simon Viegas respondeu ao tópico de Mahanjane Mutchywane em Programação - iniciantes
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. -
Como saber se o vetor se repete?
Simon Viegas respondeu ao tópico de Ariel Santiago Rodrigues em Programação - outros
Olá @Ariel Santiago Rodrigues, por favor, poste o que já conseguiu fazer e onde está com dúvidas. No aguardo. -
como funciona esse algoritmo usando SE
Simon Viegas respondeu ao tópico de respostadealgoritmos em Programação - iniciantes
ADENDO: para corrigir o "então" no VisuaAlg, pressionem "ctrl+u", e coloque para substituir então por então. Selecionar "substituir todos".. -
como funciona esse algoritmo usando SE
Simon Viegas respondeu ao tópico de respostadealgoritmos em Programação - iniciantes
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. -
como funciona esse algoritmo usando SE
Simon Viegas respondeu ao tópico de respostadealgoritmos em Programação - iniciantes
Olá @respostadealgoritmos, por favor, poste o seu código atual para analisarmos. No aguardo. -
Erro sobre declarar variáveis no VisualG
Simon Viegas respondeu ao tópico de Cainã Rinaldi Esteche em Programação - iniciantes
@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++ -
como funciona esse algoritmo usando SE
Simon Viegas respondeu ao tópico de respostadealgoritmos em Programação - iniciantes
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. -
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.
-
Erro sobre declarar variáveis no VisualG
Simon Viegas respondeu ao tópico de Cainã Rinaldi Esteche em Programação - iniciantes
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. -
Como saber se o vetor se repete?
Simon Viegas respondeu ao tópico de Ariel Santiago Rodrigues em Programação - outros
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. -
Olá @Genesis Snapware. Como assim? explique melhor o que você precisa...
-
leitura de arquivos txt em pascal
Simon Viegas respondeu ao tópico de carlosmixz em Programação - outros
Olá @carlosmixz, conseguiu resolver? -
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.
-
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.
-
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