You are on page 1of 10

Introducción a la programación

Tema: Arreglos
Arrays (arreglos)

Un array (lista o tabla) es una secuencia de objetos del mismo tipo. Los objetos
se llaman elementos del array y se numeran consecutivamente 0,1, 2, 3... El
tipo de elementos almacenados en el array puede ser cualquier tipo de dato de
C++, incluyendo estructuras definidas por el usuario. Normalmente el array se
utiliza para almacenar tipos tales como char, int o float.

Un array se puede utilizar para almacenar por ejemplo, la edad de los alumnos
de una clase, las temperaturas de cada día de un mes en una ciudad
determinada, el número de personas que residen en cada una de las diecisiete
comunidades autónomas españolas. Cada item del array se denomina
elemento.

Los elementos de un array se numeran, como ya se ha comentado,


consecutivamente 0, 1, 2, 3... Estos números se denominan valores índice o
subíndice del array. El término subíndice se utiliza ya que se especifica igual
que en matemáticas como una secuencia tal como a0, a1, a2... Estos números
localizan la posición del elemento dentro del array, proporcionando acceso
directo al array.

Si el nombre del array es a, entonces a[0] es el nombre del elemento que está
en la posición 0, a[1] es el nombre del elemento que está en la posición 1, etc.
En general, el elemento i-ésimo está en la posición i-1. de modo que si el array
tiene n elementos, sus nombres son a[0], a[1], ..., a[n-1]. Gráficamente se
representa así el array con seis elementos.

El array a tiene 6 elementos: a[0] contiene 25.1, a[1] contiene 34.2, a[2]
contiene 5.25, a[3] contiene 7.45 y así sucesivamente. El siguiente diagrama
representa realmente una región de la memoria de la computadora.

a 25.1 34.2 5.25 7.45 6.09 7.54


0 1 2 3 4 5

Declaración de un array

Al igual que con cualquier tipo de variable, se debe declarar un array antes de
utilizarlo. La sintaxis para declarar un array de una dimensión determinada es:

Tipo nombreArray [númeroDeElemetos];

Por ejemplo, para crear un array (lista) de diez valores enteros, se escribe:

int números[10];

Pag 1
Introducción a la programación
Tema: Arreglos
Esta declaración hace que el compilador reserve espacio suficiente para
contener diez valores enteros. En C++ los enteros ocupan, normalmente, 2
bytes, de modo que un array de diez enteros ocupa 20 bytes de memoria.

Otros ejemplos:

int edad[5]; Array edad contiene 5 elementos: el


primero edad[0] y el último, edad[4].

int pesos[25], longitudes[100]; Declara 2 arrays de enteros.

float salarios[25]; Declara un array de 25 elementos float.

double temperaturas[50]; Declara un array de 50 elementos


double.

char letras[15]; Declara un array de caracteres.

En los programas se pueden referenciar elementos utilizando fórmulas para los


subíndices. Mientras que el subíndice puede evaluar a un entero, se puede
utilizar una constante, una variable o una expresión para el subíndice. Así,
algunas referencias individuales a elementos son:

edad[4];
ventas[total + 5]
bonos[mes]
salario[mes[ i ] * 5]

Acceso a los elementos de un arreglo

Se puede acceder a cada elemento del array utilizando un índice en el array.


Por ejemplo:

cout << números[4] << endl;

Visualiza el valor del elemento 5 del array. Los arrays siempre comienzan en el
elemento 0, así pues, el array números declarado anteriormente contiene los
siguientes elementos individuales:

números[0] números[1] números[2] números[3]


números[4] números[5] números[6] números[7]
números[8] números[9]

Almacenamiento en memoria de los arrays

Los elementos de los arrays se almacenan en bloques contiguos. Así, por


ejemplo, los siguientes arrays

Pag 2
Introducción a la programación
Tema: Arreglos
int edades[5];
char códigos[5];

se representan gráficamente en memoria así:

edades códigos
[0] [0]
[1] [1]
[2] [2]
[3] [3]
[4] [4]

Los arrays de caracteres funcionan de igual forma que los arrays numéricos,
partiendo de la base de que cada carácter ocupa normalmente un byte. Por
ejemplo, un array llamado nombre se puede representar en la figura.
Nombre
M [0]
o [1]
char nombre[ ] = “Mortimer” r [2]
t [3]
char nombre[10] = “Mackoy” i [4]
m [5]
e [6]
r [7]

Inicialización de un array

Se deben asignar valores a los elementos del array antes de utilizarlos, tal
como se asignan valores a variables. Para asignar valores a cada elemento del
array de enteros precios, se puede escribir:

precios[0] = 10;
precios[1] = 20;
precios[2] = 30;
precios[3] = 40;
...

Pag 3
Introducción a la programación
Tema: Arreglos
Este método no es práctico cuando el array contiene muchos elementos. El
método utilizado normalmente es inicializar (iniciar) el array completo en una
sola sentencia.

Cuando se inicializa un array, el tamaño del array se puede determinar


automáticamente por las constantes de inicialización.

int numeros [6] = {10, 20, 30, 40, 50, 60};


int n[ ] = {3, 4, 5}; //Declara un array de 3 elementos
char c[ ] = {‘L’, ‘u’, ‘i’, ‘s’}; //Declara un array de 4 elementos

Las sentencias anteriores crearan en memoria unas estructuras similares a la


siguientes:

numeros n
[0] 10 [0] 3
[1] 20 [1] 4
[2] 30 [2] 5
[3] 40
[4] 50
[5] 60

c
[0] L
[1] U
[2] I
[3] S

El array números tiene 6 elementos, n tiene 3 y el array c tiene 4 elementos.


Los arrays de caracteres se pueden inicializar con una constante de cadena,
como en

Char s[ ] = {“Mortimer”};

El método de inicializar arrays mediante valores constantes después de su


definición es adecuado cuando el número de elementos del array es pequeño.
Por ejemplo: el siguiente programa crea un arreglo llamado cuenta que tiene 10
elementos de tipo entero, lo inicializa y los despliega en orden descendente.

#include<iostream.h> Arreglo1.cpp
#include<conio.h>
#include<stdio.h>

void main()
{

Pag 4
Introducción a la programación
Tema: Arreglos
clrscr();
int i;
int cuenta[10]={10,9,8,7,6,5,4,3,2,1};
cout<<"CUENTA DESCENDENTE \n";
for (i=9;i>=1;i--)
{
cout<<cuenta[i]<<"\n";
}
getch();
}

Se pueden asignar valores a un array utilizando un bucle for o while/do-while, y


este suele ser el sistema más empleado normalmente. Por ejemplo, para
inicializar todos los valores del array números al valor 0, se puede utilizar la
siguiente sentencia:

for ( i = 0; i <= 5; i++)


numeros [ i ] = 0;

debido a que el valor del subíndice i varía de 0 a 5, cada elemento del array
números se inicializa y establece a cero.

Ejemplo: El siguiente programa crea un arreglo de 10 elemento llamado


Muestra, inicializa los elementos del arreglo con valores leídos desde el teclado
y los despliega en pantalla.

// Programa que rellena los elementos de un arreglo con datos procedentes


// del teclado.

#include <stdio.h>
#include <iostream.h> Array001.cpp
#include <conio.h>

void main()
{

clrscr();
int Muestra[10];
cout<<"la tecla ENTER despues de cada entrada \n\n";
for (int i=0;i<=9;i++)
{
cout<<"Introduzca un número para el elemento ”<<i; ";
cin>>Muestra[i];
}

cout<<"Los valores almacenados en el arreglo son: \n ";


for (int j=0;j<=9;j++)

Pag 5
Introducción a la programación
Tema: Arreglos
{
cout<<Muestra[j]<<endl;
}

getch();
}

Ejemplo: El siguiente programa crea un arreglo y almacena en el los datos


procedentes del teclado y visualiza la suma de todos los números

// Programa que almacena datos en el arreglo procedentes del teclado


// y presenta como resultado la suma de todos los números

#include<iostream.h>
#include<conio.h> Arreglo2.cpp
#include<stdio.h>

void main()
{
clrscr();
int total;
int nums[8]; //Declaracion del arreglo nums
total=0;
for (int i=0;i<8;i++) // Ciclo for para leer los datos desde el teclado
{ // y almacenarlos en el arreglo
cout<<"Introduzca un numero: ";
cin>>nums[i];
total=total+nums[i]; // Total es la variable que va acumulando la suma
}
cout<<"El total de todos los numeros ingresados es: "<< total;
getch();
}

Arrays de caracteres y cadenas de texto

Una cadena de texto es un conjunto de caracteres, tales como


<<ABCDEFG>>. C++ soporta cadenas de texto utilizando un array de
caracteres que contenga una secuencia de caracteres:

char cadena [ ] = “ABCDEFG”;

Pag 6
Introducción a la programación
Tema: Arreglos
La diferencia entre un array de caracteres y una cadena de caracteres es que
las cadenas contienen un carácter nulo al final del array de caracteres.

Las cadenas se deben almacenar en arrays de caracteres, pero no todos los


arrays de caracteres contienen cadenas.

A continuación se muestra una cadena de caracteres y un array de caracteres.

cad2
cad1 [0] [0]
[1] [1]
[2] [2]
[3] [3]
[4] [4]
[5] [5]
[6] [6]
[7] [7]
[8] [8] Carácter nulo

Array de caracteres Cadena

M M
o o
r r
t t
i i
m m
e e
r r
\0

Las cadenas se señalan incluyendo un carácter al final de la cadena: el


carácter nulo (\0), cuyo valor en el código ASCII es 0. El medio más fácil de
inicializar un array de caracteres es hacer la inicialización de la declaración:

char Cadena[7] = “ABCDEFG”;

el compilador inserta automáticamente un carácter nulo al final de la cadena,


de modo que la secuencia real sería:

Pag 7
Introducción a la programación
Tema: Arreglos
char Cadena[7] = “ABCDEFG”

Cadena A B C D E F \0

La asignación de valores a una cadena se puede hacer del modo siguiente:

Cadena[0] = ‘A’;
Cadena[1] = ‘B’;
Cadena[2] = ‘C’;
Cadena[3] = ‘D’;
Cadena[4] = ‘E’;
Cadena[5] = ‘F’;
Cadena[6] = ‘\0’;

Sin embargo, no se puede asignar una cadena a un array del siguiente modo:

Cadena = “ABCDEF”

Otros ejemplos:

El siguiente es un programa que crea un arreglo llamado vector , almacena en


el los resultados de una operación de suma y despliega cada elemento del
arreglo

#include <stdio.h> Array01.cpp


#include <iostream.h>
#include <conio.h>

void main()
{

clrscr();
int vector[5];
for (int i=0;i<=4;i++)
{
vector[i]=100+i;
}
for (int j=0;j<=4;j++)
{
cout<<vector[j]<<endl;
}

getch();
}

Pag 8
Introducción a la programación
Tema: Arreglos

// Programa para el manejo de arreglo de cadenas de caracteres

#include <stdio.h> Array03.cpp


#include <iostream.h>
#include <conio.h>

void main()
{

clrscr();
unsigned short int calif[10];
char nombre[10][21];

for (int i=0;i<10;i++)


{
gotoxy(10,i+1);
cout<<"Nombre: ";
gets(nombre[i]);
gotoxy(45,i+1);
cout<<"Calif : ";
cin>>calif[i];
cout<<endl;
}
clrscr();
for (int k=0;k<10;k++)
{
gotoxy(10,k+1);
cout<<nombre[k];
gotoxy(45,k+1);
cout<<calif[k];
cout<<endl;
}

getch();
}

// Programa ejemplo para la manipulacion de arreglos bidimensionales

#include <stdio.h>
#include <iostream.h> Array02.cpp
#include <conio.h>

void main()
{

clrscr();
int matriz[3][4];
int a;

Pag 9
Introducción a la programación
Tema: Arreglos
a=0;
for (int i=0;i<=2;i++)
{
for (int j=0;j<=3;j++)
{
a=a+1;
matriz[i][j]=a;
}

}
for (int k=0;k<=2;k++)
{
for (int l=0;l<=3;l++)
cout<<matriz[k][l];
cout<<endl;
}

getch();
}

Pag 10

You might also like