jueves, 23 de agosto de 2018

Sentencias Repetitivas, Bucles o Iteraciones. Matrices

Sentencias Repetitivas

Las sentencias repetitivas, también llamadas iteraciones o bucles, permiten ejecutar de manera reiterada una sentencia  o mas sentencias, mientes se  cumpla una determinada condición lógica que debe ser verdadera. Se utilizan también variables que se van  aumentando o disminuyendo en cada iteracion, según sea el caso. En Java hay tres tipos diferentes de sentencias repetitivas: for, while y do-while.

 Sentencia For

Es un bucle o sentencia repetitiva que:
a)Ejecuta la sentencia de inicio.
b) Verifica la condición de término
c) Si la condicion es cierta, realiza la/s sentencia/s entre llaves,  aumenta o disminuye la variable de iteracion y  vuelve a consultar la condición de termino, repitiéndose el ciclo.
d) Si la condición es falsa, sale del bucle y continua con las demás sentencias del programa si los hay.


Sintaxis:

for ( inicio; condicion de termino; iteracion)
{
Sentencia_1;
Sentencia_2;
}

Sentencia While

Es un bucle o sentencia repetitiva que:
a) Nececita que la variable de inicio este definida previamente e iniciada, antes de la declaración del while.
b) Verifica la condición de término 
c) Si la condicion es cierta, realiza la/s sentencia/s entre llaves
d) Aumenta o disminuir la variable de iteracion  que debe ser indicado en una sentencia de iteracion,
 Luego vuelve a consultar la condición de termino, repitiéndose el ciclo.
e) Si la condición es falsa, sale del bucle y continua con las demás sentencias del programa si los hay.

Sintaxis:

inicio;
while ( condicion de termino)
{
Sentencia_1;
Sentencia_2;
iteracion; 
}

Sentencia  Do While

Es un bucle o sentencia repetitiva que:
a) Nececita que la variable de inicio este definida previamente e iniciada, antes de la declaración del 
Do.
b) Ejecuta la/s sentencia/s  entre llaves, al menos la primera vez 
c) Aumenta o disminuye la variable de iteracion  que debe ser indicado en una sentencia de iteracion
d) Verifica la condición de término, 
e) Si la condicion es cierta, vuelve a ejecutar el cuerpo con las sentencias y la iteracion. Si no es cierta sale del bucle y sigue con el programa.
,
Sintaxis:

inicio;
do
{
Sentencia_1;
Sentencia_2;
iteracion; 
}while ( condición de termino)


Cuando usamos cada uno de los Bucles 

Usamos FOR cuando conocemos de antemano las veces que debe realizare la iteracion
Usamos WHILE  cuando desconocemos cuentas veces debe realizarce la iteracion
Usamos DO WHILE cuando queremos que la/s sentencia/s del cuerpo se ejecuten al menos una vez

En algunos casos podemos utilizar cualquiera de los tres métodos para resolver el problema. 
A continuación un programa en Java que imprime la Tabla del Siete usando los tres métodos de bucles  





Matrices

Son muy útiles las matrices y tienen aplicación en muchas áreas de la vida moderna pues representan una manera practica  y bastante estudiada para agrupar datos y analizarlos: asi sirven para manipular datos de casi cualquier cosa en las ciencias, en la ingeniería y  en general en la información.

Una Matriz A

A
1    -2     3
0     2      1 
5     1      0

Vectores fila y vectores columna 

Las filas de A son en sentido vertical. y se denominan vectores fila
Fila 1: 1, -2,3  Fila 2: 0,2,1  Fila 3: 5,1,0
Las columnas de A son en sentido vertical y se denomina vectores columna
Columna 1: 1,0,5 Columna 2: -2,2  Columna 3: 3,1,0

Orden de una Matriz 

La nomenclatura:  es Nombre de la Matriz  Numero de Filas x  Numero de Columnas

La matriz A es formalmente A 3x3 , ya que como vimos tiene tres filas y tres columnas

Las matrices que tienen igual numero de columnas y filas se llaman matrices cuadradas, pero no necesariamente deben tener el mismo numero de filas y columnas

Suma y Resta de Matrices Cuadradas

Sean A y B  matrices cuadradas 3x3

A
1    -2      3
0     2      1 
5     1      0


1       1      0
2       0     -3
4        6    -2

Para obtener A+ B solo debemos sumar algebraicamente los elementos que estan en la misma posicion

A+ B 
(1+1)   (-2+1)   (3+0)
(0+2)   (2+0)     (1+-3)
(5+4)    (1+6)    (0+-2)

A+ B

2   -1    3
2    2    -2
9    7    -2

Para obtener A -B solo debemos restar algebraicamente los elementos que están en la misma posición

A- B

(1 -1 )   (-2 -1)     (3-0)
(0 -2)    (2 -0)      (1- -3)
(5-4)     ( 1- 6)     ( 0- -2)

A - B

0     -3    3
-2     2    4
1     -5    2

Multiplicación de Matrices

Para obtner la Matriz Producto es necesario multiplicar los elementos de las  filas de A por los elementos de las Columas de B 
A
1    -2      3
0     2      1 
5     1      0


1       1      0
2       0     -3
4        6    -2

AxB

Fila 1A x Columna 1B         Fila 1A x Columna 2B      Fila1 Ax Columna3 B
Fila 2A x Columna 1B         Fila 2A x Columna 2B      Fila2 Ax Columna3 B
Fila 3A x Columna 1B         Fila 3A x Columna 2B      Fila3 Ax Columna3 B

(1.1+-2.2+ 3.4)      (1.1+ -2.0 + 3.6)   (1.0 + -2.-3 + 3.-2)
(0.1 + 2.2+ 1.4)     (0.1 +2.0 + 1.6 )    (0.0+ 2.-3 + 1.-2)
(5.1 +1.2  +0.4  )    (5.1 +1.0+ 0.6  )   (5.0+ 1.-3 + 0 .-2)

AxB

15     19    0
6        6    -8
7        5    -3    

Multiplicación de Matrices en Java 

El siguiente programa en Java nos permite introducir los componentes de dos matrices y obtener el resultado
Para el efecto utilizaremos interaciones con bucles for

El programa principal main() se llama UseMultimax

public class UseMultimax {

public static void main(String[] args) {
// TODO Auto-generated method stub
Multiplicacion miobjeto=new Multiplicacion();
miobjeto.Entrada_Matriz1();
miobjeto.Entrada_Matriz2();
miobjeto.Multiplica();
miobjeto.Imprime();
}


}

Luego en el programa Multiplicación se crean los metodos que permiten crear las matices, multiplicar e imprimir los resultados, que seran convocados por el programa principal.

import java.util.Scanner;
public class Multiplicacion {
private int M=3;
private int N=3;
private int P=3;
private int Matriz1 [][]=new int[N][M];
private int Matriz2 [][]=new int[M][P];
private int Matriz3 [][]=new int[N][P];
Scanner entrada=new Scanner(System.in);

public void Entrada_Matriz1(){
System.out.printf("\n Este programa multiplica dos matrices ");
System.out.printf("\n Introduzca los valores de la primera matriz");
for(int i=0;i<N;i++)
for(int j=0;j<M;j++){
System.out.printf("\n Introduzca el valor de la %d columna y la %d fila",i+1,j+1);
Matriz1[i][j]=entrada.nextInt();
}
}
public void Entrada_Matriz2(){
System.out.printf("\n Introduzca los valores de la segunda matriz");
for(int i=0;i<M;i++)
for(int j=0;j<P;j++){
System.out.printf("\n Introduzca el valor de la %d columna y la %d fila",i+1,j+1);
Matriz2[i][j]=entrada.nextInt();
}
}
public void Multiplica(){
for(int i=0;i<N;i++)
for(int j=0;j<P;j++)
for(int k=0; k<M; k++){
Matriz3[i][j]+=Matriz1[i][k]*Matriz2[k][j];
}

}
public void Imprime(){
System.out.printf("\n Esta es la primera matriz \n");
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
System.out.printf("%3d",Matriz1[i][j]);
}
System.out.printf("\n");
}
System.out.printf("\n Esta es la segunda matriz \n");
for(int i=0;i<M;i++){
for(int j=0;j<P;j++){
System.out.printf("%3d",Matriz2[i][j]);
}
System.out.printf("\n");
}
System.out.printf("\n Esta es la matriz producto \n");
for(int i=0;i<N;i++){
for(int j=0;j<P;j++){
System.out.printf("%3d",Matriz3[i][j]);
}
System.out.printf("\n");
}
}



}








No hay comentarios:

Publicar un comentario