Mostrando entradas con la etiqueta lenguaje Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta lenguaje Java. Mostrar todas las entradas

jueves, 6 de mayo de 2021

Multiplicación de matrices en lenguaje Java

/* Aquest fitxer Matrius.java cal que estigui
ubicat dins la mateixa carpeta que el fitxer
amb les classes auxiliars

 Es compila fent
%javac Matrius.java
per obtenir el fitxer Matrius.class

I, finalment, s'engega fent
%java Matrius
*/

 
import java.io.*;
public class ProvaMatrius{ 

// aquest programa fa ús dels mètodes de la classe Matrius (Matrius.java)

  public static void main(String args[]) throws IOException {
    // inicialitzem una matriu 2x2 (cal canvira el valors
    // per poder treballar amb una matriu de diferent grandària
    int mtr[][]={{0,0},{0,0}};
    int nf=2; //nombre de files
    int nc=2; //nombre de columnes

    Matrius m = new Matrius();
    m.demanaMatriu(mtr,nf,nc);
    System.out.println("= = = the input matrix is:");
    m.mostraMatriu(mtr,nf,nc);
  }
}

Un ejercicio sencillo en lenguaje Java ( salida de un dato con formato )

/**
* Programa que dóna format a una data
**/
public class UnesDates {
public static void main(String[] args) {
java.util.Date data = new java.util.Date();
System.out.println("Una data tal qual");
System.out.println(data);
System.out.println("Una data formatada");
System.out.println(
java.text.DateFormat.getDateInstance().format(data));
}
}

Cálculos sencillos utilizando 'clases' en lenguaje Java

Aquesta classe (Volums) conté un mètode que serveix
per calcular el volum d'un cilindre (calculaVolum).
Farem ús d'aquest mètode (i, per tant, d'aquesta classe)
des d'una altra classe (ProvaPrimeraClasse) desde
la qual entrem el valor de les dades

Cal que el fitxer que conté aquesta classe (Volums.java)
estigui a la mateixa carpeta que el fitxer que conté
la classe des de la qual se'n farà ús (ProvaPrimeraClasse.java)

Cada classe de tipus 'public' ha d'estar arxivada en un fitxer
independent; no obstant això, es podria reunir vàries classes
en un sol fitxer si aquestes fossin del tipus 'private' o bé
'protected'

Classe principal


 */

public class Volums{
  public double calculaVolum(double a, double r){
    final double PI=3.14159; // una constant es declara com a 'final'
    double v;
    v = PI*Math.pow(r,2)*a;
    return v;
  }
}


Classe auxiliar


import java.io.*;

public class ProvaPrimeraClasse{
public static void main(String args[]) throws IOException {
double altura=0, radi=0;
String text;
InputStreamReader flux = new InputStreamReader(System.in);
BufferedReader teclat = new BufferedReader(flux);

System.out.println("height's value ?");
text=teclat.readLine();
altura=(Double.valueOf(text)).doubleValue();

System.out.println("value of radius ?");
text=teclat.readLine();
radi=(Double.valueOf(text)).doubleValue();

Volums v = new Volums();
System.out.println("Volum of cylinder ="+v.calculaVolum(altura,radi));
// Observem que els arguments del mètode calculaVolum (de l'objecte v)
// li són passats per valor (sempre es fa així en Java)
}
}

Multiplicación de matrices en lenguaje Java

/* Aquest fitxer ProvaMatrius.java, amb les classes auxiliars, cal que estigui
ubicat dins la mateixa carpeta que la classe principal

 Es compila fent
%javac ProvaMatrius.java

per obtenir el fitxer ProvaMatrius.class
*/

import java.io.*;

public class Matrius{

 public void demanaMatriu (int matriu[][], int nfiles, int ncolumnes ){
  int i,j;
  String text;

  InputStreamReader flux=new InputStreamReader(System.in);
  BufferedReader teclat=new BufferedReader(flux);

  try{
    for (i=0;i<nfiles;i++){
      for (j=0;j<ncolumnes;j++){
        System.out.print(" (" + i + "," + j +")=");
        text=teclat.readLine();
        matriu[i][j]=(Integer.valueOf(text)).intValue();
        }
      System.out.println(" ");
     }
  }catch (Exception e){
    System.out.println(e.getMessage());
  }
 }

 public void mostraMatriu (int matriu[][], int nfiles, int ncolumnes ){
  int i,j;
 
    for (i=0;i<nfiles;i++){
      for (j=0;j<ncolumnes;j++){
        System.out.print(matriu[i][j]+" ");
        }
      System.out.println(" ");
     }
  }


public void multiplicaMatrius (int matriu1[][], int nfiles1, int ncolumnes1, int matriu2[][], int nfiles2, int ncolumnes2, int matriu3[][], int nfiles3, int ncolumnes3){
  int i,j,k,s;
 
    for (i=0;i<nfiles1;i++){
      for (j=0;j<ncolumnes2;j++){
        s=0;
        for (k=0;k<ncolumnes2;k++){
          s+=matriu1[i][k]*matriu2[k][j]; 
        }
       matriu3[i][j]=s;
     }
  }
}
}

Un ejercicio de cálculo sencillo en lenguaje Java

import java.lang.Math;
// la classe java.lang.Math no cal expressar específicament que s'importi
//(es fa per defecte)

public class ProvaMath{
public static void main (String args[] ){

// declaració de tipus de cada variable
double p; //potència
double b; //base
double e; //exponent

// assignació de valor
b=2.0D;
e=3.0D;

// càlcul de la potència
p=Math.pow(b,e);

System.out.println("$b^e=p$");
System.out.println(b+"^"+e+"="+p);
}
}

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");};
}
}

Entrada de datos por teclado en lenguaje Java

import java.io.*;
public class ProvaEntradaTeclat{
public static void main (String args[] ) throws IOException {

// declaració de tipus de la variable corresponent al nomb que entrem
String nomQueEntrem;

// declaració de les variables referenciades flux i teclat(canal)
InputStreamReader flux; // flux
BufferedReader teclat; // canal

// construcció dels objectes flux i teclat(canal)
flux = new InputStreamReader(System.in); // System.in identifica el teclat com a prfr d'entrada
teclat = new BufferedReader(flux);

System.out.println("type your name, please: ");
nomQueEntrem = teclat.readLine();
System.out.println("Your name is: "+nomQueEntrem);
}
}

Elaboración de un paquete de código ( package ) en lenguaje Java

package ExempleCase; // Empaquetant

/**
Per engegar el programa empaquetat cal que feu
java -jar "camí_del_fitxer.exemple_case.jar"
*/

public class ExempleCase {

public static void main(String args[]) {int mes;
mes = 2; // és necessari donar un valor inicial a la variable
switch (mes) {
case 1:
System.out.println("El mes de gener té 31 dies");
break;
case 2:
System.out.println("El mes de febrer té 28 dies si l'any no és de traspàs; i 29, si l'és");
break;
case 3:
System.out.println("El mes de març té 31 dies");
break;
case 4:
System.out.println("El mes d'abril té 30 dies");
break;
case 5:
System.out.println("El mes de maig té 31 dies");
break;
case 6:
System.out.println("El mes de juny té 30 dies");
break;
case 7:
System.out.println("El mes de juliol té 31 dies");
break;
case 8:
System.out.println("El mes d'agost té 31 dies");
break;
case 9:
System.out.println("El mes de setembre té 30 dies");
break;
case 10:
System.out.println("El mes d'octubre té 31 dies");
break;
case 11:
System.out.println("El mes de novembre té 30 dies");
break;
case 12:
System.out.println("El mes de desembre té 31 dies");
break;
default:
}
}

}

Paso de parámetros por valor en el lenguaje Java

import java.io.*;

public class ProvaPrimeraClasse{
public static void main(String args[]) throws IOException {
double altura=0, radi=0;
String text;
InputStreamReader flux = new InputStreamReader(System.in);
BufferedReader teclat = new BufferedReader(flux);

System.out.println("height's value ?");
text=teclat.readLine();
altura=(Double.valueOf(text)).doubleValue();

System.out.println("value of radius ?");
text=teclat.readLine();
radi=(Double.valueOf(text)).doubleValue();

Volums v = new Volums();
System.out.println("Volum of cylinder ="+v.calculaVolum(altura,radi));
// Observem que els arguments del mètode calculaVolum (de l'objecte v)
// li són passats per valor (sempre es fa així en Java)
}
}

Otro ejercicio de programación en lenguaje Java sobre cálculos básicos

public class ProvaEnters{
public static void main (String args[] ){

// declaració de tipus de cada variable
byte e_1_byte; //rang: de -2^{-7} a 2^7-1 (de -128 a 127)
short e_2_byte; //rang: de -2^{-15} a 2^15-1 (de -32768 a 32767)
int e_4_byte; //rang: de -2^{-31} a 2^31-1 (de -2147483648 a 2147483647)
long e_8_byte; //rang: de -2^{-63} a 2^63-1 (de -92233720366854775808 a -92233720366854775807)

// assignació de valor
e_1_byte=-112;
e_2_byte=31245;
e_4_byte=42765;
e_8_byte=1589944592;

System.out.println("exemple de quantitat entera tipus 'byte' (1 byte)="+e_1_byte);
System.out.println("exemple de quantitat entera tipus 'short'(2 byte)="+e_2_byte);
System.out.println("exemple de quantitat entera tipus 'int' (4 byte) ="+e_4_byte);
System.out.println("exemple de quantitat entera tipus 'long' (8 byte)="+e_8_byte);

}
}

Un ejercicio sencillo de asignación de valor a una variable de tipo carácter

public class ProvaChar{
public static void main (String args[] ){

// declaració de tipus de cada variable
char c_1;

// assignació de valor
c_1='w';

System.out.println("lletra "+c_1);
}
}

Un ejercicio de cálculo básico en leguaje Java

public class ProvaReals{
public static void main (String args[] ){
float increment_percentual;
double q_final,q_inicial,increment;

q_final=4E+0D;
q_inicial=1.2E+0D;
increment=q_final-q_inicial;
increment_percentual = (float) (increment*100/q_inicial);

System.out.println("Q_f="+q_final);
System.out.println("Q_i="+q_inicial);
System.out.println("increment="+increment);
System.out.println("increment percentual="+increment_percentual+" %");
}
}

Un ejercicio de prueba con cadenas de caracteres en lenguaje Java

Un exercici senzill:
public class Cadena{
public static void main(String args[]){
String nom;
nom = "Miquel";
System.out.print("El nom" + nom + "té" + nom.length() + "caràcters\n");
System.out.print("El nom" + nom + "té la lletra 'q' en la posició" + nom.indexOf("q") + "\n");
}
}


Un exercici una mica més complet:

public class ProvaString{
public static void main (String args[] ){

// declaració de tipus de cada variable
String nom;
String nombre;
String name;
int position_letter_o;

// assignació de valor
nom="Joan";
nombre="Juan";
name="John";
position_letter_o=nom.indexOf("o")+ 1;
System.out.println("The word "+nom+" has "+nom.length()+" characters \n");
System.out.println("The first character of the word "+nom+" is "+nom.charAt(0)+"\n");
System.out.println("The word "+nom+" has the letter 'o' in "+position_letter_o+"nd position \n");
System.out.println("The word "+nom+" is the same as "+nom.toUpperCase()+" \n");
System.out.println("The first name "+nom+" (catalan) is the same as "+nom.replace(nom,nombre)+" in spanish \n");
System.out.println("The first name "+nom+" (catalan) is the same as "+nom.replace(nom,name)+" in english \n");
}
}

Redondeos en lenguaje Java

public class Arrodoniments {
public static void main(String[] arg) {

int i = 7;
int j = -9;
double x = 72.3543;
double y = 0.3498;

System.out.println("i es " + i);
System.out.println("j es " + j);
System.out.println("x es " + x);
System.out.println("y es " + y);

// Valor absoluto de un número
System.out.println("|" + i + "| es " + Math.abs(i));
System.out.println("|" + j + "| es " + Math.abs(j));
System.out.println("|" + x + "| es " + Math.abs(x));
System.out.println("|" + y + "| es " + Math.abs(y));

// aproximación decimal
//empleando (round)
System.out.println(x + " es " + Math.round(x));
System.out.println(y + " es " + Math.round(y));

System.out.println(x + " es aprox." + (double)Math.round(x*100)/100);
System.out.println(y + " es aprox." + (double)Math.round(y*100)/100);

//empleando floor
System.out.println("The floor of " + x + " es " + (100*Math.floor(x))/100);
System.out.println("The floor of " + y + " es " + (100*Math.floor(y))/100);

// para hallar el menor de dos números
System.out.println("min(" + i + "," + j + ") es " + Math.min(i,j));
System.out.println("min(" + x + "," + y + ") es " + Math.min(x,y));

// Para hallar el mayor de dos números
System.out.println("max(" + i + "," + j + ") es " + Math.max(i,j));
System.out.println("max(" + x + "," + y + ") es " + Math.max(x,y));

// las constantes PI y E
System.out.println("Pi es " + Math.PI);
System.out.println("e es " + Math.E);

//funciones trigonomètricas
double angulo = 45.0 * Math.PI/180.0;
System.out.println("cos(" + angulo + ") es " + Math.cos(angulo));
System.out.println("sin(" + angulo + ") es " + Math.sin(angulo));
System.out.println("tan(" + angulo + ") es " + Math.tan(angulo));

// Funciones trigonomètricas inversas
double valor = 0.707;
System.out.println("acos(" + valor + ") es " + Math.acos(valor));
System.out.println("asin(" + valor + ") es " + Math.asin(valor));
System.out.println("atan(" + valor + ") es " + Math.atan(valor));
y=6.2; //ordenada
x=-5.4; //abscisa
System.out.println("atan2(" + y+" , "+x + ") es " + Math.atan2(y, x));

//Funciones exponencial y logarítmica
System.out.println("exp(1.0) es " + Math.exp(1.0));
System.out.println("exp(10.0) es " + Math.exp(10.0));
System.out.println("exp(0.0) es " + Math.exp(0.0));

System.out.println("log(1.0) es " + Math.log(1.0));
System.out.println("log(10.0) es " + Math.log(10.0));
System.out.println("log(Math.E) es " + Math.log(Math.E));

// pow(x,y) devuelve x elevado a y.
System.out.println("pow(2.0, 2.0) es " + Math.pow(2.0,2.0));
System.out.println("pow(10.0, 3.5) es " + Math.pow(10.0,3.5));
System.out.println("pow(8, -1) es " + Math.pow(8,-1));

// sqrt(x) devuelve la raíz cuadrada de x.
System.out.println("La raíz cuadrada de " + y + " es " + Math.sqrt(y));

// Devuelve un número pseudo-aleatorio comprendido entre 0.0 y 1.0
System.out.println("Número aleatorio: " + Math.random());
System.out.println("Otro número aleatorio: " + Math.random());

try {
//espera la pulsación de una tecla y luego RETORNO
System.in.read();
}catch (Exception ex) { }
}
}

Una prueba con la instrucción "switch ... case" del lenguaje Java

public class ExempleCase {

public static void main(String args[]) {int mes;
mes = 2; // és necessari donar un valor inicial a la variable
switch (mes) {
case 1:
System.out.println("El mes de gener té 31 dies");
break;
case 2:
System.out.println("El mes de febrer té 28 dies si l'any no és de traspàs; i 29, si l'és");
break;
case 3:
System.out.println("El mes de març té 31 dies");
break;
case 4:
System.out.println("El mes d'abril té 30 dies");
break;
case 5:
System.out.println("El mes de maig té 31 dies");
break;
case 6:
System.out.println("El mes de juny té 30 dies");
break;
case 7:
System.out.println("El mes de juliol té 31 dies");
break;
case 8:
System.out.println("El mes d'agost té 31 dies");
break;
case 9:
System.out.println("El mes de setembre té 30 dies");
break;
case 10:
System.out.println("El mes d'octubre té 31 dies");
break;
case 11:
System.out.println("El mes de novembre té 30 dies");
break;
case 12:
System.out.println("El mes de desembre té 31 dies");
break;
default:
}
}
}

jueves, 29 de abril de 2021

Paso de parámetros a un applet de JAVA desde una archivo HTML mediante instrucciones de JavaScript

// 
// Joan Aranes Clua (2003)
// Exemple 3.2 Ús de paràmetres i 
// assignació de valor a través del fitxer HTML
// tipus de programa: applet
// fitxer amb el codi font: Exemple.java

import java.awt.*;
import java.applet.*;

public class Exemple extends Applet
{
  String car_1,car_2,car_3;

  public void init()
  {
    car_1=getParameter("param1");
    car_2=getParameter("param2");
    car_3=getParameter("param3");
  }

  public void paint(Graphics g)
  {
    g.drawString(car_1,10,25);
    g.drawString(car_2,20,25);
    g.drawString(car_3,30,25);
  }
}

Després de compilar el fitxer Exemple.java 
(fent %javac Exemple.java) s'obté el fitxer Exemple.class
el qual ja es pot fer servir en una pàgina web. 

El codi HTML bàsic de la pàgina web (Exemple.htm) que crida l'applet és:

<html>
<head><title>  Exemple.htm </title><head>
<body>
  <applet code=Exemple.class width=300 height=100>
    <param name="param1" value="a">
    <param name="param2" value="b">
    <param name="param3" value="c">
  </applet>
</body>
</html>