miércoles, 3 de diciembre de 2014

Algoritmos y arreglos multidimensionales


FORO TEMÁTICO DE LA UNIDAD 4

Descripción: Leer el material de la unidad cuatro y responder las siguientes preguntas:

a)   Realice un algoritmo usando arreglos.
b)  Explique cuál es la ventaja de usar arreglos multidimensionales.
c)   Comparte tips sobre para la elaboración de arreglos.


R:

a)   Se desea registrar las edades de 4 grupos de personas, cada uno de ellos con 5 elementos. Los datos deberán ser mostrados en forma posterior.

variables:
edad: arreglo(1..4,1..5) de entero
g,p: enteros

Inicio
para g 1 hasta 4 hacer
escribir(‘Grupo : ‘,g)
para p 1 hasta 5 hacer
escribir(‘Edad de la persona ‘,p)
leer(edad[g,p])
para g1 hasta 4 hacer
escribir(‘Grupo ‘,g)
para p 1 hasta 5 hacer
escribir(´persona ‘,p,’ Tiene’,edad[g,p],´años´)
Fin


b)  Un array es un medio de guardar un conjunto de objetos de la misma clase. Se accede a cada elemento individual del array mediante un número entero denominado índice. 0 es el índice del primer elemento y n-1 es el índice del último elemento, siendo n, la dimensión del array.
La ventaja de usar arreglos es que se puede usar ciclos para recorrer todos los elementos. Otra ventaja de usar arreglos es que el mismo programa puede ser utilizado para conjuntos de datos de cualquier tamaño sin requerir mayores modificaciones. El programa para promediar seis notas es exactamente igual al que se usaría para promediar treinta notas. Sólo basta con modificar el valor de la constante N.
Un arreglo multidimensional es un arreglo cuyos elementos tienen más de un índice. Son estructuras de datos que almacenan los valores en más de una dimensión.
Un arreglo multidimensional es simplemente una extensión de un arreglo unidimensional. Más que almacenar una sola lista de elementos, piense en un arreglo multidimensional como el almacenamiento de múltiples listas de elementos. Por ejemplo, un arreglo bidimensional almacena listas en un formato de tabla de dos dimensiones de filas y columnas, en donde cada fila es una lista. Las filas proporcionan la dimensión vertical del arreglo, y las columnas dan la dimensión horizontal. Un arreglo de tres dimensiones almacena listas en un formato de tres dimensiones de filas, columnas y planos, en donde cada plano es un arreglo bidimensional. Las filas  proporcionan la dimensión vertical; las columnas, la dimensión horizontal; y los planos, la dimensión de profundidad del arreglo.
Los arrays bidimensionales nos permiten trabajar con varios elementos del mismo tipo simultáneamente y para acceder a estos se hace por medio sus índices.  
Este tipo de estructura de programación estructurada hace más fácil la  ejecución, la comprensión y además se tiene una mejor presentación de  un programa.

c)    
1)    Hacer todos los ejercicios de arreglos que se pueda; hay que practicar mucho para llegar a la perfección.
2)    PRECAUCIÓN: Cuando se define un arreglo, C++ reserva suficiente memoria primaria para almacenarlo. Ésta es exclusiva para el arreglo definido y no es posible utilizarlo para otras tareas de programación o del sistema. En otras palabras, un arreglo grande consume mucha memoria.
3)    La definición del tamaño de un arreglo como “variable constante” en lugar de cómo constante hace que los programas sean más claros. Esta técnica sirve para eliminar los llamados números mágicos; por ejemplo, la mención repetida del tamaño 10 en el código de procesamiento de un arreglo de 10 elementos da a da a dicho número un significado artificial que, desgraciadamente, puede confundir al lector cuando el programa contiene otros 10 que no tienen nada que ver con el tamaño del arreglo.
4)    Busque la claridad de los programas. A veces vale la pena perder un poco en el uso eficiente de la memoria o del tiempo de procesador a favor de escribir programas más claros.
5)    Algunos programadores incluyen los nombres de variables en los prototipos de función con la finalidad de hacer más claros los programas. El compilador los ignora.
6)    Si en lugar de inicializar un arreglo con instrucciones de asignación en tiempo de ejecución, lo inicializa en tiempo de compilación mediante una lista de inicialización, el programa se ejecutará con mayor rapidez.
7)    A veces las consideraciones de desempeño tienen mucho más peso que las de claridad.
8)    Podemos aplicar static a las declaraciones de arreglos para no crear e inicializar los arreglos cada vez que se llame a las funciones en que residen, además de que el arreglo no se destruye cada vez que se sale del programa. Con esto se mejora el desempeño.
9)    Pasar arreglos simulando llamadas por referencia tiene sentido por cuestiones de desempeño. Si se pasaran los arreglos mediante llamada por valor, se pasaría una copia de cada elemento. En el caso de arreglos grandes pasados con frecuencia, esto consumiría tiempo y un espacio de almacenamiento considerable para las copias de los arreglos.
10) A veces los algoritmos más sencillos tienen un mal desempeño. Su virtud es que son fáciles de escribir, probar y depurar. A veces son necesarios algoritmos más complejos para lograr un máximo desempeño.
11) Las enormes ganancias en desempeño que tiene la búsqueda binaria sobre la búsqueda lineal no están exentas de costos. El ordenamiento de un arreglo es una operación costosa en comparación con la búsqueda de un elemento en un arreglo completo. La sobrecarga de ordenar un arreglo vale la pena cuando es necesario hacer muchas búsquedas a alta velocidad.
12) Cuando recorremos un arreglo utilizando un ciclo, el índice nunca debe ser menor que 0 y siempre deberá ser menor que el número total de elementos que tenga el arreglo (uno menos que el tamaño del mismo). Asegúrese de que la condición de terminación del ciclo evite acceder a elementos que estén fuera de este rango.
13) Los programas deberían validar que todos los valores de entrada sean correctos, a fin de evitar que los cálculos del programa sean afectados por información errónea.
14) Mediante el concepto de clases es posible implementar un arreglo inteligente, que en tiempo de ejecución revise automáticamente que todas las referencias a índices estén dentro de los límites. Dichos tipos de datos inteligentes ayudan a eliminar errores.
15) Aunque es posible modificar un contador de ciclo en el cuerpo de un for, evite hacerlo, pues es común que esto genere fallas sutiles.







No hay comentarios.: