Error: Duplicate name for procedure or function

0

I'm 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'".

Remember, the main goal is not to optimize the code, but to know the reason for the error. I just put a single 'Sex' procedure, but VisualG insists the name is duplicate.

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
    
asked by anonymous 20.10.2016 / 05:39

1 answer

1

You are declaring procedures again when you use the word "Procedure", in other words, when the compiler reads the word procedure it means 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 its name, example:

Sexo (ContM, ContF)

Instead of

 Procedimento Sexo (ContM, ContF)

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

Before asking in the OS you should at least research how a function call is made in this pseudo-language (first google link for "visualg procedure"): link

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

Usage:

..
..
Sexo (ContM, ContF)
..
..
    
20.10.2016 / 10:48