arreglos unidimensionales y bidimensionales

Anuncio
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
ARREGLOS UNIDIMENSIONALES Y BIDIMENSIONALES
ARREGLOS
Un arreglo es una estructura de datos, o más técnicamente, un espacio de
memoria que permite almacenar una colección de elementos, todos del mismo
tipo. Conviene imaginar un arreglo como una secuencia contigua de celdas
(espacios de memoria), o casillas, en cada una de las cuales se puede guardar
un elemento de la colección. Además, es usual dibujarlo como lo ilustra la figura
siguiente:
0
1
2
3
4
5
6
Esta figura representa un arreglo de siete casillas cada una de las cuales se
puede utilizar para guardar un dato. La dimensión o tamaño de un arreglo es el
número de casillas que lo conforman. Debe ser claro, entonces, que la figura
anterior corresponde a un arreglo de dimensión 7.
Cada una de las casillas de un arreglo tiene asociado un número que la identifica
de manera única. A este número se le llama índice o dirección. En la figura
anterior, debajo de cada casilla, aparece su índice. En lenguajes como C, C++ y
java, la primera casilla del arreglo tiene índice 0, la segunda tiene índice 1, la
tercera índice 2, y así sucesivamente.
Es muy importante tener presente que si el arreglo es de dimensión N, la última
casilla tiene índice N-1.
ARREGLOS UNIDIMENSIONALES
Los arreglos unidimensionales son estructura de datos estática que le permiten
almacenar gran cantidad de información bajo un mismo nombre, también recibe el
nombre de vectores en álgebra o arreglos unidimensionales en programación
Los procesos normales con un vector o con sus elementos incluyen:
1
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Declarar toda la lista, Capturar sus elementos, Desplegarlos, Realizar operaciones
con ellos, entre otros procesos
Los lenguajes de programación, permiten que el programador declare arreglos de
cualquier tipo y prácticamente de cualquier tamaño.
Un arreglo se declara
usando el siguiente formato o plantilla:
DECLARACION DE UN ARREGLO
Tipo de dato nombre_arreglo[numero de elementos] = {elemento 1, elemento 2,...,elemento n};
Otros ejemplos como se pueden hacer la declaración de arreglos es
int edades[12];
float sueldos[10];
char carreras[10];
Como se ve, el número de elementos del arreglo estará dado por el número
encerrado entre [ ] al declararlo, esto se llama dimensionamiento, es obligatorio, a
menos que se dé implícitamente el tamaño del arreglo por medio de la
inicialización del mismo como así:
char Operador[ ] = {'U', ‘N', 'A', 'D'};
int Enteros[] = { 4, 13, 0, 5, 6, -23, 7, 345, 45, -12};
En el primer ejemplo, Operador será un arreglo de cuatro posiciones, y queda
inicializado con los correspondientes caracteres dados entre llaves. En el
segundo ejemplo el vector Enteros tendrá 10 posiciones.
En un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el
nombre de longitud o tamaño del vector. Para hacer referencia a un elemento del
vector se usa el nombre del mismo, seguido del índice (entre corchetes), el cual
indica una posición en particular del vector. Por ejemplo:
Vec[x]
Donde:
2
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Vec…………Nombre del arreglo
x…………… Numero de datos que constituyen el arreglo
Siendo más claros, si queremos manejar un conjunto de 9 elementos de tipo
entero, tendremos que definir un arreglo de la siguiente manera:
int c[9]; // esquemáticamente queda así:
Que es el subíndice? Es el número que hace referencia a una celda específica
del arreglo, en el caso de C++ el subíndice es un valor que inicia desde cero y se
extiende hasta el valor que se haya definido el arreglo, es importante no confundir
el subíndice con el valor que toma el arreglo en esa posición, para el ejemplo
anterior el arreglo toma el nombre de c y si queremos referirnos a una posición en
especial, por ejemplo a la posición número 4 x= c[4], para este caso la variable x
tomara el valor de -200.14
Normalmente un arreglo va acompañado de un ciclo, y el más común para
manipular arreglos es el ciclo for, ya que se conoce una dimensión exacta del
arreglo.
A continuación se muestra un programa sencillo de cómo se debe cargar un
arreglo con cinco valores numéricos
3
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
PROGRAMACION EN FALCON C++
#include <iostream>
#include <stdlib.h>
using namespace std;
int a[5], i;
int main()
{
system ("cls");
cout << "Cargar un vector \n";
for (i=0; i<5; i++)
cin >> a[i];
cout << "** Vector Cargado \n";
for (i=0; i<5; i++)
cout << a[i];
}
Ejemplo: mediante la utilización de un arreglo, leer las edades de 10 estudiantes
del curso Lógica de programación, encontrar la mayor de las edades, y el
promedio de las mismas
Recordemos:
Recuerdan que, una de las primeras preguntas que me hago al abordar el
ejercicio, es definir lo que no conozco de este ejercicio.
Perfecto las edades, y el promedio? (ojo, el promedio no lo conozco pero lo puedo
calcular con la Σ de las edades sobre el número de encuestados)
Manos a la obra
Para dar solución al ejercicio se plantea realizar tres pasos sencillos los cuales
son: defina las variables de entrada, proceso y salida que se van a utilizar para
dar solución al enunciado. Para el caso particular se plantea las siguientes
variables y arreglo
4
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Entrada
edad[10]
Proceso
Salida
suma,
promedio, promedio,
edad_mayor
edad_mayor
El segundo paso es diseñar el diagrama de flujo o pseudocodigo para este caso
nos apoyamos en la herramienta pseint para diseñar el pseudocodigo, se
recomienda realizar una prueba de escritorio para verificar los resultados que
arroja el ejercicio.
A continuación se muestra un pantallazo de las
instrucciones utilizadas
El tercer paso es codificar en la herramienta Falcon C++ el programa, utilizando
las mismas variables, y arreglo utilizados en el pseudocodigo
#include <iostream>
#include <stdlib.h>
5
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
using namespace std;
int edad[10], k, suma=0, promedio, edad_mayor;
int main()
{
system ("cls");
for (k=0; k<10; k++)// ciclo para limpieza, aunque para este caso no sea
edad[k]=0; // necesario
// Leemos las edades
for (k=0; k<10; k++)
{
cout << "por favor ingrese la edad para el estudiante # " << k+1 << "\n";
cin >> edad[k];
} //calculamos el promedio, aunque lo hubiésemos podido hacer en el ciclo
// anterior, también encontraremos la mayor de las edades, mediante una
//deducción sencilla, asumiremos que la primera de las edades que ingreso es
//la mayor de todas, para luego compararla con las demás e ir intercambiando
//su valor
edad_mayor= edad[0]; // edad_mayor toma el primer valor del arreglo
for (k=0; k<10; k++)
{
suma=suma+edad[k];
if (edad_mayor < edad[k])
{
edad_mayor = edad[k];
}
}
promedio=suma/10;
cout << "el promedio de las edades es: " << promedio << "\n";
cout << "la mayor de las edades es : \t " << edad_mayor;
system("pause");
}
Realizamos la prueba de escritorio
k
0
1
edad[ ]
20
25
suma
20
45
edad_mayor
20
25
promedio
2
9
6
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
2
3
4
5
6
7
8
9
30
15
40
20
20
35
25
20
75
90
130
150
170
205
230
250
30
40
15
17
20.3
23
25
ARREGLOS BIDIMENSIONALES
Los arreglos bidimensionales también conocidos como matrices son una
estructura de datos, o más técnicamente, un espacio de memoria que permite
almacenar una colección de elementos, todos del mismo tipo. La diferencia con
los arreglos está en que, en las matrices, los elementos no están organizados
linealmente sino que su organización es bidimensional, es decir, en filas y
columnas. Conviene imaginar una matriz como una organización de celdas de
memoria, o casillas, en cada una de las cuales se puede guardar un elemento de
la colección. Además, es usual dibujarla como lo ilustra la figura siguiente:
0
1
2
3
4
5
0
1
2
3
Esta figura representa un matriz de cuatro filas (numeradas verticalmente de 0 a 3)
y seis columnas (numeradas horizontalmente de 0 a 5). En cada una de las 24
celdas o casillas se puede guardar un dato. La dimensión o tamaño de una
matriz es el número filas por el número de columnas. Debe ser claro entonces
que la figura anterior es la gráfica de una matriz de dimensión 4x6.
La numeración de las filas y las columnas, determina que cada una de las casillas
de una matriz tiene asociados dos números que la identifican de manera única. A
estos números se les llama índice de fila e índice de columna, respectivamente.
7
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
En pseudocodigo, y también en C y C++, las filas y las columnas se numeran
desde 0.
Porque mostrar una imagen de una hoja de cálculo (Excel), como inicio de este
tema, es simple es el ejemplo típico de una matriz, como se observa está dividido
en filas y columnas, y cada posición se lo conoce como celda, de igual manera se
comporta una matriz en C++, solo que las columnas no están identificadas con
letras sino con números al igual que las filas.
DECLARACION DE UNA MATRIZ
Tipo de dato nombre_matriz[numero_filas][numero_columnas] = {elemento 1, elemento
2,...,elemento n};
Otros ejemplos como se pueden hacer la declaración de matrices es
int lotes[6][3];
float notas[5][5];
char nom_ape[10][10];
Los índices se crearon para permitir que el programador se pueda referir, de forma
específica y directa, a una cualquiera de las casillas de la matriz, tanto para
guardar un dato en esa casilla, como para obtener el dato almacenado en ella.
Normalmente una matriz va acompañado de un ciclo anidado, y el más común
para manipular matrices es el ciclo for, ya que se conoce una dimensión exacta de
la matriz.
A continuación se muestra un programa sencillo de cómo se debe cargar una
matriz de 3x3 con valores numéricos
8
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
PROGRAMACION EN FALCON C++
#include <iostream>
#include <stdlib.h>
using namespace std;
int mat[3][3];
int i,j;
int main()
{
cout << "Cargar matriz: ";
cout << "\n";
for (i=0; i<3; i++)
for (j=0; j<3; j++)
cin >> mat[i][j];
// mostrar matriz
cout << "Resultado";
for (i=0; i<3; i++)
for (j=0; j<3; j++)
{ cout << mat[i][j]<< "\t" << i << j;
cout << "\n";
}
system ("pause");
}
Ejemplo: mediante la utilización de una matriz, Un algoritmo que almacene
números en una matriz de 5 x 6. Imprimir la suma de los números almacenados en
la matriz.
Recordemos:
Recuerdan que, una de las primeras preguntas que me hago al abordar el
ejercicio, es definir lo que no conozco de este ejercicio.
Perfecto suma de los números de la matriz (se requiere sumar todos los
números de la matriz sumando las filas y las columnas)
9
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Manos a la obra
Para dar solución al ejercicio se plantea realizar tres pasos sencillos los cuales
son: definir las variables de entrada, proceso y salida que se van a utilizar para
dar solución al enunciado. Para el caso particular se plantea las siguientes
variables y matriz
Entrada
mat[5][6]
Proceso
i, j
Salida
sum
El segundo paso es diseñar el diagrama de flujo o pseudocodigo para este caso
nos apoyamos en la herramienta pseint para diseñar el pseudocodigo, se
recomienda realizar una prueba de escritorio para verificar los resultados que
arroja el ejercicio. A continuación se muestra las instrucciones utilizadas
Proceso suma_matriz
definir i, j, sum Como Entero;
Dimension mat[5,6];
Escribir "Digite Valor:"
Para i<-1 Hasta 5 Con Paso 1 Hacer
Para j<-1 Hasta 6 Con Paso 1 Hacer
Leer mat[5,6]
sum<-sum + mat[5,6]
Fin Para
Escribir sum
Fin Para
FinProceso
El tercer paso es codificar en la herramienta Falcon C++ el programa, utilizando
las mismas variables, y matriz utilizados en el pseudocodigo
/*Un algoritmo que almacene números en una matriz de 5 x 6. Imprimir la suma de
los números almacenados en la matriz. */
#include "iostream"
#include "string"
#include <stdlib.h>
void cargar();
using namespace std;
10
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
int mat[5][6];
int i, j, sum;
int main()
{
system ("cls");
cargar();
}
void cargar()
{
cout << "Digite valor [][]" << i << j;
for (i=0; i<5; i++)
for (j=0; j<6; j++)
{
cin >> mat[i][j];
sum = sum + mat[i][j];
}
cout << sum;
system ("pause");
}
Realizamos la prueba de escritorio
i
1
2
j
mat[][]
sum
1
1
1
2
2
3
3
3
6
4
4
10
5
5
15
6
6
21
1
1
22
2
2
24
3
3
27
4
4
31
11
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
3
4
5
5
5
36
6
6
42
1
1
43
2
2
45
3
3
48
4
4
52
5
5
57
6
6
63
1
1
64
2
2
66
3
3
69
4
4
73
5
5
78
6
6
84
1
1
85
2
2
87
3
3
90
4
4
94
5
5
99
6
6
105
12
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
13
Descargar