Píldora TAI CXXVIII; Consejos de Examen: Java y C para Programadores

Chuleta visual (y práctica) para tu examen: formato de salida en Java, precedencia de operadores (C y Java), palabras reservadas y bucles tipo test

Pensada para estudiar rápido: tablas compactas, ejemplos mínimos y ejercicios con solución paso a paso.


1) Salida formateada en Java (System.out.printf / String.format)

Sintaxis general:
%[flags][ancho][.precision]conversion

ConversiónQué imprimeEjemplos útiles
%denteros%5d (ancho 5), %+d (signo)
%fcoma flotante%.2f (2 decimales), %10.3f (ancho 10, 3 dec.)
%enotación científica%.1e
%gelige entre %f o %e%.4g
%scadenas%-14s (alineado a la izquierda)
%bbooleanos%b (true/false)
%nsalto de línea independiente de SO

Flags visuales:

  • - alinear a la izquierda, 0 relleno con ceros, , separador de miles, + muestra el signo.

Mini-muestrario:

System.out.printf("|%6d|%06d|%n", 512, 512);      // |   512|000512|
System.out.printf("|%-10s|%n", "Hola"); // |Hola |
System.out.printf("|%,.2f|%n", 1595.168); // |1,595.17| (según locale)
System.out.printf("|%.3e|%n", Math.PI); // |3.142e+00|
System.out.printf("%b %n", null == null); // true

Valores por defecto cuando imprimes null/false/0:
0 (numéricos), \u0000 (char), false (boolean), null (objetos).


2) Precedencia y asociatividad de operadores

2.1 C (de mayor a menor)

GrupoOperadoresAsoc.
Postfijo() [] -> . x++ x--izq→der
Unario+ - ++x --x & * ~ ! (type) sizeofder→izq
Multiplicativos* / %izq→der
Aditivos+ -izq→der
Desplazamiento<< >>izq→der
Relacionales< <= > >=izq→der
Igualdad== !=izq→der
Bit a bit`& ^`
Lógicos`&&
Condicional?:der→izq
Asignación`= += -= *= /= %= <<= >>= &= ^==`
Coma,izq→der

Tips rápidos (C):

  • && y || cortocircuitan.
  • &, |, ^ son bit a bit (no cortocircuitan).
  • Cuidado con ++i (pre) vs i++ (post) en expresiones.

2.2 Java (de mayor a menor)

NivelOperadores (clave)Asoc.
16[] . ()izq→der
15x++ x--
14++x --x +x -x ~ ! (cast)der→izq
13* / %izq→der
12+ - (y concatenación de String)izq→der
11<< >> >>>izq→der
10< <= > >= instanceof
9== !=izq→der
8& (bit a bit / booleano no corto)izq→der
7^ (XOR)izq→der
6`` (bit a bit / booleano no corto)
5&& (lógico, cortocircuito)izq→der
4`
3?: (ternario)der→izq
2= += -= … >>>=der→izq
1,izq→der

Gotchas (Java):

  • + con cadenas convierte a String: 1 + 2 + "x" = "3x" pero "x" + 1 + 2 = "x12".
  • & y | en booleanos evaluan ambos lados; && y || cortocircuitan.

3) Palabras reservadas de Java (recordatorio visual)

abstract, assert, boolean, break, byte, case, catch, char, class, const*, continue, default, do, double, else, enum, extends, final, finally, float, for, goto*, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
* const y goto están reservadas pero no se usan.


4) Ejercicios tipo test explicados

4.1 Java – crecimiento de una cadena

Código:

String a = new String();
for (int i = 100; i >= 27; i--) { // 100..27 → 74 vueltas
for (int j = 2; j < 5; j++) { // 2,3,4 → 3 vueltas
a = a + "aa"; // +2 por vuelta
}
}
System.out.println(a.length());

Cálculo: 74 (externo) × 3 (interno) × 2 = 444longitud final = 444.

Nota pedagógica: si el segundo for fuera j <= 5, serían 4 vueltas y daría 74×4×2 = 592.


4.2 C – asignaciones y printf

 x=5, y=3;
y += x; // y = 8
printf("X=%d Y=%d\n", x, y);

Salida: X=5 Y=8

Truco recordatorio: el primer %d casa con x, el segundo con y; += suma y asigna.


4.3 Java – cuántas veces se ejecuta un for

int c = 0;
for (int i = 1; i <= 120; ++i) c++;
System.out.println(c);

i recorre 1..120 (ambos incluidos) → 120 iteraciones.
Si fuera i < 120 serían 119, y con i <= 120 empezando en 0 serían 121.
Regla de oro: Vueltas = (fin − inicio) + (incluye?1:0).


4.4 Java – evaluación con cortocircuito

int x=2, e=2;
int v2 = 2;
int r = (x==2) ? ( (e++ > 2) ? 1 : 3 ) : 2;
System.out.println(x + " " + e + " " + r);
  • Se cumple x==2 ⇒ evalúa solo el primer brazo.
  • Se evalúa e++ > 2 → compara con 2 (da false), luego e pasa a 3.
  • Toma la parte false del ternario interior ⇒ r=3.
    Salida: 2 3 3.

5) Chuleta imprimible (mini-poster)

JAVA printf:  %[flags][ancho][.precision]conv
d=int, f=float, e=cient., s=String, b=bool, n=nueva línea
flags: - (izq) 0 (ceros) , (miles) + (signo)

C PRECEDENCIA (alto→bajo): ()[]-> . x++ | unarios + - ~ ! (cast)
* / % | + - | << >> | < <= > >= | == !=
& ^ | | && || | ?: | = += … | ,

JAVA PRECEDENCIA (alto→bajo): [] . () | x++ | unarios ++ -- ! ~ (cast)
* / % | + - (concat) | << >> >>> | < <= > >= instanceof
== != | & | ^ | | | && || | ?: | asignaciones

CORTOCIRCUITO: && y || (evaluan lo mínimo)
BIT A BIT: & | ^ << >> (no cortocircuitan)

6) Autoevaluación rápida

  1. ¿Qué imprime?
System.out.printf("|%7.2f|%n", 9.0/7);

a) | 1.2857| b) | 1.29| c) |1.29|
Resp: b) (ancho 7, 2 decimales).

  1. En C, ¿cuál se evalúa antes? a + b * c
    Resp: b * c (multiplicativo antes que aditivo).
  2. En Java, valor de s:
String s = 1 + 2 + "x" + 3 + 4;

Resp: "3x34".

  1. ¿Cuántas iteraciones?
for(int i=10; i>3; i-=2) { /*...*/ }

Resp: i=10,8,6,44.

  1. ¿Cuál es palabra reservada válida en Java?
    a) native b) include c) friend
    Resp: a) native.

7) Consejos de examen (express)

  • Marca paréntesis si dudas de precedencia: clarifica y evitas sorpresas.
  • Cuenta iteraciones con la fórmula (fin − inicio)/paso y ajusta inclusión.
  • En printf, prueba mental con 1–2 ejemplos (ancho/precisión) antes de elegir.
  • Diferencia lógico (&&, ||) de bit a bit (&, |, ^).
  • En Java, + con String cambia todo a texto desde ese punto.

Respuesta

  1. […] Píldora TAI CXXVIII; Consejos de Examen: Java y C para Programadores – Anacrolibrum […]

    Me gusta

Deja un comentario