SlideShare una empresa de Scribd logo
1 de 51
1
•Vectores y
Matrices
2
Vectores y Matrices
• Vectores: Introducción
– Con lo aprendido hasta ahora resolvamos los
siguientes problemas:
• Dados 50 números enteros, obtener el promedio de
ellos. Mostrar por pantalla dicho promedio y los
números ingresados que sean mayores que él.
• Dados n números, obtener e imprimir la suma de todos
ellos. A continuación mostrar por pantalla todos los
sumandos.
3
Vectores y Matrices
• Es posible resolver estos problemas? Por qué?
• Una de las principales dificultades que se observan
con estos problemas es que para la resolución de
ambos es necesario almacenar la totalidad de los
datos a procesar.
• No sería eficiente crear n cantidad de variables
para guardar estos datos.
• Para realizar programas y/o algoritmos que nos
permitan resolver los problemas planteados,
usaremos una nueva estructura de datos
denominada vectores.
4
Vectores y Matrices
• Una estructura de datos es un conjunto de datos
con un cierto orden.
• Las estructuras de datos pueden ser dinámicas o
estáticas.
– Estáticas: aquellas a las que se le asigna una
cantidad fija de memoria de acuerdo a lo definidio en
la declaración de la variable.
– Dinámicas: son aquellas cuyo tamaño en memoria
aumenta o disminuye en tiempo de ejecución de
acuerdo a las necesidades del programa.
5
Vectores
• Qué es un vector? Un vector (o arreglo
unidimensional) es una estructura de datos en la
cual se almacena un conjunto de datos de un
mismo tipo. Es decir que un arreglo es una lista de
n elementos que posee las siguientes
características:
– se identifica por un único nombre de variable
– sus elementos se almacenan en posiciones contiguas
de memoria
– se accede a cada uno de sus elementos en forma
aleatoria
6
Vectores
Mi_vector
Nombre de
la variable
9 3
5 4 8
2
6
Posición : 1
Contenido : Mi_vector[1] = 9
7
Vectores
• Ejemplos:
– Ejemplo 1. Resolvamos este primer ejemplo:
– Cargar 10 elementos en un vector, sumarlos y
mostrar el resultado por pantalla.
– Pasos para resolver este problema:
• Leer un vector de 10 elementos
• Sumar los elementos
• Mostrar el resultado de la suma por pantalla
8
Vectores
Ejemplo 1
Muestra
resultados
Lectura del
arreglo
• Ejemplo 1 - Diagrama de Jackson
Suma de
los elementos
9
Vectores - Ejemplo1
Program Ejemplo1; {Version 1}
type
sumandos = array[1..10] of integer;
var
suma, i : integer;
vec_sumandos : sumandos;
begin
suma := 0;
for i:= 1 to 10 do
read(vec_sumandos[i] )
for i := 1 to 10 do
suma:= suma +vec_sumandos[i];
writeln (´La suma de los números es´, suma);
end.
Declaración de la variable arreglo
Declaración del tipo del arreglo
Lectura de los elementos del arreglo
Suma de los elementos
10
Vectores - Ejemplo1
Program Ejemplo1; {Version 2}
type
sumandos = array[1..10] of integer;
var
suma, i : integer;
vec_sumandos : sumandos;
begin
suma := 0;
for i:= 1 to 10 do
begin
read(vec_sumandos[i] )
suma:= suma +vec_sumandos[i];
end;
writeln (´La suma de los números es´, suma);
end.
11
Vectores - Declaración
• Como ya dijimos anteriormente, los arreglos son
estructuras de datos, por lo tanto las mismas deben
ser declaradas. Esta operación se realiza en la
seccción “Type” de un programa en Pascal. (como
puede verse en el ejemplo1)
• formato
type
nombre_del_tipo = array[tipo_subindice * ] of tipo;
* debe ser de tipo ordinal: boolean, char, enumerado o
subrango
12
Vectores - Declaración
• Luego de la declaración del tipo, se declara la
variable.
• formato
var
nombre_variable: nombre_del_tipo;
13
Vectores - Declaración
• Ejemplos de declaraciones:
• Ej1:
type
Valores = array[ -10..10 ] of real;
var
precios: valores;
14
Vectores - Declaración
• Ejemplos de declaraciones:
• Ej2:
const
Max= 500;
type
T_Texto = array[ 1..Max ] of char;
var
Texto: T_Texto;
15
Vectores - Manejo de índices
• Asignación de valores
Texto[3] := ´a´;
Precios[0] := 23.50;
Como ya dijimos, los índices de un arreglo pueden ser:
entero, lógico, caracter, enumerado o subrango.
16
Vectores - Manejo de índices
Ej3:
const
longitud = 40;
altura = 30;
type
horizontal = 1..Longitud;
T_Línea = Array [ horizontal ] of char;
var
Linea: T_Linea
17
Vectores - Manejo de índices
Ej4:
type
DiasSemana = (Lunes, Martes, Miercoles,Jueves, Viernes,
Sabado, Domingo );
T_Dias = array [DiasSemana] of integer;
var
Dias: T_Dias;
18
Vectores - Operaciones
• Con la siguiente declaración:
type
T_Notas = array [1..30] of integer;
var
Notas: T_Notas;
• Lectura de un vector
for i:= 1 to 30 do
read(Notas[i] )
19
Vectores - Operaciones
• Escritura de un vector
for i:= 1 to 30 do
writeln(Notas[i] )
20
Vectores - Operaciones
• Con la siguiente declaración:
type
T_Notas = array [1..30] of integer;
var
Notas, Aux_Notas: T_Notas;
Copia de vectores
for i:= 1 to 30 do
Aux_Notas[i]:= Notas[i];
o bien: Aux_Notas:=Notas;
21
Vectores - Ejemplos resueltos
Ej2- Dados 50 números enteros, obtener el promedio de
ellos. Mostrar por pantalla dicho promedio y los números
ingresados que sean mayores que el mismo.
Ej3 - Dados n números, obtener e imprimir la suma de todos
ellos. A continuación mostrar por pantalla todos los
sumandos.
22
Vectores - Ejemplos resueltos
Program Ej2;
const
max = 50;
type
t_numeros = array[1.. max] of integer;
var
suma, i : integer;
promedio: real;
numeros : t_numeros;
begin
suma := 0;
23
Vectores - Ejemplos resueltos
for i:= 1 to max do
begin
read(numeros[i] )
suma:= suma +numeros[i];
end;
Promedio:= suma/max;
writeln (´El promedio es ´,Promedio´);
for i := 1 to 50 do
if numeros[i] > promedio
then
writeln (´El número´, numeros[i], ´es mayor al promedio´);
end.
24
Vectores - Ejemplos resueltos
Program Ej3;
const
max = 100;
type
t_numeros = array[1.. max] of integer;
var
suma, i, n : integer;
promedio: real;
numeros : t_numeros;
begin
suma := 0;
write (´Ingrese la cantidad de números a sumar. (Como máximo, 100
números´);
readln(n);
25
Vectores - Ejemplos resueltos
for i:= 1 to n do
begin
read(numeros[i] )
suma:= suma +numeros[i];
end;
writeln (´La suma es ´,suma´);
for i := 1 to n do
writeln (´El sumando´, i, ´es´, numeros[i]);
end.
26
Vectores - Vectores Paralelos
• Dos o más arreglos que utilizan el mismo subíndice
para acceder a elementos de distintos arreglos, se
denominan arreglos paralelos. Estos arreglos
pueden procesarse simultáneamente.
• Ejercicio:
– Se tienen dos arreglos. El primero contiene nombres
de personas y el segundo contiene los sexos de las
personas del primer arreglo, codificados como
´f´femenino y ´m´ masculino. Obtener a partir de
estos otros dos arreglos, el primero de los cuales
debe contener todos los nombres de los varones y el
segundo, el nombre de todas las mujeres
27
Matrices
• Resolvamos el siguiente problema:
– Un instituto desea controlar los resultados de los
alumnos en las distintas asignaturas de la facultad de
Ingeniería. El programa debe ingresar las
calificaciones de los alumnos y visualizar en pantalla
la media de notas por alumno y la media de notas
por asignatura.
– Las asignaturas están codificadas de 1 a 6 y hay 30
alumnos.
28
Matrices
• Es posible resolver este problema con lo visto
hasta ahora?
• Para realizar el anterior programa , debemos
trabajar con una tabla (o matriz o arreglo
bidimensional)
29
Matrices
9 3
5 4 8
2
6
9 3
5 4 8
2
6
9 3
5 4 8
2
6
Mi_Matriz
Nombre de
la variable
Posición : 3,1
Contenido : Mi_vector[3,1] = 9
30
Matrices - Declaraciones
• Ejemplos de declaraciones:
• Ej1:
type
T_matriz = array[ 1..10, 1..10 ] of real;
var
Matriz: valores;
31
Matrices - Declaraciones
• Ejemplos de declaraciones:
• Ej2:
type
T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;
var
Matriz: valores;
32
Matrices - Declaraciones
• Ejemplos de declaraciones:
• Ej3:
type
T_filas = array[ 1..10 ] of of real;
T_Matriz = array[ 1..10 ] of of T_filas;
var
Matriz: valores;
33
Matrices - Operaciones
• Con la siguiente declaración:
type
T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;
var
Matriz: valores;
• Lectura de una matriz
for i:= 1 to 10 do
for j:= 1 to 10 do
readln(Matriz[i,j] )
34
Matrices - Operaciones
• Escritura de una matriz
for i:= 1 to 10 do
for j:= 1 to 10 do
writeln(Matriz[i,j] )
El recorrido de las matrices puede realizarse tanto por filas como por
columnas, de acuerdo al problema a resolver.
35
Matrices - Ejemplos resueltos
Ej4. Un instituto desea controlar los resultados de los alumnos en
las distintas asignaturas de la facultad de Ingeniería. El programa
debe ingresar las calificaciones de los alumnos y visualizar en
pantalla la media de notas por alumno y la media de notas por
asignatura.
– Las asignaturas están codificadas de 1 a 6 y hay 30 alumnos.
36
Matrices - Ejemplos resueltos
Program Ej4;
const
max_fila = 6 ;
max_col = 30;
type
t_tabla = array[1.. max_fila,max_col ] of char;
var
i, j: integer;
tabla: t_tabla;
suma: integer;
prom_al, prom_mat:real;
begin
for i:= 1 to max_fila do
for j:= 1 to max_fila do
writeln(´Ingrese la nota para la materia´, i, ´del alumno´, j);
37
Matrices - Ejemplos resueltos
for i:= 1 to max_fila do
begin
suma:=0;
for j:= 1 to max_col do
suma:= suma + tabla[i,j];
prom_mat [i] : =suma /i;
end;
for i:= 1 to max_col do
begin
suma:=0;
for j:= 1 to max_fila do
suma:= suma + tabla[i,j];
prom_al [i] : =suma /i;
end;
38
Matrices - Ejemplos resueltos
writeln (´La suma es ´,suma´);
for i := 1 to max_fila do
writeln (´El promedio de calificaciones para la asignatura´, i, ´es´,
prom_mat[i]);
end.
for j := 1 to max_col do
writeln (´El promedio de calificaciones para el alumno´, j, ´es´,
prom_al[j]);
end.
39
Arreglos multidimesionales
Así como hemos trabajado con vectores (arreglos unidemsionales) y
matrices (arreglos unideimesionales), es posible trabajar con arreglos de más de
dos dimensiones, los que son denominados arreglos multidimensionales.
Ejemplos de problemas de aplicación de arreglos multidimesionales
Se desea escribir un programa que permita manejar la información de habitantes
de un complejo habitacional. El mismo posee 7 torres; a su vez cada torre posee
20 pisos y cada piso 6 departamentos.
Se desea saber:
a) Cantidad total de habitantes del complejo
b) Cantidad promedio de habitantes por piso de cada torre
c) Cantidad promedio de habitantes por torre
– Modulo 2
Contenido
• Arreglos
• UML: Diagramas de
Clase
• Declarando clases:
repaso + detalle
• Atributos y métodos de
clase
• Modificadores de
Acceso
• Herencia
• De Diagramas de Clase
a Java
• Paquetes
• Clases Abstractas
• Interfaces
• Vector
• Colecciones
Tipos
• Básicos: int, float, etc
• Clases: Integer, Float, String, etc
• Arrays
– Almacenan multiples valores de cualquier tipo
– Se crean con new
– Se usan [] para declarar y acceder
Arrays
• Declaracion
– int a[]; equivale a int[] a;
– a es un array; b y c son enteros
• int a[], b, c;
– a, b y c son arrays:
• int[] a, b, c;
• Instanciacion
– a = new int[20]; ó int[] a = new int[20];
– a[0] = 15; // desde cero
– System.out.println(a.length); // imprime 20
Arreglos
Inicializacion de Arrays
• Sus elementos se inicializan al valor por defecto del tipo
correspondiente
int[] cuadrados = {0, 1, 4, 9};
que equivale a
int[] cuadrados = new int[4];
cuadrados[0] = 0;
cuadrados[1] = 1;
cuadrados[2] = 4;
cuadrados[3] = 9;
Ejemplos de Arrays
int[] digitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
String[] dias = {"lunes","martes","miércoles","jueves",
"viernes","sábado","domingo"};
Fecha[] festivos = { new Fecha ( 1, 1, 2000),
new Fecha ( 15, 5, 2000),
new Fecha ( 12, 10, 2000),
new Fecha ( 6, 12, 2000),
}
• Recorrido:
int[] lista = new lista[10];
for (int i = 0; i < lista.length; i++)
{
System.out.println(lista[i]);
}
Arrays Multidimensionales
• Un array bidimensional es un array de arrays.
Se necesita un conjunto de corchetes por cada
dimensión
int[] unAnno = new int[12];
int[][] tresAnnos = new int[3][12];
TresAnnos[0][0] = 2;
tresAnnos[2][11] = 1;
Arrays Bidimensionales No Rectangulares
• Un array de 2 dimensiones se puede crear sin especificar el tamaño de
su segunda dimensión
• int[][] tresAnnos = new int[3][];
tresAnnos[0] = new int[12];
tresAnnos[1] = new int[12];
tresAnnos[2] = new int[12];
Si se indica sólo una dimensión, ésta debe ser la primera:
int[][] tresAnnos = new int[][3]; // Error
Esta separación permite crear arrays no rectangulares
tresAnnos[0] = new int[12];
tresAnnos[1] = new int[5];
tresAnnos[2] = new int[9];
Inicialización de Arrays
Multidimensionales
• Se necesita un conjunto de
datos entre llaves para cada
dimensión
int[][] matriz =
{
{1, 2, 3},
{4, 5, 6}
};
• equivale a
int[][] matriz =
new int[2][3];
matriz[0][0] = 1;
matriz[0][1] = 2;
matriz[0][2] = 3;
matriz[1][0] = 4;
matriz[1][1] = 5;
matriz[1][2] = 6;
Clases para Manejar Cadenas de
Caracteres
• Hay dos clases en el paquete java.lang que
permiten la manipulación de cadenas de
caracteres:
– La clase String maneja cadenas constantes, es decir,
que no pueden cambiar
– La clase StringBuffer permite cambiar la cadena
insertando, añadiendo o borrando caracteres
• La clase String es más eficiente, mientras que la
clase StringBuffer ofrece más posibilidades
Ejemplo con Strings: Palindromo
public class Palindrome {
public static boolean isPalindrome(
String stringToTest) {
String workingCopy =
removeJunk(stringToTest);
String reversedCopy =
reverse(workingCopy);
return reversedCopy.
equalsIgnoreCase(workingCopy);
}
protected static String removeJunk(String
string)
{
int i, len = string.length();
StringBuffer dest = new
StringBuffer(len);
char c;
for (i = (len - 1); i >= 0; i--) {
c = string.charAt(i);
if (Character.isLetterOrDigit(c)) {
dest.append(c);
}
}
return dest.toString();
}
protected static String reverse(String
string) {
StringBuffer sb = new
StringBuffer(string);
return sb.reverse().toString();
}
public static void main(String[] args) {
String string = "Madam, I'm Adam.";
System.out.println();
System.out.println(
"Testing whether the following "
+ "string is a palindrome:");
System.out.println(" " + string);
System.out.println();
if (isPalindrome(string)) {
System.out.println(
"It IS a palindrome!");
} else {
System.out.println(
"It is NOT a palindrome!");
}
System.out.println();
}
}

Más contenido relacionado

Similar a VectoresMatricesI.ppt

Arreglos en PSeInt
Arreglos en PSeIntArreglos en PSeInt
Arreglos en PSeIntJerry
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)José Antonio Sandoval Acosta
 
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasJosé Antonio Sandoval Acosta
 
Algoritmos1
Algoritmos1Algoritmos1
Algoritmos1utc
 
Algoritmica i clase04 practica 4
Algoritmica i clase04 practica 4Algoritmica i clase04 practica 4
Algoritmica i clase04 practica 4Julio Pari
 
Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1Andres Garcia Garcia
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.Uriel Lopez
 
Introducción a Matlab
Introducción a MatlabIntroducción a Matlab
Introducción a MatlabAdiel Castaño
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujocarlospaul
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.pptLeydi Hernandez
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlabford81
 

Similar a VectoresMatricesI.ppt (20)

Arreglos en PSeInt
Arreglos en PSeIntArreglos en PSeInt
Arreglos en PSeInt
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
 
Vectores y matrices
Vectores y matricesVectores y matrices
Vectores y matrices
 
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
 
Computación sb
Computación sbComputación sb
Computación sb
 
Algoritmos1
Algoritmos1Algoritmos1
Algoritmos1
 
Algoritmica i clase04 practica 4
Algoritmica i clase04 practica 4Algoritmica i clase04 practica 4
Algoritmica i clase04 practica 4
 
Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 1
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.
 
Introducción a Matlab
Introducción a MatlabIntroducción a Matlab
Introducción a Matlab
 
JAVA arreglos multidimensionales
JAVA arreglos multidimensionalesJAVA arreglos multidimensionales
JAVA arreglos multidimensionales
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujo
 
Algoritmos y programas ing civil
Algoritmos y programas ing civil Algoritmos y programas ing civil
Algoritmos y programas ing civil
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.ppt
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlab
 
Uso vectores
Uso vectoresUso vectores
Uso vectores
 
Mat lab00
Mat lab00Mat lab00
Mat lab00
 
Mat lab00
Mat lab00Mat lab00
Mat lab00
 
Mat lab00
Mat lab00Mat lab00
Mat lab00
 
Matlab00
Matlab00Matlab00
Matlab00
 

Último

Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 

Último (7)

Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 

VectoresMatricesI.ppt

  • 2. 2 Vectores y Matrices • Vectores: Introducción – Con lo aprendido hasta ahora resolvamos los siguientes problemas: • Dados 50 números enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los números ingresados que sean mayores que él. • Dados n números, obtener e imprimir la suma de todos ellos. A continuación mostrar por pantalla todos los sumandos.
  • 3. 3 Vectores y Matrices • Es posible resolver estos problemas? Por qué? • Una de las principales dificultades que se observan con estos problemas es que para la resolución de ambos es necesario almacenar la totalidad de los datos a procesar. • No sería eficiente crear n cantidad de variables para guardar estos datos. • Para realizar programas y/o algoritmos que nos permitan resolver los problemas planteados, usaremos una nueva estructura de datos denominada vectores.
  • 4. 4 Vectores y Matrices • Una estructura de datos es un conjunto de datos con un cierto orden. • Las estructuras de datos pueden ser dinámicas o estáticas. – Estáticas: aquellas a las que se le asigna una cantidad fija de memoria de acuerdo a lo definidio en la declaración de la variable. – Dinámicas: son aquellas cuyo tamaño en memoria aumenta o disminuye en tiempo de ejecución de acuerdo a las necesidades del programa.
  • 5. 5 Vectores • Qué es un vector? Un vector (o arreglo unidimensional) es una estructura de datos en la cual se almacena un conjunto de datos de un mismo tipo. Es decir que un arreglo es una lista de n elementos que posee las siguientes características: – se identifica por un único nombre de variable – sus elementos se almacenan en posiciones contiguas de memoria – se accede a cada uno de sus elementos en forma aleatoria
  • 6. 6 Vectores Mi_vector Nombre de la variable 9 3 5 4 8 2 6 Posición : 1 Contenido : Mi_vector[1] = 9
  • 7. 7 Vectores • Ejemplos: – Ejemplo 1. Resolvamos este primer ejemplo: – Cargar 10 elementos en un vector, sumarlos y mostrar el resultado por pantalla. – Pasos para resolver este problema: • Leer un vector de 10 elementos • Sumar los elementos • Mostrar el resultado de la suma por pantalla
  • 8. 8 Vectores Ejemplo 1 Muestra resultados Lectura del arreglo • Ejemplo 1 - Diagrama de Jackson Suma de los elementos
  • 9. 9 Vectores - Ejemplo1 Program Ejemplo1; {Version 1} type sumandos = array[1..10] of integer; var suma, i : integer; vec_sumandos : sumandos; begin suma := 0; for i:= 1 to 10 do read(vec_sumandos[i] ) for i := 1 to 10 do suma:= suma +vec_sumandos[i]; writeln (´La suma de los números es´, suma); end. Declaración de la variable arreglo Declaración del tipo del arreglo Lectura de los elementos del arreglo Suma de los elementos
  • 10. 10 Vectores - Ejemplo1 Program Ejemplo1; {Version 2} type sumandos = array[1..10] of integer; var suma, i : integer; vec_sumandos : sumandos; begin suma := 0; for i:= 1 to 10 do begin read(vec_sumandos[i] ) suma:= suma +vec_sumandos[i]; end; writeln (´La suma de los números es´, suma); end.
  • 11. 11 Vectores - Declaración • Como ya dijimos anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas. Esta operación se realiza en la seccción “Type” de un programa en Pascal. (como puede verse en el ejemplo1) • formato type nombre_del_tipo = array[tipo_subindice * ] of tipo; * debe ser de tipo ordinal: boolean, char, enumerado o subrango
  • 12. 12 Vectores - Declaración • Luego de la declaración del tipo, se declara la variable. • formato var nombre_variable: nombre_del_tipo;
  • 13. 13 Vectores - Declaración • Ejemplos de declaraciones: • Ej1: type Valores = array[ -10..10 ] of real; var precios: valores;
  • 14. 14 Vectores - Declaración • Ejemplos de declaraciones: • Ej2: const Max= 500; type T_Texto = array[ 1..Max ] of char; var Texto: T_Texto;
  • 15. 15 Vectores - Manejo de índices • Asignación de valores Texto[3] := ´a´; Precios[0] := 23.50; Como ya dijimos, los índices de un arreglo pueden ser: entero, lógico, caracter, enumerado o subrango.
  • 16. 16 Vectores - Manejo de índices Ej3: const longitud = 40; altura = 30; type horizontal = 1..Longitud; T_Línea = Array [ horizontal ] of char; var Linea: T_Linea
  • 17. 17 Vectores - Manejo de índices Ej4: type DiasSemana = (Lunes, Martes, Miercoles,Jueves, Viernes, Sabado, Domingo ); T_Dias = array [DiasSemana] of integer; var Dias: T_Dias;
  • 18. 18 Vectores - Operaciones • Con la siguiente declaración: type T_Notas = array [1..30] of integer; var Notas: T_Notas; • Lectura de un vector for i:= 1 to 30 do read(Notas[i] )
  • 19. 19 Vectores - Operaciones • Escritura de un vector for i:= 1 to 30 do writeln(Notas[i] )
  • 20. 20 Vectores - Operaciones • Con la siguiente declaración: type T_Notas = array [1..30] of integer; var Notas, Aux_Notas: T_Notas; Copia de vectores for i:= 1 to 30 do Aux_Notas[i]:= Notas[i]; o bien: Aux_Notas:=Notas;
  • 21. 21 Vectores - Ejemplos resueltos Ej2- Dados 50 números enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los números ingresados que sean mayores que el mismo. Ej3 - Dados n números, obtener e imprimir la suma de todos ellos. A continuación mostrar por pantalla todos los sumandos.
  • 22. 22 Vectores - Ejemplos resueltos Program Ej2; const max = 50; type t_numeros = array[1.. max] of integer; var suma, i : integer; promedio: real; numeros : t_numeros; begin suma := 0;
  • 23. 23 Vectores - Ejemplos resueltos for i:= 1 to max do begin read(numeros[i] ) suma:= suma +numeros[i]; end; Promedio:= suma/max; writeln (´El promedio es ´,Promedio´); for i := 1 to 50 do if numeros[i] > promedio then writeln (´El número´, numeros[i], ´es mayor al promedio´); end.
  • 24. 24 Vectores - Ejemplos resueltos Program Ej3; const max = 100; type t_numeros = array[1.. max] of integer; var suma, i, n : integer; promedio: real; numeros : t_numeros; begin suma := 0; write (´Ingrese la cantidad de números a sumar. (Como máximo, 100 números´); readln(n);
  • 25. 25 Vectores - Ejemplos resueltos for i:= 1 to n do begin read(numeros[i] ) suma:= suma +numeros[i]; end; writeln (´La suma es ´,suma´); for i := 1 to n do writeln (´El sumando´, i, ´es´, numeros[i]); end.
  • 26. 26 Vectores - Vectores Paralelos • Dos o más arreglos que utilizan el mismo subíndice para acceder a elementos de distintos arreglos, se denominan arreglos paralelos. Estos arreglos pueden procesarse simultáneamente. • Ejercicio: – Se tienen dos arreglos. El primero contiene nombres de personas y el segundo contiene los sexos de las personas del primer arreglo, codificados como ´f´femenino y ´m´ masculino. Obtener a partir de estos otros dos arreglos, el primero de los cuales debe contener todos los nombres de los varones y el segundo, el nombre de todas las mujeres
  • 27. 27 Matrices • Resolvamos el siguiente problema: – Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniería. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por asignatura. – Las asignaturas están codificadas de 1 a 6 y hay 30 alumnos.
  • 28. 28 Matrices • Es posible resolver este problema con lo visto hasta ahora? • Para realizar el anterior programa , debemos trabajar con una tabla (o matriz o arreglo bidimensional)
  • 29. 29 Matrices 9 3 5 4 8 2 6 9 3 5 4 8 2 6 9 3 5 4 8 2 6 Mi_Matriz Nombre de la variable Posición : 3,1 Contenido : Mi_vector[3,1] = 9
  • 30. 30 Matrices - Declaraciones • Ejemplos de declaraciones: • Ej1: type T_matriz = array[ 1..10, 1..10 ] of real; var Matriz: valores;
  • 31. 31 Matrices - Declaraciones • Ejemplos de declaraciones: • Ej2: type T_matriz = array[ 1..10 ] of array [ 1..10 ] of real; var Matriz: valores;
  • 32. 32 Matrices - Declaraciones • Ejemplos de declaraciones: • Ej3: type T_filas = array[ 1..10 ] of of real; T_Matriz = array[ 1..10 ] of of T_filas; var Matriz: valores;
  • 33. 33 Matrices - Operaciones • Con la siguiente declaración: type T_matriz = array[ 1..10 ] of array [ 1..10 ] of real; var Matriz: valores; • Lectura de una matriz for i:= 1 to 10 do for j:= 1 to 10 do readln(Matriz[i,j] )
  • 34. 34 Matrices - Operaciones • Escritura de una matriz for i:= 1 to 10 do for j:= 1 to 10 do writeln(Matriz[i,j] ) El recorrido de las matrices puede realizarse tanto por filas como por columnas, de acuerdo al problema a resolver.
  • 35. 35 Matrices - Ejemplos resueltos Ej4. Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniería. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por asignatura. – Las asignaturas están codificadas de 1 a 6 y hay 30 alumnos.
  • 36. 36 Matrices - Ejemplos resueltos Program Ej4; const max_fila = 6 ; max_col = 30; type t_tabla = array[1.. max_fila,max_col ] of char; var i, j: integer; tabla: t_tabla; suma: integer; prom_al, prom_mat:real; begin for i:= 1 to max_fila do for j:= 1 to max_fila do writeln(´Ingrese la nota para la materia´, i, ´del alumno´, j);
  • 37. 37 Matrices - Ejemplos resueltos for i:= 1 to max_fila do begin suma:=0; for j:= 1 to max_col do suma:= suma + tabla[i,j]; prom_mat [i] : =suma /i; end; for i:= 1 to max_col do begin suma:=0; for j:= 1 to max_fila do suma:= suma + tabla[i,j]; prom_al [i] : =suma /i; end;
  • 38. 38 Matrices - Ejemplos resueltos writeln (´La suma es ´,suma´); for i := 1 to max_fila do writeln (´El promedio de calificaciones para la asignatura´, i, ´es´, prom_mat[i]); end. for j := 1 to max_col do writeln (´El promedio de calificaciones para el alumno´, j, ´es´, prom_al[j]); end.
  • 39. 39 Arreglos multidimesionales Así como hemos trabajado con vectores (arreglos unidemsionales) y matrices (arreglos unideimesionales), es posible trabajar con arreglos de más de dos dimensiones, los que son denominados arreglos multidimensionales. Ejemplos de problemas de aplicación de arreglos multidimesionales Se desea escribir un programa que permita manejar la información de habitantes de un complejo habitacional. El mismo posee 7 torres; a su vez cada torre posee 20 pisos y cada piso 6 departamentos. Se desea saber: a) Cantidad total de habitantes del complejo b) Cantidad promedio de habitantes por piso de cada torre c) Cantidad promedio de habitantes por torre
  • 41. Contenido • Arreglos • UML: Diagramas de Clase • Declarando clases: repaso + detalle • Atributos y métodos de clase • Modificadores de Acceso • Herencia • De Diagramas de Clase a Java • Paquetes • Clases Abstractas • Interfaces • Vector • Colecciones
  • 42. Tipos • Básicos: int, float, etc • Clases: Integer, Float, String, etc • Arrays – Almacenan multiples valores de cualquier tipo – Se crean con new – Se usan [] para declarar y acceder
  • 43. Arrays • Declaracion – int a[]; equivale a int[] a; – a es un array; b y c son enteros • int a[], b, c; – a, b y c son arrays: • int[] a, b, c; • Instanciacion – a = new int[20]; ó int[] a = new int[20]; – a[0] = 15; // desde cero – System.out.println(a.length); // imprime 20
  • 45. Inicializacion de Arrays • Sus elementos se inicializan al valor por defecto del tipo correspondiente int[] cuadrados = {0, 1, 4, 9}; que equivale a int[] cuadrados = new int[4]; cuadrados[0] = 0; cuadrados[1] = 1; cuadrados[2] = 4; cuadrados[3] = 9;
  • 46. Ejemplos de Arrays int[] digitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; String[] dias = {"lunes","martes","miércoles","jueves", "viernes","sábado","domingo"}; Fecha[] festivos = { new Fecha ( 1, 1, 2000), new Fecha ( 15, 5, 2000), new Fecha ( 12, 10, 2000), new Fecha ( 6, 12, 2000), } • Recorrido: int[] lista = new lista[10]; for (int i = 0; i < lista.length; i++) { System.out.println(lista[i]); }
  • 47. Arrays Multidimensionales • Un array bidimensional es un array de arrays. Se necesita un conjunto de corchetes por cada dimensión int[] unAnno = new int[12]; int[][] tresAnnos = new int[3][12]; TresAnnos[0][0] = 2; tresAnnos[2][11] = 1;
  • 48. Arrays Bidimensionales No Rectangulares • Un array de 2 dimensiones se puede crear sin especificar el tamaño de su segunda dimensión • int[][] tresAnnos = new int[3][]; tresAnnos[0] = new int[12]; tresAnnos[1] = new int[12]; tresAnnos[2] = new int[12]; Si se indica sólo una dimensión, ésta debe ser la primera: int[][] tresAnnos = new int[][3]; // Error Esta separación permite crear arrays no rectangulares tresAnnos[0] = new int[12]; tresAnnos[1] = new int[5]; tresAnnos[2] = new int[9];
  • 49. Inicialización de Arrays Multidimensionales • Se necesita un conjunto de datos entre llaves para cada dimensión int[][] matriz = { {1, 2, 3}, {4, 5, 6} }; • equivale a int[][] matriz = new int[2][3]; matriz[0][0] = 1; matriz[0][1] = 2; matriz[0][2] = 3; matriz[1][0] = 4; matriz[1][1] = 5; matriz[1][2] = 6;
  • 50. Clases para Manejar Cadenas de Caracteres • Hay dos clases en el paquete java.lang que permiten la manipulación de cadenas de caracteres: – La clase String maneja cadenas constantes, es decir, que no pueden cambiar – La clase StringBuffer permite cambiar la cadena insertando, añadiendo o borrando caracteres • La clase String es más eficiente, mientras que la clase StringBuffer ofrece más posibilidades
  • 51. Ejemplo con Strings: Palindromo public class Palindrome { public static boolean isPalindrome( String stringToTest) { String workingCopy = removeJunk(stringToTest); String reversedCopy = reverse(workingCopy); return reversedCopy. equalsIgnoreCase(workingCopy); } protected static String removeJunk(String string) { int i, len = string.length(); StringBuffer dest = new StringBuffer(len); char c; for (i = (len - 1); i >= 0; i--) { c = string.charAt(i); if (Character.isLetterOrDigit(c)) { dest.append(c); } } return dest.toString(); } protected static String reverse(String string) { StringBuffer sb = new StringBuffer(string); return sb.reverse().toString(); } public static void main(String[] args) { String string = "Madam, I'm Adam."; System.out.println(); System.out.println( "Testing whether the following " + "string is a palindrome:"); System.out.println(" " + string); System.out.println(); if (isPalindrome(string)) { System.out.println( "It IS a palindrome!"); } else { System.out.println( "It is NOT a palindrome!"); } System.out.println(); } }