Ir ao conteúdo

Posts recomendados

Postado

Eu estou fazendo um curso gratis na internet e nao tenho ninguem para tirar minhas duvidas, por isso estou contando com você leitor para me ajudar a corrigir e chegar na resposta certa das questões que estou fazendo

 

Questão: Elabore um programa que receba 5 números e imprima somente os positivos.

 

Eu consegui fazer isso abaixo e pelo que parece, depois de eu apertar f9, surgiu algum resultado, mas nao sei se esta correto a forma que eu fiz. Por isso me diga se eu fiz certo ou nao

var
  valor, x :inteiro



inicio
  escreval ("digite um valor positivo")
  leia(valor)



  para x de 0 ate 5 faca
  escreva (valor + x)
  fimpara

 

Eu gostaria de saber tambem como seria caso ao invés de ele falar, ''imprima somente os positivos'' ele falasse ''imprima os negativos". Eu teria que mudar somente o sinal (+) para (-)?

 

Enfim, obrigado pela atenção e paciencia

  • Membro VIP
Postado

Boa tarde.

Você precisa de um condicional (SE) pra testar se o número digitado é maior do que 0. E somente imprimir se a condição for válida.

adicionado 0 minutos depois

Da forma que você fez ele vai pegar o número digitado e somar com o contador, o que não faz sentido.

  • Curtir 2
Postado
4 minutos atrás, aerolipe disse:

você já aprendeu listas?

Ainda nao. O curso que estou fazendo é bem basico mesmo

adicionado 14 minutos depois
36 minutos atrás, Math.Pi disse:

Boa tarde.

Você precisa de um condicional (SE) pra testar se o número digitado é maior do que 0. E somente imprimir se a condição for válida.

adicionado 0 minutos depois

Da forma que você fez ele vai pegar o número digitado e somar com o contador, o que não faz sentido.

Eu fiz aqui só nao estou conseguindo fazer o que você disse ''E somente imprimir se a condição for válida''.

 

Qual é o comando que faz isso que você disse para eu tentar aqui?

Postado

Entao, eu fiz assim:

 

var

 valor, x :inteiro



inicio
  escreval ("digite um valor positivo")
  leia(valor)

  se (valor > 0) entao
  escreval ("valor positivo")
  senao
  escreval ("valor negativo")
  fimse


  

Mas eu percebi que não é assim que a questão quer que você faça. Ele esta pedindo para que o programa receba 5 numeros, ou seja, quando eu apertar f9 eu tenho que informar cinco numeros e nao só um que nem ficou esse algoritmo acima. Por isso eu tentei desse jeito aqui 

var
  valor1: inteiro
  valor2: inteiro
  valor3: inteiro
  valor4: inteiro
  valor5: inteiro
  
inicio
  escreval ("digite primeiro valor")
  leia(valor1)
  
  escreval ("digite segundo valor")
  leia(valor2)
  
  escreval ("digite terceiro valor")
  leia(valor3)
  
  escreval ("digite quarto valor")
  leia(valor4)
  
  escreval ("digite quinto valor")
  leia(valor5)
  
  
  se (valor 1 ate 5 > 0) entao
  escreval ("valor positivo")
  senao

  escreval ("valor negativo")
  fimse

 

Mas alguma coisa nao esta dando certo

 

 

 

  • Membro VIP
Postado

Se o enunciado pede primeiro para digitar os 5 números, você precisará usar um vetor para armazenar os dados. E depois percorrer esse vetor procurando os números positivos.

adicionado 1 minuto depois
Em 14/09/2018 às 16:45, Otonashi Oliveira disse:

 


var
  valor1: inteiro
  valor2: inteiro
  valor3: inteiro
  valor4: inteiro
  valor5: inteiro
  
inicio
  escreval ("digite primeiro valor")
  leia(valor1)
  
  escreval ("digite segundo valor")
  leia(valor2)
  
  escreval ("digite terceiro valor")
  leia(valor3)
  
  escreval ("digite quarto valor")
  leia(valor4)
  
  escreval ("digite quinto valor")
  leia(valor5)
  
  
  se (valor 1 ate 5 > 0) entao
  escreval ("valor positivo")
  senao
  fimse

 

Mas alguma coisa nao esta dando certo

 

 

 

Desse jeito aqui, você terá um trabalho multiplicado de ter que ler um por um e depois comparar um por um.

  • Curtir 1
Postado

Entao, o enunciado diz somente aquilo que pede na questão, eu nao sei exatamente se o que eu disse acima esta certo ou nao, principalmente por se tratar de um curso basico onde estou estudando o comando ''Para''. Eu vou estudar esses vetores que você disse, mas levando em questão que eu estou estudando o comando ''Para'', alem de ser somente um curso basico, você diria que essa resolução abaixo esta correta, baseando-se somente na questão? Pois acredito que essa questão seja bem simples, sem fugir muito do comando Para, pois se trata disso que eu estou estudando. Caso a resolução abaixo esteja no caminho certo, eu preciso entender como eu chego na resposta certa

var

 valor, x :inteiro



inicio
  escreval ("digite um valor positivo")
  leia(valor)

  se (valor > 0) entao
  escreval ("valor positivo")
  senao
  escreval ("valor negativo")
  fimse

 

Postado
Em 14/09/2018 às 16:47, Math.Pi disse:

Se o enunciado pede primeiro para digitar os 5 números, você precisará usar um vetor para armazenar os dados. E depois percorrer esse vetor procurando os números positivos.

adicionado 1 minuto depois

Desse jeito aqui, você terá um trabalho multiplicado de ter que ler um por um e depois comparar um por um.

Eu pesquisei o que era vetores e tentei corrigir do meu jeito. Eu acredito que a parte do comando Para até Fimpara esteja correto, só nao estou conseguindo corrigir a partir do comando Se até Fimse


 

var
  v: vetor [1..5] de inteiro
  indice:inteiro
inicio

  para indice de 1 ate 5 faca
  escreva ("digite um valor ", indice, " :")
  leia(v[indice])
  fimpara
  
  se indice > 0 entao
  escreva ("valor positivo ")
  senao
  escreva ("valor negativo ")
  fimse

 

  • Membro VIP
Postado

Olá.

 

Vou tentar explicar um possível desenvolvimento..

 

 

Tomemos como base o problema proposto:

Em 14/09/2018 às 15:14, Otonashi Oliveira disse:

Questão: Elabore um programa que receba 5 números e imprima somente os positivos.

 

 

1#

De um modo geral, a primeira coisa se fazer é ENTENDER O PROGRAMA. Então, o que é um número positivo? como vamos resolver um problema que não sabemos do que se trata???

 

Segundo o Wikipedia:

Citação

Intuitivamente, um número real n é positivo se é maior que 0.

Às vezes diz-se que n é positivo quando é maior ou igual que 0, para introduzir o termo de "estritamente positivo", que excluiria o caso "n igual a 0".

Se considerar-se que n é positivo se é maior que 0, então inclui-se o caso "n igual a 0" dizendo que não é negativo. Ou seja, -5 < 0

 

Veja, ainda estamos numa etapa de entender o problema, correto? segundo essa definição, os positivos pode ser entendidos como começando do 0 em diante. Entende? se 0 for positivo, como sugerido pelo artigo, o algoritmo já começaria sendo implementado de modo errado, pois foi usado ">0", em vez de ">=0".

 

Para efeitos práticos, tomemos que de fato é apenas para o MAIORES QUE 0, ou seja, considerando que 0 não é positivo. Mas temos que ter em mente que existe outra possibilidade. Beleza? Apenas vamos usar o que achamos mais provável, ou seja, supostamente o que se deseja (como existe uma suposta dúvida, seria interessante consultar quem sugeriu esse problema... se for um livro, talvez apenas achar a forma mais provável.)

 

 

RESUMINDO:

No nosso contexto, números positivos são números reais que são maiores que 0. Creio que segue o senso comum.

 

 

 

2#

Sobre:

Em 14/09/2018 às 16:45, Otonashi Oliveira disse:

[...]

Mas eu percebi que não é assim que a questão quer que você faça. Ele esta pedindo para que o programa receba 5 numeros, ou seja, quando eu apertar f9 eu tenho que informar cinco numeros e nao só um que nem ficou esse algoritmo acima. Por isso eu tentei desse jeito aqui 


var
  valor1: inteiro
  valor2: inteiro
  valor3: inteiro
  valor4: inteiro
  valor5: inteiro
  
inicio
  escreval ("digite primeiro valor")
  leia(valor1)
  
  escreval ("digite segundo valor")
  leia(valor2)
  
  escreval ("digite terceiro valor")
  leia(valor3)
  
  escreval ("digite quarto valor")
  leia(valor4)
  
  escreval ("digite quinto valor")
  leia(valor5)
  
  
  se (valor 1 ate 5 > 0) entao
  escreval ("valor positivo")
  senao

  escreval ("valor negativo")
  fimse

 

Mas alguma coisa nao esta dando certo

 

O quê ou onde está dando errado? Enfim. Seria necessário tentar entender o que ocorre. Quando um código é implementando, ao executar é esperando um resultado... se não ocorre, tem que tentar identificar o que está divergente... tá dando erro (tranvando) ou está dando uma resposta incorreta?

 

Executando esse código, poderia dizer algo como: "Ao executar e inserir os números, está dando erro no se", ou seja, o erro está provavelmente na expressão lógica do se.

 

 

 

3#

Vamos lá:
Uma sugestão inicial é que sempre tentar deixar o código compilável. Ex.: supondo que estou começando a implementar esse código. Inicialmente poderia ficar com algo assim:

algoritmo "FCdH"
var
   numero :real

inicio


fimAlgoritmo //<-- se coloquei o "inicio" já coloco o seu respectivo "fim".

 

Outro ponto seria tentar dividir o programa em partes mais simples. Como assim? veja, como vou verificar algo em 5 números se nem sei como verificar com apenas 1? ou seja, é mais simples verificar apenas um número... entender a estrutura e só posteriormente tentar implementar para mais (números)...

 

Seria como tentar fazer:
Questão: Elabore um programa que receba 1 (UM) número e imprima se é positivo.

 

ex. hipotético:

algoritmo "FCdH"
var
   numero :real

inicio
escreval("Digite um número real")
leia(numero)
se (numero > 0) entao
   escreval(numero," é positivo")
senao
   escreval(numero," é negatio")
fimSe //<--aqui mesma coisa. A estrutura que estou construindo sempre deve ficar
      //completa, ou seja, se fiz um se, tenho que colocar o seu respectivo fimse
fimAlgoritmo

Aí fazemos alguns testes. É relativamente simples, pois só existem 3 possibilidades: maiores que zero, o zero em si e os menos que 0.

 

Vemos que já temos 2 problemas:
- Zero está dando como negativo. O 0 é negativo mesmo? (não mesmo. Por sinal, como citado, poderia ser considerado positivo...);

- Em que momento problema está solicitando para verificar se um número é negativo ou positivo? o programa apenas diz: «imprima somente os positivos.», ou seja, a implementação inicial do código não está seguindo o que foi pedido.  Ele pede para "ler número e imprimir aqueles que são positivos"...

 

Poderia ser algo como:

algoritmo "FCdH"
var
   numero :real

inicio
escreval("Digite um número real")
leia(numero)
se (numero > 0) entao
   escreval(numero)
fimSe
fimAlgoritmo

 

Agora sim. Se o número é positivo, eu imprimo. Se não for... não faço nada!!!

 

 

Já responde a sua dúvida:

Em 14/09/2018 às 16:58, Otonashi Oliveira disse:

você diria que essa resolução abaixo esta correta, baseando-se somente na questão?

 

Nessa caso: não está correta. Pois ele não pede para dizer se é positivo ou negativo, mas apenas imprimir os positivos. Além da questão que está considerando erroneamente o 0 como negativo, ou seja, está "respondendo uma pergunta que não foi feita" e ao mesmo "errando a resposta para essa pergunta".

 

 

 

3#

Supostamente já conseguimos responder para um número. Como fazer para N números? só replicar: ex.:

algoritmo "FCdH"
var
   numero1 :real
   numero2 :real

inicio
escreval("Digite o primeiro número real  ")
leia(numero1)
escreval("Digite o segundo número real ")
leia(numero2)

se (numero1 > 0) entao
   escreval(numero1)
fimSe
se (numero2 > 0) entao
   escreval(numero2)
fimSe
fimAlgoritmo

 

Ou seja, leio 2 números e verifico cada um depois.

E com 5?

algoritmo "FCdH"
var
   numero1 :real
   numero2 :real
   numero3 :real
   numero4 :real
   numero5 :real

inicio
escreval("Digite o primeiro número real  ")
leia(numero1)
escreval("Digite o segundo número real ")
leia(numero2)
escreval("Digite o terceiro número real ")
leia(numero3)
escreval("Digite o quarto número real ")
leia(numero4)
escreval("Digite o quinto número real ")
leia(numero5)

se (numero1 > 0) entao
   escreval(numero1)
fimSe
se (numero2 > 0) entao
   escreval(numero2)
fimSe
se (numero3 > 0) entao
   escreval(numero3)
fimSe
se (numero4 > 0) entao
   escreval(numero4)
fimSe
se (numero5 > 0) entao
   escreval(numero5)
fimSe

fimAlgoritmo

Alguma dúvida sobre a parte da "replicação"?

 

 

 

4#

Ah! eu estou usando 5 variáveis repetidas. No decorrer do curso veria que existe um conceito chamado vetores.

algoritmo "FCdH"
var
   numeros :vetor [1..5] de real
   
inicio
escreval("Digite o primeiro número real  ")
leia(numeros[1])
escreval("Digite o segundo número real ")
leia(numeros[2])
escreval("Digite o terceiro número real ")
leia(numeros[3])
escreval("Digite o quarto número real ")
leia(numeros[4])
escreval("Digite o quinto número real ")
leia(numeros[5])

se (numeros[1] > 0) entao
   escreval(numeros[1])
fimSe
se (numeros[2] > 0) entao
   escreval(numeros[2])
fimSe
se (numeros[3] > 0) entao
   escreval(numeros[3])
fimSe
se (numeros[4] > 0) entao
   escreval(numeros[4])
fimSe
se (numeros[5] > 0) entao
   escreval(numeros[5])
fimSe

fimAlgoritmo

 

Alguma dúvida sobre essa parte dos vetores?

 

 

 

5#

Outro conceito que existe é dos laços de repetições, ou seja, seria possível reorganizar para evitar essas repetições... perceba que de um número para outro só muda o número da variável.... logo:

algoritmo "FCdH"
var
   numeros :vetor [1..5] de real
   i       :inteiro
   
inicio

para i de 1 ate 5 faca
   escreval("Digite o",i,"º número real ")
   leia(numeros[i])
fimPara

escreval()
escreval("Número positivos:")
para i de 1 ate 5 faca
   se (numeros[i] > 0) entao
      escreval(numeros[i])
   fimSe
fimPara

fimAlgoritmo

 

 

Perceba que são 3 conceitos distintos:

- Estrutura de seleção;

- Vetores;

- Estrutura de repetição;

 

O interessante é que para implementar o laço de repetição (para) se faz necessário também implementar o conceito de vetores. São duas coisas complemente distintas..  apenas que podem se interagir.

 

 

***

 

No aguardo.

  • Curtir 1
Postado

Agradeço muito a ajuda prestada, vou anota-las e estuda-las. Só fiquei com uma duvida:

Em 16/09/2018 às 12:33, Simon Viegas disse:

numeros :vetor [1..5] de real

Estaria certo tb se eu colocasse "inteira"?

  • Membro VIP
Postado

Sobre:

14 horas atrás, Otonashi Oliveira disse:

[...] Só fiquei com uma duvida:

Estaria certo tb se eu colocasse "inteira"?

 

Talvez sim. Mas como fala de "números", entendo que usar real seria mais próximo... Lembrando que o conjunto dos reais englobam os inteiros também. Se usar inteiro estará limitando o escopo/alcance do programa.

 

Já no caso do i, este sim "não poderia" ser real... pois o escopo dele é apenas de números inteiros*. O i vai de 1 até "a quantidade de números"... essa quantidade é apenas inteira (no caso natural), não haveria necessidade de definir como real.

 

obs.: fora que o para não aceita real. Mas mesmo que aceitasse, ficaria "estranho" definir o i como real. Costumo remeter a questão da "coerência".

 

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!