Download PROGRAMACION ESTRUCTURADA La programación estructurada
Document related concepts
Transcript
PROGRAMACION ESTRUCTURADA La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN). Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones. CARACTERISITCAS DE PROGRAMACION Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información. Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una pagina o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamas se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un programa propio. La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente. Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea LENGUAJE DE PROGRAMACION BASIC En la programación de computadoras, el BASIC, siglas de Beginner's All-purpose Symbolic Instruction Code,1 es una familia de lenguajes de programación de alto nivel. El BASIC original, el Dartmouth BASIC, fue diseñado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New Hampshire, USA, como un medio para facilitar programar computadores a estudiantes (y profesores) que no fueran de ciencias. En ese tiempo, casi todo el uso de los computadores requería codificar software hecho a la medida, lo cual era algo bastante restringido a personas con formación como científicos y matemáticos. BASIC originalmente fue desarrollado como una herramienta de enseñanza. El lenguaje y sus variantes llegaron a estar ampliamente disponibles en los microcomputadores a finales de los años 1970 y en los años 1980. El BASIC sigue siendo popular hasta el día de hoy en un puñado de dialectos altamente modificados, y en nuevos lenguajes, influenciados por BASIC tales como Microsoft Visual Basic. Por el año 2006, el 59% de los desarrolladores para la plataforma .NET usaban Visual Basic .NET como su único lenguaje. 2 COBOL El lenguaje COBOL (acrónimo de COmmon Business -Oriented Language, Lenguaje Común Orientado a Negocios) fue creado en el año 1960 con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada informática de gestión. FORTRAN es un lenguaje de programación alto nivel de propósito general,2 procedimental3 e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica. Desarrollado originalmente por IBM en 1957 para el equipo IBM 704, y usado para aplicaciones científicas y de ingeniería, el FORTRAN vino a dominar esta área de la programación desde el principio y ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la predicción numérica del tiempo, análisis de elementos finitos, dinámica de fluidos computacional (CFD), física computacional, y química computacional. Es una de los lenguajes más populares en el área de la computación de alto rendimiento y es el lenguaje usado para programas que evalúan el desempeño (benchmark) y el ranking de los supercomputadores más rápidos del mundo. PASCAL Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo. Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipificado. Esto implica que: 1. El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica. 2. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado. El nombre de Pascal fue escogido en honor al matemático Blaise Pascal. ESTRUCTURA DE DATOS Una estructura de Datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ella. Los tipos de datos mas frecuentes utilizados en los diferentes lenguajes de programación son: Para ver el gráfico seleccione la opción "Descargar" del menú superior Los tipos de datos simples pueden ser organizados en diferentes estructuras de datos: estáticas y dinámicas. Las estructuras de datos estáticas: Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa. Estas estructuras están implementadas en casi todos los lenguajes. Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentra: enteros, reales, caracteres, boléanos, enumerados y subrangos (los últimos no existen en algunos lenguajes de programación) Las estructuras de datos dinámicas: No tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas. Mediante el uso de un tipo de datos especifico, denominado puntero, es posible construir estructuras de datos dinámicas que no son soportadas por la mayoría de los lenguajes, pero que en aquellos que si tienen estas características ofrecen soluciones eficaces y efectivas en la solución de problemas complejos. Se caracteriza por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria. Es decir un dato estructurado tiene varios componentes. VECTORES Y MATRICES En programación, una matriz o vector (llamados en inglés arrays) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones. Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa PILA Pila (informática) De Wikipedia, la enciclopedia libre Saltar a navegación, búsqueda Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura. Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado. En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS. Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobre una pila de platos, y una operación retirar a retirarlo. Las pilas suelen emplearse en los siguientes contextos: Evaluación de expresiones en notación postfija (notación polaca inversa). Reconocedores sintácticos de lenguajes independientes del contexto Implementación de recursividad. ARBOLES informática, un árbol es una estructura de datos ampliamente usada que imita la forma de un árbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. Se dice que un nodo a es padre de un nodo b si existe un enlace desde a hasta b (en ese caso, también decimos que b es hijo de a). Sólo puede haber un único nodo sin padres, que llamaremos raíz. Un nodo que no tiene hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios hijos) se les conoce como rama. ARBOL BINARIO En ciencias de la computación, un árbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre "binario"). Si algún hijo tiene como referencia a null, es decir que no almacena ningún dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de los árboles binarios son los árboles binarios de búsqueda, los montículos binarios y Codificación de Huffman. ARBOL SIMPLE En las ciencias de la computación, los árboles-B ó B-árboles son estructuras de datos de árbol que se encuentran comúnmente en las implementaciones de bases de datos y sistemas de archivos. Los árboles B mantienen los datos ordenados y las inserciones y eliminaciones se realizan en tiempo logarítmico amortizado. ARREGLOS Arreglos Unidimensionales: Están formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre, y se diferencian por la posición que tiene cada elemento dentro del arreglo de datos. Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos. Para declarar un arreglo tiene que indicar su tipo, un nombre único y la cantidad de elementos que va a contener. ARREGLOS MULTIDIMENSIONALES Un arreglo multidimensional es un conjunto de datos homogéneo, finito y ordenado, donde se hace referencia a cada elemento mediante múltiples índices, por ejemplo, si es de dos dimensiones, se usan dos índices, si es de tres dimensiones se usan tres índices y así. Los arreglos que hemos trabajado hasta ahora por poseer un índice se conocen como unidimensionales o simplemente Arreglos. El caso más popular de arreglos multidimensionales es para dos dimensiones (cada elemento se referencia mediante dos índices) conocidos como matrices. MATRICES. La matriz referencia sus valores mediante 2 índices, el primero indica las filas y el segundo indica las columnas. Una matriz se podría considerar un arreglo de arreglos. A= 1 2 3 4 5 6 ….. J ….. N-2 N-1 2 1,1 3 4 5 6 . . . I X . . . M-2 M-1 M 1<=i<=M y ademas 1<=j<=N El arreglo A(MxN) tiene M filas y N columnas. El elemento A[i,j] que se encuentra en la fila i y en la columna j tiene para el ejemplo anterior el valor de X. Declaración de Arreglos bidimensionales: Para declarar arreglos bidimensionales se especifican el número de filas y el número de columnas junto con el tipo de datos. Nombre_arreglo = ARREGLO[liminff..limsupf,liminfc..limsupc] de Tipo. El número total de componentes (NTC) del arreglo se calcula mediante la expresión: NTC = (limsupf – liminff + 1) * (limsupc – liminfc + 1) Ejemplos: MatA= ARREGLO[1..10,1..20] de entero NTC= (10-1+1)*(20-1+1) = 200 MatB = ARREGLO[1..5,2..6] de real NTC = (5-1+1)*(6-2+1) = 25 ARREGLOS DE MAS DE DOS DIMENSIONES Un arreglo de N dimensiones es una colección de k1 x k2 x k3 x…x kn elementos. Para hacer referencia a cada posición del arreglo mediante N índices.(uno para cada dimensión) El arreglo A de N dimensiones se definirá así: A = ARREGLO[LI1..LS1,LI2..LS2,…,LIN..LSN] de Tipo. El total de componentes de A será: N NTC = (LS1-LI1+1) * (LS2-LI2+1) * … * (LSN-LIN+1) REGISTROS A veces se necesita manejar información de diverso tipo al mismo tiempo y para esto, los arreglos o matrices que hemos trabajado, no funcionan, puesto que solo admiten elementos del mismo tipo. Para solucionar este problema, se introduce el concepto de registro. Un registro es un dato estructurado, donde cada componente se denomina campo. Estos campos pueden ser de diferentes tipos, inclusive, un campo puede ser otro registro o un arreglo. Cada campo se identifica por un nombre único. DEFINICIÓN DE REGISTROS. Para definir un registro se utiliza la siguiente sintaxis: Nombre_registro= REGISTRO Nombre_campo1:tipo1 Nombre_campo2:tipo2 … nombre_campoN:tipon Fin Registro Ejemplos de definición de registros: Supongamos que se quiere definir la fecha completa que involucre fecha y hora, se haría así: Fechacompl = REGISTRO Día:entero Mes:entero Año:entero Hora:entero Minuto:entero Segundo:entero Fin Registro Ahora supongamos que se quiere guardar la información de un estudiante, se podría hacer así: Estudiante = REGISTRO Código:entero Cédula:entero Papellido:Cadena Sapellido:Cadena Nombre:Cadena Sexo:caracter Fechanac:fecha Fechaing:fecha Dirección:cadena Telefono:entero Promacum:real Fin Registro ACCESO A LOS CAMPOS DE UN REGISTRO. Como el registro es un dato estructurado, no puede accesarse completamente, debe especificarse cual es el campo del registro que se requiere. Para ello, se usará la siguiente notación: Nombre_registro.nombre_campo Ejemplos de acceso al registro: Para leer la hora completa del registro fecha: Leer(fecha.hora, fecha.minuto, fecha.segundo) Para escribir el nombre completo del estudiante: Imprimir(estudiante.papellido, estudiante.sapellido, estudiante.nombre) Para asignar valores al día, mes y año de la fecha: Fecha.dia 19 Fecha.mes 11 Fecha.año 2002 Un registro puede tener como campo un arreglo o también un registro, y además se pueden presentar estas combinaciones. Registros anidados: Al menos un campo del registro es un registro. Registros con arreglos: Tienen al menos un campo que es un arreglo. Arreglos de Registros: Cada elemento del arreglo es un registro y todos los elementos del arreglo son del mismo tipo de registro. Es el caso más popular y en ese caso el arreglo se maneja comúnmente como una estructura de lista. Caso práctico para ilustrar el uso de arreglo de registros: Se conoce el nombre y la calificación obtenida en un examen de un grupo de 30 alumnos. Si quiere conocer la siguiente información: promedio del grupo, calificación mas alta, nombre de los alumnos con calificación inferior al promedio, etc. En el texto guía se presenta una solución con arreglos paralelos y una con arreglo de registros, esa la vamos a exponer aquí. Se define un registro alumno con la información de nombre y calificación. Alumnos[i].nombre guardará el nombre del alumno Alumnos[i].calificacion guardará la calificación. La definición completa del registro es: Alumnos = REGISTRO Nombre:cadena Calificación:real Fin Registro