Lectura 3 - Elementos Formales Del Lenguaje Java I

Post on 09-Jan-2016

5 views 0 download

description

Lenguaje Java

Transcript of Lectura 3 - Elementos Formales Del Lenguaje Java I

  • AdrianNicolsMalaverBarrera 1

    3.ElementosformalesdellenguajeJava(I)

    EnestedocumentopodrsencontrarinformacinrelacionadaconlasintaxisgeneralnecesariaparalaconstruccindeprogramasenJavabasadosenasignaciones.

    Notacin

    Entodoslosdocumentosdesintaxisseusarunanotacinsencillaqueusteddebeconocerparaentenderrpidamentelaestructuradeloselementosdescritos.

    Elementosobligatorios:sonelementosquedebenserespecificadosparaconstruirunaestructura.Serepresentanusando

    Elementosopcionales:sonelementosqueesposibledefinir,peronosondeusoobligatorio.Serepresentanusando(y)

    Usodefuentesdetexto:alusaresta fuente,nosreferimosaque,paraqueelprocesodecompilacinseaexitoso,eltextosedebeescribirexactamenteigualacomosepresenta.Conesta fuenteescribiremoselcdigoenJava.

    Aclaracinimportante:Javaesunlenguajesensiblealusodemaysculasyminsculas,porlotantoFloatesdiferenteafloat.Muchasvecescomoenesteejemplo,lasdospalabrastienenusosyunaconnotacindistinta.Poreso,esimportanteusarcadaelementodellenguajetalycomoesdefinidoenestedocumento.

    3.1.Tiposdedatos

    EnJavaexistentiposdedatosbsicosorientadosalaconstruccindeexpresionesquenossirvenparahallarelresultadodeoperaciones.Estostiposdedatossebasanenlostiposdefinidosparalasexpresionesqueconocemos(Enteros,Realesetc)ysediferenciandeacuerdoconsuusoysuprecisinoelrangodevaloresquepermitenalmacenar.

    POLITCNICO GRANCOLOMBIANO EN ALIANZA CON WHITNEY INTERNATIONAL UNIVERSITY SYSTEM

  • AdrianNicolsMalaverBarrera 2

    Tipodedato TipoenJava Rangodevalores Usodememoria

    byte De128(27)a127(271) 8bitsshort De32768(215)a32767(2151) 16bitsint De2147483648(231)a2147483647(2311) 32bitsEntero

    long De9223372036854775808(263)a

    9223372036854775807(2631)64bits

    float Elnmeromspequeoquesepuede

    representares1.40129846432481707e45.Elmsgrandees3.40282346638528860e+38

    32bits

    Real

    double Elnmeromspequeoquesepuederepresentares4.94065645841246544e324.El

    msgrandees1.79769313486231570e+308.64bits

    Booleano boolean false y true

    Carcter char De0a65535,dondecadavalorrepresentauncarcterdetextodeacuerdoconlacodificacin

    usada.16bits

    Tabla1.TiposdedatosbsicosenJava

    3.2. Definicindevariables

    Deacuerdoconlanecesidad,esposibledefinirvariablesquealmacenarnelresultadodeoperaciones,parmetrosyotrosvaloresqueserequieranparalasolucinalgortmicadeproblemas.Lasintaxiseslasiguiente:

    (=);

    Porejemplo:float f; int i; int y, z, t, w;

    Nombresdevariables:losnombressonunasecuenciadecaracteresdetextoquepuedencomenzarconletras,conelsigno$oconelsigno_.Haypalabrasquenopuedenusarseparadefinirnombresdevariables,dadoquesonpalabrasqueusaellenguajeJavapara

  • AdrianNicolsMalaverBarrera 3

    definirsuspropiasestructuras.Estaspalabrassonllamadaspalabrasreservadasysonlassiguientes:

    abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while

    Valorinicial:Aldefinirunavariableesposibleasignarleunvalorinicial,deacuerdoconeltipodedato.Notaimportante:Lasvariablesdefinidasdentrodemtodos,enestecaso,dentrodelmtodomain,enelquedefinimoslalgicadelosprogramas,requierendeunvalorinicial,yaqueJavanolesasignauno.

    Datosenteros:Valoresnumricosenterospositivosonegativos.Pordefectoestnenbasedecimal.Paradefinirvaloresenbaseoctalseanteponeun0alvalor.Paradefinirvaloresenbasehexadecimalseantepone0x.

    int x = 12; long personas = 94674242; byte dato = -123; int h = 0x19fe; //6654 en base hexadecimal

    Datosreales:valoresnumricosrealespositivosynegativos.Lapartedecimalse

    separadelaenteraconpunto..Paradefinirvaloresdetipoflotanteesnecesariocolocarfalfinaldelnmero.Esposibleusarnotacincientfica.Porejemplo,elnmero4326.783puedeserescritocomo4.326783x103.EnJava:4.326783e3;

    float valor = 1.452f; double dato = 1.45e-6; double numeroGrande = 9.87e230;

    Datosbooleanos:falseotrue.boolean llueve = true; boolean cieloRojo = false; double resultado = true;

    Caracteresdetexto:sedefinenentrecomillassencillas('').Esposible,adems,usarelcdigounicodeespecfico:\u00F1esiguala.

  • AdrianNicolsMalaverBarrera 4

    Unicodeesunestndarinternacionalqueasignaunvalornumricoacadaunodelosposiblessmbolosquepodemosrepresentar;nosoloenespaol,sinoenmuchosotrosidiomas.

    char letra = 'A'; char arroba = '\u0041'; char otraLetra = 65;

    Enestecaso,sepresentantresformasposiblesdehacerreferenciaalsmbolo'A'.

    Cadenasdetexto:sedefinenentrecomillasdobles("").Lasutilizaremosinicialmenteparamostrarinformacinalusuariodenuestrasaplicaciones.

    String palabra = Hola; String otraPalabra = Hola mundo;

    3.3 Asignaciones

    Paraasignarunavariable,seusaeloperadordeasignacin'='deformasimilaralaasignacindevalorinicial.

    =;

    SiemprequeescribamosasignacionesenellenguajeJava,usaremospuntoycoma(;)paradefinirsufinalizacin.Nosoloaldefinirasignaciones,sinotambinaldefinirvariablesohacerllamadoamtodosespecficos.

    Porejemplo:

    f = 1.45f; i = 23; letra = 'W';

    Lasreglasparalosvaloresusadossonlasmismasqueparalosvaloresiniciales.Lasvariablesdebenhabersidodefinidaspreviamente.

    3.4 Expresiones

    LaescrituradelasexpresionesenJavasiguelasmismasreglasdefinidasparalasexpresionesenpseudocdigo.Acontinuacinserelacionanlosoperadoresprincipalesqueusaremosalolargodelcurso.Unalistamsdetalladapuedeencontrarseaquhttp://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html.Losoperadoressepresentanenordendeprioridad(delmsimportantealmenosimportanteenelordendeevaluacin).

  • AdrianNicolsMalaverBarrera 5

    Operador Descripcin

    Operadoresunitariosdeincrementopostfijos(x++, x--)

    Incrementan(++)odisminuyen(--)elvalordeunavariabledespusdelaevaluacindelaexpresinqueloscontiene.Porejemplo: 1 int x = 10, y; 2 y = 15 + x++; Lavariablexvaleinicialmente10.Elresultadodelalnea2es25yluegosehaceelincremento.Estosignificaqueenlaslneassiguientes,xvale16.

    Operadoresunitariosdeincrementoinfijos(x++, x--)

    Cumplenlamismafuncinquelosanteriores,conlaexcepcindequeprimeromodificanelvalorantesdelclculodelaexpresincorrespondiente.Paraelejemploanterior,elvaloralmacenadoenlavariableysera26yno25.

    Operadoresmultiplicativos(*, /, %)

    Operadoresbinariosdemultiplicacin,divisinymdulo.EsteltimofuncionademaneraequivalentealoperadorMODusadopreviamenteenexpresiones.

    Operadoresaditivos(+,-)

    Operadoresbinariosderestaysumausadosentiposdedatosnumricos.

    Operadoresrelacionales(,=)

    Operadoresaplicadosatiposdedatosquedefinenrelacionesdeorden,comotiposnumricosycaracteresdetexto.Elresultadodeestosoperadoresesdetipobooleano.

    Operadoresdeigualdad(==,!=)

    Operadoresdeequivalencia.Elresultadodeestosoperadoresesdetipobooleano.

    OperadorlgicoY(&&)

    Permiterealizarlaoperacinlgica'Y'vistaenexpresionesbooleanas.Sepuedeaplicaraoperandosdetipobooleano.

    OperadorlgicoO(||)

    Permiterealizarlaoperacinlgica'O'vistaenexpresionesbooleanas.Sepuedeaplicaraoperandosdetipobooleano

    Operadoresdeasignacin(=,+=,-=,*=,/=)

    Permitenrealizaroperacionesaritmticasyasignacinalmismotiempo.Porejemplo: 1 int x = 10; 2 x += 15; 3 x *= 3; Lalnea2esequivalenteax = x + 15; Lalnea3esequivalenteax = x * 3;

    4 Referenciadeoperacionesdelecturayescrituraporconsola

  • AdrianNicolsMalaverBarrera 6

    Conelobjetivodecapturarinformacindeunusuarioodepresentarinformacinenpantalla,sehandefinidooperacionesenJavaquepermitenrealizarestatareaenformasencilla.

    Presentacindeinformacinenlaconsoladetexto

    Cuandoseanecesariopresentarelresultadodeunaoperacinocualquierinformacinalusuario,usaremoslosmtodosprintyprintln quepertenecenalafuncionalidadbsicaqueofreceJava.

    Porejemplo:

    1 int x = 10; 2 float f = 1.45f; 3 long l = 34543566; 4 String s = Hola; 5 System.out.println(f); 6 System.out.println(l); 7 System.out.println(x); 8 System.out.println(s); 9 System.out.println(El resultado es: + f); Alejecutarestecdigo,lasalidaenlaconsoladetextosera:

    1.45 34543566 10 Hola El resultado es: 1.45 Laslneas5,6,7y8muestranelcontenidodelasvariablesenpantalla.Tambinesposiblemostrarcadenasdetextoqueacompaenalcontenidodelasvariables,comosucedeenlalnea9.

    Cuandoseusaelmtodoprintenvezdeprintln,nosebajalalneadespusdeescribircadavariable.Siseusaraprintlasalidasera:

    1.453454356610HolaEl resultado es: 1.45 LecturadeinformacindeconsolaCuandoseanecesariocapturarinformacindelusuario,porejemploparaestablecervaloresparalasvariablesdeentradadeunalgoritmo,debemoshacerlosiguiente:1. DefinirunobjetoScanner,quecuentaconmtodosparaleerinformacindeteclado:

    Scanner scanner = new Scanner(System.in);2. Definiryasignarvaloresparalasvariablesqueseannecesarias,usandolosmtodos

    adecuadosdelobjetodelaclaseScanner:n = scanner.nextInt(); //Para leer valores enteros f = scanner.nextFloat(); //Para leer valores de tipo float d = scanner.nextDouble(); //Para leer valores de tipo double

  • AdrianNicolsMalaverBarrera 7

    b = scanner.nextBoolean(); //Para leer valores de tipo boolean Despusdelaejecucindecadalnea,quedaralmacenadoelvalorledoencadavariable.Paramsinformacin,puedeconsultarseladocumentacindelaclasescannerdeJava:http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html.

    5 Invocacindemtodos

    Esposibleconstruirexpresionesqueinvolucrenlarealizacindetareascomunescomoracescuadradas,valoresabsolutos,entreotras.Loharemosdelasiguienteforma:

    =();

    Esnecesarioidentificareltipodevariablequedeberaserusado,deacuerdoconeltipodedatoqueretornaunmtodoparticular.Deigualmanera,haymtodosquenotienenvalorderetornoy,porlotanto,nopodranserusadosparaasignarvaloresavariables.

    Losmtodosrelacionadosconfuncionesmatemticas,puedenserencontradosenlaclaseMathyseusandeacuerdoconlosparmetrosquerequieren1.Porejemplo,siserequierecalcularlarazcuadradade95738,loqueseharaeslosiguiente:double x = 0.0f; x = Math.sqrt(95738);

    Siempre,alusarmtodoscomoeste,esrecomendableleerlareferenciasobreeluso,parmetrosyvalorderetornoparaestarsegurosdequeeselmtodomsadecuado.

    Esposibleusarestetipodemtodosenexpresionesquepermitanrealizaroperacionesmscomplejas:

    d = x*x + Math.sqrt(y * y) + 98 * z;

    6 Comentarios

    EnJava,comoenlamayoradelenguajesdeprogramacin,esposiblehacercomentariosparaexplicarseccionesdecdigo,oagregaranotacionesparafuturasmodificaciones.

    Loscomentariospuedenhacerseparaunasolalneaoparaunbloquedetexto.

    Comentariosdeunalnea:Sehacenusando"//".Todoeltextosubsiguientehastaelfinaldelalneanosetieneencuentaalcompilarelcdigopresenteenelarchivo.

    1ParainformacinsobrelosmtodosdefinidosenlaclaseMath:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html[Recuperado:15deEnerode2010]

  • AdrianNicolsMalaverBarrera 8

    int x = 8; //x almacenar el nmero de personas que inicialmente es 8 float t = 3.45; //La temperatura t ser inicialmente 3.45C //x = 10;

    Comentariosdebloque:Sehacenusando"/*"y"*/".Cualquiertextoencerradoentreestosdoselementosnosertenidoencuentaalcompilarelcdigopresenteenelarchivo.

    /*El propsito del siguiente bloque de cdigo es calcular la ruta ptima para llegar del punto (x,y) al punto (x1,y1) en coordenadas planas*/ int x = 10, y = 30; int x1 = 100, y1 = 54; . . . /* Cdigo generado por: nmalaver Fecha: 30-02-08 */ . . . Usandocomentarios,adems,esposibleocultartemporalmenteunbloquedecdigoquenorequerimosoquenoestlistoparasuejecucin:

    /* y = 17 * 1.6180 + z; x = 100*34 + 18*(45+5)/y */