Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Operaciones con Vectores y Matrices en Java, Esquemas y mapas conceptuales de Informática

Un conjunto de programas en java que implementan operaciones básicas con vectores y matrices, como la lectura, impresión, suma y ordenamiento de vectores, así como la suma de filas, columnas y diagonales de matrices cuadradas. Los programas fueron desarrollados como parte del curso de estructura de datos (inf-131) de la carrera de informática en la universidad mayor de san andrés. El documento incluye el código fuente de los programas, así como ejemplos de ejecución y salida. Estos programas pueden ser útiles para estudiantes que estén aprendiendo conceptos de estructuras de datos y programación en java, ya que les permitirán practicar y afianzar sus conocimientos en estas áreas.

Tipo: Esquemas y mapas conceptuales

2020/2021

Subido el 05/07/2023

quisbert-rosales-daniela
quisbert-rosales-daniela 🇧🇴

3 documentos

1 / 35

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
UNIVERSIDAD MAYOR DE SAN ANDRÉS ESTRUCTURA DE DATOS (INF-131)
CARRERA INFORMATICA CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA
1
CAPÍTULO I
ESTRUCTURA DE DATOS
1. INTRODUCCIÓN
Para procesar información en un computador es necesario hacer una abstracción de
los datos que tomamos del mundo real, abstracción en el sentido de que se ignoran
algunas propiedades de los objetos reales, es decir, se simplifican. Se hace una
selección de los datos más representativos de la realidad a partir de los cuales pueda
trabajar el computador para obtener unos resultados.
Cualquier lenguaje suministra una serie de tipos de datos simples, como son los
números enteros, caracteres, números reales. En realidad suministra un subconjunto
de éstos, pues la memoria del ordenador es finita. Los punteros (si los tiene) son
también un tipo de datos. El tamaño de todos los tipos de datos depende de la máquina
y del compilador sobre los que se trabaja.
1.1 ESTRUCTURAS FUNDAMENTALES
Los datos a procesar por una computadora se clasifican en:
A) Simples
B) Estructurados
Los datos Simples ocupan sólo una casilla de memoria, por tanto una variable simple
hace referencia a un único valor a la vez.
Los datos Estructurados o Compuestos se caracterizan por el hecho de que con un
nombre (identificador de variable estructurada) se hace referencia a un grupo de
casillas de memoria. Tiene varios componentes.
Nota.- En el presente texto, se tomará como herramienta para los programas y
representar las diferentes estructuras de datos el Lenguaje Java.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23

Vista previa parcial del texto

¡Descarga Operaciones con Vectores y Matrices en Java y más Esquemas y mapas conceptuales en PDF de Informática solo en Docsity!

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

CAPÍTULO I

ESTRUCTURA DE DATOS

1. INTRODUCCIÓN

Para procesar información en un computador es necesario hacer una abstracción de

los datos que tomamos del mundo real, abstracción en el sentido de que se ignoran

algunas propiedades de los objetos reales, es decir, se simplifican. Se hace una

selección de los datos más representativos de la realidad a partir de los cuales pueda

trabajar el computador para obtener unos resultados.

Cualquier lenguaje suministra una serie de tipos de datos simples, como son los

números enteros, caracteres, números reales. En realidad suministra un subconjunto

de éstos, pues la memoria del ordenador es finita. Los punteros (si los tiene) son

también un tipo de datos. El tamaño de todos los tipos de datos depende de la máquina

y del compilador sobre los que se trabaja.

1.1 ESTRUCTURAS FUNDAMENTALES

Los datos a procesar por una computadora se clasifican en:

A) Simples

B) Estructurados

Los datos Simples ocupan sólo una casilla de memoria, por tanto una variable simple

hace referencia a un único valor a la vez.

Los datos Estructurados o Compuestos se caracterizan por el hecho de que con un

nombre (identificador de variable estructurada) se hace referencia a un grupo de

casillas de memoria. Tiene varios componentes.

Nota.- En el presente texto, se tomará como herramienta para los programas y

representar las diferentes estructuras de datos el Lenguaje Java.

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

Ejemplo.-

Dato Simple: Declaramos una variable A de tipo entero y asignamos el valor 50.

A  Identificador

int A;

A = 50 50

Dato Estructurado: Declaramos un dato compuesto o estructurado A que tendrá 6

elementos de tipo entero.

int A[6] ;

A = {5, 10, 15, 20, 25, 30};

A 5 10 15 20 25 30

Identificador

1.2 ABSTRACCIÓN

Una abstracción es un proceso mental donde se extraen rasgos esenciales de algo

para representarlos por medio de un lenguaje gráfico o escrito.

1.3 DEFINICIÓN DE ESTRUCTURAS DE DATOS

Una estructura de datos es cualquier colección de datos organizados de tal forma que

tengan asociados un conjunto de operaciones para poder manipularlos.

1.4 TIPO DE DATO ABSTRACTO (T.D.A.)

Al diseñar una estructura de datos con la técnica de abstracción pasa a ser un TDA,

que:

  • Puede implementarse en cualquier lenguaje.
  • Puede aplicarse en cualquier concepto

Ejemplo: Abstraemos el concepto Estudiante

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

B) Estructuras de datos dinámicas

Las estructuras dinámicas de datos son estructuras que cuya dimensión puede crecer

o disminuir durante la ejecución del programa. Por ejmplos: Listas Enlazadas, Árboles

y Grafos.

C) Estructuras de datos lineales

Las estructuras de datos lineales se derivan del concepto de secuencia. Primero se

definen las secuencias como conjuntos de elementos entre los que se establece una

relación de predecesor y sucesor. Los diferentes TADs basados en este concepto se

diferenciarán por las operaciones de acceso a los elementos y manipulación de la

estructura. Desde el punto de vista de la informática, existen tres estructuras lineales

especialmente importantes: vectores, las pilas, las colas y las listas.

D) Estructuras de datos no lineales

Se denominan estructuras de datos No Lineales porque a cada elemento le pueden

seguir varios elementos o puede estar rodeado de elementos. Por ejemplo: Árboles,

Grafos y Matrices.

2.1 ESTRUCTURAS DE DATOS ESTÁTICA

A) ARREGLOS

Definición: Colección finita, homogénea y ordenada de elementos. Finita: Porque todo

arreglo tiene un límite. Homogénea: Porque todos los elementos son del mismo tipo.

Ordenada: Porque se puede determinar cuál es el enésimo elemento.

Un arreglo tiene dos partes: Componentes e índices.

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

Componentes: Hacen referencia a los elementos que forman el arreglo.

Índices: Permiten referirse a los componentes del arreglo en forma individual.

ARREGLOS UNIDIMENSIONALES

Son los arreglos más simples y constan de un solo índice, también se llaman vectores.

Notación: Podría ser de diferentes maneras. Por ejemplo:

Array [0...9] de enteros: Vector

Vector: C

Donde, C hace referencia a todo el vector, mientras que los índices hacen referencia

a los elementos en forma individual.

DECLARACIÓN DE VECTORES EN JAVA

Para declarar un Array se utilizan corchetes para indicar que se trata de un Array y no

de una simple variable de tipo especificado. Su sintaxis es:

Tipo_de_dato identificador [ ];

O bien, otra forma:

Tipo_de_dato [ ] identificador;

Donde:

Tipo_de_dato: es el tipo de datos de los elementos del vector.

Identificador: es el nombre del vector.

Luego, se debe crear el Array con el operador new, de la siguiente manera:

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA v = new int[ n ]; // crea el vector de tamaño n } //Procedimiento para leer los elementos en el vector static void leervector () { int i; for(i=0; i < n ; i++) { System. out .print("Ingrese elemento "+ i + " = "); v [i] = sc .nextInt(); } } //Procedimiento para imprimir el vector static void mostrarvector () { int i; System. out .println(); for(i=0; i < n ; i++) { System. out .print( v [i] + " "); } } //Programa principal public static void main (String [] args) { leedim (); // llama al procedimiento para leer la dimensión del vector leervector (); // llamada a LeerVector para llenar los datos en el vector mostrarvector (); // llamada a mostrarvector para imprimir el vector } }

Salida del programa:

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

EJERCICIOS RESUELTOS

1) Escribir un programa para leer tres vectores de la misma dimensión y crear un

nuevo arreglo con la suma de los elementos de cada vector.

SOLUCIÓN

Diseñamos la estructura de datos, para resolver el ejercicio.

Programa 3 en Java:

package tema1; import java.util.Scanner; /* Se deben crear tres vectores v1, v2,v3 y vecNuevo de m elementos cada uno ; se debe crear otro arreglo vecNuevo donde cada elemento sea la suma de los elementos de cada arreglo. / public class SumaVectores { static int[] v1 , v2 , v3 , vecNuevo ; static int d ; / DIMENSION DE LOS VECTORES*/ static Scanner sc =new Scanner(System. in ); public static void main (String arg[]) { System. out .print ("Qué dimension tendran los vectores?.... "); d = sc .nextInt(); v1 = new int [ d ]; v2 = new int [ d ]; v3 = new int [ d ]; vecNuevo = new int [3]; llenarVector ( v1 ); llenarVector ( v2 ); llenarVector ( v3 ); vecNuevo [0] = sumaVector ( v1 ); vecNuevo [1] = sumaVector ( v2 ); vecNuevo [2] = sumaVector ( v3 ); mostrarVector ( vecNuevo , 3); }

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

2) Escribir un programa para registrar en un vector los carnets de los estudiantes que

aprobaron Calculo I y en otro vector registrar los carnets de los estudiantes que

aprobaron Etica, y en un tercer vector los carnets de los que aprobaron ambas

materias.

SOLUCIÓN.-

Diseñamos la estructura de datos, para resolver el ejercicio.

Programa 4 en Java: package tema1; import java.util.Scanner; public class comparaVectores { static int[] vCalculo , vEtica , vComun ; static Scanner sc =new Scanner(System. in );

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA public static void main (String arg[]) { int nCal, nEt, comunes; System. out .print ("Cuantos alumnos aprobaron CALCULO I?... "); nCal = sc .nextInt(); System. out .print ("Cuantos alumnos aprobaron ETICA ?... "); nEt = sc .nextInt(); vCalculo = new int [nCal]; vEtica = new int [nEt]; System. out .println ("\n Carnets de los alumnos que aprobaron CALCULO I \n "); llenarVector ( vCalculo , nCal); System. out .println ("\n Carnets de los alumnos que aprobaron ETICA \n "); llenarVector ( vEtica , nEt); comunes = ( cuantosComunes (nCal, nEt)); vComun = new int [comunes]; llenarNuevo (nCal, nEt); System. out .println ("\nCarnets de los alumnos que aprobaron ETICA Y CALCULO I \n "); mostrarVector ( vComun , comunes); } static void llenarNuevo (int d, int d2) { int pos = 0; for (int i = 0 ; i < d ; i++) { if ( buscaNum ( vCalculo [i], d2) == true) { vComun [pos] = vCalculo [i]; pos++; } } } / Me dice cuantos carnets estan en ambos vectores. Tiene 2 parámetros, d: es la dimensión de vCalculo, d2: dimensión de vEtica. Busca cada elemento de vCalculo en vEtica / static int cuantosComunes (int d, int d2) { int acum = 0; for (int i = 0 ; i < d ; i++) { if ( buscaNum ( vCalculo [i], d2) == true) acum++; } return acum; }

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

3) El siguiente programa es una prueba del uso de vectores con parámetros.

Programa 5 en Java:

package tema1; public class vectoresConParametros { static int [] v1 = new int [10]; public static void main (String[] args) { int [] v2, v3; for ( int i = 0 ; i < 10 ; i++) v1 [i] = 1; v2 = v1 ; Imprime (v2); v3 = Suma1 (v2); Imprime ( v1 ); Imprime (v3); } static void Imprime ( int [] elV) { for ( int i = 0 ; i < 10 ; i++) System. out .print (elV [i]); System. out .println (); } static int [] Suma1 ( int [] elV) { for ( int i = 0 ; i < 10 ; i++) elV [i]++; return elV; } }

Salida del programa:

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

4) Programa para leer dos vectores ordenados de diferentes dimensiones y crear

un tercer vector con los elementos ordenados de ambos vectores.

Solución.-

Diseñamos la estructura de datos

Programa 6 en Java:

package tema1; import java.util.Scanner; public class VectoresOrdenados { static Scanner sc =new Scanner(System. in ); public static void main (String args[]) { int vec1[], vec2[], vecR[]; int n, m, nm; System. out .print ("Cuantos elementos tiene el vector 1? "); n = sc .nextInt(); System. out .print ("Cuantos elementos tiene el vector 2? "); m = sc .nextInt(); nm = n + m; // crear los vectores vec1 = new int [n]; vec2 = new int [m]; vecR = new int [nm]; // LLenar los vectores 1 y 2 System. out .println ("****Lectura Primer vector ordenado****"); llenarVector (vec1, n); System. out .println ("****Lectura Segundo vector ordenado****"); llenarVector (vec2, m); // Crear vector resultante ordenado vecR = ordenaVector (vec1, vec2, n, m); // Mostrar vector resultante System. out .println ("**** vector resultante ordenado****"); mostrarVector (vecR, nm); }

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA } else { for (int p = i ; p < dim1 ; p++) { vr [k] = v1 [p]; k++; } } return vr; } static void mostrarVector (int v[], int dim) { for (int i = 0 ; i < dim ; i++) { System. out .println ("v[" + i + "]= " + v [i]); } } } // fin de la clase

Salida del programa:

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA

EJERCICIOS PARA LA PRÁCTICA

Para cada uno de los ejercicios siguientes se pide realizar el programa en el lenguaje

Java, previamente realizar el Diseño de la estructura de datos al definir el TAD,

posteriormente mostrar la salida que genera el programa.

1) Realizar un programa que permita leer en un vector N números enteros y luego,

contar cuantos elementos positivos y negativos existen.

2) Generar la serie de Finbocacci usando un vector.

3) Dado un Vector A con N números impares y B con N número pares, crear otro

vector C que permita compbinar los elementos A y B en otro vector C.

4) Dado un Vector V, invertir sus elementos usando el mismo vector.

5) Dado un Vector V de dimensión N hallar el valor máximo, mínimo y el promedio.

ARREGLOS MULTIDIMENSIONALES

Existe en la mayoría de los lenguajes una estructura de arreglos multidimensionales. El

número de dimensiones (índices) permitido depende del lenguaje elegido.

ARREGLOS BIDIMENSIONALES (MATRICES)

La matriz es una estructura de datos básica dentro de los lenguajes de programación y

conceptualmente son idénticas a sus homónimas matemáticas. Por tanto una matriz es

un conjunto de datos de un tamaño definido que se encuentran consecutivos en memoria

y en la que es posible el acceso al elemento que deseemos simplemente con indicar su

posición.

Una matriz es un arreglo de dos dimensiones, y para especificar cualquier elemento,

debemos hacer referencia a dos índices (que representan la posición como renglón y

columna). Aunque no se justificará aquí, es conveniente mencionar que la representación

matricial es puramente conceptual y con el único fin de facilitar al programador el manejo

de los elementos, ya que la computadora almacena los datos en una forma totalmente

diferente.

CREACIÓN Y DECLARACIÓN DE UNA MATRIZ EN JAVA

La sintaxis para declarar una matriz es la siguiente:

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA Diseñamos la estructura de datos de la aplicación:

Donde:

A[][]: es la matriz de M filas y N columnas, sus elementos son enteros.

M: número de filas de la matriz

N: número de columnas de la matriz.

i: subíndice de filas 0..M- 1

j: subíndice de columnas 0..N- 1

Programa 7 en Java:

package matrices; import java.util.Scanner; public class LeerImprimirMatriz { static int A [] [] ; static int M , N ; static Scanner sc =new Scanner(System. in ) ; static void leerMatriz () { System. out .println ("******REGISTRO DE MATRIZ ******"); System. out .print ("Ingrese el numero de filas de la matriz......"); M = sc .nextInt(); System. out .print ("Ingrese el numero de columnas de la matriz...."); N = sc .nextInt(); A =new int[ M ][ N ] ; for (int i = 0 ; i < M ; i++) for (int j = 0 ; j < N ; j++) { System. out .print ("Ingrese elemento (" + i + "," + j + ")...."); A [i] [j] = sc .nextInt(); } } static void imprimir () { System. out .println (".......IMPRIMIENDO LA MATRIZ....."); for (int i = 0 ; i < M ; i++) { System. out .println ();

CARRERA INFORMATICA – CURSO DE TEMPORADA M. Sc. ZARA YUJRA CAMA for (int j = 0 ; j < N ; j++) { System. out .print ( A [i] [j] + " "); } } } public static void main (String args[]) { leerMatriz (); imprimir (); } }// fin del programa

Salida en pantalla:

EJERCICIOS RESUELTOS

1) Leer una matriz cuadrada e imprimirla; también mostrar la suma de las filas, la suma

de las columnas, de la diagonal principal y de la diagonal secundaria.

Ejemplo: sea una matriz cuadras de 3 filas y 3 columnas

La suma de la fila 0 : 5 + 6 + 1 = 12

La suma de la fila 1: 9 + 0 + 3 = 12

La suma de la fila 2: 7 + 4 + 5 = 16

La suma de la columna 0: 5 + 9 + 7 = 21

La suma de la columna 1: 6 + 0 + 4 = 10