1
.
.A
.S
.M
U
Facultad de Ingeniería IND 312
al
tri
Universidad Mayor de San Andrés
s
du
In
ia
er
M.Sc. Ing. Germán Jesús Pereira Muñoz.
i
en
La Paz, Bolivia I/19 Practica Nº 7 – PSEINT Arreglos.
g
In
oz
un
Arreglos
M
ira
re
• Los arreglos (arrays) son una estructura de datos que permite el almacenamiento estático (tamaño
Pe
s
su
definido) de una serie de elementos del mismo tipo (carácter, numérico, Booleano) ordenados en fila.
Je
an
m
•
er
Su representación matemática es la de un vector de 1 dimensión, por lo que podemos llegar a representar
.G
ng
una matriz con arrays multidimensionales.
.I
c
.S
M
• Cada array posee un índice (empieza en 0) que indica la posición en la que está almacenado un elemento
en el arreglo, esto se debe a que el array está segmentado.
Dimensiones
Es una Colección de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y
reciben un nombre común.
Y para referirse a un determinado elemento tendremos de acceder usando un índice para especificar la
posición que queremos extraer o modificar su valor. Las dimensiones pueden ser:
1. Unidimensionales: solo tiene una solo dimensión una fila y una columna
2. Bidimensionales: tablas o matrices.
3. Multidimensionales: de 3 o más dimensiones.
Dimensión para un arreglo unidimensional (Vector)
Declaración:
Dimension <Nombre de la dimension> [<capacidad>];
Definir <Nombre de la variable de la dimension> Como <tipo de la variable>;
Capacidad: es el tamaño de la dimensión, es un número entero con el cual indicamos el número de
elementos que queremos guardar con el mismo tipo.
Tipo de datos: es el tipo de datos que queremos que sea la colección, puede ser entero, real, cadena,
carácter o un registro.
Nombre de la variable: es el nombre con el cual vamos a ser referencia en el programa principal
2
.
.A
.S
.M
Nota: En sintaxis estricta, se debe definir siempre la variable antes o después de dimensionarla. A
U
diferencia de otros lenguajes de programación, dimensionar una variable no implica declararla.
al
tri
s
du
In
Ejemplo:
ia
i er
en
g
Dimension numero [10];
In
oz
Con esta declaración estamos creando una colección de 10 números enteros
un
M
ira
3 5 7 8 3 6 9 2 45 67
re
Pe
s
0 1 2 3 4 5 6 7 8 9
su
Je
an
m
er
Nota: Al igual que en los lenguajes de programación reales, en sintaxis estricta, la base de la dimensión es
.G
ng
0, pero en sintaxis flexible o perfil flexible es base 1. Para utilizar dimensiones variables debemos habilitar
.I
c
.S
la opción, permitir utilizar variables para dimensionar arreglos en las opciones del perfil.
M
Siempre que nosotros queremos hacer referencia a uno de los elementos de la dimension, tendremos que
indicar la posición, con un número entero que este dentro del rango.
Seguidamente definimos el tipo de dimensión:
Definir número Como Entero:
Si que queremos escribir el valor de posición 7 tendremos que escribir:
Escribir numero[7]; // de esta indicamos escribir la posición 7 o
I<- 7 //asignamos un valor a una variable de tipo entero
Escribir numero[ 0 ]; // luego usamos la variable I para indicar la posición que queremos
presentar.
// Si deseamos asignar valores a un elemento del arreglo hacer:
Leer numero[2]; // indicamos directamente la posición que queremos leer
I<-6 // Asignamos un valor a una variable entero y luego la usamos
Leer numero[ i ]; // para indicar la lectura de elemento que queremos leer
Ingresar 5 números a un arreglo de 5 elementos y luego presentar los números.
Nota: Si PSeInt está configurado para trabajar en base 0 y se define una dimensión con la misma cantidad
de elementos que de declarar el último elemento ingresado no va a tener posición de memoria en la
dimensión ingresada. Esto lo podemos cambiar personalizando el perfil o utilizando sintaxis flexible.
3
.
.A
.S
.M
U
al
tri
s
du
In
ia
i er
en
g
In
oz
un
M
ira
re
Pe
s
su
Je
an
m
er
.G
ng
c.I
.S
M
Ejemplo 1
Sumar dos vectores con valores ingresados por el usuario y desplegar el resultado
4
.
.A
.S
.M
Ejemplo 2
U
Realizar un algoritmo para ordenar un vector, de menor a mayor utilizando el método burbuja.
al
tri
s
du
In
ia
i er
en
g
In
oz
un
M
ira
re
Pe
s
su
Je
an
m
er
.G
ng
.I
c
.S
M
5
.
.A
.S
.M
U
al
tri
s
du
In
ia
i er
en
g
In
oz
un
M
ira
re
Pe
s
su
Je
Ejercicio
an
Ingresar el nombre del empleado en un arreglo y el sueldo en otro, luego de ingresar los datos determinar
m
er
.G
el IVA, el total a pagar para cada uno de los empleados, tome en cuenta que si el sueldo es menor de
ng
.I
c
7000bs no paga impuesto, en caso contrario el impuesto a pagar es el 16% del total.
.S
M
Nota: Para poder utilizar dimensiones de dimensión variable es necesario habilitar perfil flexible en el
editor.
6
.
.A
.S
.M
Dimensión de un arreglo Bidimensional
U
l
Declaración:
a
tri
s
du
In
Dimension <Nombre de la variable> [<Líneas>, <Columnas>];
ia
i er
en
También se les denomina matrices o tablas. Un arreglo bidimensionales una tabla que ahora tiene líneas y
g
In
columnas, donde las líneas indican la primera dimensión y las columnas la segunda dimensión.
oz
un
M
0 1 2 3 4 5
ira
re
Pe
0
s
1
su
Je
2
an
m
3
er
.G
4
ng
.I
La tabla que se muestra nos representa un arreglo de 2 dimensiones con 5 líneas y 6 columnas, el código
c
.S
M
para declarar este dimension sería:
Dimension numero[5,4];
La referencia a un determinado elemento de la matriz, requiere el empleo de un primero subíndice que
indica la fila y el segundo que indica la columna. Ambos subíndices deberán de ser de tipo entero.
Por ejemplo si quisiéramos guardar el valor de 30 el la línea 4 columna 3 el código en PSeInt sería:
Numero[4,3]<-30;
0 1 2 3 4 0 1 2 3 4 0 1 2
0 0 0 1 2 3
1 1 1 4 5 6
2 2 7 2 7 8 9
3 3 3 10 11 12
4 4 Matb = {
{1, 2, 3},
Mat[5,5]; Mat[2,1] = 7; {4, 5, 6},
{7, 8, 9},
{10, 11, 12}
};
7
.
.A
.S
.M
Ejemplo 1
U
al
tri
Ingresar 9 números a un arreglo de 3*3 elementos y luego presentar los números.
s
du
In
ia
er
Nota: Si PSeInt está configurado para trabajar en base 0 y se define una dimensión con la misma cantidad
i
en
g
de elementos que de declarar el último elemento ingresado no va a tener posición de memoria en la
In
oz
dimensión ingresada. Esto lo podemos cambiar personalizando el perfil o utilizando sintaxis flexible.
un
M
ira
re
Pe
s
su
Je
an
m
er
.G
ng
.I
c
.S
M
8
.
.A
.S
.M
Ejemplo 2
U
Desarrollar un algoritmo para hallar la suma total de todos los números ingresados en una matriz 3*3.
al
tri
s
du
In
ia
i er
en
g
In
oz
un
M
ira
re
Pe
s
su
Je
an
m
er
.G
ng
.I
c
.S
M
9
.
.A
.S
.M
Ejemplo 3
U
Desarrollar un algoritmo para hallar la suma de cada una las filas de los números ingresados en una matriz
al
tri
s
du
3*3.
In
ia
i er
en
g
In
oz
un
M
ira
re
Pe
s
su
Je
an
m
er
.G
ng
.I
c
.S
M
10
.
.A
.S
.M
Ejercicio 1: Crea un programa que pida un número al usuario un número de mes (por ejemplo, el 4) y diga
U
cuántos días tiene (por ejemplo, 30). Debes usar una matriz.
al
tri
s
du
Ejercicio 2: Haz un programa que pida al usuario 5 datos, los guarde en una matriz y luego muestre su
In
ia
media (la suma de los 5 datos, dividida entre 5).
i er
en
g
In
Ejercicio 3: Crea una versión ampliada del ejercicio 9.2, en la que se pida al usuario 5 datos, se guarden
en una matriz y finalmente se calcule su media, se muestre ésta y se muestren también los valores
oz
un
mayores que la media).
M
ira
re
Ejercicio 4: Si has estudiado lo que es un vector, crea un programa que reserve espacio para dos vectores
Pe
s
de 3 componentes, pida al usuario sus valores y calcule la suma de ambos vectores (su primera
su
Je
componente será x1+y1, la segunda será x2+y2 y así sucesivamente).
an
m
er
Ejercicio 5: Si has estudiado lo que es un vector, prepara un programa que reserve espacio para dos
.G
ng
vectores de 3 componentes, pida al usuario sus valores y calcule su producto escalar (x1·y1+ x2·y2+x3·y3).
.I
c
.S
M
Ejercicio 6: Haz un programa que pida al usuario 7 números enteros y calcule (y muestre) cuál es el mayor
de ellos. Nota: para calcular el mayor valor de una matriz, hay que comparar cada uno de los valores que
tiene almacenados con el que hasta ese momento es el máximo provisional. El valor inicial de este máximo
provisional no debería ser cero (porque el resultado sería incorrecto si todos los números son negativos),
sino el primer elemento de la matriz.
Ejercicio 7: Crea un programa que prepare un array con 10 datos prefijados, luego pregunte al usuario qué
dato desea buscar, avise si ese dato no aparece, y que en caso contrario diga cuántas veces se ha
encontrado.
También se pueden crear arrays "de dos dimensiones" (por ejemplo, 3 filas y dos columnas), que se
acercan más al concepto matemático de matriz:
Algoritmo Matriz32
Dimension datos[3,2]
datos[1,1] <- 10
datos[2,1] <- 25
datos[3,1] <- 50
datos[1,2] <- 11
datos[2,2] <- 26
datos[3,2] <- 51
Escribir "El primer dato en la primera columna es ", datos[1,1]
Escribir "Y el ultimo de la segunda columna ", datos[3,2]
FinAlgoritmo
Ejercicio 8: Crea un programa que pida al usuario dos bloques de 10 números cada uno (usando un array
de dos dimensiones). Después deberá mostrar el mayor dato que se ha introducido en cada uno de esos
dos bloques.
Ejercicio 9: Si has estudiado álgebra matricial, haz un programa que calcule el determinante de una matriz
de 2x2, a partir de datos que introduzca el usuario.
11
.
.A
.S
.M
Ejercicio 10: Si has estudiado álgebra matricial, prepara un programa que calcule el determinante de una
U
matriz de 3x3.
al
tri
s
du
“El Hombre Nunca Sabe De Lo Que Es
In
ia
er
Capaz Hasta Que Lo Intenta”
i
en
g
In
Charles Dickens
oz
un
M
ira
re
Pe
s
su
Je
an
m
er
.G
ng
.I
c
.S
M