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.
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
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) FinSiFinAlgoritmoC generado por Codoritmo
/* 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
Escribe o abre tu algoritmo
Tiene que estar sin errores de sintaxis; el panel Problemas te muestra cuáles hay.
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.
Compara y copia
La traducción cambia mientras escribes. Cópiala o descárgala como .c o .cpp con Archivo › Exportar como.
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.
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ón | PSeInt | C |
|---|---|---|
| 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.
Ejemplos para probar
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.
IntermedioTabla de multiplicar
Muestra la tabla de multiplicar del número que elijas.
BásicoNúmeros primos
Encuentra todos los números primos hasta un límite.
IntermedioSucesió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
Otras herramientas de Codoritmo
- PSeInt onlineEscribe y ejecuta pseudocódigo con la sintaxis de PSeInt desde el navegador.
- Alternativa a PSeIntUna comparación honesta entre Codoritmo y PSeInt de escritorio.
- Diagrama de flujo onlineEl diagrama de flujo de tu algoritmo, generado del código y animado al ejecutar.
- Prueba de escritorioLa tabla con el valor de cada variable en cada paso, llenada mientras el programa corre.
- Pseudocódigo a PythonTu algoritmo traducido a un programa de Python que puedes ejecutar.
- Pseudocódigo a JavaTu algoritmo traducido a una clase de Java con su método main.
- Programar con bloquesArma tu algoritmo con bloques, como en Scratch, y mira el pseudocódigo que escriben.
Sigue aprendiendo
- Biblioteca de ejemplos53 algoritmos resueltos, del «Hola mundo» a los ordenamientos.
- Referencia del lenguajeCada instrucción y función de PSeInt explicada con un ejemplo.
- Perfiles de institucionesLos 463 perfiles de PSeInt y qué reglas cambia cada uno.
- Acerca de CodoritmoQué es el proyecto, quién lo hace y cómo se relaciona con PSeInt.