INTRODUCCION A LA PROGRAMACION Un lenguaje de programación es básicamente un sistema estructurado de comunicación, similar al humano, el cual nos permite comunicarnos por medio de signos, ya sean palabras, sonidos o gestos. Refiriéndonos a los aparatos, este sistema está organizado para que se entiendan entre sí y a su vez interprete las instrucciones que debe ejecutar. El término programación se define como un conjunto de instrucciones consecutivas y ordenadas que llevan a ejecutar una tarea específica. Dichas instrucciones se denominan “código fuente”, el cual es único para cada lenguaje y está diseñado para cumplir una función o propósito específico. Usan diferentes normas o bases para controlar el comportamiento de un dispositivo y también pueden ser usados para crear programas informáticos. En la actualidad, hay más de cien lenguajes de programación diferentes, estos se clasifican en dos tipos principales: 1. Lenguajes de programación de bajo nivel. Son aquellos utilizados para controlar el hardware (partes tangibles) del aparato y dependen directamente de la máquina, es decir, que no pueden ser usados en aparatos diferentes para los que fueron creados. Estos lenguajes son los que ordenan las operaciones esenciales para el funcionamiento del dispositivo. También es conocido como código máquina. Su funcionamiento es complejo, por lo que lo utilizan principalmente los fabricantes de hardware. Con ellos se pueden programar tareas como reproducción de audio o video, mostrar imágenes, realizar operaciones matemáticas, movimiento del puntero, asignación, liberación de memoria, entre otras. 2. Lenguajes de programación de alto nivel. Estos lenguajes son más parecidos al humano. No dependen de la máquina y sirven principalmente para crear programas informáticos que puedan solucionar distintos tipos de necesidades. Ahora bien, algunos de los lenguajes de programación más utilizados son SQL, PHP, C y Java. SQL: son las siglas de Structured Query Language (Lenguaje Estructurado de Consulta). Su función principal es actuar sobre una base de datos y extraer su contenido para almacenar, introducir, actualizar, eliminar y consultar información. Suele ser usado en la construcción de páginas web y aplicaciones de escritorio. PHP: es un acrónimo recursivo que significa PHP Hypertext Pre-processor. Es utilizado para el desarrollo de sitios online, ya que es posible combinarlo con HTML. Es un lenguaje de lado del servidor, es decir, que primero se ejecuta en éste y posteriormente regeresa al navegador del usuario como resultado una página web. C: lenguaje orientado principalmente a los sistemas operativos. Se puede crear un software para sistemas operativos como Windows o Linux, también es muy usado en robótica para crear simuladores o para experimentos informáticos, físicos, matemáticos, etc. Java: es uno de los lenguajes favoritos ya que permite construir programas que gestionan la memoria del dispositivo donde reside la aplicación, como por ejemplo herramientas, juegos y apps. Es utilizado en dispositivos móviles, aparatos de televisión y computadores personales. Suele ser asociado a Java Script, que es otro tipo de lenguaje para crear pequeños programas encargados de realizar acciones dentro de páginas webs, como por ejemplo crear efectos especiales o para definir la interactividad con los usuarios. Anon, (2016).
Lexico
Una de las herramientas más simples para iniciarse en la programación de computadores con énfasis en el modelo de objetos es presentada por lexico.mobi para ser descargada gratuitamente. Sus códigos están en castellano y pueden estar en otros idiomas. Permite generar código ejecutable sobre PocketPC, PPC, PDA, SmartPhone con Windows Mobile 5.0+ (Compact .NET o CF) o para FrameWork (escritorio o DeskTop). ¿Qué es Lexico ? Lexico es un lenguaje de programación en español pensado como medio didáctico para facilitar el aprendizaje y la enseñanza de la programación orientada a objetos. Fue diseñado en 1985 y rediseñado en 1992, 2002 y 2009 por Laboratorios Riosur.net E.U Descripción Lexico es un software diseñado para mejorar los conocimientos en lenguaje de programación. Es una aplicación que viene en español y que será de enorme utilidad para todos aquellos que deseen incrementar su saber en lenguaje de programación. Es una herramienta que logra motivar a los estudiantes de programación, que es exlusivamente para quienes está pensada. Si eres uno de ellos, gracias a Lexico podrás mejorar enormemente tus capacidades como programador. Estamos ante un sistema sencillo cuyo objetivo es realmente ofrecer lecciones prácticas a todos aquellos que estudian programación, y que a diferencia de otros métodos intenta estimular a los alumnos permitiéndoles desde el principio tratar con algoritmos ya diseñados para que les devuelvan resultados. Lexico es una aplicación que huye de elementos innecesarios porque persigue ser una ayuda útil y eficaz para los estudiantes. Si estás estudiando programación y quieres desarrollar tus capacidades con una herramienta agradable y práctica, descárgate Lexico y empieza tu entrenamiento desde los niveles más básicos de la programación y los conceptos elementales de algoritmos, para a partir de ahí ir desarrollando sistemas más complejos. Su forma exterior es sencilla aunque versátil. El compilador, disponible en su portal, es distribuible y se ejecuta sobre la plataforma .NET de Microsoft. Esta última plataforma también también es distribuible. Soporta las características exigidas internacionalmente para considerarse puro respecto al paradigma. Posee una interfaz simple que evita dificultades para iniciar. Permite la suficiente sencillez para entrenarse con los conceptos básicos en algoritmos para que la persona practique las estructuras fundamentales en lógica (secuencia con {....}, decisión con es ? y ciclo de repeticiones con mientras) y la clásica estructura de representación de información compuesta llamada arreglo. El centro medular es su orientación a la programación orientada a objetos para lo cual posee el soporte apropiado y se ha simplificado al máximo de manera que ayude a la inmersión en los conceptos. Los objetos pueden ser construidos con base en las dos clases fundamentales, cantidad y caracteres, con base en las clases establecidas por el programador, con base en las 7.000 definiciones de la plataforma .NET de Microsoft y otros ensamblados en forma de dll (bibliotecas de enlaces dinámicos) producidos por terceros, lo que permite desarrollar aplicaciones complejas que incluyan controles, el manejo gráfico y el manejo de eventos.
Las clases pueden ser definidas en el programa o en archivos externos y por la vía de la herencia con base en la librería FCL (Librería de Clases del Marco de trabajo) de Microsoft. Aquellas que no hayan sido definidas dentro del archivo principal de trabajo son incorporadas con la instrucción incluya. 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 PPC (sigla en inglés para computadores personales de bolsillo) o PocketPC, las PDA (agendas de datos personales y los SmartPhone (o teléfonos inteligentes). Características principales de LEXICO Léxico es un lenguaje simple y poderoso: Orientado a objetos (todos sus elementos con información son objetos) Permite manejar tres tipos de información: cantidades, caracteres y objetos compuestos en general Posee ya definidos tres objetos constantes: verdadero, falso y nulo Posee ya definidos tres modelos o clases de objetos: cantidad, caracteres y xibalbá Posee tres formas de manejo de los objetos: constantes, variables y no_crear o solo denominar. Posee tres formas de manejo de miembros: objeto.miembro, clase.miembro y objeto simplemente Posee tres formas de aplicación: tarea, batch o consola, clase tarea y clase derivada_de Posee tres formas de secuencia: un grupo de instrucciones, una instrucción y nop, vacía o que no tiene operaciones Permite tres tipos de flujos de objetos entre argumentos y parámetros para los mensajes: doy o sale, deme o entra y bidireccional. Por defecto es doy o sale Posee las tres estructuras lógicas fundamentales: secuencia, decisión, ciclo mientras Permite el uso de arreglos de objetos Permite incluir otros archivos con código fuente Lexico o .lx a una compilación Permite incluir el acceso a otras clases ya compiladas existentes en archivos.dll Permite definir y utilizar espacios de nombres Permite referencias con varios niveles en jerarquía Permite generar código ejecutable independiente o .exe para .NET Mobile y .NET de escritorio Permite generar código ejecutable dependiente o .dll para .NET Mobile y .NET de escritorio Permite acceso y uso de las aproximadamente 7000 definición de la plataforma .NET
Su gramática es compacta: con solo 8 tipos de instrucciones puede programarse cualquier aplicación Sus códigos de tipo de instrucción están en castellano pero se pueden reemplazar Permite suprimir la jerarquía de espacios de nombres cuando no hay conflicto para una referencia Permite los caracteres castellanos: áéíóúüñ Permite formato libre: un programa puede codificarse en una sola línea si se desea Permite las secuencias del si o verdadera y del no o falsa en cualquier orden en una decisión Permite definir modelos o clases de objetos Permite herencia entre clases Permite polimorfismo en los métodos Permite encapsulamiento o privacidad de miembros No hay diferencia conceptual al utilizar mayúsculas o minúsculas Permite utilizar componentes de la misma clase para la representación de estructuras de datos dinámicas. Permite, dentro de un objeto de caracteres, caracteres de escape o control: \n, \t, \\, \", \', \x, \b, \r, \0, \a, \f Permite copiar un objeto simple o compuesto en otro similar, por ejemplo un arreglo en otro. Permite definir y publicar eventos propios. Permite insertar código C#. Permite definir miembros exclusivos de la clase. Permite utilizar miembros static (exclusivos) sin crear instancia de la clase. Permite control ante excepciones con ensaye y avise. Algunos datos históricos La versión más reciente del compilador Lexico es la 3.0 de junio 15 de 2009. Su desarrollo se ha suspendido por un tiempo. Fue programada por Alejandro Rúa Suárez antes de terminar sus estudios de pregrado en Ingeniería de Sistemas en la Universidad de Antioquia ubicada en la ciudad de Medellín Colombia. Ésta persona tres años antes aprendió a programar utilizando la versión 2.0 de Léxico que era el medio de apoyo didáctico empleado en un curso introductorio a la computación por la vía de adquirir fundamentos de programación orientada a los algoritmos, al uso de objetos creados con base en clases preexistentes y a la definición de clases de objetos. Logró adicionarle características que le hacen más liviano respecto a su precedente. Fue programado utilizando el lenguaje C#. El banco de prueba está conformado actualmente por cerca de 300 casos. Ésta versión está disponible (vía EditoR.exe 267 KB) en Descargue Léxico de http://lexico.mobi.
El Editor en el menú ayudas muestra los elementos básicos del lenguaje. También puede encontrarse información en las secciones sobre ejemplos y tutoriales en éste blog. La versión Léxico 2.0 del compilador fue programada por Fabio León Ruiz Ruiz antes de terminar sus estudios de pregrado en Ingeniería de Sistemas en la Universidad de Antioquia utilizando el lenguaje de programación Visual Basic .NET. Ésta versión fue empleada como medio de apoyo en el período 2004-2008 en algunos cursos de iniciación en la programación en la universidad mencionada en programas de estudios en Ingeniería de Sistemas tanto presenciales en Medellín como en la modalidad a distancia para las regiones Suroeste y Bajo Cauca del departamento de Antioquia y en algunos cursos del programa Licenciatura en Educación modalidad presencial. También fue utilizada en una de las investigaciones destinadas a auscultar supuestos aportes al ser empleado como medio didáctico con estudiantes de colegios a nivel de educación secundaria. La investigación, una de las modalidades de Semestre de Práctica en Ingeniería de Sistemas, fue realizado por la Licenciada en Educación Sandra María Morales Múnera para optar al título Ingeniera de Sistemas en la Universidad de Antioquia y fue evaluado meritorio. La versión del compilador Léxico 1.0 fue programada por Fabio León Ruiz Ruiz utilizando el lenguaje Pascal y el lenguaje Assembly. Corría sobre ambiente DOS. El régimen de pruebas del compilador se basó en un nuevo banco de 855 muestras o archivos con casos. Fue utilizada posteriormente en otra de las investigaciones que buscaban evaluar el impacto en el proceso aprendizaje-enseñanza al ser empleada como medio de apoyo y que mereció un premio a la investigación. Ésta versión no está disponible. El primer prototipo de controlador de la gramática del lenguaje Léxico fue programado en 1986 empleando el lenguaje Prolog, versión Turbo de la empresa Borland. Evolucionó hasta el prototipo 57 y fue apoyado con un banco de prueba que creció hasta el archivo con código de prueba 855. Ésta versión no está disponible. La gramática inicial fue planteada en 1985 destinada a servir como seudocódigo o medio de apoyo en un curso de iniciación en la programación diseñado para un grupo de amigos y ejecutado los sábados en las tardes en instalaciones prestadas de un colegio de secundaria después de terminar la semana laboral y antes del encuentro festivo de fin de semana. Ecured.cu. (2016).
Sintaxis La sintaxis de programación es el conjunto de normas que regulan y coordinan las distintas variables y su asociación. En la lengua, la sintaxis es el conjunto de normas y leyes combinatorias que estructuran la construcción de oraciones y textos. La sintaxis hace referencia a la inclusión de sujeto y predicado y al rol de las palabras en relación con otras. En las ciencias de la computación, la sintaxis comprende un concepto equivalente. Para la informática, la sintaxis es un grupo de normas que funcionan gobernando la vinculación de las distintas variables que configuran las instrucciones operativas. En programación, existen tres variables relevantes: la sintaxis, la semántica y la jerarquía. La primera tiene que ver con que un lenguaje de programación de un software o aplicación puede entenderse como una serie de caracteres en particular en combinación. La sintaxis viene
a estar compuesta de las reglas que determinan si dicha combinación o "string" es válida o no y, por lo tanto, operativa. Dentro de esa sintaxis también pueden encontrarse gramáticas y expresiones regulares. Esto quiere decir que existen caminos comunes que son usados a menudo por los programadores a la hora de trabajar asociando variables y caracteres.
Términos comunes a la hora de hablar de sintaxis de programación son: los identificadores, las palabras reservadas, las literales o constantes y los símbolos especiales. Es común que en determinadas aplicaciones o programas recibamos un error clasificado por el mismo programa como "Error de sintaxis"; esto hace referencia a una falla en la programación de dicho software o en la combinación de las variables en su uso. Como usuarios, al ejecutar una operación o comando, probablemente veríamos un botón, menú u opción. Sin embargo, en el código de programación o 'backend' del programa o aplicación, se vería una sintaxis particular de asociación de caracteres.
Definición ABC. (2016).
Semantica SEMANTICA Las reglas que determina el significado de los programas constituyen la semántica de los lenguajes de programación. Es más difícil de especificar que la sintaxis. Los siguientes son algunos enfoques para especificar la semántica de los lenguajes:
Semántica Interpretativa (u Operacional) Un lenguaje de máquina tiene su semántica definida por el computador. Un programa en lenguaje de máquina "significa" exactamente lo que el computador hace cuando el programa "corre" o se ejecuta. Sin embargo, con un lenguaje de alto nivel no se puede dejar que el computador defina la semántica del lenguaje, puesto que no es posible "correr programas y ver" hasta que se tenga un compilador. No se puede tener un compilador y saber qué es correcto hasta haber definido lo que los programas significan. Este enfoque interpretativo para definir la semántica de los lenguajes de programación consiste en postular una máquina abstracta y proveer reglas para la ejecución de programas sobre esta máquina abstracta. Así, estas reglas definen el significado de los programas. Usualmente, la máquina abstracta se caracteriza por un estado consistente de todos los objetos datos, sus valores, y los programas con sus contadores de programa. Las reglas semánticas especifican cómo el estado es transformado por las diversas construcciones de los lenguajes de programación.
Traducción La traducción de un lenguaje assembly a lenguaje de máquina (que es directa y comprensible), forma una especificación semántica muy usada para un lenguaje assembly. El compilador para un lenguaje de alto nivel sobre una máquina específica llega a ser la definición semántica del lenguaje.
Definición Axiomática Se pueden definir reglas que relacionan los datos antes y después de la ejecución de cada programa. Estas reglas se pueden usar para proveer teoremas acerca de la relación E/S de un programa. Este enfoque tiene la ventaja que puede usarse para definir semánticas para un aparte más que para todos los aspectos de un lenguaje.
Definición Extensible En este enfoque se definen ciertas operaciones primitivas y el significado del lenguaje en términos de estas primitivas. Ejemplo LISP.
Semántica Matemática o Denotacional Los objetos matemáticos corresponden a programas que son definidos, y reglas abstractas para traducir programas a estos objetos abstractos.
LA ESTRUCTURA JERARQUICA DE LOS LENGUAJES DE PROGRAMACIÓN Un lenguaje de programación es una notación para especificar una secuencia de operaciones a realizar sobre objetos datos. Estos se pueden agrupar en una jerarquía de árbol, cuyas unidades son comunes y familiares a la mayoría de los lenguajes. En el tope de la jerarquía está el programa propiamente tal, que es la unidad de ejecución básica. Luego viene una entidad que puede ser compilada, y que se compone de sentencias y expresiones.
1.1 LENGUAJES DE ALTO NIVEL Un lenguaje de programación es un medio para comunicar algoritmos al computador. Existen cientos de lenguajes de programación los cuales difieren en el grado de clausura a un lenguaje natural o matemático por una parte, y al lenguaje de máquina por otra. También difieren en el tipo de problema para el cual funcionan mejor. Algunos aspectos de los lenguajes de alto nivel que los hacen preferibles a los lenguajes de máquina o assembly son: Facilidad de Entender. Un programa fácil de leer la notación más natural de describir algoritmos
en y
lenguaje
de de
alto
nivel es: escribir
Un buen lenguaje de programación debería proveer aspectos para el diseño modular contemplando operadores, estructura de datos, flujo de control.
Naturalidad. Facilidad de poder expresar estructuradas, estructura natura del algoritmo)
un
algoritmo
en
el
lenguaje
(sentencias
Portabilidad. Posibilidad de ejecutar programas en una variedad de máquinas Eficiencia de Uso. Considerar aspectos del lenguaje como de los programas. Compilación eficiente. Existen aspectos que hacen más legibles los programas en lenguajes de alto nivel:
Estructuras de Datos Reglas de Alcance que permitan modificaciones en partes de un programa sin afectar otras partes del mismo
Flujo de Control que identifique claramente las estructuras de ciclo de un programa Subprogramas que permitan diseño modular.
Un compilador también puede ayudar a producir programas confiables. Por ejemplo, un compilador puede chequear si los tipos de operandos son compatibles; puede advertir al usuario si hay posibilidad de usar una variable antes de ser definida, o si una referencia a un arreglo puede estar fuera de los límites.
1.1
ELEMENTOS
SINTÁCTICOS
DE
UN
LENGUAJE
DE
PROGRAMACIÓN
Conjunto de Caracteres Es la primera etapa en el diseño de la sintaxis de un lenguaje Casi todos tienen el mismo conjunto de letras y dígitos La diferencia está en los caracteres especiales Incide en la determinación del tipo de equipo para la E/S Identificadores Sintaxis básica: string de letra y/o dígito comenzando con letra Se introducen caracteres especiales que facilitan la lectura Operadores La mayoría aritméticos relacionales lógicos
de
los
lenguajes
Palabras Claves y Reservadas
tiene
un
conjunto
estándar
de
operadores:
Palabra clave: identificador usado como parte fija de la sintaxis de una sentencia Palabra reservada: palabra clave que no puede ser usada como identificador El análisis sintáctico se facilita usando palabras reservadas
Generalmente una sentencia comienza con palabras claves designando el tipo de sentencia. Comentarios y Palabras Opcionales La mayoría de los lenguajes permite incluir comentarios Los comentarios no son considerados durante la compilación.
en
los
programas
Espacios en Blanco Varía su inclusión entre un lenguaje y otro Delimitadores Es un elemento sintáctico para marcar el comienzo y/o el fin de una unidad sintáctica
Ejemplo BEGIN
.... END
Las características son: Realza la lectura simplifica el análisis sintáctico elimina ambigüedades delimita explícitamente frontera o cota de una construcción sintáctica. Formato Libre y Fijo Una sintaxis es libre si las sentencias del programa se pueden escribir en cualquier parte de una línea sin observar la posición o salto de línea. Ejemplo Pascal Una sintaxis es fija si utiliza la posición en la línea para proporcionar información. Ejemplo estrictamente fija, máquina; parcialmente fija, Fortran
Expresiones Son unidades sintácticas básicas con las cuales se construyen sentencias. Hay distintas formas para escribir una expresión: infija, prefija, postfija (inorden, preorden, postorden).
Sentencias Son las componentes sintácticas más importantes de los lenguajes de programación. Algunos tienen formato básico de sentencia. Existen diferentes sintaxis para cada tipo diferente de sentencia.
En general existen sentencias simples y estructuradas.
Estructura de Programa y Subprograma La organización sintáctica de un programa y la definición de subprograma es variada. Definición variada de subprograma - cada definición de subprograma es tratada como una unidad sintáctica separada - Las principales estructuras de los programas son: bloques, subprogramas - El bloque se ejecuta cuando la secuencia de ejecución llega. El procedimiento es llamado explícitamente.
Xuletas.es. (2016).
Bibliografía Anon, (2016). [online] Available at: Author Morales Article title: Lenguajes de programación: ¿qué son y para qué sirven? Website title: Corporación Colombia Digital| URL: https://colombiadigital.net/actualidad/articulos-informativos/item/7669-lenguajes-deprogramacion-que-son-y-para-que-sirven.html [Accessed 17 Nov. 2016].
Ecured.cu. (2016). Lenguaje de programación Lexico - EcuRed. [online] Available at: https://www.ecured.cu/Lenguaje_de_programaci%C3%B3n_Lexico [Accessed 17 Nov. 2016]. Definición ABC. (2016). Definición de Sintaxis. [online] Available http://www.definicionabc.com/tecnologia/sintaxis.php [Accessed 17 Nov. 2016].
at:
Xuletas.es. (2016). Lenguajes de programación: sintaxis, semántica y jerarquía | Informática y Telecomunicaciones | Xuletas, chuletas para exámenes, apuntes y trabajos. [online] Available at: https://www.xuletas.es/ficha/lenguajes-de-programacion-sintaxis-semantica-y-jerarquia/ [Accessed 17 Nov. 2016].