Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LENGUAJE DE PROGRAMACION
FACULTAD
INGENIERIAS
ESCUELA
COMPUTACION Y SISTEMAS
CICLO
II
ALUMNO
LIMA-PERU
Índice
Índice............................................................................................................................................2
Introducción.................................................................................................................................3
Antecedentes...............................................................................................................................4
Desarrollo del tema......................................................................................................................5
Lenguaje de Programación.......................................................................................................5
Características de los lenguajes de programación....................................................................6
Sintaxis de los lenguajes de programación...............................................................................7
Semántica de los lenguajes de programación..........................................................................8
Elementos de los lenguajes de programación..........................................................................8
Atributos de las variables y constantes...................................................................................11
Estructuras estáticas...............................................................................................................12
Implementación.....................................................................................................................15
Lenguajes imperativos y funcionales......................................................................................16
Interpretación y compilación..................................................................................................17
Técnica....................................................................................................................................18
Paradigmas.............................................................................................................................18
Usos y aplicaciones.....................................................................................................................20
Ejemplos de Aplicación...............................................................................................................22
Conclusiones..............................................................................................................................26
Recomendaciones......................................................................................................................27
Bibliografía Física........................................................................................................................28
Bibliografía Virtual......................................................................................................................28
2
Introducción
Las personas para comunicarse entre sí utilizan un lenguaje que puede ser oral o
escrito. En general, para comunicar algo siempre se usa un lenguaje.
3
Antecedentes
En la década de 1990:
4
Desarrollo del tema
Lenguaje de Programación
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de
programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los
lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el
marcado de páginas web que no es propiamente un lenguaje de programación, sino un
conjunto de instrucciones que permiten estructurar el contenido de los documentos).
Permite especificar de manera precisa sobre qué datos debe operar una
computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar
bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta
estar relativamente próximo al lenguaje humano o natural. Una característica relevante
de los lenguajes de programación es precisamente que más de un programador pueda
usar un conjunto común de instrucciones que sean comprendidas entre ellos para
realizar la construcción de un programa de forma colaborativa. (Wikipedia, 2017)
5
Características de los lenguajes de programación
Tenemos muchas características, pero en general las más deseables son que el
lenguaje sea expresivo, legible y eficiente. Otras las enumeramos a continuación.
6
Sintaxis de los lenguajes de programación
Una sintaxis se evalúa según varios criterios: que sea fácil de leer, de escribir, de
verificar (chequear en busca de errores), fácil de traducir y que carezca de ambigüedad.
Esta última significa que un mismo código puede tener 2 o más interpretaciones o
traducciones posibles, en cuyo caso no se puede decidir que alternativa elegir.
No terminales: Son identificadores que tienen una definición hecha con más
metavariables, de manera que es posible reemplazarlas por sus definiciones.
7
La semántica de un lenguaje de programación se refiere al significado que
adoptan las distintas sentencias, expresiones y enunciados de un programa. La
semántica engloba aspectos sensibles al contexto, a diferencia de la sintaxis que
considera aspectos libres de contexto.
Valores y referencias: los valores son el estado de determinada celda o grupo de celdas
de la memoria, mientras que las referencias indican la posición de esa celda en
memoria. Estos 2 conceptos están muy involucrados con los punteros. La mayoría de
los lenguajes los soportan, aunque son una conocida fuente de errores de programación.
Por ejemplo, el chequeo de tipos depende del contexto porque debemos saber el
tipo esperado y el actual y determinar si son compatibles. El tipo esperado lo obtenemos
del contexto analizando la definición de la variable. Si la variable num1 está definida de
tipo String, y más adelante le queremos asignar el valor 1000, se producirá un error de
tipo. (Gómez), 2017)
8
Pueden ser subprogramas, variables, rótulos y sentencias. Tienen atributos, a los
que se asocian a través de un mecanismo llamado ligadura.
Ligadura estática: Son menos flexibles, pero más seguras, detección temprana de
errores y permiten una mayor eficiencia. Se produce en lenguajes orientados a la
compilación.
Ligadura dinámica (en tiempo de ejecución): son más flexibles pero menos
seguras. Mayor costo de ejecución. Se produce en lenguajes orientados a la ejecución.
Corresponden a las que no se pueden realizar en un paso anterior y necesitan del
programa en ejecución para hacerlas. Un ejemplo es la asignación de un valor a un nodo
de un árbol. Como antes de la ejecución no se conoce la locación de memoria en la que
se almacena el nodo, es imposible hacer la asignación. En este caso el atributo de
locación se conoce sólo en tiempo de ejecución.
Declaraciones: Son sentencias que crean una ligadura entre un tipo, un nombre y
un valor. A veces el valor se puede omitir, por ej: String suNombre.
Declaraciones implícitas: ocurren cuando se usa por primera vez la variable. Son
muy inseguras y pueden provocar errores difíciles de detectar. Un ejemplo es
FORTRAN, en el que las variables que empiezan con i son de tipo entero.
Recursivas: se las utiliza para definir estructuras dinámicas como árboles, grafos
y listas. Se llaman recursivas porque la definición se incluye a sí misma.
9
Ambiente de referenciamiento: Es el conjunto de entidades que son visibles o
pueden ser referenciadas en una parte determinada del código. El uso de una entidad
fuera del ambiente de referenciamiento al que pertenece produce un error. El lenguaje C
dentro de UNIX provee un mecanismo novedoso para pasar ambientes de
referenciamiento de un lugar a otro, y se llama "conductos".
10
Nombre: el nombre es la cadena de caracteres que está asociada con una
posición de memoria. De esta manera se logra mejorar la legibilidad (al descartar el uso
de la memoria a través de números).
Alias: muchas veces puede ser útil disponer de más de un nombre para una
variable. Con el uso de alias pueden surgir problemas con respecto a las referencias.
Estructuras estáticas
Tipos primitivos:
Tipos numéricos:
11
Enteros: se representan en memoria como una secuencia de bits que de acuerdo a
su posición y valor (0 o 1) simbolizan el valor.
Tipos estructurados:
Arreglos: almacenan tipos iguales. El acceso a sus elementos es, en general, por
posición. Los arreglos pueden ser estáticos o dinámicos, y redimensionables o no. Los
arreglos se almacenan de manera continua en memoria, salvo que sean
redimensionables.
Unión: es una locación de memoria asociada a muchos tipos de datos, o sea que
puede ser interpretada de distintas maneras. La provee el lenguaje C.
12
Conjunto: es una estructura de datos con muchos elementos distintos, es decir
que no los hay repetidos. Los conjuntos permiten hacer operaciones de unión,
intersección y diferencia entre ellos.
Estructuras dinámicas: son ideales para modelar situaciones de la vida real, con
capacidades excepcionales de flexibilidad.
Árboles: cada nodo almacena 2 o más apuntadores a sus nodos hijos. Tenemos
muchos tipos de árboles, como árboles binarios, B+, B*, etc. Además pueden tener una
referencia al nodo padre (uno solo) y esto permite recorrer el árbol de abajo hacia arriba.
Grafos: cada nodo almacena una o varias referencias a los nodos con los que está
conectado. Si el grafo es dirigido (con dirección de lectura) hay que proyectar
almacenar esta información. Los grafos son útiles en aplicaciones que usan mapas de
ciudades, sistemas operativos, videojuegos, etc. Requieren algoritmos especiales para
recorrerlos ya que es una de las estructuras dinámicas más complejas.
El chequeo dinámico, por su parte, es más flexible pero mucho menos seguro y
confiable que el estático. Aumenta la sobrecarga durante la ejecución. El chequeo se
realiza en tiempo de ejecución.
Una manera de lograr cierto nivel de abstracción son los "tipos genéricos". Son
abstracciones de datos que permiten ser usados en distintos contextos y usar una misma
implementación para distintos tipos y estructuras de datos. Ej: En Java están
implementados con el uso de la clase Object, Number, Container, etc. Ahorra trabajo y
esfuerzo al programador, a la vez que simplifican la implementación.
En esta función el tipo del parámetro no está indicado, pero como la función
mod se aplica únicamente a tipos enteros se infiere este tipo para "n". En algunos casos
es muy difícil hacer la inferencia debido al alto polimorfismo de la función usada (a la
cantidad de tipos que acepta). Por ejemplo en fun (a,b) = a+b; es difícil determinarlo
porque "+" puede sumar números o concatenar cadenas de texto.
Instrucciones
14
Unidades
Implementación
Se puede también utilizar una alternativa para traducir lenguajes de alto nivel.
En lugar de traducir el programa fuente y grabar en forma permanente el código objeto
que se produce durante la compilación para utilizarlo en una ejecución futura, el
programador sólo carga el programa fuente en la computadora junto con los datos que
se van a procesar. A continuación, un programa intérprete, almacenado en el sistema
operativo del disco, o incluido de manera permanente dentro de la máquina, convierte
cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo
necesario durante el procesamiento de los datos. El código objeto no se graba para
utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y
traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los
15
pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver a ser interpretada
en cada ejecución repetida del ciclo, lo cual hace que el programa sea más lento en
tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero
más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada
momento el código completo). El intérprete elimina la necesidad de realizar una
compilación después de cada modificación del programa cuando se quiere agregar
funciones o corregir errores; pero es obvio que un programa objeto compilado con
antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a
cada paso durante una ejecución del código.
Interpretación y compilación
16
Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías:
Lenguaje interpretado
Lenguaje compilado
Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del
código fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje
legible, hace que cualquier persona pueda conocer los secretos de fabricación de un
programa y, de ese modo, copiar su código o incluso modificarlo. Por lo tanto, existe el
riesgo de que los derechos de autor no sean respetados. Por otro lado, ciertas
aplicaciones aseguradas necesitan confidencialidad de código para evitar las copias
ilegales (transacciones bancarias, pagos en línea, comunicaciones seguras...).
Lenguajes intermediarios
Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el
programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de
compilación intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo
tanto diferente al archivo fuente) y no ejecutable (requeriría un intérprete). Los applets
Java, pequeños programas que a menudo se cargan en páginas web, son archivos
compilados que sólo pueden ejecutarse dentro de un navegador web (son archivos con
la extensión .class). (EcuRed, 2017)
Técnica
Para escribir programas que proporcionen los mejores resultados, cabe tener en
cuenta una serie de detalles.
17
Corrección. Un programa es correcto si hace lo que debe hacer tal y como se
estableció en las fases previas a su desarrollo. Para determinar si un programa hace lo
que debe, es muy importante especificar claramente qué debe hacer el programa antes
de desarrollarlo y, una vez acabado, compararlo con lo que realmente hace.
Claridad. Es muy importante que el programa sea lo más claro y legible posible,
para facilitar así su desarrollo y posterior mantenimiento. Al elaborar un programa se
debe intentar que su estructura sea sencilla y coherente, así como cuidar el estilo en la
edición; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de
creación como en las fases posteriores de corrección de errores, ampliaciones,
modificaciones, etc. Fases que pueden ser realizadas incluso por otro programador, con
lo cual la claridad es aún más necesaria para que otros programadores puedan continuar
el trabajo fácilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para
delimitar secciones de código. Otros, por diversión o para impedir un análisis cómodo a
otros programadores, recurren al uso de código ofuscado.
Paradigmas
Los programas se pueden clasificar por el paradigma del lenguaje que se use
para producirlos. Los principales paradigmas son imperativos y declarativos.
18
Los programas que usan un lenguaje declarativo especifican las propiedades que
la salida debe conocer y no especifica cualquier detalle de implementación. Dos amplias
categorías de lenguajes declarativos son los lenguajes funcionales y los lenguajes
lógicos. Los lenguajes funcionales (como Haskell) no permiten asignaciones de
variables no locales, así, se hacen más fáciles, por ejemplo, programas como funciones
matemáticas. El principio detrás de los lenguajes lógicos (como Prolog) es definir el
problema que se quiere resolver (el objetivo) y dejar los detalles de la solución a el
sistema de Prolog. El objetivo es definido dando una lista de sub-objetivos. Cada sub-
objetivo también se define dando una lista de sus sub-objetivos, etcétera. Si al tratar de
buscar una solución, una ruta de sub-objetivos falla, entonces tal sub-objetivo se
descarta y sistemáticamente se prueba otra ruta.
La forma en la cual es programa se crea puede ser por medio de texto o de forma
visual. En un lenguaje de programación visual, los elementos son manipulados
gráficamente en vez de especificarse por medio de texto. (EcuRed, 2017)
19
Usos y aplicaciones
(CCM, 2017)
20
definir el texto y otros elementos que puedes ver en las páginas web. HTML significa
HyperText Markup Lenguaje («lenguaje de marcas de hipertexto») y es muy fácil de
aprender. Luego ya depende de si queremos una web más o menos elaborada podremos
profundizar en este lenguaje. Por ejemplo, el lenguaje de programación CSS (Cascading
Style Sheets) son hojas que sirven para dar “estilo” a las páginas web como su color,
definir su fondo, tipos de letra…etc
21
Ejemplos de Aplicación
“Hola mundo” escrito en varios lenguajes de programación.
ActionScript
1
2 _root.createTextField("mytext",1,100,100,300,100);
mytext.multiline = true;
3 mytext.wordWrap = true;
4 mytext.border = false;
5
6 myformat = new TextFormat();
7 myformat.color = 0xff0000;
myformat.bullet = false;
8 myformat.underline = true;
9
10 mytext.text = "Hola Mundo";
11 mytext.setTextFormat(myformat);
12
ASP
Basic
1 CLS
2 PRINT "Hola Mundo"
Brainfuck
1 ++++++++++[>++++++++++<-]>++++.---.+++++++..+++.
2 >++++[>+++++++++++<-]>.------------.[-]<<
3 ++++++++.--------.+++.------.--------.[-]
<+[>++++++++++<-]>.[-]<
4
1 #include <stdio.h>
2
3 int main()
4 {
5 printf("Hola mundo");
return 0;
6 }
7
22
C#
1
2 using System;
3
namespace HelloNameSpace
4
5 {
6
7 public class HelloWorld
8
9 {
10
11 static void Main(string[] args)
12
13 {
14
Console.WriteLine("Hola Mundo!");
15
16 }
17
18 }
19
20 }
21
C++
1 #include <iostream>
2
3 using namespace std;
4
5 int main() {
6
7 cout << "Hola Mundo" << endl;
8
return 0;
9
10
}
11
CFML
1 <cfoutput>
2 Hola mundo
3 </cfoutput>
COBOL
1 #include <stdio.h>
2
3 int main(int argc, char* argv[])
4 {
5 printf("¡Hola, Mundo!\n");
6
return 0;
7
8 }
9
Icon
1 procedure main ()
2 write ( "Hola Mundo" );
3 end
Java
24
5
JavaScript
Lisp
LOGO
Pascal
1 program Hello;
2 begin
3 writeln ('Hola mundo')
end.
4
PHP
1 <?php
2
3 echo "Hola Mundo";
4
5 ?>
Python
Conclusiones
25
Hoy en día utilizamos aplicaciones para todo, programas especializados en
diferentes tareas, etc…si queremos saber qué hay detrás de todo eso necesitamos nadar
en el maravilloso e interesante mundo de los lenguajes de programación y así entender
por qué cuando a un juego le doy al botón “play” puedo empezar a jugar, o
sencillamente por qué puedo hacer una suma en una calculadora online.
¿Te imaginas que pudieras ser capaz de programar tú mismo cómo funciona un
robot y que haga lo que tú le digas? Interesante, ¿no?, o ¿crear esa aplicación para móvil
que todavía no existe y estás deseando poner en práctica esa idea genial?....pues ¡manos
a la obra!
26
Recomendaciones
27
Bibliografía Física
Bibliografía Virtual
28