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
++ivsi++, 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
\nnueva línea,\ttab,\bretroceso,\vtab 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::endlimprime 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
%denteros,%freales (%.2fdos decimales),%sString,%nsalto de línea independiente del SO.- Flags:
+signo,,separador de miles según locale,0rellena 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)
| Estructura | C / C++ / Java (idéntica sintaxis) |
|---|---|
for | for (inicialización; condición; actualización) { ... } |
while | while (condición) { ... } |
do...while | do { ... } while (condición); (se ejecuta al menos una vez) |
Preincremento vs postincremento
++iincrementa 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
++iocurre después de evaluari<=10y 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
iantes de subirlo. Se ejecuta coni=0..9y al saliri==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:++iimprime8y dejai=8;i++imprime7y dejai=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 ++a→a=11(se imprime 11)b+=a→b=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++<=2coni=1→ true, luegoi=2imprime2 - Iteración 2: compara
i++<=2coni=2→ true, luegoi=3imprime3 - Iteración 3: compara
i++<=2coni=3→ false
Salida:2 3
7) Errores habituales (y cómo evitarlos)
- Confundir
std::endlcon “sólo salto de línea”: también hace flush. Si no necesitas vaciar, usa'\n'. - En C, olvidar
lfendouble: usa%lfenscanfy%.nf/%.nlfenprintf(ambos aceptanfpara impresión, pero en lecturascanfdiferencia). - Desbordes por formatos: imprimir
long longcon%lld, no%d. - En Java, usar
\nen vez de%ndentro deprintf:%nes más portable entre SO.
8) Mini-prácticas rápidas
- Escribe un programa en C que lea un
inty lo muestre en decimal, octal y hexadecimal. - En C++, pide un nombre con
std::getliney salúdalo; luego pregunta edad constd::cin(nota: mezcla degetline+cinrequiere limpiar el newline constd::cin.ignore()). - En Java, imprime una tabla con
printfde 3 columnas:Producto,Uds,Importecon 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.


Replica a Píldoras TAI de Anacrolibrum – Anacrolibrum Cancelar la respuesta