Qué significa
Error de escritura en la línea 6
'Doble' recibe 1 valor, pero se le dieron 2.
Una función es un pedazo de programa con nombre que recibe valores (los parámetros) y puede devolver un resultado. Pueden ser de Jaguar, como Raiz(x) o Longitud(texto), o tuyas, definidas con Funcion o SubProceso.
Antes de ejecutar, Jaguar revisa todas las llamadas del programa y avisa si algo no cuadra:
- «… recibe 1 valor, pero se le dieron 2»: la llamada tiene más (o menos) valores que los parámetros de la función.
- «No existe ninguna función llamada …»: el nombre no coincide con ninguna función de Jaguar ni tuya. Si hay una parecida, te sugiere cuál.
- «… no devuelve ningún valor, así que no puede usarse dentro de una expresión»: usaste un subproceso (que solo hace cosas) como si diera un resultado.
- «La función … ya fue definida en la línea …»: hay dos funciones con el mismo nombre.
- «Después de 'Por' se esperaba 'Referencia' o 'Valor'»: en los parámetros,
Porsolo puede ir seguido de una de esas dos palabras.
Ejemplos y cómo arreglarlos
Más valores de los que recibe
Funcion resultado <- Doble(x)
resultado <- x * 2
FinFuncion
Algoritmo usar_doble
Escribir Doble(4, 5)
FinAlgoritmoError de escritura en la línea 6
'Doble' recibe 1 valor, pero se le dieron 2.
Doble tiene un solo parámetro, así que se llama con un solo valor:
Funcion resultado <- Doble(x)
resultado <- x * 2
FinFuncion
Algoritmo usar_doble
Escribir Doble(4)
FinAlgoritmo
Una función que no existe
Algoritmo raiz
Escribir Raices(49)
FinAlgoritmoError de escritura en la línea 2
No existe ninguna función llamada 'Raices'.
La función de Jaguar para la raíz cuadrada es Raiz (también RC):
Algoritmo raiz
Escribir Raiz(49)
FinAlgoritmo
Un subproceso usado como función
SubProceso Saludar(nombre)
Escribir "Hola, ", nombre
FinSubProceso
Algoritmo saludo
mensaje <- Saludar("Ana")
FinAlgoritmoError de escritura en la línea 6
'Saludar' no devuelve ningún valor, así que no puede usarse dentro de una expresión. Para que devuelva un valor defínela como 'Funcion resultado <- Saludar(...)'.
Un subproceso se llama solo, en su propia línea. Si necesitas un resultado para guardarlo, define una función con Funcion resultado <- Nombre(...):
SubProceso Saludar(nombre)
Escribir "Hola, ", nombre
FinSubProceso
Algoritmo saludo
Saludar("Ana")
FinAlgoritmo
Dos funciones con el mismo nombre
Funcion r <- Area(b, h)
r <- b * h
FinFuncion
Funcion r <- Area(lado)
r <- lado * lado
FinFuncion
Algoritmo areas
Escribir Area(3, 4)
FinAlgoritmoError de escritura en la línea 5
La función 'Area' ya fue definida en la línea 1.
Cada función necesita un nombre distinto:
Funcion r <- AreaRectangulo(b, h)
r <- b * h
FinFuncion
Funcion r <- AreaCuadrado(lado)
r <- lado * lado
FinFuncion
Algoritmo areas
Escribir AreaRectangulo(3, 4)
Escribir AreaCuadrado(5)
FinAlgoritmo
Por qué aparece
- Pasar más o menos valores de los que la función espera, a veces por una coma de más.
- Escribir mal el nombre de la función, o usar el nombre que tiene en otro lenguaje (
sqrtfunciona, peroRaicesno). - Confundir un
SubProceso, que solo hace cosas, con unaFuncionque devuelve un valor. - Copiar una función dos veces en el mismo archivo.
Preguntas frecuentes
¿Qué diferencia hay entre Funcion y SubProceso?
En Jaguar, como en PSeInt, una función que devuelve un valor se escribe Funcion resultado <- Nombre(parámetros), y se puede usar dentro de operaciones. Una sin resultado solo ejecuta pasos y se llama en su propia línea.
¿Qué funciones trae Jaguar?
Raiz, Abs, Redon, Trunc, Azar, Aleatorio, Longitud, Mayusculas, Minusculas, Subcadena, Concatenar, ConvertirANumero, ConvertirATexto, las trigonométricas (Sen, Cos, Tan…), Ln, Exp y la constante PI.