Ir ao conteúdo
  • Cadastre-se

Diferença entre número par e inteiro


Posts recomendados

Boa noite galera!

 

Tenho uma dúvida que está me incomodando bastante, que é em resolver um simples algoritmo, mas não quero apenas faze-ló, mas sim entende-ló, é apenas questão de conceito.

qual a diferença entre números inteiro e um par?? 

sabendo que:  3 é um número inteiro, mas não é par.

                    e 1,2 é impar e é um numero real (no caso do visualG)

 

Desde já agradeço!

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@phellyp.santtos Não há diferença nisso.

2 é um número par e inteiro, 3 é um número ímpar e inteiro

4,90 não é par  e nem  nem inteiro.

 

O conceito é que todo algarismo numérico natural é um número inteiro, incluindo o zero(há quem não considera o zero como natural.).

Logo,  {0,1,2,3,4,5,...1000} são números inteiros. 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa noite!

 

Sendo um pouco direto, sua definição de números ímpares está um pouco distorcida.

 

Números inteiros são os que podem ser escritos sem parte fracionária (incluindo o zero e os inteiros negativos). Números pares são números inteiros que são divisíveis por 2, sem deixar resto. Assim, 1 é ímpar, 4 é par. Como 1,2 não é inteiro, não se encaixa na definição de par ou ímpar, não sendo nenhum dos dois.

 

Em pseudocódigo, talvez você queira fazer o teste da seguinte forma (se o programa não sabe se x é inteiro mesmo ou não):

if IsInteger(x) & mod(x,2) == 0
	do_something
else
	do_another_thing
end

Ou então, declarando x como inteiro no início do programa (assim já se certificando desde o começo que é inteiro):

declare x as Integer

if mod(x,2) == 0
	do_something
else
	do_another_thing
end

 

Claro que o código final depende da linguagem, mas só para você entender como deveria fazer.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@Guilherme K. Nakassima MInha resposta foi proporcional a quantidade de informações na sua pergunta.

Como você não especificou se era na programação, respondi matematicamente e sem detalhes.

Você perguntou se tinha diferença entre número par e inteiro.

E eu respondi que não.   Obviamente, se estamos falando em inteiros, não preciso mencionar na parte frácionária. 

Na programação, o conceito é irrelevante.

 

No seu algoritmo, só demonstra o teste se ele é par ou ímpar.

Na verdade, seu post é meio estranho por assim dizer. Você pergunta e você mesmo se responde.

 

não entendi.

 

O teste de par ou impar é sempre igual em tudo que é linguagem. só muda a forma como é escrita.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Hum......é um seguinte.

 

Tenho um programa, o usuário vai digitar uma valor, só que esse valor só pode ser se, e somente se o valor digitado for inteiro (sem que eu declare no começo do código a variável inteiro), caso o valor digitado não for inteiro o programa vai ler e vai fazer um loop, e vai pedir novamente que o usuário digite um novo número até que esse numero seja inteiro.

 

é isso que eu tenho na minha cabeça e não quero apenas fazer, mas como disse anteriormente entender. e peço desculpas se estou me expressando errado.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@phellyp.santtos Bom.. nesse caso. depende muito da linguagem que estás trabalhando.

Por exemplo se for visualG, java, C.. dentre outras, elas são tipadas. ou seja é necessário declarar o tipo de variável que ela espera receber.

O que não acontece por exemplo em php, que uma variável pode ser qualquer coisa, seja número, string, booleano etc.

 

Como estas linguagens são tipadas, tudo que precisa fazer é um teste em um laço de enquanto (while) ou faça enquanto( do while)

 

Mas o maior problema disso tudo é que o visualG por exemplo, acusa erro SE entrar com um valor que ele não espera. 

 

Então quando se quer trabalhar com valores inteiros, mas que dê possibilidade de entrar com o dados de valores fracionados.. deve usar a variável do tipo real.

Pois ele aceita tanto inteiro quanto fracionado.

 

veja o exemplo:

var
a : inteiro

inicio
// Seção de Comandos 
escreva("digite o valor")
leia(a)

Executando isso, ele irá pedir um número inteiro. Logo se entrar com 2.5  terá erro e ele será encerrado.

 

var
a : real

inicio
// Seção de Comandos 
escreva("digite o valor")
leia(a)

Mudando para real,  você permite valores tantos inteiros quanto fracionados..pois não vai acusar erro.

Não sei se existe algum teste de IF para isso no visualG.

 

Espero ter sido mais claro agora em afirmar que no visualG, deve sempre declarar o tipo de variável.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

E aí, galera?! 

Já vi que deram bastantes respostas, mas eu gostaria de deixar minha explicação e ajudar com o exercício.

Amigo, no nosso planeta utilizamos números para realizar inúmeros cálculos e estes números são subdividido em classes:

  • Reais: engloba todo tipo de número, ou seja, todo número é real;
  • Irracionais: são os números que possuem decimais infinitos, como PI, que nunca acaba;
  • Racionais: possuem números decimais, mas são finitos, ou seja, acabam em algum momento;
  • Inteiros: número negativos ou positivos, sem posse de decimais;
  • Naturais: todos os números positivos e inteiros, desde o zero ao infinto.

Tendo essas definições, podemos entender a diferença entre números pares e inteiro. Na verdade, não há diferenças, porque todo par pode ser inteiro. Como já vimos, o conjunto de números inteiros é qualquer um sem decimais!

 

Pares são:

  • Inteiros, por não possuírem decimais;
  • Naturais, pela possibilidade de serem positivos, existir.

Ímpares são:

  • Inteiros, por não possuírem decimais;
  • Naturais, pela possibilidade de serem positivos, existir.


Segue abaixo, um diagrama, onde você identifica os conjuntos, visualmente:

Sem título.png

 

Vamos ao exercício!

Se bem entendi, você precisa checar se o usuário digitou um número inteiro, sem precisar declarar uma variável do tipo inteiro. Certo?
Eu já estava respondendo como deverias raciocinar, para resolver, mas lembrei que você não mencionou qual linguagem está à trabalhar. Se, por acaso, for Portugol utilizando o VisuAlg, nos avise. Não esqueça de falar se já aprendeu sobre funções pré-definidas.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

Só para reforçar tudo que já foi dito. No visualG é bem possível que não dê para fazer este tipo de comparação e teste uma vez que a linguagem é limitada e tipada.

Pelo menos nele não dá para fazer um "if not" pois se usar a negação ele esperará um valor booleano(verdadeiro ou falso)

Link para o comentário
Compartilhar em outros sites

7 horas atrás, phellyp.santtos disse:

Bom Dia, 

 

Desde já agradeço a todos que estão ajudando! é tomara que chegue o dia que eu possa resolver as dúvidas dos demais, mas vamos lá!

 

Cara é no visualg, que estou querendo fazer essa proeza.


O VisuAlg possui oquê chamamos de funções pré-definidas. Um dessas funções, identifica a posição de um caractere dentro de uma variável. 
Poderias usar esta função para identificar a posição de um ponto ou vírgula, assim, se for retornado o valor de posição 0, não existe esse caractere na variável, logo, é um número inteiro.

A sintaxe da função: Pos("caractere_desejado", variável_a_ser_analisada)

 

Exemplo:

VarTeste <- "12,2"
VarPos <- Pos(",", VarTeste)

A VarPos receberia o valor 3, correspondente à posição da vírgula, na VarTeste.


Uma desvantagem deste função pré-definida é que ela só aceita variáveis do tipo caractere.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @phellyp.santtos


Sugiro que pesquise individualmente o que é cada um. O que é um número PAR (e ímpar)? O que é um número INTEIRO (e os outros tipos números)? Assista alguns vídeos-aulas... se aprofunde no assunto.

****

Aproveitando os comentários, vou tentar fazer uns adendos...: (não sou matemático, apenas vou complementar alguns conceitos com o que entendi até o momento)

 

7 horas atrás, Joao_Lucaas disse:

Reais: engloba todo tipo de número, ou seja, todo número é real;

Só para complementar: na verdade ainda temos os Números Complexos, este sim engloba "todos os números", ou seja, da mesma forma que os Reais engloba os Irracionais e Racionais (e seus sub-conjuntos), os Complexos engloba os Reais. Enfim, na prática, "só utilizamos até os reais" na programação, mas o "complexos" existem.

Obs.: Claro que por uma questão didática eles poderiam até ser "ignorados", apenas citei para conhecimento (já que nesse caso o real deixaria de ser "todo número" de fato).

 

conjunto.jpg

 

 

7 horas atrás, Joao_Lucaas disse:
  • Irracionais: são os números que possuem decimais infinitos, como PI, que nunca acaba;
  • Racionais: possuem números decimais, mas são finitos, ou seja, acabam em algum momento;

Mais uma vez complementando... essa definição acima seria didática, mas como, parafraseando

@Guilherme K. Nakassima, está "distorcida", pois não necessariamente todo número com casas decimais infinitas é irracional. E isso confunde o conceito... por exemplo, quanto é 11/3? Dá um tal de 3,666666666... onde esses "6" são infinitos, é a famosa "dízima periódica"! No entanto, esse número 6,6666666666666666666666666... é RACIONAL, ou seja, "quebrando esse conceito".

 

Uma definição mais precisa para Irracional seria algo como: "Número irracional é um número real que não pode ser obtido pela divisão de dois números inteiros, ou seja, são números reais, mas não racionais." [Wikipedia], logo, resumidamente, um número real é racional quando você pode representar este número como uma fração, e por consequência, quando não pode, é irracional (que por sua vez é dividido entre irracionais algébricos e irracionais transcendentes, o primeiro são as raízes inexatas, como "raiz quadrada de 10", o segundo temos como exemplo o famoso Pi..).

 

 

 

7 horas atrás, Joao_Lucaas disse:

Naturais: todos os números positivos e inteiros, desde o zero ao infinito.

Como citado por @dif, ainda não existe um consenso sobre a questão se zero é ou não natural. A quem defina que usar ou não o zero pode ser uma questão de "escolha"!!! ou seja, tanto faz considerar ou não, ambos são válidos. No caso tem que verificar o que o "professor" ou "contexto" diz. (acho que geralmente é considerado o 0 como incluso)

 

 

 

7 horas atrás, Joao_Lucaas disse:

Pares são:

  • Inteiros, por não possuírem decimais;
  • Naturais, pela possibilidade de serem positivos, existir.

Ímpares são:

  • Inteiros, por não possuírem decimais;
  • Naturais, pela possibilidade de serem positivos, existir.


Aqui outro pitaco: nesse contexto, a "possibilidade" não pode ser usada como referência para definição de "ser" natural, ou seja, o fato de "pode ser algo", não necessariamente o define como ser algo. Vejam que os números (inteiros) negativos e o zero também podem ser classificados como "par" ou "ímpar", logo, por exemplo, se "cair no Enem" algo como: "Os números ímpares são números naturais?", marque como NÃO! (eles são inteiros, são racionais, são reais e são complexos, como demonstra o diagrama. Eles ficariam dentro de qualquer parte amarela, o que inclui a verde, é claro)

 

Fazendo uma analogia: Dizer que um número par ou ímpar é natural, é análogo a dizer que os carros são movidos a gasolina, ou seja, conceitualmente haveria um equívoco, pois temos carros movidos a álcool, carros elétricos, a pedaladas (Flintstones) etc.

 

 

Então, pegando esses raciocínios e alguns pesquisas, resumiria:

 

1)
Números pares:
Todo número que pode ser escrito desta forma:
n = 2*k, onde k e Z  (k "pertence" aos números "Inteiros"), ou seja, um número é par se ele pode ser decomposto em dois outros números, sendo um deles o 2. Ex.: 36 = 2*18.

 

Números ímpares:
Todo número que pode ser escrito desta forma:
n = 2*k+1 ou n = 2*k-1, onde k e Z  (k "pertence" aos números "Inteiros"). É semelhante ao par, só que acrescido ou diminuído de 1. Ex.: 37, pois pode ser escrito em 2*18*+1 ou 2*19*-1.

 

Perceba que por essa definição, necessariamente "n" tem que ser Inteiro, pois ao multiplicar um inteiro por outro, sempre teremos outro inteiro. Logo, como já citado por @dif e @Guilherme K. Nakassima números fracionados NÃO podem ser classificados como par ou ímpar (pois não é inteiro).
 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Moderador

@Joao_Lucaas Este é o problema. Não se pode usar caractere quando queremos usar valores numericos. Além disso, o valor numérico decimal é representado por ponto e não por virgula. 

Pelo menos que eu saiba, podemos formatar " numéricamente" no visualg é a quantidade de casas depois do ponto por exemplo:

 

var x: real

x <- 3.56757
     
escreva(x:2:2)     

isso formata o valor para que mostre somente duas casas depois do ponto :P 

Link para o comentário
Compartilhar em outros sites

@dif Realmente, não daria. Se ele precisasse fazer um cálculo, depois não iria ser possível.

Em relação à vírgula, tens razão, também. O padrão é usar pontos, uma vez que as linguagens utilizam a sintaxe literária de países como o EUA. 

Citei a vírgula, por ser obrigado à utilizar uma variável do tipo caractere, logo, o VisuAlg não converteria vírgulas em pontos, como acontece quando utilizasse variáveis reais ou inteiras. O dev teria que procurar a posição de vírgulas, além dos pontos, porque brasileiros escrevem número decimais com vírgulas. Entendes?

Essa foi única gambiarra que consegui pensar, até agora. Vamos esperar mais soluções.
 

Até mais!
 

@Simon Viegas Obrigado pela atenção. Crítica construtiva é sempre bem-vinda!

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Moderador

@Joao_Lucaas Sim compreendo o que tu diz!  Mas na programação, seja em qualquer linguagem, a notação brasileira é irrelevante! pois todo e qualquer valor flutuante é com ponto! seja em C/C++, php,  java, ruby, cobol, javascript, pascal, object-pascal.. enfim praticamente todas! 

O que acontece aqui no brasil, é mais a questão de conversão mesmo.  entrar com virgula, substitui a vírgula por ponto.

Acontece que especificamente no visualg não possui um replace()  ou pelo menos não me lembro  rsrsrs

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá a todos.

 

Fiz alguns testes aqui e vou comentar de um modo geral... no caso me baseando na versão 3.0.6.3 do VisuAlg (creio que mais atual), vamos lá:

 

1) VisuAlg utiliza "." ou "," para separa as casas decimais?

Resp.: De fato é o ".", mas ele aceita "," também lá no prompt quando usar o leia().

 

2) Dá para verificar se um número é par ou ímpar no VisuAlg?

Resp.: Sim!

 

3) Dá para verificar se um número é inteiro (ou não) no VisuAlg?

Resp.: Sim!

 

4) Como verificar?

Resp.: São duas coisas diferentes, e podem (devem) ser pensadas separadamente. A primeira coisa a fazer é entender o que cada coisa é... saber o que é um par e um ímpar (e o que não é uma coisa nem outra). Saber o que é um número inteiro e o que não é.

 

Daí, tentar criar um algoritmo mental para tentar verificar. Que passado são necessários para verificar se um número é par ou ímpar ou nenhum dos 2? Passa esses passos para o papel (ou bloco de notas) e tenta executar esses passos e vê se chega ao resultado esperado... o segredo é executar os passos sem saber do que se trata.. ver se com a entrada (valor) dada, após seguir os passos, encontra o valor esperado.

 

O mesmo vale para verificar se é inteiro..

 

 

Tente fazer apenas uma coisa. Após tenta a outra.

 

***

 

Para facilitar, tem dois comandos que podem ser muito úteis:

 

MOD ou % //Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 = 2. Tem a mesma precedência do operador de divisão tradicional.

 

Int(real) - Retorna a parte inteira do valor representado

 

No aguardo.

 

 

 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas Acho que o Int() não poderia ajudar, na questão de inteiros, porque ele quer identificar se o número é decimal, para invalidar a continuidade do programa. Isso retornaria só a parte inteira e, isto de nada serve, na situação dele.

Mais alguma ideia?

@dif Eu já havia mencionado que o VisuAlg dava um "replace", mas ficou confuso e o Simon complementou. A conversão só acontece com variáveis do tipo real ou inteiras. A minha gambiarra só é possível com variáveis caracteres, logo, não haverá conversão e o usuário digitará vírgulas.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá,

 

53 minutos atrás, Joao_Lucaas disse:

@Simon Viegas Acho que o Int() não poderia ajudar, na questão de inteiros, porque ele quer identificar se o número é decimal, para invalidar a continuidade do programa. Isso retornaria só a parte inteira e, isto de nada serve, na situação dele.

 

Depende raciocínio envolvido... veja, no mínimo já temos duas informações: "valor original" e "parte inteira deste mesmo valor". Aí é só trabalhar com elas.

 

Obs. 1: Esses comandos "podem ser" úteis para "UMA" solução, e não "A" solução. Um mesmo problema pode ser resolvido de diversas formas (vai de 0 a infinitas possibilidades). Por exemplo, popularmente os algoritmos envolvidos para verificar paridade (par ou ímpar), utilizam o MOD (ou %), mas dá para resolver de outras formas, inclusive com o Int() ou mesmo sem "funções prontas".

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Por sinal, o mesmo raciocínio serve para ambos os caso (paridade e verificação se é inteiro), só acontece que o MOD e % "não aceita"* números Reais, daí tem que parti para outro raciocínio, que no caso um deles seria usar Int(). Entretanto, com dito, o raciocínio do Int() serve para os 2.

 

* = ele aceita Reais, mas trata o número como se fosse inteiro, daí não servindo para o caso.

Resumindo
Pode usar Int() para usar uma técnica para verificar se é inteiro

Pode usar o Mod (ou %) ou Int() para paridade.

ou ainda, pode usar "caracteres" para verificar se é inteiro. (não parei para analisar, mas acho que dá sim para fazer. Só é menos trivial,  pois pode precisar converter de caractere para inteiro).

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...