Error: Duplicate name for procedure or function

Asked

Viewed 566 times

0

I am training the use of procedures in Visualg and wanted to know why the code below presents the error:

"Duplicate name for procedure or function: 'SEX'".

Remembering, the main objective is not to optimize the code, but to know the reason for the error. I only put in a single 'Sex' procedure, but Visualg insists that the name is duplicated.

algoritmo "Seletor de Selecionados"
// Função :  Selecionar selecionados, óbvio
// Autor :  Rodrigo Matos Aguiar
// Data : 16/10/2016
// Seção de Declarações 
var
   Sex, Rep: Caractere // Sex - Sexo, CorC - Cor do Cabelo, Rep - Repetir
   Id, ContM, ContF, CorC, HS, MS: Inteiro // Id - Idade, ContM - Contador Masculino, ContF - Contador Feminino
   // CorC - Cor do Cabelo, HS - Homens Selecionados, MS - Mulheres Selecionadas
Procedimento Final(A, B: Inteiro)
inicio
      EscrevaL("---------------")
      EscrevaL("Resultado Final")
      EscrevaL("---------------")
      EscrevaL("Total de homens com mais de 18 anos e cabelo castanho: ", HS)
      EscrevaL("Total de mulheres com idade entre 25 e 30 anos e cabelo louro: ", MS)
FimProcedimento
Procedimento Cabelo
inicio
      EscrevaL("Qual a cor de cabelo?")
      EscrevaL("---------------------")
      EscrevaL("[1] Preto            ")
      EscrevaL("[2] Castanho         ")
      EscrevaL("[3] Louro            ")
      EscrevaL("[4] Ruivo            ")
FimProcedimento
Procedimento Sexo (var A, B: Inteiro)
var C: Caractere
inicio
      EscrevaL("Qual o sexo? [M][F] ")
      Leia(C)
      Escolha C
              Caso "M"
                   A <- 1
              Caso "F"
                   B <- 1
      FimEscolha
FimProcedimento
inicio
// Seção de Comandos
Repita
   EscrevaL("-----------------------")
   EscrevaL("Seletor de Selecionados")
   EscrevaL("-----------------------")
   Procedimento Sexo (ContM, ContF)
   EscrevaL("Qual a idade? ")
   Leia(Id)
   Se (Id > 18) entao
      ContM <- ContM + 1
   FimSe
   Se (Id > 25) e (Id < 30) entao
      ContF <- ContF + 1
   FimSe
   Procedimento Cabelo
   Leia(CorC)
   Escolha CorC
          Caso 2
               ContM <- ContM + 1
          Caso 3
               ContF <- ContF + 1
   FimEscolha
   Se (ContM = 3) entao
      HS <- HS + 1
   FimSe
   Se (ContF = 3) entao
      MS <- MS + 1
   FimSe
   EscrevaL("Quer continuar? [S][N] ")
   Leia(Rep)
Ate (Rep = "N")
    Procedimento Final(HS, MS)
    fimalgoritmo

1 answer

1


You are declaring the procedures again when you use the word "Procedure", in other words, when the compiler reads the word procedure he understands that you are declaring a new procedure and in this case it is the same name..

Whenever you want to use the function just call her name, example:

Sexo (ContM, ContF)

Instead of

 Procedimento Sexo (ContM, ContF)

In their code there are several other places like Hair and End in which you are putting the word "Procedure" in front, they will also possibly present error.

Before asking in the OS you should search at least how to perform a function call in this your pseudo-language (google’s first link by "visualg procedure"): http://www.eletrica.ufpr.br/~Rogerio/visualg/Help/linguagem4.htm

Statement:

Procedimento Sexo (var A, B: Inteiro)
var C: Caractere
inicio
      EscrevaL("Qual o sexo? [M][F] ")
      Leia(C)
      Escolha C
              Caso "M"
                   A <- 1
              Caso "F"
                   B <- 1
      FimEscolha
FimProcedimento

Utilizing:

..
..
Sexo (ContM, ContF)
..
..
  • I already made two algorithms with Procedure and in none of them gave error, because I had done correct. Sorry for my lack of attention!

  • No problem, the start is hard but soon you get the hang of it. Don’t give up =D Then learn the language C or Java, You won’t regret

Browser other questions tagged

You are not signed in. Login or sign up in order to post.