ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programacion funcional con recursividad


Enviado por   •  25 de Septiembre de 2011  •  8.449 Palabras (34 Páginas)  •  478 Visitas

Página 1 de 34

ALCANCE DE VARIABLES. LOCALIDAD Y GLOBALIDAD

1.- En el siguiente programa usted debe verificar que las declaraciones de las variables son correctas, luego hacer la corrida del programa con el objeto de visualizar el alcance de las variables.

/* archivo p1 */

int k,x;

void r1(int a, int b)

{

int i;

i=0;

a=2*b;

r3(i);

printf("%d %d,x,y);

}

main()

{

k=1;

x=2;

r1(x,x);

printf("%d",x);

}

/*archivo p2*/

int r2(int i)

{

i=i+3;

if (k <= 2)

printf("%d %d",i,k)

return(i+k+a);

}

void r3(int a)

{

int x,y;

a=i+k;

x=r2(a);

y=r2(2*a);

printf ("%d %d",x,y);

}

2.- A continuación se presentan varios programas ilustrativos de lo que ocurre al combinar las reglas de alcance de variables y pasaje de parámetros en una forma no muy organizada. Su actividad concreta es dar los resultados de la corrida de estos programas atendiendo a dichas reglas. Escriba de nuevo los programas usando reglas de buen estilo de programación

a)

void pr(int x,int y,int *z);

main() {

int a=5,b=8,c=3;

pr(a,b,&c);pr(7,a+b+c,&a); pr(a*b,a /b,&c);

}

void pr(int x,int y,int *z)

{*z=x+y+*z; printf("%d%d%d",x,y,*z);}

b)

void r1(int *a; int b);

int r2(int i,int a,int k);

void r3(int *a, int i, int k);

main()

{

int k=1,x=2;

r1(&x,x,k);

printf(“%d”,x);

}

void r1(int *a, int b,int y)

{

int i=0;

a=2*b;

r3(&i,a,y);

printf(“%d %d”,x,y);

}

c) main() {

int i,j,k;

i=0; j=1; k=2;

p2(0,&k);p2(1,&i); p2(2,&j);

}

void p1(int *i,int j,int k)

{ (*i)++;

printf(“%d %d %d”,*i,j,k);

}

void p2(int h,int *j,int k) {

int i=j;

if (h==0) p1(*j,j,k)

else if (h==1) p1(&i,*j,k);

else p3(&i,*j,k);

printf(“%d %d %d”,i,j,k);

}

void p3(int *i)

{ (*i)++;}

3.- ¿Es este un programa correcto en C?, de no serlo señales los errores e indique posibles correcciones. Si fuera correcto, entonces haga la corrida del programa

main ()

{

int f=2,h=10;

a(f,h,'1'); a(h,f,'2');

}

void int A(int *x,int *y,char s)

{

int b,c;

b=x;

if (G(b) >= 40) c=D(-5);

else c=D(b*2);

}

void D int p

{

f=f+1; p=p+f; printf(f);

}

void G(int *r)

{

int a,f;

a=10; f=a*a;

r=r*a; printf(r);

return(r);

}

APUNTADORES Y ARREGLOS

1.- Conteste cada una de las siguientes preguntas. Cada parte del ejercicio deberá utilizar los resultados de las partes anteriores donde sea apropiado:

a) Declare un arreglo de tipo float, llamado numbers con 10 elementos, e inicialice los elementos a los valores 0.0, 1.1, 2.2,...9.9. Suponga que la constante simbólica SIZE ha sido definida como 10.

b) Declare un apuntador nPtr, que apunte a un objeto de tipo float.

c) Imprima los elementos del arreglo numbers, utilizando notación de subíndice de arreglos. Utilice una estructura for, y suponga que se ha declarado la variable de control entera i.

d) Proporcione dos instrucciones por separado, que asignen la dirección inicial del

...

Descargar como (para miembros actualizados)  txt (54.6 Kb)  
Leer 33 páginas más »
Disponible sólo en Clubensayos.com