Sunteți pe pagina 1din 33

ESTRUCTURAS CONDICIONALES

Y REPETITIVAS
Msc. Fausto Torres M.
Estructuras Condicionales
Construcciones para lo toma de
decisiones
La sentencia if de una sola alternativa.
La sentencia if - else de doble alternativa.
La sentencia if else de alternativa
mltiple.
La sentencia switch
Estructuras Selectivas
La sentencia if de una sola alternativa.

if (condicion) {
// bloque de sentencias
}
if (nota > 10)
if (nota > 10){
System.out.println(Esta aprobado);
}
La sentencia if de una sola alternativa
Programa que imprime en pantalla si se tiene una nota aprobatoria o
desaprobatoria.
Nota > 10
V F
La nota es
aprobatoria
Fin
package ejemplo07;
import javax.swing.JOptionPane;
public class Ejemplo07 {
public static void main(String[] args) {
int nota;
nota=Integer.parseInt(JOptionPane.showInputDialog("ingrese la nota"));
if (nota>10){
JOptionPane.showMessageDialog(null,"Esta aprobado");
}
}
}

La sentencia if - else de doble alternativa
Selectiva doble

if (condicion) {
// bloque de sentencias
}
else{
// bloque de sentencias
}
Condicin ?
Accin V
V F
Accin F
Fin
package ejemplo07;
import javax.swing.JOptionPane;
public class Ejemplo07 {
public static void main(String[] args) {
int nota;
nota=Integer.parseInt(JOptionPane.showInputDialog("ingrese la nota"));
if (nota>10){
JOptionPane.showMessageDialog(null,"Esta aprobado");
}
else{
JOptionPane.showMessageDialog(null,"Esta desaprobado");
}
}
}

La sentencia if de doble alternativa
Programa que imprime en pantalla si se tiene una nota aprobatoria.
Nota > 10
V F
Esta aprobado
Fin
Esta
desaprobado
La sentencia if else de alternativa mltiple.
Selectiva mltiple if else if
if (condicion1){
//bloque de sentencias 1
}
else if (condicion2){
//bloque de sentencias 2
}
else{
//bloque de sentencias
}


Condicin 1
Accin 1
V
F
condicin2
Accin 2
V
Condicin 3
Accin 3
Salida
F
package ejemplo07;
import javax.swing.JOptionPane;
public class Ejemplo07 {
public static void main(String[] args) {
int nota;
nota=Integer.parseInt(JOptionPane.showInputDialog("ingrese la nota"));
if (nota<11){
JOptionPane.showMessageDialog(null,"Es Observado");
}
else if (nota<14){
JOptionPane.showMessageDialog(null,"Es Regular");
}
else {
JOptionPane.showMessageDialog(null, "Es excepcional");
}
}
}
Programa que imprime un mensaje de la condicin acadmica del
estudiante en funcin de su promedio de ciclo.
nota <11: Observado; 11 <= nota <14: Regular; nota >= 14: Excepcional.
La sentencia if else de alternativa mltiple.
La sentencia if else de alternativa mltiple
Prdida del else
if (temperatura > 37)
if (tensionArterial > 12)
contadorEnfermo++;
else
contadorSaludable++;

el else est asociado al if inmediatamente
anterior .
if (nota <11)
// una instruccin
if (nota <14)
//una instruccin
else
//una instruccin
package ejemplo07;
import javax.swing.JOptionPane;
public class Ejemplo07 {
public static void main(String[] args) {
int nota;
nota=Integer.parseInt(JOptionPane.showInputDialog("ingrese la nota"));
if (nota<11)
JOptionPane.showMessageDialog(null,"Es Observado");
else if (nota<14)
JOptionPane.showMessageDialog(null,"Es Regular");
else
JOptionPane.showMessageDialog(null, "Es excepcional");
}
}
Programa que imprime un mensaje de la condicin acadmica del
estudiante en funcin de su promedio de ciclo.
nota <11: Observado; 11 <= nota <14: Regular; nota >= 14: Excepcional.
La sentencia if else de alternativa mltiple.
Estructuras Selectivas Mltiple
Selectiva Mltiple
switch (expresin){
case constante1: sentencia; break;
case constante1: sentencia; break;
....
default: sentencia; break;
}
Inicio
Fin
Alternativa 1
Selector
Accin 11;
Accin 12;
...........
break;
Alternativa 2
Accin 21;
Accin 22;
...........
break;
Otro caso
Accin C1;
Accin C2;
...........
break;
. . . .
.
Funcionamiento
1. El valor del switch (selector) es evaluado en las
alternativas una por una.
2. Si encuentra una alternativa que contenga el
valor del selector (switch), ejecuta la o las
acciones correspondientes a la etiqueta case y
termina la estructura si es que existe una
sentencia break al final de la etiqueta.
3. El break permite que no contine la ejecucin en
el siguiente enunciado case.
4. El uso de default es opcional, sin embargo sirve
para ejecutar algo (Accin X) cuando el selector
no encuentra su lugar, es decir que su valor no se
encuentra contenido en ninguna alternativa.

Una empresa ofrece los siguiente productos:
Ejemplo:Estructuras Selectivas Mltiple
Cdigo del producto Precio
1 15
2 20
3 10
4 30
Escribir una aplicacin que permita determinar el
monto a pagar. Los datos a ingresar son: el cdigo
del producto y la cantidad a comprar.
package ejemplo07;

import javax.swing.JOptionPane;
public class Ejemplo07 {
public static void main(String[] args) {
int codigo,cantidad,precio,total;
codigo=Integer.parseInt(JOptionPane.showInputDialog("Ingrese el cdigo"));
cantidad=Integer.parseInt(JOptionPane.showInputDialog("Ingrese la cantidad"));
precio=0;
switch(codigo){
case 1:
precio=15;
break;
case 2:
precio=20;
break;
case 3:
precio=10;
break;
case 4:
precio=30;
break;
default:
JOptionPane.showMessageDialog(null,"Cdigo de producto no vlido");
}
total=precio*cantidad;
JOptionPane.showMessageDialog(null, "El precio total es:"+total);
}
}

Estructuras Repetitivas
Mientras
while (condicin){
// bloque de sentencias
}

raiz = 1;
while ((raiz * raiz) < x) raiz++;
raiz = 1;
while ((raiz * raiz) < x){
System.out.println(raiz: +raiz);
raiz++;
}
Estructuras Repetitivas
Hacer mientras
do{
// bloque de sentencias
}while (condicin);

raiz = 0;
do{
raiz++;
}while((raiz * raiz) < x));

Estructuras Repetitivas
Desde o Para
for ( iniciaVarControl; condicin; incremento ){
// bloque de sentencias
}
suma = 0;
for(int i = 1; i <= n; i++) suma += i;

for(float r = 0.0; r <= 15.0; r += 0.1)
System.out.println("Valor: " + r) ;

for( int i = 100; i >= 5; i -= 5 )
System.out.println("Valor: " + i);


boolean encontrado = false:
for( ; !encontrado; ){
// bloque de sentencias
}

for( int i = 1, multiplo3 = 1; i <= 5; i++, multiplo3 += 2 )

System.out.println("Valor: " + multiplo3) ;


Mtodos
Mtodo con resultado
tipo_a_retornar identificador( lista
de parametros formales)
{
//bloque de sentencias
return valor_ a_retornar ;
}


El valor a retornar puede
ser un valor de tipo
primitivo o una referencia
Las variables locales no se
inicializan por defecto

double cubo( float x ){
return x*x*x;
}


Mtodos
Mtodo tipo void
void identificador( lista de
parametros formales)
{
// bloque de sentencias
}



void inicializa( float r, float l ){
radio = r;
longitud = l;
}


void mensaje(){
System.out.println("Hola amigos");
}
Llamada a un mtodo
x += cubo(3);
System.out.println(cubo(3));
inicializa(2.5, 2);
inicializa(r, l);
mensaje();

En Java el pase de parmetros es por valor
Mtodos
Sobrecarga de mtodos (polimorfismo en la
sobrecarga)
class Desarmadores{
int tamanhoPunta( float ancho, float espesor,
float altura ){
// bloque de sentencias
}

int tamanhoPunta( float ancho ){
// bloque de sentencias
}
int tamanhoPunta(int indiceEstandard){
// bloque de sentencias
}
}

Arreglos Unidimensonales (Vectores)
Declaracin y Creacin
tipo[] nomVector = new tipo[numElementos];
tipo nomVector[] = new tipo[numElementos];
al crear un arreglo de objetos, Java lo inicializa
en null, indicando que el arreglo an no
contiene objetos
int[] edades = new int[20];
String[] ciudades = new String[50];
int edades[] = new int[20];
Date fiestas[] = new Date[16];

Los ndices van desde 0 hasta numElementos-1
Arreglos Unidimensonales (Vectores)
Creacin e inicializacin
char vocales [] = {'a', 'e', 'i', 'o', 'u'};

boolean [] respuestas = { true, false, true, true};

long cont[] = {10, 15, 20, 25};
Arreglos Unidimensonales (Vectores)
Acceso a los elementos
nomVector[ndice]
Recorrido






int a[] = {1,2,3,4,5};

for (int k = 0; k < a.length; k++){
System.out.println( a[k] );
}
Arreglos Unidimensonales (Vectores)
Como parmetros de mtodos
void ordenar( int x[], int n ){}
final int N = 100;
int a[] = new int[N];
ordenar(a, N);
En la llamada se pasa la referencia al arreglo
Arreglos Unidimensonales (Vectores)
Asignacin de arreglos
final int N = 100;

int a[] = new int[N];
int b[] = new int[20];

a = b;
En a se copia la referencia al arreglo b de tal
modo que las dos variables (a y b) referencian
al arreglo b
Arreglos Bidimensonales (Matrices)
Declaracin y Creacin
tipo nomMatriz[][] = new tipo[numFilas][numColumnas];

tipo[][] nomMatriz = new tipo[numFilas][numColumnas];
int ventas[][] = new int[20][12];

String [ ][ ] calendario = new String[5][7];
Arreglos Bidimensonales (Matrices)
Creacin e inicializacin
tipo nomMatriz[ ][ ] = {{lista de valores de la fila 0},
{lista de valores de la fila 1},..};
int matriz [][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Arreglos Bidimensonales (Matrices)
Acceso a los elementos
nomMatriz [indFila] [indColumna]
Recorrido
int ventas[][] = new int[20][12];

for (int i = 0; i < ventas.length; i++)
for (int j = 0; j < ventas[i].length; j++){
ventas[i][j] = (i*10 + k);
System.out.println(ventas[i][j]);
}
Arreglos Bidimensonales (Matrices)
Como parmetros de mtodos

void ordenar( int x[][], int m, int n ){}
final int N = 100;
int a[][] = new int[N][N];
ordenar(a, N, N);
En la llamada se pasa la referencia al arreglo
Arreglos Bidimensonales (Matrices)
Asignacin de arreglos

final int N = 100;

int a[][] = new int[N][20];
int b[][] = new int[20][N];

a = b;
En a se copia la referencia al arreglo b de tal
modo que las dos variables (a y b) referencian
al arreglo b
Arreglos Multidimensionales
El nmero de corchetes requeridos vara de acuerdo
a la dimensin del arreglo.

String [ ][ ][ ] arregloMulti = new String [10][5][3];
Fin