You are on page 1of 22

TIPOS DE DATOS TIPOS DE DATOS SIMPLES Numrico: Enteros: es el tipo de dato ms simple de todos.

La cantidad de valores que se puede representar depende de la cantidad de memoria que se utilice para representar un entero. Reales: la representacin para nmeros reales se denomina punto flotante, consiste en definir cada nmero como una mantisa y un exponente. Lgico: tambin llamado booleano, es un dato que puede tomar un valor entre un conjunto formado por dos valores posibles, verdadero o falso. Carcter: proporciona objetos de datos que contiene solo un carcter como un valor (minsculas, maysculas, d !itos especiales". Defini os !or el usuario: es aquel que no existe en la definicin del len!uaje y el usuario es el encar!ado de determinar su denominacin y el conjunto de valores que dispondr el mismo. Enumerati"os: lista ordenada de valores posibles para las variables del tipo. Su#rango: es una secuencia sucesiva conti!ua de valores de al!n tipo ordinal. Con$unto: es una coleccin de datos simples todos del mismo tipo. String: es una sucesin de caracteres que se almacena en un rea conti!ua de la memoria. ESTR%CT%RA DE DATOS Registros: es una coleccin de valores con tres caracter sticas: # $ Los valores pueden ser de distinto tipo (es %etero!nea". & $ Los valores almacenados en un re!istro son llamados campos. ' ( )l almacenamiento ocupado por un re!istro es fija, por esto un re!istro es una estructura esttica. Pilas & Colas: es una coleccin ordenada de elementos tres caracter sticas: # ( Los elementos son del mismo tipo. )s una estructura de datos %omo!nea. & ( )n la pila los elementos pueden recuperarse en orden inverso en que fueron almacenados, y en la cola los elementos pueden recuperarse en el orden en que fueron almacenados. ' ( La cantidad de elementos que contiene una pila o cola puede variar a lo lar!o de la ejecucin de pro!rama. *or esta ra+n es una estructura dinmica.

Arreglos: es una coleccin ordenada de elementos con las si!uientes caracter sticas: # ( Los elementos son del mismo tipo. & ( Los elementos pueden recuperarse, en cualquier orden. ' ( La memoria ocupada a lo lar!o de la ejecucin del pro!rama es fija, es una estructura de datos esttica (vector, matri+, tensor, etc.". Listas: es un conjunto de tipo %omo!neo, donde los mismos no ocupan posiciones conti!uas de memoria. )s una estructura dinmica. Listas circulares: el ltimo nodo de la lista contiene la direccin del comien+o de la lista. Listas o#lemente enla'a as: cada nodo tiene dos punteros, uno al nodo si!uiente y otro al nodo anterior. ,n puntero es una variable cuyo valor es una direccin de memoria. ,na lista es una sucesin de nodos, cada nodo tiene un valor y un puntero al si!uiente nodo. )l ltimo nodo tiene un valor especial (nil" que nos da el fin de la lista. ESTR%CT%RAS DE CONTROL *ermiten expresar la secuencia de decisiones y rdenes a ejecutar. Secuencia: es la estructura de control ms simple, est representada por una sucesin de operaciones. Re!eticin: repite - veces un bloque de acciones. Decisin: a veces es necesario tomar una determinada decisin en funcin de los datos del pro!rama (ej. if". Seleccin: se evala la variable de decisin y dependiendo de ella la accin a tomar (ej. case". Iteracin: puede ocurrir que se desee ejecutar bloques de estructuras de control iterativas (se ejecutan dependiendo de una condicin". Pre(con icionales: evalan la condicin y si es verdadera se ejecuta el bloque de accin (ej. .%ile". Post(con icionales: primero se ejecuta el bloque de accin, lue!o se evala la condicin (ej. repeat ... until". PROCESO DE %N LEN)%A*E Los ordenadores actuales solamente ejecutan un len!uaje de muy bajo nivel, el len!uaje mquina. )stos len!uajes mquina estn dise/ados basndose en la velocidad de ejecucin, costo de reali+acin. *or otra parte, los len!uajes se dise/an sobre la base de su fiabilidad y facilidad de pro!ramacin. 0ur!e el problema de cmo ejecutar un len!uaje de alto nivel en un ordenador cuyo len!uaje mquina sea muy distinto y de un nivel muc%o ms bajo. )xisten dos alternativas: interpretacin y traduccin.

INTERPRETACI+N 1on esta solucin se ejecutan directamente las acciones que implican las sentencias del len!uaje. *or lo tanto, para interpretar un problema %abr que llamar a los subpro!ramas en la secuencia apropiada. ,n intrprete es un pro!rama que ejecuta repetidamente la si!uiente secuencia: # ( 2btener la sentencia si!uiente. & ( 3eterminar las acciones que %an de ser ejecutadas. ' ( )jecutar las acciones. TRAD%CCI+N 1on esta solucin, un pro!rama escrito en len!uaje de alto nivel se traduce a un versin equivalente en len!uaje mquina antes de ser ejecutado. Los traductores que se utili+an en cada una de estas etapas tienen nombres espec ficos: compilador, ensamblador, editor de enlaces y car!ador. )n al!unos casos, la mquina en la que se llevan a cabo la traduccin no es la misma que %a de ejecutar el cdi!o traducido. )ste tipo de traduccin recibe el nombre de traduccin cru+ada. Los traductores cru+ados son la nica solucin viable en el caso de que la mquina destino sea demasiado peque/a para soportar al traductor. La interpretacin y la traduccin pura son dos extremos. ,n pro!rama se puede traducir a un cdi!o intermedio que ser a su ve+ interpretado, alternativamente el cdi!o intermedio puede ser el cdi!o mquina para una mquina virtual que a su ve+ ser interpretada por soft.are. )n el caso de una solucin puramente interactiva, la ejecucin de una sentencia puede llevar consi!o un proceso de decodificacin bastante complicado para determinar las operaciones que %an de ser ejecutadas, as como sus operandos. 0i la sentencia aparece en una parte del pro!rama que %a de ejecutar con cierta frecuencia (por ej. un bucle interno" resulta que estos procesos idnticos de decodificacin afectarn considerablemente a la velocidad de ejecucin. *or lo contrario, la traduccin pura !enera cdi!o de mquina para cada sentencia de alto nivel, con lo cual, el traductor decodifica solamente una ve+ cada sentencia de alto nivel. La interpretacin pura suele a%orrar memoria. CONCEPTO DE LI)AD%RA Los len!uajes difieren entre s por el nmero de entidades que son capaces de manejar, por el nmero de atributos que %an de ser li!ados

a las entidades y por el momento en que se producen dic%as li!aduras (tiempo de li!adura". 0e dice que una li!adura es esttica si %a quedado establecida antes de la ejecucin y ya no puede cambiarse. *or lo contrario, ser dinmica si se establece durante el tiempo de ejecucin y puede cambiarse de acuerdo con al!unas re!las especificadas en los len!uajes. ,ARIA-LE Los ordenadores convencionales se basan en la idea de una memoria principal que consiste en celdas elementales identificadas cada una mediante una direccin, cada celda contiene un valor que puede ser le do y4o modificado. )n concreto, introducen el concepto de variable como una abstraccin de la modificacin destructiva del contenido de una celda. ,na variable se caracteri+a por un nombre y por cuatro atributos bsicos: mbito, tiempo de vida, valor y tipo. )l nombre se utili+a para identificar y %acer referencia a la variable. 5l!unos len!uajes permiten la existencia de variables sin nombres. AM-ITO DE %NA ,ARIA-LE )l mbito de una variable es el conjunto de sentencias del pro!rama en las que dic%a variables es conocida y, por lo tanto, manipuleable. 0e dice que una variable es divisible dentro de su mbito e invisible fuera de l. Las variables pueden ir li!adas a su mbito de manera esttica o dinmica. Li!adura de mbito esttico: define el mbito de una variable en trminos de la estructura lxica de un pro!rama, esto es, cada referencia a una variable que est estticamente li!ada a una declaracin de variable concreta (impl cita o expl cita". Li!adura de mbito dinmico: define el mbito de una variable en trminos de ejecucin de pro!rama. -ormalmente cada declaracin de variable ejerce su influencia sobre todas las sentencias que se ejecutan a partir de dic%a declaracin, %asta que se encuentra una nueva declaracin para una variable con el mismo nombre. TIEMPO DE ,IDA DE %NA ,ARIA-LE )l tiempo de vida de una variable es el intervalo de tiempo en el que un rea de memoria est li!ada a la variable. La accin de conse!uir un rea de memoria para una variable se denomina asi!nacin de memoria. )n al!unos len!uajes esta asi!nacin se lleva a cabo antes del tiempo de ejecucin del pro!rama (asi!nacin esttica". )n otros len!uajes, se %acen durante la ejecucin (asi!nacin dinmica".

,ALOR DE %NA ,ARIA-LE )l valor de una variable se representa en forma codificada en el rea de memoria li!ada a dic%a variable. )sta representacin codificada se interpreta de acuerdo con el tipo de la variable. )n al!unos len!uajes el valor de una variable puede ser una referencia (puntero" a un objeto. )n estos len!uajes se puede acceder a un objeto por medio de una cadena de referencia de lon!itud arbitraria. )l compartir reas de memoria para las variables se utili+a para a%orrar espacio en memoria, pero puede dar lu!ar a pro!ramas dif ciles de leer, dado que el valor de las variables puede ser modificado an cuando no %ayan sido referenciadas. ,na referencia es el medio bsico para acceder a variables annimas. La li!adura entre una variable de valor contenido en su rea de memoria es !eneralmente dinmica. ,na asi!nacin del tipo # ./ a %ace que se lleve una copia del valor de a al rea de memoria li!ada a #. 5l!unos len!uajes permiten que se con!ele la li!adura entre una variable y su valor una ve+ establecida dic%a li!adura. )n consecuencia, la li!adura slo se puede establecer en tiempo de ejecucin cuando las variables estn creadas. ,na constante manifiesta es un constante simblica, cuyo valor puede li!arse durante el tiempo de traduccin. TIPO DE %NA ,ARIA-LE 0e puede definir el tipo de una variable como una especificacin de las clases de valores que se pueden asociar a la variable, junto con las operaciones que se pueden usar para crear, acceder y modificar tales valores. 1uando se define un len!uaje, !eneralmente se li!a un nombre de tipo a cierta clase de valores y a un conjunto de operaciones, por ejemplo, el tipo booleano se li!a a los valores true y false, y a las operaciones and, or y not. 6ay len!uajes en los que el pro!ramador puede definir nuevos tipos mediante una declaracin de tipo. )n los len!uajes que soporta la definicin de tipos abstractos de datos no %ay una li!adura por defecto entre un tipo nuevo y su conjunto de operaciones. Los tipos pueden ser li!ados a las variables de una manera esttica o dinmica. La solucin esttica es la adoptada por la mayor a de los len!uajes. La li!adura entre la variable y su tipo se especifica mediante una declaracin de variable.

0in embar!o, en al!unos len!uajes (como 728985-", la primera aparicin de un nuevo nombre de variable se toma como una declaracin impl cita. La ventaja de las declaraciones reside en la claridad de los pro!ramas y en su mayor fiabilidad, dado que durante el tiempo de traduccin se puede detectar detalles tales como errores de escritura. Los len!uajes que adoptan la li!adura dinmica entre variables y tipos se procesan de una manera ms natural mediante interpretacin. La eleccin entre traduccin e interpretacin de la implementacin de un len!uaje resulta, por lo tanto, muy influenciada por la li!adura entre variables y tipos. Los len!uajes con li!adura dinmica suelen estar orientados a la interpretacin, mientras que los de li!adura esttica lo estn a la traduccin. %NIDADES DE PRO)RAMA Los len!uajes de pro!ramacin %acen posible que un pro!rama se compon!a de un cierto nmero de unidades. )stas unidades de pro!rama se pueden desarrollar de una manera ms o menos independiente, e incluso a veces traducirse por separado y combinarse despus de la traduccin. Las variables que se declaran dentro de una unidad se dice que son locales a la misma. ,na unidad se puede activar durante la ejecucin recibe el nombre de activacin de unidad. ,na activacin de unidad se compone de un se!mento de cdi!o y un re!istro de activacin. )l se!mento de cdi!o, cuyo contenido es fijo, contiene las instrucciones de la unidad. )l contenido del re!istro de activacin es variable. La posicin relativa de un objeto en el re!istro de activacin recibe el nombre de despla+amiento. *ara referenciar un objeto, usa la direccin inicial del re!istro de activacin que contiene el objeto y el despla+amiento del mismo. Las variables no locales que pueden ser referenciadas por una unidad reciben el nombre de !lobales para esa unidad. )l entorno de referencia de una activacin de unidad , consta de las variables locales de ,, que estn li!adas a objetos almacenados en el re!istro de activacin de , (entorno local", y de las variables !lobales de , li!adas a objetos almacenados en los re!istros de activacin de otras unidades (entorno !lobal". 3os variables del entorno de referencia de una unidad que se refiere al mismo objeto de datos, reciben el nombre de alias. La modificacin de un objeto de datos li!ao a una variable !lobal recibe el nombre de efecto lateral. Las unidades pueden activarse recursivamente, esto es, que una unidad puede llamarse a s misma directamente, o bien, indirectamente a travs de al!una otra unidad.

5l producirse la recursin, la li!adura entre un re!istro de activacin y su s!mento de cdi!o es necesariamente dinmica. 0iempre que se activa una unidad, se debe establecer una li!adura entre un re!istro de activacin y su se!mento de cdi!o. RE)ISTRO DE ACTI,ACION DE TAMA0O CONOCIDO ESTATICAMENTE )n este caso, las variables locales se crean impl citamente al activarse la unidad y la cantidad de almacenamientos. Los cuales son necesarios para contener el valor de cada variables local, esto se conoce en tiempo de traduccin. 0in embar!o, el re!istro de activacin no puede ir li!ado estticamente al se!mento de cdi!o de la unidad antes de la ejecucin, puesto que pueden producirse varias activaciones recursivas en la misma al mismo tiempo, por esto se deduce que el re!istro de activacin debe ser asi!nado y li!ado dinmicamente para cada nueva activacin. *or lo tanto, durante la traduccin, una variable solamente puede estar li!ado a su despla+amiento dentro del re!istro de activacin. La li!adura a su direccin f sica de memoria requiere conocer la direccin del re!istro de activacin y slo puede efectuarse durante la ejecucin. Las variables de este tipo reciben el nombre de variables semiestticas (variables de pila". La asi!nacin dinmica de los re!istros de activacin produce dos efectos fundamentales: por una parte permite la implementacin de activaciones recursivas de unidad y por otra parte supone una utili+acin de la memoria central. *ara que sea posible el retorno desde una activacin es necesario que los re!istros de activacin conten!an suficiente informacin para identificar la instruccin que se %a de ejecutar a continuacin, as como que se active con el retorno del anterior re!istro de activacin. La primera informacin (direccin de retorno" est formada por dos informaciones: un puntero al se!mento de cdi!o de la unidad llamante y un despla+amiento dentro de ese se!mento. La se!unda est representada por un puntero al re!istro de la unidad llamante. )ste puntero se denomina enlace dinmico y la cadena de estos enlaces se ori!inan en el re!istro de activacin en curso que se denomina cadena dinmica. )sta cadena representa el anidamiento dinmico de las activaciones de unidades. RE)ISTRO DE ACTI,ACION DE TAMA0O ,ARIA-LE DIN1MICAMENTE Los len!uajes de la familia 5L:2L desde *L4; %asta 5L:2L <= y 535 permiten a los pro!ramadores manejar objetos de datos cuyos tama/os sean variables durante la ejecucin. *or consi!uiente no se conocer al activarse la unidad la cantidad de memoria requerida por un

re!istro de activacin. )stas variables se denominan variables dinmicas. )l %ec%o de que las variables dinmicas denotan objetos cuyo tama/o y4o nmero puede variar dinmicamente a lo lar!o de su vida imposibilita la asi!nacin de estas variables a una pila, y %ace que se asi!nen a un rea de memoria libre. )l trmino de memoria libre indica que se libera de la connotacin de la pila Lifo. *or esta ra+n, las variables dinmicas reciben el nombre de variables de memoria libre, en oposicin a las variables semiestticas y semidinmicas que se denominan variables de pila. RE)ISTRO DE ACTI,ACION C%2O TAMA0O ES CONOCIDO EN LA ACTI,ACION DE LA %NIDAD )n 5L:2L <> y otro len!uajes de la misma familia como 5L:2L <= y ms recientemente 535 las variables se !eneran automticamente al activarse la unidad, pero su tama/o puede depender de valores que slo se conocern en el momento de la ejecucin al activarse la unidad. 9al es el caso de las matrices dinmicas, cuyas li!aduras se dan a conocer durante la ejecucin. 5 las variables que responden a estas caracter sticas las denominaremos variables semidinmicas (variables de pila". ESTR%CT%RAS DE CONTROL A NI,EL DE %NIDAD )sta seccin estudia los mecanismos que tienen los len!uajes de pro!ramacin para especificar el flujo de control entre unidades de pro!rama. )xisten mecanismos ms potentes que permiten al pro!ramador transferir el control de una unidad a otra por medio de llamadas expl citas. )n la mayor a de los casos la llamante nombra expl citamente a su unidad subordinada, mientras que cada unidad devuelve el control a la llamante, esto es, a una unidad impl cita. 6ay casos en los que la unidad llamada, tambin es impl cita, como ocurre con los manejadores de excepciones. 9ambin pueden or!ani+arse las unidades en un esquema simtrico como un conjunto de corrutinas, y por ltimo se pueden or!ani+ar las unidades como un conjunto de unidades concurrentes. LLAMADAS E3PLICITAS A %NIDADES S%-ORDINADAS )l paso de parmetros posibilita la comunicacin de datos entre unidades de pro!rama. Los parmetros permiten transferir datos diferentes en cada llamada y proporcionan ventajas en trminos de le!ibilidad y modificabilidad.

?uc%os len!uajes de pro!ramacin utili+an un mtodo posicional en las llamadas a subpro!ramas para %acer corresponder los parmetros reales con los formales. *odemos diferenciar tres clases de entidades que pueden pasarse como parmetros: datos, tipos y subpro!ramas. 45 DATOS COMO PAR1METROS. 6ay diferentes sistemas para el paso de parmetros a subpro!ramas. )s preciso conocer el sistema adoptado por un len!uaje, ya que la eleccin afecta a la semntica de dic%o len!uaje. ,n mismo pro!rama puede producir diferentes resultados bajo diferentes sistemas de paso de parmetros. 454 LLAMADA POR RE6ERENCIA.

La unidad que llama pasa a la unidad llamada la direccin como parmetro real. ,na referencia al parmetro formal en la unidad llamada se trata como una referencia a la posicin de memoria cuya direccin se %a pasado. )ntonces una variables pasada como parmetro real es compartida, es decir, modificable directamente por el subpro!rama. Las direcciones de los parmetros pueden almacenarse en posiciones espec ficas del re!istro de activacin de la unidad llamante, y las referencias a esos parmetros en la unidad llamada pueden tratarse como referencias indirectas a travs de esas posiciones. *uesto que un subpro!rama tiene un nmero fijo de parmetros, la cantidad de posiciones y sus equivalentes se fijan estticamente. 457 LLAMADA POR COPIA.

)n la llamada por copia los parmetros formales no comparten la memoria con los parmetros reales, es ms, actan como variables locales. La llamada por copia prote!e a la unidad llamante de posibles modificaciones de los parmetros reales. *odemos clasificar la llamada por copia en tres tipos: por valor, por resultado y por valor$resultado. LLAMADA POR ,ALOR. )n esta llamada la unidad llamante evala los parmetros reales y los utili+a para iniciali+ar los parmetros formales, los cuales actan como variables locales en la

unidad llamada. La llamada por valor no permite la devolucin de la informacin al llamante. LLAMADA POR RES%LTADO. Las variables locales correspondientes a los parmetros formales, no se ponen en la llamada al subpro!rama pero su valor, al acabar, se devuelve a la posicin de los parmetros reales en el entorno de la llamante. La llamada por resultado no permite enviar informacin a la unidad llamada. LLAMADA POR ,ALOR(RES%LTADO. )n esta llamada las variables indicadas por los parmetros formales se iniciali+an en la llamada al subpro!rama (como en la llamada por valor" y se devuelve al finali+ar (como en la llamada por resultado". 458 LLAMADA POR NOM-RE.

)n la llamada por nombre cada parmetro formal se reempla+a textualmente por el parmetro real. 75 S%-PRO)RAMAS COMO PAR1METROS. )l env o de un subpro!rama como parmetro requiere pasar al menos una referencia al se!mento de cdi!o del parmetro real. 0in embar!o, el subpro!rama pasado puede acceder tambin a variables no locales, siendo necesario entonces pasar informacin acerca del entorno no local del subpro!rama parmetro real. Los subpro!ramas parmetros se pueden representar por un par ordenado: un puntero pc al se!mento de cdi!o y un puntero pr al re!istro de activacin de la unidad que contiene la definicin del subpro!rama. ,na llamada al subpro!rama parmetro requiere llevar el re!istro de activacin a la cima de la pila, poner el alcance esttico del valor de pr y transferir el control al cdi!o especificado por pc.

LLAMADAS IMPL9CITAS A %NIDADES )sta seccin anali+a las unidades que se llaman impl citamente cuando se alcan+a una condicin de excepcin. Los len!uajes tradicionales no ofrecen especial ayuda para el apropiado manejo de excepciones. 0in embar!o, un cierto nmero de len!uajes recientes proporcionan caracter sticas para el manejo de excepciones. 1on estas caracter sticas, lo concerniente a anomal as puede sacarse fuera del flujo principal del pro!rama, a fin de no oscurecer el al!oritmo bsico. MANE*OS DE E3CEPCIONES PL:I: Las excepciones en *L4; se denominan condiciones. Los manejadores de excepciones se declaran con sentencias, puede ser una sentencia simple o un bloque. )l len!uaje define tambin un nmero de excepciones incorporadas y proporciona manejadores definidos por el sistema para ellas. Las excepciones incorporadas se alcan+an automticamente en la ejecucin de al!unas sentencias. La accin reali+ada por un manejador del sistema la especifica el len!uaje. 0in embar!o, esa accin puede ser redefinida como una excepcin del usuario. CL%: )l manejo de excepciones en 1L, es menos potente que en *L4;, pero es ms fcil de utili+ar. *arece proporcionar formas efectivas para el manejo de situaciones anmalas. Las excepciones slo se pueden alcan+ar en los procedimientos. Las excepciones que un procedimiento pueda se/alar %an de declararse en la cabecera del mismo. 0e alcan+a expl citamente una excepcin por medio de la instruccin si!nal. Las operaciones incorporadas pueden alcan+ar un conjunto conocido de excepciones. 1uando se alcan+a una excepcin, el procedimiento devuelve el control al llamante inmediato, que es el responsable de proporcionar el manejador para la excepcin. )l procedimiento que alcan+a la excepcin no puede ser reanudado, incluso despus de reali+ar las acciones de recuperacin. 5dems, el manejador est li!ado al punto de llamada. )l manejador de excepciones se relaciona con las sentencias por medio de la clusura except, se!n la sintaxis @sentenciaA except @listaBdeBmanejadoresA end. ADA: )l manejo de excepciones en 535 es similar al utili+ado en el 1L,. )n un pro!rama se puede provocar expl citamente una excepcin con la sentencia raise. Los manejadores de excepciones estn li!ados al cuerpo de un subpro!rama o un CpacDa!eE, o a un bloque con la palabra reservada exception. 0i la unidad que alcan+a una excepcin proporciona un manejador para la misma, se transfiere inmediatamente el control al manejador. 0i la unidad que se est ejecutando no proporciona un manejador, se propa!a la excepcin. )n el caso de que

no %aya un manejador asociado al CpacDa!eE, se propa!a la excepcin a la unidad que alber!a a dic%o CpacDa!eE. ,na excepcin en 535 alcan+ada en una unidad dada puede ser manejada por otras unidades de su llamador inmediato. )RAMATICAS La sintaxis de un len!uaje de pro!ramacin describe la forma correcta en cual las sentencias, expresiones y unidades de pro!rama se deben escribir, mientras que la semntica denota el si!nificado de esas sentencias, expresiones y unidades de pro!rama. )n la definicin de un len!uaje de pro!ramacin, la sintaxis usualmente se expresa en F-7 (es un len!uaje usado para definir otros len!uajes" y la semntica est expresada en len!uaje natural (espa/ol, in!ls, etc.". ,na !ramtica consiste en un conjunto de no$terminales, terminales y una serie de re!las de produccin. Sinta;is La sint;is es un conjunto de re!las formales que especifican la composicin de los pro!ramas a base de letras, d !itos y otros caracteres. *or ejemplo, las re!las de sintaxis pueden especificar que cada parntesis abierto debe llevar su correspondiente parntesis cerrado en las expresiones aritmticas. 2tro ejemplo, es que & sentencias deben estar separadas siempre por un punto y coma. Reglas semnticas Las reglas semnticas especifican el si!nificado de cualquier pro!rama sintcticamente vlido escrito en un determinado len!uaje. 3ic%o si!nificado, puede expresarse mediante la correspondencia entre cada construccin del len!uaje en un dominio cuya semntica es conocida. *or ejemplo, describir la semntica de un len!uaje dando una clara descripcin de su construccin. Conce!to e liga ura

Los pro!ramas manejan entidades tales como variables, subpro!ramas, sentencias, etc. )stas entidades tienen ciertas propiedades llamadas atri#utos. )jemplo: una variable tiene un nombre, un tipo y un rea de almacenamiento, donde se !uarda su valorG un subpro!rama tiene un nombre, parmetros formales de un cierto tipoG una sentencia tiene acciones asociadas.

5ntes de procesar entidades, %ay que especificar sus atributos. Liga ura es la especificacin de la naturale+a exacta de un atributo. La informacin de la li!adura de cada entidad se %alla en una +ona llamada escri!tor. Los len!uajes se diferencian entre s por la cantidad de entidades que son capaces de manipular, por el nmero de atributos que %an de ser li!ados a las entidades y por el momento en que se producen esas li!aduras (tiempo de li!adura". 0e dice que una liga ura es esttica si %a quedado establecida antes de la ejecucin y ya no puede cambiarse. 0e dice que una liga ura es inmica si se establece durante el tiempo de ejecucin y puede cambiarse de acuerdo con al!unas re!las especificadas en el len!uaje. ,aria#les 1eldas de memoria identificados mediante una direccin. 1ada celda contiene un valor que puede ser le do y4o modificado. ,na variable se caracteri+a por un nombre, el cual se utili+a para identificar y %acer referencia a las variables (al!unos len!uajes permiten la existencia de variables sin nombre" y por H atributos bsicos: 5lcance (mbito" 9iempo de vida Ialor 9ipo Alcance e una "aria#le

)s el conjunto de sentencias del pro!rama en las que dic%a variable es conocida y, por lo tanto manipulable. )l alcance puede ser esttico o dinmico. Alcance esttico: define el mbito (alcance" de una variable en trminos de la estructura del pro!rama . 1ada referencia a una variable est estticamente li!ada a una declaracin de variable concreta. Alcance inmico: define el mbito (alcance" de una variable en trminos de la ejecucin del pro!rama. 1ada declaracin de variable ejerce su influencia sobre todas las sentencias que se ejecutan a partir de dic%a declaracin %asta que se encuentra una nueva declaracin para una variable con el mismo nombre. Tiem!o e "i a e una "aria#le

)s el intervalo de tiempo en el que un rea de memoria est li!ada a la variable. )s el tiempo que la variable est asi!nada a la memoria. )sta rea se utili+a para contener el valor de la variable (tiempo en el

cual la li!adura existe". La accin de conse!uir un rea de memoria para una variable se llama asignacin e memoria. )sta asi!nacin se puede llevar a cabo antes del tiempo de ejecucin del problema (asignacin esttica" o se lleva a cabo durante la ejecucin del pro!rama (asignacin inmica". ,alor e una "aria#le

)ste est representado en forma codificada en el rea de memoria li!ada a dic%a variable. )s el contenido de una variable que puede ser tanto informacin como una direccin. )l valor se puede asi!nar de & formas: Dinmica: se puede modificar durante la ejecucin (asi!nacin, parmetros, lectura, etc.". Esttica: no se modifica durante la ejecucin (constantes". )s posible asi!nar expresiones. )jemplo: ?:J-K&>G (de esta manera calcula y fija un valor". Ti!o e una "aria#le

)s la especificacin de la clase de valores que se pueden asociar a una variable, junto con las operaciones que se pueden usar para crear, acceder y modificar tales valores (conjunto de valores permitidos para ese tipo y su conjunto de operaciones". Esttico: cuando escribo un pro!rama s de que tipos son las variables, no se pueden cambiar (*5015L, 1, 535, 1 LL". Dinmico: durante la ejecucin la variable cambia de tipo de datos (5*L, L;0*". *roceso de un len!uaje )l proceso de un len!uaje consta de & partes fundamentales: Tra uccin: a partir de un mdulo fuente se !enera un mdulo ejecutable. Inter!retacin: toma una sentencia, determina la accin a ejecutar y ejecuta la accin.

Progra ma fuente

Anali'a or l;ico

)enera )enera or e or e c igo c igo 0 mbolos del )xpresininterme 1di!o de


len!uaje sentencia mquina

Anali'a or sintcti

O!timi' acin

M ulo e e$ecuci

Clasificacin !roceso>

e lengua$es seg<n su estructura

e e$ecucin =o

Lengua$es estticos: aquellos en los que cada unidad posee un solo re!istro de activacin y est li!ado estticamente al se!mento de cdi!o (no permite recursin" (ejemplo: 728985? y 12F2L". Las variables (que son estticas" ya estn almacenadas en la memoria, o sea, que el re!istro de activacin ya est !uardado antes de la activacin de la unidad (7amilias # y &". Lengua$es #asa os en !ila: los re!istros de activacin tienen un tama/o conocido. )sto permite tener ms de un re!istro de activacin por unidad, por lo tanto, permite recursin. La li!acin entre el se!mento de cdi!o y el re!istro de activacin es dinmica cuando se invoca la unidadG recin a% se !uarda el re!istro de activacin. Las variables son semidinmicas ()j: *5015L" (7amilia ' y H". Lengua$es inmicos: se permite crear variables en ejecucin, por lo tanto, el re!istro de activacin tiene un tama/o desconocido y usa memoria o %eap ()j: L;0*, 5*L, etc.". (7amilia M" Rutinas Las rutinas pueden ser desarrolladas en modos ms o menos independientes y a veces pueden ser traducidos en forma separada y combinados despus de la traduccin. ()j: subrutinas 728985?, funciones en 1, procedimientos y funciones en 535 y *5015L". 1omo las variables, las rutinas tienen un nombre, alcance y tiempo de vida, tipo y valor. ,n nombre de rutina se introduce en un pro!rama a travs de la declaracin de una rutina. La activacin de la rutina se reali+a a travs de la invocacin a la misma. )l encabe+ado de la rutina define su nombre, sus parmetros, tipos y si %ay al!n valor para devolver. Re!resentacin e la uni a en la memoria

;nstanciacin de la unidad 1uando se invoca a la unidad o se ejecuta. o 5ctivacin de la unidad )sta est formada por: se!mento de cdi!o y re!istro de activacin.

Segmento

e c igo

7ijo (no var a". 1ontiene instrucciones ejecutables. 0e almacena en la memoria de instrucciones. Registro e acti"acin

)s cambiante o variable. 1ontiene informacin para la ejecucin de la unidad. *armetros. 6amilias e lengua$e

6amilia N? 4 =lengua$e esttico> Len!uaje con declaraciones simples, el tama/o de la memoria es conocido estticamente y no %ay funciones ni llamadas a unidades. )l pro!rama entero consiste en una rutina principal, la cual posee una +ona para manipular esos datos. )j: *ro!ram ?ainG Iar i,j:inte!erG Fe!in 8ead (i,j"G N%ile i @A j do ;f i A j t%en i:Ji ( j )lse j:Jj ( iG Nrite (i"G )ndG 6amilia N? 7 =lengua$e esttico> Len!uaje con rutinas simples, permite a las rutinas declarar sus propios datos locales. ,na sentencia est definida por: ,na +ona de variables !lobales. ,na +ona donde estn declaradas rutinas, funciones y4> procedimientos. La rutina o pro!rama principal contiene su propia +ona de declaracin de variables locales, y es activada automticamente cuando se inicia la ejecucin. La rutina principal no puede ser llamada por otras rutinas.

)j:

8utinas en ambiente local. Las rutinas no pueden ser llamadas recursivamente, no tienen parmetros y no re!resan valores. *ro!ram ?ain Iar i,j,D:inte!erG *rocedure 5lfa ( "G Iar i:inte!erG Fe!in )ndG *rocedure Feta ( "G Iar D:inte!erG Fe!in 5lfa ( "G )ndG Fe!in Feta ( "G )ndG

6amilia N ? 8 =lengua$e #asa o en !ila> Len!uaje con funciones recursivas, esta familia se caracteri+a por tener rutinas (procedimientos o funciones" con la %abilidad de llamarse a s mismas (recursin directa" o llamar a otra de forma recursiva (recursin indirecta". Las rutinas re!resan valores por los que es necesario proveer espacio en memoria para el valor re!resado por la rutina. )l re!istro de activacin es almacenado durante la invocacin a la funcin. )j: *ro!ram ?ain Iar n:inte!erG 7unction 7act (n:inte!er":inte!erG Iar m:inte!erG

Fe!in ;f n A # t%en 7act:J nK7act (n$#" )lse 7act:J#G )ndG Fe!in 8eadln (n", ;f n AJ > t%en Nriteln (7act (n"" )lse Nriteln (O)rrorP"G )ndG 6amilia N ? @ =lengua$e #asa o en !ila> ?anejo de bloques, las rutinas pueden ser llamadas de manera recursiva. )sta familia est formada por las f HQ y f HQQ, las cuales son llamadas estructuras de bloques, ya que manejan este tipo de estructuras. )stas se utili+an para definir el alcance de las variables, su tiempo de vida y dividir el pro!rama en unidades ms c%icas. )sta familia permite el anidamiento entre unidades (las cuales no poseen pasajes de parmetros".

6amilia N ? @A *ermite declaraciones locales con cada componente declarada. )j: 5 Iar x F Iar

y 1 Iar + Fe!in R:JxLy

5 F 1 3 )

1all 1 3 Iar x

) Iar 1all F 1all 3

6amilia N ? @AA *osee la %abilidad de anidar una rutina con otra. ()j: len!uaje 1". )j: 7unction 7 ( ":inte!erG Iar x,y,.:inte!erG F# Iar x,+:inte!erG Iar Iar Iar j:inte!erG x,.:inte!erG F' a,b,c,d:inte!erG FH F& FM

6amilia N ? B =lengua$e

inmico>

)ste len!uaje se encar!a de los ras!os caracter sticos del len!uaje, esta familia est formada por las f MQy f MQQ. 6amilia N ? BA Len!uaje donde el re!istro de activacin tiene tama/o conocido al activarse la unidad ()j: 535, 5L:2L". 6amilia N ? BAA 5lojamiento de datos completamente dinmicos, los datos pueden ser almacenados expl citamente a travs de una instruccin de alojamiento ejecutable. )l la mayor a de los len!uajes existentes esto es ejecutado a travs de la definicin de punteros. )j: )n 1 LL se puede definir este tipo de dato:

0truct ?ode ... ;nt info ?ode K leftG ?ode K ri!%tG S -ode K -J-e. -odeG El lengua$e como un com!onente ms e una utili a !ara el esarrollo e !rogramas glo#al

,na utilidad !lobal para el desarrollo de pro!ramas es un conjunto inte!rado por tcnicas y %erramientas que ayudan al desarrollo de los mismos. )l len!uaje de pro!ramacin debe ser compatible con al!n mtodo de dise/o ofrecido por la utilidad !lobal en la fase de dise/o. 0i se utili+a un mtodo de dise/o descendente, el len!uaje debe soportarlo en el sentido de permitir que los niveles jerrquicos de dise/o estn presentes en el pro!rama. Los len!uajes de pro!ramacin son slo una %erramienta ms de las utili+adas por las personas que se dedican al desarrollo de pro!ramas. 1omo la utilidad de esta %erramienta slo puede ser medida por su contribucin al proceso de desarrollo, es necesario examinar las relaciones entre los len!uajes de pro!ramacin y los otros componentes de la utilidad !lobal. Los primeros len!uajes de pro!ramacin estaban dise/ados para Cpro!ramarE en lu!ar de estarlo para Cdesarrollar pro!ramasE. -o obstante, si un len!uaje no fue dise/ado teniendo en mente la produccin de soft.are, debe evaluarse en funcin del objetivo para el que fue dise/ado. O#$eti"os en el iseCo e lengua$es im!uestos !or el !roceso esarrollo e los !rogramas e

8equisitos que %an de cumplir los len!uajes de pro!ramacin: Los !rogramas e#en ser fia#les: los usuarios deben confiar en los pro!ramas. 3eben sentirse a !usto usndolos, incluso en la presencia de casos no frecuentes e indeseables. ,n pro!rama es correcto si se comporta de acuerdo a sus especificaciones. Los !rogramas e#en ser manteni#les: conforme el coste del soft.are sube y se incrementa la complejidad de los sistemas que tienen que desarrollarse, consideraciones econmicas tienden a reducir la posibilidad de desec%ar pro!ramas ya existentes para desarrollar aplicaciones similares. Los pro!ramas existentes deben poder ser modificados para aceptar nuevas necesidades. 5dems, como para

muc%os sistemas complejos es prcticamente imposible obtener inicialmente los requisitos reales, el mtodo se!uido muc%as veces consiste en %acer evolucionar el sistema aproximndolo !radualmente %acia el deseado. Los !rogramas se e#en e$ecutar eficientemente: este objetivo afecta tanto al len!uaje utili+ado como a la eleccin de los al!oritmos a utili+ar. Lengua$e & fia#ili a : 6acili a e escritura: bsicamente se refiere a la posibilidad de expresar un pro!rama en una forma que sea natural para el problema. )l pro!ramador no debe distraerse con detalles y trucos del len!uaje, sino que se debe dedicar a la actividad ms importante, que es solucionar el problema. )s ms fcil escribir en un len!uaje de alto nivel que en uno que no lo sea. Legi#ili a : %a de ser posible se!uir la l!ica del pro!rama y descubrir la posible presencia de errores, mediante un examen del mismo. 1uanto ms simple sea el len!uaje y ms naturalmente permita expresar los al!oritmos, ms sencillo ser entender lo que %ace un pro!rama examinando su cdi!o. Posi#ili a e tratar e;ce!ciones: el len!uaje debe poder permitir el tratamiento de posibles sucesos no deseados y la posibilidad de dar respuestas adecuadas a estos acontecimientos. 3e esta manera, el comportamiento del sistema lle!a a ser totalmente predecible, incluso en presencia de situaciones anmalas. Lengua$e & manteni#ili a : la necesidad de mantener un pro!rama impone dos requisitos a los len!uajes de pro!ramacin: los pro!ramas escritos en un len!uaje deben ser le!ibles y deben ser modificables. )s posible %ablar de caracter sticas que %acen que un pro!rama sea ms modificable. *or ejemplo, %ay len!uajes que permiten dar nombres simblicos a las constantes. La eleccin de un nombre apropiado para una constante mejora la le!ibilidad del pro!rama. Lengua$e & eficiencia: un len!uaje es una %erramienta eficiente si tiene las cualidades de ser fcil de escribir, ser mantenible y adems, ser Coptimi+ableE. La facilidad de escritura y la mantenibilidad ya se %an discutido anteriormente. La Coptimi+acinE se refiere a la cualidad de permitir una optimi+acin automtica del pro!rama. )l camino ideal para una pro!ramacin deber a ser, en primer lu!ar, producir un pro!rama del que se pueda demostrar su correccin, y despus, a travs de una serie de transformaciones, modificarlo para obtener otro que sea correcto y eficiente. ,n len!uaje es optimi+able, si %ace posible la aplicacin automtica de estas transformaciones.

*odemos decir que muc%as de las caracter sticas que reducen la optimi+acin, impiden tambin la le!ibilidad de un pro!rama.

You might also like