Que es una estructura o registro

Registros

Un registro en Pascal es similar a una estructura en C .y aunque en otros lenguajes como C# y C + + las estructuras pueden actuar como clases. Un registro se declara con la palabra reservada estructura (struct, en inglés) o registro y se declara utilizando los mismos pasos necesarios para utilizar cualquier variable. Primero, se debe declarar el registro y a continuación se asignan valores a los miembros o elementos individuales del registro o estructura.

La declaración anterior reserva almacenamiento para los elementos de datos individuales denominados campos o miembros de la estructura. En el caso de fecha, la estructura consta de tres campos: día, mes y año relativos a una fecha de nacimiento o a una fecha en sentido general. El acceso a los miembros de la estructura se realiza con el operador punto y con la siguiente sintaxis

Nombre Estructura.miembro

Así fecha Nacimiento. mes se refiere al miembro más de la estructura fecha, y fecha Nacimiento, día se refiere al día de nacimiento de una persona. Un tipo de dato estructural más general podría ser Fecha .y que sirviera para cualquier dato aplicable a cualquier aplicación (fecha de nacimiento, fecha de un examen, fecha de comienzo de clases, etc.).

estructura: Fecha

entero: mes

entero: dia

entero: año

fin_estructura

Declaración de tipos estructura

Una vez definido un tipo estructura se pueden declarar variables de ese tipo al igual que se hace COIl cualquier otro tipo de datos. Por ejemplo, la sentencia de definición

Fecha Cumpleaños, del Día

reserva almacenamiento para dos variables llamadas Cumpleaños y del Día, respectivamente. Cada una de estas estructuras individuales tiene el mismo formato que el declarado en la clase Fecha.

Los miembros de una estructura no están restringidos a tipos de datos enteros sino que pueden ser cualquier tipo de dato válido del lenguaje. Por ejemplo, consideremos un registro de un empleado de una empresa que contase de los siguientes miembros:

estructura Empleado

Cadena: nombre

ente-ro: idNumero

real: Salario

Fecha: Fecha Nacimiento

entero: Antigüedad

fin_estructura

Obsérvese que en la declaración de la estructura Empleado, el miembro Fecha es un nombre de un tipo estructura previamente definido. El acceso individual a los miembros individuales del tipo estructura de la clase Empleado se realiza mediante dos operadores punto, de la forma siguiente:

Empleado. Fecha.Dia

y se refiere a la variable Dia de la estructura Fecha de la estructura Empleado.

Estructuras de datos homogéneas y heterogéneas

Los registros (estructuras) y los arrays son tipos de datos estructurados. La diferencia entre estos dos tipos de estructuras de datos son los tipos de elementos que ellos contienen. Un array es una estructura de datos homogénea, que significa que cada uno de sus componentes deben ser del mismo tipo. Un registro es una estructura de datos heterogénea, que significa que cada uno de sus componentes pueden ser de tipos de datos diferentes. Por consiguiente, un array de registros es una estructura de datos cuyos elementos son de los mismos tipos heterogéneos.

Cuáles son las fases de resolución de problemas. Características de un algoritmo. (punto 2.1 libro Joyanes Aguilar)

Las fases de resolución de un problema con computadora son:

Constituyen el ciclo de vida del software y las fases o etapas usuales son:

  • Análisis. El problema se analiza teniendo presente la especificación de los requisitos dados por el cliente de la empresa o por la persona que encarga el programa.
  • Diseño. Una vez analizado el problema, se diseña una solución que conducirá a un algoritmo que resuelva el problema.
  • Codificación (implementación). La solución se escribe en la sintaxis del lenguaje de alto nivel (por ejemplo, C) y se obtiene un programa.
  • Compilación, ejecución y verificación. El programa se ejecuta, se comprueba rigurosamente y se eliminan todos los errores (denominados «bugs», en inglés) que puedan aparecer.
  • Depuración y mantenimiento. El programa se actualiza y modifica cada vez que sea necesario, de modo que se cumplan todas las necesidades de cambio de sus usuarios.
  • Documentación. Escritura de las diferentes fases del ciclo de vida del software, esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y de referencia, así como normas para el mantenimiento.
  • Características de un algoritmo

  • preciso (indicar el orden de realización en cada paso),
  • definido (si se sigue dos veces, obtiene el mismo resultado cada vez),
  • finito (tiene fin; un número determinado de pasos).
  • En qué consiste la primera fase de la resolución de problemas: Análisis del problema

    La primera fase de la resolución de un problema con computadora es el análisis del problema. Esta fase requiere una clara definición, donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada.

    Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entrada y salida.

    Para poder definir bien un problema es conveniente responder a las siguientes preguntas:

  • ¿Qué entradas se requieren? (tipo y cantidad).
  • ¿Cuál es la salida deseada? (tipo y cantidad).
  • ¿Qué método produce la salida deseada?
  • En qué consiste la segunda fase de la resolución de problemas: Diseño del algoritmo

    En la etapa de análisis del proceso de programación se determina qué hace el programa. En la etapa de diseño se determina cómo hace el programa la tarea solicitada. Los métodos más eficaces para el proceso de diseño se basan en el conocido por divide y vencerás. Es decir, la resolución de un problema complejo se realiza dividiendo el problema en subproblemas y a continuación dividir estos subproblemas en otros de nivel más bajo, hasta que pueda ser implementada una solución en la computadora.

    Este método se conoce técnicamente como diseño descendente (top-down) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma más detallada se denomina refinamiento sucesivo.

    Cada subprograma es resuelto mediante un módulo (subprograma) que tiene un solo punto de entrada y un solo punto de salida.

    Cualquier programa bien diseñado consta de un programa principal (el módulo de nivel más alto) que llama a subprogramas (módulos de nivel más bajo) que a su vez pueden llamar a otros subprogramas.

    Los programas estructurados de esta forma se dice que tienen un diseño modular y el método de romper el programa en módulos más pequeños se llama programación modular. Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente (incluso por diferentes programadores) y a continuación combinarlos entre sí. El proceso implica la ejecución de los siguientes pasos hasta que el programa se termina:

    1. Programar un módulo.
    2. Comprobar el módulo.
    3. Si es necesario, depurar el módulo.
    4. Combinar el módulo con los módulos anteriores.

    El proceso que convierte los resultados del análisis del problema en un diseño modular con refinamientos sucesivos que permitan una posterior traducción a un lenguaje se denomina diseño del algoritmo.

    El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar posteriormente.

    Cuáles son las dos herramientas más utilizadas para diseñar algoritmos

    Diagramas de flujo

    Un diagrama de flujo (flowchart) es una representación gráfica de un algoritmo. Los símbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalización (ANSI).

    Pseudocódigo

    El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la lectura de programas. En esencia, el pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos.

    Qué es programación modular.

    La programación modular es uno de los métodos de diseño más flexibles y potentes para mejorar la productividad de un programa. En programación modular el programa se divide en módulos (partes independientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos. Cada uno de estos módulos se analizan, codifican y ponen a punto por separado.

    Cada programa contiene un módulo denominado programa principal, que controla todo 10 que sucede; se transfiere el control a submódulos (posteriormente se denominará subprogramas), de modo que ellos puedan ejecutar sus funciones; sin embargo, cada submódulo devuelve el control al módulo principal cuando se haya completado su tarea. Si la tarea asignada a cada submódulo es demasiado compleja, éste deberá romperse en otros módulos más pequeños. El proceso sucesivo de subdivisión de módulos continúa hasta que cada módulo tenga solamente una tarea específica que ejecutar. Esta tarea puede ser entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de éstos.

    Un módulo puede transferir temporalmente (bifurcar) el control a otro módulo; sin embargo, cada módulo debe eventualmente devolver el control al módulo del cual se recibió originalmente el control.

    Los módulos son independientes en el sentido en que ningún módulo puede tener acceso directo a cualquier otro módulo excepto el módulo al que llama y sus propios submódulos. Sin embargo, los resultados producidos por un módulo pueden ser utilizados por cualquier otro módulo cuando se transfiera a ellos el control.

    Dado que los módulos son independientes, diferentes programadores pueden trabajar simultáneamente en diferentes partes del mismo programa. Esto reducirá el tiempo del diseño del algoritmo y posterior codificación del programa. Además, un módulo se puede modificar radicalmente sin afectar a otros módulos, incluso sin alterar su función principal.

    La descomposición de un programa en módulos independientes más simples se conoce también como el método de «divide y vencerás» (divide and conquer). Se diseña cada módulo con independencia de los demás, y siguiendo un método ascendente o descendente se llegará hasta la descomposición final del problema en módulos en forma jerárquica.

    Qué es programación estructurada. Qué reglas debe cumplir

    La programación estructurada significa escribir un programa de acuerdo a las siguientes reglas:

  • El programa tiene un diseño modular.
  • Los módulos están diseñados de modo descendente.
  • Cada módulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición.
  • La programación estructurada utiliza un número limitado de estructuras de control que minimizan la complejidad de los programas y, por consiguiente, reducen los errores; hace los programas más fáciles de escribir, verificar, leer y mantener. Los programas deben estar dotados de una estructura.

    La programación estructurada es el conjunto de técnicas que incorporan:

  • recursos abstractos,
  • diseño descendente (top-down),
  • estructuras básicas.
  • Recursos abstractos

    La programación estructurada se auxilia de los recursos abstractos en lugar de los recursos concretos de que dispone un determinado lenguaje de programación.

    Descomponer un programa en términos de recursos abstractos -según Dijkstra- consiste en descomponer una determinada acción compleja en términos de un número de acciones más simples capaces de ser ejecutadas o que constituyan instrucciones de computadoras disponibles.

    Diseño descendente (top-down)

    El diseño descendente (top-down) es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise). La metodología descendente consiste en efectuar una relación entre las sucesivas etapas de estructuración de modo que se relacionan unas con otras mediante entradas y salidas de información. Es decir, se descompone el problema en etapas o estructuras jerárquicas, de forma que se puede considerar cada estructura desde dos puntos de vista: ¿qué hace? y ¿cómo lo hace?

    Estructuras de control

    Las estructuras de control de un lenguaje de programación son métodos para especificar el orden en que las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias (lenguaje) o instrucciones determinan el flujo de control. Estas estructuras de control son, por consiguiente, fundamentales en los lenguajes de programación y en los diseños de algoritmos, especialmente los pseudocódigos.

    Las tres estructuras de control básico son:

  • secuencia
  • selección
  • repetición
  • La programación estructurada hace los programas más fáciles de escribir, verificar, leer y mantener; utiliza un número limitado de estructuras de control que minimizan la complejidad de los problemas.

    Cuáles son las características de un algoritmo

    Las características fundamentales que debe cumplir todo algoritmo son:

  • Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
  • Cuáles son los elementos básicos de un programa

    Los lenguajes de programación ---como los restantes lenguajes- tienen elementos básicos que se utilizan como bloques constructivos, así como reglas para las que esos elementos se combinan. Estas reglas se denominan sintaxis del lenguaje. Solamente las instrucciones sintácticamente correctas pueden ser interpretadas por la computadora y los programas que contengan errores de sintaxis son rechazados por la máquina. Los elementos básicos constitutivos de un programa o algoritmo son:

    Además de estos elementos básicos, existen otros elementos que forman parte de los programas, cuya comprensión y funcionamiento será vital para el correcto diseño de un algoritmo y naturalmente la codificación del programa. Estos elementos son:

  • bucles,
  • contadores,
  • acumuladores,
  • interruptores,
  • estructuras:
  • l. secuenciales,

    2. selectivas,

    3. repetitivas.