domingo, 7 de noviembre de 2010

Implementación de un Compilador Didáctico para un súper-conjunto de PL/0

En este artículo se describen las características de un compilador para un lenguaje súper-conjunto del conocido PL/0 creado por Niklaus Wirth. La característica principal es que implementa las fases de compilación de tal manera que la información que pasa entre cada una se refleja como un archivo XML.

http://aliamondano-eo.wdfiles.com/local--files/tradukilo/tradukilo.pdf
http://aliamondano-eo.wdfiles.com/local--files/tradukilo/pl0+-2010-10-09-12-23.tar.gz

domingo, 29 de agosto de 2010

Estimación de población de centros de atención infantil por medio de regresiones lineales

Este artículo surge como una alternativa de solución al problema de estimar la población futura de algunos centros de atención de jóvenes y niños en riesgo social. La población de estos centros fluctúa mes a mes debido a diversos factores sociales, económicos y políticos, por lo que no hay forma de calcular exactamente cuántos jóvenes ingresarán y cuántos egresarán. Para realizar la estimación, se desarrolló un modelo matemático para proyectar la población de los centros en el siguiente mes basándose en regresiones lineales.

 http://aliamondano-eo.wdfiles.com/local--files/poblaciones/poblaciones.pdf

miércoles, 21 de julio de 2010

Programando con Racket 5

ISBN: 978-99923-73-61-3

Support independent publishing: Buy this book on Lulu.
Este libro evolucionó a partir del material preparado para las clases de la materia Programación Funcional, impartida para la Carrera de Licenciatura en Ciencias de la Computación de la Universidad Centroamericana “José Simeón Cañas”.

Después de un año de trabajo, este libro incluye un recorrido por las características básicas del lenguaje Racket, en su versión 5.

Racket 5 es la nueva versión de PLT Scheme, un sistema de programación de larga tradición en el aprendizaje de la programación de computadoras, a través del paradigma funcional, basándose en el lenguaje Scheme.

Realmente no existe, formalmente hablando, un lenguaje llamado Scheme, sino que se le llama así a una familia de lenguajes de programación funcionales (véase el capítulo 1).

En este libro, se discute específicamente el dialecto conocido como Racket (anteriormente PLT Scheme), uno de los más difundidos. Si se quiere un estudio más purista sobre Scheme, revise el estándar R5RS que también es soportado por el intérprete de Racket.

Los temas abordados en la Parte I incluyen una introducción a la programación funcional, una sencilla guía de instalación de Racket y una introducción a la interacción con Racket y DrRacket.

En la Parte II se introduce el lenguaje Racket en sí, a través de sus elementos básicos y los bloques lambda, característicos de la programación funcional.

La Parte III describe los demás elementos del lenguaje y contiene múltiples ejercicios para que el lector practique sus nuevos conocimientos.

Finalmente, la Parte IV muestra las capacidades de Racket para implementar programas con interfaces graáficas de usuario.

Y por último, la Parte V incluye un anexo describiendo las diferencias entre la versión 5 de Racket y la serie 4.x de PLT Scheme.
Support independent publishing: Buy this book on Lulu.
http://aliamondano-eo.wikidot.com/local--files/racket-5/racket.pdf

domingo, 30 de mayo de 2010

Tecnología Portátil de Pantalla Táctil de Bajo Costo, Aplicada a la Docencia Universitaria

En este artículo se describe una implementación de tecnología portatil de pantalla táctil de bajo costo, aplicada a la docencia universitaria, utilizando como base el control remoto de la consola Wii de Nintendo (conocido como Wiimote), un proyector de cañón normal, una computadora y software libre. El propósito es mostrar la viabilidad de dicha implementación para mejorar los procesos de enseñanza/aprendizaje, sin incurrir en altos costos asociados a equipo tecnológico no asequible, a infraestrutura especial en los salones de clase, o a programas de computadora costosos. Se incluye también un resumen de una prueba del sistema en dos cursos universitarios.

http://aliamondano-eo.wdfiles.com/local--files/wiimote/wiimote.pdf

lunes, 8 de marzo de 2010

Una Humilde Introduccióna la Graficación por Computadora y Otras Yerbas

ISBN 978-99923-73-36-1

Support independent publishing: Buy this book on Lulu.


Descripción general

Este libro está siendo desarrollado con el propósito de ser libro de texto para diversas materias impartidas y a impartir para la carrera de Licenciatura en Ciencias de la Computación y otras carreras de grado y postgrado en la Universidad Centroamericana “José Simeón Cañas” en El Salvador. Está pensado para estudiantes que ya han aprobado los cursos en los que se estudia cálculo infinitesimal, geometría analítica vectorial, estructura de datos y programación orientada a objetos.

La graficación por computadora es una de las principales áreas de estudio de las ciencias de la computación, con aplicación en todos los ámbitos de la computación; desde la necesidad de representar medianas o grandes cantidades de datos numéricos que serían ilegibles en texto, hasta el desarrollo de sofisticadas aplicaciones científicas de simulación de modelos matemáticos del clima; desde el uso de software de edición de fotografías, hasta el desarrollo de videojuegos. En todos los ámbitos, surge la necesidad de tener conocimientos elementales de graficación por computadora.

El contendio del libro comienza con una breve introducción a SDL (y PyGame) que es la biblioteca gráfica base a ser usada en los primeros capítulos del libro. Se sigue con una introducción teórica a la graficación por computador, en la que se presentan algunos conceptos elementales que son imprescindibles para la programación de aplicaciones gráficas interactivas.

En el capítulo siguiente se aborda ámpliamente el tema de la discretización de líneas rectas y circunferencias de un pixel de grosor. Se aborda también el tema de relleno de circunferencias. Luego se procede a hacer un riguroso análisis vectorial del tema de cambio de coordenadas o cambio de marco de referencia. Allí se incluye una aplicación de ejemplo en la que se pone en práctica la teoría presentada.

Después, se describe la teoría matemática matricial relacionada con las transformaciones geométricas bidimensionales y tridimensionales. Se incluye entonces una aplicación de corte pedagógico que permite practicar transformaciones geométricas tridimensionales y permite ver en tiempo real sus efectos sobre un conjunto de objetos geométricamente sencillos.

El siguiente capítulo, muestra la teoría necesaria para comprender cómo transformar un objeto de tres dimensiones a una imagen bidimensional y cómo implementar tal transformación.

A continuación, se incluye una reflexión sobre el diseño de la interacción entre el humano y las aplicaciones gráficas.

Una vez hecha dicha reflexión, se procede al estudio de la aproximación de curvas arbitrarias por medio de segmentos cúbicos paramétricos. Y luego de la presentación de la teoría matemática implicada, se presentan cinco implementaciones sencillas. Después se hace una breve mención de superficies paramétricas.

Hacia el final del contenido principal del libro, se presenta una descripción de las estructuras de datos utilizables para representar mallas poligonales, que representan la técnica usada para modelar superficies arbitrarias en todo el software de modelación tridimensional.

Finalmente se hace una introducción a la graficación por medio de técnicas fractales que incluye implementación de aplicaciones de dibujo fractal.

Por último, pero no menos importante, se incluyen algunos temas no relacionados directamente con la graficación por computadora, pero sí relevantes para facilitar la lectura y comprensión de algunos temas y códigos fuente incluídos. Entre ellos, instrucciones sencillas y concisas para compilar proyectos en lenguaje C estándar distribuidos en varios archivos fuente; y un brevísimo resumen de notación UML para diagramas de clases y diagramas de objeto.

Lo que queda fuera

Como se dijo antes, la graficación por computadora es una de las grandes áreas de las ciencias de la computación, razón por la cual, cualquier obra que pretenda cubrirla toda, se quedará corta. En el caso de este libro, estos son los temas que no se cubren en la versión actual de la obra:

• Temas avanzados de SDL

• Interfaces gráficas de usuario (GUI)

• Modelado de sólidos

• Renderización de texto

• Operaciones de bajo nivel (en ensamblador, por ejemplo)

• Manipulación de mapas de bits

• Hardware gráfico

• Iluminación, sombreado y texturas

• Detalles de instalación de las herramientas en ambientes Windows

Esto no significa que no sean temas interesantes para un computólogo, o para un científico. Pero esta edición simplemente no los contempla.

Lo que conviene saber

Antes de escrutar este libro, es recomendable tener una base aceptable en los siguientes temas:

• Operaciones básicas con matrices

• Álgebra vectorial y nociones de cálculo vectorial

• Operaciones básicas con números complejos

• Parametrización de curvas

• Sistemas de coordenadas rectangulares, cilíndricas y esféricas

• Estructuras de datos básicas (listas, pilas, colas, árboles, directorios de nodos, grafos, etc.)

• Nociones claras de Programación Estructurada y Programación Orientada a Objetos

• Conocimientos sólidos del lenguaje C estándar en ambiente GNU/Linux

• Conocimientos intermedios en lenguaje Python en ambiente GNU/Linux

• Conocimientos intermedios del lenguaje Java

• Destrezas elementales del uso de sistemas operativos GNU/Linux

Motivación al lector

En general, el autor desea expresar su deseo de seguir mejorando y ampliando, en la medida de lo posible, esta obra para beneficio de la sociedad salvadoreña. Y también desea invitar al apreciable lector a que le saque todo el provecho posible, que aplique sus aportes en todas las áreas posibles de su trayectoria profesional; y también que no lo considere una serie de afirmaciones incuestionables, sino una contribución al desarrollo tecnológico salvadoreño y a la independencia tecnológica de la región centroamericana.

Como toda obra académica de programación, o como la mayoría, los códigos (y programas) incluídos pretenden mantener simplicidad y claridad para no dificultar innecesariamente la comprensión, pero se recomienda hacer el ejercicio de optimizarlos.

Cambios en esta versión

En esta nueva versión (que se corresponde con la segunda edición), se han hecho muchos cambios a lo largo de todo el texto. Se han corregido diversos errores tipográficos en todos los capítulos, se han revisado todos los códigos fuente que ya estaban y las imágenes se han revisado en su resolución y distribución. El tamaño de las páginas también se ha cambiado al tamaño carta, que es el estándar de facto en El Salvador.

Todos los bloques de código fuente se han resaltado para su más cómoda y más fácil lectura.

El capítulo 1 se ha ampliado en el tema de la instalación de SDL. Los ejemplos básicos fueron revisados y reordendados.

El capítulo 2 incluye ahora una sección especial sobre el ciclo de interacción de aplicaciones gráficas interactivas.

El capítulo 9 incluye mucho nuevo material, incluyendo nuevas imágenes, más algoritmos, más profundidad y nuevos programas de ejemplo.

El capítulo 10 también cuenta con nuevas imágenes, hechas con Maxima. El contenido del 12 fue revisado y cuenta con nuevas imágenes.

Y finalmente, se ha integrado la biblioteca pygame para Python en la primera parte del texto, en paralelo con SDL para C.

http://aliamondano-eo.wdfiles.com/local--files/libro-graficos-1-0/graficos-1.0.pdf
http://aliamondano-eo.wdfiles.com/local--files/libro-graficos-1-0/codigo-1.0.tar.gz Support independent publishing: Buy this book on Lulu.