TEMA1II2009
Transcript of TEMA1II2009
![Page 1: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/1.jpg)
Capítulo I
Introducción a las Estructuras De Datos
1.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.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. Abstracción de datos
Técnica o metodología que permite diseñar estructuras de datos, permite representar bajo ciertos
lineamientos las características esenciales de las estructuras de datos.
Programación II 1Lic. Peregrina Carazas
El pato y la Serpiente
A orillas de un estanque, diciendo estaba un pato:
-¿A qué animal dio el cielo los dones que me ha dado? Soy de agua, tierra y aire; cuando de andar me canso, si se me antoja, vuelo; si se me antoja, nado.
Una serpiente astuta, que le estaba escuchando, le llamó con un silbido y le dijo:
-No hay que ser tan arrogante señor pato, pues ni anda como el ciervo, ni vuela como el halcón, ni nada como el pez; y así tenga sabido que lo importante y raro no es entender de todo, sino ser diestro en algo. De Tomás de Iriarte
El pato y la Serpiente
A orillas de un estanque, diciendo estaba un pato:
-¿A qué animal dio el cielo los dones que me ha dado? Soy de agua, tierra y aire; cuando de andar me canso, si se me antoja, vuelo; si se me antoja, nado.
Una serpiente astuta, que le estaba escuchando, le llamó con un silbido y le dijo:
-No hay que ser tan arrogante señor pato, pues ni anda como el ciervo, ni vuela como el halcón, ni nada como el pez; y así tenga sabido que lo importante y raro no es entender de todo, sino ser diestro en algo. De Tomás de Iriarte
![Page 2: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/2.jpg)
1.4. 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.
Ejemplo: Estructura de Datos:
Sus operaciones:
Otros ejemplos de estructuras de datos:
OPERACIONES
Lista de elementos
Archivos (conjunto de registros)
Vector (conjunto de elementos)
Registros
1.5. T.D.A. (Tipo de Dato Abstracto)
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:
TDA: VECTOR: <x1, x2, x3,…, xn>
En java los arreglos no solo deben ser declarados, sino también deben ser creados
new <tipo base> <[número natural]>
vector[ ] = new int [10] ; Declaración y creación de un vector
Vector[0] Vector[10]
A continuación vemos en la siguiente figura el TDA vector con sus diferentes operaciones
Programación II 2Lic. Peregrina Carazas
Arreglo
Comparación AsignaciónEscrituraLectura
OrdenarBuscarEliminarModificarInsertarDesplegar
![Page 3: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/3.jpg)
1.6. Estructuras Fundamentales
Los datos a procesar por una computadora se clasifican en:
Simples
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 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.
Ejemplos:
Dato Simple
Declaramos una variable A de tipo entero y asignamos el valor 25.
A Identificador int A;
A = 25;
Dato Estructurado
Declaramos un dato compuesto o estructurado A que tendrá 5 elementos de tipo
entero.
A IdentificadorInt A[ ] = new int [5] ;A = {20,30,40,50,60};
Programación II 3Lic. Peregrina Carazas
25
20 30 40 50 60
VECTOR
quitar
insertarcambiar
asignar
sumar
buscar
![Page 4: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/4.jpg)
1.7. Arreglos
Con frecuencia se presentan problemas cuya solución no resulta fácil de implementar (a veces es
imposible) si se utilizan datos simples.
A continuación se presentará un problema y dos posibles soluciones del mismo utilizando tipos
simples de datos. El objetivo de este ejemplo es ilustrar lo complejo que resulta un algoritmo de
solución para ciertos problemas, sin usar tipos estructurados de datos.
Problema. Se tienen calificaciones de un grupo de 50 alumnos. Se necesita saber cuántos
alumnos tienen una calificación superior al promedio del grupo.
¿Cómo resolver este problema?
Primera Solución: DOBLE LECTURA
Segunda Solución: MUCHAS VARIABLES u
Esta solución, resuelve el problema planteado utilizando múltiples variables.
Programación II 4Lic. Peregrina Carazas
BEGIN
Integer I, CONTReal AC, PROM, CAC = 0;I = 1;while ( I < = 50)
write (Introduzca la calificación del alumno )read C;AC = AC + CI =I +1
endwhilePROM = AC / 50;CONT = 0; I = 1;while ( I < = 50 )write (“Introduzca la calificación del alumno “)
read Cif ( C > PROM )thenCONT = CONT + 1;endifI =I +1;
enwhilewrite(“el numero de alumnos cuya calificación es mayor al promedio son “, CONT)END
![Page 5: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/5.jpg)
Se observa que ninguna de las dos soluciones resulta práctica ni eficiente. Es necesario un nuevo
tipo de datos que permita tratar estos problemas de una manera más adecuada. Los tipos de datos
estructurados que ayudan a resolver problemas como éste son los arreglos.
Tercera Solución: UTILIZAR UN ARREGLOu
Esta solución, resuelve el problema planteado utilizando un arreglo.
Programación II 5Lic. Peregrina Carazas
SEGUNDA SOLUCIONBEGIN
Integer CONT, C1,C2, C3, …, C50;Real PROM, AC, C;Write( “ introduzca la calificación del alumno 1 “)
Read C1;Write( “ introduzca la calificación del alumno 2 “)
Read C2..Write( “ introduzca la calificación del alumno 50 “)
Read C50;AC = C1 + C2 + … + C50;PROM = AC / 50; CONT = 0;If ( C1 > PROM ) then
CONT = CONT + 1; endif
If ( C2 > PROM ) then CONT = CONT + 1; endif
.
.If ( C50 > PROM ) then
CONT = CONT + 1; endif
write( “el numero de alumnos cuya calificación es mayor al promedio son “) write(CONT)END
BEGINDim integer C[51]; //declara un vector C para 50 elementosinteger I;Real AC, PROM;for ( I do 1 to 50 )
write(“ Introduzca la calificacion del alumno “ ) read C [ I ] AC = AC + C [I];endforPROM = AC / 50;for ( I do 1 to 50 )
if ( C [ I ] > PROM ) then CONT ++; Endif endfor
write(“el numero de alumnos cuya calificación es mayor al promedio es “)write(CONT)
END
![Page 6: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/6.jpg)
1.8. Definición De Arreglo
Finita: Todo arreglo tiene un límite; es decir, debe determinarse cuál será el número máximo de
elementos que podrán formar parte del arreglo.
Homogénea: Todos los elementos del arreglo son del mismo tipo (todos enteros, todos voléanos,
etc. , pero nunca una combinación de distintos tipos)
Gráficamente podemos representar un arreglo como sigue:
Ejemplo: Sea un arreglo C que almacena las 50 calificaciones
componente30 50 70 60
1 2 3 … 50Identificador
Indice
Programación II 6Lic. Peregrina Carazas
C =
Un arreglo se define como una colección finita, homogénea y ordenada de elementos.
BEGIN
Dim integer C[51]; //declara un vector C para 50 elementosinteger I;Real AC, PROM;for ( I = 1 to 50 do)
write(“ Introduzca la calificacion del alumno “) read C [ I ] AC = AC + C [I]endforPROM = AC / 50;for ( I =1 to 50 do)
if ( C [ I ] > PROM ) then CONT =CONT +1
Endif endfor
write(“el numero de alumnos cuya calificación es mayor al promedio son “)write(CONT)
END
![Page 7: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/7.jpg)
1.8.1. Declaración de vectores
Para declarar un vector en el lenguaje JAVA, tenemos la siguiente sintaxis:
new <tipo base> <[número natural]>
Ejemplo: Un vector a de 10 enteros de tipo int se declara:
Int A[] = new int [10];
Ejemplo. En esta línea se declaran dos vectores de double, uno con 20 componentes y otro con 100:
double a[] new float a[100], b[] = new float b[100];
1.8.2. Inicialización de los vectores
Los arrays pueden ser inicializados en la declaración.
Ejemplos:
float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12};
int N[] = {1, 2, 3, 6};
En el caso 1, el número de elementos es 10, ya que hay diez valores en la lista. En el caso 2, será 4. Una vez creado un vector, sus elementos presentan valores arbitrarios. Es un error suponer que los valores del vector son nulos tras su creación.
Podemos inicializar todos los valores de un vector a cero con un bucle for:
for (i = 0; i < TAM; i++) a[i] = 0;
1.8.3. 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.
1.8.3.1. Matrices
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
Programación II 7Lic. Peregrina Carazas
![Page 8: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/8.jpg)
Java soporta hasta arreglos con 12 dimensiones. En arreglos de dos dimensiones, el primer
elemento representa el renglón y el segundo la columna.
Cada elemento de un arreglo bidimensional puede referenciarse de la siguiente manera:
arreglo [ i ] [ j ].
Un arreglo multidimensional puede inicializarse desde su declaración. Por ejemplo, un
arreglo bidimensional b[2][2] puede declararse e inicializarse así:
Declaración de una Matriz
La sintaxis en el lenguaje Java es el siguiente:
donde:
tipo puede ser cualquier tipo de dato (int, float, char, etc.).
nombre_de_variable es el nombre del arreglo.
rango 1 corresponde al número de renglones que conforman el arreglo.
rango 2 corresponde al número de columnas.
Podemos trabajar con cada uno de los elementos de la matriz:
X[3][5] = 20;
Operaciones con arreglos bidimensionales
Las operaciones que pueden realizarse con arreglos bidimensionales son las siguientes:
Lectura/escritura
Asignación
Actualización:
Inserción
Eliminación
Modificación
Ordenación
Búsqueda
En general los arreglos bidimensionales son una generalización de los unidimensionales, por lo
que se realizará un ejemplo con algunas de estas operaciones a continuación.
Programación II 8Lic. Peregrina Carazas
tipo nombre_de_variable[][]= new tipo[rango1][rango2];
![Page 9: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/9.jpg)
Ejemplo: La Tabla contiene gastos que registra una ama de casa correspondientes a los 12
meses del año anterior.
Meses/Gastos Agua Luz Telefono Mercado23 57 840 25028 60 560 28034 55 400 27524 87 700 34029 80 450 31034 65 670 32045 67 560 32548 78 570 32332 54 540 29033 50 250 30035 70 330 35038 62 300 430
Es posible interpretar esta tabla de la siguiente manera: dado un mes, se conocen los gastos
realizados por la ama de casa; y dado un gasto se conocen los gastos mensuales.
El programa será el siguiente:
Programación II 9Lic. Peregrina Carazas
proc Lee_gastos( G[][], m, g)
integer i contador de meses integer j contador de columnas de gasto for ( i= 1 to m do) for ( j=1 to g do) write(”Ingrese el gasto del mes “) cin>>G[i][j]; endfor endfor endproc
![Page 10: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/10.jpg)
1.9. Matrices Poco Densas
Matriz es un término matemático utilizado para definir un conjunto de elementos organizados por
medio de renglones y columnas, equivalente al término arreglo bidimensional utilizado en
computación.
Poco Densa indica una proporción muy alta de ceros entre los elementos de la matriz. Es decir
una matriz poco densa es aquella que tiene gran cantidad de elementos ceros.
Ejemplo:
La matriz A de 4 filas por 4 columnas, del total de elementos que es 16, solo 4 de ellos son
diferentes de cero.
0 1 1 00 0 1 00 1 0 00 1 0 0
Programación II 10Lic. Peregrina Carazas
Proc Imprime_Gastos(G[][], m, g)
for (i=1 to m do)for(j=1 to n do)write(G[i][j])endforendforendproc
proc Suma_Gastos (G[][], m, g)
integer TotalGastos=0
for (i=1 to m do)for(j=1 to n do)TotalGastos = TotalGastos + G[i][j]endforwrite(“EL TOTAL DE GASTOS DEL AÑO ES...”)endforendproc
BEGINDIM GASTOS[100][100]Lee_Gastos (GASTOS, 12, 4)Imprime_Gastos (GASTOS, 12,4)Suma_Gastos(GASTOS, 12,4)END
A =
![Page 11: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/11.jpg)
Ejemplo de una matriz poco densa
1.10. Registros (Estructuras)
Cuando se habló de los arreglos se mencionó que se trataba de una colección de datos, todos del
mismo tipo, que era un tipo estructurado de datos, y que son ellos se podía solucionar un gran
número de problemas. Sin embargo, en la práctica a veces se necesitan estructuras que permitan
almacenar distintos tipos de datos (característica con la cual no cuentan los arreglos).
Ejemplo
Una compañía tiene por cada empleado los siguientes datos:
Nombre (cadena de caracteres) Dirección (cadena de caracteres) Edad (entero) Sexo (carácter) Antigüedad (entero)
Si lo vemos gráficamente estos datos tenemos;
Programación II 11Lic. Peregrina Carazas
Proc MatrizPdensa(G[][], m, g)
for (i=1 to m do) for(j=1 to n do)
if(i=j) then G[i][j]=1 Else G[i][j]=0
endfor endforendproc
Proc Imprime(G[][], m, g)
for (i=1 to m do) for(j=1 to n do)
write(G[i][j]) endfor
endforendprocBEGIN
DIM G[100][100] Read n Read m
MatrizPdensa (GASTOS, n, m) Imprime (G, n,m)END
![Page 12: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/12.jpg)
Nombre DireccionNom Pat Mat Calle Nro Zona Edad Sexo AntigJuanMaria
RodríguezAlvarez
SalasVargas
Av. ArceCalle 12
1231345
CentralObrajes
2529
MF
23
Si se quisiera almacenar estos datos no sería posible usar un arreglo, ya que sus componentes
deben ser todos del mismo tipo.
1.10.1. Definición De Registro
Un registro es un dato estructurado, donde cado uno de sus componentes se denomina campo.
Los campos de un registro pueden ser todos de diferentes tipos. Cada campo se identifica por un
nombre único (el identificador de campo). No se establece orden entre los campos.
Un registro es un clase en Java es un grupo de campos, existen muchas formas de organizar los
registros la forma más común se denomina archivo secuencial.
Java no obliga a crear una estructura de registro, por tanto los programadores deben estructurar
estos a modo de satisfacer las necesidades de las aplicaciones.
Los archivos se abren creando objetos de las clases de flujos FileInputStream y FileOutputStream.
El programa presenta un botón Guardar o Grabar el cual invocará a un método especifico que
permita almacenar el registro en el archivo, en este método cada campo del registro se escribe
individualmente con llamadas al métodos writeInt, writeUTF, writeDouble de la clase
DataOutputStream
Ejemplo de adición de registros al archivo alumnos.dat import java.awt.*;
Programación II 12Lic. Peregrina Carazas
fos = new DataOutputStream (new FileOutputStream ("d:\\encargados.dat", true));
fos.writeUTF (txtnombre.getText ());
fos.writeUTF (txtapellido.getText ());
fos.writeUTF (txtsemestre.getText ());
fos.writeUTF (txtpago.getText ());
fos.writeUTF (txtcarrera.getText ());
fos.writeUTF (txtmatricula.getText ())
![Page 13: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/13.jpg)
import java.io.*;import java.lang.*;import java.io.*;import java.applet.*;public class alumnos extends Frame{ private TextField txtnombre, txtapellido, txtsemestre, txtcarrera, txtpago, txtmatricula, txtobservacion, txtdia, txtmes, txtano, txtestado; private Label lblnombre, lblapellido, lblsemestre, lblcarrera, lblpago, lblmatricula, lblobservacion, lblfecha; private Button btnregistrar, btnlistar, btnsalir, btnbuscar; private Choice uno; private Checkbox a, b; CheckboxGroup R; Toolkit toolkit; Image imagen; alumnos () { super ("registro de inscritos"); muestra (); toolkit = getToolkit (); imagen = toolkit.getImage ("alumnos.jpg"); }
public void paint (Graphics g) { g.drawImage (imagen, 1, 1, this); }
public void muestra () { setLayout (null); setBackground (Color.blue); txtnombre = new TextField (""); txtapellido = new TextField (""); txtsemestre = new TextField (""); txtpago = new TextField (""); txtcarrera = new TextField (""); txtmatricula = new TextField (""); txtdia = new TextField (""); txtmes = new TextField (""); txtano = new TextField (""); txtobservacion = new TextField (""); txtnombre.reshape (50, 75, 150, 20); txtapellido.reshape (50, 155, 150, 20); txtsemestre.reshape (50, 425, 100, 20); txtcarrera.reshape (50, 225, 100, 20); txtmatricula.reshape (50, 490, 100, 20); txtdia.reshape (50, 290, 30, 20); txtmes.reshape (90, 290, 30, 20); txtano.reshape (130, 290, 40, 20); txtobservacion.reshape (230, 115, 230, 20);
Programación II 13Lic. Peregrina Carazas
![Page 14: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/14.jpg)
add (txtnombre); add (txtapellido); add (txtsemestre); add (txtcarrera); add (txtmatricula); add (txtdia); add (txtmes); add (txtano); add (txtobservacion); R = new CheckboxGroup (); a = new Checkbox ("si", R, true); a.reshape (300, 455, 40, 15); b = new Checkbox ("no", R, true); b.reshape (300, 480, 40, 15); add (a); add (b); lblnombre = new Label ("NOMBRE"); lblapellido = new Label ("APELLIDO"); lblsemestre = new Label ("SEMESTRE"); lblpago = new Label ("PAGO"); lblcarrera = new Label ("CARRERA"); lblmatricula = new Label ("MATRICULA"); lblfecha = new Label ("FECHA DE INSCRIPCION"); lblobservacion = new Label ("OBSERVACIONES"); lblnombre.reshape (55, 50, 80, 20); lblapellido.reshape (55, 130, 80, 20); lblsemestre.reshape (55, 400, 80, 20); lblpago.reshape (300, 430, 40, 20); lblcarrera.reshape (55, 200, 100, 20); lblmatricula.reshape (55, 465, 80, 20); lblfecha.reshape (55, 265, 150, 20); lblobservacion.reshape (280, 80, 120, 20); add (lblnombre); add (lblapellido); add (lblsemestre); add (lblpago); add (lblcarrera); add (lblmatricula); add (lblfecha); add (lblobservacion); btnregistrar = new Button ("ADICIONAR"); btnlistar = new Button ("MOSTRAR"); btnsalir = new Button ("SALIR"); btnbuscar = new Button ("BUSCAR"); btnregistrar.reshape (50, 550, 80, 30); btnlistar.reshape (150, 550, 80, 30); btnsalir.reshape (370, 550, 80, 30); btnbuscar.reshape (260, 550, 80, 30); add (btnregistrar); add (btnlistar); add (btnsalir); add (btnbuscar); uno = new Choice (); uno.addItem ("nuevo");
Programación II 14Lic. Peregrina Carazas
![Page 15: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/15.jpg)
uno.addItem ("antiguo"); uno.addItem ("otros"); uno.reshape (300, 340, 100, 100); add (uno); resize (510, 600); show (); }
public void limpiar () { txtnombre.setText (""); txtapellido.setText (""); txtsemestre.setText (""); txtpago.setText (""); txtcarrera.setText (""); txtmatricula.setText (""); txtdia.setText (""); txtmes.setText (""); txtano.setText (""); txtobservacion.setText (""); txtestado.setText (""); }
public boolean action (Event e, Object o) { int suma; if (e.target instanceof Checkbox) { if (a.getState () == true) { txtpago = new TextField ("si"); } if (b.getState () == true) { txtpago = new TextField ("no"); } } if (e.target instanceof Choice) { if (uno.getSelectedItem ().equals ("nuevo")) { txtestado = new TextField ("nuevo"); } if (uno.getSelectedItem ().equals ("antiguo")) { txtestado = new TextField ("antiguo"); } if (uno.getSelectedItem ().equals ("otros")) { txtestado = new TextField ("otros"); } }
Programación II 15Lic. Peregrina Carazas
![Page 16: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/16.jpg)
if (e.arg.equals ("SALIR")) { hide (); } if (e.arg.equals ("BUSCAR")) { busqueda asd = new busqueda (); } if (e.arg.equals ("ADICIONAR")) { if (txtnombre.getText ().equals ("") && txtapellido.getText ().equals ("") && txtsemestre.getText ().equals ("") && txtpago.getText ().equals ("") && txtcarrera.getText ().equals ("") && txtobservacion.getText ().equals ("") && txtdia.getText ().equals ("") && txtmes.getText ().equals ("") && txtano.getText ().equals ("") && txtmatricula.getText ().equals ("") && txtestado.getText ().equals ("")) { return false; } DataOutputStream fos = null; try { fos = new DataOutputStream (new FileOutputStream ("d:\\alumnos.dat")); fos.writeUTF (txtnombre.getText ()); fos.writeUTF (txtapellido.getText ()); fos.writeUTF (txtsemestre.getText ()); fos.writeUTF (txtpago.getText ()); fos.writeUTF (txtcarrera.getText ()); fos.writeUTF (txtmatricula.getText ()); fos.writeInt (Integer.parseInt (txtdia.getText ())); fos.writeInt (Integer.parseInt (txtmes.getText ())); fos.writeInt (Integer.parseInt (txtano.getText ())); fos.writeUTF (txtobservacion.getText ()); fos.writeUTF (txtestado.getText ()); fos.close (); limpiar (); } catch (FileNotFoundException fnfe) { System.out.println ("no existe el archivo"); } catch (IOException ioe) { System.out.println ("error"); } } if (e.arg.equals ("MOSTRAR")) { lista a = new lista (); } return true; }
public static void main (String args [])
Programación II 16Lic. Peregrina Carazas
![Page 17: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/17.jpg)
{ alumnos ag = new alumnos (); }}
Ejercicios Propuestos
ARREGLOS DE UNA DIMENSIÓN
1. Declare e inicialice un vector de N elementos de modo que los componentes
de indice par valgan 0 y los de indice impar valgan 1. Ejm. V(1,0,1,0, . . . . .)
2. Escriba un programa que almacene en un vector los N primeros números de Fibonacci.
Una vez calculados, el programa los mostrará por pantalla en orden inverso.
3. Escriba un programa que almacene en un vector los N primeros números de Fibonacci.
Una vez calculados, el programa pedirá al usuario que introduzca un número y dirá si es o
no es uno de los N primeros números de Fibonacci.
4. Hallar la moda de los elementos de un vector de dimensión n (la moda es el valor que más
se repite)
5. Diseñe un programa que pida el valor de N números enteros distintos y los almacene en un
vector. Si se da el caso, el programa advertirá al usuario, tan pronto sea posible, si
introduce un número repetido y solicitará nuevamente el número hasta que sea diferente
de todos los anteriores. A continuación, el programa mostrará los N números por pantalla
6. Diseñe un programa que lea y almacene en un vector N números enteros asegurándose
de que sean positivos. A continuación, el programa pedirá que se introduzca una serie de
números enteros y nos dirá si cada uno de ellos está o no en el vector. El programa finaliza
cuando el usuario introduce un número negativo. Luego ordenar el vector, por el método de
la burbuja.
7. En un arreglo se ha almacenado el número total de toneladas de cereales cosechadas
durante cada mes del año anterior. Se desea la siguiente información:
i. El promedio anual de toneladas cosechadas
ii. ¿Cuántos meses tuvieron una cosecha superior al promedio anual?
Programación II 17Lic. Peregrina Carazas
![Page 18: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/18.jpg)
iii. ¿Cuántos meses tuvieron una cosecha inferior al promedio anual?Escriba
un programa que proporcione estos datos.
ARREGLOS MULTIDIMENSIONALES
1. Escriba un programa que intercambie por renglón los elementos de un arreglo
bidimensional. Los elementos del renglón 1 deben intercambiarse con los del renglón
N, los del renglón 2 con los del N-1, y así sucesivamente.
2. Determinar si una matriz es simétrica
2 3 4 5 6
3 7 8 9 5
4 8 10 8 4
5 9 8 7 3
6 5 4 3 2
Una matriz es simétrica si Aij=Aji
3. Consideremos las matrices A y B de dimensión n*m, almacene los elementos de
ambas matrices n vector V de dimensión 2*n*m, A esta almacenado renglón por
renglón a partir de la primera posición y B está almacenado columna por columna a
partir de la posición n*m+1 escriba un programa que realice los siguiente:
a) Obtenga la suma de las matrices almacenados en V y almacene el resultado en le
vector S ordenado por renglones a partir de la primera posición.
5 7 9 4 16 19 12 14
5+16 7+12 9+19 4+14
b) Imprima el resultado de la suma almacenado en S en forma de matriz
ARCHIVOS
Programación II 18Lic. Peregrina Carazas
5 79 4
16 1219 14
A B
V
S
21 1928 18
![Page 19: TEMA1II2009](https://reader035.fdocumento.com/reader035/viewer/2022081806/5571f33c49795947648db3c4/html5/thumbnails/19.jpg)
1. Una compañía distribuye N productos a distintos comercios de la ciudad. Para ello se
almacena en un archivo toda la información relacionada con su mercancía:
Clave
Descripción
Existencia
Mínimo a mantener de existencia
Precio unitario
Escriba un programa que pueda llevar a cabo las siguientes operaciones:
a) Venta de un producto: se deben actualizar los campos que correspondan, y verificar que la
nueva existencia no esté por debajo del mínimo. (datos: clave, cantidad_vendida)
b) Reabastecimientos de un producto: se deben actualizar los campos que correspondan.
(Datos: clave, cantidad comprada)
Programación II 19Lic. Peregrina Carazas