Microestructuras
Microestructuras
Microestructuras
) El diseo detallado tiene que ver con la especificacin de detalles algortmicos, representaciones concretas de datos, interconexiones entre funciones y estructuras de datos, y empaque del producto de programacin. El diseo detallado est fuertemente influenciado por el lenguaje de instrumentacin, pero no es lo mismo que la instrumentacin; el diseo detallado tiene que ver ms con aspectos semnticos y menos con detalles sintcticos que es la instrumentacin. El punto de inicio para el diseo detallado es una estructura arquitectnica a la que se le van a proporcionar los detalles algortmicos y las representaciones concretas de datos. Mientras que hay una fuerte tentacin para proceder directamente de la estructura arquitectnica a la instrumentacin, hay varias ventajas que pueden lograrse en el nivel intermedio de detalle proporcionado por el diseo detallado. La instrumentacin comunica los aspectos de la sintaxis del lenguaje de programacin, el estilo de codificacin la documentacin interna, y la insercin de pruebas y depuraciones al cdigo. Las dificultades que se encuentran durante la instrumentacin casi siempre se deben al hecho de que el instrumentador simultneamente est realizando anlisis, diseo y actividades de codificacin mientras intenta expresar el resultado final en un lenguaje de instrumentacin. El diseo detallado permite el diseo de algoritmos y representaciones de datos en un nivel ms alto de abstraccin y notacin que el que proporciona el lenguaje de instrumentacin . El diseo detallado separa la actividad de diseo a bajo nivel de la instrumentacin, igual que las actividades de anlisis y diseo aslan las consideraciones de lo que se desea de la estructura que lograr los resultados deseados. Una especificacin adecuada de diseo detallado minimiza el nmero de sorpresas durante la instrumentacin del producto. Las actividades de diseo detallado inevitablemente exponen los defectos en la estructura arquitectnica y las modificaciones resultantes se vern facilitadas por tener menos detalles por manipular que los que estaran presentes en el lenguaje de instrumentacin. El diseo detallado tambin proporciona un vehculo para inspecciones de diseo, recorridos estructurados y la revisin crtica del diseo. Las notaciones para el diseo detallado incluyen a los diagramas HIPO, el seudocdigo, el ingls estructurado, los diagramas de flujo estructurados, los diagramas de
estructuras de datos, y las distribuciones fsicas para las representaciones de datos. La representacin del diseo detallado puede utilizar palabras clave del lenguaje de instrumentacin para especificar el flujo de control, y proposiciones de declaracin del lenguaje para especificar la representacin de datos. El empaque tiene que ver con la manera en que los datos elementales globales son compartidos selectivamente entre las unidades del programa, la especificacin de reas de datos estticos, el agrupamiento de unidades del programa como funciones y subrutinas, la especificacin de los mecanismos para el paso de parmetros, las estructuras de archivos y las tcnicas para su acceso, y la estructura de las unidades de compilacin y mdulos de carga. El diseo detallado debe llevarse hasta un nivel donde cada proposicin en la notacin del diseo resulte en unas cuantas (menos de 10) proposiciones en el lenguaje de instrumentacin. Dadas las especificaciones arquitectnicas y de diseo detallado, cualquier programador familiar con el lenguaje de instrumentacin debe ser capaz de implantar el producto de la programacin.
ESTRUCTURAS DE DATOS
Las Estructuras de Datos se pueden definir como la organizacin de la informacin que permite un determinado lenguaje de programacin. Cada estructura posee sus propias caractersticas de almacenamiento y recuperacin de los datos. Los Algoritmos constituyen la resolucin de problemas computacionales mediante un lenguaje de programacin.
si. Se almacenan directamente en el disco duro de la computadora y cuando trabajamos con ellos, trabajamos directamente con el valor. No requiere de memoria adicional aparte de la estrictamente necesaria para almacenar el valor. Estos tipos son implementados por el runtime y aumentan considerablemente la velocidad.
Tipos por valor: Son aquellos tipos que contienen los datos, el valor en
de memoria, estn guardados en la pila. Son ms lentos que los tipos por valor y ocupan algo ms de memoria, a cambio obtienen varias ventajas como por ejemplo que pueden contener mtodos, polimorfismo Las estructuras de datos que se manejan en el modelo relacional corresponden a los conceptos de relacin, entidad, atributo y dominio, los cuales de introducen aqu intencionalmente:
Tipos por referencia: Son aquellos que hacen referencia a una posicin
Relacin.
Por una relacin se entiende una coleccin o grupo de objetos que tienen en comn un conjunto de caractersticas o atributos.
Entidad.
Es una unidad de datos en una relacin con un conjunto finito de atributos. Es tambin conocido como n-ada, a raz de que consiste de n-valores, uno por cada atributo.
Atributo.
Tambin llamado caracterstica, cada atributo de una relacin tiene asociado un dominio en el cual toma sus valores.
Dominio.
Es un conjunto de valores que puede tomar un atributo en una relacin. La notacin ms usual para denotar las relaciones en trminos de estos conceptos es:
5#5 por ejemplo 6#6 Y para establecer la conexin entre un atributo y un dominio podemos usar la siguiente notacin:
7#7 por ejemplo 8#8 Una forma de implementar las relaciones en una computadora, es a travs de tablas de valores, de forma que se tienen las siguientes equivalencias: un atributo corresponde al encabezado de una columna, una n-ada equivale a un rengln de la tabla y por supuesto una relacin equivale a la tabla misma. En captulos posteriores, suponiendo natural esta equivalencia de trminos, se utilizarn de forma indistinta.
ESTRUCTURAS DE CONTROL
El desarrollo de un programa viene determinado por el orden en que aparecen las instrucciones. El lenguaje Perl posee controlar un conjunto de instrucciones que permiten controlar el desarrollo de un programa. Estas instrucciones se denominan estructuras de control porque permiten ejecutar un conjunto de instrucciones cuando se verifica una condicin o ejecutar iterativamente un bloque de instrucciones mientras una expresin sea vlida. Estructura secuencial Sentencias simples Expresin de algn tipo terminada por el carcter ; i++; s = v * t; ; Sentencias compuestas o bloques Conjunto de declaraciones y sentencias entre llaves {} { <declaracin>; ... <sentencia>;
... }
ESTRUCTURAS CONDICIONALES
Operador condicional expresin1 ? expresin2 : expresin3; Sentencia if if (expresin) { sentencia; } if (expresin) { sentencia1; } else { sentencia2; } if (expresin1) sentencia1; else if (expresion2) sentencia2; else if (...) ... else sentenciaN; Sentencia switch
switch (expresin) { case expr_cte1: sentencia1; case expr_cte2: sentencia2; ... case expr_cteN: sentenciaN; default: sentencia; } Estructuras iterativas / repetitivas Sentencia while while (expr) { sentencia; } Sentencia for for (expr1; expr2; expr3) { sentencia; } Equivale a: expr1; while (expr2) { sentencia;
Saltos
break Interrumpe la ejecucin del bucle continue Comienza la siguiente iteracin del bucle goto Salto incondicional return Finaliza la ejecucin de una funcin (suele utilizarse para devolver un valor) exit Finaliza la ejecucin del programa (funcin de la biblioteca estndar)
La instruccin last. La instruccin last interrumpe la ejecucin del bucle actual y se ejecuta la instruccin que sigue al bloque. El ejemplo siguiente permite interrumpir el bucle while cuando la variable i toma el valor 3. $i = 0; while($i < 6) { if($i == 3) { last; } $i++; } print "el valor de \$i es $i";
Cuando la instruccin tiene como argumento una etiqueta, la ejecucin prosigue en la lnea indicada por la etiqueta.
La instruccin next. La instruccin next es idntica a la instruccin continue en C. Interrumpe la ejecucin del bloque de instruccin actual y prosigue la ejecucin en la iteracin siguente. Esta instruccin no interrumpe completamente la ejecucin del bucle; la expresin que controla el bucle se evala. Si el resultado de la expresin es vlido, el bucle se ejecuta de nuevo. Cuando una instruccin tiene como argumento una etiqueta, la instruccin prosigue en la lnea identificada por la etiqueta y no al principio del bloque. Seguidamente veremos un ejemplo de dicha instruccin: print "Teclea \"x\" para salir:\n"; print "Si se pulsa la tecla \"s\" no se imprime:\n"; $ristra = ""; while ($ristra ne "x") { $ristra = ; chop($ristra); if ($ristra eq "s") { next; } print "Has escrito $ristra\n"; } print "Salida.\n" La instruccin until. La instruccin until al igual que la instruccin while permite ejecutar un conjunto de instrucciones un nmero repetido de veces. Pero al contrario que la la instruccin while, la intruccin until ejecuta dicho bloque de instrucciones mientras no se verifique la comprobacin. La sintaxis es: until (expresin) { instruccin o bloque de instrucciones; } He aqu el ejemplo anterior pero utilizando la instruccin until. print "Teclea \"x\" para salir:\n"; print "Si se pulsa la tecla \"s\" no se imprime:\n"; $ristra = ""; until ($ristra eq "x") {
} print "Salida.\n"
La instruccin unless. Esta instruccin es anloga al if, salvo que permite considerar la no verificacin de la prueba. Su sintaxis es la siguiente: unless (expresin) { instruccin o bloque de intrucciones 1; } Para ver mejor el funcionamiento del unless, modificaremos el ejemplo anterior para adaptarlo a dicha instruccin. print "Teclea \"x\" para salir:\n"; print "Si se pulsa la tecla \"s\" no se imprime:\n"; $ristra = ""; until ($ristra eq "x") { $ristra = ; chop($ristra); unless ($ristra eq "s") { next; } print "Has escrito $ristra\n"; } print "Salida.\n"
ESTRUCTURA DE UN COMPILADOR
Cualquier compilador debe realizar dos tareas principales: anlisis del programa a compilar y sntesis de un programa en lenguaje maquina que, cuando se ejecute, realizara correctamente las actividades descritas en el programa fuente. Para el estudio de un compilador, es necesario dividir su trabajo en fases. Cada fase representa una transformacin al cdigo fuente para obtener el cdigo objeto. La siguiente figura representa los componentes en que se
divide un compilador. Las tres primeras fases realizan la tarea de anlisis, y las dems la sntesis. En cada una de las fases se utiliza un administrador de la tabla de smbolos y un manejador de errores. Anlisis Lxico. En la fase de anlisis lxico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes lxicos. Cada componente lxico es una secuencia lgicamente coherente de caracteres relativa a un identificador, una palabra reservada, un operador o un carcter de puntuacin. A la secuencia de caracteres que representa un componente lxico se le llama lexema (o con su nombre en ingls token). En el caso de los identificadores creados por el programador no solo se genera un componente lxico, sino que se genera otro lexema en la tabla de smbolos. Anlisis Sintctico. En esta fase, los componentes lxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. Anlisis Semntico. La fase de anlisis semntico se intenta detectar instrucciones que tengan la estructura sintctica correcta, pero que no tengan significado para la operacin implicada. Generacin de cdigo Intermedio. Algunos compiladores generan una representacin intermedia explcita del programa fuente, una vez que se han realizado las fases de anlisis. Se puede considerar esta operacin intermedia como un subprograma para una mquina abstracta. Esta representacin intermedia debe tener dos propiedades importantes: debe ser fcil de producir y fcil de traducir al programa objeto. Optimizacin de Cdigo. En esta fase se trata de mejorar el cdigo intermedio, de modo que resulte un cdigo de mquina ms rpido de ejecutar. Generacin de Cdigo. Esta constituye la fase final de un compilador. En ella se genera el cdigo objeto que por lo general consiste en cdigo en lenguaje mquina (cdigo relocalizable) o cdigo en lenguaje ensamblador. Administrador de la tabla de smbolos. Una tabla de smbolos es una estructura de datos que contiene un registro por cada identificador. El registro incluye los campos para los atributos del identificador.
El administrador de la tabla de smbolos se encarga de manejar los accesos a la tabla de smbolos, en cada una de las etapas de compilacin de un programa. Manejador de errores. En cada fase del proceso de compilacin es posibles encontrar errores. Es conveniente que el tratamiento de los errores se haga de manera centralizada a travs de un manejador de errores. De esta forma podrn controlarse ms eficientemente los errores encontrados en cada una de las fases de la compilacin de un programa.
2. Diseo de entrada. Se seleccionan los registros de entrada y los mtodos de tal manera que conozcamos cuales son los datos que se van a proporcionar cada vez que corra una aplicacin en la computadora. *registros *medio *modo
*volumen
3. Diseo de procesamiento. Se especifica l computo, manejo de datos y la lgica necesarios para producir el resultado. *clculos *lgica *frecuencia *volumen 4. Especificacin de datos. Se especifican los datos algunos se marcarn para que se almacenen en los archivos maestros, y otros datos que sern de entrada cada vez que se corra una aplicacin. *contenido del registro. *diseo del registro *especificacin de los archivos. *organizacin de los archivos. *volumen 5. Especificacin de procedimientos. Se desarrollan los programas y el software de computadora as como los archivos y la elaboracin de bases de datos. 3 *corridas de computadora *documentar el proceso *mtodos de control *procesos manuales *procedimientos operativos. 3 Tiene 5 etapas fundamentales.
Especificacin de procedimientos es donde vamos a recopilar toda nuestra informacin, identificar el o los problemas es necesario tomar en cuenta la factibilidad de nuestro diseo. Especificacin de datos. aqu es donde tenemos que tomar en cuenta los datos que vamos a utilizar de que tipo son, se diseara el registro, los archivos. Diseo de procesamiento. Una vez que ya sabemos los datos que habrn que utilizarse se tendr que saber la frecuencia de estos datos y en donde se utilizarn, que clculos habr de hacerse para que funcione nuestro sistema para poder elegir un lenguaje de programacin adecuado para que de el resultado requerido. Diseo de entrad. Una vez que se sabe que lenguaje se utilizara entonces empezamos a programar cuidando que los datos e intrusiones den como resultado en la pantalla del usuario la informacin que este desea. Diseo de salida. Es el resultado final, se realizan las pruebas para corroborar que nuestro sistema funcione adecuadamente para poderlo implantar.