Make your own free website on Tripod.com

ARRAYS

 


 

Los arreglos o Arrays son una colección de variables del mismo tipo que se referencian utilizando un nombre común.

Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un índice.

 

La forma de un Array para el caso de algoritmos es la siguiente:

 

            Nombre_de_Variable[indice]

 

Ejemplo :

           

                A[x]

 

                B[25]

 

los arrays pueden ser unidimensionales, bidimensionales o tridimensionales o de  más dimensiones.

ejemplo:

 

Bidimensional :  c[ 12, 34]

 

Tridimensional :  Notas[12,x,34]

 

 

En los ejemplos los casos de A y B son unidimensionales y los de C y Notas son de 2 y 3 dimensiones.

entre corchetes se coloca el índice.

 

Como se ve el índice puede se constante o variable.

 

En todos los arreglos usan uno como índice para el primer elemento. Por tanto, el Array A tendrá los  elementos:

A[1], A[2]....hasta A[n]  donde n es el tamaño del array que se tiene que establecer previamente puesto que la memoria de la computadora no es infinita.

Tenga en cuenta que algunos lenguajes de programación como el C se acostumbra a leer desde el elemento cero o sea A[0], pero para nuestro curso estará bien usar como primero el A[1] para entender mejor las cosas

 

Como los arrays son variables subindicadas estas pueden almacenar valores como cualquier variable usada en el curso.

 

veamos el siguiente ejemplo

A[25] = 49

significa asignar a la variable A[25] el valor de 49

 

para entender más estas cosas de una forma sencilla veamos el siguiente ejemplo.

 

hacer un programa que ingrese diez notas de alumnos en un array y muestre las notas ingresadas en la posición 4 y la posición 8

 

Inicio

    Dimensionar Notas[10]

    x = 1

    Mientras x<=10 hacer

        Leer Notas[x]

        x = x + 1

    Fin_mientras

    Escribir Notas[4]

    Escribir Notas[8]

Fin

 

En la primera vuelta leeremos el elemento Notas[1] por que x vale 1

En la segunda vuelta leeremos el elemento Notas[2] por que x vale 2

En la tercera  vuelta leeremos el elemento Notas[3] por que x vale 3 y así sucesivamente.

una vez que demos las 10 vueltas.

Escribiremos que contiene el elemento Notas[4] y el Notas[8] y luego finaliza el programa.

 

Algunas cosas que Los arrays nos permiten son por ejemplo:

Veamos otro ejemplo.

 

Hacer un programa que lea 20 notas de un salón de clases y muestre en orden inverso las notas ingresadas.

 

Inicio

    Dimensionar Notas[10]

    x = 1

    Mientras x<=10 hacer

        Leer Notas[x]

        x = x + 1

    Fin_mientras

    x = 10

    Mientras x>=1 hacer

        Escribir Notas[x]

        x = x - 1

    Fin_mientras

Fin

 

Note que cuando vamos de leyendo el contador va INCREMENTANDOSE x = x + 1

Cuando vamos publicando el contador va DECREMENTANDOSE x = x -1

 

Que les parece? fácil no es así... otra cosa observen como es la diferencia en la condición del mientras cuando vamos en aumento y como es la condición del mientras cuando vamos en decremento.

 

Que ventajas tiene trabajar con arrays

 

Observe este programa que pretende calcular el promedio de 100 calificaciones de alumnos

si usar arrays

 

 

Inicio


//leer las calificaciones
leer  Nota1  ;
leer  Nota2  ;
leer  Nota3  ;
.
.
.
leer  Nota100  ;
{calcular la media de las calificaciones}
Media = ( Nota1 + Nota2 + Nota3 + Nota4 +
Nota5 + Nota6 + Nota7 + Nota8 +
.
.
.
Nota97 + Nota98 + Nota99 + Nota100) / 100
ESCRIBIR   'Media = ', Media

{Mostrar las calificaciones que están por encima de la media}
SI Nota1 > Media ENTONCES
ESCRIBIR   Nota1
SI Nota2 > Media ENTONCES
ESCRIBIR   Nota2
SI Nota3 > Media ENTONCES
ESCRIBIR   Nota3
.
.
.
SI Nota100 > Media ENTONCES
ESCRIBIR   Nota

{OJO me cansé ....Después de mas de 450 líneas de código, ordenarlos?
Debe haber una manera mejor y mas fácil}



FIN

 

Realmente he tenido que usar puntos suspensivos por que me cansaría de escribir los nombres de las variables

 

Ahora veamos que tan fácil es hacerlo con arrays

 

Inicio

  Dimensionar Notas[100]

  //  LECTURA DEL ARRAY

    x = 1

  Mientras x<=100 hacer

        Leer Notas[x]

        x = x + 1

  Fin_mientras

 

  //  CÁLCULO DE LA MEDIA 

    x = 1

  s = 0

  Mientras x<=100 hacer

        s = s + Notas[x] //acumular

        x = x + 1

  Fin_mientras

  media = s /100

 

  //  Mostrar que notas están por encima de la MEDIA 

    x = 1

  Mientras x<=100 hacer

        si  Notas[x]  > media entonces

            escribir Notas[x]

        fin_si

        x = x + 1

  Fin_mientras

Fin

 

El código es muy claro y esta separado por partes las cuales son enchufables o desenchufables (se pueden poner o retirar ).

 

En la primera parte se leen los 100 elementos, en el segundo mientras se calcula la media, en el 3er  mientras se publican aquellos elementos que cumplen la condición que sean mayores a la media.

 

Ejercicios Resueltos:

 

1) HACER UN PROGRAMA QUE MUESTRE LOS NÚMEROS MENORES E IGUALES QUE 5 usando arrays de 50 elementos.

Inicio
dimensionar a[50]

x = 1
mientras x =< 50 hacer
    leer a[x]

    x= x + 1
fin_mientras

x = 1
mientras x =< 50 hacer

  si a[x] <= 5
      Escribir a[x]

  fin_si

  x = x + 1
fin_mientras
Fin

 

2) HACER UN PROGRAMA QUE LEA  20 NÚMEROS EN UN ARRAY DE UNA DIMENSIÓN Y MUESTRE LOS NÚMEROS QUE OCUPEN POSICIONES PARES.
 

Inicio
dimensionar a [50]
x <- 1
mientras x <= 20 hacer
  Leer a[x]
  x <- x + 1
fin_mientras
x <- 2
mientras x <= 20 hacer
  escribir a[x]
  x <- x + 2
fin_mientras
Fin

 

 

 

3) Ingresar "N" números positivos para luego multiplicar cada uno de
ellos por el número 2 y finalmente mostrarlos en sentido inverso,
Mostrar notas originales. Mostrar nota final.
Los ingresos de datos deben validarse.

Inicio

MAX = 100,

CERO = 0
Dimensionar  vector[MAX]

rpta$ = " "   // O sea una variable de texto que no tiene texto aun
repetir
   repetir
      pedir N
   hasta que N > 0
   desde i = 1 hasta N hacer
      vector[i] <- CERO
   fin_desde
   desde i = 1 hasta N hacer
      repetir
        leer vector[i]
      hasta que vector[i] > CERO
   fin_desde
   desde i = 1 hasta N hacer
       vector[i] <- vector[i] * 2
   fin_desde

   i = N
   Mientras i >= 1 hacer
      Escribir vector[i]

      i = i - 1
   fin_mientras

   escribir "Desea continuar <S/N>?"
   repetir
     Leer rpta$
   hasta que (rpta$ ='N' o rpta$ ='S')
hasta que (rpta$ = 'N' )
Fin

 

4)Hacer un programa que registre 6 números en un array de una dimensión, y voltee el array de cabeza.

Inicio
dimensionar a[100]

// leer datos
X = 1
mientras X <= 6 hacer
  Leer a[X]
  X = X + 1
fin_mientras
X = 1
y = 6
 

// voltear el array

mientras X <= 3 hacer
   T = a[X]
   a[X] = a[y]
   a[y] = T
   X = X + 1
   y = y - 1
fin_mientras
 

// publicar resultados

X = 1
mientras X <= 6 hacer
   Escribir a[X]
   X = X + 1
fin_mientras
Fin

5) Suponga que se tiene un arreglo "A" donde se encuentran 10 números ordenados en forma ascendente, y se pide que el algoritmo me permita el ingreso de un número y lo coloque en la posición donde debería de estar con respecto al orden del arreglo.

Inicio
Dimensionar A [100]

// ingrese en orden los datos por favor

// lectura de los datos

Desde i = 1 hasta 10 hacer
  Leer A[i]
fin_desde


// averiguar la posición de inserción

Leer num

i = 1
mientras i <= N

  si num >= A[i] entonces
    p = i

    i = N + 1  // artificio para romper el bucle
  fin_si

  i = i + 1
fin_mientras

 

// Insertar el nuevo elemento


N = N + 1      // los datos ahora serán N + 1

i = N

Mientras i > p hacer
   A [i] = A [i-1]
fin_mientras
A[p] = num
Fin

 

 

Ejercicios propuestos.-

(Todos los arrays son de 1000 elementos)

 

1.- Hacer un programa que lea 1000 elementos en  un array q[i] y que muestre que elementos están en las posiciones impares

 

2.- Hacer un programa que lea 1000 elementos en  un array q[i] y que muestre que elementos contiene números impares

 

3.- Hacer un programa que pase los elementos pares de  un array q[i]  a un array p[i]

 

4.- Hacer un programa que pase los elementos pares de  un array q[i]  a un array p[i], una vez obtenido p[i]

mostrar el p[i] que tiene mayor valor almacenado.

 

5.- Hacer un programa que pase los elementos pares de  un array q[i]  a un array p[i], una vez obtenido p[i]

mostrar el p[i] que tiene mayor valor almacenado.

 

6.- Hacer un programa que diga que elementos pares contienen números pares en un array z[x]

 

7.- Hacer un programa que lea 1000 notas de alumnos en un array y muestre que alumnos fueron aprobados, que alumnos fueron desaprobados, quienes pasan al sustitutorio, (aquellos que están por encima de la media).

 

8.- hacer todos los programas usando mientras, luego hacerlos con desde y luego hacerlos con repetir

 

9.- Inventar 3 ejercicios con arrays y presentarlos al profesor el día de clases. si el profesor lo considera interesante saldrá a la pizarra y lo explicará. prueba de ello tendrá una nota.

 

Suerte.

 

Enrique Barrueto