Índice
Introducción 2
Lenguaje de programación 3
Clasificación de los lenguajes de programación 3
Proceso para la solución de un problema con computador 4
Sintaxis 7
Semántica 9
Las fases de compilación de un programa 9
Programación modular 11
Recursividad 12
Paradigmas 12
Tipos mas comunes de paradigmas de programación 13
Conclusión 16
Bibliografía 17
INTRODUCCIÓN.
Cuando usamos una computadora, se intentado resolver un problema. Puede ser un
problema de negocios, que involucra ganancias y pérdidas; un problema científico que
emplea modelos de comportamiento físico; una investigación estadística que evalúa la
posibilidad de que ocurra algún evento.
La forma más fácil y eficaz de automatizar un problema es mediante un lenguaje de
computadora, ha habido miles de años de trabajo en matemáticas para este fin. Los
lenguajes de programación están especificados por reglas para formar instrucciones
correctas, organizándolas en módulos, someterlas hacia un compilador, el cual traduce
el código en un lenguaje comprensible para una máquina en particular, y finalmente
ejecutar el programa, es decir, someter la entrada hacia la computadora, la cual
transforma en una salida de acuerdo con las instrucciones en el programa.
En general, una computadora, sólo es capaz de realizar tres operaciones básicas:
1. Sumar, restar, multiplicar y dividir dos valores numéricos.
2. Comparar dos valores numéricos o alfabéticos (comprobar sin son iguales,
determinar si el primero es mayor que el segundo, si son diferentes, etc.).
3. Almacenar o recuperar información.
Con estas sencillas operaciones utilizadas y combinadas de manera adecuada,
mediante lo que se denomina Programa de computadora, se pueden llegar a realizar
tareas increíblemente complejas que aporten la solución a un determinado problema,
ya sea administrativo, científico, o de cualquier otro tipo.
Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos
que pueden ser llevados a cabo por máquinas como las computadoras.
Los lenguajes de programación se pueden clasificar según varios criterios. La
agrupación más importante es por: nivel de abstracción, propósito, método de
ejecución y paradigma de programación.
Clasificación de los lenguajes de programación según su Nivel de Abstracción:
• Lenguajes de Bajo Nivel son Lenguajes de código máquina, son un conjunto
de instrucciones en código binario que el ordenador es capaz de ejecutar
directamente, específicos de cada tipo de procesador o CPU. Ejemplos:
Lenguaje de máquina y lenguajes ensambladores.
• Lenguajes de Alto Nivel más parecidos al lenguaje natural, cercanos al
problema, nos olvidamos de la estructura interna del ordenador Ejemplos: C,
Basic, Java.
Clasificación de los lenguajes de programación según su Propósito:
1. Lenguajes de Propósito General permiten la implementación de
prácticamente cualquier algoritmo, el nivel de abstracción es más uniforme,
proporciona razonable rendimiento. Ej. Pascal, C, C++, Java, Delphi, Lisp,
Scheme.
2. Lenguajes de Propósito Específico tienen por lo general un conjunto
muy restringido de características y un alto nivel de abstracción para cumplir
tareas especificas como el procesamiento de textos, gráficos, audio, video e
ingeniería. Ejemplos: Snobol, SQL, Matlab
Clasificación de los lenguajes de programación según su método de Ejecución:
1. Lenguajes Compilados traducen el código fuente del programa a código
máquina o código objeto. Ejemplos: C, Pascal
2. Lenguajes Interpretados ejecutan línea a línea las instrucciones de un
programa. Requieren del código fuente para ejecutar el programa. Ejemplos:
Perl, Lisp.
Clasificación de los lenguajes de programación según su Paradigma de
Programación:
1. Lenguajes Imperativos son abstracciones de alguna secuencia de
instrucciones que especifican con detalle el orden de ejecución del programa.
Ejemplos: Fortran, Algol, Ada, Pascal, C, C++
2. Lenguajes Declarativos expresan lo que el programa debe lograr sin
prescribir cómo hacerlo, en términos de secuencias de acciones que deben
tomarse. Ejemplos: SQL, HTML, RPG
3. Lenguajes Funcionales constan de un conjunto de funciones pre-
definidas. Ejemplos: Lisp, Scheme, Common Lisp, ML, CAML
4. Lenguajes de Lógicos expresan tareas utilizando la lógica formal
matemática. Ejemplo: Prolog.
5. Lenguajes Orientados a Objetos crean un sistema de clases y objetos
siguiendo el esquema del mundo real para definir los objetos, acciones y
forma de comunican entre objetos. Ejemplos: C++, Java.
Proceso para la solución de un problema con computador
La solución de un problema por computadora, requiere de siete pasos, dispuestos de
tal forma que cada uno es dependiente de los anteriores, lo cual indica que se trata de
un proceso complementario y por lo tanto cada paso exige el mismo cuidado en su
elaboración. Los siete pasos de la metodología son los siguientes:
1. Definición de problema:
Es el enunciado del problema, el cual debe ser claro y completo. Es fundamental
conocer y delimitar por completo el problema, saber qué es lo que se desea que realice
la computadora, mientras esto no se conozca del todo, no tiene caso continuar con el
siguiente paso.
2. Análisis de la solución:
Consiste en establecer una serie de preguntas acerca de lo que establece el problema,
para poder determinar si se cuenta con los elementos suficientes para llevar a cabo la
solución del mismo.
3. Diseño de la solución:
Una vez definido y analizado el problema, se produce a la creación del algoritmo
(Diagrama de flujo o pseudocódigo) en el cual se da la serie de pasos ordenados que
nos proporcione un método explicito para la solución del problema.
4. Codificación:
Consiste en escribir la solución del problema (de acuerdo al pseudocódigo); en una
serie de instrucciones detalladas en un código reconocible por la computadora; es decir
un lenguaje de programación (ya sea de bajo o alto nivel), a esta serie de instrucciones
se le conoce como PROGRAMA.
5. Prueba y depuración:
Prueba es el proceso de identificar los errores que se presenten durante la ejecución
de programa, es conveniente que cuando se pruebe un programa se tomen en cuenta
los siguientes puntos:
- Trata de iniciar la prueba con una mentalidad saboteadora, casi disfrutando la tarea
de encontrar un error.
- Sospechar de todos los resultados que arroje la solución, con lo cual se deberán
verificar todos.
- Considerar todas las situaciones posibles, normales y aun las anormales.
La depuración consiste en eliminar los errores que se hayan detectado durante la
prueba, para dar paso a una situación adecuada y sin errores.
6. Documentación:
Es la guía o comunicación escrita que sirve como ayuda para usar el programa, o
facilitar futuras modificaciones. A menudo, un programa escrito por una persona es
usado por muchas otras, por ello la documentación es muy importante; esta debe
presentarse en tres formas: EXTERNA, INTERNA y al USUARIO FINAL.
-Interna: Consiste en los comentarios o mensajes que se agregan al código de
programa, que aplican las funciones que realizan ciertos procesos, cálculos o formulas,
para el entendimiento del mismo.
-Externa: Está integrada por los siguientes elementos: Descripción del problema,
nombre del autor, diagrama de flujo y/o pseudocódigo, listas de variables y constantes,
y codificación del programa, esto con la finalidad de permitir su posterior adecuación a
los cambios.
- Usuario Final: es la documentación que se le proporciona al usuario final, es una guía
que indica al usuario como navegar en el programa, presentando todas las pantallas y
menús que se va a encontrar y una explicación de los mismos, no
contiene información de tipo técnico.
7. Mantenimiento:
Se lleva a cabo después de terminado el programa, cuando se ha estado trabajando
un tiempo, y se detecta que es necesario hacer un cambio, ajuste
y/o complementación al programa para que siga trabajando de manera correcta. Para
realizar esta función el programa debe estar debidamente documentado, lo cual
facilitará la tarea.
Sintaxis
La sintaxis de un lenguaje de programación se define como el conjunto de reglas que
deben seguirse al escribir el código fuente de los programas para considerarse como
correctos para ese lenguaje de programación.
Errores sintácticos: cuando existe código inválido que el compilador no entiende.
Por ejemplo, se intenta multiplicar una variable string (cadena) con un integer (entero)
en C. El compilador lo detectará porque no puede compilarlo así. O cuando se olvida
cerrar algún paréntesis o algún corchete, es un error sintáctico.
La sintaxis de Java Script es muy similar a la de otros lenguajes de programación como
Java y C. Las normas básicas que definen la sintaxis de Java Script son las siguientes:
• No se tienen en cuenta los espacios en blanco y las nuevas líneas: como
sucede con XHTML, el intérprete de Java Script ignora cualquier espacio en blanco
sobrante, por lo que el código se puede ordenar de forma adecuada para
entenderlo mejor (tabulando las líneas, añadiendo espacios, creando nuevas
líneas, etc.)
• Se distinguen las mayúsculas y minúsculas: al igual que sucede con la sintaxis
de las etiquetas y elementos XHTML. Sin embargo, si en una página XHTML se
utilizan indistintamente mayúsculas y minúsculas, la página se visualiza
correctamente, siendo el único problema la no validación de la página. En cambio,
si en Java Script se intercambian mayúsculas y minúsculas el script no funciona.
• No se define el tipo de las variables: al crear una variable, no es necesario
indicar el tipo de dato que almacenará. De esta forma, una misma variable puede
almacenar diferentes tipos de datos durante la ejecución del script.
• No es necesario terminar cada sentencia con el carácter de punto y coma (;):
en la mayoría de lenguajes de programación, es obligatorio terminar cada
sentencia con el carácter ;. Aunque Java Script no obliga a hacerlo, es conveniente
seguir la tradición de terminar cada sentencia con el carácter del punto y coma (;).
• Se pueden incluir comentarios: los comentarios se utilizan para añadir
información en el código fuente del programa. Aunque el contenido de los
comentarios no se visualiza por pantalla, si que se envía al navegador del usuario
junto con el resto del script, por lo que es necesario extremar las precauciones
sobre la información incluida en los comentarios.
Java Script define dos tipos de comentarios: los de una sola línea y los que ocupan
varias líneas.
Ejemplo de comentario de una sola línea:
// a continuación se muestra un mensaje
alert("mensaje de prueba");
Los comentarios de una sola línea se definen añadiendo dos barras oblicuas (//) al
principio de la línea.
Ejemplo de comentario de varias líneas:
/* Los comentarios de varias líneas son muy útiles
cuando se necesita incluir bastante información
en los comentarios */
alert("mensaje de prueba");
semántica
Es el conjunto de reglas que proporcionan el significado de una sentencia o instrucción
de cualquier lenguaje de programación.
- Errores semánticos: el código de programación es válido porque el compilador lo
entiende, pero el programa resultante no hace lo que el programador quiere que haga.
No hay forma de que el compilador detecte estos errores.
Los errores semánticos son "errores lógicos", la lógica detrás del código escrito no
hace lo que el programador cree que hará.
Errores semánticos en C:
// Sumar uno 1 a la variable X
x -= 1;
En este caso estamos restándole 1 a la variable X.
// Sumar 1 a la variable X
y += 1;
En este caso se está sumándole 1 a la variable Y (no a X, que es la que se necesita).
Las fases de compilación de un programa
Fases de Proceso de un compilador
1.- Analizador Léxico:
Realiza un análisis del archivo. La cadena de entrada se lee e izquierda a derecha y se
va agrupando en componentes léxicos, que son secuencias de caracteres con un
significado colectivo. Por ejemplo, identificadores, palabras reservadas, signos de final
de instrucción. Cada componente es asociada a la categoría que pertenece.
2.- Analizador Sintáctico
Realiza un análisis jerárquico agrupado de los componentes léxicos en frases
gramaticales que el compilador utiliza.
3.- Analizador Semántico
Busca errores semánticos, reúne información sobre los tipos; identifica operadores en
base al árbol sintáctico producido en el análisis anterior Ejemplo de error: operación
entre tipos de datos incompatibles, rangos permitidos existencia de variables. En
cualquiera de estos tres análisis pueden producirse errores.
4.- Generador de código intermedio
Algunos compiladores generan una representación explicita del programa fuente. Este
código es independiente de la maquina y a veces se usa en un conjunto con
interpretes, en lenguajes independientes de la plataforma como JAVA. Esta
representación debe ser fácil de producir, ayudar a la optimización y fácil de traducir al
programa objeto.
5.-Optimización
Esta fase trata de mejorar el código intermedio, o las estructuras que generaran el
código definitivo de modo de que resulte un código de maquina más rápido de ejecutar
para guardarlos valores calculados por cada instrucción.
6.- Generador de código
Esta fase final de un compilador. Genera el código objeto, que por lo general consiste
en un código de maquina re localizable o código ensamblador. Las posiciones de
memoria relativas se seleccionan para cada variable. El uso de los registros de la
CPU es relevante.
7.- Agrupación lógica de un compilador
Es la fase de análisis, depende del lenguaje fuente y son independientes de las
maquinas. Controla la corrección del programa fuente, manejando errores en cada
etapa. Produce las estructuras necesarias para la generación del código.
Fase de generación, depende de la maquina y el lenguaje intermedio. Hace uso
intensivo de la tabla de símbolos
Programación modular
La programación modular es un paradigma de programación que consiste en dividir un
programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.
Se presenta históricamente como una evolución de la estructurada para solucionar
problemas de programación más grandes y complejos de lo que esta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios
su problemas más simples, y estos a su vez en otros su problemas más simples. Esto
debe hacerse hasta obtener sub problemas lo suficientemente simples como para
poder ser resueltos fácilmente con algún lenguaje de programación. Esta técnica se
llama refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down).
Un 'módulo' es cada una de las partes de un programa que resuelve uno de los su
problemas en que se divide el problema complejo original. Cada uno de estos módulos
tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso
de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz
de comunicación que también debe estar bien definida.
Diagrama del funcionamiento de un subprograma.
Recursividad:
La recursividad es una técnica de programación que se utiliza para realizar una llamada
a una función desde ella misma, de allí su nombre. El ejemplo más utilizado por su fácil
comprensión es el cálculo de números factoriales. El factorial de 0 es, por definición, 1.
Los factoriales de números mayores se calculan mediante la multiplicación de 1 * 2 * ...,
incrementando el número de 1 en 1 hasta llegar al número para el que se está
calculando el factorial. Un algoritmo recursivo es un algoritmo que expresa la solución
de un problema en términos de una llamada a sí mismo. La llamada a sí mismo se
conoce como llamada recursiva o recurrente.
Paradigma
Un paradigma es un conjunto de creencias, normas y ejemplos, como un modelo a
seguir de algo, ya sea de una norma o cultura. Un paradigma es un concepto que se
utiliza como modelo para alguna acción que se vaya a realizar. La palabra paradigma
proviene del griego paradigma que quiere decir modelo. La palabra paradigma se
forma a partir de los prefijos ‘para’ y ‘deigma’.
Un paradigma de programación es una propuesta tecnológica adoptada por una
comunidad de programadores y desarrolladores cuyo núcleo central es incuestionable
en cuanto que únicamente trata de resolver uno o varios problemas claramente
delimitados; la resolución de estos problemas debe suponer consecuentemente un
avance significativo en al menos un parámetro que afecte a la ingeniería de software.
Un paradigma de programación representa un enfoque particular o filosofía para
diseñar soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma
de abstraer los elementos involucrados en un problema, así como en los pasos que
integran su solución del problema, en otras palabras, el cómputo.
Tiene una estrecha relación con la formalización de determinados lenguajes en su
momento de definición. Es un estilo de programación empleado.
Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y
uso, porque nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen
parcial o totalmente.
El paradigma de programación que actualmente es el más utilizado es la "orientación a
objetos" (OO). El núcleo central de este paradigma es la unión de datos y
procesamiento en una entidad llamada "objeto", relacionable a su vez con otras
entidades "objeto".
Tradicionalmente, datos y procesamiento se han separado en áreas diferente del
diseño y la implementación de software. Esto provocó que grandes desarrollos tuvieran
problemas de fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con
la OO y características como el encapsulado, polimorfismo o la herencia, se permitió un
avance significativo en el desarrollo de software a cualquier escala de producción. La
OO parece estar ligada en sus orígenes con lenguajes como Lisp y Simula, aunque el
primero que acuñó el título de "programación orientada a objetos" fue Smalltalk.
Tipos mas comunes de paradigmas de programación
En general la mayoría son variantes de los dos tipos principales, imperativa y
declarativa:
• Programación imperativa o por procedimientos:
Es el más usado en general, se basa en dar instrucciones al ordenador de cómo
hacer las cosas en forma de algoritmos. La programación imperativa es la más
usada y la más antigua, el ejemplo principal es el lenguaje de máquina. Ejemplos
de lenguajes puros de este paradigma serían el C, BASIC o Pascal.
• Programación orientada a objetos:
Está basada en el imperativo, pero encapsula elementos denominados objetos que
incluyen tanto variables como funciones. Está representado por C++, C# o Java,
entre otros, pero el más representativo sería el Smalltalk que está completamente
orientado a objetos.
• Programación dinámica:
Está definida como el proceso de romper problemas en partes pequeñas para
analizarlos y resolverlos de forma lo más cercana al óptimo, busca resolver
problemas en O(n) sin usar por tanto métodos recursivos. Este paradigma está más
basado en el modo de realizar los algoritmos, por lo que se puede usar con
cualquier lenguaje imperativo.
• Programación dirigida por eventos:
La programación dirigida por eventos es un paradigma de programación en el que
tanto la estructura como la ejecución de los programas van determinados por los
sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos
provoquen.
• Programación declarativa:
Está basado en describir el problema declarando propiedades y reglas que deben
cumplirse, en lugar de instrucciones. Hay lenguajes para la programación funcional,
la programación lógica, o la combinación lógico-funcional. Unos de los primeros
lenguajes funcionales fueron Lisp y Prolog.
• Programación funcional:
Basada en la definición los predicados y es de corte más matemático, está
representado por Scheme (una variante de Lisp) o Haskell.
• Programación lógica:
Basado en la definición de relaciones lógicas, está representado por Prolog.
• Programación con restricciones:
Similar a la lógica usando ecuaciones. Casi todos los lenguajes son variantes
del Prolog.
• Programación multi-paradigma:
Es el uso de dos o más paradigmas dentro de un programa. El lenguaje Lisp se
considera multiparadigma.
• Lenguaje específico del dominio o DSL:
Se denomina así a los lenguajes desarrollados para resolver un problema
específico, pudiendo entrar dentro de cualquier grupo anterior. El más
representativo sería SQL para el manejo de las bases de datos, de tipo declarativo,
pero los hay imperativos, como el Logo.
Si bien puede seleccionarse la forma pura de estos paradigmas al momento de
programar, en la práctica es habitual que se mezclen, dando lugar a la programación
multiparadigma o lenguajes de programación multiparadigma.
Índice
Introducción 2
Lenguaje de programación 3
Clasificación de los lenguajes de programación 3
Proceso para la solución de un problema con computador 4
Sintaxis 7
Semántica 9
Las fases de compilación de un programa 9
Programación modular 11
Recursividad 12
Paradigmas 12
Tipos mas comunes de paradigmas de programación 13
Conclusión 16
Bibliografía 17
INTRODUCCIÓN.
Cuando usamos una computadora, se intentado resolver un problema. Puede ser un
problema de negocios, que involucra ganancias y pérdidas; un problema científico que
emplea modelos de comportamiento físico; una investigación estadística que evalúa la
posibilidad de que ocurra algún evento.
La forma más fácil y eficaz de automatizar un problema es mediante un lenguaje de
computadora, ha habido miles de años de trabajo en matemáticas para este fin. Los
lenguajes de programación están especificados por reglas para formar instrucciones
correctas, organizándolas en módulos, someterlas hacia un compilador, el cual traduce
el código en un lenguaje comprensible para una máquina en particular, y finalmente
ejecutar el programa, es decir, someter la entrada hacia la computadora, la cual
transforma en una salida de acuerdo con las instrucciones en el programa.
En general, una computadora, sólo es capaz de realizar tres operaciones básicas:
1. Sumar, restar, multiplicar y dividir dos valores numéricos.
2. Comparar dos valores numéricos o alfabéticos (comprobar sin son iguales,
determinar si el primero es mayor que el segundo, si son diferentes, etc.).
3. Almacenar o recuperar información.
Con estas sencillas operaciones utilizadas y combinadas de manera adecuada,
mediante lo que se denomina Programa de computadora, se pueden llegar a realizar
tareas increíblemente complejas que aporten la solución a un determinado problema,
ya sea administrativo, científico, o de cualquier otro tipo.
CONCLUSIÓN
Como se pudo apreciar existen diversos lenguajes de programación para cada tarea
diferente.
Muchos de ellos ya no se usan, mientras que las nociones de otros han sido
incorporadas a otros lenguajes.
Los lenguajes y las Técnicas de Programación son importantes para la utilización de la
computadora como una herramienta para resolver problemas.
En computación, un Problema consiste en la necesidad de transformar un grupo de
datos iniciales en un grupo diferente de datos finales (resultados).
De este modo, una computadora podrá resolver un problema si alguien desarrolla un
programa que contenga las instrucciones adecuadas que permitan transformar los
datos.
Los lenguajes deben ser confiables, comprensibles, eficientes en términos de tiempo
de ejecución y consumo de espacio, y deben satisfacer las necesidades de una
comunidad, ya sean científicos, hombres de negocios o usuarios no técnicos. Cada
uno estos grupos está acostumbrado a un vocabulario particular y una manera de ver
las cosas; de este modo, existe una gran variedad de lenguajes y muy probablemente
esto continuará siendo así.
Bibliografía
• JOYANES, Aguilar. PROGRAMACION EN C Y C++. Versiones 5.5, 6.0 y 7.0. 2da.
Edición. México, D.F., Ed. INTERAMERICANA - McGRAW-HILL, (c. 1993). 914p.
• Manual de METODOLOGÍA DE LA PROGRAMACIÓN ESTRUCTURADA. Impartido
por L.I.A Ninfa Urania García Ulin. Universidad Juárez Autónoma de Tabasco. 35p.
• [Link]
• [Link]