Práctico 6: bucles, variables de acumulacion, pruebas de escritorio

1. Bucles y variables de acumulación

1.1 Variables de acumulación y valores aleatorios

¿Qué proporción de todos los enteros naturales son divisibles por 7?

Ya lo sabemos, son 1 de cada 7. Pero podemos comprobarlo con un programa que genera valores aleatorios y comprueba, para cada uno, si cumple con alguna condicion (acá, ser divisibles por 7).

Hacer un programa buclealea.c que hace esto.

Antes del bucle, inicializamos dos variables que nos van a servir de contadores: si y no.:

int si = 0;
int no = 0:

En el bucle, que se deberá repetir 1000 veces, cada vez que el numero aleatorio cumple con la condicion, incrementamos si, sino, incrementamos no.

Despues del bucle, usar la sentencia siguiente para mostrar el porcentaje de números divisibles por 7:

printf("proporcion: %d%%\n", (100*si) / (si+no));

1.2 Calcular sumas y productos de series

Hacer los ejercicios siguientes en jslinux:

2. Pruebas de escritorio

Los programas siguientes son presentados sin el texto común main(){...}.

Para cada uno de esos programas, armar una tabla donde cada línea corresponde a la sentencia ejecutadia, y cada columna a cada variable que aparece en el programa.

2.1 Programas secuenciales

/* 1.1 */
int a = 1;
a = 5;
a = a * 2 ;
a = a + 1 ;
/* 1.2 */
int a = 10;
int b = 1;
b = 2;
b = a + b;
a = a - 1 ;
/* 1.3 */
int a = 10;
int b = 4;
b = a % b;
b = a % b;
a = a * b;
/* 1.4 */
int a = 17;
int b = 11;
int c = 7
a = a - b;
b = b - c;
c = a * b;

2.2 Programas con condiciones if, if-else

/* 2.1 */
int a = 1;
if (a > 10){
    a = a - 15;
} else {
    a = a + 10;
} 
/* 2.2 */
int a = 10;
int b = 1;
int c = 0;
if (a <= 10 && b >= 1){
    c = c + 1;
}
if (a < 10){
    c = c + 1;
}
if (b > 1){
    c = c + 1;
} 
/* 2.3 */
int a = 99;
int c = 0;
if (a >= 80){
    c = c + 1;
} else if (a >= 90) {
    c = c + 1;
} else if (a >= 95) {
    c = c + 1;
}
/* 2.4 */
int b = 9;
int c = 0;
if (b > 10){
    c = 1;
} else if (b > 5){
    c = 2;
} else {
    c = 3;
}

2.3 Programas con bucles while

/* 3.1 */
int i = 0;
int a = 0;
while (i < 5){
    i = i + 2;
}
/* 3.2 */
int i = 0;
int a = 0;
while (i < 4){
    if (i % 2 == 0)
        a = a + 1;
    else
        a = a - 1;
    i = i + 1;
}
/* 3.3 */
int i = 5;
int a = 0;
while (i < 4){
    if (i % 2 == 0)
        a = a + 1;
    else
        a = a - 1;
}
/* 3.4 */
int i = 0;
int a = 0;
while (i < 99){
    a = a + i;
    i = 100;
}
/* 3.5 */
int i = 1;
int a = 0;
while (i < 5){
    a = a + i;
    i = a;
}