Saltar al contenido
EnglishEspacio →

Convierte pseudocódigo a C

Codoritmo traduce tu algoritmo a un programa en C listo para compilar: deduce si cada variable es int, double, bool o texto, convierte Escribir en printf y Leer en scanf, y declara tus funciones antes de main. También puede generar C++, con cout y cin.

Abrir este ejemplo y ver su C

Abre el programa en Codoritmo; elige C en Ver › Traducir a.

El mismo algoritmo en pseudocódigo y en C

El ejemplo «MCD y MCM», con una función que usa Mientras y MOD, y el C que genera Codoritmo para él, sin retoques.

Pseudocódigo

MCDyMCM.psc · 25 líneas
Funcion resultado <- MCD(a, b)    Definir resultado, resto Como Entero    // Algoritmo de Euclides    Mientras b <> 0 Hacer        resto <- a MOD b        a <- b        b <- resto    FinMientras    resultado <- aFinFuncionAlgoritmo MCDyMCM    Definir a, b, divisor Como Entero    Escribir "Primer número:"    Leer a    Escribir "Segundo número:"    Leer b    Si a <= 0 O b <= 0 Entonces        Escribir "Usa números enteros positivos."    SiNo        divisor <- MCD(a, b)        Escribir "MCD(", a, ", ", b, ") = ", divisor        Escribir "MCM(", a, ", ", b, ") = ", Trunc(a * b / divisor)    FinSiFinAlgoritmo

C generado por Codoritmo

MCDyMCM.c · 49 líneas
/* Este código fue generado por Codoritmo a partir del pseudocódigo.   Puede que no sea completamente correcto: revíselo antes de usarlo. */#include<stdio.h>/* Funciones auxiliares, definidas al final */int truncar(double x);/* Declaraciones adelantadas de los subprocesos */int mcd(int a, int b);int main() {    int a = 0;    int b = 0;    int divisor = 0;    printf("Primer número:\n");    scanf("%d", &a);    printf("Segundo número:\n");    scanf("%d", &b);    if (a<=0 || b<=0) {        printf("Usa números enteros positivos.\n");    } else {        divisor = mcd(a, b);        printf("MCD(%i, %i) = %i\n", a, b, divisor);        printf("MCM(%i, %i) = %i\n", a, b, truncar((double)(a*b)/divisor));    }    return 0;}int mcd(int a, int b) {    int resto = 0;    int resultado = 0;    while (b!=0) {        resto = a%b;        a = b;        b = resto;    }    resultado = a;    return resultado;}/* Como trunc() de PSeInt: un valor a menos de 1e-11 del entero siguiente *//* se trunca a ese entero, así trunc(100*0.57) da 57 y no 56. */int truncar(double x) {    int t = (int)x;    if (t+1-x<1e-11) return t+1;    if (t-1-x>-1e-11) return t-1;    return t;}

El código es exactamente el que genera Codoritmo para este programa, incluido el comentario del inicio, que siempre sale en español.

Cómo traducir tu pseudocódigo a C

  1. Escribe o abre tu algoritmo

    Tiene que estar sin errores de sintaxis; el panel Problemas te muestra cuáles hay.

  2. Elige C o C++

    En Ver › Traducir a, elige C o C++. La pestaña de código del panel lateral muestra la traducción.

  3. Compara y copia

    La traducción cambia mientras escribes. Cópiala o descárgala como .c o .cpp con Archivo › Exportar como.

  4. Compílala

    Con gcc: gcc programa.c -o programa -lm y después ./programa. El -lm hace falta cuando el código usa math.h.

Abrir este ejemplo y ver su C

Abre el programa en Codoritmo; elige C en Ver › Traducir a.

Lo que cambia al pasar a C

C no tiene arreglos que se dimensionen con un tamaño que se conoce al ejecutar, como Dimension datos[n]. En ese caso el código usa un tamaño máximo fijo, ARREGLO_MAX (100), y lo explica en un comentario.

Los textos son arreglos de char de 256 caracteres (MAX_STRLEN), incluido el carácter final.

Los arreglos de C empiezan en 0: datos[i] se traduce como datos[i-1] cuando tu perfil usa arreglos desde 1.

Aleatorio usa rand(). Si quieres números distintos en cada ejecución, agrega srand(time(NULL)); al inicio de main e incluye time.h.

Cómo se traduce cada instrucción

Cada fila es una instrucción de PSeInt traducida por Codoritmo dentro de un programa con n y i enteros, x real, nombre de texto y un arreglo datos[5]. El resultado se genera al construir esta página.

InstrucciónPSeIntC
Escribir
Escribir "Hola, ", nombre
printf("Hola, %s\n", nombre);
Escribir sin salto de línea
Escribir Sin Saltar "Total: "
printf("Total: ");
Leer un entero
Leer n
scanf("%d", &n);
Leer un real
Leer x
scanf("%lf", &x);
Número al azar
n <- Aleatorio(1, 6)
n = (1+rand()%(6-1+1));
Si … SiNo
Si n MOD 2 = 0 Entonces
    Escribir "par"
SiNo
    Escribir "impar"
FinSi
if (n%2==0) {
    printf("par\n");
} else {
    printf("impar\n");
}
Segun
Segun n Hacer
    1: Escribir "uno"
    De Otro Modo: Escribir "otro"
FinSegun
switch (n) {
case 1:
    printf("uno\n");
    break;
default:
    printf("otro\n");
}
Mientras
Mientras n > 0 Hacer
    n <- n - 1
FinMientras
while (n>0) {
    n = n-1;
}
Repetir … Hasta Que
Repetir
    Leer n
Hasta Que n > 0
do {
    scanf("%d", &n);
} while (n<=0);
Para
Para i <- 1 Hasta 10 Hacer
    Escribir i
FinPara
for (i=1; i<=10; ++i) {
    printf("%i\n", i);
}
Elemento de un arreglo
datos[1] <- n
datos[0] = n;

Codoritmo y PSeInt de escritorio

PSeInt de escritorio también exporta a C. Estas son las diferencias.

Lo que suma Codoritmo

  • Ves la traducción al lado del pseudocódigo y cambia mientras escribes.
  • Exporta también a C#, PHP, Pascal, Visual Basic, QBasic, MatLab y HTML, como PSeInt.
  • Genera C y también C++.

Lo que PSeInt de escritorio hace y Codoritmo todavía no

  • Su exportación tiene muchos años de uso en aulas; la de Codoritmo es más reciente, así que revisa el código antes de entregarlo.

Codoritmo es un proyecto independiente, inspirado en PSeInt y compatible con su sintaxis y sus perfiles de instituciones. No es PSeInt ni está afiliado a él. Sitio oficial de PSeInt

Preguntas frecuentes

¿Qué compilador uso?

Cualquiera de C estándar: gcc, clang o el que trae Dev-C++ o Code::Blocks.

¿C o C++?

Elige el que pida tu curso. La versión en C usa printf y scanf; la de C++ usa cout, cin y string.

¿Se traducen los subprocesos y las funciones?

Sí. Cada SubProceso o Funcion se convierte en una función de C, declarada antes de main para que se pueda usar en cualquier orden.

¿Por qué aparece ARREGLO_MAX?

Porque tu algoritmo dimensiona un arreglo con una variable. C necesita conocer el tamaño al compilar, así que se reserva un máximo de 100 elementos. Si necesitas más, cambia el número en el #define.

Programas resueltos, cada uno con su código, su diagrama y una ejecución de muestra.

  • MCD y MCM

    Calcula el máximo común divisor y el mínimo común múltiplo.

    Intermedio
  • Tabla de multiplicar

    Muestra la tabla de multiplicar del número que elijas.

    Básico
  • Números primos

    Encuentra todos los números primos hasta un límite.

    Intermedio
  • Sucesión de Fibonacci

    Muestra los primeros términos de la sucesión de Fibonacci.

    Básico

Por concepto:Ejemplos de Entrada y salidaEjemplos de FuncionesEjemplos de Matemáticas

Sigue aprendiendo