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:  
Ayron Matos

Portugol Exercício 4 - Introdução aos algoritmos (Bruno Tonet)

Recommended Posts

4) Faça um algoritmo que gere uma tabela com os números de 1 a 10 e mostre o seu quadrado, cubo,
    fatorial, número de divisores e uma mensagem dizendo se o número é primo ou não. A cada 20 linhas
    deve ser escrito o cabeçalho novamente:

algoritmo "Tabelade1ate10"
var
   i, r, x, j: inteiro
   q, c: real
funcao fatorial(b:inteiro):inteiro
var f, t: inteiro
inicio
      f <- 1
      Se (b = 1) então
        Retorne 1
      SeNao
        Para t <- 1 ate b-1 faca
          f <- f*t
        FimPara
        Retorne f
      FimSe
fimfuncao
funcao divisores(b:inteiro):inteiro
var div, l: inteiro
inicio
        Para l <- 1 ate b faca
          Se (b%l=0) então
           div <- div + 1
          FimSe
        FimPara
        Retorne div
fimfuncao
funcao primo(b:inteiro):inteiro
var div, l: inteiro
inicio
      Para l <-1 ate b faca
        Se (b%l=0) então
          div <- div + 1
        FimSe
      FimPara
        Se (div = 2) então
        Retorne "sim"
        SeNao
        Retorne "nao"
        FimSe
fimfuncao
inicio
      Escreva("Número   Quadrado   Cubo   Fatorial   Divisores   Primo")
      Para i <- 1 ate 10 faca
        q <- i^2
        c <- i^3
         r <- fatorial()
         x <- divisores()
         z <- primo()
        Escreva(i, q:7, c:8, r:4, x:6, z:10)
      FimPara
fimalgoritmo

 

Ele finaliza no início da função <fatorial()> e eu não sei por quê... gostaria de entender onde estou errando.

obs: desconsiderei a repetição a cada 20 linhas. Achei desnecessário.

Editado por Ayron Matos
Botão CODE <>
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Ayron Matos.

 

Alguns pontos:

 

1) MELHOR DEIXAR TUDO COMO PROCEDIMENTO

Cada uma das etapas poderia ser um procedimento... assim fica mais padronizado... ou seja, por que "fatorial" está como procedimento, e "cubo" não está?

 

 

 

2) PASSAGEM DE PARÂMETRO

Aqui está um dos problemas principais... você deixou a assinatura dos procedimentos recebendo parâmetros, mas não está passando os parâmetros quando chama a função. Eu pensei em deixar para você mesmo descobrir sozinho, mas fazendo testes aqui, vi que o Visualg está travando... ou seja, onde isso seria apenas um erro comum, onde o "compilador" deveria avisar que é necessário passar o parâmetro, em vez disso o Visualg está travando.. dando literalmente erro e sendo necessário finalizar o processo no Windows.

 

Em fim, seria basicamente isso:

r <- fatorial(i)

Fatorial precisa receber qual número será "fatoriarizado"... pelo que eu entendi, seria o i (que vai de 1 a 10). Na função, b irá copiar o valor de i, e no final a função retornar o resultado da operação. Deu para entender?

 

 

 

3) FAZER O PROGRAMA  POR PARTES

É recomendado evitar fazer as partes do programa de uma vez... não tem por que fazer os "divisores" se fatorial não está funcionando ainda (isso supondo que o quadrado e o cubo estão funcionado). Sugiro ir adicionado e testando cada "componente" um a um... Ex.:

Algoritmo "Tabelade 1 ate 10"

//Função que retorna o quadrado do número que foi passado por parâmetro
Funcao quadrado(x:Inteiro):Inteiro
   Var
      resultado :Inteiro
   Inicio
   resultado := (x*x)
   Retorne resultado
   FimFuncao

//*** FUNÇÕES EM CONSTRUÇÃO ***

//Função que retorna o cubo do número que foi passado por parâmetro
{Funcao cubo(x:Inteiro):Inteiro}

//Função que retorna o fatorial do número que foi passado por parâmetro
{Funcao fatorial(x:Inteiro):Inteiro}

//Função que retorna a quantidade de divisores do número que foi passado por parâmetro
{Funcao numDivisores(x:Inteiro):Inteiro}

Var
  i :Inteiro

Inicio
EscrevaL("Número   Quadrado   Cubo   Fatorial   Divisores   Primo")
Para i <- 1 Ate 10 Faca
   EscrevaL(i:4,quadrado(i):10) //<--aqui fiquei testando o :x até ficar alinhado
FimPara
FimAlgoritmo

Daí, implementa o "cubo" e faz os testes até ficar certinho... como não estruturas pesadas, dá para fazer os testes juntos com os procedimentos já prontos, ou seja, não precisa "desativar" o 'cubo" para testar os "quadrado"... nem desativar o "cubo" e "quadrado" para testar o "fatorial" etc.

 

Vá implementando uma a uma as funções... só passe para próximo quando tiver pronto a atual...

 

No aguardo.

 

Editado por Simon Viegas
  • Curtir 2

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

×