Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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.

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

  • Membro VIP

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.

 

  • Curtir 2
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...