Ir ao conteúdo
  • Cadastre-se

Portugol Procedimento que receba um número inteiro e


Posts recomendados

Escreva um procedimento que receba um número inteiro e o imprima na forma extensa. Por exemplo, para 1 a saída desejada é “Um”. A função deve ser capaz de gerar o extenso dos números de 0 até 15, inclusive. Caso um número não compatível seja recebido o procedimento deve mostrar uma mensagem de erro. Crie também um algoritmo que leia um valor inteiro e chame o procedimento criado acima para a impressão do número extenso.


Eu fiz assim, alguém pode me ajudar, achei na internet totalmente diferente, então não seio se estar errado, estar dando erro no  [   escreval(extenso(n))  ]


 

var
n: inteiro

procedimento extenso(n: inteiro)

var
ext: caracter
inicio
escolha (n)
caso 1
ext < "Um"
caso 2
ext <- "Dois"
caso 3
ext <- Três"
caso 4
ext <- "Quatro"
caso 5
ext <- "Cinco"
caso 6
ext <- "Seis"
caso 7
ext <- "Sete"
caso 8
ext <- "Oito"
caso 9
ext <- "Nove"
caso 10
ext <- "Dez"
outrocaso
ext <- "Erro. Número inválido"
fimescolha
escreval(ext)
fimprocedimento

inicio
escreva("Informe um número: ")
leia(n)
escreval(extenso(n))

fimalgoritmo

 

OBS. no visualG (portugol)

 

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

@jehssyk   seu código está certo , só na chamada da função não funciona desse jeito ,  pois procedimento não retorna nada , então seu código com algumas modificações ficaria assim :

Algoritmo "numero por extenso"
var
n,r : inteiro
num : caracter
procedimento extenso(n: inteiro)
var
  ext: caracter
inicio
  escolha (n)
  caso 1
    ext < "Um"
  caso 2
    ext <- "Dois"
  caso 3
    ext <- Três"
  caso 4
    ext <- "Quatro"
  caso 5
    ext <- "Cinco"
  caso 6
    ext <- "Seis"
  caso 7
    ext <- "Sete"
  caso 8
    ext <- "Oito"
  caso 9
    ext <- "Nove"
  caso 10
    ext <- "Dez"
  outrocaso
    ext <- "Erro. Número inválido"
  fimescolha
  num:=ext
fimprocedimento
inicio
  escreva("Informe um número: ")
  leia(n)
  extenso(n)
  escreval(num)
fimalgoritmo

se você puder usar vetores seria mais fácil e diminuiria o número de linhas tornando o código menor .

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

  • Membro VIP

Olá.

 

1#

Inicialmente vamos analisar o enunciado:

15 horas atrás, jehssyk disse:

Escreva um procedimento que receba um número inteiro e o imprima na forma extensa. Por exemplo, para 1 a saída desejada é “Um”. A função deve ser capaz de gerar o extenso dos números de 0 até 15, inclusive. Caso um número não compatível seja recebido o procedimento deve mostrar uma mensagem de erro. Crie também um algoritmo que leia um valor inteiro e chame o procedimento criado acima para a impressão do número extenso.

 

Primeiramente: procedimento e função são coisas distintas... são bem próximas, é verdade, mas são diferentes. Resumidamente seria que "uma função faz algo ou não dentro dela, mas sempre retorna algo em si mesma, ou seja, ela funciona como procedimento e ao mesmo tempo como uma variável". Já os procedimentos são como uma função, apenas que não retorna nada em si, ou seja, "ela não se comporta como uma variável".

 

 

Veja, no seu código tem essa linha:

15 horas atrás, jehssyk disse:

escreval(extenso(n))

 

Mas o método extenso() é um PROCEDIMENTO, ou seja, não retorna nada em si, logo, não pode ser "escrito". Se fosse uma função, esta retornaria uma valor em si... daí poderia usar como você vez.

 

 

 

2#

Daí é necessário primeiro entender o que o enunciado pede... Para mim a base se resume a esse trecho:

15 horas atrás, jehssyk disse:

Escreva um procedimento que receba um número inteiro e o imprima na forma extensa.

 

Ou seja, é o próprio procedimento que deveria escrever a resposta.


Ainda complementa:

15 horas atrás, jehssyk disse:

A função deve ser capaz de gerar o extenso dos números de 0 até 15, inclusive

obs.: nesse sentido, a questão de também usar o termo função no enunciado seria apenas um descuido do elaborador, pois, como citado, ou vai fazer com procedimento ou vai fazer com função, vide 1#.

 

Logo seu código segue a minha interpretação... o que seria um pouco diferente do código @devair1010. Pois este imprime o texto fora do procedimento. Ou seja, teria que verificar qual seria a forma correta... (pois são distintas)

 

 

 

3#

Sobre:

15 horas atrás, jehssyk disse:

Eu fiz assim, alguém pode me ajudar, achei na internet totalmente diferente, então não seio se estar errado, estar dando erro no  [   escreval(extenso(n))  ]

 

Esse erro está justamente o citado no item 1#, ou seja, está tentando imprimir algo que não é imprimível... Basta invocar o método assim:

inicio
   escreva("Informe um número: ")
   leia(n)
   extenso(n)
fimAlgoritmo

 

Levando em consideração a interpretação que deveria imprimir dentro do método, bastaria efetuar os pequenos ajustes. Algo como:

algoritmo "FCdH"
var
   n: inteiro
//Procedimento que recebe um número inteiro e o imprime na forma extensa
procedimento extenso(n: inteiro)
   var
      ext: caracter //auxiliar para armazenar o texto
   inicio
   escolha (n)
   caso 1
      ext <- "Um"     //nessa linha faltou o "-" no "<-"
   caso 2
      ext <- "Dois"
   caso 3
      ext <- "Três"   //nessa linha faltou o " antes do do texto
   caso 4
      ext <- "Quatro"
   caso 5
      ext <- "Cinco"
   caso 6
      ext <- "Seis"
   caso 7
      ext <- "Sete"
   caso 8
      ext <- "Oito"
   caso 9
      ext <- "Nove"
   caso 10
      ext <- "Dez"
   caso 11
      ext <- "Onze"     //faltou o restante dos números
   caso 12
      ext <- "Donze"
   caso 13
      ext <- "Treze"
   caso 14
      ext <- "Quatorze"
   caso 15
      ext <- "Quinze"
   outrocaso
      ext <- "Erro. Número inválido"
   fimescolha
   escreval(ext)
fimProcedimento
inicio
   escreva("Informe um número: ")
   leia(n)
   extenso(n)
fimAlgoritmo

 

 

 

adicionado 3 minutos depois

 

ADENDO:

4#

Uma ferramenta bacana para efetuar testes no Visual é o ALEATORIO. Nele, o próprio programa gera um número para os leia(). Ex.:

inicio
   escreva("Informe um número: ")
   ALEATORIO 1,25
   leia(n)
   ALEATORIO OFF
   extenso(n)
fimAlgoritmo

Ou seja, os leia() que estão dentro do ALATORIO vão ser automaticamente preenchidos... como se um usuário tivesse digitando por você. O número ali no lado é a faixa... vai sortear de 1 a 25.

adicionado 14 minutos depois

 

5#

Segue um exemplo utilizando função:

Código:

Spoiler

algoritmo "FCdH"
var
   n: inteiro
//Procedimento que recebe um número inteiro e o imprime na forma extensa
funcao extenso(n: inteiro):caracter
   var
      ext: caracter //auxiliar para armazenar o texto
   inicio
   retorne ""
   escolha (n)
   caso 1
      ext <- "Um"     //nessa linha faltou o "-" no "<-"
   caso 2
      ext <- "Dois"
   caso 3
      ext <- "Três"   //nessa linha faltou o " antes do do texto
   caso 4
      ext <- "Quatro"
   caso 5
      ext <- "Cinco"
   caso 6
      ext <- "Seis"
   caso 7
      ext <- "Sete"
   caso 8
      ext <- "Oito"
   caso 9
      ext <- "Nove"
   caso 10
      ext <- "Dez"
   caso 11
      ext <- "Onze"     //faltou o restante dos números
   caso 12
      ext <- "Donze"
   caso 13
      ext <- "Treze"
   caso 14
      ext <- "Quatorze"
   caso 15
      ext <- "Quinze"
   outrocaso
      retorne "Erro. Número inválido"
   fimescolha
   escreval(ext)
fimFuncao
inicio
   escreva("Informe um número: ")
   ALEATORIO 1,25
   leia(n)
   ALEATORIO OFF
   escreva(extenso(n))
fimAlgoritmo


 

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

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