Está en la página 1de 27

República Bolivariana de Venezuela

Ministerio de Poder Popular para la educación.


Nacional Experimental de Guayana.
Asignatura: Técnicas de Programación 1
Sección: 1

Profesor: Integrantes:

José L. Rodríguez Bolívar Edelis

Campos Argenis

Arcia Bryan

Hopp Erich

Puerto Ordaz diciembre 2019.


INTRODUCCIÓN 3

CONTENIDO

1. Lenguaje de Programación
1.1Definición 4
1.2Clasificación 4,5
1.3Características 6
1.4Tipos 6,7,8,
1.4Usos 8,9

2. Evolución histórica 9, 10,11,12

3. Procesos para la solución de un problema


con computador. 12,13,14

4. Sintaxis del lenguaje de programación (Ejemplo) 14, 15,16,17

5. Semántica (Ejemplos) 17

6. Procesos de compilación de un
programa en C. 18,19,20

7.Programación modular 20,21


7.1Metodología e implementación 21

8. Programación recursiva 21
8.1Metodología e implementación 22

9. Paradigmas.
9.1 ¿Qué es un paradigma? 22
9.2Paradigmas de la programación 23
9.3Tipos 23,24
9.4Ejemplos 24,25

CONCLUSIÓN 26

BIBLIOGRAFÍA 27
Los lenguajes de programación han sido desde siempre una herramienta importante
para el programador, sirven como puente de información, gracias a ellos se puede
traducir una secuencia de instrucciones del lenguaje natural a otro lenguaje, cercano a la
máquina.

Los lenguajes de programación están destinados a distintos ámbitos, cada uno de los
cuales responden a características propias del lenguaje y a que, estén orientados. Estos
han ido evolucionando significativamente con el tiempo, siendo cada uno mejor que el
anterior, enfocados a procesos muy concretos, su uso en la actualidad es bastante
amplio ya que están presentes en un sinfín de actividades frecuentemente en
nuestro diario vivir.

La primera generación de computadoras surgió por la década del 50 con la aparición


de la UNIVAC y la ENIAC, de la mano de los tubos de vacío, donde la única manera de
programarlas era mediante el lenguaje máquina, basado únicamente en números
binarios.

La aparición casi 10 años después de la segunda generación, gracias a la invención del


transistor, dieron grandes avances en el terreno de la programación de esas
computadoras, primero mediante los lenguajes ensambladores y muy poco tiempo
después con los denominados lenguajes de alto nivel como FORTRAN (1964) y
COBOL (1959).

La tercera generación de computadoras toma relevancia cuando surgieron los chips de


circuitos integrados y los discos magnéticos, pero ello solo aporta mejoras en el terreno
del hardware, aumentando considerablemente la velocidad, confiabilidad y capacidad de
almacenamiento de las computadoras.

Con la llegada de la cuarta generación, en la década del 70, sería más que una
evolución al pasar del chip especializado para uso en la memoria y procesos lógicos, al
procesador de propósito general en un chip o microprocesador.

El avance progresivo del lenguaje de programación traído, por cada generación ha


brindado hasta la actualidad grandes mejoras, facilitando así cada vez más, el hecho de
programar.
Es un lenguaje formal que, mediante una serie de instrucciones, permiten escribir un
conjunto de órdenes, acciones consecutivas, datos y algoritmos para, de esa forma, crear
programas que controlen el comportamiento físico y lógico de una máquina.

Mediante este lenguaje se comunican el programador y la máquina, permitiendo


especificar, de forma precisa, aspectos como:

_Cuáles datos debe operar un software específico.

_Cómo deben ser almacenados o transmitidos esos datos.

_Las acciones que debe tomar el software dependiendo de las circunstancias variables.

En otras palabras, un lenguaje de programación es un sistema estructurado de


comunicación, el cual está conformado por conjuntos de símbolos, palabras claves,
reglas semánticas y sintácticas que permiten el entendimiento entre un programador y
una máquina.

Por su nivel:

o Bajo nivel. No hay abstracciones de datos ni de procesos. Ejemplos:


Assembler, editores hexadecimales.
o Alto nivel. Permite abstraer varios aspectos que simplifican la programación. En
general son algo menos eficientes que los de bajo nivel. Ejemplos, Pascal, Ada,
Java, C++, Prolog, etc.

Por su jerarquización:

o 1° Generación de computadoras – 1946 a 1955: para esta época, la tecnología


utilizada eran los tubos al vacío, esos mismos son famosos por haber posibilitado
el desarrollo de la electrónica hacia la mitad del siglo XX. Por esta razón, los
ordenadores eran desarrollados con válvulas electrónicas de vacío. Se
caracterizaban principalmente por tener un tamaño enorme, no disponer de
sistema operativo, sino de una tarjeta perforada para almacenar toda la
información y eran utilizados exclusivamente por las fuerzas militares y la
industria científica
o 2° Generación de computadoras – 1958 a 1964: La gran hazaña de esta
generación fue la sustitución de válvulas de vacío por los transistores,
acompañada del uso de memorias de núcleo de ferritas y tambores magnéticos
para almacenar la información, los cuales permitieron la fabricación de
computadoras de menor tamaño, caracterizadas por una mejor potencia, rapidez y
fiabilidad. En este periodo se empezaron a utilizar lenguajes de alto nivel como
ALGOL, FORTRAN y COBOL, siendo estos dos últimos los lenguajes de
programación que ayudó a desarrollar la gran científica de la computación Grace
Hopper, gracias a sus conocimientos sobre FLOW-MATIC
o 3° Generación de computadoras – 1964 a 1971: Con la invención del circuito
cerrado o chip por parte de los ingenieros estadounidenses Jack S. Kilby y Robert
Noyce se revoluciona por completo el diseño de las computadoras. Aparecen los
primeros discos magnéticos y los componentes electrónicos se integran en una
sola pieza o chip que albergan en su interior condensadores, transistores y diodos,
los cuales ayudan a aumentar notablemente la velocidad de carga y a reducir el
consumo de energía eléctrica. En esta generación las computadoras se
caracterizan por tener mayor flexibilidad y fiabilidad, ser de menor tamaño y
ocupar poco espacio.

o 4° Generación de computadoras – 1971 a 1981: A partir de esta etapa las


computadoras personales se convierten en las protagonistas de la informática.
Todos los elementos que conforman la CPU ahora se almacenan en un circuito
integrado conocido como microprocesadores y empiezan a surgir una gran gama
de estos elementos fabricados por la compañía Intel, reconocida en la actualidad
como el mayor fabricante de circuitos integrados del mundo. El primer
microprocesador denominado 4004 lo desarrolla Intel en 1971 y en 1974 se
presenta al mercado el primero diseñado para uso general. Es en esta generación
donde aparece el disquete.

Por el manejo de las instrucciones:

o Imperativos: Un programa se especifica por medio de una secuencia de


instrucciones que se ejecutan de esa manera, en secuencia. Ej: FORTRAN.
o Orientados a objetos: Soportan abstracciones de datos y procesos conocidas
como objetos. Ej: C++, Ada, Java, Smalltalk.
o Funcionales: Especifican una solución como un conjunto y una composición de
funciones. Ej: Miranda, Haskell, ML, Camel.
o Lógicos: Permiten obtener resultados lógicos o relaciones entre elementos. Ej:
Prolog.
o Concurrentes, paralelos y distribuidos: Soportan procesamiento paralelo, es
decir, al mismo tiempo. Pascal Concurrente, Java (hilos).

Por la programación:

o Imperativos: Incluye los paradigmas imperativo y orientado a objetos.


o Declarativos: Incluye los paradigmas funcional y lógico.
Simplicidad: Aumenta la legibilidad y la facilidad de escritura. Aumenta la
confiabilidad del software ya que al ser más sencillo, la verificación y detección de
errores es más sencilla.

Estructuras de control: Controlan el flujo de ejecución de los programas. Influyen en la


legibilidad y en la facilidad de escritura. Aumentan el control que el programador tiene
sobre un programa, y por lo tanto aumenta la confiabilidad. Ejemplos son las estructuras
IF-THEN-ELSE, WHILE, FOR, etc.

Tipos y estructuras de datos: son muy útiles ya que organizan la información de acuerdo
a su tipo y en estructuras de datos convenientes. Los tipos y estructuras de datos
aumentan la confiabilidad ya que es posible el chequeo de tipos.

Diseño de sintaxis: Determina la manera en que se combinan los símbolos y elementos


de un lenguaje. Influye en la legibilidad y facilidad de escritura, en la confiabilidad y en
los costos.

Soporte para abstracción: minimiza la complejidad de los problemas a resolver


agrupándolos de acuerdo a ciertas características. Está comprobado que esta
característica aumenta la legibilidad y facilidad de escritura así como la confiabilidad.

Expresividad: Se refiere a la naturalidad con la que un lenguaje expresa sus sentencias.


Aumenta la legibilidad y la confiabilidad, y en general disminuye la facilidad de
escritura y el costo de aprendizaje.

Se clasifican en dos tipos:

 Lenguajes de Programación de Bajo Nivel: son aquellos utilizados


fundamentalmente para controlar el “hardware” del ordenador y dependen
totalmente de la máquina y no se pueden utilizar en otras máquinas. Están
orientados exclusivamente para la máquina Estos lenguajes son los que ordenan
a la máquina operaciones fundamentales para que pueda funcionar. Utiliza
básicamente ceros, unos y abreviaturas de letras. Estos lenguajes también se
llaman de código máquina. Son los más complicados, pero solo los usan
prácticamente los creadores de las máquinas. Con este tipo de lenguajes
programan la asignación y liberación de memoria, el uso de punteros, el poder
usar paso por valor y por referencia, la creación de tipos de datos, etc.
Este lenguaje sirve de interfaz y crea un vínculo inseparable entre el hardware
y el software.

Además, ejerce un control directo sobre el equipo y su estructura física. Para


aplicarlo adecuadamente es necesario que el programador conozca sólidamente
el hardware.
Éste se subdivide en dos tipos:
Lenguaje máquina

Es el más primitivo de los lenguajes y es una colección de dígitos binarios o


bits (0 y 1) que la computadora lee e interpreta y son los únicos idiomas que la
computadora entiende.

Ejemplo: 10110000 01100001

No entendemos muy bien lo que dice ¿verdad? Por eso, el lenguaje


ensamblador nos permite entender mejor a qué se refiere éste código.

Lenguaje ensamblador

El lenguaje ensamblador es el primer intento de sustitución del lenguaje de


máquina por uno más cercano al utilizado por los humanos.

Un programa escrito en éste lenguaje es almacenado como texto (tal como


programas de alto nivel) y consiste en una serie de instrucciones que
corresponden al flujo de órdenes ejecutables por un microprocesador.
Sin embargo, dichas máquinas no comprenden el lenguaje emsamblador, por
lo que se debe convertir a lenguaje máquina mediante un programa llamado
Ensamblador.

Este genera códigos compactos, rápidos y eficientes creados por el


programador que tiene el control total de la máquina.

 Lenguajes de Programación de Alto Nivel: Estos lenguajes son más parecidos


al lenguaje natural humano y no dependen de la máquina y sirven
fundamentalmente para crear programas informáticos que solucionan diferentes
problemas. Son los más usados por los programadores y por todo del mundo que
realiza programas informáticos.

Tienen como objetivo facilitar el trabajo del programador, ya que utilizan unas
instrucciones más fáciles de entender.
Además, el lenguaje de alto nivel permite escribir códigos mediante idiomas
que conocemos (español, inglés, etc.) y luego, para ser ejecutados, se traduce al
lenguaje de máquina mediante traductores o compiladores.

Traductor.

Traducen programas escritos en un lenguaje de programación al lenguaje


máquina de la computadora y a medida que va siendo traducida, se ejecuta.

Lenguajes de programación de alto nivel.

• 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.

Un Lenguaje de programación sirve, en primer lugar, para poder programar. Dado que
existen muchos lenguajes de programación distintos, podríamos sacar en conclusión que
cada uno sirve para algo diferente, y es más o menos así. Por ejemplo, HTML y
JavaScript son lenguajes que se usan en el campo del desarrollo y diseño web, junto con
CSS. Sin embargo, C y C++ son algo enfocado completamente al desarrollo de
software.

Hay más casos, pero todos tienen el mismo objetivo. Así, desde una perspectiva
empresarial, el lenguaje es lo que hace que el programador pueda hacer funcionar una
web y construirla desde cero, o desarrollar una app para iOS y Android.

Los lenguajes de programación tienen muchos usos. Los hay para aplicaciones muy
específicas y de propósito general.

A diario interactuamos con distintos tipos de máquinas como celulares, tablets y


computadores. Todos ellos tienen un lenguaje de programación que ayuda a traducir las
órdenes del usuario para que pueda utilizarlos.

El primer lenguaje de programación nació en 1801

Joseph Marie Jacquard fue el inventor del telar programable. Este inventor francés es
el responsable de la programación. No es el inventor de la misma, ya que las cosas han
cambiado mucho desde entonces, pero está claro que creó el primer sistema de
instrucciones para un ''computador''.

Y es que, sus tarjetas programables se introducían en un telar que leía el código, las
instrucciones, de dichas tarjetas y automatizaba procesos. Evidentemente, se trataba de
crear diferentes diseños en tejidos, pero esto permitió que cualquiera con el telar y las
tarjetas perforadas crearan estos diseños sin ser expertos en la materia.

Se estima que este fue el primer lenguaje de programación, ya que estas tarjetas
perforadas se utilizaron en las primeras máquinas computacionales creadas por Charles
Babbage, y posteriormente por los primeros ordenadores.

El primer lenguaje de programación, el de Ada Lovelace

Entre 1842 y 1843, Ada Lovelace se propuso traducir las memorias del matemático
italiano Luigi Menabrea y, mientras lo hacía, creó un lenguaje de programación a mano
para calcular la serie de números de Bernoulli con la máquina de Babbage.

1936, entra en escena Alan Turing

Años más tarde, y nuevos lenguajes de programación mediante, Turing revolucionó la


computación con su Máquina de Turing. Se trata de una máquina que demostraba que,
con un algoritmo, podían resolver cualquier problema matemático.

Si había un algoritmo, la máquina podía resolver el problema.

1957 y el primer lenguaje de programación real


En el 57, John W.Backus inventa el primer lenguaje de programación de alto nivel, el
primero que utilizaron los programadores reales, Fortran. Fue un lenguaje que surgió
como vía de escape de Backus para ''trabajar menos'' en su tarea de calcular trayectorias
de misiles, ya que el lenguaje, y el compilador, eran capaces de hacer el trabajo mucho
más rápido.

En 1959 llegó COBOL

Tras Fortran como primer compilador, llegó COBOL como la culminación de varios
otros sistemas de programación. El objetivo era crear un lenguaje de programación
universal que pudiera ser usado en cualquier ordenador.

No estaba mal pensado, ya que en los años 60 había distintos ordenadores que no eran
compatibles entre sí, y de esta manera las empresas podían fichar talentos sin tener que
enseñar cómo usar los compiladores y diferentes lenguajes que se usaban en sus
empresas, si es que eran distintos.

Además, permitió modernizar la informática de gestión.

1964 y el nacimiento de BASIC

Beginner's All-purpose Symbolic Instruction Code, o BASIC, es una familia de


lenguajes de programación de alto nivel que se desarrolló como una herramienta de
enseñanza, pero gracias a su popularidad, se comenzó a adoptar en otros sistemas hasta
el punto de que, a día de hoy, sigue siendo muy importante, con programas como
Gambas o Visual Basic que se siguen utilizando. Uno de los puntos más importantes de
la historia de los lenguajes de programación.

1970, Pascal

Niklaus Wirth fue un profesor que creó Pascal como, igual que BASIC, herramienta
de enseñanza de programación, pero pronto trascendó como lenguaje de programación
para crear todo tipo de aplicaciones. De hecho, aunque hoy se sigue usando, su
presencia en aplicaciones es menor, pero sí se ve en escuelas de programación junto al
compilador Free Pascal.

1972, llega C

C fue creado por Dennis Ritchie como un lenguaje de programación en el que solo
unas pocas instrucciones pueden traducir cada elemento del lenguaje. C se usó como
intermediario entre lenguajes, ya que era un lenguaje de bajo nivel, pero con el tiempo,
este lenguaje de programadores para programadores se ha utilizado en todo tipo de
software, y ha sido la base de otros lenguajes de programación que se utilizan
muchísimo en la actualidad.
Y C++ en 1979

C++ es uno de los lenguajes de programación más utilizados... para todo. La intención
de Bjarne Stroustrup fue la de extender al lenguaje de programación C mecanismos para
manipular objetos. Un punto clave en la historia de los lenguajes de programación.

1991: HTML, Python y Visual Basic

Tras años ''jugueteando'' con compiladores y lenguajes de programación enfocados a


objetos, llegó la década de Internet. Aquí se produjo un gran crecimiento de lenguajes
de programación, y aunque no se ''inventó nada nuevo'', sí se maduraron ideas del
pasado.

En 1991 surgieron Python, Visual Basic y HTML, dos lenguajes que han definido las
páginas web y HTML, un lenguaje de marcado de hipertexto que es el ''código'' de
Internet.

1995: Java, JavaScript y PHP

En 1995 nacieron Java, JavaScript y PHP, otros tres de los lenguajes que han definido
la manera en la que entendemos el mundo debido a que, básicamente, están presentes en
el 50% de las páginas web y en muchísimas aplicaciones. Aunque se ha intentado dejar
de lado a favor de nuevos lenguajes, tanto Java como JavaScript siguen siendo
importantísimos.

2001 y C#

Con la llegada de la década de los 2000, llegaron nuevos lenguajes de programación,


como Action Script. Sin embargo, fue en 2001 cuando llegaron C# y Visual Basic
.NET. Junto a los años anteriores con Java y HTML, C# culmina el mejor momento de
la historia de los lenguajes de programación.

El primero se ha consolidado como uno de los lenguajes de programación más


importante para crear todo tipo de programas. El segundo es... bueno, su nombre lo
indica, un lenguaje orientado a objetos que se asocia a Visual Basic, pero que es
totalmente distinta y está implementado sobre el framework .NET de Microsoft.

Scratch en 2006

Seguimos con la historia de los lenguajes de programación hablando de Scratch, la


''revolución'' de los lengauejs de programación. Se trata de un lenguaje de programación
visual desarrollado por el MIT que consiste en un lenguaje desarrollado para que niños,
adolescentes y adultos aprendan a programar de manera visual sin tener demasiada idea
de código.

2009, Go, de Google

Go también es conocido como Goland y es un, nada más y nada menos que, un
lenguaje de programación diseñado por Google. Está inspirado en C, pero es un
lenguaje bastante más complicado.

Está enfocado a procesos muy concretos, pero el objetivo principal es la seguridad.


Por eso, Go no tiene aritmética de punteros. Siendo de Google, en cuanto se empiece a
popularizar, seguro que gana un importante hueco en el desarrollo de Android.

Programación Kotlin

Kotlin, en 2012

Kotlin es uno de los lenguajes de programación de moda no por ser el más fácil, sino
porque Google lo ha ''marcado'' como el mejor lenguaje de programación para Android.

Fue en el Google I/O de hace unas semanas cuando los de Mountain View echaron
una mano a JetBrains, desarrolladores de Kotlin, afirmando que Android será cada vez
más Kotlin y, por tanto, dando más facilidades para los desarrolladores que trabajen con
dicho lenguaje.

Swift, en 2013

Estos últimos años, no ha habido una evolución de los lenguajes de programación,


pero sí se han creado diferentes lenguajes específicos para agilizar la programación.
Kotlin es uno de ellos y Swift, otro. Creado por Apple, es un lenguaje de programación
clave para programar en iOS.

Aunque hay lenguajes que nos hemos dejado en el tintero, estos son algunos de los
momentos clave en la historia de la programación. Ahora solo queda ver qué surge a
partir de ahora.

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 del problema.

2. Análisis de la solución.

3. Diseño de la solución.
4. Codificación.

5. Prueba y depuración.

6. Documentación.

7. Mantenimiento.

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.

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.

La sintaxis se refiere a las formas y estructura que debe tener un lenguaje para su
correcta interpretación. Está formado por un conjunto de reglas básicas que debemos
tener en cuenta a la hora de escribirlo. Este concepto se aplica a situaciones de la vida
cotidiana, como al escribir una oración o una frase, o en el simple hecho de hablar.
Debemos expresar lo que queremos con una sintaxis adecuada para que terceras
personas puedan entender de manera sencilla y correcta lo que queremos decir.

La mayoría de los lenguajes de programación son puramente textuales, es decir,


utilizan secuencias de texto que incluyen palabras, números y signos de puntuación, de
manera similar a los lenguajes naturales escritos.

Por otra parte, hay algunos lenguajes de programación que son más gráficos en su
naturaleza y utilizan relaciones visuales entre símbolos para especificar un programa.

La sintaxis de un lenguaje de programación describe además las combinaciones


posibles de los símbolos que forman un programa sintácticamente correcto.
Con esta gramática se especifica lo siguiente:

 Una expresión puede ser un átomo o una lista.


 Un átomo puede ser un número o un símbolo.
 Un número es una secuencia continua de uno o más dígitos decimales,
precedido opcionalmente por un signo (+) o un signo (-).
 Un símbolo es una letra seguida de cero o más caracteres (excluyendo
espacios).
 Una lista es un par de paréntesis que abren y cierran. (con cero o más
expresiones en medio).

No todos los programas sintácticamente correctos ➾ son semánticamente correctos.

Muchos programas sintácticamente correctos tienen inconsistencias respecto de las


reglas del lenguaje y pueden resultar en un error de traducción o de ejecución.

Puede tener un significado que no se estaba tratando de construir.

Ejemplo: Manuel es un soltero casado también.

� Está bien formada gramaticalmente, pero expresa un significado inválido,


contradictorio.

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 de los lenguajes tiene un conjunto estándar de operadores:


_Aritméticos

_Relacionales

_Lógicos

Palabras Claves y Reservadas

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 en los programas.

Los comentarios no son considerados durante la compilación.

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.

La semántica es el campo que tiene que ver con el estudio riguroso desde un punto
de vista matemático del significado de los lenguajes de programación. Esto se hace
evaluando el significado de cadenas sintácticamente legales definidas por un lenguaje
de programación específico, mostrando el proceso computacional involucrado. En el
caso de que la evaluación fuera de cadenas sintácticamente ilegales, el resultado sería
no-cómputo. La semántica describe el proceso que una computadora sigue cuando
ejecuta un programa en ese lenguaje específico. Esto se puede mostrar describiendo la
relación entre la entrada y la salida de un programa, o una explicación de cómo el
programa se ejecutará en cierta plataforma, y consecuentemente creando un modelo de
computación.

if (a>b) max := a else max := b;

El significado corresponde a la construcción algorítmica

Si… entonces… sino…

Además la expresión después de If debe tener un resultado lógico (Verdad o Falso.)

Los programas pueden separarse en su parte sintáctica (la estructura gramatical) y su


parte semántica (el significado). Por ejemplo, las siguientes sentencias de programación
utilizan diferentes sintaxis (en diferentes lenguajes), pero resultan en la misma
semántica (hacen lo mismo):

1) x += y; (C, Java, etc)

2) x := x + y; (Pascal)

3) x = x + y (BASIC, Fortran)

En general, las tres operaciones lo que hacen (semántica) es sumar Y con X y almacenar
el resultado en X.
La compilación de un programa en C implica tres pasos:

 Preproceso: el preprocesador toma un archivo de código fuente de C y se ocupa


de los #includes, #defines y otras directivas de preprocesador. La salida de este
paso es un archivo C \”puro\” sin directivas de preprocesador.

 Compilación: el compilador toma la salida del preprocesador y produce un


archivo de objeto a partir de él.

 Enlace: el enlazador toma los archivos de objetos producidos por el compilador


y produce una biblioteca o un archivo ejecutable.

Preprocesamiento.

El preprocesador maneja las directivas del preprocesador, como #include y #define.


Es agnóstico de la sintaxis de C, por lo que debe utilizarse con cuidado.

Funciona en un archivo fuente C a la vez, reemplazando las directivas #include con el


contenido de los archivos respectivos (que generalmente son declaraciones),
sustituyendo las macros (# define) y seleccionando diferentes porciones de texto
dependiendo de #if, #ifdef y #ifndef directivas.

El preprocesador trabaja en una secuencia de tokens de preprocesamiento. La


sustitución de macros se define como la sustitución de tokens con otros tokens (el
operador ## permite fusionar dos tokens cuando tiene sentido).

Después de todo esto, el preprocesador produce una salida única que es una secuencia
de tokens resultantes de las transformaciones descritas anteriormente. También agrega
algunos marcadores especiales que le dicen al compilador de dónde proviene cada línea
para que pueda usarlos para producir mensajes de error razonables.

Algunos errores pueden producirse en esta etapa con un uso inteligente de las
directivas #if y #error.

Compilación.

El paso de compilación se realiza en cada salida del preprocesador. El compilador


analiza el código fuente de C puro (ahora sin directivas de preprocesador) y lo convierte
en código de ensamblaje. Luego invoca el back-end subyacente (ensamblador en la
cadena de herramientas) que ensambla ese código en un código de máquina
produciendo un archivo binario real en algún formato (ELF, COFF, a.out, …). Este
archivo de objeto contiene el código compilado (en forma binaria) de los símbolos
definidos en la entrada. Los símbolos en los archivos de objetos se denominan por
nombre.

Los archivos de objetos pueden referirse a símbolos que no están definidos. Este es el
caso cuando usa una declaración y no proporciona una definición para ella. Al
compilador no le importa esto, y felizmente producirá el archivo de objeto siempre que
el código fuente esté bien formado.

Los compiladores generalmente le permiten detener la compilación en este punto.


Esto es muy útil porque con él puede compilar cada archivo de código fuente por
separado. La ventaja que esto proporciona es que no necesita recompilar todo si solo
cambia un solo archivo.

Los archivos de objetos producidos se pueden colocar en archivos especiales


denominados bibliotecas estáticas, para luego reutilizarlos más fácilmente.

Es en esta etapa que se informan los errores \”regulares\” del compilador, como los
errores de sintaxis o los errores de resolución de sobrecarga fallidos.

Enlace

El enlazador es lo que produce la salida de compilación final de los archivos de objeto


que el compilador produjo. Esta salida puede ser una biblioteca compartida (o dinámica)
(y aunque el nombre es similar, no tienen mucho en común con las bibliotecas estáticas
mencionadas anteriormente) o un archivo ejecutable.
Vincula todos los archivos de objetos reemplazando las referencias a símbolos no
definidos con las direcciones correctas. Cada uno de estos símbolos se puede definir en
otros archivos de objetos o en bibliotecas. Si están definidas en bibliotecas distintas de
la biblioteca estándar, debe informar al vinculador sobre ellas.

Uso de bibliotecas

C es un lenguaje muy reducido. Muchas de las posibilidades incorporadas en forma de


funciones en otros lenguajes, no se incluyen en el repertorio de instrucciones de C. Por
ejemplo, el lenguaje no incluye ninguna facilidad de entrada/salida, manipulación de
cadenas de caracteres, funciones matemáticas, gestión dinámica de memoria, etc.

Esto no significa que C sea un lenguaje pobre. Todas estas funciones se incorporan a
través de un amplio conjunto de bibliotecas que no forman parte, hablando propiamente,
del lenguaje de programación. No obstante, como indicamos anteriormente, algunas
bibliotecas se enlazan automáticamente al generar un programa ejecutable, lo que
induce al error de pensar que, por ejemplo, printf() es una función propia del lenguaje C.

Aun teniendo en cuenta estas consideraciones, el conjunto de bibliotecas disponible y


las funciones incluidas en ellas pueden variar de un compilador a otro y el programador
responsable deberá asegurarse que cuando usa una función, ésta forma parte de la
biblioteca estándar: este es el procedimiento más seguro para construir programas
transportables entre diferentes plataformas y compiladores.

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 programación 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 subproblemas más simples, y estos a su vez en otros subproblemas más simples.
Esto debe hacerse hasta obtener subproblemas 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 o análisis descendente (Top-Down).

Un 'módulo' es cada una de las partes de un programa que resuelve uno de los
subproblemas 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.
Si bien un módulo puede entenderse como una parte de un programa en cualquiera de
sus formas y variados contextos, en la práctica se los suele tomar como sinónimos de
procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una
función o un procedimiento, ya que el mismo puede contener muchos de ellos. No debe
confundirse el término "módulo" (en el sentido de programación modular) con términos
como "función" o "procedimiento", propios del lenguaje que lo soporte.

Metodología: Un procedimiento es un subprograma que realiza una tarea específica.


Para invocarlo, es decir, para hacer que se ejecute, basta con escribir su nombre en el
cuerpo de otro procedimiento o en el programa principal. Pero, hay que tener muy en
cuenta que su declaración debe hacerse antes de que sea llamado por otro módulo.

Implementación: Cada módulo tiene una interfaz, esto es, una definición de lo que
realiza y cuál es la forma de invocar a sus servicios. Por ejemplo, la interfaz de un
módulo puede venir en forma de un conjunto de subrutinas, cada una especificando
cuántos parámetros necesita y de qué tipo son.

La interfaz se distingue de la implementación, que será la escritura del código que


desempeña las funciones especificadas en la interfaz. En la implementación se pueden
construir subrutinas de apoyo a las ofrecidas en la interfaz e incluso invocar a subrutinas
de otros módulos.

Habitualmente la interfaz de un módulo es pública, es decir, visible para el resto del


programa y por tanto utilizable, mientras que la implementación es privada, o sea que
no es visible y por tanto ningún otro módulo puede alterarla o saber de sus funciones
internas, variables, etc.

La aplicación estará formada por módulos interdependientes, en una relación cliente-


servidor.

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.
Generalmente, si la primera llamada al subprograma se plantea sobre un problema de
tamaño u orden N, cada nueva ejecución recurrente del mismo se planteará sobre
problemas, de igual naturaleza que el original, pero de un tamaño menor que N. De esta
forma, al ir reduciendo progresivamente la complejidad del problema a resolver, llegará
un momento en que su resolución sea más o menos trivial (o, al menos, suficientemente
manejable como para resolverlo de forma no recursiva). En esa situación diremos que
estamos ante un caso base de la recursividad.
-Metodología: Crear una subrutina recursiva requiere principalmente la definición de
un "caso base", y entonces definir reglas para subdividir casos más complejos en el caso
base. Para una subrutina recursiva es esencial que con cada llamada recursiva, el
problema se reduzca de forma que al final llegue al caso base.

-Implementación: Una aplicación de importancia de la recursión en ciencias de la


computación es la definición de estructuras de datos dinámicos tales como listas y
árboles. Las estructuras de datos recursivos pueden crecer de forma dinámica hasta un
tamaño teórico infinito en respuesta a requisitos del tiempo de ejecución; por su parte,
los requisitos del tamaño de un vector estático deben declararse en el tiempo de
complicación.

Un paradigma de programación es un estilo de desarrollo de programas. Es decir, un


modelo para resolver problemas computacionales. Los lenguajes de programación,
necesariamente, se encuadran en uno o varios paradigmas a la vez a partir del tipo de
órdenes que permiten implementar, algo que tiene una relación directa con su sintaxis.

Consiste en un método para llevar a cabo cómputos y la forma en la que deben


estructurarse y organizarse las tareas que debe realizar un programa. Se trata de 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.

El paradigma de programación que actualmente es 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.
-En general, la mayoría de paradigmas son variantes de los dos tipos principales de
programación, imperativa y declarativa. En la programación imperativa se describe paso
a paso un conjunto de instrucciones que deben ejecutarse para variar el estado del
programa y hallar la solución, es decir, un algoritmo en el que se describen los pasos
necesarios para solucionar el problema.

En la programación declarativa las sentencias que se utilizan lo que hacen es describir el


problema que se quiere solucionar; se programa diciendo lo que se quiere resolver a
nivel de usuario, pero no las instrucciones necesarias para solucionarlo. Esto último se
realizará mediante mecanismos internos de inferencia de información a partir de la
descripción realizada.

A continuación se describen algunas de las distintas variantes de paradigmas de


programación:

1.- Paradigma de programación Imperativo: Los programas que podemos clasificar


como imperativos, son todos aquellos que contienen un grupo de datos acompañados de
una serie de instrucciones, con los cuales se le indica a la computadora cómo realizar
una tarea específica. Con estos elementos se logra formar una abstracción de los datos y
del código en la memoria principal. Este modelo ha tenido gran éxito entre los
programadores por su sencillez y cercanía a la arquitectura de las computadoras
convencionales.

Ejemplo: C, BASIC o Pascal son un claro ejemplo de lenguaje de programación


imperativo, ya que forma una abstracción de la máquina de Von-Neumann, que se
caracteriza por: la memoria principal y la unidad central de proceso.

2.- Programación declarativa: está basada 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.
La solución es obtenida mediante mecanismos internos de control, sin especificar
exactamente cómo encontrarla (tan solo se le indica a la computadora qué es lo que se
desea obtener o qué es lo que se está buscando). No existen asignaciones destructivas, y
las variables son utilizadas con transparencia referencial. Los lenguajes declarativos
tienen la ventaja de ser razonados matemáticamente, lo que permite el uso de
mecanismos matemáticos para optimizar el rendimiento de los programas. Unos de los
primeros lenguajes funcionales fueron Lisp y Prolog.

3.- Paradigma de programación Funcional: Los programas funcionales son aquellos que
tienen como objetivo principal el uso de funciones matemáticas puras. El modelo
funcional es muy parecido a una calculadora, el usuario introduce una expresión inicial
y es evaluada por el lenguaje. En este modelo el programador utiliza definiciones de
funciones para obtener un valor irreductible. El modelo funcional se caracteriza por
utilizar funciones de orden superior, sistemas de inferencia de tipos, polimorfismo,
listas por comprehensión y evaluación perezosa.

Ejemplo: Haskell es un lenguaje de programación funcional, en este lenguaje podemos


encontrar las características más significativas del paradigma funcional.

4.- Paradigma de programación Lógica: Los programas que podemos clasificar como
lógicos, son aquellos que están basados en premisas (hechos) y que a partir de esas
reglas (supuestos verdaderos), el programa nos retorna un valor verdadero. Con este
paradigma de programación, es muy sencillo modelar un programa, basado en lógica
matemática. Además se puede escribir código más legible y eficiente, lo que hace más
sencilla la tarea de dar mantenimiento al programa.

Ejemplo: Prolog es un lenguaje de programación lógica, este lenguaje se basa en un


conjunto de hechos y de reglas. Su forma de trabajo, consiste en realizar una pregunta,
para obtener por inferencia los resultados, los cuales deduce a partir de la relación entre
las premisas y las reglas.

5.- Paradigma de programación Orientada a Objetos

La programación orientada a objetos, como su nombre lo indica, es toda aquella que se


basa en la construcción de objetos y sus métodos, para que puedan interactuar entre
ellos. Este tipo de programación se basa principalmente en el diseño del sistema y
utiliza varias técnicas; entre las más utilizadas podemos encontrar: herencia,
polimorfismo y encapsulamiento.

Ejemplo: Java es un lenguaje de programación orientada a objetos, en este lenguaje


podemos encontrar muchas de las características que conforman a la programación
orientada a objetos.

-Supongamos que necesitamos un algoritmo que devuelva un número de Fibonacci


(dada su posición en la sucesión. A continuación se presentan algunas
implementaciones en cada uno de los lenguajes mencionados.

Fibonacci en C:

int fibonacci ( int n ){

if (n == 0 || n == 1 )

return n;

else if( n > 1 )

return fibonacci ( n - 1 ) + fibonacci (n - 2 );


else

return -1; /* -1 indica que la función falló */

Fibonacci en Haskell:

fibonacci 0 = 0

fibonacci 1 = 1

fibonacci n = fibonacci ( n - 1) + fibonacci ( n - 2 )

Fibonacci en Prolog:

fibonacci (0,0).

fibonacci (1,1).

fibonacci (N, F) :-

N > 1,

N2 is N - 2, fibonacci ( N2 , F2 ),

N1 is N - 1, fibonacci ( N1 , F1 ),

F is F1 + F2

Fibonacci en Java:

public class fibonacci

static int fibonacci ( int n )

int f = -1; // -1 indica que la función falló

if ( n == 0 || n == 1)

f = n;

else if ( n > 1 )

f = fibonacci ( n - 1 ) + fibonacci ( n - 2 );

return f;
Los lenguajes de programación permiten generar códigos sencillos y
comprensibles debido a la naturalidad de alguno de ellos, desde la creación del primer
lenguaje de programación han ido evolucionando y tomando como base de estudio
los primeros lenguajes para así realizar mejoras a la creación de posteriores.

Un lenguaje de programación es básicamente un sistema de comunicación que permite


que el computador pueda entender, mediante instrucciones ordenadas, lo que el
programador desea que comprenda y ejecuté.

Es importante tomar en cuenta que al momento de aprender un lenguaje de


programación cualquiera que sea, es recomendable establecer una serie pasos,
antes y durante la ejecución del programa ya que esto nos facilitará la realización
de algún problema.

Por el cual es importante volver a mencionar los siguientes puntos:

1. Definición del problema.

2. Análisis de la solución.

3. Diseño de la solución.

4. Codificación.

5. Prueba y depuración.

6. Documentación.

7. Mantenimiento.

El correcto análisis de un problema nos garantiza el hecho de que la solución de dicho


problema sea la más acertada.
fuentes electrónicas:

http://conogasi.org/articulos/lenguaje-de-programacion/

https://es.ccm.net/contents/304-lenguajes-de-programacion

https://www.caracteristicass.de/lenguajes-de-programacion/

http://pasossoluciondeproblemas.blogspot.com/

https://colombiadigital.net/actualidad/articulos-informativos/item/7669-lenguajes-de-
programacion-que-son-y-para-que-sirven

https://picandocodigo.net/2008/recursividad-en-programacion/

https://www.preceden.com/timelines/310321-evoluci-n-de-los-lenguajes-de-
programacion

https://parceladigital.com/2016/04/20/la-evolucion-de-los-lenguajes-de-
programacion

https://computerhoy.com/reportajes/tecnologia/historia-lenguajes-programacion-
428041

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/El_proceso_de_compilaci%
C3%B3n

https://es.wikipedia.org/wiki/Programaci%C3%B3n_modular

http://sopa.dis.ulpgc.es/diplomatura/practicas9798/modular2.html

http://teleformacion.edu.aytolacoruna.es/PASCAL/document/modular.htm#procedimien
tos

https://es.wikipedia.org/wiki/Recursi%C3%B3n_(ciencias_de_computaci%C3%B3n)#E
structuras_de_datos_recursivo_(recursi%C3%B3n_estructural)

http://webdelprofesor.ula.ve/nucleotrujillo/jalejandro/Prog2/Unidad3.pdf

https://neoattack.com/neowiki/lenguaje-de-programacion/

https://www.nextu.com/blog/generaciones-de-las-computadoras/

También podría gustarte