Diferencia entre revisiones de «Usuario:ManuelRomero/sintaxis»
De WikiEducator
(→Instruccion de leer y escrivir o visualizar) |
|||
(54 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
{{TEP}} | {{TEP}} | ||
− | {{:Usuario:ManuelRomero/CursoJavaUml/java/nav}} | + | {{:Usuario:ManuelRomero/CursoJavaUml/java/sintaxis/nav}} |
{{#widget:Slides}} | {{#widget:Slides}} | ||
Línea 17: | Línea 17: | ||
</source> | </source> | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
===Elementos para definir una clase=== | ===Elementos para definir una clase=== | ||
Línea 28: | Línea 29: | ||
*no se puede utilizar para otro propósito como identificadores. | *no se puede utilizar para otro propósito como identificadores. | ||
</div> | </div> | ||
− | |||
+ | <div class="slide"> | ||
===Palabras reservadas=== | ===Palabras reservadas=== | ||
{| class="wikitable" | {| class="wikitable" | ||
Línea 54: | Línea 55: | ||
|} | |} | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | ===Palabras reservadas=== | + | ====Palabras reservadas==== |
*Las palabras '''const''' y '''goto''' no se emplean actualemnte en java, pero son palabras reservadas | *Las palabras '''const''' y '''goto''' no se emplean actualemnte en java, pero son palabras reservadas | ||
*Existen otras palabras reservadas correspondientes a métodos reservados a la clase Object que ya veremos | *Existen otras palabras reservadas correspondientes a métodos reservados a la clase Object que ya veremos | ||
Línea 63: | Línea 65: | ||
*Iremos agrupando las palabras en grupos (Variables, modificadores de acceso, estructuras de controls, ...) | *Iremos agrupando las palabras en grupos (Variables, modificadores de acceso, estructuras de controls, ...) | ||
</div> | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ===Programa Java: clases y método main=== | ||
+ | *Un programa en java normalmente se organiza en proyecto | ||
+ | *Es muy común tener muchos ficheros '''.java''' | ||
+ | *Sólo uno de ellos puede tener un método especial llamado '''main''' | ||
+ | *La ejecución del programa empezará en la primera instrucción que tenga un método '''main''' | ||
+ | *solo puede haber uno en un proyecto | ||
+ | *Se puede crear una clase sola para el main o incluir el método en alguna existente (ya lo veremos) | ||
+ | <source lang=java> | ||
+ | public class ClasePrincipal{ | ||
+ | public static void main(String[]args){ | ||
+ | instruccion1;//Primera instrucción que se ejecutará | ||
+ | ... | ||
+ | instruccionn; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
===Identificadores=== | ===Identificadores=== | ||
Línea 85: | Línea 107: | ||
** Separar con caracter de subrayado. ''Esto siempre en constantes ya que van en mayúscula'' | ** Separar con caracter de subrayado. ''Esto siempre en constantes ya que van en mayúscula'' | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | ==Identificadores== | + | ====Identificadores==== |
*El identificado debe usar los siguientes caracteres | *El identificado debe usar los siguientes caracteres | ||
[$|a..zA..Z|_][$|a..zA..Z|_|0..9]* | [$|a..zA..Z|_][$|a..zA..Z|_|0..9]* | ||
Línea 93: | Línea 116: | ||
la ñ también es un caracter permitido para un identificador pero se recomienda no usarlo | la ñ también es un caracter permitido para un identificador pero se recomienda no usarlo | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | ===Comentarios=== | + | ===Comentarios en el programa=== |
+ | *Una parte '''muy''' importante del software es lo que '''no''' son instrucciones | ||
+ | *un software hay que comentarlo | ||
+ | *No '''excesivamente''' pero sí lo '''suficiones''' (''ambos términos muy imprecisos'') | ||
+ | #comentarios hasta el final de la línea | ||
+ | //Este es un comentario hasta el final de la línea y empieza con | ||
+ | #comentario de varias líneas | ||
+ | /* hasta que encuentre la pareja | ||
+ | de caracteres final de comentario | ||
+ | esto se considerará un comentario | ||
+ | */ | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | === | + | ====Comentarios de documentación==== |
+ | #comentarios de docuemntacion | ||
+ | Este tercer tipo de comentario es más especial | ||
+ | /** | ||
+ | Este es un comentario | ||
+ | multilínea | ||
+ | y además sirve para realizar un documento | ||
+ | con la documentación del programa | ||
+ | */ | ||
+ | *Se pueden hacer comentarios a diferentes niveles | ||
+ | ** A nivel de clase | ||
+ | ** A nivel de variable/atributo | ||
+ | ** A nivel de método | ||
+ | *Los comentario deben de ir inmediatamente antes del elemento que comentas | ||
+ | *Se puede utilizar tags @author @version @param @return | ||
+ | *javadoc.exe -author -version para que aparezcan al principio de la clase | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
+ | ====Comentarios de documentación==== | ||
+ | <br/> | ||
+ | {{Actividad| | ||
+ | Haz un porgrama y crea la documentación: | ||
+ | *Nombre de la clase | ||
+ | *Información de la versión | ||
+ | *Fecha | ||
+ | *Autor | ||
+ | *Objetivo muy general | ||
+ | *Aviso de copyrigh | ||
+ | *En el main parámetros y retorno | ||
+ | }} | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | ===Instruccion de ''leer'' y '' | + | |
+ | ===Instruccion de ''leer'' y ''escribir'' o ''visualizar''=== | ||
<br/> | <br/> | ||
*En java no existen estas instrucciones | *En java no existen estas instrucciones | ||
*El API de java nos proporciona clases que implementan métodos con esa funcionalidad | *El API de java nos proporciona clases que implementan métodos con esa funcionalidad | ||
*En concreto la clase System | *En concreto la clase System | ||
− | *Es una clase final y todos sus | + | </div> |
+ | |||
+ | <div class="slide"> | ||
+ | ====La clase System==== | ||
+ | *Es una clase final y todos sus contenidos son privados | ||
*No se puede instanciar un objeto de esa clase | *No se puede instanciar un objeto de esa clase | ||
− | * | + | *La clase System siempre está ahí disponible para que se pueda invocar cualquiera de sus métodos |
+ | *Es miembro del paquete '''java.lang''' | ||
+ | *Todos los miembros del paquete '''java.lang''' se pueden usar directamente | ||
+ | *no hay que importarlos | ||
+ | *En esta clase se definen los dispositivos estándar de entrada/salida | ||
+ | static PrintStream err; | ||
+ | static InputStream in; | ||
+ | static PrintStream out; | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ====Métodos de System.out==== | ||
+ | *Son los métodos de la clase '''PrintStream''' | ||
+ | http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html | ||
+ | #Principales | ||
+ | println("Cadena ...")//Escrible sus argumentos y al final añade un \n | ||
+ | print ("Cadena ...") //Lo mismo pero no añade un salto de línea | ||
+ | printf("Cadena...",argumentos) //Para los amantes del c %d,%c,%s,.... | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ====Métods de System.in Vs Scanner==== | ||
+ | *A partir de Java 5 apareció la clase Scanner | ||
+ | *Es mas sencilla de utilizar que System.in | ||
+ | *Es mucha la flexibilidad que presenta | ||
+ | *Está dentro del paquete '''java.util''' | ||
+ | *Hay que importarla para poderla utilizar | ||
+ | import java.util.Scanner; | ||
+ | *Hay que definirse un objeto de esa clase | ||
+ | Scanner leer = new Scanner(System.in); | ||
+ | *Tiene muchos usos, por ejemplo leer la siguiente línea del teclado | ||
+ | leer.nextLine(); | ||
+ | *Para la sintaxis de java aprenderemos su uso | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | |||
+ | ====Clase java.util.Scanner==== | ||
+ | <source lang=java> | ||
+ | import java.util.Scanner;/* Debemos cargar la clase | ||
+ | ya que no está en el paquete '''lang''', | ||
+ | sino en el paquete '''util''' */ | ||
+ | class Principal{ | ||
+ | public static void main(String []argc){ | ||
+ | int num; | ||
+ | Scanner leer = new Scanner(System.in);//Una clase se instancia de esta manera | ||
+ | //Le pasamos un objeto InputStream asociado al teclado | ||
+ | System.out.println("Dime tu edad"); | ||
+ | num=leer.nextInt(); //Invocamos al método para obtener el siguiente entero del buffer | ||
+ | System.out.println("Tienes "+edad+" años de edad"); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | <br/> | ||
{{Actividad|hacer un programa que me pida la edad y nombre y la visualice}} | {{Actividad|hacer un programa que me pida la edad y nombre y la visualice}} | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | === | + | |
+ | ===Instrucion declarativa=== | ||
+ | *La instruccion de declaración de variables o atributos es | ||
+ | tipo_variable [[#Identificadores_2|identificador]] [= valor_inicial] | ||
+ | #[[#Identificadores_2|identificador]] es el nombre de la variable | ||
+ | #'''valor_inicial''' opcionalmente se puede inicializar la variable en la propia declaración | ||
+ | int edad=18, sueldo=1000; | ||
+ | //defino dos variables de tipo entero y las inicializo con valores | ||
+ | *En general se puede definir una lista de [[#Identificadores_2|identificadores]] del mimo tipo | ||
+ | *cada uno de ellos se puede inicializar | ||
+ | int a,b,c=1,d=100,e,f; | ||
+ | defino seis [[#Identificadores_2|identificadores]] ''a,b,d,c,d,e'' e inicializo dos de ellos ''c=1 y d = 100'' | ||
+ | la expresión regular para las instruccion declarativa sería | ||
+ | [tipo_dato lista_identificadores] | ||
+ | donde lista_identificadores un conjunto de [[#Identificadores_2|identificadores]] separados por comas opcionalmente inicializados. | ||
+ | |||
+ | *En '''java''' las variables siempre tienen un valor inicial | ||
+ | *Existen en '''java''' dos tipos | ||
+ | #tipos '''primitivos'''(''byte,short,int,long,double,float,char,boolean,void'') | ||
+ | #tipos de '''referencia'''(los que no son primitivos ''vectores, clases e interfaces'') | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | === | + | ====Clasificacion de tipos==== |
+ | [[Archivo:tipos.png|800px]] | ||
</div> | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | === | + | ====TIPOS PRIMITIVOS==== |
+ | La siguiente tabla muestra una relación de tipos simples | ||
+ | <BR/> | ||
+ | [[Archivo:tiposSimples.png|600px]] | ||
</div> | </div> | ||
+ | |||
+ | |||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | === | + | ====TIPOS PRIMITIVOS==== |
+ | <br/> | ||
+ | {{Pregunta|Tipos primitivos en un lenguajes orientado a objetos}} | ||
+ | ;En java casi todo son objetos | ||
+ | :Excepciones tipos primitivos para representar valores sin mas | ||
+ | :''''todos''' con el '''mismo''' tamaño y comportamiento | ||
+ | :para cualquier hardware | ||
+ | :para cualquier S.O | ||
+ | {{Nota|si has programado con C sabrás lo bueno que es esto :)}} | ||
+ | *Con los datos primitivos se pueden construyen los array | ||
+ | *tambien pueden aparecer en clases e interfaces | ||
+ | :todo tipo primitivo tiene asociado una clase | ||
+ | :se conoce como 'Wrapper' | ||
+ | :Todo tipo primitivo se puede manejar como objeto | ||
</div> | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ====TIPOS DE REFERENCIA==== | ||
+ | *Son todos objetos | ||
+ | *Para utilizar en Java los objetos debemos hacer dos acciones | ||
+ | *1 definir el objeto | ||
+ | Scanner leer; | ||
+ | *2 instanciarlo o cargarlo en memoria | ||
+ | leer = new Scanner(); | ||
+ | *Se puede hacer en la misma línea | ||
+ | Scanner leer = new Scanner(); | ||
+ | #El operador '''new''' palabra reservada del lenguaje instancia un objeto de una clase | ||
+ | #instanciar es cargalo en memoria | ||
+ | #la variable contendra la direccion de memoria del objeto | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | |||
+ | ====TIPOS DE REFERENCIA==== | ||
+ | *Son todos objetos | ||
+ | *Para utilizar en Java los objetos debemos hacer dos acciones | ||
+ | *1 definir el objeto | ||
+ | Scanner leer; | ||
+ | *2 instanciarlo o cargarlo en memoria | ||
+ | leer = new Scanner(); | ||
+ | *Se puede hacer en la misma línea | ||
+ | Scanner leer = new Scanner(); | ||
+ | #El operador '''new''' palabra reservada del lenguaje instancia un objeto de una clase | ||
+ | #instanciar es cargalo en memoria | ||
+ | #la variable contendrá la dirección de memoria del objeto(por eso es una referencia) | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | |||
+ | ====TIPOS DE REFERENICA '''ARRAY'''==== | ||
+ | #arrays: para definir una variable de este tipo '''[]''' | ||
+ | int notas[]; | ||
+ | notas = new int[100] | ||
+ | *Un '''array''' es una coleccion de elementos del mismo tipo | ||
+ | *Se caracteriza por el tipo base que son el tipo de los elementos que contiene | ||
+ | *También por el número de elementos. | ||
+ | *El número es fijo y no puede cambiar una vez inicializado | ||
+ | *Si necesitamos dinamismo mejor usar la clase '''java.util.Vector''' | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ====TIPOS DE REFERENICA '''CLASES E INTERFACES'''==== | ||
+ | #Clases e interfaces | ||
+ | Se definen con la estructura vista anteriormente | ||
+ | public class NombreClase{ | ||
+ | } | ||
+ | public interface NombreInterfaz{ | ||
+ | } | ||
+ | Para crear elementos de este tipo | ||
+ | NombreClase objeto1 = nes NombreClase(); | ||
+ | NombreInterfaz objetoInterfaz = new NombreInterfaz() | ||
+ | # | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ====Variables y objetos==== | ||
+ | *Las variables valores de tipos primitivos | ||
+ | *Los objetos son elementos de tipos de referencia | ||
+ | ** Ambos son elementos que residen en memoria | ||
+ | ** Accedo en ellos a traves de su nombre | ||
+ | *Para ver la idea de que los identificadores son referencias a memoria observemos el siguiente código | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ===INSTRUCCION DE ASIGNACIÓN=== | ||
+ | El operador de asiganción es '''=''' | ||
+ | La sintaxis es | ||
+ | variable = expresion | ||
+ | El tipo de la variable y el de la expresión deben coincidir | ||
+ | |||
+ | ====Asignacion entre objetos==== | ||
+ | <source lang=java> | ||
+ | import java.util.Scanner; | ||
+ | public class Definicion { | ||
+ | public static void main(String []a){ | ||
+ | String nom; | ||
+ | Scanner l1,l2; | ||
+ | l1=new Scanner(System.in); | ||
+ | l2=l1; //En realidad son el mismo elemento ya que son la misma dirección de memoria | ||
+ | System.out.println("dame tu nombre que leeré con L2"); | ||
+ | nom = l2.next(); //introduzco Manuel Romero Miguel Perez | ||
+ | System.out.println("Leyendo de L2 " +nom);// Visualiza Manuel | ||
+ | System.out.println("dame tu nombre L1"); | ||
+ | nom=l1.next();//No espera ya que todavia tiene en el buffer Romero Miguel Perez | ||
+ | System.out.println("Leyendo de L1 " +nom); //Visualiza Romero | ||
+ | nom = l2.next(); | ||
+ | System.out.println("Resto de L2 " +nom);//Visualiza Miguel | ||
+ | nom = l1.next(); | ||
+ | System.out.println("Resto de L1 " +nom);//Visualiza Lopez | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ====Salida del código anterior==== | ||
+ | dame tu nombre que leeré con L2 | ||
+ | Manuel Romero Miguel Pérez | ||
+ | Leyendo de L2 Manuel | ||
+ | dame tu nombre L1 | ||
+ | Leyendo de L1 Romero | ||
+ | Resto de L2 Miguel | ||
+ | Resto de L1 Pérez | ||
+ | Probar a que l1 y l2 sean dos objetos diferentes | ||
+ | l1=new Scanner(System.in); | ||
+ | l2=new Scanner(System.in); | ||
+ | Y no hacemos la asignacion '''l2=l1''' | ||
+ | {{Pregunta|observamos la diferencia? | ||
+ | #ahora l1 y l2 son dos buffers diferente | ||
+ | #cada uno guarda historia de lo que almacea | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ====la expresion==== | ||
+ | Un literal puede ser un valor de los siguientes tipos | ||
+ | numérico | ||
+ | boolean | ||
+ | false true | ||
+ | caracter | ||
+ | Literal entre comillas simples '' 'c' '' | ||
+ | Secuencia unicode '''\u064''' | ||
+ | Secuencia de escape \t | ||
===Qué puede haber dentro de una clase=== | ===Qué puede haber dentro de una clase=== | ||
Línea 142: | Línea 433: | ||
*Los datos nos referiremos a ellos como atributos llamado así en terminología orientada a objetos | *Los datos nos referiremos a ellos como atributos llamado así en terminología orientada a objetos | ||
*A las funciones las identificaremos como métodos | *A las funciones las identificaremos como métodos | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</div> | </div> | ||
</div> | </div> |
Última revisión de 07:49 15 feb 2016
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |