Unidad 4 Programación básica en Java

18
 

Transcript of Unidad 4 Programación básica en Java

Page 1: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 1/17

 

Page 2: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 2/17

fundamentos de programación(unidad 4) programación estructurada en Java 

Page 3: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 3/17

 

(3)

Para ver una copia completa de la licencia, acudir a ladirección htt p:/ / creat ivecommons.org/ licenses/ by-nc-sa/ 2.5/ es/ legalcode.es 

Page 4: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 4/17

Page 5: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 5/17

 

(5)

(4) programación

estructurada enJavaesquema de la unidad

(4.1) introducción. expresiones lógicas   ____________________________________ 6(4.2) if    _________________________________________________________________ 6

(4.2.1) sentencia condicional simple   ________________________________________________ 6(4.2.2) sentencia condicional compuesta   ___________________________________________ 7(4.2.3) anidación   _________________________________________________________________ 8

(4.3) switch   ____________________________________________________________ 9(4.4) while   _____________________________________________________________ 11(4.5) do while   __________________________________________________________ 14(4.6) for   _______________________________________________________________ 15(4.7) sentencias de ruptura de flujo   _____________________________________ 16

(4.7.1) sentencia break   ____________________________________________________________ 16(4.7.2) sentencia continue   _________________________________________________________ 17

 

Page 6: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 6/17

fundamentos de programación(unidad 4) programación estructurada en Java 

(6) 

(4.1) introducción. expresiones lógicas

Hasta ahora las inst rucciones que hemos visto, son inst rucciones que seejecutan secuencialmente; es decir, podemos saber lo que hace el programaleyendo las líneas de izquierda a derecha y de arriba abajo.

Las inst rucciones de cont rol de fl ujo permi ten alterar esta forma deejecución. A part ir de ahora habrá líneas en el código que se ejecutarán o nodependiendo de una condición.

Esa condición se const ruye util izando lo que se conoce como expresiónlógica. Una expresión lógica es cualquier t ipo de expresión Java que dé unresult ado booleano (verdadero o falso).

Las expresiones lógicas se const ruyen por medio de variables booleanas obien a t ravés de los operadores relacionales (==, >, <,…) y lógicos (&&,| | , !).

(4.2) if(4.2.1) sentencia condicional simple

Se trata de una sentencia que, t ras evaluar una expresión lógica, ej ecuta unaserie de inst rucciones en caso de que la expresión lógica sea verdadera. Si l aexpresión t iene un resultado falso, no se ej ecutará ninguna expresión. Susintaxis es:

if(expresión lógica) {instrucciones…

}

Las llaves se requieren sólo si va a haber varias inst rucciones. En otro caso sepuede crear el if sin llaves:

if(expresión lógica) sentencia;

Ej emplo:

if(nota>=5){

System .out.println("Aprobado");aprobados++;

}

La idea gráf ica del funcionamiento del código anterior sería:

Page 7: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 7/17

1er curso de administración de sistemas informáticosautor: Jorge Sánchez – www. j orgesanchez.net  

(7) 

Ilust ración 3-1, Diagrama de actividad de lainstrucción i f simple

(4.2.2) sentencia condicional compuesta

Es igual que la anterior, sólo que se añade un apartado else que contieneinst rucciones que se ejecutarán si la expresión evaluada por el i f es falsa.Sintaxis:

if(expresión lógica){

instrucciones….

}

e l se {instrucciones…

}

Como en el caso anterior, las llaves son necesarias sólo si se ej ecuta más deuna sentencia. Ej emplo de sentencia if-else:

if(nota>=5){

System .out.println("Aprobado");aprobados++;

}

e l se {

System .out.println("Suspenso");suspensos++;

}

[nota>=5] escribe "Aprobado"

incrementa nºaprobados

[nota<5]

Page 8: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 8/17

fundamentos de programación(unidad 4) programación estructurada en Java 

(8) 

Ilust ración 3-2, Diagrama de actividad de una instrucción i f  doble

(4.2.3) anidación

Dentro de una sentencia i f se puede colocar ot ra sentencia if. A esto se lellama anidación y permite crear programas donde se valoren expresionescomplejas. La nueva sentencia puede ir tanto en la parte i f  como en la part eelse .

Las anidaciones se util izan muchísimo al programar. Sólo hay que tener encuenta que siempre se debe cerrar primero el último i f  que se abrió. Es muyimportante también tabular el código correctamente para que las anidacionessean legibles.

El código podría ser:

if  (x==1) { i n s t rucc iones

…}else  { 

if (x==2) {i n s t rucc iones  

}else  { 

if (x==3) { i n s t r u c c i o n e s 

…}

}

}

[nota>=5]

escribe "Aprobado"

incrementa nºaprobados

escribe "Suspenso"

[nota<5]

decrementa nºaprobados

Page 9: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 9/17

1er curso de administración de sistemas informáticosautor: Jorge Sánchez – www. j orgesanchez.net  

(9) 

Una forma más legible de escribir ese mismo código sería:

if  (x==1)  { 

i n s t r u c c i o n e s…

}

else i f (x==2)  { 

i n s t r u c c i o n e s…

}

else i f (x==3)  { 

i n s t r u c c i o n e s

…}

dando lugar a la llamada instrucción if-else-if .

(4.3) switch

Se la llama estructura condicional compleja porque permite evaluar variosvalores a la vez. En realidad sirve como sust ituta de algunas expresiones detipo if-else-if . Sint axis:

s w i t ch (expresiónEntera) { c a s e valor1:  instrucciones del valor 1[b r e a k  ] 

[c a s e valor2:  instrucciones del valor 1[b r e a k  ]]  

[

.

.

.]  

[d e f a u l t : instrucciones que se ejecutan si la expresión no tomaninguno de los valores anteriores..]  

}

Esta inst rucción evalúa una expresión (que debe ser short , int , byte o char), ysegún el valor de la misma ejecuta inst rucciones. Cada case contiene un valorde la expresión; si efectivamente la expresión equivale a ese valor, seejecutan las instrucciones de ese case y de los siguientes.

Page 10: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 10/17

fundamentos de programación(unidad 4) programación estructurada en Java 

(10) 

La inst rucción break se utiliza para salir del switch. De tal modo que siqueremos que para un determinado valor se ejecuten las inst rucciones de unapartado case y sólo las de ese apartado, entonces habrá que finalizar ese

case con un break.El bloque default sirve para ej ecutar inst rucciones para los casos en los quela expresión no se ajuste a ningún case. 

Ej emplo 1:

s w i t ch (diasemana) { c a s e 1:

dia=”Lunes”;b r e a k ;  

c a s e 2:dia=”Martes”;

b r e a k ;  c a s e 3:

dia=”Miércoles”;b r e a k ;  

c a s e 4:dia=”Jueves”;b r e a k ;  

c a s e 5:dia=”Viernes”;b r e a k ;  

c a s e 6:

dia=”Sábado”;b r e a k ;  

c a s e 7:dia=”Domingo”;b r e a k ;  

d e f a u l t : dia=”?”;

Ej emplo 2:

s w i t ch (diasemana) { c a s e 1:c a s e 2:c a s e 3:c a s e 4:c a s e 5:

laborable=t r u e ; b r e a k ;  c a s e 6:c a s e 7: 

laborable=fa lse ;  } 

Page 11: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 11/17

1er curso de administración de sistemas informáticosautor: Jorge Sánchez – www. j orgesanchez.net  

(11) 

(4.4) while

La instrucción while  permit e crear bucles. Un bucle es un conjunto desentencias que se repit en mient ras se cumpla una determinada condición. Losbucles while agrupan inst rucciones las cuales se ej ecutan continuamentehasta que una condición que se evalúa sea falsa.

La condición se mira antes de entrar dentro del whil e y cada vez que setermina de ejecutar las inst rucciones del whil e

Sintaxis:

w h i le ( expresión lógica) { sentencias que se ejecutan si la condición es true

}

El programa se ej ecuta siguiendo estos pasos:

(1)  Se evalúa la expresión lógica

(2)  Si la expresión es verdadera ejecuta las sentencias, sino el programaabandona la sentencia while 

(3)  Tras ej ecutar las sentencias, volvemos al paso 1

Ej emplo (escribir números del 1 al 100):

in t i=1;w hi le (i<=100){

System .out.println(i);i++;

}

Ilustración 3-3, Diagrama UML de actividad delbucle while

escribe i[ i<=100 ]

[i>100]

Page 12: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 12/17

fundamentos de programación(unidad 4) programación estructurada en Java 

(12) 

bucles con contador

Se llaman así a los bucles que se repiten una serie determinada de veces.Dichos bucles están controlados por un contador (o incluso más de uno). El

contador es una variable que va variando su valor (de uno en uno, de dos endos,…o como queramos) en cada vuelta del bucle. Cuando el contador alcanzaun límite determinado, entonces el bucle termina.

En todos los bucles de contador necesitamos saber:

(1)  Lo que vale la variable contadora al principio. Antes de ent rar en elbucle

(2)  Lo que varía (lo que se incrementa o decrementa) el contador en cadavuelta del bucle.

(3)  Las acciones a realizar en cada vuelta del bucle

(4)  El valor final del contador. En cuanto se rebase el bucle termina. Dichovalor se pone como condición del bucle, pero a la inversa; es decir, lacondición mide el valor que t iene que tener el contador para que elbucle se repit a y no para que termine.

Ej emplo:

i=10; / *V a lor in icia l d e l co n t a d o r , em p iez a v a lien d o 10

( p o r s u p u e s t o i d e b e r í a e s t a r d e c la r a d a c o m o e n t e r a , i n t ) */  

w hi le (i<=200){  / * co n d ició n d e l bu cle , m ie n t r a s i s ea m en or d e2 0 0 , e l b u c l e se r e p e t i r á , cu a n d o i r e b a s e e s t e

va lor , e l bu c le t e rm ina */  

printf(“%d\n”,i); / *accio n es q u e o cu r r en en ca d a v u e lt a d e l bu cle

e n e s t e c a s o s i m p l e m e n t e e s c r ib e e l v a l or  

de l con ta dor */  

i+=10; / * V a r ia ció n d e l co n t a d or , e n e s te ca s o cu en t a d e 10 en 10 */  

} / * A l f in a l e l bu cle escr ib e:

10

2 03 0

 y a s í h a s t a 2 0 0

*/ 

Page 13: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 13/17

1er curso de administración de sistemas informáticosautor: Jorge Sánchez – www. j orgesanchez.net  

(13) 

Bucles de centinela

Es el segundo tipo de bucle básico. Una condición lógica llamada centinela,que puede ser desde una simple variable booleana hasta una expresión lógica

más complej a, sirve para decidi r si el bucle se repit e o no. De modo quecuando la condición lógica se incumpla, el bucle termina.

Esa expresión lógica a cumpl ir es lo que se conoce como centinela ynormalmente la suele realizar una variable booleana.

Ej emplo:

b o o l e a n salir=fa lse ; / * En es t e ca s o e l cen t in e la es u n a v a r ia b le

b o o l e a n a q u e i n i ci a lm e n t e v a l e f a l so */  

in t n; w hi l e (salir==fa lse){ / * Con dic ión de r epe t ic ión : qu e sa l i r s iga s iend o

 fa lso . Es e es e l c en t in e la .

T a m b i én s e p o d í a h a b e r e s cr i t o si m p le m e n t e :w h i le ( !sa l i r )

*/ 

n=(in t )Math.floor(Math.random()*500+1; / / L o q u e s e r ep it e e n e l System.out.println(i); / / b u c le : c a lc u la r u n n ú m e r o

a le tor io d e 1 a 50 0 y escr ib ir lo */  

salir=(i%7==0);  / * El cen t in e la v a le v er d a d er o s i e l n ú m er o es

m ú l t ip lo d e 7  

*/ 

}

Comparando los bucles de centinela con los de contador, podemos señalarestos puntos:

♦  Los bucles de contador se repiten un número concreto de veces, losbucles de cent inela no

♦  Un bucle de contador podemos considerar que es seguro que f inalice,el de centinela puede no finalizar si el centinela jamás varía su valor(aunque, si está bien programado, alguna vez lo alcanzará)

♦  Un bucle de contador está relacionado con la programación dealgoritmos basados en series.

Un bucle podría ser incluso mixt o: de cent inela y de contador. Por ej emploimaginar un programa que escriba números de uno a 500 y se repita hasta quellegue un múltiplo de 7, pero que como mucho se repite cinco veces.

Page 14: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 14/17

fundamentos de programación(unidad 4) programación estructurada en Java 

(14) 

Sería:

b o o l e a n salir =  fa lse ;   / / cen t in ela

in t n;in t i= 1;  / / con t a d o r 

w hi le  (salir = =  fa lse  && i< = 5)  { n =  ( in t )  M a t h .floor(M a t h .random( )  * 500 +  1) ;  System .out .println(n) ;  i+ + ;  salir =  ( i % 7 = =  0) ;  

}

(4.5) do while

La única diferencia respecto a la anterior está en que la expresión lógica seevalúa después de haber ej ecutado las sentencias. Es decir el bucle al menosse ejecut a una vez. Es decir l os pasos son:

(1)  Ej ecutar sentencias

(2)  Evaluar expresión lógica

(3)  Si la expresión es verdadera volver al paso 1, sino continuar fuera delwhile

Sintaxis:

d o {

instrucciones} wh i le ( expresión lógica)

Ej emplo (contar de uno a 1000):

in t i= 0; d o  { 

i+ + ;  

System .out 

.println( i) ;  } w hi le  ( i< 1000) ;

Page 15: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 15/17

1er curso de administración de sistemas informáticosautor: Jorge Sánchez – www. j orgesanchez.net  

(15) 

Ilust ración 3-4 , Diagrama deactividad del bucle do..while

Se ut il iza cuando sabemos al menos que las sentencias del bucle se van arepetir una vez (en un bucle while puede que incluso no se ejecuten lassentencias que hay dentro del bucle si la condición fuera falsa, ya desde uninicio).

De hecho cualquier sentencia do..while se puede convert ir en while. Elejemplo anterior se puede escribir usando la inst rucción while, así:

in t i= 0; i+ + ;  System .out .println( i) ;  w hi le  ( i< 1000)  { 

i+ + ;  System .out .println( i) ;  

(4.6) for

Es un bucle más complej o especialmente pensado para rel lenar arrays o paraejecutar inst rucciones controladas por un contador. Una vez más se ejecutanuna serie de inst rucciones en el caso de que se cumpla una determinada

condición. Sintaxis:

f o r ( inicialización;condición;incremento){

sentencias}

Las sentencias se ejecutan mient ras la condición sea verdadera. Además antesde entrar en el bucle se ejecuta la instrucción de inicialización y en cadavuelt a se ejecuta el incremento. Es decir el funcionamiento es:

(1)  Se ejecuta la inst rucción de inicialización

Page 16: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 16/17

fundamentos de programación(unidad 4) programación estructurada en Java 

(16) 

(2)  Se comprueba la condición

(3)  Si la condición es cierta, entonces se ejecutan las sentencias. Si lacondición es falsa, abandonamos el bloque f or  

(4)  Tras ejecutar las sentencias, se ejecuta la inst rucción de incremento yse vuelve al paso 2

Ej emplo (contar números del 1 al 1000):

f o r ( i n t  i=1;i<=1000;i++){ System .out.println(i);

}

La ventaja que tiene es que el código se reduce. La desventaja es que el

código es menos comprensibl e. El bucle anterior es equivalente al siguient ebucle while:

in t i=1; / *sen t en cia d e in icia liza ción */  

w hi le ( i<=1000) { / *co n d ició n */ 

System .out.println(i);i+ + ;   / *in cr em en t o */ 

}

Como se ha podido observar, es posible declarar la variable contadora dentrodel propio bucle for. De hecho es la forma habitual de declarar un contador.

De esta manera se crea una variable que muere en cuanto el bucle acaba.

(4.7) sentencias de ruptura de flujo

No es aconsejable su uso ya que son inst rucciones que rompen el paradigma dela programación est ructurada. Cualquier programa que las use ya no esest ructurado. Se comentan aquí porque puede ser út il conocerlas,especialmente para interpretar código de terceros.

(4.7.1) sentencia break

Se t rata de una sentencia que hace que el flujo del programa abandone elbloque en el que se encuentra.

f o r ( i n t  i=1;i<=1000;i++){ System .out.println(i);if( i==300) b r e a k  ;

}

En el l istado anterior el contador no l lega a 1000, en cuanto ll ega a 300 saledel f or 

Page 17: Unidad 4 Programación básica en Java

5/16/2018 Unidad 4 Programaci n b sica en Java - slidepdf.com

http://slidepdf.com/reader/full/unidad-4-programacion-basica-en-java 17/17

1er curso de administración de sistemas informáticosautor: Jorge Sánchez – www. j orgesanchez.net  

(17) 

(4.7.2)  sentencia continue 

Es parecida a l a anterior, sólo que en este caso en lugar de abandonar el

bucle, lo que ocurre es que no se ejecutan el resto de sentencias del bucle yse vuelve a la condición del mismo:

f o r ( i n t  i=1;i<=1000;i++){ if( i%3==0) c o n t i n u e ; 

Sys tem .out.println(i);}

En ese listado aparecen los números del 1 al 1000, menos los múlt iplos de 3(en los múlt iplos de 3 se ejecuta la inst rucción cont inue que salt a el resto deinst rucciones del bucle y vuelve a la siguiente it eración.

El uso de esta sentencia genera malos hábit os, siempre es mej or resolverlos problemas sin usar cont inue. El ejemplo anterior sin usar esta inst rucciónquedaría:

f o r ( i n t  i=1;i<=1000;i++){

if( i%3!=0) System .out.println(i);}

La programación est ructurada prohíbe ut il izar las sentencias break y continue