Professional Documents
Culture Documents
Funciones
Desde la perspectiva de las matemticas, es una operacin que toma uno o ms valores llamados argumentos y regresa un resultado:
f(x)=x
f= nombre de la funcin x= argumento. Al argumento x no se le asocia un valor especfico, entonces x es un parmetro formal empleado para definir la funcin
Alfonso Martnez Martnez: Programacin Avanzada & Estructura de Datos
Funciones
Para evaluar a f debemos darle un valor real o actual a x, por ejemplo x=3 o x=5: f(3)=9 o f(5)=25 Una funcin puede tener varios argumentos: f(x,y) o f(x, y, z)
Funciones: en pseudocdigo
tipo_resultado funcion nombre_funcion (lista_parametros) declaraciones_locales; comienza sentencias; ; ; regresa valor o expresin; termina Notas: tipo_resultado= ent flot car alumno, etc. lista_parametros= ent a, ref flot b, etc. declaraciones_locales= ent temp;
Alfonso Martnez Martnez: Programacin Avanzada & Estructura de Datos
Parmetros formales
Funciones: f(x)=x
Definicin:
Parmetro formal
Invocacin:
ent funcion principal() ent y; comienza y = 40 + eleva_al_cuadrado(5); escribe(y); termina
Procedimientos
Es un sub-programa que ejecuta un proceso especfico y cuya invocacin no se puede incluir en una expresin Las funciones regresan un solo valor, los procedimientos regresan 0, 1 n valores en una lista de parmetros
Procedimientos: en pseudocdigo
proc nombre_procedimiento (lista_parametros) declaraciones_locales; comienza sentencias; ; ; termina Notas: lista_parametros= ent a, ref flot b, etc. declaraciones_locales= ent temp;
Parmetros formales
Procedimientos: ejemplo
Definicin:
proc mostrar_mensaje (car msg[]) comienza escribir (msg); termina
Parmetro formal
Invocacin:
ent funcion principal() ent y;
Parmetros
Los parmetros en funciones y procedimientos pueden ser:
Entradas: paso de parmetros por valor Salidas: paso de parmetros por referencia Entradas / salidas: paso de parmetros por referencia
Paso de parmetros
Por valor: los parmetros formales reciben directamente el valor del argumento, sin importar si se trata del resultado de una expresin
proc x (ent a, ent b); /*declaracin prototipo*/ ent func principal() ent m,n; comienza m=5; n=10; x(n, m+5); ; termina
Invocacin: 5 Declaracin:
x(n, m+5) 15
x(ent a, ent b)
10
Paso de parmetros
Por valor: mecanismo
ent func principal() ent m,n; comienza m=5; n=10; x(n, m+5); ; termina n m 10 5 Memoria del programa
Alfonso Martnez Martnez: Programacin Avanzada & Estructura de Datos
proc x (ent a, ent b) ent c; comienza c=a*b; escribir(c); termina 100 10 10 Pila c b a
11
Paso de parmetros
Por referencia: los parmetros formales reciben la referencia de una variable enviada como argumento
ent func principal() ent m, n; comienza m=5; n=10; intercambia(dir n, dir m); ; termina proc intercambia (ref ent a, ref ent b) ent temp; comienza temp=dref a; dref a= dref b; dref b= temp; termina
12
mbito de variables
Variable local: variable declarada localmente dentro del programa principal o dentro de algn sub-programa (funcin o procedimiento) y su mbito es nicamente dentro de ste Variable global: variable declarada fuera del programa principal y de sus sub-programas y pueden ser utilizadas por estos. Estas variables ocupan espacios diferentes en la memoria utilizada por un programa
Alfonso Martnez Martnez: Programacin Avanzada & Estructura de Datos
13
Apuntadores
Variables que guardan direcciones de algun tipo de dato cero (NULO) Para habilitar el uso de apuntadores en un lenguaje de programacin, se requiere
Mecanismo para declarar apuntadores:
ent ref a; dref a= 5; a= dir i; int * a; *a= 5; a= &i;
14
Apuntadores
Una variable apuntador despus de ser declarada de un tipo especfico, no puede apuntar a un valor de tipo diferente durante un programa
ent ref u; /* u es una variable de tipo apuntador de enteros que no podr apuntar a datos de otro tipo */
15
Apuntadores: ejemplos
car ref p, c; p= dir c;
p c
16
Apuntadores: ejercicio
Obtener los valores finales de x, y e ip.
Pseudocdigo: ent ref ip; ent x,y; x=1; y=2; ip= dir x; y=dref ip; dref ip=0; ip=dir z[0]; Lenguaje 'C' int *ip; int x,y; x=1; y=2; ip= &x; y= *ip; *ip=0; ip= &z[0];
17
Memoria dinmica
Memoria utilizada en tiempo de ejecucin
Memoria demandada de acuerdo a las necesidades de un programa durante su ejecucin Se solicita al Sistema Operativo quien la provee si existe un segmento que pueda ofrecer de acuerdo a la peticin
Mecanismos requeridos:
Solicitud Manejo (a travs de apuntadores) Liberacin
Alfonso Martnez Martnez: Programacin Avanzada & Estructura de Datos
18
Lenguaje 'C'
int * a; a=malloc(sizeof(int)*50);
Liberar memoria
Pseudocdigo
liberar_mem(a);
Lenguaje 'C'
free(a);
Alfonso Martnez Martnez: Programacin Avanzada & Estructura de Datos
19
20
pa 4 0
pa=&a[0]; x=*(pa+i); x=pa[i];
pa+1 pa+2
x 4 5 6 7 8 9
4 a
Expresiones equivalentes:
pa+1 significa que el apuntador se mover al siguiente entero, no al siguiente byte pa+i apuntar al i-simo elemento a partir de la de la direccin del elemento asignado a pa (en el ejemplo, a[0])
Alfonso Martnez Martnez: Programacin Avanzada & Estructura de Datos
21
22
Puede observarse que mientras a es un arreglo en el principal, a es un apuntador en la funcin suma_arreglo() y en su cuerpo, se manipula como arreglo, Programacin Avanzada & Estructura de Datos pero se puede manipular como apuntador Alfonso Martnez Martnez:
23
24