Mostrando entradas con la etiqueta Algoritmos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Algoritmos. Mostrar todas las entradas

Este post es un análisis de la historia de la computación de los editores de texto.

Software editor de texto: Es un programa de computadora que permite manipular textos en formato simple (modo consola) o en formato gráfico mostrando gráficas y fuentes avanzadas. Los formatos de texto simple solo tienen caracteres alfanuméricos y los más avanzados fuentes, colores, y diseños.

Editores de texto

Editor wysiwyg: Acrónimo de  What you see is what you get , indica que la edición se muestra en pantalla con el diseño final.

Entre los editores tipo consola se tiene VIM y el Midnight Commander, est último inspirado en el Norton Commander. También están los que usan la ventanas gráficas como Notepad ++, TextPad entre otros.

Editor de texto con formato existen en diversas formas tales como los clásicos Wordstar, WordPerfect y Word así como otros.

El sitio web http://texteditors.org/ contiene guias y reviews de editores desde 1967.

Estructura de archivos de texto

Este sitio web http://www.finseth.com/craft/index.html#preface tiene la publicación The Craft of Text Editing por Craig A. Finseth  (1999) que contiene una explicación y estructura para el desarrollo de editores de texto.

Formato de datos

1. Array plano, y al momento de presentar en pantalla se divide al encontrar un salto de línea

2. Array de dos dimensiones, representa los datos en bloques y se puede navegar por el array para hacer las operaciones de insertar y borrar

3. Lista de lineas, cada linea es una array por lo que es más óptimo incrementar el tamaño de una línea sin recrear todo el arreglo

4. modelos reales, el modelo construye desde la unidad hasta el documento con una estructura.

    characters
    words
    phrases
    sentences
    paragraphs
    subsections
    sections
    chapters
    documents 

En cuanto a los formatos, y la información adicional, se pueden usar un juego de caracteres específicos que pueden ser interpretados al momento de mostrar en pantalla.


Programación

Fundamentos

http://texteditors.org/cgi-bin/wiki.pl?DesigningTextEditors

Como implementar UNDO en un text editor

http://texteditors.org/cgi-bin/wiki.pl?Implementing_Undo_For_Text_Editors


En esta publicación se anotan los resultados del desarrollo de una lenguaje interpretado basado en BASIC creado sobre C# / JAVA y aplicable a otros lenguajes. El objetivo principal es preservar la lógica que puede ser aplicado a cualquier lenguaje de programación.

Cómo escribir su propio lenguaje de programación en C# (Traducción libre)

Aquí generalizaré el algoritmo Split-and-Merge para analizar no sólo una expresión matemática, sino también cualquier sentencia del lenguaje CSCS. Todas las expresiones CSCS deben ir separadas por un carácter de separación. Lo defino en el archivo Constants.cs como Constants.END_STATEMENT = ';' constante.

El algoritmo Split-and-Merge consta de dos pasos. Primero, se divide la cadena en una lista de tokens. Cada token consiste en un número o una cadena y una acción que se le puede aplicar.

 Continuar leyendo en  Link | 1 |

VENTAJAS

  1. A diferencia de la mayoría de los demás lenguajes, es muy fácil modificar la funcionalidad porque todo está en un código C# estándar fácil de seguir con una interfaz clara para añadir funciones. Cualquier función adicional se puede añadir a este lenguaje con sólo unas pocas líneas de código
  2. Todas las palabras clave de este lenguaje (if, else, while, function, etc.) pueden sustituirse fácilmente por cualquier palabra clave no inglesa (y no tienen que ser ASCII, al contrario que en la mayoría de los otros lenguajes). Sólo son necesarios cambios de configuración para sustituir las palabras clave
  3. Este lenguaje puede usarse como lenguaje de scripting y como programa shell, como Bash en Unix o PowerShell en Windows (pero lo hará más fácil de usar que PowerShell).
  4. Incluso Python no tiene los operadores prefijo y postfijo ++ y - con el argumento matador de que "no los necesita". Con tu propio lenguaje, puedes decidir por ti mismo lo que necesitas. Y te mostraré cómo.
  5.  Cualquier análisis sintáctico personalizado puede implementarse sobre la marcha. Tener control total sobre el análisis significa menos tiempo buscando cómo usar un paquete externo o una librería regex.
  6.     ¡No usarás ninguna expresión regular en absoluto! Creo que este es el principal obstáculo para algunas personas que necesitan desesperadamente analizar una expresión, pero son reacios al dolor y la humillación inducida por las reglas regex.


Modelo Mark 1

En este experimento se desarrolla un lenguaje desde cero.

Para crearlo se deben tomar las siguientes decisiones.

¿Es un lenguaje compilado o interpretado?

Si es un compilado, se trata de crear archivos ejecutables según el sistema operativo y procesador. Por tal motivo, los lenguajes tienen un compilador que lo transforma en lenguaje de máquina.

En la actualidad, se puede usar un lenguaje intermedio, y nuevos lenguajes han optado por generar codigo en c++ para ser compilado y generar código de máquina.

¿Necesitamos un editor de código propio o se puede usar uno de terceros?

Para la investigación se ha hecho un editor desde cero. Consta de un objeto "picture" que recibe las pulsaciones del teclado y añade las letras a un arreglo de string para formar el texto.


Para una mejor rendimiento, se hace el cálculo de las líneas visibles y solo se muestran en pantalla cuando desde el teclado se recibe un comando o se añade una letra a la parte visible.

Lista de cambios

- Carga de archivos y grabar archivos de TEXTO extensión BAS

- Soportar eventos keypress para insertar líneas, borrar caracteres

- Configurar un VIEWPORT para solo observar parte del código visible en pantalla

 

TOKEN para resolver ecuaciones

34 * 4 + 45 / 3

Se divide en token y según prioridad se calcula en orden las * / y luego las + - de está forma se completa la ecuación.

1 = 34 

2 = * 

3 = 4 

4 = + 

5 = 45 

6 = / 

7 = 3 

En iteraciones se resuelve la función

34 * 4 + 45 / 3

136 + 15

151

Se puede añadir validaciones para no calcular número entre cero y la falta de parámetros.

Programar es un arte, y cada arte necesita de expertos artesanos. En esta publicación se preserva el arte creando diagramas con las lógicas del sistema.

Array de datos con simulación de gravedad por desplazamiento de datos.

Tetris es la combinación de la palabra Tetra y Tennis según su creador Alekséi Pázhitnov. Es un juego de la categoría rompecabezas en la que las fichas descienden y deben completar 

El funcionamiento es un arreglo de dato que simula la gravedad desplazando las fichas hacia abajo. El objetivo es completar las líneas para hacerlas desaparecer y ganar puntos o en el camino contrario que se llena las filas y el juego se termina. 

Métodos y lógica

Gravedad: Cada N segundo desplaza las fichas hacia abajo

Validación: Verifica si la línea ha sido completada para destruir la fila y añadir puntos al jugador

Velocidad: Es una variable que contiene la velocidad del juego

Generador pseudo aleatorio: Crea las fichas

Mostrar: Muestra el estado actual del tablero, posición de las fichas y demás decoraciones del juego.

Mover: Rota las fichas o las desplaza derecha e izquierda antes de caer.

Versión original portado a web por Tetris Holding

https://tetris.com/tetris-e60/

En 1984, Tetris® nació de la imaginación del programador informático Alexey Pajitnov. Inspirado en su juego de mesa favorito, Pentominos, Pajitnov creó un juego electrónico que permitía a los jugadores ordenar las piezas en tiempo real a medida que caían desde la parte superior del campo de juego. El diseño resultante era un juego que utilizaba siete piezas geométricas distintivas, cada una formada por cuatro cuadrados. Pajitnov llamó a este juego "Tetris", una combinación de "tetra" (palabra griega que significa "cuatro") y "tenis" (su deporte favorito).

 Tetrismania: tiene una seria de instrucciones y explicaciones del juego y su dinámicas de funcionamiento.

https://tetrismania.net/

 Video de Versión de NES

https://www.youtube.com/watch?v=-FAzHyXZPm0

Tetr.io https://tetr.io/

Versión con diversas modificaciones y juegos en línea


https://www.freetetris.org/game.php

N-Blox fue creado por Paul Neave y se convirtió en la version oficial de Tetris al ser adquirida por Tetris Holding.

A continuación se muestra la lógica del sistema de juego.

El objetivo de Tetris N-Blox es conseguir tantos puntos como sea posible eliminando filas horizontales de Bloques. El jugador debe rotar, mover y soltar los Tetriminos que caen dentro de la Matriz (campo de juego). Las líneas se eliminan cuando están completamente llenas de bloques y no tienen espacios vacíos.

A medida que se eliminan líneas, el nivel aumenta y los Tetriminos caen más rápido, haciendo que el juego sea cada vez más difícil. Si los bloques caen por encima de la parte superior del campo de juego, el juego termina.


OBJETIVO - Pon a prueba tu capacidad de organización y tu resistencia eliminando tantas líneas como puedas.

BORRAR LÍNEAS - Maniobra los Tetriminos que caen para encajarlos dentro de la Matriz. Para despejar una línea, llena todas las casillas de una fila.

PUNTOS - Gana puntos eliminando líneas. Elimina varias líneas a la vez para aumentar tus oportunidades de puntuar.

SIGUIENTE COLA - Previsualiza el siguiente Tetrimino en la siguiente cola para planificar con antelación y aumentar tus oportunidades de puntuación.

GAME OVER - ¡Apila los Tetriminos demasiado alto y se acabó el juego!

Datos interesantes

Fue creado en 1984, en 2007, Tetris ocupó el segundo lugar en los «100 mejores videojuegos de todos los tiempos» para IGN.14​ Ha vendido más de 170 millones de copias hasta 2016.15​ En enero de 2010, se anunció que el Tetris había vendido más de 100 millones de unidades para teléfonos móviles desde 2005

¿Es posible crear una aplicación para editar lineas y formas? Esta publicación muestra parte de los conceptos de manejo de arrays y memoria para crear un editor de imágenes funcional y reducido. 

Nota: 990 líneas de líneas de código para las funciones iniciales para el editor de vectores.

En la siguientes figuras se muestran los diagramas de trabajo para crear un editor de imágenes geométricas aplicable a diversos lenguajes. Click para ampliar en las imágenes. Estos modelos son creaciones propias para los cursos de fundamentos de programación.

D1: Funcionamiento de editar o mover controles

D2: Funcionamiento de añadir o quitar controles


Explicación:

El concepto de crear un editor de gráficos es parte de la historia de la computación, en las figuras se explica la arquitectura y funciones principales.

Se debe crear un arreglo ARR_OBJ que contenga los tipos de objetos y sus puntos iniciales y finales. Adicional a ello, se puede añadir características de las figuras.

Cuando se añade un control: Se añade al arreglo ARR_OBJ con todas sus caracteristicas.

 ** Evento Mostrar Figuras: Este segmento de código recorre el ARR_OBJ y dibuja en pantalla.

Cuando se hace click en la pantalla: Se busca los objetos que están en esa posición, se recomienda que lo recorra en forma inversa para ubicar los últimos añadidos primero.

 ** Evento Mostrar Figuras: Este segmento de código recorre el ARR_OBJ y dibuja en pantalla. Además pinta en resaltado el objeto seleccionado.

*** Optimizaciones de código

Considerar mantener una imagen preprocesada en memoria para evitar redibujar todos los objetos.

Algunas métricas son que se puede crear con 500 lineas de código un editor básico que permita editar y grabar el formato. Pueden tomar inspiración en el lenguaje LOGO que incorpora comando para dibujar en pantalla.

Las formas complejas son formas de lineas y curvas agrupadas en un solo objeto.

Se recomienda analizar ampliar el modelo para guardar las estructuras  de polinomios.

¿Desea leer el artículo completo? Continuar leyendo