Pruebas de escritorio

Los programas siguientes son presentados sin el texto común #include ..., int main(void){... return 0;}.

Para cada uno de esos programas, armar una tabla donde cada línea corresponde a la sentencia ejecutada columna

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 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;
}

3 Programas con bucles while

Consultar el apunte "Aprenda C" acerca del bucle 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;
}

4 Programas con bucles for

/* 4.1 */
int i = 0;
int b = 1;
int a = 4;
for(i = b; i < a; i = i + 1){
  b = b + 1;
}
/* 4.2 */
int i = 0;
int a = 1;
for(i = 0; i < 10; i = i + a){
   a = a + 1;
}

5 Salida de programas

Acá no se trata de hacer pruebas de escritorio.

En cambio, la consigna es: solo mirando estos programas, decir cuál va a ser su salida cuando los ejecutamos.

/* 5.1 */
int i = 0;
int a = 20;
while(i < a){
  i = i + 1;
  a = a - 2;
  printf("%d < %d ?", i, a);
}
/* 5.2 */
int a = 0;
int b = 0;
while(a <= 10){
  b = 10 - a;
  if (b % 3 == 0){
    printf("%d", b);
  }
  a = a + 1;
}
/* 5.3 */
int i = 0;
int j = 0;
int a = 0;
for(i = 1; i <= 20; i = i + 1){
    for(j = 1; j <= 30 ; j = j + 1){
        a = a + 1;
    }
}
printf("%d %d %d", i, j, a);

Entrega para la próxima semana

Mandar una prueba de escritorio del 3.3, 3.5, o 4.2. (la que les guste más) (como archivo de texto o como foto de una hoja (pueden usar la app CamScanner))

Entrega facultativa

Observamos que el producto de dos enteros es una suma repetida:

a * b = a + a + a + ... (b veces)

Escribir un programa producto.c que declare dos variables a y b, inicializadas con valores arbitrarios, y que calcule el producto a por b con sumas repetidas. Al final, tiene que mostrar el producto en la terminal.

Este programa debe seguir correcto si modificamos los valores iniciales de a y b, sin modificar ninguna otra línea.