Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Gestire i numeri romani in PHP

Articolo scritto da Claudio Garau

I numeri romani trovano ancora largo uso al giorno d'oggi, sono infatti molto diffusi per la creazione e l'ordinamento di elenchi, per l'indicazione di anni, per classificare la posizione gerarchica di un elemento all'interno di un organigramma e molto altro.

Come è noto in matematica non si usano i numeri romani ma le cifre arabe, infatti gli antichi Romani utilizzavano le lettere per indicare date, quantità e risultati di altre misurazioni, ciò li rende degli strumenti poco pratici per l'esecuzione di calcoli.

(L'articolo continua più sotto...)

In ogni caso esiste una corrispondenza in termini di valore tra i numeri romani e le cifre arabe (utilizzate in Europa da oltre 1000 anni), questo ci permette di tradurre i primi nei secondi con alcuni semplici accorgimenti come per esempio utilizzare unicamente numeri interi (i romani non tenevano conto dei decimali).

In questa breve trattazione vedremo come sia possibile creare una semplice funzione in grado di "tradurre" le cifre arabe (i numeri che usiamo noi) in numeri romani.

Per passare al lato pratico della questione proporremo immediatamente il codice dell'applicazione lasciando a dopo gli approfondimenti, i commenti aiuteranno a comprendere i vari passaggi affrontati in sede di sviluppo:

<?php
# definiamo il nome della funzione
function numeri_romani($cifra) 
{
  # ricaviamo il numero intero dal parametro passato alla funzione
  $numero = intval($cifra);

  # creo una variabile vuota che utilizzerò per l'output
  $output = '';

  # creaiamo un array di numeri romani
  # già ordinati progressivamente da più grande al più piccolo
  $numeri_romani = array(
    'M' => 1000,
    'CM' => 900,
    'D' => 500,
    'CD' => 400,
    'C' => 100,
    'XC' => 90,
    'L' => 50,
    'XL' => 40,
    'X' => 10,
    'IX' => 9,
    'V' => 5,
    'IV' => 4,
    'I' => 1
  );

  # cicliamo l'array 
  foreach ($numeri_romani as $val => $v) 
  {
    # dividiamo il parametro della funzione per i valori contenuti
    # nell'array e ricaviamo dal risultato il numero intero 
    $valore = intval($numero / $v);

    # ripetiamo la stringa ottenuta per un numero di volte pari al
    # numero intero ottenuto in precedenza
    $output .= str_repeat($val, $valore);

    # calcoliamo il resto della divisione
    $numero = $numero % $v;
  }

  # valore di ritorno della funzione
  return $output;
}
?>
Nello specifico è possibile riassumere i passaggi salienti dello script appena proposto in alcuni punti: Per utilizzare la funzione creata, basterà passare ad essa un numero in cifre arabe; nell'esempio seguente è stato passato alla funzione un argomento pari alla cifra dell'anno corrente:
<?php
# definiamo una variabile contenente come valore l'anno corrente
$anno = date('Y');

# passiamo la variabile definita come argomento della funzione
echo numeri_romani($anno);
?>
Il risultato dell'esecuzione di questa applicazione sarà "MMIX" cioè due volte "1000" ("MM" in cifre romane) + "9" ("IX" in cifre romane).

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122