Los programas contienen instrucciones que se ejecutan generalmente una a continuación de la otra según la secuencia en la que el programador ha escrito el código. Sin embargo, hay ocasiones en las que es necesario romper esta secuencia de ejecución para hacer que una serie de instrucciones se ejecuten o no dependiendo de una determinada condición o hacer que una serie de instrucciones se repitan un número determinado de veces.
Las estructuras de control permiten modificar el orden natural de ejecución de un programa. Mediante ellas podemos conseguir que el flujo de ejecución de las instrucciones sea el natural o varíe según se cumpla o no una condición o que un bloque de instrucciones se repitan dependiendo de que una condición se cumpla o no.Las estructuras de control tienen las siguientes características:
- Tienen un único punto de entrada y un único punto de salida.
- Están compuestas por instrucciones o por otras estructuras de control.
- Estructura Secuencial
- Estructura Condicional o Selectiva
- Estructura Iterativa o Repetitiva.
- Instrucciones de salto
1. ESTRUCTURA SECUENCIAL
Las instrucciones de un programa se ejecutan por defecto en orden secuencial. Esto significa que las instrucciones se ejecutan en secuencia, una después de otra, en el orden en que aparecen escritas dentro del programa.
La estructura secuencial es el orden natural de ejecución. Las instrucciones que componen esta estructura se ejecutan en orden una a continuación de la otra.
La mayoría de las instrucciones están separadas por el carácter punto y coma (;).Ejemplo de bloque de instrucciones:
{
int n = 1;
int m = 0;
m = n++ ;
System.out.println(m);
System.out.println(n);
}
Si el bloque de instrucciones está constituido por una única instrucción no es obligatorio el uso de las llaves de apertura y cierre { }, aunque es recomendable utilizarlas./*
Programa que lee dos números por teclado y los muestra por pantalla.
*/
import java.util.*;
public class Secuencial {
public static void main(String[] args){ //--> inicio del método main
//declaración de variables
int n1, n2;
Scanner sc = new Scanner(System.in);
//leer el primer número
System.out.println("Introduce un número entero: ");
n1 = sc.nextInt(); //lee un entero por teclado
//leer el segundo número
System.out.println("Introduce otro número entero: ");
n2 = sc.nextInt(); //lee un entero por teclado
//mostrar resultado
System.out.println("Ha introducido los números: " + n1 + " y " + n2);
} //--> final del método main
}
Ejemplo de programa Java con estructura secuencial: programa que lee por teclado dos valores de tipo double y a continuación muestra su suma, resta y multiplicación. En este caso el programa también está formado por un único bloque de instrucciones que se ejecutan secuencialmente dentro del método main.
/*
* Mostrar la suma, resta y multiplicación de dos valores
* de tipo double que se introducen por teclado.
*/
import java.util.*;
public class Secuencial2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
double numero1, numero2;
System.out.println("Introduce el primer número:");
numero1 = sc.nextDouble();
System.out.println("Introduce el segundo número:");
numero2 = sc.nextDouble();
System.out.println("Números introducido: " + numero1 + " " + numero2);
System.out.println(numero1 + " + " + numero2 + " = " + (numero1+numero2));
System.out.println(numero1 + " - " + numero2 + " = " + (numero1-numero2));
System.out.println(numero1 + " * " + numero2 + " = " + numero1*numero2);
}
}
2. ESTRUCTURA CONDICIONAL, ALTERNATIVA O SELECTIVA
Es una de las estructuras que permiten modificar el orden de ejecución de las instrucciones del programa.
- Instrucción if.
- Instrucción switch.
- Operador condicional ? :
La instrucción condicional if puede ser de tres tipos::
- Condicional simple: if
- Condicional doble: if ... else ...
- Condicional múltiple o if anidados: if .. else if ..
Sintaxis:
instrucción 1;
instrucción 2;
if(condición){ //inicio de la condición
instrucción 3;
instrucción 4;
} //fin de la condición
instrucción 5;
instrucción 6;
/*
* Programa que pide una nota por teclado y muestra dos mensajes si la nota es
* mayor o igual que 5
*/
import java.util.*;
public class CondicionalSimple1 {
public static void main( String[] args ){
Scanner sc = new Scanner( System.in );
System.out.print("Nota: ");
int nota = sc.nextInt();
if (nota >= 5){//----------------------inicio de la condición
System.out.println("Enhorabuena!!");
System.out.println("Has aprobado");
}//-------------------------------------fin de la condición
System.out.println("Hasta Pronto!");
}
}
Enhorabuena!!
Has aprobado
Hasta Pronto!
Hasta Pronto!
if (nota >= 5){//----------------------inicio de la condición
System.out.println("Enhorabuena!!");
}//-------------------------------------fin de la condición
/*
* Programa que pide una nota por teclado y muestra un mensaje si la nota es
* mayor o igual que 5
*/
import java.util.*;
public class CondicionalSimple1 {
public static void main( String[] args ){
Scanner sc = new Scanner( System.in );
System.out.print("Nota: ");
int nota = sc.nextInt();
if (nota >= 5)
System.out.println("Enhorabuena!!");
System.out.println("Hasta Pronto!");
}
}
Enhorabuena!!
Hasta Pronto!
Hasta Pronto!
if (nota >= 5)
System.out.println("Enhorabuena!!");
System.out.println("Hasta Pronto!");
Mediante esta estructura de control el flujo de ejecución del programa puede seguir dos caminos distintos dependiendo del valor de una condición.
Se evalúa la condición y si se cumple se ejecuta una determinada instrucción o grupo de instrucciones. Si no se cumple se ejecuta otra instrucción o grupo de instrucciones.En este caso se ejecutan las instrucciones 1 y 2 y a continuación se evalúa la condición. Si se cumple, se ejecutan las instrucciones 3 y 4. Si la condición no se cumple se ejecutan las instrucciones 5 y 6. En ambos casos el programa continuará su ejecución por las instrucciones 7 y 8.
Enhorabuena!!
Has aprobado
Lo siento, has suspendido
/*
* Programa que pide una nota por teclado y muestra si se ha aprobado o no
*/
import java.util.*;
public class EjemploIfElse {
public static void main( String[] args ){
Scanner sc = new Scanner( System.in );
System.out.print("Nota: ");
int nota = sc.nextInt();
if (nota >= 5){
System.out.println("Enhorabuena!!");
System.out.println("Has aprobado");
} else {
System.out.println("Lo siento, has suspendido");
}
System.out.println("Hasta Pronto!");
}
}
/*
* Programa que pide un número por teclado y muestra si es par o impar
*/
import java.util.*;
public class EjemploIfElse2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
System.out.print("Introduzca un número entero: ");
num = sc.nextInt();
if (num % 2 == 0) {
System.out.println("PAR");
} else {
System.out.println("IMPAR");
}
}
}
Ejemplos
de ejecución:
Introduzca un número entero: 3
IMPAR
Introduzca un número entero: 214
PAR
La estructura condicional múltiple se obtiene encadenando sentencias if ... else.
Mediante esta estructura podemos construir estructuras de selección más complejas.
Un ejemplo de if múltiple expresado en diagrama de flujo puede ser este:
Ejemplo de programa Java que contiene una estructura condicional múltiple: Programa que lee una hora (número entero) y muestra un mensaje según la hora introducida corresponda a la mañana, la tarde o la noche.
//Programa que muestra un saludo distinto según la hora introducida
import java.util.*;
public class EjemploIfAnidados {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int hora;
System.out.print("Introduzca una hora (>= 0 y <= 23): ");
hora = sc.nextInt();
if (hora >= 0 && hora < 12) {
System.out.println("Buenos días");
} else if (hora >= 12 && hora < 21) {
System.out.println("Buenas tardes");
} else if (hora >= 21 && hora < 24) {
System.out.println("Buenas noches");
} else {
System.out.println("Hora no válida");
}
System.out.println("Hasta pronto!!!");
}
}
Introduzca una hora (>= 0 y <= 23): 6
Buenos días
Hasta pronto!!!
Introduzca una hora (>= 0 y <= 23): 21
Buenas noches
Hasta pronto!!!
Introduzca una hora (>= 0 y <= 23): 25
Hora no válida
Hasta pronto!!!
Introduzca una hora (>= 0 y <= 23): 13
Buenas tardes
Hasta pronto!!!
Programa que pide que se introduzca un valor numérico de tipo double correspondiente a la nota de un alumno en una determinada asignatura y muestra un texto con la calificación equivalente de la siguiente forma:
Si la nota es menor que 5 muestra “Suspenso”
Si la nota es mayor o igual que 5 y menor que 6 muestra “Suficiente”
Si la nota es mayor o igual que 6 y menor que 7 muestra “Bien”
Si la nota es mayor o igual que 7 y menor que 9 muestra “Notable”
Si la nota es mayor o igual que 9 y menor que 10 muestra “Sobresaliente”
Si la nota es igual a 10 muestra “Matrícula de honor”
Si la nota es menor que 0 o mayor que 10 mostrará el mensaje “Nota no válida”
// programa que lee una nota y escribe la calificación correspondiente
import java.util.*;
public class EjemploIfAnidados2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double nota;
System.out.println("Introduzca una nota entre 0 y 10: ");
nota = sc.nextDouble();
System.out.println("La calificación del alumno es ");
if (nota < 0 || nota > 10) {
System.out.println("Nota no válida");
} else if (nota == 10) {
System.out.println("Matrícula de Honor");
} else if (nota >= 9) {
System.out.println("Sobresaliente");
} else if (nota >= 7) {
System.out.println("Notable");
} else if (nota >= 6) {
System.out.println("Bien");
} else if (nota >= 5) {
System.out.println("Suficiente");
} else {
System.out.println("Suspenso");
}
}
}
1. Escribir un punto y coma al final de la condición:
if (nota >= 6);
System.out.println("Notable");
En este caso el mensaje "Notable" saldrá siempre. El if termina en el ;
2. Escribir elseif en lugar de else if
elseif (nota >= 5)
System.out.println("Suficiente");
3. Usar = en lugar de == en las comparaciones
if (nota=10)
System.out.println("Matrícula de Honor");
4. Errores al comparar dos String
No se deben usar los operadores relacionales ==, >, <, <= , etc.
if(cadena1 == cadena2){ //Comparación no válida de 2 String
Comparar dos String en java
Para comprobar si dos String son iguales se debe usar el método equals:
if (cadena1.equals(cadena2))
Si lo que queremos es comprobar si dos cadenas son iguales sin tener en cuenta mayúscula o minúscula se usa el método equalsIgnoreCase:
if (cadena1.equalsIgnoreCase(cadena2))
Para comparar dos cadenas en el orden alfabético se usa el método compareTo
El método compareTo compara las dos cadenas alfabéticamente y devuelve un valor entero con el resultado de la comparación de la siguiente forma:
- Devuelve 0 si las dos cadenas son iguales.
- Devuelve un valor < 0 si la primera cadena es alfabéticamente menor que la segunda.
- Devuelve un valor > 0 si la primera cadena es alfabéticamente mayor que la segunda.
Ejemplos de uso:
Suponiendo que cadena1 y cadena2 son de tipo String y ambas contienen una cadena de caracteres, podemos compararlas de varias formas según necesitemos:
if(cadena1.compareTo(cadena2) < 0) //si la condición se cumple significa que
//cadena1 es alfabéticamente menor que cadena2
if(cadena1.compareTo(cadena2) > 0) //si la condición se cumple significa que
//cadena1 es alfabéticamente mayor que cadena2
if(cadena1.compareTo(cadena2) == 0) //si la condición se cumple significa que
//cadena1 es igual que cadena2
if(cadena2.compareTo(cadena1) > 0) //si la condición se cumple significa que
//cadena2 es alfabéticamente mayor que cadena1
if(cadena2.compareTo(cadena1) < 0) //si la condición se cumple significa que
//cadena2 es alfabéticamente menor que cadena1
Para comparar Strings en el orden alfabético sin tener en cuenta mayúsculas o minúsculas se usa el método compareToIgnoreCase
if(cadena1.compareToIgnoreCase(cadena2) > 0)
Esta estructura de control se utiliza para seleccionar una de entre múltiples opciones posibles. Es una alternativa a los if .. else anidados. Si el número de anidamientos if .. else es elevado, la estructura switch produce un código más sencillo de leer y modificar.
El flujo de ejecución del programa lo determina el valor de una variable o expresión.
El tipo de esta variable o expresión puede ser uno de los siguientes:
- Tipo primitivo: byte, short, char, int.
- La clase envolvente de los tipos primitivos anteriores: Byte, Short, Character, Integer.
- Tipo String.
- Tipos enumerados (enum).
La instrucción switch no permite que la variable o expresión sea del tipo float o double.
La sintaxis general de una estructura switch es la siguiente:
switch (expresión){
case VALOR1:
instrucciones1;
break;
case VALOR2:
instrucciones2;
break;
.....
default:
instrucciones3;
}
Funcionamiento de la instrucción switch:
- Primero se evalúa la expresión y salta al case cuyo valor coincida con el valor de la expresión.
- Se ejecutan las instrucciones que contiene el case seleccionado hasta que se encuentra un break o hasta el final del switch. El break produce un salto y la ejecución continúa por la siguiente instrucción a continuación del switch.
- Si el valor de la expresión no coincide con ningún case se ejecuta el bloque default.
El bloque default es opcional por lo tanto no es obligatorio que exista siempre un bloque default en un switch. El bloque default suele escribirse de forma habitual al final del switch a continuación de todos los case pero no es obligatorio escribirlo al final, puede aparecer en cualquier lugar.
Los valores que aparecen en los case deben ser únicos. No puede haber dos case con el mismo valor.
El valor de un case no puede ser una variable. Debe ser un literal o una constante (variables declaradas como final).
//Programa que pide un número de mes y muestra
//el nombre de mes correspondiente
import java.util.*;
public class EjemploSwitch {
public static void main(String[] args) {
int mes;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca un numero de mes: ");
mes = sc.nextInt();
switch (mes) { //inicio del switch
case 1: System.out.println("ENERO");
break;
case 2: System.out.println("FEBRERO");
break;
case 3: System.out.println("MARZO");
break;
case 4: System.out.println("ABRIL");
break;
case 5: System.out.println("MAYO");
break;
case 6: System.out.println("JUNIO");
break;
case 7: System.out.println("JULIO");
break;
case 8: System.out.println("AGOSTO");
break;
case 9: System.out.println("SEPTIEMBRE");
break;
case 10: System.out.println("OCTUBRE");
break;
case 11: System.out.println("NOVIEMBRE");
break;
case 12: System.out.println("DICIEMBRE");
break;
default : System.out.println("Mes no válido");
} //fin del switch
}
}
Ejemplo de switch: programa que lee por teclado un String correspondiente al nombre de un mes y muestra el número de días que tiene.
// Programa que pide un nombre de mes y muestra el número de días correspondiente
import java.util.Scanner;
public class Ejemplo2Switch {
public static void main(String[] args) {
String mes;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca un nombre de mes: ");
mes = sc.nextLine();
switch (mes.toUpperCase()) {
case "ENERO":
System.out.println("31 DÍAS");
break;
case "FEBRERO":
System.out.println("28 ó 29 DÍAS");
break;
case "MARZO":
System.out.println("31 DÍAS");
break;
case "ABRIL":
System.out.println("30 DÍAS");
break;
case "MAYO":
System.out.println("31 DÍAS");
break;
case "JUNIO":
System.out.println("30 DÍAS");
break;
case "JULIO":
System.out.println("31 DÍAS");
break;
case "AGOSTO":
System.out.println("31 DÍAS");
break;
case "SEPTIEMBRE":
System.out.println("30 DÍAS");
break;
case "OCTUBRE":
System.out.println("31 DÍAS");
break;
case "NOVIEMBRE":
System.out.println("30 DÍAS");
break;
case "DICIEMBRE":
System.out.println("31 DÍAS");
break;
default:
System.out.println("Mes no válido");
}
}
}
Un case puede contener además de instrucciones que se ejecuten en secuencia, otras instrucciones como condiciones o bucles o incluso otro switch.
Ejemplo: programa que pide por teclado dos números enteros y un operador +, -, *, / y realiza y muestra el resultado de la operación según el operador introducido. Si se introduce el operador división, se comprueba si el divisor es cero, en ese caso la división no se puede realizar y se muestra un mensaje indicándolo.
//Programa que pide dos números y un operador y muestra el resultado de la operación
import java.util.*;
import java.io.*;
public class Ejemplo3Switch {
public static void main(String[] args) throws IOException{
int A,B, Resultado = 0 ;
char operador;
boolean calculado = true;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca un numero entero:");
A = sc.nextInt();
System.out.print("Introduzca otro numero entero:");
B = sc.nextInt();
System.out.print("Introduzca un operador (+,-,*,/):");
operador = (char)System.in.read();
switch (operador) {
case '-' : Resultado = A - B;
break;
case '+' : Resultado = A + B;
break;
case '*' : Resultado = A * B;
break;
case '/' : if(B!=0){
Resultado = A / B;
}else{
System.out.println("\nNo se puede dividir por cero");
calculado = false;
}
break;
default : System.out.println("\nOperador no valido");
calculado = false;
}
if(calculado){
System.out.println("\nEl resultado es: " + Resultado);
}
}
}
Si una misma instrucción o bloque de instrucciones se tienen que ejecutar para distintos valores, en ese caso podemos escribir case multiples. Esto consiste en escribir varias instrucciones case seguidas.
Ejemplo de switch con case multiples: programa que pide introducir por teclado un número entero entre 1 y 7 correspondiente a un día de la semana y muestra un mensaje indicando si ese día hay clase de programación o no.
import java.util.*;
public class Ejemplo4Switch {
public static void main(String[] args) {
int numeroDia;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca el numero del día de la semana (1 a 7): ");
numeroDia = sc.nextInt();
switch (numeroDia){
case 1:
case 3:
case 5: System.out.println("Tenemos clase de programación");
break;
case 2:
case 4: System.out.println("Vaya, que pena");
System.out.println("Hoy no tenemos clase de programación");
break;
case 6:
case 7: System.out.println("Estoy deseando que llegue el lunes!!");
break;
default : System.out.println("Número de día no válido");
}
}
}
En este programa si se introduce por ejemplo un 1 como número de día, la ejecución pasará al case 1 y comienza a ejecutar las instrucciones que encuentre desde ahí hacia abajo hasta encontrar un break.
Es importante entender que una vez que la ejecución del programa entra en uno de los case, el programa sigue ejecutándose desde ese punto hasta que encuentre el primer break (estén dentro del mismo case o no) o hasta que se llegue al final del switch en cuyo caso continuará por la instrucción que se encuentre a continuación del switch.
Ejemplo: programa que pide un valor entero por teclado entre 1 y 6 y realiza una serie de operaciones con él dependiendo de su valor inicial.
import java.util.*;
public class Ejemplo5Switch {
public static void main(String[] args) {
int x, y = 10;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca un número >= 1 y <= 6: ");
x = sc.nextInt();
switch (x){
case 1: x--;
case 2: x+=5;
case 3: x = x + y;
break;
case 4:
case 5:
case 6: x++;
break;
default : System.out.println("Número no válido");
}
System.out.println("x = " + x);
}
}
Si en este programa se introduce un 1 como valor para la x, en el switch se entrará en el case 1 y se ejecutarán todas las instrucciones hacia abajo hasta encontrar un break, es decir, si x es un 1 se ejecutan las instrucciones:
x--;
x+=5;
x = x + y;
Siete ejemplos de ejecución de este programa:
Introduzca un número >= 1 y <= 6: 1
x = 15
Introduzca un número >= 1 y <= 6: 2
x = 17
Introduzca un número >= 1 y <= 6: 3
x = 13
Introduzca un número >= 1 y <= 6: 4
x = 5
Introduzca un número >= 1 y <= 6: 5
x = 6
Introduzca un número >= 1 y <= 6: 6
x = 7
Introduzca un número >= 1 y <= 6: 0
Número no válido
x = 0
2.3 OPERADOR CONDICIONAL ? :
El operador condicional se puede utilizar en sustitución de la instrucción condicional if-else.
Lo forman los caracteres ? y :
Sintaxis:
expresión1 ? expresión2 : expresión3
Si expresión1 es cierta entonces se evalúa expresión2 y éste será el valor que devuelve el operador. Si expresión1 es falsa, se evalúa expresión3 y éste será el valor que devuelve el operador.
Ejemplo: programa que pide por teclado un número entero y muestra si es positivo o negativo. Consideramos el cero como positivo.
import java.util.Scanner;
public class OperadorCondicional {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
System.out.println("Introduzca numero: ");
num = sc.nextInt();
System.out.println(num >= 0 ? "POSITIVO" : "NEGATIVO");
}
}
En el ejemplo, la instrucción:
System.out.println(num >= 0 ? "POSITIVO" : "NEGATIVO");
Es equivalente a escribir esto:
if(num >= 0){
System.out.println("POSITIVO");
}else{
System.out.println("NEGATIVO");
}
Ejemplo: programa que pide por teclado un número entero y muestra si es par o impar.
import java.util.*;
public class Ejemplo1OperadorCondicional2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
System.out.println("Introduzca numero: ");
num = sc.nextInt();
System.out.println(num%2 == 0 ? "PAR" : "IMPAR");
}
}
En el ejemplo, la instrucción:
System.out.println(num%2 == 0 ? "PAR" : "IMPAR");
Es equivalente a escribir esto:
if(num%2 == 0){
System.out.println("PAR");
}else{
System.out.println("IMPAR");
}
3. ESTRUCTURA REPETITIVA O ITERATIVA
Esta estructura de control permite ejecutar de forma repetida una instrucción o un bloque de instrucciones.
Las instrucciones se repiten mientras que se cumpla una determinada condición.
Esta condición se conoce como condición de salida del bucle.
En Java las estructuras repetitivas se implementan mediante:
- ciclo while
- ciclo do .. while
- ciclo for
3.1 CICLO WHILE
Las instrucciones se repiten mientras la condición sea cierta.
instrucción 1;
while (condición){ //inicio while
instrucciones;
} //fin while
instrucción 2;La ejecución de un bucle while sigue los siguientes pasos:
- Se evalúa la condición.
- Si el resultado es false las instrucciones no se ejecutan y el programa sigue ejecutándose por la siguiente instrucción a continuación del while.
- Si el resultado es true se ejecutan las instrucciones y se vuelve al paso 1
/*
* Programa que lee números hasta que se lee un negativo y muestra la
* suma de los números leídos
*/
import java.util.*;
public class Ejemplo1While {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num; //variable que contiene el número introducido
int suma = 0; //variable donde acumularemos la suma de los números
System.out.print("Introduzca un número ( < 0 para finalizar): ");
num = sc.nextInt(); //lectura del primer número
while (num >= 0){ //inicio del bucle while
suma = suma + num; //se suma el número introducido
System.out.print("Introduzca un número ( < 0 para finalizar): ");
num = sc.nextInt(); //lectura del siguiente número
} //fin del bucle while
System.out.println("La suma es: " + suma ); //se muestra la suma
}
}
En este ejemplo, según el enunciado, se trata de leer números enteros hasta que se introduzca un número negativo, por lo tanto, las instrucciones contenidas dentro del while se repiten mientras el número que introduzcamos sea >= 0.
Este es un ejemplo de estructura repetitiva en el que no sabemos a priori cuántas veces se repetirán las instrucciones. El número de iteraciones del bucle depende del valor de la variable num que se introduce por teclado. En el ejemplo podemos ver también que la lectura del primer número se realiza antes de que comience la estructura while. Hay que hacerlo así porque es posible que el primer número que se introduzca sea el negativo, en ese caso no tendríamos que sumarlo, por lo tanto el while no se debe ejecutar y se muestra directamente el mensaje con la suma del número.
Esta técnica se conoce como lectura adelantada o anticipada y es la forma correcta de utilizar la estructura while cuando no sabemos el número de iteraciones que se van a realizar.
Introduzca un número ( < 0 para finalizar): 6
Introduzca un número ( < 0 para finalizar): 2
Introduzca un número ( < 0 para finalizar): 5
Introduzca un número ( < 0 para finalizar): -1
La suma es: 13
Introduzca un número ( < 0 para finalizar): -2
La suma es: 0
/*
* programa que lee un número n y muestra n asteriscos
*/
import java.util.*;
public class Ejemplo2While {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N; //variable que contiene el número de asteriscos a mostrar
int contador = 0; //variable para contar los asteriscos que se han mostrado
System.out.print("Introduce número de asteriscos a mostrar: ");
N = sc.nextInt(); //leemos el número total de asteriscos a mostrar
while (contador < N){ //inicio del bucle while
System.out.print("*");
contador++;
} //fin del bucle while
System.out.println("Fin programa");
}
}
En este programa se trata de mostrar tantos asteriscos como indique el número N que se ha introducido por teclado.
Este es un ejemplo de estructura repetitiva en la que sabemos a priori cuántas veces se va a repetir el while. En este caso el while se va a repetir N veces. La variable contador será la variable de control que hará que el while termine. Cada vez que se muestra un asterisco por pantalla se suma 1 a esta variable. El while se repite mientras el valor del contador sea menor que el número total de asteriscos a mostrar.
Introduce número de asteriscos a mostrar: 10
**********
Fin programa
Introduce número de asteriscos a mostrar: 0
Fin programa
Ejemplo: programa que muestra una tabla con temperaturas expresadas en grados Fahrenheit y su equivalente en grados Celsius. Los valores de las temperatura en grados Fahrenheit estarán comprendidas entre 10 ºF y 100 ºF y se mostrarán con un incremento de 10º entre ellas (10, 20, 30 ...).
Fórmula para pasar de ºF a ºC: ºC = (ºF – 32) * 5 / 9public class Ejemplo3While {
public static void main(String[] args) {
int fahrenheit = 10; //contiene las temperaturas fahrenheit
double celsius; //contiene las temperaturas celsius
System.out.printf(" ºF \t ºC \n");
System.out.println("---------------");
while (fahrenheit <= 100 ){ //inicio del bucle while
celsius = (fahrenheit - 32)*5/9.0;
System.out.printf("%3d\t%6.2f \n", fahrenheit, celsius);
fahrenheit += 10;
} //fin del bucle while
}
}
Salida por pantalla: ºF ºC
---------------
10 -12,22
20 -6,67
30 -1,11
40 4,44
50 10,00
60 15,56
70 21,11
80 26,67
90 32,22
100 37,78
En este ejemplo la variable fahrenheit es la variable de control y será la encargada de determinar cuando finaliza el bucle while.
Su valor inicial es 10 y se deben mostrar las temperaturas desde 10ºF hasta 100ºF de 10 en 10, por lo tanto en cada iteración se incrementará su valor en 10.
La condición se comprueba al final del bucle por lo que el bloque de instrucciones se ejecutarán al menos una vez.
Esta es la diferencia fundamental entre el bucle while y el bucle do .. while. Las instrucciones de un bucle while es posible que no se ejecuten si la condición inicialmente es falsa.- Bucle while se ejecuta 0 o más veces.
- Bucle do .. while se ejecuta 1 o más veces.
instrucción1;
do{ //inicio do .. while
instrucciones;
}while(condición); //fin do .. while
instrucción2;
- Se ejecutan las instrucciones a partir de la instrucción do{
- Se evalúa la condición.
- Si la condición no se cumple el programa sigue ejecutándose por la siguiente instrucción a continuación del while.
- Si la condición se cumple volvemos al paso 1.
//Programa que pide un número menor o igual que 100
import java.util.Scanner;
public class Ejemplo1DoWhile {
public static void main(String[] args) {
int valor;
Scanner in = new Scanner( System.in );
do { //inicio del do .. while
System.out.print("Introduce un número entero <= 100: ");
valor = in.nextInt();
if(valor > 100){
System.out.println("Número no válido");
}
}while (valor > 100); //fin del do .. while
System.out.println("Ha introducido: " + valor);
}
}
Introduce un número entero <= 100: 27
Ha introducido: 27
Introduce un número entero <= 100: 690
Número no válido
Introduce un número entero <= 100: 584
Número no válido
Introduce un número entero <= 100: 58
Ha introducido: 58
En los ejemplos podemos comprobar que las instrucciones dentro del bucle do .. while se ejecutan al menos una vez.
Ejemplo: Programa que lee un número entero entre 1 y 10 ambos valores incluidos. Si el número es válido se muestra un mensaje indicándolo y se vuelve a pedir. Finalmente se muestra por pantalla el número introducido.// Programa que lee un número entre 1 y 10
import java.util.Scanner;
public class Ejemplo2DoWhile {
public static void main(String[] args) {
int n;
Scanner sc = new Scanner(System.in);
do { //inicio del do .. while
System.out.print("Escribe un número entero entre 1 y 10: ");
n = sc.nextInt();
if (n < 1 || n > 10) {
System.out.println("Valor no válido");
}
} while (n < 1 || n > 10); //fin del do .. while
System.out.println("Ha introducido: " + n);
}
}
Escribe un número entero entre 1 y 10: 3
Ha introducido: 3
Escribe un número entero entre 1 y 10: -2
Valor no válido
Escribe un número entero entre 1 y 10: 6
Ha introducido: 6
import java.util.Scanner;
public class Ejemplo3DoWhile {
public static void main(String[] args) {
int i = 1;
do { //inicio del do .. while
System.out.print(i + " ");
i++;
} while (i<=10); //fin del do .. while
System.out.println("\nFin programa");
}
}
1 2 3 4 5 6 7 8 9 10
Fin programa
Un for hace que una instrucción o bloque de instrucciones se repitan un número determinado de veces mientras se cumpla la condición.
Los bucles for son los más adecuados cuando se conoce el número de veces que se van a repetir las instrucciones.
Sintaxis Java del bucle for:
instrucción1;
for(inicialización; condición; incremento/decremento){ //inicio for
instrucciones;
} //fin for
instrucción2;
A continuación de la palabra for y entre paréntesis debe haber siempre tres zonas separadas por punto y coma:
- zona de inicialización.
- zona de condición
- zona de incremento ó decremento.
Las tres zonas son opcionales. Si en alguna ocasión no fuese necesario escribir alguna de estas zonas se pueden dejar en blanco, pero los punto y coma deben aparecer.
Inicialización es la parte en la que la variable o variables de control del bucle toman su valor inicial. Puede haber una o más instrucciones en la zona de inicialización. Si hay varias instrucciones deben estar separadas por comas. La inicialización se realiza solo una vez.
Condición es una expresión booleana que determina si la sentencia o bloque de sentencias se ejecutan o no. Las instrucciones contenidas dentro del bucle for se ejecutan mientras que la condición sea cierta.
Incremento/decremento es una expresión que modifica la variable o variables de control del bucle. En esta zona puede haber más de una expresión para modificar las variables. Si hay varias expresiones deben estar separadas por comas.
La ejecución de un bucle for sigue los siguientes pasos:
- Se inicializa la variable o variables de control (zona de inicialización)
- Se evalúa la condición (zona de condición).
- Si la condición es falsa, finaliza la ejecución del for y el programa continúa su ejecución en la siguiente instrucción después del for.
- Si la condición es cierta se ejecutan las instrucciones contenidas dentro del for.
- Se actualiza la variable o variables de control (zona incremento/decremento)
- Se vuelve al punto 2.
Igual que el bucle while, un bucle for se puede ejecutar 0 ó más veces.
Ejemplo: Programa que muestra los números del 1 al 10 ambos incluidos todos en la misma línea y separados por un espacio en blanco./*
* programa que muestra los números del 1 al 10
*/
public class Ejemplo1For {
public static void main(String[] args) {
int i;
for (i = 1; i <= 10; i++) { //inicio del for
System.out.print(i + " ");
} //fin del for
System.out.println("\nFin programa");
}
}
1 2 3 4 5 6 7 8 9 10
Fin programa
Primero asigna a i el valor inicial 1 y a continuación se comprueba la condición. Mientras que i sea menor o igual a 10 muestra i + " ", a continuación incrementa el valor de i y se comprueba de nuevo la condición. El for se repite mientras i sea <= 10.
En los programas de este tipo en los que la variable de control, en este caso la i, solo se utiliza dentro del bucle for es habitual declararla en la zona de incialización. Si lo hacemos de esa forma el programa quedaría así:
// Programa que muestra los números del 1 al 10
public class Ejemplo1For {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) { //inicio del for
System.out.print(i + " ");
} //fin del for
System.out.println("\nFin programa");
}
}
Ejemplo:
Programa que muestra los números del 10 al 1 ambos incluidos todos en la misma
línea y separados por un espacio en blanco.// Programa que muestra los números del 10 al 1
public class Ejemplo2For {
public static void main(String[] args) {
for (int i = 10; i > 0; i--) { //inicio del for
System.out.print(i + " ");
} //fin del for
System.out.println("\nFin programa");
}
}
10 9 8 7 6 5 4 3 2 1
Fin programa
Primero asigna a i el valor inicial 10 y a continuación se comprueba la condición. Mientras que i sea mayor que 0 muestra i + " ", a continuación se decrementa el valor de i y se comprueba de nuevo la condición. El for se repite mientras i sea > 0.
Ejemplo: Vamos a hacer de nuevo el programa que muestra una tabla con temperaturas expresadas en grados Fahrenheit y su equivalente en grados Celsius pero esta vez utilizaremos un bucle for para resolverlo. El programa debe realizar los mismo que el anterior, los valores de las temperatura en grados Fahrenheit estarán comprendidas entre 10 ºF y 100 ºF y se mostrarán con un incremento de 10º entre ellas (10, 20, 30 ...).
//Programa que muestra una tabla de equivalencias entre grados Fahrenheit y celsius
public class Ejemplo3For {
public static void main(String[] args) {
double celsius;
System.out.printf(" ºF \t ºC \n");
System.out.println("---------------");
for (int fahrenheit = 10; fahrenheit <= 100; fahrenheit+= 10) {
celsius = (fahrenheit - 32)*5/9.0;
System.out.printf("%3d\t%6.2f \n", fahrenheit, celsius);
}
}
}
ºF ºC
---------------
10 -12,22
20 -6,67
30 -1,11
40 4,44
50 10,00
60 15,56
70 21,11
80 26,67
90 32,22
100 37,78
Primero asigna a fahrenheit el valor inicial 10 y a continuación se comprueba la condición. Mientras que fahrenheit sea menor o igual que 100 se ejecutan las instrucciones del for, a continuación se incrementa el valor de fahrenheit en 10 y se comprueba de nuevo la condición. El for se repite mientras fahrenheit sea <= 100.
Ejemplo: Dadas dos variables enteras a y b con valor inicial 1, escribimos un programa que muestre una tabla con el valor de ambas variables y su suma. En cada iteración el valor de a se incrementa en 1 unidad y el valor de b se incrementa en 2 unidades. La tabla finaliza cuando la suma de a y b sea >= 10.
Este es un ejemplo de programa que utiliza varias variables en las zonas de inicialización e incremento/decremento.// Programa que muestra el valor de a, b y su suma mientras que la suma sea menor de 10.
// En cada iteración el valor de a se incrementa en 1 unidad y el de b en 2
public class Ejemplo4For {
public static void main(String[] args) {
for(int a = 1, b = 1; a + b < 10; a++, b+=2){
System.out.println("a = " + a + " b = " + b + " a + b = " + (a+b));
}
}
}
a = 1 b = 1 a + b = 2
a = 2 b = 3 a + b = 5
a = 3 b = 5 a + b = 8
Por ejemplo el bucle:
for (int i = 1; i <= 10; i++);
{
System.out.println("Elementos de Programación");
}
no visualiza la frase "Elementos de Programación" 10 veces como cabría esperar, ni produce un mensaje de error por parte del compilador.En realidad lo que sucede es que se visualiza una vez la frase "Elementos de Programación", ya que aquí la sentencia for es una sentencia vacía, sin instrucciones a realizar, al terminar con un punto y coma (;).
El for en este caso se limita a realizar la asignación inicial de la variable, y mientras se cumpla la condición incrementar el valor de i. La variable i toma como valor incial 1 y cuando el for termina valdrá 11. A continuación se mostrará el mensaje por pantalla.Aunque un for se puede utilizar también cuando no se sabe a priori el número de iteraciones a realizar, esta instrucción es especialmente indicada para bucles donde se conozca el número de pasadas.
Como regla práctica podemos decir que:- La instrucción for se utiliza generalmente cuando se conoce el número de iteraciones a realizar.
- Las instrucciones while y do-while se utilizan generalmente cuando no se conoce a priori el número de iteraciones a realizar.
- La instrucción do .. while será más adecuada que la instrucción while cuando el bloque de instrucciones se deban repetir al menos una vez.
Hablamos de bucles anidados cuando se incluyen instrucciones for, while o do-while unas dentro de otras. Los anidamientos de estas estructuras tienen que ser correctos, es decir, una estructura anidada dentro de otra lo debe estar totalmente, sin solaparse una con la otra.
Sintaxis para anidar dos bucles for:
for(inicialización; condición; incremento/decremento){ //inicio del for1
instrucciones1;
for(inicialización; condición; incremento/decremento){ //inicio for2
instrucciones2; //instrucciones que se ejecutan en for2
} //fin del for2
instrucciones3;
} //fin del for1
while(condición){ //inicio del while 1
instrucciones1;
while(condición){ //inicio del while 2
instrucciones2;
} //fin del while 2
instrucciones3;
}
do{ //inicio del do .. while 1
instrucciones1;
do{ //inicio del do .. while 2
instrucciones2;
}while(condición); //fin del do .. while 2
instrucciones3;
}while(condición); // fin del do .. while 1
Los
bucles se pueden anidar aunque sean de tipos distintos, por ejemplo podríamos
anidar un bucle for dentro de un do .. while y éste a su vez dentro de un
while de esta forma:
while(condición){ //inicio del while
instrucciones1;
do{ //inicio del do .. while
instrucciones2;
for(inicialización; condición; incremento/decremento){ //inicio del for
instrucciones3;
} //fin del for
instrucciones4;
}while(condición); //fin del do .. while
instrucciones5;
} //fin del while
// Rectángulo sólido de asteriscos.
import java.util.Scanner;
public class Ejemplo1BuclesAnidados {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int filas, columnas;
//leer número de filas hasta que sea un número > 1
do{
System.out.print("Introduce número de filas: ");
filas = sc.nextInt();
}while(filas < 2);
//leer número de columnas hasta que sea un número > 1
do{
System.out.print("Introduce número de columnas: ");
columnas = sc.nextInt();
}while(columnas < 2);
for(int i = 1; i <= filas; i++){ //for para las filas
for(int j = 1; j <= columnas; j++){ //for para las columnas
System.out.print(" * ");
} //fin del for para las columnas
System.out.println();
} //fin del for para las filas
}
}
Introduce número de filas: 6
Introduce número de columnas: 10
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
En este programa se han anidado dos bucles for para mostrar el rectángulo de asteriscos.
El bucle for externo es el que corresponde a las filas. El for interno corresponde a las columnas.
Para cada una de las filas se ejecuta completamente el for de las columnas con lo que se consigue que para cada fila se muestren tantos asteriscos como columnas haya.
Al final de cada fila se escribe un salto de línea para que la siguiente fila comience a mostrarse en la línea siguiente.
Ejemplo: programa que dibuja un cuadrado formado por dígitos del 0 al 9. El número de filas del cuadrado se pide por teclado. El número de filas debe ser > 1.
import java.util.Scanner;
public class Ejemplo2BuclesAnidados {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int filas, columnas, contador = 0;
//leer número de filas del cuadrado
do{
System.out.print("Introduce número de filas del cuadrado: ");
filas = sc.nextInt();
}while(filas<2);
for(int i = 1; i<=filas; i++){ //filas
for(int j = 1; j<=filas; j++){ //columnas = filas
System.out.print(contador % 10 + " ");
contador++;
} //fin del for para las columnas
System.out.println();
} //fin del for para las filas
}
}
Ejemplo de ejecución:
Introduce número de filas del cuadrado: 6
0 1 2 3 4 5
6 7 8 9 0 1
2 3 4 5 6 7
8 9 0 1 2 3
4 5 6 7 8 9
0 1 2 3 4 5
Ejemplo: A partir de una variable x que tomará los valores desde 1 hasta 10, mostrar una tabla de potencias de x. Para cada valor de x se mostrará x2 x3 x4
/*
* Programa que muestra una tabla con las potencias de x (x x2 x3 x4)
* para valores de x desde 1 hasta 10
*/
import java.util.Scanner;
public class Ejemplo1BuclesAnidados3{
public static void main(String[] args) {
int x, n;
//mostrar la cabecera de la tabla
System.out.printf("%10s%10s%10s%10s%n", "x", "x^2", "x^3", "x^4");
for (x = 1; x <= 10; x++) { //filas
for (n = 1; n <= 4; n++) { //columnas
System.out.printf("%10.0f", Math.pow(x, n));
} //fin del for para las columnas
System.out.println();
} //fin del for para las filas
}
}
La salida de este programa es:
x x^2 x^3 x^4
1 1 1 1
2 4 8 16
3 9 27 81
4 16 64 256
5 25 125 625
6 36 216 1296
7 49 343 2401
8 64 512 4096
9 81 729 6561
10 100 1000 10000
4. INSTRUCCIONES DE SALTO
Una instrucción de salto provoca la modificación del flujo de ejecución de un programa.
Java ofrece dos instrucciones de salto:
- break
- continue
4.1 BREAK
Esta instrucción provoca la finalización de una instrucción switch, while, do-while o for. En aquellos casos en los que existan estructuras de control repetitivas anidadas, un break produce la salida inmediata de aquel bucle en el que se encuentre incluida pero no de los demás.
La única situación en la que un buen programador debería utilizar la instrucción break, es para separar los diferentes casos de una instrucción switch.
Ejemplo: Programa que muestra números desde 1 hasta 50. Cuando encuentre el primer número que sea múltiplo de 3 y de 5 dejará de mostrar números.
public class Ejemplo1Break {
public static void main(String[] args) {
for (int i = 1; i <= 50; i++) { //inicio del for
if (i % 3 == 0 && i % 5 == 0) {
break; //provoca el final del for
}
System.out.println(i);
} //fin del for
System.out.println("Hasta Pronto!!!");
}
}
En este ejemplo, cuando se ejecuta la instrucción break el for finaliza y la ejecución del programa continúa en la instrucción que aparece a continuación del for.
4.2 CONTINUE
Esta instrucción provoca la ejecución de la siguiente iteración en el bucle, es decir, se salta las instrucciones que quedan hasta el final del bucle, y vuelve al inicio del mismo. Si se trata de un bucle for vuelve a la zona de incremento/decremento.
Un buen programador deberá evitar el uso de esta instrucción.
public class Ejemplo1Continue {
public static void main(String[] args) {
for (int i = 1; i <= 50; i++) { //inicio del for
if (i % 3 == 0 && i % 5 == 0) {
continue; //siguiente iteracicón del for
}
System.out.println(i);
} //fin del for
}
}
Muchas gracias por compartir esta información, de verdad que está muy bien explicado y me ha ayudado muchísimo.
ResponderEliminarGracias a ti por dejar el comentario y por seguir el blog.
ResponderEliminarHola, Me puedes ayudar con esto?: Digita un numero que muestre la tabla de multiplicar?
ResponderEliminarimport java.util.Scanner;
Eliminarpublic class Tabla{
public static void main(String[]args){
Scanner valor=new Scanner(System.in);
Syste.out.print("Ingrese un Numero: ");
int n=valor.nextInt();
for(int i=1;i<11;i++)
System.out.println(n+" * "+i+" = "+(n*i));
}
}
Tengo un problema con una práctica, esta dice: "Pida un nombre y luego que lo imprima 10 veces" cómo le hago? Gracias!
ResponderEliminarhola seria
Eliminarimport java.util.Scanner;
public class Nombre{
public static void main(String[]args){
Scanner scanner = new Scanner(System.in);
System.out.println("Escribe tu nombre");
String nombre = scanner.nextLine();
for(int k=0;k<10;k++){
System.out.println(nombre);
}
}
}
me podrias ayudar con una operacion
ResponderEliminarx <= y mostrar un mensaje
si no x restar con z valor
excelente
ResponderEliminarA la tu esta excelente toda la info que publicaste, esta rebien explicado y se comprende, ayuda a resolver muchas dudas. Sigue adelante, y gracias por compartir tus conocimientos. Feliz día
ResponderEliminarString MensajeSaludo;
ResponderEliminarPosteriormente pasamos a crear los constructores con diferentes atributos y funciones lo cual vendría a ser el polimorfismo de la clase Saludo.
public Saludo(){
MensajeSaludo="Hola Amigo";
}
public Saludo(String Palabra){
MensajeSaludo=Palabra;
}
public Saludo(String Palabra, String Nombre){
MensajeSaludo=Palabra.concat(" ").concat(Nombre);
}
Realizado esto podríamos instanciar a los diferentes constructores de la clase Saludo en nuestro main principal o donde lo requiramos. En este caso usaremos el polimorfismo en nuestro main.
INSTANCIANDO NUESTRO POLIMORFISMO
Para usar el primer constructor de nuestro polimorfismo (El que no cuenta con atributos) instanciamos de la siguiente manera:
Saludo x=new Saludo();
Para el segundo sería de la misma pero almacenando en otra variable:
Saludo y=new Saludo("Hola Kevin");
Y luego tendríamos el tercero:
Saludo z=new Saludo("Hola", "Kevin Arnold");
IMPRESIÓN DE CADA CONSTRUCTOR
Para poder imprimir en pantalla el atributo que fue asignado por los diferentes constructores de nuestra clase Saludo, debemos introducir el siguiente código:
System.out.println(x.MensajeSaludo);
System.out.println(y.MensajeSaludo);
System.out.println(z.MensajeSaludo);
Donde indicamos con nuestras variables “x”, “y” y “z” los diferentes constructores (Polimorfismo de la clase Saludo). Y el “MensajeSaludo” sería el atributo que tomó diferentes valores según el polimorfismo asignado a cada variable de la clase Saludo.
sera que me podrías ayudar.....necesito hacer un programa para ingresar 4 usuarios pero ninguno se puede repetir y si se repite tengo que mostrar un mensaje de error y se tendría que eliminar el dato guardado y volver a ingresar uno nuevo...
ResponderEliminarhola
EliminarPARA EL EJEMPLO Ejemplo2If
ResponderEliminarCORRECION DEL CODIGO:
import java.util.*;
public class Saludo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int hora;
System.out.println("introduce la hora es un valor entero:");
hora =sc.nextInt();
if(hora >=0 && hora<=11){
System.out.println("buenos diaas");
}else if(hora >=12 && hora <= 21) {
System.out.println("buenas tardes");
}else if (hora >=22 && hora < 24) {
System.out.println("BUENAS LAS TENGAS LAS NOCHES");
}}}
holaa disculpa sabe algún código útil para hacer un programa en java que evalúe lo siguiente:
Eliminarque todos los paréntesis se cierren en una expresion matematica. utilizando pila para sacar los parentesis abiertos y compararlos con los cerrados que hay en el string y utilizar una cola para presentar las expresiones correctamente escritas!! muchas gracias..!! espero su respuesta..!!
2+(2+3) esta esta bien
2+(7-1] esta esta mal
2+{1+[3*2-5+2) ] } esta esta bien...
solo son ejemplos.. agradeceria tu ayuda.. ojala para hoy antes de media noche!! mi correo
supwendy13@hotmail.com
alguien me puede ayudar con un programa que muestre los números multiplos de 3 del 1 al 100
ResponderEliminarFor(int i=0 ; i<100 ; i++)
Eliminarif (i%3==0);
return i;
MUCHAS GRACIAS
ResponderEliminarMe puedes ayudar con estos programas: calcular la matricula de estudiantes
ResponderEliminarLos datos de entrada son estudiante, cedula, ano(año), costo de laboratorio, bienestar estudiantil, cafeteria, carnet, seguro de vida
ResponderEliminarImprima el nombre del estudiante, cedula y costo de matricula
Calcular el total de matricula pagada
Prepare un programa que calcule la suma de los números pares comprendido entre 10 y 40
ResponderEliminarme pueden ayudar con esto
ResponderEliminarmuestren un programa que sume dos matrices ingresando los numeros desde el teclado considerando que la dimension de las matrices es 2 por 2
¿Hola me puedes decir qué esta mal en este programa?
ResponderEliminarLe hace falta el método principal, ¿serias tan amable de ayudarme a crearlo?
//aplicacion que imprime el numero de carnet, el nombre, la carrera, y el acumulado de tres parciales de un estudiante
public class Estudiante{
String NCarnet, Nombre, Carrera;
int P1, P2, P3, Acum;
public Estudiante(){}
public Estudiante(String NCarnet,String Nombre,String Carrera,int P1,int P2,int P3,int Acum)
{
this.NCarnet=NCarnet;
this.Nombre=Nombre;
this.Carrera=Carrera;
this.P1=P1;
this.P2=P2;
this.P3=P3;
}
public void setNCarnet(String NCarnet){this.NCarnet=NCarnet;}
public String getNCarnet(){return NCarnet;}
public void setNombre(String Nombre){this.Nombre=Nombre;}
public String getNombre(){return Nombre;}
public void setCarrera(String Carrera){this.Carrera=Carrera;}
public String getCarrera(){return Carrera;}
public void setP1(int P1){this.P1=P1;}
public int getP1(int P1){return P1;}
public void setP2(int P2){this.P2=P2;}
public int getP2(int P2){this.P2=P2;}
public void setP3(int P3){this.P3;}
public int getP3(int P3){this.P3=P3;}
public void imprimir(){
System.out.println("Numero de carnet \n" +getNCarnet());
System.out.println("Nombre \n" +getNombre());
System.out.println("Carrera \n" +getCarrera());
}
}
Prepare un programa que calcule la suma de los números pares comprendido entre 10 y 40
ResponderEliminarpublic class DSumaImpares {
Eliminarpublic static void main(String[] args) {
int s=10;
for(int i=12;i<=40;i+=2){
System.out.print(s+" + "+i+" = ");
s=s+i;
System.out.print(s+" \n");
}
}
}
Prepare un programa que calcule la suma de los números pares comprendido entre 10 y 40
ResponderEliminarPor favor :(
import java.util.Scanner;
Eliminarpublic class suma {
/**
* @param args
*/
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
int num = 10,suma = 0;
for ( int i = 10; i <= 40; i++) {
if ( i % 2 == 0 ) {
suma += num;
System.out.println(i);
}
}
System.out.println(" la suma es: " + suma);
}
}
me puedes ayudar en un programa que pida por teclado una cadena de caracteres en segida pida un caracter de la a-z y en seguida pida otro caracter diferente y el q el programa imprima la cadena de caracteres pero remplazara el primer caracter por el segundo...
ResponderEliminarejemplo:
cadena de caracteres: hola amigo como estas
prime caracter introducido: a
segundo caracter introducido (el que sera remplazado): o
imprimira en pantalla hala amiga cama estas (remplasara las letras "o "por las "a")
porfavor responde y ayudame pliss :)
7. Construya un programa que guarde la siguiente información de los registros de llamada: Tipo de Plan (A o B), tipo de llamada (local, celular A, celular B y celular C), horario de llamada (mañana-tarde, noche, madrugada), minutos de llamada, costo por minuto, costo por llamada (calculado de la multiplicación de minutos de llamada por costo por minuto).
ResponderEliminarLas tarifas de las llamadas se dan de la siguiente manera:
TIPO PLAN TIPO DE LLAMADA (Costo x minuto) Local Celular A Celular B Celular C
Tipo A
0.20
0.40
0.45
0.70
Tipo B
0.15
0.30
0.35
0.60
Por otro lado el costo por minuto se reducirá en un 35% para llamadas locales y 25% para celulares si es que se da en el horario de la madrugada
Su programa deberá mostrar los siguientes datos:
a. Número de llamadas con más de 5 minutos y menos de 20 en horario de la noche.
b. Costos totales de llamada según Tipo de Plan.
c. Total de minutos realizados en el turno de la noche y madrugada a teléfonos locales con costo de llamada superiores a 10 soles.
d. En que horario y tipo de Plan se realizo la llamada con mayor costo de llamada
e. Total de llamadas en minutos realizadas al celular C en horario de mañana-tarde.
Hola me gustaria saber porque al ejecutar este codigo sale que N1 y N2 son distintos.
ResponderEliminarpublic static void main(String[] args) {
NumeroEntero n1 = new NumeroEntero(10);
NumeroEntero n2 = new NumeroEntero(10);
if (n1 == n2){
System.out.println("N1 y N2 son iguales");
}
if (n1 != n2){
System.out.println("N1 y N2 son distintos");
}
}
holaaa me puedes ayudar con esto: calcular el mayor de los dos numeros ingresado por teclado graciass
ResponderEliminarhola alguien me podria ayudar a solicitar nombre de trabajador y salario porfavor?
ResponderEliminarhola me gustaria que por favor me ayudara con este ejercicio...
ResponderEliminarEn un supermercado han realizado una campaña bastante original. En la caja, una vez calculado el importe de la compra, se le solicita al cliente que extraiga de una bolsa una de las 10 etiquetas que hay dentro. Las esquelas están numeradas del 1 al 10 y tienen premio según la siguiente tabla:
- Esquelas 1,2,3 se le descuenta al cliente un 2% de la compra.
- Esquela 7 Se le descuenta un 10%
- Esquelas 9 y 10 Se le descuenta un 4%
- Esquelas 8 Se le descuenta 5%
- Las restantes no tienen premio
hola alguien me podría ayudar para hacer un programa que lea un número entero positivo y que efectúe los siguientes cálculos: Si el número termina en 0, 3, 7 u ocho, cambie su valor al doble; si termina en 1 ó 9, cambie su valor a la décima parte; de otra manera mantiene su valor.
ResponderEliminarHola me podrian ayudar con esto POR FAVOR: Escribir un programa que lea una lista de “n” alumnos guarde 3 calificaciones parciales por cada alumno (pedir desde teclado) así como su promedio (calcular). Al final muestre el arreglo completo ordenado en base al promedio de mayor a menor.
ResponderEliminartengo un programa pero me pueden decir cual es mi error necesito saber
ResponderEliminarpublic class burbuja {
public static void main(String[] args){
int i=0,j=0,temp=0;
int numeros[]=(10,4,2,0,3,6,8,11);
for(i=0,i<6-1,i++){
for(j=1+1;j<6;j++){
if(numeros[i]>numeros[j]){
temp=numeros(i);
numeros(i)= numeros(j);
numeros(j)=temp;
}
}
}
for(i=0,1<6,i++){
System.out.println("los numeros ordenados son + numeros[1]");
Muchísimas gracias me fue de mucha ayuda los programas, gracias, gracias, gracias.
ResponderEliminarhola me podrias ayudar con este siguiente programa ?
ResponderEliminarElabora un programa que solicite por teclado 2 números enteros (a los que puedes nombrar x1 y x2) de modo que la salida del programa te dé cada número introducido multiplicado por 5. Por ejemplo, si introduces como primer número el 7 y después como segundo número el 9 los resultados deben ser, respectivamente, 5 x 7 = 35 y
5 x 9 = 45
int X1,X2;
Eliminarleer x1,x2;
imprimir("5"+"X"+"X1"+"="+(X1*5));
imprimir("5"+"X"+"X2"+"="+(X2*5));
Hola me puedes ayudar?
ResponderEliminarUn estacionamiento cobra una cuota mínima de $2.00 por estacionarse hasta tres horas. El estacionamiento
cobra $0.50 adicionales por cada hora o fracción que se pase de tres horas. El cargo máximo para cualquier periodo dado de 24 horas es de $10.00. Suponga que ningún automóvil se estaciona durante más de 24 horas a la vez. Escriba una aplicación que calcule y muestre los cargos por estacionamiento para cada cliente que se haya estacionado ayer. Debe introducir las horas de estacionamiento para cada cliente. El programa debe mostrar el cargo para el cliente actual y debe calcular y mostrar el total corriente de los recibos de ayer. El programa debe utilizar el método calcularCargos para determinar el cargo para cada cliente.
Hola, me pueden ayudar calculando el MCM y MCD de dos número?
ResponderEliminarGRACIAS
hola, me podrian ayudar apenas estoy iniciando y me dejaron de tarea crear un programa donde yo de la hora y me diga si es (noche,madrugada,tarde,mañana,medio dia) la verdad no se por donde empezar..... agradeceria su ayuda.
ResponderEliminarbuen dia me puedes ayudar con un ejercicio donde me tieneque dar la suma de los codigos ascii de una palabra gracias
ResponderEliminarola necesito su ayuda.. kiero hacer un codigo k al ejecutarse pida al usuariolos renglones para imprmir un rectangulo de **** , el numerode columnas esta predefinido por 6 solo cambia las filas k intridusca el usuario.
ResponderEliminarse puede hacer con un while mientras que el contador sea menor k el num, de filas que imprima lalinea "******"o *_____*, si la fila es la primera o la ultima imprimir ******** si no es esa fila que imprima *_____* GRACIAS
hola soy principiante quisiera saber si me pueden ayudar con esto escriba una aplicacion que lea 2 enteros, determine si el primero es un
ResponderEliminarmultiplo del segundo e imprima el resultado.
Excelentes ejercicios muchas gracias!
ResponderEliminartengo una duda, de un arreglo, quiero determinar si su numero es primo o no... hice este algoritmo pero no me funciona.
Saludos
public static void main(String[] args) {
int [] miArreglo = {6, 4, 1, 10, 2, 9, 7, 3, 5, 8};
int d=0;
int n=1;
for(int i=0;i<miArreglo.length; i++){
System.out.println("elemento en la posición "+i+" es "+miArreglo[i]);
}
while(n<=miArreglo[i])
{
if (miArreglo[i]%n==0)
{
d=d+1;
}
n=n+1;
}
if(d==2)
{
System.out.println("El número "+miArreglo[i]+" es primo");
}
else
{
System.out.println("El número "+miArreglo[i]+" no es primo");
}
Gracias Cinthia por el comentario. Para que te funcione este programa, el for debes cerrarlo al final de las instrucciones y no justo después de mostrar el mensaje. Además antes del while asignar a n el valor 1 y d el valor 0 para que cada vez que compruebes un número del arreglo estas variables comiencen con esos valores iniciales
EliminarDISEÑE UN ALGORITMO DE N CIFRAS QUE ME DEVUELVA EL MENOR DE SUS CIFRAS EJEMPLO : 89735 = 35789 SOY NUEVO EN ESTO POR FA AYUDA :D
ResponderEliminarExcelente Material de gran ayuda felicitaciones por tomarse el tiempo en desarrollar un blog que explica de una manera sencilla
ResponderEliminarHola pueden ayudarme con un programa en java que me imprima: si es + imprima ( - +) y si es - imprima (+) y asi susesivamente como una especie de árbol.
ResponderEliminar+
- +
+ - +
- + + - +
+ - + - + + - +
hola tengo un problema pueden ayudar.
ResponderEliminartengo dos carreras: contaduría,sistemas.
en sistemas de 1-5 semestre el carnet me cuesta 2500 y de 6-10 me cuesta 3800
en contaduría de 1-5 semestre el carnet me cuesta 3500 y de 6-10 me cuesta 3000
les agradezco me colaboren gracias
Pregunta 01
ResponderEliminarImplemente un algoritmo que busque el primer número que termine en tres
Pregunta 02
Implemente un algoritmo que reemplace el segundo número par, por el segundo impar de los números
Hola, he comenzado a programar en Java y me encuentro con que un código que he creado no funciona como debería. ¿Me podrán ayudar? Se los agradezco
ResponderEliminarDiseñar un algoritmo para que informe al usuario si ha escrito la palabra "yo" correctamente. Se acepta "yo", "YO" o "Yo"
El código es este, el problema es que siempre entra al "else", o sea, siempre da "incorrecto":
import java.util.Scanner;
public class Ejercicio4 {
public static void main( String[] args ){
Scanner ingreso = new Scanner( System.in );
System.out.print("Escriba la palabra YO: ");
String palabra = ingreso.next();
if (palabra == "yo" || palabra == "YO" || palabra == "Yo" )
System.out.println("Correcto");
else
System.out.println("Incorrecto");
}
}
Los String se deben comparar con el método equals y no con ==
Eliminarif(palabra.equals("yo")).......else .......
Saludos ;)
mil gracias!! era por eso!
Eliminaraquí me confundí un poco
ResponderEliminarpara que se utiliza Scanner sc = new Scanner(System.in); ???
que funcion tiene o que es es una clase o que show ya me perdi
ya se que la respuesta llega un poco tarde pero por si aún tienes la duda o para quien la tenga, la clase Scanner se utiliza para leer datos por teclado. En esa instrucción que dices se crea un objeto Scanner llamado sc que será el que utilicemos para leer los datos desde el teclado (System.in). Por ejemplo para leer el número de filas:
EliminarSystem.out.print("Introduce número de filas: ");
filas = sc.nextInt();
En esta entrada se explica el funcionamiento de la clase Scanner:
http://puntocomnoesunlenguaje.blogspot.com.es/2012/08/java-scanner.html
Saludos
ayuda tengo que hacer un programa que capture 10 ventas diga sus suma y su promedio ademas diga cuantas ventas ahi mayores a 2000 y menores a 5000 y cuantas ahi mayores a 5999 y menores a 8000 y cuantas son mayores a 7999 e adelantado algo pero no me dice cuantas ventas estan estre esos valores aqui les dejo el adelanto les agradesco su ayuda
ResponderEliminarpublic static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int x,suma,valor,valor1=0,valor2=0,valor3=0,promedio;
x=1;
suma=0;
while (x<=10) {
System.out.println("Ingrese un valor:");
valor=teclado.nextInt();
suma=suma+valor;
x=x+1;
}
int contador=0;
while(valor1>2000&&valor1<5000){
System.out.println("Ingrese un valor:");
valor1=teclado.nextInt();
suma=suma+valor1;
contador = contador +1;
}
int contador2=0;
while(valor2>5999&&valor2<8000){
System.out.println("Ingrese un valor:");
valor2=teclado.nextInt();
suma=suma+valor2;
contador2 = contador2 +1;
}
int contador3=0;
while(valor3>7999){
System.out.println("Ingrese un valor:");
valor3=teclado.nextInt();
suma=suma+valor3;
contador3 = contador3 +1;
}
suma=suma+valor1+valor2+valor3;
promedio=suma/10;
System.out.println("La suma de los 10 valores es:");
System.out.println(suma);
System.out.println("El promedio es:\n");
System.out.println(promedio);
System.out.println("se han insertado"+" "+contador+" "+"ventas >2000 y < a 5000\n ");
System.out.println("se han insertado"+" "+ contador2+" "+"ventas >5999 y < a 8000\n ");
System.out.println("se han insertado"+" "+ contador3+" "+"ventas >7999\n ");
}
}
El Código seria el siguiente:
Eliminarpublic static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
int x, suma, valor, valor1 = 0, valor2 = 0, valor3 = 0, promedio;
x = 1;
suma = 0;
int contador = 0;
int contador1 = 0;
int contador2 = 0;
while (x <= 10) {
System.out.println("Ingrese un valor:");
valor = teclado.nextInt();
suma = suma + valor;
if (valor > 2000 && valor < 5000) {
contador = contador + 1;
} else if (valor > 5999 && valor < 8000) {
contador1 = contador1 + 1;
} else if (valor > 8000) {
contador2 = contador2 + 1;
}
x = x + 1;
}
suma = suma + valor1 + valor2 + valor3;
promedio = suma / 10;
System.out.println("La suma de los 10 valores es: " + (suma) + "\n ");
System.out.println("El promedio es:" + (promedio) + "\n ");
System.out.println("se han insertado" + " " + contador + " " + "ventas >2000 y < a 5000\n ");
System.out.println("se han insertado" + " " + contador1 + " " + "ventas >5999 y < a 8000\n ");
System.out.println("se han insertado" + " " + contador2 + " " + "ventas >7999\n ");
Adaptarlo segun sea necesario.
realiza un programa donde m estudiante a inscrito n asignaturas y para cada una de sus asignaturas ha sacado 4 notas. Determine la nota promedio de cada asignatura y la nota promedio de cada semestre
ResponderEliminarrealiza un programa donde m estudiante a inscrito n asignaturas y para cada una de sus asignaturas ha sacado 4 notas. Determine la nota promedio de cada asignatura y la nota promedio de cada semestre
ResponderEliminarAyuda por favor!!
ResponderEliminarDos palabras que son comparadas con un char. si el char se encuentra en la primera o en la segunda y sino que en ninguna, tambien se debe indicar la posicion del char si esta se encuentra en alguna.
quiero 3 programas que tenga if anidada me urgen
ResponderEliminarhola me podrian ayudar con esto
ResponderEliminarHacer un programa en java que pida una cantidad, para que evalúen y te indiquen si es positiva, 0 o negativa.
Descripción
ResponderEliminarDados dos enteros M, N, imprime todos los números enteros que comprenden el rango desde M hasta N.
Por ejemplo, suponga que la entrada es M=5 y N=10, los números en el rango son:
5 6 7 8 9 10
Esto es de gran ayuda, gracias
ResponderEliminarGracias a ti por el comentario Julia. Me alegro de que te haya sido útil.
Eliminarcomo puedo pedir 2 numeros y que me diga cual es mayor y menor con ciclo for y que el programa termine cuando son 2 numeros iduales
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarMe encanta, super útil..!! Gracias..!!
ResponderEliminarme pueden ayudar a realizar un código que desde teclado lea el mes y el año y nos muestre como resultado la cantidad de días de dicho mes.
ResponderEliminarDesarrollar un programa que solicite un número y lo imprima mientras sea diferente de 5
ResponderEliminarayudaa!!!
ayuda! apenas voy comenzando la carrera y mi grupo hizo enojar al maestro y nos dejo programas con ciclos que aun no vemos :( como puedo hacer estos 2 programas pero con do while? urge!
ResponderEliminarimport java.util.Scanner;
class hola
{
public static void main(String[]args)
{
Scanner sc = new Scanner (System.in);
System.out.println("cuantos numeros quieres introducir");
int num= sc.nextInt();
if(num>0){
int[] x= new int[num];
int z=0;
while(z<num){
System.out.println("coloca el numero deseado ");
int w=sc.nextInt();
x[z]=w;
z=z+1;
}
z=0;
while(z<num){
System.out.println("posicion[" + (z+1) + "] = " + x[z]);
z++;}
}
import java.util.Scanner;
class tdm
{
public static void main(String[]args)
{
Scanner sc = new Scanner(System.in);
int m=0, p=0, a=0;6
System.out.println("Introduce la tabla deceada");
m = sc.nextInt();
while(p<=100){
System.out.println(m+" x "+p+"="+a);
p=p+1;
a=m*p;
}
System.out.println("Fin");
}
}
1. Realice un programa que permita visualizar en pantalla una figura similar a la siguiente
ResponderEliminara. 1
b. 12
c. 123
d. 1234
e. 12345
f. 123456
g. 12345678
me podrias ayudar con ese por favor?
1. Realice un programa que permita visualizar en pantalla una figura similar a la siguiente
ResponderEliminara. 1
b. 12
c. 123
d. 1234
e. 12345
f. 123456
g. 12345678
me podrias ayudar con ese por favor?
hola me podrian ayudar con este programa
ResponderEliminar1) Desarrolle un programa que crea una lista enlazada doblemente ligada insertando al inicio de la misma un nodo.
Excelente !
ResponderEliminarExcelente! informacion me ha sido me mucha ayuda.
ResponderEliminarGracias, me alegro de que os haya sido útil. Saludos
ResponderEliminarhola me puedes ayudar con esto
ResponderEliminarun arreglo unidimensional de 12 numeros entero introducidos por teclado y que imprima aquellos que son
multiplos de 5
Me podrias ayudar con este ejercicio.
ResponderEliminarSe repartirá la herencia entre los hijos de un señor como sigue: Si la cantidad de hijos es menor que 4; se repartirá exactamente entre el número de hijos; si son 4 a 6 hijos, la mitad le tocara al hermano mayor y el resto se dividirá entre los demás hermanos y si es mas 6 de hermanos la herencia se reparte la tercera parte al hermano menor y el resto entre los hermanos que quedan en forma equitativa. Se debe ingresar el monto de la herencia y el número de hijos y se debe mostrar lo que corresponde a cada hijo.
lo llegaste hacer ese programa??
EliminarCOMO INGRESO UN MENSAJE EN UN jTextArea1 Y EN EL jTextArea2 ME VISUALICE EL MISMO MENSAJE EN GRUPOS DE 5
ResponderEliminaralguien me podria ayudar con este programa que Estime el tiempo entre llegadas de clientes a una peluquería con λ=4 clientes por hora suponiendo que el primer cliente llega en el tiempo “0”. Use los siguientes tres números aleatorios
ResponderEliminar0,813360
0,154703
0,767742
xfa ayudaaaa. necesito realizar un ciclo iteractivo en lenguaje c, que introduzca una letra por teclado y hasta q no se escriba la letra S seguir leyendo una letra cada vez. cuando se escriba la letra S finaliza el programa
EliminarAlguien podría decirme como es la Estructura in the sae
ResponderEliminarhola, necesito ayuda en el desarrollo de este programa
ResponderEliminarRealizar un programa que me permita ingresar 2 números enteros por
teclado y me calcule el cuadrado y cubo de dichos números.
Hola como estan me pordian ayudar por favor
ResponderEliminarEscriba un algoritmo que reciba como entrada N números introducidos desde el
teclado, y nos indique si un número X, introducido también desde el teclado, se
repitió, y si es así, cuántas veces se repitió
Hola nesecito hacer Diseñar un programa en Java que muestre por pantalla la siguiente figura:
ResponderEliminar*
***
*****
*******
Hola Necesito Un programa donde el usuario teclee el nombre de un mes y el programa arroje el numero de mes y dias
ResponderEliminarHola,
ResponderEliminarcomo pido datos desde la consola?
hola informaticos... espero esten bien, les traigo dos problemitas para ver quien me ayuda me lo enviaron de la uni por fis. es para mañana
ResponderEliminarejercicio1) Usando estructura de control de ciclo, diseñe una app en Java que
a) Sume los primeros 100 numero impares.
b) Sume los primeros 100 numeros pares.
c) Sume los primeros 10 numeros primos.
ejercicio 2) Tomando como base el ejercicio del condicional simple (par/impar). Diseñe el mismo ejercicio usando condicional compuesto.
ejercicio 3) Diseñe una app en java que muestre en console los primeros 10 terminos de la sucesion Fibonacci de semilla 0,1.
helpme please es en java uso netbeans 8.1
**SON PARA MAÑANA**
mi profe es bien qlo
EliminarExcelentes Ejemplos de los ciclos ! sigue asi :3
ResponderEliminarSe repartirá la herencia entre los hijos de un señor como sigue: Si la cantidad de
ResponderEliminarhijos es menor que 4; se repartirá exactamente entre el número de hijos; si son
4 a 6 hijos, la mitad le tocará al hermano mayor y el resto se dividirá entre los
demás hermanos y si es más 6 de hermanos la herencia se reparte la tercera
parte al hermano menor y el resto entre los hermanos que quedan en forma
equitativa. Se debe ingresar el monto de la herencia y el número de hijos y se
debe mostrar lo que corresponde a cada hijo. Hacer uso de métodos estáticos
lo llegaste a realizar ese programa?
Eliminar(char)System.in.read(); este codigo para que sirve?
ResponderEliminarMe di cuenta de que hay comentarios del 2013, y me puse a pensar que en ese año yo tenia 12 años, estaba entrando en la secundaria, pasados ya 6 años , sentí raro seguir leyendo los comentarios por que me puse a pensar en todo lo que paso en la vida de las personas que hacían los comentarios y que posiblemente algunos o varios ya estén muertos, lo que quiere decir que estoy leyendo lo que alguna vez escribió alguien antes de morir, y que si respondo sus comentario lo leerán desde el cielo UnU
ResponderEliminarEso esta bien creisi ¿no? jajaja, ya me dio miedo, bye.
ResponderEliminarMuy bueno estoy siguiendo el curso buenos ejemplos
ResponderEliminarGracias por el comentario Isaac y gracias también por seguir el blog.
EliminarEjercicio 1 realiza un programa que muestre el triple de un número introducido por teclado.
EliminarEjercicio 2 realiza un programa que almacena un frase motivacional en una variable y lo muestre en Pantalla.
Muy buen Blog, se entiende muy bien con los ejemplos
ResponderEliminaralguien me puede ayudar en un parcial el martes *-^
ResponderEliminarPrograma que muestre una agencia de viajes con 5 lugares diferentes y cada uno debe contener costo de avion, costo de hospedaje, alimentos incluidos, basandose en una persona , determinar total por lugar por la cantidad de personas.
ResponderEliminarApenas lei tu contenido quede fascinada con la información, realmente muy entendible y completo, de lo mejor en blogs de programación te felicito muchas gracias.
ResponderEliminar