Programacion funcional con recursividad
Enviado por nueva • 25 de Septiembre de 2011 • 8.449 Palabras (34 Páginas) • 478 Visitas
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
...