Una tabella
Specifiche:
Si generi una matrice 5 x 5 di numeri casuali da -99.99 a 99.99 e si stampi il suo contenuto all'interno di una tabella 5 x 5 simile alla seguente:
+------+------+
| 99.99|-99.99|
+------+------+
| 9.1 | -1 |
+------+------+
mantenendo fissa la posizione del punto decimale ed eliminando gli zeri non significativi.
PERL:
for my $i(0..4) {
for my $j(0..4) {
$v[$i][$j] = int(rand(1999)-999)/100;
}
}
$l = "+------+------+------+------+------+n";
print $l;
for my $i(0..4) {
for my $j(0..4) {
$r = "|";
$r .= " " if ($v[$i][$j]>-10);
$r .= " " if ( ($v[$i][$j]>=0) && ($v[$i][$j]<10) );
print $r.$v[$i][$j];
if ($v[$i][$j] == int($v[$i][$j])) {
print " ";
} elsif (($v[$i][$j]*10) == int($v[$i][$j]*10)) {
print " ";
}
print " " if (length($r.$v[$i][$j]) < 4);
print " " if (length($r.$v[$i][$j]) < 5);
}
print "|\n$l";
}
JAVA:
class UnaTabella {
public static void main(String[] args) {
String l =
"+-------+-------+-------+-------+-------+";
double[][] v = { { 0,0,0,0,0 },
{ 0,0,0,0,0 },
{ 0,0,0,0,0 },
{ 0,0,0,0,0 },
{ 0,0,0,0,0 } };
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
v[i][j] =
((int)(((Math.random()*1999)-999)*10));
v[i][j] /= 100;
}
}
System.out.println(l);
for (int i = 0; i < 5; i++) {
String z = "";
for (int j = 0; j < 5; j++) {
String s = "|";
if (v[i][j]>-10) {
s += " ";
}
if ( (v[i][j]>=0) && (v[i][j]<10) ) {
s += " ";
}
s += v[i][j]+" ";
if (s.length() < 8) {
s += " ";
}
z+=s;
}
System.out.println(z+"|\n"+l);
}
}
}
PHP:
<?php
$v = array();
srand((double)microtime()*1000000);
for ( $i = 0; $i < 5; $i++) {
for ( $j = 0; $j < 5; $j++) {
$v[$i][$j] = intval(rand(0,1999)-999)/10;
}
}
$l = "+------+------+------+------+------+n";
print $l;
for ( $i = 0; $i < 5; $i++) {
for ( $j = 0; $j < 5; $j++) {
$r = "|";
if ($v[$i][$j]>-10) {
$r .= " ";
}
if ( ($v[$i][$j]>=0) && ($v[$i][$j]<10) ) {
$r .= " ";
}
print $r.$v[$i][$j];
if ($v[$i][$j] == intval($v[$i][$j])) {
print " ";
} elseif (($v[$i][$j]*10) == intval($v[$i][$j]*10)) {
print " ";
}
if (strlen($r.$v[$i][$j]) < 4) {
print " ";
}
if (strlen($r.$v[$i][$j]) < 5) {
print " ";
}
}
print "|\n$l";
}
?>
Osservazioni:
E' molto probabile che in ciascuno di questi tre linguaggi esistano scorciatoie per fare quello che ho fatto usando i test per la lunghezza della stringa, penso a funzioni tipo printf o sprintf. Suggerimenti in questa direzione sono bene accetti! :)
La sintassi per le matrice e' abbastanza comprensibile.
Casting implicito per le variabili tipate del java, e un overload dell' operatore '+' che fa sia da somma che da concatenatore di stringhe. Si veda a questo proposito il comando
s += v[i][j]+" ";
dove s e' una String e v[i][j] un double.
Sort the chaos
Specifiche:
Generare un array di 10 numeri interi casuali (minimo 0, massimo 9), ordinarlo e stamparlo.
Stampare inoltre la media dei valori, il massimo e il minimo.
PERL:
$sum = 0;
$min = 11;
$max = -1;
for $i (0..9) {
$v[$i] = int(rand(10));
$sum += $v[$i];
$max = $v[$i] if ($max < $v[$i]);
$min = $v[$i] if ($min > $v[$i]);
}
print
"Mean: ".($sum/10)."\n".
"Min: $min\n".
"Max: $max\n";
JAVA:
class SortTheChaos {
public static void main(String[] args) {
int[] v = { 0,0,0,0,0,0,0,0,0,0 };
int sum = 0;
int min = 11;
int max = -1;
for (int j=0; j<9 ; j++) {
v[j] = (int)(Math.random()*10);
sum += v[j];
if (min > v[j]) {
min = v[j];
}
if (max < v[j]) {
max = v[j];
}
}
System.out.println("Mean :"+(sum/10));
System.out.println("Min :"+min);
System.out.println("Max :"+max);
}
}
PHP:
<?php
$sum = 0;
$min = 11;
$max = -1;
$v = array();
srand((double)microtime()*1000000);
for ( $i = 0; $i < 10; $i++) {
$v[$i] = rand(0,9);
$sum += $v[$i];
if ($max < $v[$i]) {
$max = $v[$i];
}
if ($min > $v[$i]) {
$min = $v[$i];
}
}
print
"Mean: ".($sum/10)."\n".
"Min: $min\n".
"Max: $max\n";
?>
Osservazioni:
La prima cosa che salta all'occhio e' l'estrema somiglianza tra le sintassi del Perl e del PHP.
Dalla versione 5.004, la funzione srand() in Perl viene chiamata implicitamente alla prima esecuzione della funzione rand().
Lo scopo di srand() e' di inizializzare la sequenza di numeri pseudocasuali in modo che, per ogni esecuzione del programma, si ottenga una sequenza diversa di numeri pseudocasuali. Anche in Java, il metodo random della classe statica Math, fa si' che si crei implicitamente un generatore di numeri pseudocasuali (istanziazione della classe java.util.Random).
Sempre sul codice Java si osservi la sintassi per l'inizializzazione (obbligatoria) dell'array, con le parentesi graffe.
Hello World!
Certamente non sono stato il primo ad avere l'idea per un blog di questo tipo, si veda per esempio il mitico Hello World: http://www2.latech.edu/~acm/HelloWorld.shtml (che non include pero' il PHP).
Un altro sito molto simile a perl2javaphp e' appunto perl2java. :)
PERL:
print "Hello, World!n";
JAVA:
class HelloWorld {
public static void main (String args[]) {
System.out.println("Hello World!");
}
}
PHP:
<?php
echo 'Hello World!';
?>
Sinossi
Questo blog nasce dall'esigenza personale di espandere i miei orizzonti professionali.
Dato che uso il Perl per il 99% del codice che scrivo, voglio tentare di mantenere un blog nel quale elencare programmi che fanno sostanzialmente la stessa cosa in Perl, Java e PHP.
I lettori sono invitati a collaborare attivamente, con commenti, suggerimenti e proposte. Questo e' un luogo dove si impara, non un luogo dove si fa mostra delle proprie capacita'. Non e' nemmeno un posto dove si decide se un linguaggio e' meglio di un altro. In ogni situazione, ognuno puo' valutare a seconda delle proprie esigenze/preferenze se e' meglio utilizzare il linguaggio X al posto del linguaggio Z. Siate liberi di operare come volete, TIMTOWTDI. :)





Ultimi commenti