Está en la página 1de 12

UNIVERSIDAD NACIONAL DE INGENIERIA

FACULTAD DE INGENIERÍA CIVIL

“PROGRAMACION DIGITAL – FUNCIONES - PUNTEROS”

EXPOSITOR:
ING. YELTSIN LUIS VALERO CAMARENA

EMAIL:
ylvaleroc@gmail.com

1
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

1. PASO DE PARÁMETROS

• Parámetros escalares: paso por valor, aunque modifiques el valor de un


parámetro escalar en una función o procedimiento, el valor de la variable
pasada como argumento permanece inalterado. La función bits del siguiente
programa, por ejemplo, modifica en su cuerpo el valor de su parámetro num:

2
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

1. PASO DE PARÁMETROS

• Organización de memoria, cada función activada se representa en la pila


mediante un registro de activación o trama de activación. Se trata de una
zona de memoria en la que se almacenan las variables locales y parámetros
junto a otra información, como el punto desde el que se llamo a la función.

3
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

1. PASO DE PARÁMETROS

• Organización de memoria,

4
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

2. VECTORES DE LONGITUD VARIABLE

• Hemos visto que los


vectores han de tener talla
conocida en tiempo de
compilación. Es hora de
analizar esta afirmación.
Los vectores locales a una
función pueden determinar
su talla en tiempo de
ejecución. Por ejemplo:

5
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

3. PARAMETROS VECTORIALES: PASO POR REFERENCIA

• Se observa que el
parámetro a es un vector
de enteros: añadiendo un
corchetes a su
identificador. En la línea
23 pasamos a incrementa
el vector v.
• Cuando se pasa un
parámetro vectorial a una
función no se efectúa una
copia de su contenido en
la pila; solo se copia la
referencia a la posición de
memoria en la que
empieza el vector. Esto se
debe a eficiencia.

6
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

3. PARAMETROS VECTORIALES: PASO POR REFERENCIA

• Y ¿Qué ocurre cuando el


vector es una variable
global?

7
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

4. Ejercicios

• Elabore un programa que utilice la función ordena que ordene un


vector de enteros.
• Elabore un programa que devuelva el máximo valor de un vector de
enteros.

8
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

5. Parámetros escalares, paso por referencia mediante punteros.

• C permite modificar el valor de variables escalares en una función


recurriendo a sus direcciones de memoria. Analicemos el siguiente
ejemplo:

9
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

5. Parámetros escalares, paso por referencia mediante punteros.

• Efectivamente, b ha modificado su valor tras la llamada a incrementa.


Observa la forma en que se ha declarado el único parámetro de incrementa:
int *a. O sea, a es del tipo int *. Un tipo de la forma ((tipo*)) significa
((puntero a valor de tipo tipo)). Tenemos, por tanto, que a es un ((puntero a
entero)). No le pasamos a la función el valor de un entero, sino el valor de la
dirección de memoria en la que se encuentra un entero.

10
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

5. Parámetros escalares, paso por referencia mediante punteros.

Se observa ahora en como pasamos el argumento en la llamada a incrementa de


la línea 14, que es de la forma incrementa (&b). Estamos pasando la dirección de
memoria de b (que es lo que proporciona el operador &) y no el valor de b. Todo
correcto, ya que hemos dicho que la función espera la dirección de memoria de
un entero. Al principio de la ejecución de incrementa tendremos esta situación:

El asterisco que precede a a no indica ((multiplicación)). Ese asterisco es un


operador unario que hace justo lo contrario que el operador &: dada una
dirección de memoria, accede al valor de la variable apuntada. (Recuerda que el
operador & obtenía la dirección de memoria de una variable.)

11
UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE INGENIERIA CIVIL

6. Paso de matrices

12

También podría gustarte