Programación en Lexico (POO en castellano)

De Wikilibros, la colección de libros de texto de contenido libre.

Introducción[editar]

Lexico significa Lenguaje experimental introductorio a la computación con objetos. Se distribuye gratuitamente en su portal http://lexico.mobi y corre sobre la plataforma .NET de Microsoft (que también es distribuible). La versión actual es la 3.1 creada para las máquinas de 64 bits con sistema operativo Windows 7 o superior.

Permite al novato elaborar desde un comienzo programas de manera que no tenga que esperar a conocer los detalles avanzados de un lenguaje de produccion industrial. Ha sido probado en cursos a nivel de educación secundaria y universitaria (ver algunos resultados de una de las investigaciones:<ref="https://lexico.mobi/lx2/articuloSandra3M.pdf"></ref>). Las opiniones de los estudiantes dicen sobre lo satisfechos que ellos han quedado resaltando su facilidad y naturalidad.

Ejemplo de un algoritmo, método, comportamiento o mensaje que "entiende" un objeto:

/*Determina si un número entero mayor que 1 es o no primo*/
tarea
{
los objetos número, i, raiz son cantidades
el objeto respuesta son caracteres
entre número
es número=2 ?
  si: copie "es primo" en respuesta
  no: es número%2 = 0 ?
         si:copie "no es primo" en respuesta
         no:{
            copie "es primo" en respuesta
            copie 3 en i
            copie número^(1/2) en raiz
            mientras i<=raiz & respuesta="es primo" haga:
              {
              es número % i >< 0 ?
                 si: copie "es primo" en respuesta
                 no: copie " no es primo" en respuesta
              copie i + 2 en i
              }
            }
muestre número, " ", respuesta
}

Descripción[editar]

Lexico significa Lenguaje experimental introductorio a la computación con objetos. Se distribuye gratuitamente en su portal http://lexico.mobi y corre sobre la plataforma .NET de Microsoft (que también es distribuible). Permite al novato elaborar desde un comienzo programas de manera que no tenga que esperar a conocer los detalles avanzados del lenguaje. Ha sido probado en cursos a nivel de educación secundaria y universitaria. Las opiniones de los estudiantes que lo han utilizado habla sobre lo satisfechos que ellos han quedado resaltando su facilidad y naturalidad.

El compilador reconoce desde un solo algoritmo hasta aplicaciones formadas por clases y objetos particulares. Ello permite a los docentes utilizar las dos estrategias que se debaten en los medios académicos para la inmersión de los estudiantes en la programación orientada a objetos: la vía desde los elementos hacia el todo o la vía contraria, desde el todo hacia los elementos particulares (botton-up vs top-down).

Para la estrategia ascendente basta con programar algoritmos cada vez más complejos escritos mediante pocas palabras a manera de comandos: tarea empiece, termine, entre, copie, muestre, es ?, mientras, los, objetos, son, cantidades, caracteres.

La versión Lexico 3.0, además de poder generar código ejecutable para ser corrido sobre la plataforma .NET completa, genera código ejecutable para la plataforma CF .NET (Compact Framework) lo que le hace útil para producir programas destinados a Windows Mobile (WM) que corre sobre el Sistema Operativo WindowsCE existente en los móviles conocidos como PocketPC o PPC (sigla en inglés para Computadores Personales de Bolsillo), PDA (Personal Data Agend) y los SmartPhone (o Teléfonos Inteligentes).

Ejemplos de programas elementales:

El algoritmo más simple:

tarea muestre "Hola Mundo !"

El segundo algoritmo más simple: una estructura lógica secuencia compuesta por varias instrucciones:

tarea /* este ejemplo ya es obsoleto, funciona con las llaves { }*/

  empiece
   el objeto nombre son caracteres
   entre nombre
   muestre "Hola ", nombre
  termine

El mismo algoritmo anterior utilizando la forma usual de otros lenguajes:

tarea
  {
   el objeto nombre son caracteres
   entre nombre
   muestre "Hola ", nombre
  }
  /*SI, probado sobre Windows 11 en agosto 17 de 2022*/

Un algoritmo con 3 estructuras lógicas: dos secuencias y un ciclo mientras

tarea
{ /*empiece obsoleto:  agosto 17 de 2022 */
 los objetos N, i, dato, suma son cantidades
 entre N
 copie 0 en i, suma
 mientras i<N haga:
   empiece
    entre dato
    copie suma + dato en suma
    copie i + 1 en i
   termine
 muestre "El total de los datos suman ", suma
} /* termine obsoleto: agosto 17 de 2022 */

El mismo algoritmo anterior utilizando las llaves usuales de C#, C++, C, Java....

tarea
{
 los objetos N, i, dato, suma son cantidades
 entre N
 copie 0 en i, suma
 mientras i<N haga:
   {
   entre dato
   copie suma + dato en suma
   copie i + 1 en i
   }
 muestre "El total de los datos suman ", suma
}

Ejemplo de un algoritmo, método, comportamiento o mensaje que "entiende" un objeto y que ha sido diseñado utilizando las tres estructuras fundamentales en lógica: Secuencia {...}, Decisión Es...? Si:{...} No:{..} y ciclo mientras ...haga {...}

/*Determina si un número entero mayor que 1 es o no primo*/
tarea
{
los objetos número, i, raiz son cantidades
el objeto respuesta son caracteres
entre número
es número=2 ?
 si: copie "es primo" en respuesta
 no: es número%2 = 0 ?
        si:copie "no es primo" en respuesta
        no:{
           copie "es primo" en respuesta
           copie 3 en i
           copie número^(1/2) en raiz
           mientras i<=raiz & respuesta="es primo" haga:
             {
             es número % i >< 0 ?
                si: copie "es primo" en respuesta
                no: copie " no es primo" en respuesta
             copie i + 2 en i
             }
           }
muestre número, " ", respuesta
}

Una vez familiarizados con los conceptos básicos y adquiridas las habilidades fundamentales para manejar objetos simples y cálculos con base en ellos, puede continuarse con el uso de objetos compuestos definidos por el profesor o definidos en la plataforma .NET y que son accesibles desde LEXICO. Finalmente puede estudiarse la forma de definir modelos para la construcción y uso de objetos, es decir las clases y aplicaciones controladas por eventos, tal como el siguiente ejemplo que define una clase para construir el objeto aplicación, hereda las características del modelo o clase Form definida en .NET (formulario o ventana que será la interfaz gráfica de la aplicación), permite acceder a recursos definidos en la plataforma sobre la que corre tales como las clases o recursos Color, Pen, Graphics y permite programar algoritmos controladores para el manejo de los eventos de interés:

clase mia derivada_de "System.Windows.Forms.Form"
publicos:
/*Se declara un atributo público*/
el objeto color es un "System.Drawing.Color"
mensajes:
/******** Se define el controlador del evento pintura */
pintador(entra enviador, entra chismoso es un "System.Windows.Forms.PaintEventArgs")
{
 el objeto lienzo es un "System.Drawing.Graphics"
 /*Se establece el lienzo con las características reales controladas por Windows*/
 copie chismoso.Graphics en lienzo
 /*Se crea un objeto temporal (esto debería ser un atributo para evitar estar recreándolo)*/
 el objeto lápiz es un "System.Drawing.Pen"(doy color.Black, doy 10)
 /*Se envía al lienzo el mensaje dibuje una elipse*/
 lienzo.DrawEllipse(doy lápiz, doy 100, doy 200, doy 300, doy 200)
}
/*******Se define el constructor de la ventana (Interfaz gráfica que representa la aplicación */
mia
 {
 /*Se modifican dos atributos públicos de mia que fueron derivados de la clase Form*/
 copie "Hola Tomás, bien o qué ?" en mia.text
 copie color.Green en mia.BackColor
 /*Se inscribe  el método pintador como el que debe ser llamado por Windows cuando detecte la
   ocurrencia de un evento Paint*/
 mia.manejador(doy "mia.Paint", doy "pintador")
 }

La estrategia Top-down puede ser utilizada mediante la descomposición de una aplicación en sus elementos constitutivos, elementos que han de describirse siempre insertándolos antes en la aplicación bien sea en forma directa en el archivo que la contiene o incorporando los archivos fuentes y/o compilados que les describen con la instruccion incluya, por ejemplo:

incluya "fuente1.lx", "fuente2.lx", "esteCompiladoConAlgúnLenguajePuntoNET.dll"

clase ....
..........
..........

Un ejemplo: la tarea crea dos objetos del tipo o clase Modelo1 y le envia el mensaje u orden de ejecutar la Accion1 solo a uno de ellos:

/************************************************************************************************************
 * Recuerde USAR 		C:\\Windows\\Microsoft.NET\\Framework64\\v2.0.50727 						*
 *				(con lexico v3.1 sobre win7/8) en Generar, Propiedades de compilacion, ruta_net	*
 *				y al principio del còdigo			incluya "mscorlib.dll"				*
 *																		*
 *				\/()<>[]{}|#&°~^•©%£µ½!@ª$€*	???? 									*
 ***********************************************************************************************************/

 /*** Esta prueba se realizo el 18 oct 2022 con version 3.1 sobre Windows 11 en una maquina de 64 bits ***/

incluya "mscorlib.dll"

tarea
  {
   los objetos a, b son Modelo1
   a.Accion1
  }

clase Modelo1
publicos
mensajes
Modelo1
	{
	muestre "Soy un constructor para un objeto de clase Modelo1"
	}
Accion1
	{
	muestre "Estoy ejecutando la Accion1 en un objeto de clase Modelo1"
	}

Descargue el compilador desde su página http://lexico.mobi para generar codigo ejecutable en Windows Mobile 5.0+ (teléfonos,PPC) o Windows para ordenadores de escritorio (PC). También lea más sobre las últimas versiones en http://sites.google.com/site/riosur/.