Ese gato al fondo me distrae XD
Introducción a las funciones en C
Lo que aprenderás sobre funciones en C
¿Qué es una función en C?
Cómo usar las funciones
Tipos de retorno en funciones
Manejo de funciones en C
Implementación de funciones
Parámetros por valor
Bibliotecas estándar de funciones
Principales Bibliotecas de C
Math.h
String.h
Time.h
Stdlib.h
Cierre
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 25
Preguntas 2
Ese gato al fondo me distrae XD
Aclaración: No es necesario que el nombre del parámetro y el argumento (el valor específico que se pasa a la función) sean iguales. La función puede declarar el parámetro con cualquier nombre, siempre y cuando coincida el tipo de dato que recibe
Un **Puntero **es un argumento por referencia.
La paradoja de los gemelos me parece una buena forma de ver esto. Un par de gemelos van a hacer un experimento, el gemelo A se queda en la tierra y el gemelo B se va al espacio exterior en una nave viajando a la velocidad de la luz. El gemelo A envejece en la tierra y el gemelo B cuando regresa al planeta se ve igual de joven que cuando se fue (Por cuestiones de leyes físicas como la relatividad de Einstein). Igual que pasar parámetros por valor, mandas a tu copia y tu te queda bien tranquilo y no te afecta lo que le suceda a tu copia. En el caso de parámetros por referencia, es como si NO tuvieras hermano gemelo y tuvieras que ir tu mismo al espacio, todo lo que sucede te afecta.
PARAMETRO POR REFERENCIA:
int n;
funcionX(n);
PARAMETRO POR VALOR:
int n;
funcionX(copia_de_la_variable_n);
La funcion power tiene dos argumentos base y n, en el método main, no se sabe que es n, pero si se conoce i, quizás quedaría más claro en la salida que se imprime por printf indicar el nombre de la variable i, que es la que itera en el bucle.
En la segunda parte ya se cambia y en main se declara n quitando i, ahí se entiende mejor, la salida por pantalla.
Las funciones deberían ser un poco como cajas negras, es decir que no necesitamos conocer como están implementadas para poder llamarlas, por lo que si pasamos como argumento una variable no tiene porque necesariamente llamarse igual.
En la llamada a power que haces en main utilizas un literal 2, y una variable n con valor literal 3.
Recuerdo que eso de Parámetro por Referencia me costo mucho entenderlo en la universidad. Me lo explicaban de forma muy rara y luego me mandaban a hacer Código sin haber terminado de entender.
Al final le agarre el sentido, pero me hubiera gustado tener esta explicación en ese momento.
¡Lindo gato! 🐱
Y la casa del gato es más linda que la del papá del gato 😲
Inviten más al gato.
# include <stdio.h>
int power(int base, int n);
int main()
{
int n;
n = 12;
printf("n = %d resultado de la potencia = %d \n", n, power(2,n));
printf("El valor del exponiente n original siguie siendo: %d \n", n);
return 0;
}
int power(int base, int n)
{
int p;
for (p = 1; n > 0; n--)
{
p = p*base;
printf("El valor temporal de n es: %d \n", n);
}
return p;
}
Esta explicación vaya que sí me ha gustado. Y por cierto, el gatito esta hermoso. Me gusta verlo 😃
Buenas peña.
Dejo este recurso donde habla sobre Funciones por referencia y por valor en C cortesía de Parzibyte’s
Un saludo y gracias.
No se si entendi bien…al colocarle n-- es como si recorriera al reves? o sea…si tengo n=4, va bajando n=3, n=2, n=1 …?
AME ese gato todo pancho del fondo necesito un juguete de arañar como el que tenes para los mios
Por primera vez entiendo el parámetro por valor y por referencia.
Esto solia ser un problema cuando empezaba, que bueno que se toma esta clase en cuenta para evitar errores a quienes recien empiezan 😄
Algo que me dio un poco de Tock es que en el método que calcula la potencia, imprime que el valor temporal es una cuenta atrás del exponente, en lugar del valor de nuestra base durante el ciclo. Es decir, 2^2 debería tener como valor temporal 4, si no el programa es un poco confuso.
Pero vamos, es algo tan simple como cambiar en el printf la variable del exponente, la n, por la variable de la base, la p en este caso.
Sentí muy revuelta esta clase, me revolvió mucho
me estoy enredando demasiado
El gato es muy chistoso…
buena clase
Cuando pasamos una variable por valor la variable original no se esta viendo afectada ni modificada, ya que es una copia la que se esta disminuyendo, aumentando, etc.
Les comparto mi ejemplo
#include <stdio.h>
int potencia(int base, int potencia){
int resultado = 1;
for(resultado; potencia > 0; potencia--){
resultado *= base;
}
return resultado;
}
int main(void){
int base, power;
printf("Ingresa la base: ");
scanf("%d", &base);
printf("Ingresa la potencia: ");
scanf("%d", &power);
printf("El resultado es: %d \n", potencia(base, power));
return 0;
}
Los punteros son una forma de pasar el valor por referencia, lo que significa que el valor original es el que se modifica, ya que se esta pasando la dirección de memoria de la variable
No entendí el for con p y n 😕 Help …
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.