Guía de ejemplos (Cambios de estructuras) Universidad Técnica

Anuncio
Guía de ejemplos (Cambios de estructuras)
Universidad Técnica Federico Santa María
Ramo IWI-131, programación de computadores.
Profesor Juan Manuel Jerez
1. Caso cambio While – For
Para este caso el cambio de estructuras consiste en lo siguiente:
•
Primero debemos mirar un ejemplo de un ciclo While:
public class ejemplowhile3 {
public static void main(String[] args) {
StdOut.println("Ingrese un numero");
int b = StdIn.readInt();
long e = 1;
int i= 1;
while (i<=10){
e=e*b;
StdOut.println("El numero " + b + " elevado a la potencia " + i + " es: "
+ e);
i++;
}
}
}
Para realizar este cambio de estructuras fijémonos en los colores de los cuales e ha
pintado el código:
•
•
•
•
La declaración de la variable que esta en morado debería pasar a la declaración
del ciclo for.
La condición del ciclo while que esta en verde pasara a ser la condición del ciclo
for.
El incremento del ciclo while que esta en rojo pasara a ser el incremento del
ciclo for.
Las sentencias que están adentro del ciclo while deberán estar esta vez dentro
del ciclo for.
public class ejemplofor3 {
public static void main(String[] args) {
StdOut.println("Ingrese un numero");
int b = StdIn.readInt();
long e = 1;
for (int i= 1;i<=10;i++){
e=e*b;
StdOut.println("El numero " + b + " elevado a la potencia " + i +
" es: " + e);
}
}
}
2. Caso cambio ciclo for – While.
Nos daremos cuenta que este cambio de estructuras es exactamente al revés que el
anterior.
Miremos nuestro ciclo FOR.
public class ejemplofor3 {
public static void main(String[] args) {
StdOut.println("Ingrese un numero");
int b = StdIn.readInt();
long e = 1;
for (int i= 1;i<=10;i++){
e=e*b;
StdOut.println("El numero " + b + " elevado a la potencia " + i +
" es: " + e);
}
}
}
Y los pasos para convertir este ciclo for en un ciclo while serian los siguientes:
• La declaración de la variable que esta en morado debería declararse antes del
ciclo While.
• La condición del ciclo for que esta en verde pasara a ser la condición del ciclo
While.
• El incremento del ciclo for que esta en rojo pasara a estar dentro del ciclo while
pues este ciclo por su estructura alberga el incremento de la variable dentro del
ciclo.
• Las sentencias que están adentro del ciclo for deberán estar esta vez dentro del
ciclo while.
Miremos entonces como queda este cambio:
public class ejemplowhile3 {
public static void main(String[] args) {
StdOut.println("Ingrese un numero");
int b = StdIn.readInt();
long e = 1;
int i= 1;
while (i<=10){
e=e*b;
StdOut.println("El numero " + b + " elevado a la potencia " + i + " es: "
+ e);
i++;
}
}
}
3. Cambio if – CASE
Para el caso de cambios de estructuras entre If y Case se deben seguir los siguientes
pasos
•
•
•
•
Las condiciones que tenga el if deben ir en cada uno de los case que se
generaran después en el switch.(condiciones destacadas en amarrillo)
El caso default es el caso en el cual el IF no evalúa una condición para este caso
en particular el default esta destacado en verde (Else destacado en verde).
Para el caso de que un if tenga dos condiciones estas se deben separar en dos
casos de la estructura CASE.(caso destacado en azul).
IF
if(opcion == ‘F’){
StdOut.println(“File\n”)
}else{
if(opcion == ‘E’){
StdOut.println (“Edit\n”);
}else{
if((opcion ==’Q’) | | (opcion == ‘X’))
{
StdOut.println(“Quit”);
StdOut.println(“Exit”);
flag = false;
}
Else{
StdOut.println(“Desconocido\n”);
}
}
}
Al redistribuir en la estructura del case las partes destacadas en colores serian de la
siguiente manera (cada uno de los colores representa donde se fue la condición que
estaba destacando:
•
Case
switch(opcion)
{
case ‘F’:
StdOut.println(“File\n”);
break;
case ‘E’:
StdOut.println (“Edit\n”);
break;
case ‘Q’:
StdOut.println(“Quit”);
StdOut.println(“Exit”);
flag = false;
break;
case ‘X’:
StdOut.println(“Quit”);
StdOut.println(“Exit”);
flag = false;
break;
default:
StdOut.println(“Desconocido\n”);
}
4. Cambio Case – IF
Para el caso de conversión de Case a IF los pasos a seguir son los siguientes:
•
•
Primero todas los casos del case se deben transformar a condiciones dentro de
un IF, todos los casos para este caso están en color azul
El caso del default corresponderá a un else sin condición es decir serán las
sentencias que se ejecutan en el IF sin que se cumple ninguna condición,
destacado en color verde.
•
Case
switch(opcion)
{
case ‘F’:
StdOut.println(“File\n”);
break;
case ‘E’:
StdOut.println (“Edit\n”);
break;
case ‘Q’:
StdOut.println(“Quit”);
StdOut.println(“Exit”);
flag = false;
break;
case ‘X’:
StdOut.println(“Quit”);
StdOut.println(“Exit”);
flag = false;
break;
default:
StdOut.println(“Desconocido\n”);
}
Como se cambian las condiciones de un ciclo al otro se ve con los colores y la
descripción siguiente:
•
IF
if(opcion == ‘F’){
StdOut.println(“File\n”)
}else{
if(opcion == ‘E’){
StdOut.println (“Edit\n”);
}else{
if(opcion ==’Q’)
{
StdOut.println(“Quit”);
StdOut.println(“Exit”);
flag = false;
}else {
if(opcion ==’X’){
StdOut.println(“Quit”);
StdOut.println(“Exit”);
flag = false;
}Else{
StdOut.println(“Desconocido\n”);
}
}
}
}
5. Cambio while – do while
Para este cambio los pasos a seguir son los siguientes:
Nota: No debemos perder de vista que la única diferencia entre estos dos ciclos es que
el ciclo while siempre pregunta por la condición al contrario del do – while que la
primera vez que se ejecuta el ciclo no lo hace, es este comportamiento (preguntar la
primera vez de ejecución por la condición) lo que persigue hacer esta transformación.
•
•
Se debe mirar la condición del while esta condición en el cambio ira antes del do
– while en un if además de ser la condición del ciclo do – while.
Las sentencias de los ciclos son las mismas no cambian en nada.
Veamos un caso concreto:
• While
public class ejemplowhile1 {
public static void main(String[] args) {
StdOut.println("Ingrese un numero ");
int b = StdIn.readInt();
int i= 1;
while (b>0){
StdOut.println("llevo " + i + " ejecuciones");
i++;
b--;
}
}
}
Al cambiar este ciclo a do-while queda de la siguiente manera:
Nota: los colores representan como se cambiaron las partes del ciclo while a do-while
public class ejemplodowhile1 {
public static void main(String[] args) {
StdOut.println("Ingrese un numero ");
int b = StdIn.readInt();
int i= 1;
if (b>0){
do{
StdOut.println("llevo " + i + " ejecuciones");
i++;
b--;
}while (b>0);
}//if
}
}
6. Cambio do while – while
Para este cambio los pasos a seguir son los siguientes:
Nota: No debemos perder de vista que la única diferencia entre estos dos ciclos es que
el ciclo do-while ejecuta al menos una vez las sentencias que posee dentro del ciclo, y la
transformación de un do-while a while trata de reproducir este comportamiento.
•
•
Se debe mirar la condición del do-while esta condición en el cambio ira dentro
del ciclo while.
Las sentencias del ciclo se escribirán dos veces una antes del ciclo while y
también adentro de este ciclo.
Veamos un ejemplo concreto(loa condición esta en amarillo y las sentencias en azul):
public class ejemplodowhile2 {
public static void main(String[] args) {
int b;
do{
StdOut.println("Ingrese un numero ");
b = StdIn.readInt();
if (b>10){
StdOut.println("el numero es grande");
}else{
StdOut.println("el numero es pequeño");
}
b--;
}while (b>0);
}
}
Al hacer el cambio las sentencias (en azul) se escriben dos veces una antes del ciclo y
adentro del ciclo, y la condición del ciclo do while se escribe solo en la condición del
ciclo while.
public class ejemplowhile2 {
public static void main(String[] args) {
int b;
StdOut.println("Ingrese un numero ");
b = StdIn.readInt();
if (b>10){
StdOut.println("el numero es grande");
}else{
StdOut.println("el numero es pequeño");
}
b--;
while (b>0){
StdOut.println("Ingrese un numero ");
b = StdIn.readInt();
if (b>10){
StdOut.println("el numero es grande");
}else{
StdOut.println("el numero es pequeño");
}
b--;
}
}
}
Descargar