Sie sind auf Seite 1von 9

Captulo 1

Fundamentos generales de los lenguajes de programacin


Objetivo
El alumno explicar las caractersticas y elementos fundamentales de los lenguajes (1671)

1.1.

Historia de los lenguajes

Un lenguaje de programacin es un lenguaje articial diseado para expresar instrucciones que pueden ser llevadas a cabo por mquinas como las computadoras. De acuerdo al nivel de abstraccin, se clasican en lenguajes de bajo nivel y lenguajes de alto nivel. Existen miles de lenguajes de programacin, muchos de ellos pueden ser encontrados en diversas listas, como: } The Language List en la Universidad de Kansas (http://bit.ly/6uzot). } Lenguajes de programacin en la Wikipedia (http://bit.ly/14GvDzS). } A brief, incomplete, and mostly wrong history of programming languages (http://bit.ly/XaUMQL). } Infografa: Computer Languages History (http://bit.ly/1Dglg6). Las listas son amplias, pero no cubren la historia completa de los lenguajes de programacin, hace falta, por ejemplo, el mtodo de Ada Lovelace (http://bit.ly/OPGL9) para calcular una secuencia de nmeros de Bernoulli utilizando la mquina analtica de Charles Babbage, el propuesto por Alan Turing para su Automatic Computing Engine (http://bit.ly/14GvTiu) o incluso el se olvida que el sistema binario (http://bit.ly/rzyuD) fue propuesto originalmente por Leibniz (http://bit.ly/14GvYTc).

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 2

Figura 1.1: Automatic Computing Engine y Leibniz

1.2.

Elementos de los lenguajes

Un programa es un conjunto de instrucciones que una vez ejecutadas realizarn una o varias tareas en una computadora. Un programa (algoritmo) contiene instrucciones elementales seleccionadas cuidadosamente que pueden ser realizadas por un robot un procesador ; el procesador recibe las rdenes y ejecuta lo que indican, resulta obvio que la disposicin de las instrucciones resulta crucial al momento de llevarlas a cabo. Por tanto, el algoritmo debe incluir instrucciones de control que modiquen la ruta que debe seguir el procesador, adems de indicar que debe hacerse en cada paso, as como el momento en el cual debe detenerse. Se ha probado que para implementar cualquier algoritmo, son sucientes tres construcciones bsicas para control de ujo: } Secuencia. } Condicional. A continuacin se describe cada una de ellas y se muestra su representacin tanto en pseudocdigo. } Ciclos iterativos (repetitivos).

1.2.1.

Ejecucin secuencial.

La ejecucin secuencial consiste de ejecutar una instruccin y al terminar, realizar lo que indica el siguiente paso del algoritmo. n. Instruccin i o. Instruccin i + 1 Figura 1.2: Ejecucin secuencial.

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 3

1.2.2.

Ejecucin condicional.

Consiste de ejecutar un grupo de acciones A un grupo de acciones B (pero no ambos) en funcin del resultado de la evaluacin de una condicin C (V erdadero F also). n. SI c ENTONCES n.1. Subinstruccin 1 n.k. Subinstruccin k o. SI NO o.1. Subinstruccin 1 o.j. Subinstruccin j Figura 1.3: Ejecucin condicional. Un algoritmo que solo contiene las estructuras de control anteriores funciona para tareas de longitud ja, dado que cada instruccin se ejecuta solamente una vez. Sin embargo, generalmente se requiere que algunas instrucciones sean ejecutadas ms de una vez (como en el algoritmo de obtencin del mcd); existen estructuras de control que se encargan de la ejecucin repetida de bloques de instrucciones, se conocen de forma genrica como estructuras iterativas o ciclos.

1.2.3.

Iteracin denida.

Sirve para ejecutar un grupo de instrucciones A exactamente N veces, donde N es un entero positivo. n. DESDE cont 1 HASTA N n.1. Subinstruccin 1 n.k. Subinstruccin k n.k+1. cont cont + 1 Figura 1.4: Iteracin denida. Es importante notar que en el caso de la iteracin denida existe una variable implcita llamada contador, cont en el ejemplo, y sirve para tener un registro del nmero de iteraciones realizadas hasta el momento y para llegar a la condicin de paro. Otra variable muy utilizada cuando se trabaja con ciclos es conocida como acumulador, y sirve para almacenar resultados parciales de alguna operacin importante dentro del ciclo; adems, al terminar el ciclo, almacena el resultado nal deseado.

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 4

1.2.4.

Iteracin condicional.

Conocida tambin como iteracin indenida, se utiliza para repetir un bloque de acciones A, mientras una condicin c sea verdadera, c es una condicin de paro. n. MIENTRAS c HACER n.1. Subinstruccin 1 n.k. Subinstruccin k Figura 1.5: Iteracin condicional. En este caso, a diferencia de la iteracin denida, la condicin de paro C depende exclusivamente de las operaciones realizadas dentro del cuerpo del ciclo. Cuando en un algoritmo se utilizan iteraciones, es necesario tener cuidado de no crear ciclos innitos, esto se hace con operaciones dentro del bloque de instrucciones que garanticen que la condicin de paro se cumplir.

1.2.5.

Combinacin de estructuras de control.

Un algoritmo puede contener estructuras de control de ujo combinadas de forma compleja; secuencias, condicionales e iteraciones pueden estar intercaladas y anidadas.

Figura 1.6: Algoritmo de la amistad Ejercicio: Desarrollar un algoritmo para convertir un nmero de base 10 a base N .

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 5 Tarea: Desarrollar pseudocdigos para: } Dados dos nmeros naturales M, N , obtener el mximo comn divisor entre ellos. } Dado un nmero natural N , obtener N ! } Dado un nmero natural N , imprimir todos los nmeros primos antes de N } Dado un nmero natural N , obtener f ibonacci (N ) Programa 1: Desarrollar un programa que realice las operaciones bsicas de polinomios: } Valor en un punto } Suma } Resta } Igualdad de 2 polinomios } Polinomio opuesto } Multiplicacin de polinomios descritas en la siguiente URL: } http://es.wikipedia.org/wiki/Operaciones_con_polinomios Nota: Debe entregarse la documentacin del programa.

1.3.

Entornos sobre los lenguajes

Dada la evolucin de los lenguajes de programacin, ha crecido la necesidad de mecanismos de abstraccin apropiados; los nombres juegan un rol fundamental en este contexto. Un nombre (identicador) no es ms que un secuencia de caracteres (posiblemente con algn signicado) que sirve para representar alguna otra cosa. La manipulacin de nombres requiere de reglas que garanticen la correcta interpretacin de esos nombres en el programa. El concepto de entorno (ambiente) y las construcciones que se usan para organizarlo son importantes para este n. Cuando se declara una nueva variable: i n t var ; o se dene una nueva funcin: int foo (){ var = 1 ; }

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 6 se introducen nuevos identicadores para representar objetos (en sentido amplio, no en sentido de la POO); por ejemplo var representa una variable y f oo una funcin. La secuencia de caracteres var se puede usar cuando se desee hacer referencia a la nueva variable, de igual forma, f oo permite llamar a la funcin que asigna a var el valor 1. Los objetos a los que se les puede dar un nombre se conocen como objetos denotables. An cuando existen diferencias considerables entre lenguajes de programacin, los siguientes son ejemplos comnes de objetos denotables: } Objetos cuyos nombres son denidos por el usuario: variables, parmetros, procedimientos (en sentido amplio), tipos denidos por el usuario, mdulos, etiquetas, constantes denidas por el usuario, excepciones. } Objetos cuyos nombres son denidos por el lenguaje de programacin: tipos primitivos, operaciones primitivas, contantes predenidas. La asociacin (enlazado) entre un nombre y el objeto que denota, puede hacerse en diferentes momentos: } Denicin del lenguaje: por ejemplo, + indica adicin; int denota el tipo entero, etc. } Escritura del programa: el programador elige los nombres que usar en sus cdigos. } Tiempo de compilacin: el compilador al traducir el cdigo fuente en cdigo mquina, reserva espacio en memoria para datos que pueden ser procesados estticamente. } Tiempo de ejecucin: este trmino denota el periodo entre el inicio y trmino del programa; todas las asociaciones que no se han realizado previamente, se realizan en este periodo.

1.3.1.

Entornos

No todas las asociaciones entre nombres y objetos denotables se jan desde el inicio de la ejecucin del programa, para entender cmo se comportan algunas asociaciones, es necesario introducir el concepto de entorno. Un entorno es un conjunto de asociaciones entre nombres y objetos denotables que existen en tiempo de ejecucin en un punto especco en el programa y en un tiempo especco de la ejecucin; tambin suele llamarse entorno referenciable. La presencia de entornos constituye una de las caractersticas principales de lenguajes de alto nivel y que debe ser simulado de forma adecuada por cada implementacin. Una declaracin es una construccin que permite la introduccin de una asociacin en el entorno. Los lenguajes de alto nivel comnmente incluyen declaraciones explcitas, como: int x ; int f (){ return 0; } type T = i n t ; la primera es la declaracin de una variable, la segunda una funcin y la tercera, declara un tipo T que coincide con el tipo bsico int.

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 7

1.3.2.

Bloques

Casi todos los lenguajes de programacin actuales permiten el uso de bloques, un mtodo para estructurar programas introducido en ALGOL60; los bloques son fundamentales para organizar entornos. Un bloque es una regin textual del programa identicada por una seal de inicio y una seal de n, y que puede contener declaraciones locales a esa regin (es decir, que aparecen dentro de esa regin). Las seales de inicio y n varan de acuerdo al lenguaje de programacin. Existen dos tipos principales de bloques: } Bloque asociado a un procedimiento: es un tipo de bloque asociado con declaraciones locales a algn procedimiento; incluye el cuerpo del procedimiento junto con la declaracin de parmetros. } Bloque in-line : este bloque no se asocia con procedimientos y puede aparecer en cualquier posicin en la que se puede colocar algn comando.

1.3.3.

Tipos de entornos

El entorno cambia durante la ejecucin de un programa; sin embargo, los cambios suceden generalmente en dos momentos precisos: al entrar y salir del bloque. Por tanto, el bloque se puede considerar como una construccin de mnima granularidad que tiene un entorno constante asociado. El entorno de un bloque; es decir, el entorno que existe cuando el bloque se ejecuta; se compone inicialmente de las asociaciones entre los nombre declarados localmente dentro del mismo bloque. La mayora de los lenguajes de programacin permiten tener bloques anidados : denir bloques dentro de otros bloques. El traslape de bloques en el que algn bloque interno se cierra despus de algn bloque externo no est permitido; por ejemplo, secuencias de instrucciones como las siguientes no se permiten en ningn lenguaje: open b l o c k A; open b l o c k B ; c l o s e b l o c k A; c l o s e block B; El anidamiento de bloques es un mecanismo importante para estructurar el entorno. Es comn que se permita que las declaraciones locales a un bloque sean visibles a otros bloques internos. El ambiente asociado con un bloque se conforma de los siguientes componentes: } Entorno local: compuesto por el conjunto de asociaciones para nombres declarados localmente en el bloque. Cuando se trata del bloque de un procedimiento, el ambiente local contiene tambin las asociaciones de los parmetros. } Ambiente no local: es el entorno formado por las asociaciones de nombre que son visibles dentro del bloque, pero que no se declararon localmente. } Entorno global: Es el ambiente que se forma cuando inicia la ejecucin del programa; contiene a las asociaciones de nombres que se pueden utilizar en todos los bloques del programa.

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 8 Ejercicio: Determinar los tipos de entornos para cada bloque en el siguiente cdigo; para facilitar, se asume que los bloques pueden etiquetarse y las etiquetas no modican la ejecucin: A: { i n t a = 1 ; B: { i n t b = 2 ; int c = 2; C: { i n t c = 3 ; int d; d = a+b+c ; } D: { i n t e ; e = a+b+c ; } } } Las reglas de visibilidad especican como los nombres declarados en bloques externos son visibles para los internos. En algunos casos es posible importar nombres desde otros mdulos; las asociaciones para estos nombres forman parte del entorno global. Las reglas de visibilidad permiten solamente heredar nombres declarados en bloques exteriores hacia bloques internos pero no en el otro sentido. 1.3.3.1. Operaciones sobre entornos

Como se mencion anteriormente, los cambios en el entorno se producen al entrar y salir de un bloque. Durante la ejecicn de un programa, cuando ste entra en un bloque, se llevan a cabo las siguientes modicaciones al ambiente: 1. Se crean las asociaciones entre los nombres declarados localmente y sus correspondientes objetos denotables. 2. Se desactivan las asociaciones entre nombres declarados de forma externa al bloque y que son redenidos dentro del mismo. As mismo, cuando el programa sale del bloque, el entorno se modica de la siguiente manera: 1. Se destruyen las asociaciones entre los nombres declarados dentro del bloque y los objetos que denotan. 2. Se reactivan las asocuaciones entre nombres declarados fuera del bloque y que fueron redenidas dentro del mismo.

CAPTULO 1. FUNDAMENTOS GENERALES DE LOS LENGUAJES DE PROGRAMACIN 9 Ejercicio-tarea: Determinar los valores de las variables dentro de cada bloque en los siguientes cdigos: 1. : A: { i n t a = 1 ; B: { i n t b = 2 ; int c = 2; C: { i n t c = 3 ; int d; d = a+b+c ; } D: { i n t e ; e = a+b+c ; } } } 2. : int a = 1; foo1 ( i n t b){ int c = 3; { int a = 4; { int d; d = a+b+c ; } } i n t e = a+b+c ; } foo2 ( i n t b){ b = 2; { int c = 3; { int d; d = a+b+c ; } } } main ( ) { foo1 ( 5 ) ; foo2 ( 5 ) ; }

Das könnte Ihnen auch gefallen