jueves, 6 de mayo de 2021

Años bisiestos

NOTA PRELIMINAR:

Comproveu abans que tingueu instal·lat el plug in de Java (JRE versió 1.6.0_16 o bé una versió superior ) al vostre navegador.

Algunes observacions dirigides a qui li interessi la programació en llenguatge Java:
Quan vaig compilar el codi font (Anyb.java) tot just havia acabat d'actualitzar el meu JDK i el JRE a la versió més recent v1.6.0_* (octubre de 2009) i, per bé que al meu ordinador funciona perfectament (el fitxer amb els bytecodes, Anyb.class, generat en la compilació), he pogut comprovar que, malauradament, en d'altres ordinadors que encara no han actualitzat el JRE (la màquina virtual de Java o plug in dels navegadors a aquesta última versió (10/2009), no s'engega l'applet en carrregar-se. El mateix m'ha passat quan he provat de posar-lo en marxa en un Mac. Per contra, altres applets que ja havia preparat fa temps amb versions anteriors del JDK funcionen perfectament en aquestes màquines. És per això que he mirat de trobar l'antiga versió del JDK amb què treballava fa temps (j2sdk1.4.2_14) per tornar a compilar el fitxer amb el codi font (Anyb.java) [ les antigues versions les podeu trobar a http://java.sun.com/products/archive ].

És de suposar que en actualitzar-se el plug in (sovint es fa de manera automàtica) els applets generats amb les noves versions del JDK v1.6.* (o superiors) funcionaran normalment.

Espero que aquestes notes siguin d'utilitat per als companys que estiguin també preparant materials didàctics amb les versions més noves del JDK de Sun (>octubre de 2009). L'experiència també m'ha servit per aprendre a compilar amb els Mac desde la línia de comandes (comandes UNIX). El meu Mac incorpora (octubre de 2009) el jdk v1.5.* i el jre v1.5.* i interpreta bé el que he compilat amb el jdk v1.4.* en un ordinador sota Windows.
/**
* MIRANT SI UN ANY a ÉS BIXSEST
*
* Recordem que:
* Un any terrestre no equival exactament a 365 dies sino, amb més precisió,
* a 365 dies i 1/4 de dia; quan es va reformar el calendari (365 dies), per ajustar
* es va establir que, a partir d'un any bixsest,
* cada quatre anys s'afegiria un dia al mes de febrer (sempre i quan les dues darreres
* xifres no fossin zeros, a execepció dels anys múltiples de 400).
*
* Sobre l'entrada de dades del programa fent ús del teclat:
* Aquest programa fa ús del teclat per demanar quin any es vol analitzar
* quan el programa ja s'ha engegat. Per això, en general, cal definir un CANAL,
* un FLUX i un FILTRE per les dades que l'usuari comunica al programa
*/

import java.io.*; // cal importar el PAQUET java.io per poder treballar amb les
// classes que aquest incorpara d'"entrada-sortida"

public class AnyBixestCanalTeclat {
public static void main(String args[]) throws IOException {
// fem ús del modificador IOException per capturar i desprendre'ns
// de les "excepcions" (errors) que es puguin donar
int any;
boolean bixsest;
String text_any;

// El següent CONSTRUCTOR farà possible el "FLUX"
// de dades (l'objecte "System.in")
InputStreamReader flux = new InputStreamReader(System.in);
// I aquest altre CONSTRUCTOR habilita el teclat com a "CANAL" (l'objecte corresponent)
// per a les dades que s'entrin
BufferedReader teclat = new BufferedReader(flux);

// Es posa en pràctica l'entrada de la paraula "text_any"
// i que entrem en forma de guarisme (tot i que, en aquest moment, pel programa és
// una cadena de caràcters
System.out.println("Quin any voleu analitzar ?");
text_any = teclat.readLine();
// primer que res, cal convertir aquesta paraula a un enter
any = (Integer.valueOf(text_any)).intValue();

// I, a partir d'aquí, fem el càlcul convenient per analitzar si l'any és bixsest
bixsest = ((any % 4 == 0) && (any % 100 !=0)) || (any % 400 == 0);

// I, finalment, tenim la sortida del programa ... que fem efectiva amb
// el MÈTODE println de l'objecte System.out (el canal i el flux de sortida
// ja estan habilitats, per defecte)
if(bixsest){System.out.println("L'any " + any + " és bixest");}
else{System.out.println("L'any " + any + " no és bixest");};
}
}

No hay comentarios:

Publicar un comentario