You are on page 1of 12

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

“AÑO DE LA DIVERSIFICACIÓN
PRODUCTIVA Y DEL FORTALECIMIENTO
DE LA EDUCACIÓN”

Programación en lenguaje C++
ING. José Alvarado Juárez
Ingeniería Civil

DATOS
o

o

Integrantes:
 Navarro Atoche Deyanira
 Pardo Mena Abigail
 Roa Gallo Tatiana
 Merino Viera Brayan
Tema:
Arrays o vectores

Sullana 31 de Diciembre 2015

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

ARRAYS O VECTOR
 Definición:
En programación se denomina matriz, vector o formación (en inglés arrays) a una zona de
almacenamiento continuo que contiene una serie de elementos del mismo tipo, los elementos
de la matriz.
Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos
ordenados en fila (o filas y columnas si tuviera dos dimensiones).
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión
principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede
ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales,
aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.

 Índices de un array
Los índices son números que se utilizan para identificar a cada uno de los componentes de un
array.
Todo vector se compone de un determinado número de elementos. Cada elemento es
referenciado por la posición que ocupa dentro del vector. Dichas posiciones son llamadas
índice y siempre son correlativos. Existen tres formas de indexar los elementos de una matriz:


Indexación base-cero (0): en este modo el primer elemento del vector será la
componente cero ('0') del mismo, es decir, tendrá el índice '0'. En consecuencia, si el
vector tiene 'n' componentes la última tendrá como índice el valor 'n-1'. El lenguaje C es
un ejemplo típico que utiliza este modo de indexación.
Indexación base-uno (1): en esta forma de indexación, el primer elemento de la matriz
tiene el índice '1' y el último tiene el índice 'n' (para una matriz de 'n' componentes).
Indexación base-n (n): este es un modo versátil de indexación en la que el índice del
primer elemento puede ser elegido libremente, en algunos lenguajes de programación
se permite que los índices puedan ser negativos e incluso de cualquier
tipo escalar (también cadenas de caracteres).

 La importancia de declarar arreglos de tamaño adecuado
Al igual que cualquier variable, los arreglos ocupan espacio en memoria. El programador
especifica el tipo de dato y el total de elementos requerido por el arreglo de tal forma que la
computadora pueda reservar la cantidad apropiada de memoria. Si el programador declara un
arreglo de 100 elementos de tipo entero y sólo utiliza 10 espacios, desperdicia 90 en memoria
para datos de tipo entero. Por lo contrario, si se declara un arreglo de 50 elementos y se
quieren manejar 100, faltarán 50 espacios; sin embargo, no se presentará mensaje de error en

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++
el tiempo de compilación o ejecución, sino hasta que el sistema operativo se dé cuenta y por lo
tanto surja la falla en el programa.

Se clasifica en:


Unidimensionales (vectores o listas)
Bidimensionales (tablas o matrices)
Multidimensionales (más de dos dimensiones)

Los más utilizados son los unidimensionales y los bidimensionales

DECLARAR Y CREAR UN ARRAY

Para declarar un array se escribe

Para declarar un array de enteros escribimos

tipo_de_dato[] nombre_del_array;
int[] numeros;

Para crear un array de 4 número enteros escribimos

La declaración y la creación del array se puede hacer en una misma línea.

Numeros=new int[4];
int[] numeros =new int[4];

INICIALIZAR Y USAR LOS ELEMENTOS DEL ARRAY
Para inicializar el array de 4 enteros escribimos
Números [0]=2;
Números [1]=-4;
Números [2]=15;

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++
Números [3]=-25;
Se pueden inicializar en un bucle for como resultado de alguna operación
for (int i=0; i<4; i++){
numeros[i]=i*i+4;
}
No necesitamos recordar el número de elementos del array, su miembro dato length nos
proporciona la dimensión del array. Escribimos de forma equivalente
for(int i=0; i<numeros.length; i++){
numeros[i]=i*i+4;
}
Los arrays se pueden declarar, crear e inicializar en una misma línea, del siguiente modo
int[] numeros={2, -4, 15, -25};
String[] nombres={"Juan", "José", "Miguel", "Antonio"};
Para imprimir a los elementos de array nombres se escribe
for(int i=0; i<nombres.length; i++){
System.out.println(nombres[i]);
}

 ARRAYS

MULTIDIMENSIONALES

Una matriz bidimensional puede tener varias filas, y en cada fila no tiene por qué haber el mismo
número de elementos o columnas. Por ejemplo:
o

Podemos declarar e inicializar la siguiente matriz bidimensional
double[][] matriz={{1,2,3,4},{5,6},{7,8,9,10,11,12},{13}};

o

La primer fila tiene cuatro elementos {1,2,3,4}

o

La segunda fila tiene dos elementos {5,6}

o

La tercera fila tiene seis elementos {7,8,9,10,11,12}

o

La cuarta fila tiene un elemento {13}

o

Para mostrar los elementos de este array bidimensional escribimos el siguiente código
for (int i=0; i < matriz.length; i++) {
for (int j=0; j < matriz[i].length; j++) {
System.out.print(matriz[i][j]+"\t");
}
System.out.println("");
}

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++
Como podemos apreciar, matriz.length nos proporciona el número de filas (cuatro), y matriz[i].length,
nos proporciona el número de elementos en cada fila.

UNIDIMENSIONALES (VECTORES O LISTAS)
Un arreglo unidimensional es un conjunto de n elementos del mismo tipo almacenados en memoria
continua en un vector o lista. Para acceder a cada elemento del arreglo se requiere de un solo índice
o subíndice, el cual representa la posición en la que se encuentra.
Los enteros requieren de dos bytes para almacenarse en memoria; como se muestra, por cada
posición se requiere de dos localidades de memoria, por ejemplo el 0 ocupa la posición 1000 y 1001.
La cantidad de arreglos que se pueden declarar dependerá de la memoria libre, que comúnmente es
de 64 Kbytes; esta cantidad puede variar e incluso se puede utilizar más memoria disponible siempre
y cuando la computadora cuente con ella.

Formato para declarar un arreglo unidimensional
A continuación se muestra un arreglo de números reales cuyo identificador es x:
Pseudocódigo

Lenguaje C

real x[8]
posiciones

x[0
]

x[1
]

x[2]

elementos

4.2

12.
0

3.4
5

float x[8];

x[3]

4.3
2

x[4]

0.3
1

x[5
]

x[6
]
2.65

x[7
]
13.0

51.9

Este arreglo contiene ocho elementos almacenados entre la posición (0-7). Para referirnos a un elemento en
particular dentro del arreglo, especificamos el nombre del arreglo y el número de posición donde se encuentra
ubicado. La posición del arreglo va entre paréntesis cuadrados o corchetes (“[ ]”) para el lenguaje C; según el
lenguaje de programación será la sintaxis requerida.
El primer elemento en un arreglo es almacenado en la posición cero para el lenguaje C y en la posición uno
para el lenguaje Pascal. En este caso trabajaremos el pseudocódigo en C. Por lo tanto el primer elemento de un
arreglo x se encuentra en la posición cero y se conoce como x [0], el segundo como x [1], el séptimo como x [6]
y en general, el elemento de orden i del arreglo x será x [i-1], ya que se encuentra en la posición i–1, donde i es

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++
un subíndice que sirve para hacer referencia a la posición en el arreglo. Es decir, si almacenamos en un arreglo
las edades de los alumnos de un salón de clases (40), la edad del primer alumno estará v almacenada en la
Pseudocódigo
Lenguaje C
posición 0, la del segundo en la posición 1 y así sucesivamente hasta la del cuadragésimo alumno en la
c 5 x[6]/2;
posición 39. Los identificadores de
los arreglos
deben tener las características
de los identificadores
cx[6]
/2
del lenguaje.

Si la instrucción en pseudocódigo fuera imprimir x[4] se mostrará el valor de 0.31.
Si se requiere guardar en una posición específica del arreglo se debe escribir el identificador del arreglo y su
posición, por ejemplo: leer x[0]. Para llenar un arreglo completo se utiliza generalmente el ciclo desde (for)
facilitando con la variable de control el incremento de la i, donde la i representa el subíndice.
Para imprimir la suma de los valores contenidos en los primeros tres elementos del arreglo x,
escribiríamos:
Pseudocódigo

Lenguaje C

a _ x[0] 1 x[1] 1 x[2] a 5 x[0] 1x[1] 1x[2];
imprimir a

a 5 x[0] 1x[1] 1x[2];
printf(“%f”,a);

Donde la variable a es de tipo real, ya que los elementos del arreglo x son de ese tipo.
Para dividir el valor del séptimo elemento del arreglo x entre 2 y asignar el resultado a la variable c
escribiríamos:
Un subíndice debe ser un entero o una expresión cuyo resultado sea entero, por ejemplo a[2.5] no es válido. Si
un programa utiliza una expresión como subíndice, entonces la expresión se evalúa para determinar el
subíndice.
Si i 5 2 y j 5 4, entonces el enunciado:

Pseudocódigo

Lenguaje C

c [ i 1 j ] _10

c [i 1 j] 5 10;

Almacena el valor de 10 en el arreglo c en la posición [6]. Nótese que el nombre de arreglo con subíndice i se
utiliza al lado izquierdo de la asignación, como si c[i 1 j] fuera una variable.
Examinaremos el arreglo x. Sus ocho elementos se conocen como x[0], x[1], x[2], ..., x[7]. El valor de x[0] es
4.2, el valor de x[2] es 3.45, y así sucesivamente hasta el valor de x[7], que es 13.0.
Se pueden asignar valores a los elementos del arreglo antes de utilizarlos tal como se asignan valores a
variables. Una manera es inicializando el arreglo y la otra leyendo cada elemento del mismo. Comenzaremos
con la primera posibilidad.

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

1. Inicialización de arreglos unidimensionales
En el momento de declarar el arreglo, se especifican los valores.
Sintaxis:
Pseudocódigo

La

asignación

valores
declarar

se

de

realiza
el

los
al

tipo_dato identif
[tam_arreglo]_{valores}
entero lista [5] _ { 10,17,8,4,9 }

Lenguaje C
tipo_dato
identif[tam_arreglo]5{valores};
int lista [5] 5 {10,17,8,4,9};

arreglo

mediante el operador de asignación (_/5) y los valores contenidos dentro de las llaves { } a cada
posición del arreglo; los valores dentro de las llaves se deben separar por una coma (,) y no es necesario
asignarle un valor a cada posición ya que el compilador del lenguaje C se encargará de hacerlo según el
lugar donde se haya declarado el arreglo, comenzando por la posición cero. Este modo de asignación no
es válido si lo hacemos después de declarar el arreglo. Si el número de valores es menor al tamaño del
arreglo a las posiciones faltantes les asigna cero.

2. Lectura e impresión de un arreglo unidimensional
La declaración de arreglos se hace al mismo tiempo que la declaración de variables normales, como se
mencionó anteriormente:

Pseudocódigo
tipo_dato identif [tam_arreglo
entero lista [10]

Lenguaje C

tipo_dato identif [tam_arreglo];
int lista [10];
Es fácil procesar los elementos de un arreglo mediante ciclos repetitivos porque facilitan la lectura,
impresión, consulta y modificación de todos los elementos del arreglo, reduciendo el trabajo a unas
cuantas líneas bien empleadas. Cuando la computadora ejecuta un ciclo y la instrucción leer (scanf ) el
programa almacena los valores en la variable arreglo. Para utilizar ciclos repetitivos es necesario el uso
de variables de apoyo; el siguiente ejemplo muestra la forma de pedirle 10 números al usuario e
imprimirlos después, utilizando ciclos repetitivos for. Veamos cómo podemos leer e imprimir el arreglo
anterior:

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

Pseudocódigo
principal ()

Lenguaje C

#include <stdio.h>

inicio
entero lista[10], i

#include <conio.h>

desde (i— 0, i <=9 ,i—i +

main()

inicio

{

imprimir "Dame el elemento"
leer lista[i]

int lista[10], i;

fin

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

imprimir "Elementos de la lista"

{
printf("Dame el elemento");
scanf("%d",&lista[i]);
}
printf("Elementos de la lista\n");
for (i=0; i<=9;i++ )
printf("%d\n",lista[i] );
getch();
return 0;
}

El programa utiliza la estructura de repetición desde (for) y leer (scanf) para capturar los elementos del arreglo
llamado lista, e imprime el arreglo mediante otro desde (for) y el imprimir (printf), donde el desde recorre todas
las posiciones del arreglo. Es importante señalar que se debe respetar el tipo de dato del arreglo y además
especificar la posición del arreglo en la que se quiere guardar el valor.
La manera de declarar el tamaño del arreglo varía en cada compilador. Por ejemplo en Turbo C de Borland, el
tamaño debe ser constante como en el ejemplo presentado, donde el máximo tamaño posible es de 30 ele mentos y el que realmente ocuparemos es n.
El programa podría quedar abierto si manejamos un tamaño de arreglo n:

Pseudocódigo
constante MAX—30

Lenguaje C (Turbo C, DEV-CPP y
Code::Blocks)
#define MAX 3 0

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

principal ()
inicio
entero lista[MAX], i,n
imprimir "Dame el tamaño del
arreglo:"
leer n
desde (i—0, i<n ,
+
inicio
imprimir "Dame el elemento ",i
leer lista[i]
fin
imprimir("Elementos de la
lista")
desde (i—0, i<n , i—i+ 1)
imprimir lista[i]

fin

#include <stdio.h>
#include <conio.h>
main ()
{
int lista[MAX], i,n;
printf ("Dame el tamaño del arreglo:
scanf ("%d",&n);
for (i=0; i<n; i++)
{
printf("Dame el elemento %d ",i
scanf("%d",&lista[i]);
}
printf("Elementos de la lista\n");

");

);

for (i=0; i<n;i++)
printf("%d\n",lista[i]);
getch();
return 0;
}

EJERCICIOS PROPUESTOS (su solución en seudocódigo y
en lenguaje C++)
 Problema 1
Inicialice un arreglo de 10 elementos, realice e imprima la sumatoria.

PSEUDOCÓDIGO
principal ()
inicio
entero x[10] —
{6,7,9,2,4,7,4,3,2,9}
entero i, s—0
desde (i — 0, i < 10,

main()

+

s—s+x[i]
imprimir " La suma es"" s
fin

LENGUAJE C
#include <stdio.h>
#include <conio.h>
{
int x[10]={6,7,9,2,4,7,4,3,2,9};
int i,s=0;
for (i = 0;i<10;i+ + )
s + =x[i];
printf("La suma es %d",s);
getch(); return 0;
}

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

Problema

2.

Almacene en un vector, n elementos (máximo 30) e inserte un elemento ni en la posición pos, recorriendo los
siguientes elementos una posición a la derecha.

Pseudocódigo
constante p—printf
constante s—scanf
constante MAX— 30
principal()
inicio
entero lista[MAX],i,ni,n,pos
imprimir "Dame el Tamaño del
Arreglo "
leer n
imprimir "Dame el No. a Insertar "
leer ni
imprimir "Dame la Posición "
leer pos
desde (i——0,i<n,i<—i +
inicio
imprimir "Dame el valor cuya
posición es ",i
leer lista[i]
fin
for (i——n,i>pos,i<—i—1)
lista[i]—listap-1]
lista[pos]—ni
desde (i—0,i< = n,i—i +1)
imprimir lista[i]
fin

Lenguaje C
#include <stdio.h>
#include <conio.h>
#define p printf
#define s scanf
#define MAX 3 0
main()
{
int lista[MAX],i,ni,n,pos;
p("Dame el Tamaño del Arreglo ");
s("%i",&n);
p ("Dame el No. a Insertar ");
s("%i",&ni);
p("Dame la Posición ");
s("%i",&pos);
for (i=0;i<n;i++ )
{
p ("Dame el valor cuya posición es %d
scanf("%d",&lista[i]);
}
for (i = n;i>pos;i--)
lista[i]=lista[i —1];
lista[pos] =ni;
for (i=0;i<=n;i++)
p ("%d ",lista[i]);
getch();
}

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

 Problema 3
Almacene en un arreglo a, un conjunto n de elementos de tipo entero (max 15), almacene en el arreglo b los
elementos del arreglo a de forma invertida.

Pseudocódigo
principal () inicio
entero a[15],b[15],n, i,j imprimir
"Total de números" leer n
desde ( i—0, i<n,
+ leer a[ i ]
desde (i—0, j—n —1 ; i<n , j> =
0 ; i— i + 1, j— j — 1)
b[ i ] — a[ j ] desde ( i—0, i<n,
+
imprimir a[ i ] desde ( i—0, i<n,
+
imprimir b[ i ]
fin

Lenguaje C
#include <stdio.h>
#include <conio.h> main()
{
int a[15],b[15],n,
printf ( "Total de números");
scanf ("%d",&n );
for (i = 0; i<n; i + + )
scanf ("%d",&a[i]); for (i = 0, j=n—1; i<n, j > =
0; i + + , j--)
b[i] =a[j];
for (i=0; i<n ; i++)
printf ("%d \n",a[ i ] );
for (i=0; i<n ; i++)
printf ("%d \n",b[ i ] );
getch(); return 0
}

INGENIERÍA CIVIL

PROGRAMACIÓN EN LENGUIAJE C++

 Problema 4
Inicializar
un
con los primeros
impares, luego
media. Obtenga
programa

Lenguaje C

Código del programa
#include<iostream.h>
#include<conio.h>
Void main ()
{
Int i, impar [15];
Float s=0;
Cout<<”Ingrese 15 primeros números
impares:”;
Cin>>i=0; (i<15;i++);
{
Impar [i]=2*i+1;
S=s+(2*i+1);
Cout<<”El promedio es:”<<impar<<s/15;
}
}

arreglo
vector
15
enteros
determine
su
el código del