¿Qué significa cuando el valor de la variable se pasa a una función?

Una función es un conjunto de instrucciones de computadora que realiza un cálculo particular o realiza una operación particular. Por ejemplo, la “función de raíz cuadrada” calcula el valor de la raíz cuadrada de un número y normalmente “devolvería un valor”, la raíz cuadrada calculada del número. Aunque podría escribir el algoritmo de raíz cuadrada una y otra vez en su código cada vez que necesite sacar una raíz cuadrada, crear una función de raíz cuadrada le permite escribir el algoritmo de raíz cuadrada solo una vez en su código y luego “llamar” a la función desde el “programa principal” cuando sea necesario, ahorrando espacio en el código del programa y también a menudo ahorrándole tener que codificar un algoritmo de raíz cuadrada. Para algoritmos complicados, simplemente no es factible o rentable codificarlos desde cero, y la mayoría de los compiladores, ensambladores, etc. ofrecen un “paquete de funciones y subrutinas” que puede usar en lugar de reinventar el suyo. Cargas esa biblioteca en la memoria de tu procesador y las llamas cuando es necesario.

Entonces, su programa está funcionando, ejecutando instrucciones en secuencia y necesita calcular una raíz cuadrada. Entonces, “llama” a la función de raíz cuadrada y “pasa” el número cuya raíz cuadrada desea como “argumento”. Esto podría llamarse “llamada por valor”. Para un microprocesador, puede diseñar la función para esperar el argumento en el registro del acumulador y para “devolver un valor” en el registro del acumulador. Entonces, coloca el argumento en el acumulador, luego ejecuta una instrucción de “llamada” que hace que la computadora guarde toda la información que necesita para recordar dónde estaba cuando llamó a la función, como los valores de los registros locales y la dirección de la siguiente instrucción, y luego le dice al procesador que tome su próxima instrucción del lugar en la memoria donde se almacena la función. La función se ejecuta como cualquier otro programa, calcula el valor, lo coloca en el acumulador y ejecuta una instrucción de “retorno”. La instrucción de retorno le dice al procesador que restaure sus registros a sus valores anteriores (excepto el acumulador, por supuesto) y luego tome su próxima instrucción desde el siguiente lugar en la memoria más allá de la instrucción “call”. Su “programa principal” ahora tiene el valor calculado en el acumulador y continúa en camino. Si la función no calcula nada y, por lo tanto, no tiene ningún valor que devolver, por ejemplo, si enciende una luz o activa un relé, sería una buena práctica que devuelva una “palabra de estado” que indique si piensa que realmente hizo lo que usted llamó. Esto entra en un área completa de informes de errores que es demasiado complicada y variable para discutir aquí.

Ahora, suponga que el argumento requiere más bits de los que tiene el acumulador. Puede organizar el uso de varios registros en lugar de uno para pasar el argumento y, por supuesto, la función debe saber qué registros buscar para el argumento. O bien, puede organizar las cosas donde no pasa el valor del argumento, sino que pasa la dirección del valor del argumento. Esto podría llamarse “llamada por dirección” o “llamada por puntero”. Puede hacer arreglos para poner la dirección del argumento en el acumulador y esperar que la función devuelva la dirección del “valor de retorno”, la respuesta, en el acumulador. Y puede ser mucho más complicado. Si el acumulador no puede contener la dirección completa del argumento, puede hacer arreglos para que un registro en el procesador contenga una dirección “base” y simplemente pasar al acumulador el “desplazamiento” de la dirección base, y así sucesivamente. Hay muchas formas según el procesador en particular y qué tipo de registros y otra arquitectura tiene. Espero que esto ayude.

(En C o C ++)
Tomemos una función que identificaremos por fun1.
Declaración:

return_datatype functionname (argumento1_datatype);
p.ej:
flotador fun1 (flotador);

Esto le dice a la computadora que fun1 () es una función que acepta un solo argumento de tipo float y devuelve un valor de tipo float.

Vocación:

y = diversión1 (x);

La función fun1 () se ‘llama’ o se invoca en esta declaración que dirige el valor de x como argumento, lleva a cabo las instrucciones definidas en fun1 () y asigna el resultado devuelto a y.
Para simplificar esto;
Imagina que fun1 () es algo llamado seno () para calcular el seno del argumento.

Entonces tendremos
y = seno (x);
Llama a una función declarada (o pre-declarada) como seno () y calcula el pecado de x y asigna este valor a y.

La asignación solo es posible porque sine () devuelve el valor de sin (x).

entonces
y = seno (x);
printf (“% f”, y);

funcionará igual que
printf (“% f”, seno (x));

Si sine () no devolvió ningún valor (es decir, su tipo de retorno era nulo) yy sine (x) no tendrían ningún valor y sería un error al intentar asignar o imprimir

también podemos tener
y = sin (2 * x);
o
y = sin (x + 3.141593 / 2);
etc.

entonces, la variable / constante escrita entre paréntesis es un valor que usted pasa para que la función la use y trabaje (o a veces no, dependiendo de la declaración)

Paso de una variable: puede pasar de ninguno a cualquier número y tipo de variables como enteros, decimales, matrices, matrices, variables de estructura, punteros … etc.

Espero haber aclarado tus dudas hasta cierto punto.

Se considera que una función pura (una función que solo depende de sus argumentos sin efectos secundarios) tiene sus argumentos sin consolidar, por ejemplo
dejar f (x) = x + 1
es verdadero para todo x cuando x es un número entero. Sabemos esto porque tiene que tener las características correctas para poder agregarle 1.
cuando llama a la función, podría decir f (2) y el valor 2 se pasa a la función y se vincula a x, por lo tanto, el resultado de la función es 2 + 1, que es 3 y este es el valor devuelto por la función. También puede decir f (y) donde y es otra variable entera unida a un valor por alguna otra declaración. Ahora hiciste la pregunta en la sección de matemáticas y, como tal, normalmente no pensarías en 2 + 1 = 3 sino en algún concepto abstracto de incrementar cualquier número. Pero si pregunta en el foro de lenguaje de computadora apropiado (por ejemplo, Visual Basic, C, C ++, C #, F #, OCaml, Haskell) son todas las opciones populares). Pueden darle la sintaxis y el significado exactos en cada idioma diferente. En C / C ++, por ejemplo, esta función se escribiría como “int f (int x) {return x + 1;}” en F # / OCaml sería “let fx = x + 1”