lunedì, dicembre 01, 2014

Esercitazioni su node.js: esercizio 1

Con questo post, comincia una serie di esercitazioni pratiche, tratte dal sito nodeschool.io, per prendere confidenza con le librerie del linguaggio.

Testo dell'esercizio
Scrivere un programma che accetti uno o più numeri come parametri da linea di comando e che stampi a video la somma di tali numeri.
Esempio di invocazione del programma: node programma.js 2 3 5 , in tal caso l'output sarà 10.

Suggerimenti
Per risolvere l'esercizio, dare un'occhiata alla documentazione ufficila sull' oggetto globale process, in particolare alla proprietà process.argv.

Esempio di utilizzo di un ciclo for in javascript

 var indice,  
   max = 10;  
   for (indice = 1; indice <= max; indice++) {  
        console.log(indice);  
   }  
          

Una possibile Soluzione
 var somma = 0,  
     i = 0;  
   
 if (process.argv.length > 2) {  
      for (i = 2; i < process.argv.length; i++) {  
           if (Number(process.argv[i])) {  
              somma += parseInt(process.argv[i]);  
           }  
           else {  
              console.log("Parametro " + process.argv[i] + " non è un numero!" );  
           }  
      }   
      console.log(somma);  
 } else {  
      console.log('Esempio di utilizzo : node programma.js 1 3 5');  
 }  

Per convertire una stringa in un intero, ho utilizzato la funzione Number che trasforma una stringa nell'intero equivalente o ritorna NaN (Not a Number) nel caso in cui la stringa non rappresenti un numero.

In javascript esistono i concetti di valore falsy e truthy per le espressioni booleane: i numeri sono considerati valori veri mentre NaN, null, undefined valori falsi: Number('ertttt') ritorna dunque NaN che nell'if viene valutato a false.

Ho aggiornato su github il progetto, effettuate un git pull per aggiornare i sorgenti che avete in locale, come mostrato in questo post

Alla prox
Ivan