La definición de una función no contempla constantes.
El usuario cuando no quiere que el contenido de un dato sea modificado dentro de la función, es reponsable de mandar una copia, lo que técnicamente es lo mismo que una constante, pero de forma transparente a la función. Porque dentro de la función no se sabe el origen de la misma.
De hecho uno podría hacer todas estas cosas:
Como puedes entender, indistintamente de que se pase en ocasiones por valor o por referencia, una constante, no es meramente aquello que está declarado como constante, puede asumirse que es constante, si el cambio de dicha variable dentro de la función, a la vuelta de la función no afecta a la de origen. Una función no necesita saber que pasa fuera de ella, solo precisa saber que se hace dentro, para eso tiene el código preciso de lo que debe hacer. Si resultara vital saber si una variable es o no una constante (no se me ocurre a bote pronto, ningún caso donde esto deba ser necesario, ni siquiera útil), podría añadirse un parámetro adicional que así lo detalle, pero no hay garantias de que el usuario tenga que 'decir' la verdad...
El usuario cuando no quiere que el contenido de un dato sea modificado dentro de la función, es reponsable de mandar una copia, lo que técnicamente es lo mismo que una constante, pero de forma transparente a la función. Porque dentro de la función no se sabe el origen de la misma.
De hecho uno podría hacer todas estas cosas:
Código [Seleccionar]
entero = declaracion de funcion Y(entero valor)
valor +=2
devolver valor modulo 5
fin funcion
...
...
...
constante de entero x = 25
entero z
z= funcion Y(25) // técnicamente se está recibiendo una constante inicializada durante la llamada.
...
fin funcion
z= x
z = funcion Y(z) // es una constante si se pasa como valor, aunque al final el retorno se le entrega a 'z' y acaba así cambiando de valor.
...
fin funcion
z= 25
z= funcion Y(z +0) //técnicamente se está recibiendo una constante, resultante de la suma de z + un valor constante... que se guardará en la pila, y que en origen tampoco se podrá rescatar.
...
fin funcion
z= funcion Y(x +3) // igual que anterior, aunque es la suma de dos constantes.
...
fin funcion
z= 7
z= funcion Y(x + z + 3) // igual que anterior... cuando procede de una expresión es lo mismo que si fuera una constante.
...
fin funcion
Como puedes entender, indistintamente de que se pase en ocasiones por valor o por referencia, una constante, no es meramente aquello que está declarado como constante, puede asumirse que es constante, si el cambio de dicha variable dentro de la función, a la vuelta de la función no afecta a la de origen. Una función no necesita saber que pasa fuera de ella, solo precisa saber que se hace dentro, para eso tiene el código preciso de lo que debe hacer. Si resultara vital saber si una variable es o no una constante (no se me ocurre a bote pronto, ningún caso donde esto deba ser necesario, ni siquiera útil), podría añadirse un parámetro adicional que así lo detalle, pero no hay garantias de que el usuario tenga que 'decir' la verdad...