Píldora TAI CXXVII; Comparativa de Sintaxis: C, C++ y Java

Guía visual y didáctica: C · C++ · Java + Diagramas de flujo y bucles

Entrada pensada para estudiar rápido: compara sintaxis entre lenguajes, incluye reglas de diagramas de flujo, ejemplos con salida y mini-retos al final. Copia/pega los bloques de código tal cual.


📚 Lo que vas a aprender

  • Tipos y salida formateada en C, C++ y Java.
  • Reglas claras para diagramas de flujo (organigramas y ordinogramas).
  • Bucles y el clásico dilema ++i vs i++, con ejemplos resueltos.
  • Errores típicos de examen… y cómo evitarlos.

1) Lenguaje C — “cheat-sheet” esencial

Tipos básicos frecuentes

  • char, int, float, double
  • Literales: decimal (150), octal (0226), hexadecimal (0x96)

printf() y formatos útiles

printf("char: %c\n", ch);            // A
printf("string: %s\n", str); // "fresh2refresh.com"
printf("int: %d\n", no); // 150
printf("float: %.2f\n", flt); // 10.23 (2 decimales)
printf("double: %.5lf\n", dbl); // 20.12346
printf("octal: %o hex: %x HEX: %X\n", no, no, no); // 226 96 96

Secuencias de escape más usadas

  • \n nueva línea, \t tab, \b retroceso, \v tab vertical, \\ barra invertida, \'/\" comillas.

Ejemplo completo (compila y ejecuta)

#include <stdio.h>
int main(void){
char ch='A'; char str[]="fresh2refresh.com";
int no=150; float flt=10.234; double dbl=20.123456;
printf("char=%c\nstring=%s\nint=%d\nfloat=%.3f\ndouble=%.5lf\n", ch, str, no, flt, dbl);
printf("octal=%o hex=%x\n", no, no);
return 0;
}

2) C++ — E/S moderna y detalles finos

Flujos estándar

  • Entrada: std::cin
  • Salida: std::cout
  • Errores: std::cerr
  • Registro: std::clog

std::endl imprime nueva línea y además vacía el búfer (flush).
El operador de ámbito es :: (útil para distinguir variables globales/espacio de nombres).

Lectura segura de líneas

#include <iostream>
#include <string>
int main(){
std::string name;
std::cout << "What's your name? ";
std::getline(std::cin, name);
std::cout << "Hello, " << name << std::endl;
}

Lectura de un solo carácter

char c = std::cin.get();   // o std::getchar() en C

3) Java — impresión y formato

Salida

System.out.print("Hola");     // sin salto
System.out.println(" mundo"); // con salto
System.out.printf("Pi≈%.3f%n", Math.PI); // formato tipo C

Marcadores frecuentes en printf

  • %d enteros, %f reales (%.2f dos decimales), %s String, %n salto de línea independiente del SO.
  • Flags: + signo, , separador de miles según locale, 0 rellena con ceros, ancho mínimo: %8d.

Ejemplo

public class Main {
public static void main(String[] args) {
int q = 7; double p = 2.5;
System.out.printf("Total: %d uds x %.2f = %.2f%n", q, p, q*p);
}
}

4) Diagramas de flujo — reglas y símbolos

Tipos

  • Organigramas: flujo de sistemas/configuración (fase de diseño).
  • Ordinogramas: flujo de programa (algoritmo paso a paso, también diseño detallado).

Reglas de construcción (claves de examen)

  • Conexión mediante líneas de flujo con flechas.
  • Proceso puede tener varias entradas y varias salidas.
  • Decisión (rombo) tiene dos salidas: sí/verdadero y no/falso (si hay múltiple, usa rombo múltiple o encadena).
  • Sitúa soportes de entrada antes del proceso y soportes de salida después.
  • Evita cruces innecesarios: usa conectores (círculos con etiqueta).

Simbología esencial (texto)

  • Inicio/Fin: óvalo
  • Proceso: rectángulo
  • Entrada/Salida: paralelogramo
  • Decisión: rombo
  • Conector: círculo
  • Bucle definido: rombo + contador / estructura con retorno

(Si quieres, te genero un póster A4 con los símbolos para imprimir.)


5) Bucles y ++i vs i++ (C/C++/Java)

Comparativa rápida (misma idea en los 3)

EstructuraC / C++ / Java (idéntica sintaxis)
forfor (inicialización; condición; actualización) { ... }
whilewhile (condición) { ... }
do...whiledo { ... } while (condición); (se ejecuta al menos una vez)

Preincremento vs postincremento

  • ++i incrementa y luego devuelve el valor nuevo.
  • i++ devuelve el valor actual y después incrementa.

Ejemplos aclaratorios

1) for (int i=0; i<=10; ++i)

  • El ++i ocurre después de evaluar i<=10 y al final de cada iteración.
  • Recorre i = 0,1,2,...,10 (11 veces). El prefijo no cambia el número de iteraciones.

2) while (++i < 10) (arrancando i=0)

  • Primera comparación usa i=1. Se ejecuta con i=1..9 (9 veces).

3) while (i++ < 10) (arrancando i=0)

  • Compara con i antes de subirlo. Se ejecuta con i=0..9 y al salir i==11.
int i=0;
while (i++ < 10) { /* cuerpo */ }
printf("%d\n", i); // 11

4) printf("%d\n", ++i); vs printf("%d\n", i++);

  • Con i=7: ++i imprime 8 y deja i=8; i++ imprime 7 y deja i=8.

6) Ejercicios tipo test (con solución)

A. ¿Qué imprime?

int a=10, b=5;
printf("a=%d b=%d\n", a, b);
printf("a=%d b=%d\n", ++a, b+=a); // línea clave
printf("a=%d b=%d\n", a, b);

Solución paso a paso

  • Antes: a=10,b=5
  • ++aa=11 (se imprime 11)
  • b+=ab=5+11=16
  • Después: a=11,b=16

B. Salida del bucle

int a=0;
do { printf("%d ", a); } while (++a <= 3);

Salida: 0 1 2 3


C. Trampa clásica

for (int i=1; i++<=2; ) printf("%d ", i);
  • Iteración 1: compara i++<=2 con i=1true, luego i=2 imprime 2
  • Iteración 2: compara i++<=2 con i=2true, luego i=3 imprime 3
  • Iteración 3: compara i++<=2 con i=3false
    Salida: 2 3

7) Errores habituales (y cómo evitarlos)

  • Confundir std::endl con “sólo salto de línea”: también hace flush. Si no necesitas vaciar, usa '\n'.
  • En C, olvidar lf en double: usa %lf en scanf y %.nf/%.nlf en printf (ambos aceptan f para impresión, pero en lectura scanf diferencia).
  • Desbordes por formatos: imprimir long long con %lld, no %d.
  • En Java, usar \n en vez de %n dentro de printf: %n es más portable entre SO.

8) Mini-prácticas rápidas

  1. Escribe un programa en C que lea un int y lo muestre en decimal, octal y hexadecimal.
  2. En C++, pide un nombre con std::getline y salúdalo; luego pregunta edad con std::cin (nota: mezcla de getline + cin requiere limpiar el newline con std::cin.ignore()).
  3. En Java, imprime una tabla con printf de 3 columnas: Producto, Uds, Importe con 2 decimales y miles.

Si te interesa, te preparo las soluciones completas y una hoja de ejercicios descargable.


9) Plantillas listas para copiar

C – conversión y formatos

#include <stdio.h>
int main(void){
int x; scanf("%d", &x);
printf("dec=%d oct=%o hex=%x HEX=%X\n", x, x, x, x);
return 0;
}

C++ – lectura mixta segura

#include <iostream>
#include <string>
int main(){
std::string name; int age;
std::cout<<"Nombre: "; std::getline(std::cin,name);
std::cout<<"Edad: "; std::cin>>age;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout<<"Hola "<<name<<", tienes "<<age<<" años.\n";
}

Java – tabla formateada

public class Tabla {
public static void main(String[] args) {
System.out.printf("%-12s %5s %10s%n", "Producto", "Uds", "Importe");
System.out.printf("%-12s %5d %,10.2f%n", "Teclado", 3, 59.9);
System.out.printf("%-12s %5d %,10.2f%n", "Ratón", 5, 19.95);
}
}

10) Cierre

  • Recuerda: en bucles, el prefijo/postfijo no cambia cuándo se evalúa la condición, sino qué valor usa la comparación o la expresión.
  • Diagramas: piensa primero el flujo con símbolos y dos salidas en decisiones; programa después.

Respuesta

  1. […] Píldora TAI CXXVII; Comparativa de Sintaxis: C, C++ y Java – Anacrolibrum […]

    Me gusta

Deja un comentario