Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
jehssyk

Portugol Procedimento que receba um número inteiro e

Recommended Posts

Postado (editado)

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)

 

Editado por DiF
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

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

Editado por devair1010
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×