elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:52  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Preguntas de teoría sobre funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Preguntas de teoría sobre funciones  (Leído 191 veces)
DickGumshoe

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Preguntas de teoría sobre funciones
« en: 11 Enero 2012, 19:39 »

Hola.
.
En mis apuntes vienen las siguientes preguntas de teoría, pero a mí me parece que se contradicen:

¿Debe una función acceder a variables de fuera de la función?
   

NO DEBE HACERLO. SOLO SI SE LE PASA COMO PARÁMETROS





¿Se puede acceder desde fuera de una función a una variable definida dentro?
   

NO

¿Se puede acceder desde dentro de una función a una variable definida fuera?
   

SI, AUNQUE HAY QUE EVITARLO EN LA MEDIDA DE LO POSIBLE


¿Alguien me las podría explicar?

Saludos y muchas gracias


En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: Preguntas de teoría sobre funciones
« Respuesta #1 en: 11 Enero 2012, 20:26 »

¿Debe una función acceder a variables de fuera de la función?
NO DEBE HACERLO. SOLO SI SE LE PASA COMO PARÁMETROS

Esto se utiliza cuando pasas una variable como referencia, pasas una referencia como parámetro a la función y esta puede modificar su valor.

Ejemplo:

Código
void algo(int *a) {
*a = 2;
}
 
int main(void)
{
   int x = 10;
   algo(&x);
   printf("%d\n", x);
   return 0;
}

Dentro de la función algo, modificamos el valor de la variable x dentro de main, ya que le estamos pasando a la función una referencia, así esta puede modificar libremente su valor, ya que conoce la dirección de memoria.

¿Se puede acceder desde fuera de una función a una variable definida dentro?
NO

No se puede, ya que una variable definida dentro de una función, es local en esa misma función, es decir, solo tiene validez dentro de la función, por lo cual no podemos acceder a su valor desde afuera.

Ejemplo, es incorrecto suponer esto:

Código
void algo(void) {
int x = 345;
}
 
int main(void)
{
   algo();
   /* x no existe dentro de la función main() */
   printf("%d\n", x);
   return 0;
}
 
 

Citar
¿Se puede acceder desde dentro de una función a una variable definida fuera?
SI, AUNQUE HAY QUE EVITARLO EN LA MEDIDA DE LO POSIBLE

Ahí está hablando implícitamente de VARIABLES GLOBALES, trabajar mucho con variables globales, no es una buena práctica de ingeniería de software.

Te cito de la wikipedia:

Citar
El uso de este tipo de variables suele considerarse como una mala práctica, por el riesgo que conlleva esa deslocalización: una variable global puede ser modificada en cualquier parte del programa (a menos que resida en una sección de memoria protegida) y cualquier parte del programa depende de ella. Es por ello que una variable global tiene un potencial ilimitado para crear dependencias, factor éste que aumenta la complejidad. Sin embargo, en algunas ocasiones, las variables globales resultan muy útiles. Por ejemplo, se pueden usar para evitar tener que pasar variables usadas muy frecuentemente de forma continua entre diferentes subrutinas.

Saludos.


En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
DickGumshoe

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Re: Preguntas de teoría sobre funciones
« Respuesta #2 en: 11 Enero 2012, 20:42 »

Muchísimas gracias, ahora lo tengo claro.

Saludos.
En línea
satu

Desconectado Desconectado

Mensajes: 263

Siempre aprendiendo


Ver Perfil WWW
Re: Preguntas de teoría sobre funciones
« Respuesta #3 en: 11 Enero 2012, 20:45 »

Hola

Buenísima explicación Leo

Ahí está hablando implícitamente de VARIABLES GLOBALES, trabajar mucho con variables globales, no es una buena práctica de ingeniería de software.

Es lo que en diseño de sistemas se conoce como "acoplamiento de entorno común", el segundo tipo de acoplamiento más 'indeseado'.

Citar
Este tipo de acoplamiento sucede cuando se manejan estructuras comunes. Este acoplamiento es muy peligroso, ya que módulos que no teniendo conexión en el mapa de estructura, pueden estar acoplados al manejar zonas comunes, como pueden ser areas de memoria, ficheros de datos, etc.
Esto no quiere indicar que no se utilicen variables globales ni recursos compartidos.  intentamos tan solo, advertir al diseñador del peligro potencial de errores al manejar estructuras comunes.

Saludos
En línea

Breakbeat como forma de vida
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Teoría Basica sobre Routing y Switching (Cisco)
Redes
||MadAntrax|| 2 1,797 Último mensaje 25 Junio 2006, 23:45
por dpx06
Surge teoría sobre origen de la vida
Foro Libre
ALEX_21_3 0 300 Último mensaje 14 Junio 2009, 08:19
por ALEX_21_3
La Teoria del Shock sobre el Humano
Foro Libre
El As del Club Paris 1 422 Último mensaje 22 Julio 2009, 07:33
por fNiX
Internet alimenta la teoría de la conspiración sobre Haití
Noticias
wolfbcn 5 2,218 Último mensaje 20 Enero 2010, 00:55
por Nork
Como haces llegar una teoria sobre el universo a los cientificos?
Foro Libre
$Edu$ 6 391 Último mensaje 13 Abril 2012, 23:41
por $Edu$
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines