Prgtema 02
Prgtema 02
Prgtema 02
ELEMENTOS DE UN PROGRAMA
CENTRO:
WEB: ACADEMICO ANO : PROFESOR: EMAIL: MODULO: CICLO FORMATIVO: DEPARTAMENTO: CURSO:
A DISFICO DE EDUCACION CENTRO ESPECI TANCIA DE LA COMUNIDAD VALENCIANA (CEEDCV) http: // www. ceedcv. es 2013/2014 FRANCISCO ALDARIAS RAYA paco. aldarias@ ceedcv. es PROGRAMACION CFGS: DESARROLLO DE APLICACIONES WEB INFORMATICA o 1
Licencia de Creative Commons. PROGRAMACION TEMA 2. ELEMENTOS DE UN PROGRAMA por Francisco Aldarias Raya es licencia bajo http://creativecommons.org/licenses/by-nc-sa/3.0/es/ License. Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Espana Creado a partir de la obra en http://www.ceedcv.es Bajo las condiciones siguientes:
Reconocimiento - Debe reconocer los creditos de la obra de la manera especicada por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra). No comercial - No puede utilizar esta obra para nes comerciales. Compartir bajo la misma licencia - Si altera o transforma esta obra, o puede distribuir la obra generada bajo genera una obra derivada, solo una licencia identica a esta.
1. 2011-2012 Version 2. 2013-2014 Version Changeset: 8:6ce2db2b1f01 25 de octubre de 2013 Ultima actualizacion FRANCISCO ALDARIAS RAYA paco.aldarias@ceedcv.es Departamento de Informatica. a Distancia de la Comunidad Valenciana. (CEED) Centro Espec co de Educacion http://www.ceedcv.es En Valencia (Espana).
A Documento realizado con software libre: linux debian, L TEX.
2.2
INDICE
Indice
1. TIPOS 2. CONSTANTES 3. LITERALES 4. COMENTARIOS 5. IDENTIFICADORES 6. VARIABLES 7. BINARIO 7.1. Pasar de binario a decimal. . . . . . . . . . . . . . . . . . . . . . . . 7.2. Pasar de decimal a binario. . . . . . . . . . . . . . . . . . . . . . . . 7.3. Calculo rapido para convertir entre binario y decimal. . . . . . . . . . 7.4. OR o Suma binaria sin acarreos . . . . . . . . . . . . . . . . . . . . 7.5. AND o producto binario sin acarreos . . . . . . . . . . . . . . . . . . 7.6. XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7. Calculadora binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. OPERADORES 8.1. Operadores Aritmeticos . . . . . . . . . . . . . . . . . . . . . . . . . 8.2. Operadores Relacionales . . . . . . . . . . . . . . . . . . . . . . . . 8.3. Operadores Logicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4. Operadores Unarios . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5. Operadores de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.6. Operadores de Asignacion . . . . . . . . . . . . . . . . . . . . . . . 8.7. Operador Ternario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.8. Precedencia de operadores . . . . . . . . . . . . . . . . . . . . . . . 9. CAST 10. ORIENTACION 10.1.Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.Fuentes bibliogracas . . . . . . . . . . . . . . . . . . . . . . . . . .
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
4 9 10 10 11 12 14 14 14 15 15 16 16 17 17 17 18 19 20 21 22 22 23 24 25 25 26 26
2.3
TIPOS
10.4.Temporalizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.5.Cuando se imparte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11. EJERCICIOS PROPUESTOS 11.1.Ejercicio0201 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.Ejercicio0202 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3.Ejercicio0203 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.Ejercicio0204 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.Ejercicio0205 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6.Ejercicio0206 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.7.Ejercicio0207 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.8.Ejercicio0208 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.9.Ejercicio0209 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.10. Ejercicio0210 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.11. Ejercicio0211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.12. Ejercicio0212 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.13. Ejercicio0213 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.14. Ejercicio0214 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12. EJERCICIOS OBLIGATORIOS 12.1.prgt2e1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 26 26 27 27 27 28 28 28 29 29 29 29 29 29 30 30 30 30
1.
TIPOS
Tipo de datos: Denicion El tipo de datos indica que va a contener una variable. Los tipos de datos pueden ser: Simples: Son tipos nucleares que no se derivan de otros tipos, como los enteros, de coma otante, booleanos y de caracter. Compuestos: Formado por tipos simples: Los tipos compuestos se basan en los tipos simples, e incluyen las cadenas, las matrices y tanto las clases como las interfaces, en general.
Cada tipo de datos simple soporta un conjunto de literales que le pueden ser asignados, para darles valor. de los tipos simples: Clasicacion
2.4
TIPOS
1.- Enteros: Estos tipos son byte, short, int y long, que guardan el signo valor, estos representan un numero y no pueden representar elementos fraccionarios. Ejemplo: Ejemplos de enteros. ../prgcodigo/prgcod02/Enteros.java
public class Enteros { public static void main ( String [] arg ) { byte midato1 = 1; short midato2 = 100; int midato3 = 10000; long midato4 = 100000000; System . out . println (" midato = " + midato1 ); System . out . println (" midato = " + midato2 ); System . out . println (" midato = " + midato3 ); System . out . println (" midato = " + midato4 ); } }
2.- Numeros en coma otante: Estos son oat y double y pueden almacenar numeros en coma otante y con signo, esto quiere decir que nos permiten representar numeros decimales. Todos los literales de coma otante son del tipo double salvo que se especique lo contrario, por eso si se intenta asignar un literal en coma un error (tipos otante a una variable de tipo oat el compilador nos dara incompatibles): Ejemplo: Uso de oat. error. Esto se solucionar Al compilar dara a indicando que el valor 2.6 es de tipo oat con una f al nal 2.6f ../prgcodigo/prgcod02/TiposDecimales.java
public class T iposDeci males { public static void main ( String [] arg ) { float valor ; // Esto dara un error . Debe ser valor =2.6 f ; valor = 2.6; System . out . println (" Valor del dato = " + valor ); } }
3.- El tipo Caracter: de los caracteres Estos son de tipo char, que almacena la representacion (letras o numeros), un caracter esta almacenado en 16 bits, y siguen un estandar que es el Unicoide. Los caracteres en Java se pueden especicar de forma normal o con secuencias de escape, utilizando la barra invertida \ seguida de una letra: \r o utilizando la barra invertida con una u seguida de un numero hexadecimal
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
2.5
TIPOS
\u0000d, en este caso hemos especicado la secuencia de escape y su codigo unicoide correspondiente del retorno de carro. SECUENCIA DE ESCAPE SECUENCIA SIGNIFICADO \ Comilla simple \" Comilla doble \b Espacio en Blanco \n Nueva Linea \t Tabulador \uxxxx Caracter Unicode Ejemplo: Tipo Caracter Se puede apreciar que los caracteres puede guardarse como un numero o como un caracter entre comillas simples. ../prgcodigo/prgcod02/TipoCaracter.java
public class TipoCaracter { public static void main ( String [] arg ) { char valor , valor1 ; // el caracter tiene que estar encerrado entre comillas simples . valor = A ; valor1 = 65; System . out . println (" Caracter "+ valor ); System . out . println (" Caracter "+ valor1 ); } } /* EJECUCION : Caracter A Caracter A */
4.- El tipo booleano: Este solo guarda dos valores: verdadero (true) o falso(false), y no como ocurre en otros lenguajes que toman los valores 0 y 1. es muy frecuente para determinar el ujo de los Generalmente su utilizacion programas. Ejemplo: Tipo Boolean la instruccion del if, si fuera valor1 false Como valor1 es true (cierto), hara del else. haria la instruccion ../prgcodigo/prgcod02/TipoBoolean.java
public class TipoBoolean { public static void main ( String [] arg ) { boolean valor1 ; valor1 = true ; if ( valor1 ) { System . out . println (" valor1 = verdadero ");
2.6
TIPOS
} else { System . out . println (" valor1 = falso "); } } } /* EJECUCION valor1 = verdadero */
detallada de los tipos de datos simples: Descripcion 1.- byte Datos enteros. Utiliza 8 bits. Rango: -128 a 127 Ejemplo: byte a=100; 2.- short Datos enteros. Utiliza 16 bits. Rango: -32768 a 32767 Ejemplo: short a=1000; 3.- int Datos enteros. Utiliza 32 bits. Rango: -2147483647 a +2147483648 Ejemplo: int a=2300; 4.- long Datos enteros. Utiliza 64 bits. Ejemplo: long a=100000; 5.- char Datos enteros y caracteres. Rango: 0 a 65535 Utiliza 16 bits. Ejemplo: char a=c, b=99; Como el valor decimal del caracter c es 99, a y b contienen lo mismo. 6.- oat Datos numericos en coma otante. Utiliza 32 bits. Ejemplo: oat a=3.14, b=1/2; 7.- double Datos numericos en coma otante. Utiliza 64 bits. Ejemplo: double a=3.14, b=1e6; Siendo 1e6 = 1x106 = 1000000 10/4 usando Ejemplo: Programa que compara la salida de la operacion variables double e int. ../prgcodigo/prgcod02/Tipointdouble.java
/* Tipointdouble . java */ class Tipointdouble { public static void main ( String args []){ int a =10; // variable entera double b =10.0; // variable punto flotante System . out . println (" a = " + a ); System . out . println (" b = " + b ); a = a / 4; b = b / 4; System . out . println (" a /4= " + a ); FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
2.7
TIPOS
System . out . println (" b /4= " + b ); } } /* EJECUCION a = 10 b = 10.0 a /4= 2 b /4= 2.5 */
E 70: F 71: N 79: O 80: W 88: X 89: 97: a 98: 105: i 106: 114: r 115:
G P Y b j s
72: H 73: I 81: Q 82: R 90: Z 91: [ 99: c 100: d 107: k 108: l 109: m 116: t 117: u 118: v
Ascii entre a y z 1 97: a 2 98: b 3 99: c 4 100: d 5 101: e 6 102: f 7 103: g 8 104: h 9 105: i 10 106: j 11 107: k 12 108: l 13 109: m 14 110: n 15 111: 16 112: p 17 113: q 18 114: r 19 115: s 20 116: 21 117: u 22 118: v 23 119: w 24 120: x 25 121: 26 122: z Letras entre a y z son 26 */
o t y
Pasarnos del valor maximo: Vamos a ver el caso de pasarnos del l mite maximo de un tipo de dato numerico. Ejemplo: ../prgcodigo/prgcod02/intGrande.java
public class intGrande { public static void main ( String [] args ) {
2.8
CONSTANTES
int j = 2147483647; int i = j + 1; System . out . println (" El valor obtenido es " + i ); } } /* EJECUCION : El valor obtenido es -2147483648 */
grande que puede tolerar un El valor 2147483647 (es decir 231 1 ) es el mas El compilador se queda mudo y int. Pero veamos que pasa al sumarle uno mas. cae en nuestra trampa. Ejecutamos el programa y obtenemos: El valor obtenido es -2147483648 Ten Desastroso, ?Verdad? Veamos lo que paso: amos el valor maximo para los int:
01111111111111111111111111111111 : 2147483647 en n umeros binarios. 00000000000000000000000000000001 : le sumamos 1 10000000000000000000000000000000 : Resultado: -2147483648 complemento a 2
Esta anomal a se la conoce como overow (desbordamiento). El procesador puede identicar un resultado con este problema comparando los signos. Es de como resultado un esperar que si sumamos dos numeros positivos, no nos de numero negativo. Pero el interprete de Java no nos avisa, por lo tanto tenemos que cuidarnos al trabajar cerca de los extremos.
2.
CONSTANTES
Las constantes son variable que no cambian su valor. ESTILO: Las constantes se declaran en mayusculas y las variables en minusculas. Ejemplo:
SINTAXIS: nal [static] tipo-de-dato nombre-constante = valor; Siendo: nal Es un atributo que le pones ya sea a una variable o a un metodo, para indicar que ya no puede ser cambiado una vez declarado. static Que la propiedad o metodo es estatico, no se puede instanciar, siempre usas lo denido en la clase.
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
2.9
COMENTARIOS
3.
LITERALES
Una literal es un valor constante formado por una secuencia de caracteres. en Java que dena un valor constante - un valor que no Cualquier declaracion del programa - es una literal. pueda ser cambiado durante la ejecucion Son ejemplos de literales los numeros, los caracteres y las cadenas de caracteres. Literales numericas Se pueden crear literales numericas a partir de cualquier tipo de dato primitivo. Ejemplos:
123 // literal int 123.456 // literal double 123 L // literal long 123.456 F // literal float
Literales booleanas Las literales boolenas consisten de las palabras reservadas true y false. Literales de caracteres Las literales de caracteres se expresan por un solo caracter entre comillas sencillas Ejemplos:
a , %, 7
Literales de cadena de caracteres. Las cadenas en Java Una cadena es una combinacion son instancias de la clase String, por ello cuentan con metodos que permiten combinar, probar y modicar cadenas con facilidad. Las literales de cadena se representan por una secuencia de caracteres entre comillas dobles. Ejemplos:
" hola " , " cadena123 " , "12345"
4.
COMENTARIOS
interna. Es Los comentarios en un programa representa la documentacion decir, permite aclarar cosas del programa. Tipos: Una linea. Usaremos: //. Varias l neas. Usaremos: /* al inicio y usaremos: */ al nal.
2.10
IDENTIFICADORES
Ejemplos: ../prgcodigo/prgcod02/HolaMundoC.java
/* Esto es un comentario * de varias lineas * */ public class HolaMundoC { // Esto es un comentario de 1 linea public static void main ( String [] args ) { System . out . println (" Hola Mundo "); } }
de forma mas extensa en la asignatura Entornos de Este punto se vera de Programas. Desarrollo, tema Documentacion
5.
IDENTIFICADORES
Un identicador es un nombre que identica a una variable, a un metodo miembro, a una clase. Todos los lenguajes tienen ciertas reglas para o funcion componer los identicadores: Todos los identicadores han de comenzar con una letra, el caracter subrayado ( ) o el caracter dollar ( $ ). Puede incluir, pero no comenzar por un numero No puede incluir el caracter espacio en blanco Distingue entre letras mayusculas y minusculas No se pueden utilizar las plabras reservadas como identicadores ESTILO: legible, pero Hay ciertas convenciones que hacen que el programa sea mas del programa. que no afectan a la ejecucion La primera y fundamental es la de encontrar un nombre que sea signicativo, legible posible. de modo que el programa sea lo mas El tiempo que se pretende ahorrar eligiendo nombres cortos y poco signicati de cierto tiempo. vos se pierde con creces cuando se revisa el programa despues Tipo de identicador nombre de una clase nombre de funcion nombre de variable nombre de constante Convencion Comienza por letra mayuscula comienza con letra minuscula comienza por letra minuscula En letras mayuscu las Ejemplo String, Rectangulo, CinematicaApplet calcularArea, getValue, setColor area, color, appletSize PI, MAX ANCHO
2.11
VARIABLES
6.
VARIABLES
Variable: Una variable es una zona de memoria donde Denicion de un tipo de datos se almacena informacion
Para nombrar las variables usaremos identicadores permitidos, no pudiendose utilizar como variables las palabras reservadas o clave del lenguaje como while, double, etc. Visibilidad o Ambito Denicion o Scope de una variable: Zona de un programa que una variable es visible y puede ser utilizada. son Las variables se declaran dentro de un bloque el cual va entre llaves, y solo Cuando termina el bloque se destruyen. visibles dentro de el. En Java las variables no pueden ser declaradas fuera de una clase. Las acceder a las variables miembro de la clase, pero no a funciones miembro podran miembro. las variables miembro de otra funcion Tipos de variables: Variables miembro de una clase: del objeto de la clase. Son accesibles a traves Valores por defecto CANTIDAD DESCRIPCION Numericas 0 Caracteres \0 Cadenas null Objetos null Variables locales: de una son las variables declaradas dentro de un metodo o funcion clase. Estas variables no pueden ser declaradas como static. No se inicializan por defecto. Variables estaticas o de clase: Son propias unicamente de la clase y no de los objetos que pueden crearse de la misma, por lo tanto, sus valores son compartidos por todos los objetos de la clase. Van precedidas del modicador static. Para invocar a una variable estatica no se necesita crear un objeto de la clase en la que se dene: Si se invoca desde la clase en la que se encuentra denido, basta con escribir su nombre.
2.12
VARIABLES
Si se le invoca desde una clase distinta, debe anteponerse a su nombre, el de la clase en la que se encuentra seguido del operador punto (.) <NombreClase>.variableEstatica. Suelen emplearse para denir constantes comunes a todos los objetos de la clase. Ejemplo: Programa que declara variables miembro y locales. de public class, son variables miembros, Las variables que pongamos despues ser accedidas por las funciones de la clase. que podran y Las variables locales, son las variables que se declaran dentro de la funcion se podra usar dentro de la funcion. solo de objetos se vera mas adelante. Lo importante es ver que las La creacion variables locales de las funciones, son diferentes aunque se llamen igual, y la variable miembro m, es global a ambas funciones. ../prgcodigo/prgcod02/Variables.java
public class Variables { static int m =5; // variable miembro public static void main ( String args []) { int l ; // variable local l = m + 2; System . out . println (" Suma : "+ l ); } } /* EJECUCION : 7 */
Ejemplo: Programa que crea un objeto en donde utiliza la variable miembro. En el main se crea un objeto a, a partir de la clase Variables2, este objeto de la clase se llama con a.f1(); tendra, la variable m, y dos funciones. La funcion ../prgcodigo/prgcod02/Variables2.java
public class Variables2 { static int m =5; public static void f1 () { int l ; l = m +2; System . out . println (" Suma : "+ l ); } public static void f2 () { int l ; l = m +1; System . out . println (" Suma : " + l ); } public static void main ( String [] args ) { Variables2 a = new Variables2 (); a . f1 (); a . f2 (); } } /* Ejecucion : Suma : 7 Suma : 6 */
2.13
BINARIO
7.
BINARIO
binario dispone de 2 s El sistema de numeracion mbolos para representar los numeros que son 0 y 1. Con 1 bit tenemos dos estados, que se obtiene de 21 = 2 , con 2 bits tenemos 22 = 4 estados, y con 8 bits tenemos 28 = 256 estados. A cada estado se le asigna un numero decimal. BINARIO 00 01 10 11 DECIMAL 0 1 2 3
7.1.
Aplicaremos el Teorema Fundamental de la numeracion: 1011 = X 23 + X 22 + X 21 + X 20 = 1 23 + 0 22 + 1 21 + 1 20 = 11 Sustituimos la X por el valor binario. Tomamos 2i , valiendo i desde 0 hasta el numero de d gitos menos 1.
7.2.
Dividiremos por 2, hasta que el cociente sea menor que 2. Y cogeremos el ultimo cociente y los restos en orden inverso a como se obtienen.
Conclusion: 1110) = 10112) Notacion: Para indicar 11 en base 10 pondremos 1110) Para indicar 1011 en base 2 podremos 10112)
2.14
BINARIO
7.3.
Es posible hacer los calculos de una forma rapida, para ello tendremos delante 0 1 2 la siguiente plantilla, la cual se obtiene como 2 ,2 ,2 ,etc: ___ 128 ___ 64 ___ 32 ___ 16 ___ 8 ___ 4 ___ 2 ___ 1
Pasar de Binario a Decimal. Rellenamos en la parte superior el valor binario, y sumamos la parte inferior donde aparece un uno. Ejemplo. Pasar de Binario a Decimal: 1001 ___ 128 ___ 64 ___ 32 ___ 16 __1 8 __0 4 __0 2 __1 1
10012) = 8 + 0 + 0 + 1 = 910) Pasar de Decimal a Binario. pequeno o igual a valor busado y le Tomamos el primer valor mas ponemos 1. Y restamos el valor tomado al total. As hasta que la resta nos de 0. Pasar de Binario a Decimal: 9 ___ 128 ___ 64 ___ 32 ___ 16 __1 8 ___ 4 ___ 2 __1 1
Restamos al 9 - 8 = 1, cogemos el 4 bit a 1. Podemos obtener 1 con el 1er bit. 1 - 1 = 0. Bits elegidos el primero y el cuarto, los bits no cogidos a 0. Luego 910) = 10012) . se pondran
7.4.
cuando los dos operandos son 0. La suma binaria, es 0, solo OR 0+0=0 0+1=1 1+0=1 1+1=1 Nota: No hay que confundir el OR con la Suma Binaria, la cual lleva acarreos. En decimal 3+2=5, pero en binario: 11 OR 10 = 11
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
2.15
BINARIO
11 + 10 = 101 Ejemplo de OR: 1010 1011 OR ---------1011 Se aprecia que 1010 es 10, y 1011 es 11, la suma es 22, en nuestro caso nos da 1011 que es 11.
7.5.
El producto binario es 1, cuando son 1 ambos operandos. AND 0*0=0 0*1=0 1*0=0 1*1=1 No hay que confundir el AND con el producto binario. Ejemplo de AND: 1010 1011 AND ---------1010
7.6.
XOR
Tomo el valor de 9 si son iguales, y 1 si son diferentes. XOR 0*0=0 0*1=1 1*0=1 1*1=0 Ejemplo de XOR: 1010 1011 XOR ---------0001
2.16
OPERADORES
7.7.
Calculadora binaria
Existe en linux una calculadora binaria, en el menu aplicaciones, accesorios, calculadora, Debemos coger la cient ca. Ver gura 1 en la paginas 17
Figura 1: Calculadora binaria Al ser operaciones binaria bit a bit, debemos usar or y and, en lugar de + y *.
8.
8.1.
OPERADORES
Operadores Aritmeticos
Los operadores aritmeticos permite realizar operaciones matematicas. Operadores Aritmeticos OPERADOR OPERACION + Suma Resta * Multiplicacion / Division % Resto Division Tabla 1: Operadores Aritmeticos Los operadores tienen prioridad, esto implica que se evaluan antes los que prioridad y despues lo de menos. tienen mas Ejemplo: ../prgcodigo/prgcod02/Operadores.java
2.17
OPERADORES
public class Operadores { public static void main ( String args []) { int a =4 , b =2 , c =2 , op =0; System . out . println (" a ="+ a +" b ="+ b +" c ="+ c ); op = a + b ; System . out . println (" a + b ="+ op ); op =a - b ; System . out . println (" a - b ="+ op ); op = a * b ; System . out . println (" a * b ="+ op ); op = a / b ; System . out . println (" a / b ="+ op ); op = a %b ; System . out . println (" a %b ="+ op ); op = a + b * c ; System . out . println (" a + b * c ="+ op ); } } /* EJECUCION : a =4 b =2 c =2 a + b =6 a - b =2 a * b =8 a / b =2 a %b =0 a + b * c =8 */
8.2.
Operadores Relacionales
Los operadores relacionales permite saber si son iguales o diferentes los logica. operandos de un expresion El valor que devuelve es true (cierto) o false (falso). El valor logico devuelto se puede guardar en una variable de tipo boolean. Operadores Relacionales USO a<b a>b a <= b a >= b a! = b a == b
Ejemplo: ../prgcodigo/prgcod02/Relacionales.java
public class Relacionales { public static void main ( String args []) { int a =4 , b =2; boolean op ; System . out . println (" a ="+ a +" b ="+ b ); op =a < b ; System . out . println (" a < b es "+ op ); op =a > b ; System . out . println (" a > b es "+ op ); op =a <= b ; System . out . println (" a <= b es "+ op ); op =a >= b ; System . out . println (" a >= b es "+ op ); op = a != b ; System . out . println (" a != b es "+ op ); op = a == b ; System . out . println (" a == b es "+ op ); } } /* EJECUCION : a =4 b =2 a < b es false a > b es true FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
2.18
OPERADORES
a <= b a >= b a != b a == b * */
es es es es
Se puede observar que para ver si son iguales dos operandos se indica con == en lugar de =.
8.3.
Operadores Logicos
Los operadores logicos permiten sirven para construir operaciones logicas. Operadores Logicos USO SIGNIFICADO a && b ayb a||b aob !a no A
OPERADOR && || !
Seguidamente se muestra la tabla de verdad de los operadores logicos, siendo la letra V Verdad (true), y la letra F False (False). Tabla de Verdad de los operadores logicos B !A A || B A && B V F V V V V V F F F V F F V F F
A V F V F
Las tablas de verdad de los operadores logicos, son las mismas que la de los operadores binarios NOT, OR, AND, cambiando 0 por False, y 1 por True. Ejemplo: ../prgcodigo/prgcod02/Logicos.java
public class Logicos { public static void main ( String args []) { int a =1 , b =2 , c =1; boolean e ; e = a > b && c == a ; System . out . println ("1. "+ e ); e = a > b || c == a ; System . out . println ("2. "+ e ); e = (a > b || c == a ) && ( a != c ); System . out . println ("3. "+ e ); } } /* 1. 2. 3. */ EJECUCION : false true false
2.19
OPERADORES
8.4.
Operadores Unarios
tienen un operando. Ejemplo: Los operadores unarios son aquellos que solo tiene el operando A. Sin embargo, A+B tiene dos operandos que son A y ++A solo B, y por tanto + es un operador binario. Operadores Unarios OPERADOR USO SIGNIFICADO -A Cambio de signo Pre Incremento de A. A++ equiva++ ++A le a A=A+1 Post Incremento de A. A++ equiA++ vale a A=A+1 Pre Decremento de A. --A equi---A vale a A=A-1 Post Decremento de A. A equiA-vale a A=A-1 Existe equivalencias entre operadores binarios y unarios. Equivalencias EQUIVALENCIA 2 x+=1 equivale a x-=1 equivale a
realiza las El pre-incremento como ++i, primero suma 1 a la i, y despues y luego suma operaciones. El post incremento i++ primero realiza la instruccion 1. de imprimir el valor de i. Ejemplo: Se puede apreciar que suma 1 despues ../prgcodigo/prgcod02/Unarios1.java
public class Unarios1 { public static void main ( String arg []) { int i = 1; System . out . println ( i ++); System . out . println ( i ++); } } /* EJECUCION * 1 * 2 */
Ejemplo: ../prgcodigo/prgcod02/Unarios.java
public class Unarios { public static void main ( String args []) { int a =1; a ++; // a vale 2 System . out . println ("1. "+ a ); a = 1 + -a ; // a vale 1 -2= -1
2.20
OPERADORES
System . out . println ("2. "+ a ); a = 0 + (++ a ); // a vale 0 -1 +1 = 0 System . out . println ("3. "+ a ); a = 0 + ( a ++); // a vale 0 + 0 = 0 System . out . println ("4. "+ a ); } } /* 1. 2. 3. 4. */ EJECUCION : 2 -1 0 0
8.5.
Operadores de Bits
Los operadores de bits trabajan con los numeros a nivel binario. Operadores Bits SIGNIFICADO AND logico. A AND B OR logico. A OR B XOR logico. A XOR B Desplaza a la izquierda A B bits rellenando con ceros por la derecha Desplaza a la derecha A B bits rellenando con el bit de signo ceros por la izquierda
Ejemplo: ../prgcodigo/prgcod02/Bits.java
public class Bits { public static void main ( String args []) { int a ; a =2; String b = Integer . toBinary String ( a ); System . out . println ("1. Decimal :"+ a +"
Binario :"+ b );
a = a << 1; // Desplaza 1 bit izq , num = num *2 b = Integer . toBinar yString ( a ); System . out . println ("2. Decimal :"+ a +" Binario :"+ b ); a =2; a = a >> 1; // Desplaza 1 bit der , num = num /2 b = Integer . toBinar yString ( a ); System . out . println ("3. Decimal :"+ a +" Binario :"+ b );
2.21
OPERADORES
8.6.
Operadores de Asignacion
Los operadores de bits trabajan con los numeros a nivel binario. Operadores Asignacion USO SIGNIFICADO A=B Guarda el valor de B en A. A += B A=A+B A -= B A=A-B A *= B A=A*B A /= B A=A/B A %= B A=A %B
OPERADOR = += -= *= /= %=
Ejemplo: ../prgcodigo/prgcod02/Asignacion.java
public class Asignacion { public static void main ( String args []) { int a =1; a +=2; System . out . println ("1. "+ a ); a /=2; System . out . println ("2. "+ a ); } } /* EJECUCION : 1. 3 2. 1 */
8.7.
Operador Ternario
Operador Condicion SIGNIFICADO Si es cierto c devuelve el v1 si es (c?v1:v2) falsa devuelve el v2.
OPERADOR USO ?:
Ejemplo: ../prgcodigo/prgcod02/Condicion.java
public class Condicion { public static void main ( String args []) { int a1 =1 , a2 =2 , a3 ; boolean b1 ; b1 = ( a1 <1? true : false ); System . out . println ("1. "+ b1 ); a3 = ( a2 <1?6:7); System . out . println ("2. "+ a3 ); } } /* EJECUCION : 1. false 2. 7 */
2.22
OPERADORES
8.8.
Precedencia de operadores
La precendencia de operadores indica que operadores se calculan antes que otros. Es decir, que operador se evalua primero. Ejemplo operadores son +,-,*,etc. Los parentesis permiten indicar que se calcula primero. al inicio de la tabla, La tabla indica que tienen mayor prioridad los que estan en la misma la, tienen la misma prioridad y se calculara antes, el y si estan mas a la izquierda. Por ejemplo: 3*4/2, tanto * como / tienen la misma que esta 12/2=6. prioridad, y debemos evaluar primero 3*4 y no 4/2, el resultado sera Precedencia de Operadores. OPERADORES DESCRIPCION () Parentesis -- ~ ! ++ & Unarios Multiplicacion, * /% y Resto Division +Suma y Resta << >> >>> Desplazamiento < <= > >= Relacionales & AND ^ XOR | OR && AND booleano || OR booleano ?: Condicional = *= += -= %= <<= >>= Asignacion
PRIORIDAD MAYOR
MENOR
Ejemplo: Se aplican calculos segun la precedencia. matematica Partimos de la expresion 2+5*3, si calculamos de izquieda a derecha 2+5=10, y 10*3 = 30. Deber a dar 30, pero da 17 ya que * tiene mas precedencia que +. El calculo ser a 5*3=15, y 15+2=17. ../prgcodigo/prgcod02/Precedencia.java
public class Precedencia { public static void main ( String args []) { int a ; a =2+5*3; // * mas precedencia que +. System . out . println ("1. "+ a ); a =2+(5*3); System . out . println ("2. "+ a ); a =2+5*1+4/2; System . out . println ("3. "+ a ); } } /* 1. 2. 3. */ EJECUCION : 17 17 9
2.23
CAST
9.
CAST
Antes de usar una variable debemos declarar su tipo. Ejemplo: int a;
Pero para que podamos guardar una variable entera en un variable oat, de tipos. debemos antes hacer un cast, o conversion Ejemplo: int a=1; oat f=2.0; f=a; de tipos. Hay veces que la conversion de tipos Hay que evitar la conversion provoca perdida de informacion. Tipos de cast: Impl cita: Donde guardamos debe tener mayor precision. Ejemplo: int a=1; oat f=2.0; f=a; En este caso f tiene mayor precision que a. con la operacion de cast. Ejemplo: int Explicita: Se fuerza la conversion a=1; oat f=2.0; f=(cast)a; Hay conversiones entre tipos no permitidas. Ejemplo: Entre int y boolean, reales y booleanos. Ejemplo: ../prgcodigo/prgcod02/Cast.java
public class Cast { public static void main ( String args []) { // Sin perida float = int int i1 =2; float f1 ; f1 = i1 ; System . out . println ("1. "+ f1 ); // Perdida . int = double int i2 =10; double d1 =3.1416; i2 = ( int ) d1 ; System . out . println ("2. "+ i2 ); // Sin perdida por mayor precision . short = byte short s1 ; byte b1 =3; s1 = b1 ; System . out . println ("3. "+ s1 ); // Error . Por perdida de precision short s2 =200; byte b2 ; // bytes numero maximo 127 // b2 = s2 ; // Error } } /* EJECUCION : 1. 2.0 2. 3 3. 3 * */
En el ejemplo se aprecia que: impl 1.- f1=i1 Conversion cita de i1 (int) en f1 (oat) Sin perdida de datos.
2.24
10
ORIENTACION
explicita de d1 (double) en i2 (int) Hay perdida 2.- i2=(cast)d1 Conversion de datos. Con cast obligamos a que haga la conversion. impl 3.- s1=b1 Conversion cita de b1 (byte) en s1(short). No hay perdida. Tiene short (precision mayor de 127), que byte (como maximo mayor precision toma el valor de 127). implica, da error. No deja hacerlo. Por intentar meter 200 4.- b2=s2 Conversion admite como maximo en byte que solo el valor 127. de tipos el tipo Segun el tema 1 del libro de Schaum [SA05], en la conversion con char es caso especial. Un tipo char siempre se puede utilizar en una expresion numeros enteros como si fuese un numero entero mas. Ejemplo: Conversiones entre char e int. B. Convierte un caracter A en un numero en n=c+1; Si c es A, c+1 sera el valor Convierte una numero en un letra en c=(char)n. Si n es A+1, n tomara entero de la C. ../prgcodigo/prgcod02/TipoChar01.java
public class TipoChar01 { public static void main ( String [] arg ) { char c = A ; int n ; n = c + 1 ; System . out . println (" n : "+ n ); n = A +1; c = ( char )( n ); System . out . println (" c : "+ c ); } } /* EJECUCION n : 66 c: B */
10.
10.1.
ORIENTACION
Objetivos
Los objetivos son: Identicar distintos tipos de variables y su utilidad Modicar el codigo de un programa para crear y utilizar variables. Saber crear y utilizar constantes y literales. Saber clasicar, reconocer y utilizar en expresiones los operadores del lenguaje. de tipo explicita e implicita. Saber el funcionamiento de la conversion Saber como se emplean los comentarios
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
2.25
11
EJERCICIOS PROPUESTOS
10.2.
Software
Se recomienda el siguiente software: Sistema Operativo: Linux IDE: Geany, Netbeans. CVS: Git
10.3.
Fuentes bibliogracas
1.- Libro [MP11] Tema 1. Elementos de un programa informatico. 2.- Libro [FQ08] Capitulo 2. Caracter sticas de Java 3.- Libro [CUM13] Capitulo 1. Introduccion 4.- Geany http://www.geany.org/ 5.- Netbeans http://netbeans.org/
10.4.
Temporalizacion
a distancia en: Esta materia se impartira DESCRIPCION Total de horas del tema Total de semanas Total de horas por semana Total de horas de tutor as grupales por semana Total de horas del curso CANTIDAD 19 2 9,5 2 230
10.5.
Cuando se imparte
11.
EJERCICIOS PROPUESTOS
Crear un repositorio en el cvs llamado prgt2e2xxx para los ejemplos y prgt2e3xxx para los ejercicios propuestos siendo xxx tu apellido y sube el proyecto que contenga todos los programas.
2.26
11
EJERCICIOS PROPUESTOS
11.1.
Ejercicio0201
11.2.
Ejercicio0202
Realiza un programa en Java, que muestre la tabla de verdad de los operadores binarios, OR, AND, XOR, NOT, tomando dos variables A y B que tomen todos los posibles valores. Ejemplo: Tabla de Verdad de los operadores binarios A B NOT A A AND B A OR B false false true false true true true false false true true false
A XOR B
obtenerse con el programa mediante Los valores que faltan en la tabla deberan expresiones logicas. format() de la Se puede poner en columnas usando, el caracter \t, o la funcion clase String.
11.3.
Ejercicio0203
1.- Pasa a binario los siguientes numeros en decimal: 10 15 255 1024 2.- Pasa a decimal los siguientes numeros en binario: 1111111 10000000
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB. PROGRAMACION 2013/2014.
2.27
11
EJERCICIOS PROPUESTOS
11.4.
Ejercicio0204
11.5.
Ejercicio0205
no compila el siguiente programa? Modif Por que calo para hacer que funcione. ../prgcodigo/prgcod02/Ejercicio02.java
class Ejercicio02 { public static void main ( String [] args ) { int n1 =50 , n2 =30 , boolean suma =0; suma = n1 + n2 ; System . out . println (" LA SUMA ES : " + suma ); } }
11.6.
Ejercicio0206
El siguiente programa tiene 3 fallos, averigua cuales son y modica el programa para que funcione. ../prgcodigo/prgcod02/Ejercicio03.java
class Ejercicio3 { public static void main ( String [] args ) { int numero =2 , cuad = numero * numero ; System . out . println (" EL CUADRADO DE "+ NUMERO +" ES : " + cuad ); } }
2.28
11
EJERCICIOS PROPUESTOS
11.7.
Ejercicio0207
11.8.
Ejercicio0208
11.9.
Ejercicio0209
Realiza un programa que calcule el area de una circunferencia de radio 5,2 cent metros.
11.10.
Ejercicio0210
Realiza un programa que muestre en pantalla, respetando los retornos de l nea, el siguiente texto:
Me gusta la programaci on cada d a m as .
11.11.
Ejercicio0211
Realiza un programa que genere letras aleatoriamente y determine si son vocales o consonantes.
11.12.
Ejercicio0212
2.29
12
EJERCICIOS OBLIGATORIOS
int a =1; int b =a > > >2; System . out . println ( b ); a =7 | 4; System . out . println ( a ); b =3 | 4; System . out . println ( b ); a =7 & 4; System . out . println ( a ); b =3 & 4; } }
11.13.
Ejercicio0213
Dentro de una clase joven tenemos las variables enteras edad, nivel de estudios e ingresos. Necesitamos almacenar en la variable booleana jasp el valor: Verdadero. Si la edad es menor o igual a 28 y el nivel de estudios es mayor que tres, o bien, la edad es menor de 30 y los ingresos superan los 28.000 (euros). Falso. En caso contrario. Escribe el codigo importante necesario (2 l neas).
11.14.
Ejercicio0214
Realiza un programa con una variable entera t la cual contiene un tiempo en segundos y queremos conocer este tiempo pero expresado en horas, minutos y segundos.
12.
12.1.
EJERCICIOS OBLIGATORIOS
prgt2e1
1.- Clonar la practica del repositorio publico: https://ceeddaw@bitbucket.org/ceeddaw/prgt2e1.git 2.- Formatear el codigo. En Netbeans hay que seleccionar todo el programa e ir mas legible. al Menu sera Fuente, Formato. Una vez formateado el codigo 3.- Modicar el programa clonado para que dado un importe en euros, nos indique el m nimo numero de billetes y la cantidad sobrante que se pueden utilizar para obtener dicha cantidad. Debe funcionar para cualquier importe en euros. Por ejemplo: 232 euros
2.30
BIBLIOGRAF IA
232 Euros tenemos 1 billete de 200. 1 billetes de 20 1 billetes de 10 Sobran 2 euros. 4.- Crear un repositorio en el cvs en bitbucket llamado prgt2e1xxx, siendo xxx el primer apellido. Ejemplo para garcia ser a prgt2e1garcia. 5.- Renombrar el proyecto ponerle igual que el nombre del repositorio derecho del raton sobre el nombre del prgt2e1xxx. Para ellos pulsar el boton proyecto y pulsar renombrar. 6.- Subir el proyecto al cvs creado. Recordar que hay que: 1.- Guardar los cambios 2.- Menu Team, Add (seleccionando el proyecto) 3.- Menu Team, Commit 4.- Menu Team, Push (sobre vuestro repositorio ya creado en bitbucket) del repositorio al aula virtual, apartado practica2. 7.- Subir la direccion Ejemplo para garc a ser a: https://bitbucket.org/garcia/prgt2e1garcia.git
BIBLIOGRAF IA
. Garceta, 1 edition, [CUM13] M. ISABEL JIMENEZ CUMBRERAS. Programacion 2013. [FQ08] [MP11] AGUSTIN FROUTE QUINTAS. Java 2. Manual del Usuario y Tutorial. 5 edition, 2008. ISBN: 978-84-7897-875-5. PRECIO:40EUR. JAVA 2SE. . Ra-ma, 1 edition, JUAN CARLOS MORENO PEREZ. Programacion 2011. ISBN: 978-84-9964-088-4. LIBRO ALUMNO CICLOS. PRECIO: 35 EUR. en Java 2. Serie Schaum. JESUS SANCHEZ ALLENDE. Programacion McGrawhill, 1 edition, 2005. ISBN: 84-481-4591-7. LIBRO DE EJERCICIOS. JAVA 2. NIVEL BASICO.
[SA05]
2.31