Taller Algoritmia Arreglos

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 6

Programación con PSeInt

ARREGLOS

Un arreglo (array) es una colección de datos del mismo tipo, que se almacenan
en posiciones consecutivas de memoria y reciben un nombre común. Para
referirse a un determinado elemento de un array se deberá utilizar un índice, que
especifique su posición relativa en el array. Un arreglo es una colección finita,
homogénea y ordenada de elementos. Finita: Todo arreglo tiene un límite; es
decir, debe determinarse cuál será el número máximo de elementos que podrán
formar parte del arreglo. Homogénea: Todos los elementos del arreglo deben ser
del mismo tipo. Ordenada: Se puede determinar cuál es el primer elemento, el
segundo, el tercero,.... y el n-ésimo elemento.Los arreglos se clasifican de
acuerdo con el número de dimensiones que tienen. Así se tienen los:

- Unidimensionales (vectores)
- Bidimensionales (tablas o matrices)
- Multidimensionales (tres o más dimensiones)

Pág. 1
Programación con PSeInt

PROBLEMA. 
Suponga que se desea desarrollar un programa para:
1. Leer una lista de calificaciones de un examen
2.Encontrar su media
3.Escribir una lista de las calificaciones mayores que la media
4.Ordenar la lista de las calificaciones en orden ascendente.

Supongamos también que hay 100 calificaciones. Debemos utilizar 100 variables
diferentes nota1, nota2, ...., nota100, de ese modo son 100 direcciones
diferentes de memoria para almacenar las calificaciones del examen. Se imagina
declarar las 100 variables, ¿cuántas instrucciones involucra?
nota1, nota2, nota3,.........nota100

(En la declaración real de un programa no pueden usarse puntos suspensivos,


por lo tanto serán 100 veces). En la fase de lectura de datos, serán también 100
veces las instrucciones para ir leyendo cada valor. Leer (nota1, nota2,
nota3,........., nota100)
Para calcular la media:
Media = (nota1+nota2+.......+nota100)/100
Para la lista de calificaciones mayores que la media, deberá también irse
comparando una por una:

Si nota1 > media entonces


Imprimir nota1
Fin-si

Si nota2 > media entonces


escribir nota2
Fin-si

Si nota100 > media entonces


escribir nota100
Fin-si

Y después de más de 450 líneas de código..... ¡Falta ordenar la lista de


calificaciones en orden ascendente!

Después que aprendas a usar arreglos verás cómo se ahorra instrucciones


porque es fácil recorrer toda la lista de notas con unas pocas instrucciones. En el
caso anterior, cuando el acceso a la información es secuencial, sólo se puede
acceder a un elemento buscando desde el principio de la lista, y esto es algo
lento. Lo que se necesita es una estructura de acceso directo que permita
almacenar y recuperar los datos directamente especificando su posición en la
estructura, de esa manera se requerirá el mismo tiempo para acceder al
elemento de la posición 100 que el de la posición 5.

Pág. 2
Programación con PSeInt

También preferiremos que esta estructura se almacene en memoria principal


para que su almacenaje y recuperación sea más rápida. Es por ello que existen
los arreglos, que están organizados en una secuencia de elementos, todos del
mismo tipo y se puede acceder a cada elemento directamente especificando su
posición en esta secuencia.
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.
Por ejemplo, las siguientes instrucciones declaran tres arreglos distintos:
costoPartes[50]
edadEmpleados[100]
nombres [60]

Pág. 3
Programación con PSeInt

Para acceder a valores específicos del arreglo, use un valor de índice que
apunte al elemento deseado. Por ejemplo, para acceder al primer elemento del
arreglo calificaciones debe utilizar el valor de índice 0 (calificaciones[0]). Los
programas en C++ siempre indizan el primer elemento de un arreglo con 0 y el
último con un valor menor en una unidad al tamaño del arreglo.

Para inicializar todos los elementos de una vez, se colocan dentro de una
estructura for que va del primer elemento al último que contiene el arreglo. Para
asignar un valor a un elemento del arreglo se hace por ejemplo:

Calificaciones[0] = 100
Cuando se usan arreglos, una operación común es usar una variable índice para
acceder a los elementos de un arreglo. Suponiendo que la variable índice i
contiene el valor 3, la siguiente instrucción asigna el valor 400 a valores[3]: 

valores[i] = 400

Partes de un arreglo:

Los componentes. Hacen referencia a los elementos que forman el arreglo, es


decir, a los valores que se almacenan en cada una de las casillas del mismo.
Los índices. Permiten hacer referencia a los componentes del arreglo en forma
individual, especifican cuántos elementos tendrá el arreglo y además, de qué
modo podrán accesarse esos componentes.

Definición de Arreglos

identArreglo [Limsup];
Operaciones con Vectores:
Las operaciones que se pueden realizar con vectores durante el proceso de
resolución de un problema son:
    · Lectura/ escritura
    · Asignación
    · Actualización (inserción, eliminación, modificación)
    · Recorrido (acceso secuencial)
    · Ordenación
    · Búsqueda

Pág. 4
Programación con PSeInt

Ejemplos:
Sea arre un arreglo de 70 elementos enteros con índices enteros. Su
representación nos queda:

Arre[70];

Lectura 

El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada


uno de sus elementos. Normalmente se realizan con estructuras repetitivas,
aunque pueden usarse estructuras selectivas. Usamos los índices para recorrer
los elementos del arreglo:

Hacer para i = 1 a 70
Leer arre[i]
Fin-para

Escritura

Es similar al caso de lectura, sólo que en vez de leer el componente del arreglo,
lo escribimos.

Leer (N)
Hacer para i = 1 a n
Imprimir arre[i]
Fin-para

Asignación

No es posible asignar directamente un valor a todo el arreglo; sino que se debe


asignar el valor deseado en cada componente. Con una estructura repetitiva se
puede asignar un valor a todos los elementos del vector.

Por ejemplo:

arre[1]  = 120 (asignación de un valor constante único a una casilla del vector)
arre[3] = arre[1] / 4 (asignar una operación)
Se puede asignar un valor constante a todos los elementos del vector:
Hacer para i = 1 a 5
arre[i] = 3
Fin-para

Pág. 5
Programación con PSeInt

Acceso Secuencial. (Recorrido)

El acceso a los elementos de un vector puede ser para leer en él o para escribir
(visualizar su contenido). Recorrido del vector es la acción de efectuar una
acción general sobre todos los elementos de ese vector.
Actualización

Incluye añadir (insertar), borrar o modificar algunos de los ya existentes. Se


debe tener en cuenta si el arreglo está o no ordenado. Añadir datos a un vector
consiste en agregar un nuevo elemento al final del vector, siempre que haya
espacio en memoria.

6.1.1 PROBLEMAS PROPUESTOS

1) Almacenar en un vector los números de 1 hasta 100.


2) Almacenar en un vector los números de 1 hasta n.
3) Almacenar en un vector los números de 1 hasta n y posteriormente imprimir
su contenido.
4) Almacenar en un vector los números de 1 hasta n y posteriormente imprimir
los números pares e impares.
5) Almacenar en un vector los números de 1 hasta n y posteriormente imprimir
los números primos.
6) Almacenar en un vector los números de 1 hasta n y posteriormente imprimir
los números menores a 500.
7) Almacenar en un vector los números de 1 hasta n y posteriormente imprimir
los números primos.
8) Almacenar en un vector los números de 1 hasta n y posteriormente imprimir
los números primos y la cantidad de números que no son primos.
9) Almacenar en un vector los números de 1 hasta n y posteriormente imprimir la
sumatoria de los números primos y no primos.
10) Calcular el promedio de 50 valores almacenados en un vector. Determinar
además cuantos son mayores que el promedio, imprimir el promedio, el número
de datos mayores que el promedio y una lista de valores mayores que el
promedio.
11) Almacenar 500 números en un vector, elevar al cuadrado cada valor
almacenado en el vector, almacenar el resultado en otro vector. Imprimir el
vector original y el vector resultante.
12) Almacenar 300 números en un vector, imprimir cuantos son ceros, cuantos
son negativos, cuantos positivos. Imprimir además la suma de los negativos y la
suma de los positivos.

Pág. 6

También podría gustarte