Professional Documents
Culture Documents
Figura 1.1: Automatic Computing Engine y Leibniz Programa 1: Desarrollar un programa que realice las siguientes operaciones de nmeros complejos: Mdulo Fase Suma
Un algoritmo que solo contiene las estructuras de control anteriores funciona para tareas de longitud fija, 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.
Figura 1.6: Algoritmo de la amistad Ejercicio: Desarrollar pseudocdigos para: Convertir un nmero entero de base 10 a base N Convertir un nmero entero de base 10 a su representacin en C2 Tarea: Desarrollar pseudocdigos para: Dados dos nmeros naturales M,N, obtener el mximo comn divisor entre ellos dado un nmero natural N, determinar si es primo; en caso de no serlo, que muestre su primer factor primo y el valor por el cual se debe multiplicar para obtener N Dado un nmero natural N, imprimir todos los nmeros primos antes de N Dado un nmero natural N, obtener fibonacci (N) Programa 2: Desarrollar un programa que realice las siguientes operaciones de polinomios: Valor en un punto Suma Resta Igualdad de 2 polinomios Polinomio opuesto Multiplicacin
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 fin. Cuando se declara una nueva variable: i n t var ; o se define una nueva funcin: i n t foo (){ var = 1; } Se introducen nuevos identificadores para representar objetos (en sentido amplio, no en sentido de la POO); por ejemplo var representa una variable y foo una funcin. La secuencia de caracteres var se puede usar cuando se desee hacer referencia a la nueva variable, de igual forma, foo 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 de notables. An cuando existen diferencias considerables entre lenguajes de programacin, los siguientes son ejemplos comunes de objetos de notables: Objetos cuyos nombres son definidos por el usuario: variables, parmetros, procedimientos (en sentido amplio), tipos definidos por el usuario, mdulos, etiquetas, constantes definidas por el usuario, excepciones. Objetos cuyos nombres son definidos por el lenguaje de programacin: tipos primitivos, operaciones primitivas, contantes predefinidas. La asociacin (enlazado) entre un nombre y el objeto que denota, puede hacerse en diferentes momentos: Definicin 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 de notables se fijan 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 de notables que existen en tiempo de ejecucin en un punto especfico en el programa y en un tiempo especfico 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: intx; i n t f (){ return 0; } type T = int ; 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.
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 identificada por una seal de inicio y una seal de fin, y que puede contener declaraciones locales a esa regin (es decir, que aparecen dentro de esa regin). Las seales de inicio y fin 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.
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. 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 modifican la ejecucin: A:{ int a = 1; B:{ int b = 2; i n t c = 2; C:{ int c = 3; intd; d = a+b+c; } D:{ int e ; e = a+b+c; } } } Las reglas de visibilidad especifican 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.
2. Se reactivan las asociaciones entre nombres declarados fuera del bloque y que fueron redefinidas dentro del mismo. Ejercicio-tarea: Determinar los entornos y los valores de las variables dentro de cada bloque en los siguientes cdigos: 1. i n t a = 1; foo1 ( int b){ i n t c = 3; { int a = 4; { int d; d = a+b+c; } } i n t e = a+b+c ; } foo2 ( int b){ b = 2; { int c = 3; { int d; d = a+b+c; } } } main ( ){ foo1 ( 5 ) ; foo2 ( 5 ) ; } 2.: A:{ int a = 1; B:{ int b = 2; i n t c = 2; C:{ int c = 3; intd; d = a+b+c; } D:{ int e ; e = a+b+c; } } }
http://dicyg.fi-c.unam.mx:8080/lalo/lp-teo/presentaciones/Tema1.pdf