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