tecnologia

Páginas: 8 (1772 palabras) Publicado: 8 de mayo de 2013
El Paso De Parámetros Por Referencia
1 Paso de parámetros por valor
El mecanismo que hemos estado utilizando hasta el momento para pasar parámetros del programa principal a los procedimientos o funciones se denomina paso por valor. El computador hace una copia del valor de los parámetros que el programa principal quiere pasar al procedimiento o función, y el procedimiento o función trabajacon esta copia del valor de los parámetros. Veamos un ejemplo.

#include
#include
typedef char Tpalabra [20];
typedef struct {
Tpalabra nombre;
int edad;
int nota;
} Talumno;
void escribe_datos (Talumno a)
{
printf ("Nombre: %s\n", a.nombre);
printf ("Edad: %d\n", a.edad);
printf ("Nota: %d\n", a.nota);
}
void main ()
{
Talumno alum;
strcpy (alum.nombre, "Juan");alum.edad = 20;
alum.nota = 6;
escribe_datos (alum);
}


En este ejemplo se ha definido un procedimiento que escribe en pantalla los datos de una estructura (nombre, edad y nota de un alumno). El programa principal declara una variable de tipo Talumno, se asigna un valor a cada uno de sus campos, y llama al procedimiento para que se escriban esos valores en la pantalla. Para ello, le pasapor valor la variable que contiene los datos del alumno.
Construye un proyecto para probar este programa, ejecútalo y comprueba que funciona correctamente. Después, vuelve a ejecutar paso a paso el programa siguiendo las instrucciones que ves a continuación.
Establece un punto de parada en la sentencia strcpy (alum.nombre, "Juan"); y otro punto de parada en la sentencia printf ("Nombre: %s\n",a.nombre);
Ejecuta el programa hasta el primer punto de parada.

Coloca en la ventana del watch las variables alum (variable del programa principal) y a (parámetro formal del procedimiento). La ventana del watch tendrá el aspecto que se muestra a la derecha. Por una parte se ve que alum es una estructura (signo + a la izquierda del nombre). Por otra parte, el computador todavía no reconoce lavariable a (porque aún no se ha hecho la llamada al procedimiento.

Despliega la estructura alum (clica en el signo +) y ejecuta paso a paso las tres sentencias del programa principal que asignan valores a los campos de la estructura. La ventana del watch mostrará algo parecido a lo que ves a la derecha.
Fijate en el valor del campo nombre. El número raro que hay a la izquierda del valor del campo(“Juan”) es la dirección de memoria donde está esa información. Escribe es un papel ese número.

Ejecuta ahora hasta el siguiente punto de parada. La ventana del watch mostrará algo parecido a lo que ves a la derecha
El computador ha entrado en el procedimiento, y ya reconoce la variable a. Sin embargo, ahora ya no sabe que es la variable alud, porque pertenece al programa principal que hemosabandonado temporalmente..

Despliega la estructura a (clica en el signo +). Verás algo como lo que hay en la derecha.
Observa que los campos de a tienen los mismos valores que los campos de alum. Observa también que la dirección de memoria en la que está el campo nombre de a es diferente que la dirección en la que está el campo nombre de alum. Es decir, en el momento del paso de parámetros, elcomputador ha hecho una copia del parámetro en otra posición de memoria, y el procedimiento trabaja con esa copia de la información.

Vamos a añadir ahora a programa un procedimiento que sube un punto la nota del alumno si su edad es inferior a 25. El procedimiento es el siguiente:


Incorpora este procedimiento al proyecto, haz una llamada desde el programa principal, justo antes de lallamada para escribir los datos en la pantalla. Ejecuta después el programa y comprueba que NO funciona (debería haber subido un punto a la nota de Juan).
Para comprender lo que pasa, ejecuta ahora paso a paso el programa y comprueba que pasa lo siguiente:
1. Dentro del procedimiento sube_nota, el computador efectivamente modifica el campo nota de la variable a (el parámetro del procedimiento)....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Tecnologia
  • Tecnología
  • Tecnologia
  • Tecnologia
  • Tecnologia
  • Tecnologia
  • Tecnologia
  • Tecnologia

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS