Autor Tema: Programando en Lenguaje PseudoCodigo y exportandolo a C/++/Matlab/Python y otros

0 Usuarios y 1 Visitante están viendo este tema.

10 Octubre, 2014, 09:39 pm
Leído 47886 veces

compsystems

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 56
  • País: 00
  • Karma: +0/-0
  • Sexo: Masculino
!Hola!

Hay un software libre y 100% en castellano llamado PSEINT (pseudo interprete), desarrollado por un docente Sur Americano de Argentina, este software permite escribir en Lenguaje pseudo-código (casi que un lenguaje humano) e interpretarlo en una ventana terminal o de texto. PSEINT se encuentra disponible en varias plataformas como WINDOWS, LINUX, y una versión no actualizada para MAC

También tiene una opción para crear diagrama de flujo del código en otras palabras codigo sobre rombos, elipses, cuadrados, etcétera http://es.wikipedia.org/wiki/Diagrama_de_flujo y también en formato http://es.wikipedia.org/wiki/Diagrama_Nassi-Shneiderman 

Pero lo mas importante es que ejecuta sentencia por sentencia o también llamado ejecución paso a paso mostrando en el código fuente la linea que genero la I/0 (salida entrada)

Otra opción importante es que puede exportar a lenguajes como  C, C++, HTML, Java, JAVA SCRIPT, MATLAB, PYTON, PASCAL y otros, ademas se puede contribuir al autor para que exporte a otros lenguajes http://pseint.sourceforge.net/index.php?page=psexport.html

Video



Este software realmente es increíble, si en mis inicios de programación yo hubiera tenido esta herramienta estuviera mas lejos en programación informática, pues la enseñanza de lenguajes de programación debe comenzar en pseudo-lenguaje y no en un lenguaje especifico o profesional

https://www.youtube.com/watch?v=rUQBqR5Cz3Y

Link del proyecto

http://pseint.sourceforge.net/

Veamos unos ejemplos

Ejemplos : Buscar el mayor de una entrada de datos numerica

Código en versión Pseudocode hibrido (lenguaje comunes de programación con lenguaje humano)

Código: [Seleccionar]
Proceso Estricto
 
Definir VAL_MAYOR,ARREGLO,CANT,I Como Enteros;
 
Dimension ARREGLO[100];
Escribir "Ingrese la cantidad de números:";
Leer CANT;
 
Para I<-0 Hasta CANT-1 Hacer
     Escribir "Ingrese un numero:";
     Leer ARREGLO[I];
FinPara
 
VAL_MAYOR<-0;
Para I<-0 Hasta CANT-1 Hacer
     Si ARREGLO[I]>VAL_MAYOR Entonces
         VAL_MAYOR<-ARREGLO[i];
     FinSi
FinPara
 
Si VAL_MAYOR % 2 = 0 Entonces
     Escribir "El mayor es ",VAL_MAYOR," y es par";
Sino
     Escribir "El mayor es ",VAL_MAYOR," y es impar";
FinSi
 
FinProceso

El mismo código anterior pero en versión Pseudocode mas cercano al lenguaje humano

Código: [Seleccionar]
Proceso Flexible
 
 
Escribir "Ingrese la cantidad de numeros:"
Leer CANT
Dimension ARREGLO[CANT]
 
Para Cada Elemento de ARREGLO
     Escribir "Ingrese un numero:"
     Leer ELEMENTO
Fin Para
 
VAL_MAYOR<-0
Para Cada ELEMENTO de ARREGLO
     Si ELEMENTO Es Mayor Que VAL_MAYOR
         VAL_MAYOR<-ELEMENTO
     Fin Si
Fin Para
 
Si VAL_MAYOR Es Par
     Escribir "El mayor es " VAL_MAYOR " y es par"
Sino
     Escribir "El mayor es " VAL_MAYOR " y es impar"
Fin Si
 
FinProceso

Imagen del diagrama de flujo



Que os parece este software?, les pregunto conocen software similar?

PD: Me gustaría iniciar con apoyo de vosotros un banco de programas referente a matemáticas con este software (PSEINT). Les parece buena idea?

11 Octubre, 2014, 10:26 pm
Respuesta #1

ingmarov

  • Moderador Global
  • Mensajes: 5,428
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Bienvenido compsystems!

Gracias por compartir la información, ¿Ya has probado esta aplicación?

Yo he olvidado mucho de lo que aprendí de programación, pero me gusta la idea que tienes de, según entiendo, crear un banco de aplicaciones matemáticas.

Saludos.
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

13 Octubre, 2014, 12:18 am
Respuesta #2

compsystems

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 56
  • País: 00
  • Karma: +0/-0
  • Sexo: Masculino
Si he programado en PSEINT, y por ser un lenguaje cercano al humano codificar en este software es muy fácil, iniciare con ejemplos sencillos para que miréis como se codifica.

La biblioteca  o banco de aplicaciones de math enriquecerían este software pues, solo tiene funciones básicas matemáticas (+. -. *, /, ^, modulo), le hace falta mucho por agregar, por ejemplo un paquete de álgebra lineal, calculo simbólico, geometría y todo lo que podamos imaginar

Lo que mas recuerdo de matemáticas es lo visto en la universidad en especial calculo vectorial y álgebra lineal, el resto debo repasarlo. Si se desea por ejemplo programar el polinomio característico de una matriz se tiene que definir primero el determinante de la misma.

Ademas por que programar en PSEINT? porque se puede crear un banco de algoritmos universal en un lenguaje base o pseudocodigo como aparecen en los libros actuales de maths y exportarlo luego ya un lenguaje profesional como MATLAB, MAPLE, C++, Visual BASIC etc


Primer programa

/!\ Todo lo que este después de doble barra inclinada hacia la derecha significa comentario, es decir no hacer parte del código fuente, es solo una explicación

Citar
Proceso ejp00_en_PSEINT //()
   // usar perfil flexibles
   Borrar Pantalla;
   Escribir "Hola Mundo"; // despliega en pantalla: "Hola Mundo" y salta a la siguiente linea
   Escribir ""; // no imprime nada, pero salta de linea
   
   Escribir "Hola";  // despliega en pantalla: "Hola" y salta a la siguiente linea
   Escribir "Mundo"; // despliega en pantalla: "Mundo" y salta a la siguiente linea
   Escribir ""; // no imprime nada, pero salta de linea
   
   
   Escribir Sin Saltar "Hola", "Mundo", ", viva la programación "; // despliega en pantalla continuamente: "HolaMundo, viva la programación" y no salta al final de la impresión
   Escribir "en PSEINT";
   Escribir "";
 FinProceso


Los que deseen probar el anterior código en PSEINT simplemente crear un programa nuevo copian el texto anterior y pegan , luego lo corren si tienen alguna duda no duden en escribir


La salida debe ser la siguiente
Código: [Seleccionar]
Hola Mundo

Hola
Mundo

HolaMundo, viva la programación en PSEINT

HolaMundo, viva la programacion
en PSEINT

13 Octubre, 2014, 12:47 am
Respuesta #3

ingmarov

  • Moderador Global
  • Mensajes: 5,428
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Intentaré instalarlo en Ubuntu, probaré y luego te cuento como me fue.

saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

13 Octubre, 2014, 03:46 am
Respuesta #4

ingmarov

  • Moderador Global
  • Mensajes: 5,428
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Ya lo he probado y me gusta bastante, podré volver a practicar la programación  :aplauso: .

Pongo el programa en el spoiler para que los mensajes no sean muy "grandes". (ahorrar espacio)

Mira mi "primer" programa: Calcula el máximo común divisor y el mínimo común múltiplo usando el algoritmo de Euclides.
Spoiler
Citar
Proceso Calculo_mcd_mcm
   Definir num1,num2,res,mult Como Entero;
   Escribir "INGRESA DOS NUMEROS ENTEROS";
   Leer num1;
   Leer num2;
   mult<-num1*num2;
   res<-1;
   MIENTRAS res<>0 HACER
      SI num1>num2 ENTONCES
         res<-num1%num2;
         num1<-res;
      SINO
         res<-num2%num1;
         num2<-res;
      FINSI
      SI res=0&num1<>0
         ESCRIBIR "mcd:" num1;
         ESCRIBIR "mcm:" mult/num1;
      FinSi
      SI res=0&num2<>0
         ESCRIBIR "mcd:" num2;
         ESCRIBIR "mcm:" mult/num2;
      FinSi
      
   FINMIENTRAS   
      
FinProceso
[cerrar]
Corrí el programa y funciona muy bien. ;D ;D

Seguiré probando

¿Sabes si hay nombres de variables que no se deben usar?
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

13 Octubre, 2014, 06:23 am
Respuesta #5

ingmarov

  • Moderador Global
  • Mensajes: 5,428
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Otra prueba exitosa, luego probaré con matrices

Pongo el programa en el spoiler para que los mensajes no sean muy "grandes". (ahorrar espacio)

Programa para la función factorial
Spoiler
Citar
Proceso Calculo_factorial
   Definir num1,num2,mult Como Entero;
   Escribir "INGRESA NÚMERO ENTERO";
   Leer num1;
   mult<-1;
   num2<-num1;
   Si num1<>0 Entonces
   MIENTRAS num2<>0 HACER
      mult<-mult*num2;
      num2<-num2-1;
   FINMIENTRAS
   Escribir num1,"!= ", mult;
   Sino
   Escribir "0!=1"
   FinSi

FinProceso

[cerrar]
Editado

Aquí tuve un inconveniente en la linea

Escribir "El factorial de " num1;
   Escribir "es:" mult;
Yo quería escribir una sola linea asi: Escribir num1 "!=" mult;
¿Se puede hacer esto?


solo era necesario separar lo que quería escribir con comas ",".
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

14 Octubre, 2014, 02:52 am
Respuesta #6

cristianoceli

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 810
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
Ya lo he probado y me gusta bastante, podré volver a practicar la programación  :aplauso: .

Pongo el programa en el spoiler para que los mensajes no sean muy "grandes". (ahorrar espacio)

Mira mi "primer" programa: Calcula el máximo común divisor y el mínimo común múltiplo usando el algoritmo de Euclides.
Spoiler
Citar
Proceso Calculo_mcd_mcm
   Definir num1,num2,res,mult Como Entero;
   Escribir "INGRESA DOS NUMEROS ENTEROS";
   Leer num1;
   Leer num2;
   mult<-num1*num2;
   res<-1;
   MIENTRAS res<>0 HACER
      SI num1>num2 ENTONCES
         res<-num1%num2;
         num1<-res;
      SINO
         res<-num2%num1;
         num2<-res;
      FINSI
      SI res=0&num1<>0
         ESCRIBIR "mcd:" num1;
         ESCRIBIR "mcm:" mult/num1;
      FinSi
      SI res=0&num2<>0
         ESCRIBIR "mcd:" num2;
         ESCRIBIR "mcm:" mult/num2;
      FinSi
      
   FINMIENTRAS   
      
FinProceso
[cerrar]
Corrí el programa y funciona muy bien. ;D ;D

Seguiré probando

¿Sabes si hay nombres de variables que no se deben usar?


Gracias por compartir, mis conocimientos en estos temas son prácticamente nulos. Intentaré aprender con mi estudio autodidacta

14 Octubre, 2014, 03:00 am
Respuesta #7

ingmarov

  • Moderador Global
  • Mensajes: 5,428
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino

Gracias por compartir, mis conocimientos en estos temas son prácticamente nulos. Intentaré aprender con mi estudio autodidacta

Revisa el programa y si tienes alguna duda, solo escríbela, te responderé tan pronto pueda.

Te recomiendo bajar e instalar Pseint, es liviano (15MB) y al menos en linux es portable. Puedes copiar el código del programa
y ejecutarlo.
Publicaré otros programas pronto.

Hasta luego.
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

14 Octubre, 2014, 05:13 am
Respuesta #8

compsystems

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 56
  • País: 00
  • Karma: +0/-0
  • Sexo: Masculino
PSEINT es sorprendente, observen el código siguiente es capaz de interpretar expresiones coloquiales y no simbolos >=, <=  sino palabras Si a es mayor que b y a es mayor que c entonces y puede escribirse todo en minúsculas

... respondo a tu pregunta ingmarov, me di cuenta que no se puede usar la letra "y" pues es un conector lógico, pero si acepto "que", , "sin" hay que probar con otros, pero no debería aceptar las palabras reservadas de programación, para evitar ambigüedades, en seguida le pregunto Pablo Novara, Alias (zaskar) autor de PSEINT

Código: [Seleccionar]
Proceso sin_titulo

Definir a, b Como Entero

        Definir que, sin Como Entero  // acepta que como "variable"

Imprimir "Ingrese 3 numeros (los dos primeros deben ser enteros):"
Leer a b c

        Si a es mayor que b y a es mayor que c entonces
Escribir a " es el mayor"
sino
Si b Es Mayor Que c Entonces
Escribir b " es el mayor"
Sino
Escribir c " es el mayor"
FinSi
FinSi


Mostrar "Pulse una tecla para continuar"
Esperar Tecla
Limpiar Pantalla

Si a Es Par
Escribir a " es par"
Sino
Escribir a " es impar"
FinSi

Escribir Sin Bajar "Los divisores de " b " son: "
Para i Desde 1 Hasta b-1
Si b Es Multiplo De i
Escribir sin bajar i " "
Fin Si
Fin Para
Escribir b

Si c Es Entero
Mostrar C " es entero"
Sino
Mostrar C " es real"
FinSi

FinProceso

PD: Como soy nuevo en el foro, no se como darle formato a un código, por ejemplo que aparezca con una fuente de texto mas grande, resaltado de sintaxis etc

Gracias

Jaime

14 Octubre, 2014, 05:51 am
Respuesta #9

ingmarov

  • Moderador Global
  • Mensajes: 5,428
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Hola compsystems

Lo he estado revisando, me gusta que tiene un manual bastante completo. No es tan necesario buscar en internet información.

Esperaré conocer el nombre de variables reservadas.

PD. Yo tampoco sé como cambiar el tamaño dentro de las etiquetas [code]   [/code], pero no le veo problema basta hacer zoom a la ventana del navegador.

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...