<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:access="http://www.bloglines.com/about/specs/fac-1.0">
  <access:restriction relationship="allow" />
  <channel>
    <title>rubyacademy</title>
    <link>http://rubyacademy.pbworks.com</link>
    <description>Rubini per bambini</description>
    <language>it</language>
    <image>
      <url>http://rubyacademy.pbworks.com/feedlogo.gif</url>
      <title>rubyacademy</title>      
      <link>http://rubyacademy.pbworks.com</link>
    </image>
    <generator>PBworks 2.3.9</generator>
    <webMaster>support@pbworks.com (PBworks)</webMaster>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Le classi<br>Prima abbiamo visto diversi generi, o classi, di oggetti: stringhe, interi, decimali, array e qualche oggetto speciale (true, false, and nil) che vedremo in seguito. In Ruby, queste classi iniziano sempre per lettera maiuscola: String, Integer, Float, Array... etc. In generale se si vuole creare un nuovo oggetto di una classe si usa new:<br> Array.<del> b</del><ins>  b</ins> = String.new + 'hello'  #  Somma di<del> String.c</del><ins> String. c</ins> =<del> Time.newputs</del><ins> Time.new puts</ins> 'a =<del> '+a.to_sputs</del><ins> '+a.to_s puts</ins> 'b =<del> '+b.to_sputs</del><ins> '+b.to_s puts</ins> 'c =<del> '+c.to_sa</del><ins> '+c.to_s a</ins> =<del> 12345b</del><ins> 12345 b</ins> =<del> helloc</del><ins> hello c</ins> = Sat May 05 06:11:13 GMT 2007<br>Dato che gli array e le stringhe possono essere creati usando rispettivamente %5B...%5D e '...' , raramente useremo new per crearli. (Benché questo non sia evidente dall'esempio, String.new crea una stringa vuota, e Array.new crea un array vuoto.) Infine, i numeri rappresentano un'eccezione: non è possibile creare un intero con Integer.new. Bisogna scrivere l'intero direttamente.<br>La classe Time<br>]]></description>
        <pubDate>Sun, 22 Feb 2009 10:19:11 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-19-11</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Se si usa un array, bisogna ricordarsi che la posizione 0 rappresenta le stringhe, la 1 i numeri, etc. Se si usa un hash invece è tutto molto semplice! Il posto 'stringhe' conterrà ovviamente il colore delle stringhe. Niente da ricordare. Avrete sicuramente notato che quando si usa  each, gli oggetti dell'hash non vengono fuori nello stesso ordine d'inserimento. (Almeno non è successo quando l'ho scritto. Ma potrebbero esserlo ora... con gli hash non si sa mai.) Per tenere le cose in ordine vanno usati gli array, non gli hash.<br>Sebbene le persone usino delle stringhe per identificare le posizioni negli hash, si può anche usare qualsiasi tipo di oggetti, anche array o altri hash (sebbene non mi venga in mente nessun buon motivo per farlo...):<br> =<del> Hash.new<br>weirdHash%5B12%5D</del><ins> Hash.newweirdHash12</ins> =<del> 'monkeys'<br>weirdHash%5B%5B%5D%5D</del><ins> 'monkeys'weirdHash%5B%5D</ins> =<del> 'emptiness'<br>weirdHash%5BTime.new%5D</del><ins> 'emptiness'weirdHash%5BTime.new%5D</ins> = 'no time like the present'<br>Hash e array vanno utilizzati per cose differenti; spetta a voi decidere quale scelta è la migliore per il particolare problema.<br>Estendere le classi<br>]]></description>
        <pubDate>Sun, 22 Feb 2009 10:18:04 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-18-04</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Se si usa un array, bisogna ricordarsi che la posizione 0 rappresenta le stringhe, la 1 i numeri, etc. Se si usa un hash invece è tutto molto semplice! Il posto 'stringhe' conterrà ovviamente il colore delle stringhe. Niente da ricordare. Avrete sicuramente notato che quando si usa  each, gli oggetti dell'hash non vengono fuori nello stesso ordine d'inserimento. (Almeno non è successo quando l'ho scritto. Ma potrebbero esserlo ora... con gli hash non si sa mai.) Per tenere le cose in ordine vanno usati gli array, non gli hash.<br>Sebbene le persone usino delle stringhe per identificare le posizioni negli hash, si può anche usare qualsiasi tipo di oggetti, anche array o altri hash (sebbene non mi venga in mente nessun buon motivo per farlo...):<br> =<del> Hash.newweirdHash12</del><ins> Hash.new<br>weirdHash%5B12%5D</ins> =<del> 'monkeys'weirdHash%5B%5D</del><ins> 'monkeys'<br>weirdHash%5B%5B%5D%5D</ins> =<del> 'emptiness'weirdHash%5BTime.new%5D</del><ins> 'emptiness'<br>weirdHash%5BTime.new%5D</ins> = 'no time like the present'<br>Hash e array vanno utilizzati per cose differenti; spetta a voi decidere quale scelta è la migliore per il particolare problema.<br>Estendere le classi<br>]]></description>
        <pubDate>Sun, 22 Feb 2009 10:17:41 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-17-41</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Le classi<br>Prima abbiamo visto diversi generi, o classi, di oggetti: stringhe, interi, decimali, array e qualche oggetto speciale (true, false, and nil) che vedremo in seguito. In Ruby, queste classi iniziano sempre per lettera maiuscola: String, Integer, Float, Array... etc. In generale se si vuole creare un nuovo oggetto di una classe si usa new:<br> Array.<del><br>b</del><ins> b</ins> = String.new + 'hello'  #  Somma di<del> String.<br>c</del><ins> String.c</ins> =<del> Time.new<br>puts</del><ins> Time.newputs</ins> 'a =<del> '+a.to_s<br>puts</del><ins> '+a.to_sputs</ins> 'b =<del> '+b.to_s<br>puts</del><ins> '+b.to_sputs</ins> 'c =<del> '+c.to_s<br>a</del><ins> '+c.to_sa</ins> =<del> 12345<br>b</del><ins> 12345b</ins> =<del> hello<br>c</del><ins> helloc</ins> = Sat May 05 06:11:13 GMT 2007<br>Dato che gli array e le stringhe possono essere creati usando rispettivamente %5B...%5D e '...' , raramente useremo new per crearli. (Benché questo non sia evidente dall'esempio, String.new crea una stringa vuota, e Array.new crea un array vuoto.) Infine, i numeri rappresentano un'eccezione: non è possibile creare un intero con Integer.new. Bisogna scrivere l'intero direttamente.<br>La classe Time<br>Dunque che roba è la classe Time? Gli oggetti Time rappresentano momenti di tempo. E' possibile aggiungere (o sottrarre) numeri al (o dal) tempo per ottenere nuovi tempi: aggiungendo 1.5 si ha un nuovo tempo con un secondo e mezzo in più:<br> momento<del> attuale.<br>time2</del><ins> attuale.time2</ins> = time + 60  #  Un minuto<del> dopo.<br>puts time<br>puts time2<br>Sat</del><ins> dopo.puts timeputs time2Sat</ins> May 05 06:11:13 GMT<del> 2007<br>Sat</del><ins> 2007Sat</ins> May 05 06:12:13 GMT 2007<br>E' possibile anche creare un tempo che rappresenta uno specifico momento usando Time.mktime:<br>  L'anno<del> duemila.<br>puts</del><ins> duemila.puts</ins> Time.mktime(1976, 8, 3, 10, 11)  #  Quando sono<del> nato.<br>Sat</del><ins> nato.Sat</ins> Jan 01 00:00:00 GMT<del> 2000<br>Tue</del><ins> 2000Tue</ins> Aug 03 10:11:00 GMT 1976<br>Nota: questa è la mia data di nascita in Pacific Daylight Savings Time (PDT). Quando il duemila è arrivato era Pacific Standard Time (PST), almeno per noi della West Coast. Le parentesi raggruppano i parametri di mktime. Più parametri vengono aggiunti, più accurato sarà il tempo. Provate!<br>Si possono confrontare i tempi usando il metodo di confronto (un tempo precedente è minore di un tempo successivo), e se si sottraggono due tempi si ottiene la loro differenza in secondi. Giocateci un po'!<br>La classe Hash<br>Un'altra utile classe è Hash. Un hash è una specie di array: ha un mucchio di posti che possono puntare a diversi oggetti. Negli array i posti sono allineati in una riga e sono tutti numerati (partendo da zero). In un hash i posti non sono allineati (sono ammucchiati tutti insieme), ed è possibile usare qualsiasi oggetto per fare riferimento ad essi. E' una buona idea uare gli hash quando si vuole tenere traccia di un sacco di cose che non non si adattano bene a stare in una lista ordinata. Ad esempio i colori utilizzati per le diverse parti del codice in questo documento:<br> di<del> Array.new<br>colorHash</del><ins> Array.newcolorHash</ins>  = {}  #  Lo stesso di<del> Hash.new<br>colorArray0</del><ins> Hash.newcolorArray0</ins>         =<del> 'rosso'<br>colorArray1</del><ins> 'rosso'colorArray1</ins>         =<del> 'verde'<br>colorArray2</del><ins> 'verde'colorArray2</ins>         =<del> 'blu'<br>colorHash'stringhe'</del><ins> 'blu'colorHash'stringhe'</ins>  =<del> 'rosso'<br>colorHash'numeri'</del><ins> 'rosso'colorHash'numeri'</ins>    =<del> 'verde'<br>colorHash'keyword'</del><ins> 'verde'colorHash'keyword'</ins>   =<del> 'blu'<br>colorArray.each</del><ins> 'blu'colorArray.each</ins> do color<del><br>puts color<br>end<br>colorHash.each</del><ins>  puts colorendcolorHash.each</ins> do codeType, color<del><br>puts</del><ins>  puts</ins> codeType + ':  ' +<del> color<br>end<br>rosso<br>verde<br>blu<br>stringhe:  rosso<br>keyword:  blu<br>numeri:</del><ins> colorendrossoverdeblustringhe:  rossokeyword:  blunumeri:</ins>  verde<br>Se si usa un array, bisogna ricordarsi che la posizione 0 rappresenta le stringhe, la 1 i numeri, etc. Se si usa un hash invece è tutto molto semplice! Il posto 'stringhe' conterrà ovviamente il colore delle stringhe. Niente da ricordare. Avrete sicuramente notato che quando si usa  each, gli oggetti dell'hash non vengono fuori nello stesso ordine d'inserimento. (Almeno non è successo quando l'ho scritto. Ma potrebbero esserlo ora... con gli hash non si sa mai.) Per tenere le cose in ordine vanno usati gli array, non gli hash.<br>Sebbene le persone usino delle stringhe per identificare le posizioni negli hash, si può anche usare qualsiasi tipo di oggetti, anche array o altri hash (sebbene non mi venga in mente nessun buon motivo per farlo...):<br> =<del> Hash.new<br>weirdHash12</del><ins> Hash.newweirdHash12</ins> =<del> 'monkeys'<br>weirdHash%5B%5D</del><ins> 'monkeys'weirdHash%5B%5D</ins> =<del> 'emptiness'<br>weirdHash%5BTime.new%5D</del><ins> 'emptiness'weirdHash%5BTime.new%5D</ins> = 'no time like the present'<br>Hash e array vanno utilizzati per cose differenti; spetta a voi decidere quale scelta è la migliore per il particolare problema.<br>Estendere le classi<br>Alla fine dell'ultimo capitolo, avete scritto un metodo per ottenete la parola corrispondente ad un numero intero. Non era un metodo per gli interi; era solo un metodo generico. Non sarebbe bello poter scrivere qualcosa tipo 22.to_eng invece di englishNumber 22? Ecco come farlo:<br> Integer<del><br>def</del><ins>  def</ins> to_eng<del><br>if</del><ins>    if</ins> self == 5<del><br>english</del><ins>      english</ins> = 'five'<del><br>else<br>english</del><ins>    else      english</ins> = 'fifty-eight'<del><br>end<br>english<br>end<br>end<br>Testiamolo</del><ins>    end    english  endend#  Testiamolo</ins> su una coppia di<del> numeri...<br>puts 5.to_eng<br>puts 58.to_eng<br>five<br>fifty-eight</del><ins> numeri...puts 5.to_engputs 58.to_engfivefifty-eight</ins><br>Bene, l'abbiamo provato; sembra funzionare. ;)<br>Abbiamo definito un metodo per i numeri interi saltando per un momento nella classe Integer. Ora tutti gli interi hanno questo (un po' incompleto) metodo. In realtà, se ad esempio non ci piacesse il funzionamento del metodo to_s potremmo anche pensare di ridefinirlo in qualche altro modo... ma non è una buona idea! E' meglio lasciare i vecchi metodi in pace e farne di nuovi quando si deve fare qualcosa di nuovo.<br>Creare le classi<br>Abbiamo visto un gran numero di diverse classe di oggetti. Comunque è semplice arrivare a tipi di oggetti che Ruby non ha. Fortunatamente creare nuove classi è semplice come modificare quelle già esistenti. Diciamo di voler creare dei dadi in Ruby. Ecco come si potrebbe rendere la classe Dado:<br> Dado<del><br>def</del><ins>  def</ins> rotola<del><br>1</del><ins>    1</ins> + rand(6)<del><br>end<br>end<br>Creiamo</del><ins>  endend#  Creiamo</ins> una coppia di<del> dadi...<br>dadi</del><ins> dadi...dadi</ins> = %5BDado.new,<del> Dado.new%5D<br>...e tiriamoli.<br>dadi.each</del><ins> Dado.new%5D#  ...e tiriamoli.dadi.each</ins> do dado<del><br>puts dado.rotola<br>end<br>2<br>1</del><ins>  puts dado.rotolaend21</ins><br>(Se avete saltato la sezione sui numeri casuali, rand(6) restituisce un numero casuale compreso tra 0 e 5.)<br>E il gioco è fatto! I nostri oggetti. Tiriamo i dadi alcune volte (con il tasto reload del browser) e vediamo cosa viene fuori.<br>]]></description>
        <pubDate>Sun, 22 Feb 2009 10:16:37 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-16-37</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[]]></description>
        <pubDate>Sun, 22 Feb 2009 10:14:19 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-14-19</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Le classi<br>Prima abbiamo visto diversi generi, o classi, di oggetti: stringhe, interi, decimali, array e qualche oggetto speciale (true, false, and nil) che vedremo in seguito. In Ruby, queste classi iniziano sempre per lettera maiuscola: String, Integer, Float, Array... etc. In generale se si vuole creare un nuovo oggetto di una classe si usa new:<br> Array.new<del>  +&lt;raw&gt; 12345  &lt;/raw&gt;#</del><ins> + %5B12345%5D #</ins>  Somma di Array.<br>b = String.new + 'hello'  #  Somma di String.<br>c = Time.new<br>end<br>end<br><del>#  Testiamolo</del><ins>Testiamolo</ins> su una coppia di numeri...<br>puts 5.to_eng<br>puts 58.to_eng<br>end<br>end<br><del>#  Creiamo</del><ins>Creiamo</ins> una coppia di dadi...<br>dadi = %5BDado.new, Dado.new%5D<br><del>#  ...e</del><ins>...e</ins> tiriamoli.<br>dadi.each do dado<br>puts dado.rotola<br>]]></description>
        <pubDate>Sun, 22 Feb 2009 10:13:37 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-13-37</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Le classi<br>Prima abbiamo visto diversi generi, o classi, di oggetti: stringhe, interi, decimali, array e qualche oggetto speciale (true, false, and nil) che vedremo in seguito. In Ruby, queste classi iniziano sempre per lettera maiuscola: String, Integer, Float, Array... etc. In generale se si vuole creare un nuovo oggetto di una classe si usa new:<br> Array.new<del>  +</del><ins>  +&lt;raw&gt;</ins> 12345<del>  #</del><ins>  &lt;/raw&gt;#</ins>  Somma di Array.<br>b = String.new + 'hello'  #  Somma di String.<br>c = Time.new<br>]]></description>
        <pubDate>Sun, 22 Feb 2009 10:13:05 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-13-05</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Le classi<br>Prima abbiamo visto diversi generi, o classi, di oggetti: stringhe, interi, decimali, array e qualche oggetto speciale (true, false, and nil) che vedremo in seguito. In Ruby, queste classi iniziano sempre per lettera maiuscola: String, Integer, Float, Array... etc. In generale se si vuole creare un nuovo oggetto di una classe si usa new:<br> di<del> Array.b</del><ins> Array.<br>b</ins> = String.new + 'hello'  #  Somma di<del> String.c</del><ins> String.<br>c</ins> =<del> Time.newputs</del><ins> Time.new<br>puts</ins> 'a =<del> '+a.to_sputs</del><ins> '+a.to_s<br>puts</ins> 'b =<del> '+b.to_sputs</del><ins> '+b.to_s<br>puts</ins> 'c =<del> '+c.to_sa</del><ins> '+c.to_s<br>a</ins> =<del> 12345b</del><ins> 12345<br>b</ins> =<del> helloc</del><ins> hello<br>c</ins> = Sat May 05 06:11:13 GMT 2007<br>Dato che gli array e le stringhe possono essere creati usando rispettivamente %5B...%5D e '...' , raramente useremo new per crearli. (Benché questo non sia evidente dall'esempio, String.new crea una stringa vuota, e Array.new crea un array vuoto.) Infine, i numeri rappresentano un'eccezione: non è possibile creare un intero con Integer.new. Bisogna scrivere l'intero direttamente.<br>La classe Time<br>Dunque che roba è la classe Time? Gli oggetti Time rappresentano momenti di tempo. E' possibile aggiungere (o sottrarre) numeri al (o dal) tempo per ottenere nuovi tempi: aggiungendo 1.5 si ha un nuovo tempo con un secondo e mezzo in più:<br> momento<del> attuale.time2</del><ins> attuale.<br>time2</ins> = time + 60  #  Un minuto<del> dopo.puts timeputs time2Sat</del><ins> dopo.<br>puts time<br>puts time2<br>Sat</ins> May 05 06:11:13 GMT<del> 2007Sat</del><ins> 2007<br>Sat</ins> May 05 06:12:13 GMT 2007<br>E' possibile anche creare un tempo che rappresenta uno specifico momento usando Time.mktime:<br>  L'anno<del> duemila.puts</del><ins> duemila.<br>puts</ins> Time.mktime(1976, 8, 3, 10, 11)  #  Quando sono<del> nato.Sat</del><ins> nato.<br>Sat</ins> Jan 01 00:00:00 GMT<del> 2000Tue</del><ins> 2000<br>Tue</ins> Aug 03 10:11:00 GMT 1976<br>Nota: questa è la mia data di nascita in Pacific Daylight Savings Time (PDT). Quando il duemila è arrivato era Pacific Standard Time (PST), almeno per noi della West Coast. Le parentesi raggruppano i parametri di mktime. Più parametri vengono aggiunti, più accurato sarà il tempo. Provate!<br>Si possono confrontare i tempi usando il metodo di confronto (un tempo precedente è minore di un tempo successivo), e se si sottraggono due tempi si ottiene la loro differenza in secondi. Giocateci un po'!<br>La classe Hash<br>Un'altra utile classe è Hash. Un hash è una specie di array: ha un mucchio di posti che possono puntare a diversi oggetti. Negli array i posti sono allineati in una riga e sono tutti numerati (partendo da zero). In un hash i posti non sono allineati (sono ammucchiati tutti insieme), ed è possibile usare qualsiasi oggetto per fare riferimento ad essi. E' una buona idea uare gli hash quando si vuole tenere traccia di un sacco di cose che non non si adattano bene a stare in una lista ordinata. Ad esempio i colori utilizzati per le diverse parti del codice in questo documento:<br> di<del> Array.newcolorHash</del><ins> Array.new<br>colorHash</ins>  = {}  #  Lo stesso di<del> Hash.newcolorArray0</del><ins> Hash.new<br>colorArray0</ins>         =<del> 'rosso'colorArray1</del><ins> 'rosso'<br>colorArray1</ins>         =<del> 'verde'colorArray2</del><ins> 'verde'<br>colorArray2</ins>         =<del> 'blu'colorHash'stringhe'</del><ins> 'blu'<br>colorHash'stringhe'</ins>  =<del> 'rosso'colorHash'numeri'</del><ins> 'rosso'<br>colorHash'numeri'</ins>    =<del> 'verde'colorHash'keyword'</del><ins> 'verde'<br>colorHash'keyword'</ins>   =<del> 'blu'colorArray.each</del><ins> 'blu'<br>colorArray.each</ins> do color<del>  puts colorendcolorHash.each</del><ins><br>puts color<br>end<br>colorHash.each</ins> do codeType, color<del>  puts</del><ins><br>puts</ins> codeType + ':  ' +<del> colorendrossoverdeblustringhe:  rossokeyword:  blunumeri:</del><ins> color<br>end<br>rosso<br>verde<br>blu<br>stringhe:  rosso<br>keyword:  blu<br>numeri:</ins>  verde<br>Se si usa un array, bisogna ricordarsi che la posizione 0 rappresenta le stringhe, la 1 i numeri, etc. Se si usa un hash invece è tutto molto semplice! Il posto 'stringhe' conterrà ovviamente il colore delle stringhe. Niente da ricordare. Avrete sicuramente notato che quando si usa  each, gli oggetti dell'hash non vengono fuori nello stesso ordine d'inserimento. (Almeno non è successo quando l'ho scritto. Ma potrebbero esserlo ora... con gli hash non si sa mai.) Per tenere le cose in ordine vanno usati gli array, non gli hash.<br>Sebbene le persone usino delle stringhe per identificare le posizioni negli hash, si può anche usare qualsiasi tipo di oggetti, anche array o altri hash (sebbene non mi venga in mente nessun buon motivo per farlo...):<br> =<del> Hash.newweirdHash12</del><ins> Hash.new<br>weirdHash12</ins> =<del> 'monkeys'weirdHash%5B%5D</del><ins> 'monkeys'<br>weirdHash%5B%5D</ins> =<del> 'emptiness'weirdHash%5BTime.new%5D</del><ins> 'emptiness'<br>weirdHash%5BTime.new%5D</ins> = 'no time like the present'<br>Hash e array vanno utilizzati per cose differenti; spetta a voi decidere quale scelta è la migliore per il particolare problema.<br>Estendere le classi<br>Alla fine dell'ultimo capitolo, avete scritto un metodo per ottenete la parola corrispondente ad un numero intero. Non era un metodo per gli interi; era solo un metodo generico. Non sarebbe bello poter scrivere qualcosa tipo 22.to_eng invece di englishNumber 22? Ecco come farlo:<br> Integer<del>  def</del><ins><br>def</ins> to_eng<del>    if</del><ins><br>if</ins> self == 5<del>      english</del><ins><br>english</ins> = 'five'<del>    else      english</del><ins><br>else<br>english</ins> = 'fifty-eight'<del>    end    english  endend#</del><ins><br>end<br>english<br>end<br>end<br>#</ins>  Testiamolo su una coppia di<del> numeri...puts 5.to_engputs 58.to_engfivefifty-eight</del><ins> numeri...<br>puts 5.to_eng<br>puts 58.to_eng<br>five<br>fifty-eight</ins><br>Bene, l'abbiamo provato; sembra funzionare. ;)<br>Abbiamo definito un metodo per i numeri interi saltando per un momento nella classe Integer. Ora tutti gli interi hanno questo (un po' incompleto) metodo. In realtà, se ad esempio non ci piacesse il funzionamento del metodo to_s potremmo anche pensare di ridefinirlo in qualche altro modo... ma non è una buona idea! E' meglio lasciare i vecchi metodi in pace e farne di nuovi quando si deve fare qualcosa di nuovo.<br>Creare le classi<br>Abbiamo visto un gran numero di diverse classe di oggetti. Comunque è semplice arrivare a tipi di oggetti che Ruby non ha. Fortunatamente creare nuove classi è semplice come modificare quelle già esistenti. Diciamo di voler creare dei dadi in Ruby. Ecco come si potrebbe rendere la classe Dado:<br> Dado<del>  def</del><ins><br>def</ins> rotola<del>    1</del><ins><br>1</ins> + rand(6)<del>  endend#</del><ins><br>end<br>end<br>#</ins>  Creiamo una coppia di<del> dadi...dadi</del><ins> dadi...<br>dadi</ins> = %5BDado.new,<del> Dado.new%5D#</del><ins> Dado.new%5D<br>#</ins>  ...e<del> tiriamoli.dadi.each</del><ins> tiriamoli.<br>dadi.each</ins> do dado<del>  puts dado.rotolaend21</del><ins><br>puts dado.rotola<br>end<br>2<br>1</ins><br>(Se avete saltato la sezione sui numeri casuali, rand(6) restituisce un numero casuale compreso tra 0 e 5.)<br>E il gioco è fatto! I nostri oggetti. Tiriamo i dadi alcune volte (con il tasto reload del browser) e vediamo cosa viene fuori.<br>]]></description>
        <pubDate>Sun, 22 Feb 2009 10:12:04 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-22-10-12-04</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Ci sono anche alcuni metodi che cambiano il case (maiuscolo e minuscolo) delle stringhe. upcase cambia ogni lettera minuscola in maiuscola, e downcase cambia le maiuscole in minuscole. swapcase scambia il case di osni lettera della stringa, e infine, capitalize è come downcase, con la differenza che cambia solo il primo carattere in maiuscolo (se è una lettera).<br>lettere = 'aAbBcCdDeE'puts lettere.upcaseputs lettere.downcaseputs lettere.swapcaseputs lettere.capitalizeputs ' a'.capitalizeputs lettereAABBCCDDEEaabbccddeeAaBbCcDdEeAabbccddee aaAbBcCdDeE<br> nel<del> chiamre</del><ins> chiamare</ins> questi metodi, la variabile lettere rimane immutata. Non intendo insistere su questo aspetto, ma è una cosa importante da capire. Ci sono alcuni metodi che cambiano l'oggetto associato, ma non ne abbiamo visti ancora, e non ne vedremo ancora per un po'.<br>Gli ultimi divertenti metodi che vedremo servono a formattare le stringhe. Il primo, center, aggiunge degli spazi all'inizio e alla fine della stringa al fine di centrarla. Ricapitolando, a puts va detto cosa si vuole stampare, a + cosa si vuole aggiungere, a center in che modo vogliamo che la nostra stringa sia centrata. Quindi se vogliamo centrare le righe di una poesia dobbiamo fare così:<br>lineWidth = 50puts(                'Old Mother Hubbard'.center(lineWidth))puts(               'Sat in her cupboard'.center(lineWidth))puts(         'Eating her curds an whey,'.center(lineWidth))puts(          'When along came a spider'.center(lineWidth))puts(         'Which sat down beside her'.center(lineWidth))puts('And scared her poor shoe dog away.'.center(lineWidth))               Old Mother Hubbard                               Sat in her cupboard                            Eating her curds an whey,                          When along came a spider                         Which sat down beside her                     And scared her poor shoe dog away.<br><ins>Hmmm... Non conosco il motivo di questa filastrocca, e sono troppo pigro per scoprirlo. (Inoltre, I wanted to line up the .center lineWidth part, so I put in those extra spaces before the strings. This is just because I think it is prettier that way. Programmers often have strong feelings about what is pretty in a program, and they often disagree about it. The more you program, the more you will come into your own style.) Speaking of being lazy, laziness isn't always a bad thing in programming. For example, see how I stored the width of the poem in the variable lineWidth? This was so that if I want to go back later and make the poem wider, I only have to change the very top line of the program, instead of every line which does centering. With a very long poem, this could save me a lot of time. That kind of laziness is really a virtue in programming.</ins><br>(...continua)<br>]]></description>
        <pubDate>Fri, 20 Feb 2009 08:15:36 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2009-02-20-08-15-36</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Abbiamo visto un gran numero di diverse classe di oggetti. Comunque è semplice arrivare a tipi di oggetti che Ruby non ha. Fortunatamente creare nuove classi è semplice come modificare quelle già esistenti. Diciamo di voler creare dei dadi in Ruby. Ecco come si potrebbe rendere la classe Dado:<br>class Dado  def rotola    1 + rand(6)  endend#  Creiamo una coppia di dadi...dadi = %5BDado.new, Dado.new%5D#  ...e tiriamoli.dadi.each do dado  puts dado.rotolaend21<br><ins>(Se avete saltato la sezione sui numeri casuali, rand(6) restituisce un numero casuale compreso tra 0 e 5.)<br>E il gioco è fatto! I nostri oggetti. Tiriamo i dadi alcune volte (con il tasto reload del browser) e vediamo cosa viene fuori.<br>Si posono definire tutti i tipi di metodi per i nostri oggetti... ma manca ancora qualcosa.</ins><br>...continua...<br>]]></description>
        <pubDate>Wed, 18 Feb 2009 21:16:31 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-18-21-16-31</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Ancora confusi? Approfondiamo un po' l'ultimo programma. Finora l'esecuzione di qualsiasi codice o metodo definito è avvenuta nell'oggetto di default "programma". Nel nostro ultimo programma abbiamo abbandonato quell'oggetto per la prima volta e ci siamo messi nella classe Integer. Abbiamo definito un metodo (questo lo rende un metodo per numeri interi) e tutti gli interi possono usarlo. All'interno del metodo si usa self per fare riferimento all'oggetto (l'intero) che sta usando il metodo.<br>Creare le classi<br><del>We've seen</del><ins>Abbiamo visto un gran numero di diverse classe di oggetti. Comunque è semplice arrivare</ins> a<del> number of different classes of objects. However, it's easy to come up with kinds of objects that</del><ins> tipi di oggetti che</ins> Ruby<del> doesn't have. Luckily, creating a new class is as easy as extending an old one. Let's say we wanted to make some dice</del><ins> non ha. Fortunatamente creare nuove classi è semplice come modificare quelle già esistenti. Diciamo di voler creare dei dadi</ins> in Ruby.<del> Here's how we could make the Die class:</del><ins> Ecco come si potrebbe rendere la classe Dado:<br>class Dado  def rotola    1 + rand(6)  endend#  Creiamo una coppia di dadi...dadi = %5BDado.new, Dado.new%5D#  ...e tiriamoli.dadi.each do dado  puts dado.rotolaend21</ins><br>...continua...<br>]]></description>
        <pubDate>Wed, 18 Feb 2009 21:09:55 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-18-21-09-55</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Abbiamo definito un metodo per i numeri interi saltando per un momento nella classe Integer. Ora tutti gli interi hanno questo (un po' incompleto) metodo. In realtà, se ad esempio non ci piacesse il funzionamento del metodo to_s potremmo anche pensare di ridefinirlo in qualche altro modo... ma non è una buona idea! E' meglio lasciare i vecchi metodi in pace e farne di nuovi quando si deve fare qualcosa di nuovo.<br>Ancora confusi? Approfondiamo un po' l'ultimo programma. Finora l'esecuzione di qualsiasi codice o metodo definito è avvenuta nell'oggetto di default "programma". Nel nostro ultimo programma abbiamo abbandonato quell'oggetto per la prima volta e ci siamo messi nella classe Integer. Abbiamo definito un metodo (questo lo rende un metodo per numeri interi) e tutti gli interi possono usarlo. All'interno del metodo si usa self per fare riferimento all'oggetto (l'intero) che sta usando il metodo.<br><ins>Creare le classi<br>We've seen a number of different classes of objects. However, it's easy to come up with kinds of objects that Ruby doesn't have. Luckily, creating a new class is as easy as extending an old one. Let's say we wanted to make some dice in Ruby. Here's how we could make the Die class:</ins><br>...continua...<br>]]></description>
        <pubDate>Wed, 18 Feb 2009 14:50:17 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-18-14-50-17</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[]]></description>
        <pubDate>Wed, 18 Feb 2009 14:41:45 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-18-14-41-45</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[class Integer  def to_eng    if self == 5      english = 'five'    else      english = 'fifty-eight'    end    english  endend#  Testiamolo su una coppia di numeri...puts 5.to_engputs 58.to_engfivefifty-eight<br>Bene, l'abbiamo provato; sembra funzionare. ;)<br> qualcosa<del> i nuovo.</del><ins> di nuovo.<br>Ancora confusi? Approfondiamo un po' l'ultimo programma. Finora l'esecuzione di qualsiasi codice o metodo definito è avvenuta nell'oggetto di default "programma". Nel nostro ultimo programma abbiamo abbandonato quell'oggetto per la prima volta e ci siamo messi nella classe Integer. Abbiamo definito un metodo (questo lo rende un metodo per numeri interi) e tutti gli interi possono usarlo. All'interno del metodo si usa self per fare riferimento all'oggetto (l'intero) che sta usando il metodo.</ins><br>...continua...<br>]]></description>
        <pubDate>Wed, 18 Feb 2009 14:40:37 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-18-14-40-37</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Hash e array vanno utilizzati per cose differenti; spetta a voi decidere quale scelta è la migliore per il particolare problema.<br>Estendere le classi<br><ins>Alla fine dell'ultimo capitolo, avete scritto un metodo per ottenete la parola corrispondente ad un numero intero. Non era un metodo per gli interi; era solo un metodo generico. Non sarebbe bello poter scrivere qualcosa tipo 22.to_eng invece di englishNumber 22? Ecco come farlo:<br>class Integer  def to_eng    if self == 5      english = 'five'    else      english = 'fifty-eight'    end    english  endend#  Testiamolo su una coppia di numeri...puts 5.to_engputs 58.to_engfivefifty-eight<br>Bene, l'abbiamo provato; sembra funzionare. ;)<br>Abbiamo definito un metodo per i numeri interi saltando per un momento nella classe Integer. Ora tutti gli interi hanno questo (un po' incompleto) metodo. In realtà, se ad esempio non ci piacesse il funzionamento del metodo to_s potremmo anche pensare di ridefinirlo in qualche altro modo... ma non è una buona idea! E' meglio lasciare i vecchi metodi in pace e farne di nuovi quando si deve fare qualcosa i nuovo.</ins><br>...continua...<br>]]></description>
        <pubDate>Tue, 17 Feb 2009 18:17:17 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-17-18-17-17</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[colorArray = %5B%5D  #  Lo stesso di Array.newcolorHash  = {}  #  Lo stesso di Hash.newcolorArray0         = 'rosso'colorArray1         = 'verde'colorArray2         = 'blu'colorHash'stringhe'  = 'rosso'colorHash'numeri'    = 'verde'colorHash'keyword'   = 'blu'colorArray.each do color  puts colorendcolorHash.each do codeType, color  puts codeType + ':  ' + colorendrossoverdeblustringhe:  rossokeyword:  blunumeri:  verde<br>Se si usa un array, bisogna ricordarsi che la posizione 0 rappresenta le stringhe, la 1 i numeri, etc. Se si usa un hash invece è tutto molto semplice! Il posto 'stringhe' conterrà ovviamente il colore delle stringhe. Niente da ricordare. Avrete sicuramente notato che quando si usa  each, gli oggetti dell'hash non vengono fuori nello stesso ordine d'inserimento. (Almeno non è successo quando l'ho scritto. Ma potrebbero esserlo ora... con gli hash non si sa mai.) Per tenere le cose in ordine vanno usati gli array, non gli hash.<br><ins>Sebbene le persone usino delle stringhe per identificare le posizioni negli hash, si può anche usare qualsiasi tipo di oggetti, anche array o altri hash (sebbene non mi venga in mente nessun buon motivo per farlo...):<br>weirdHash = Hash.newweirdHash12 = 'monkeys'weirdHash%5B%5D = 'emptiness'weirdHash%5BTime.new%5D = 'no time like the present'<br>Hash e array vanno utilizzati per cose differenti; spetta a voi decidere quale scelta è la migliore per il particolare problema.<br>Estendere le classi</ins><br>...continua...<br>]]></description>
        <pubDate>Tue, 17 Feb 2009 18:04:50 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-17-18-04-50</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Un'altra utile classe è Hash. Un hash è una specie di array: ha un mucchio di posti che possono puntare a diversi oggetti. Negli array i posti sono allineati in una riga e sono tutti numerati (partendo da zero). In un hash i posti non sono allineati (sono ammucchiati tutti insieme), ed è possibile usare qualsiasi oggetto per fare riferimento ad essi. E' una buona idea uare gli hash quando si vuole tenere traccia di un sacco di cose che non non si adattano bene a stare in una lista ordinata. Ad esempio i colori utilizzati per le diverse parti del codice in questo documento:<br>colorArray = %5B%5D  #  Lo stesso di Array.newcolorHash  = {}  #  Lo stesso di Hash.newcolorArray0         = 'rosso'colorArray1         = 'verde'colorArray2         = 'blu'colorHash'stringhe'  = 'rosso'colorHash'numeri'    = 'verde'colorHash'keyword'   = 'blu'colorArray.each do color  puts colorendcolorHash.each do codeType, color  puts codeType + ':  ' + colorendrossoverdeblustringhe:  rossokeyword:  blunumeri:  verde<br><ins>Se si usa un array, bisogna ricordarsi che la posizione 0 rappresenta le stringhe, la 1 i numeri, etc. Se si usa un hash invece è tutto molto semplice! Il posto 'stringhe' conterrà ovviamente il colore delle stringhe. Niente da ricordare. Avrete sicuramente notato che quando si usa  each, gli oggetti dell'hash non vengono fuori nello stesso ordine d'inserimento. (Almeno non è successo quando l'ho scritto. Ma potrebbero esserlo ora... con gli hash non si sa mai.) Per tenere le cose in ordine vanno usati gli array, non gli hash.</ins><br>...continua...<br>]]></description>
        <pubDate>Tue, 17 Feb 2009 18:00:44 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-17-18-00-44</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Buon compleanno! Chiedete ad una persona in che anno, mese e giorno è nata. Calcolate quanti anni ha e dategli un bel ceffone per ogni compleanno.<br>La classe Hash<br> lista<del> ordinata.</del><ins> ordinata. Ad esempio i colori utilizzati per le diverse parti del codice in questo documento:<br>colorArray = %5B%5D  #  Lo stesso di Array.newcolorHash  = {}  #  Lo stesso di Hash.newcolorArray0         = 'rosso'colorArray1         = 'verde'colorArray2         = 'blu'colorHash'stringhe'  = 'rosso'colorHash'numeri'    = 'verde'colorHash'keyword'   = 'blu'colorArray.each do color  puts colorendcolorHash.each do codeType, color  puts codeType + ':  ' + colorendrossoverdeblustringhe:  rossokeyword:  blunumeri:  verde</ins><br>...continua...<br>]]></description>
        <pubDate>Tue, 17 Feb 2009 17:52:58 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-17-17-52-58</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Buon compleanno! Chiedete ad una persona in che anno, mese e giorno è nata. Calcolate quanti anni ha e dategli un bel ceffone per ogni compleanno.<br>La classe Hash<br><ins>Un'altra utile classe è Hash. Un hash è una specie di array: ha un mucchio di posti che possono puntare a diversi oggetti. Negli array i posti sono allineati in una riga e sono tutti numerati (partendo da zero). In un hash i posti non sono allineati (sono ammucchiati tutti insieme), ed è possibile usare qualsiasi oggetto per fare riferimento ad essi. E' una buona idea uare gli hash quando si vuole tenere traccia di un sacco di cose che non non si adattano bene a stare in una lista ordinata.</ins><br>...continua...<br>]]></description>
        <pubDate>Tue, 17 Feb 2009 17:48:31 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-17-17-48-31</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[puts Time.mktime(2000, 1, 1)          #  L'anno duemila.puts Time.mktime(1976, 8, 3, 10, 11)  #  Quando sono nato.Sat Jan 01 00:00:00 GMT 2000Tue Aug 03 10:11:00 GMT 1976<br>Nota: questa è la mia data di nascita in Pacific Daylight Savings Time (PDT). Quando il duemila è arrivato era Pacific Standard Time (PST), almeno per noi della West Coast. Le parentesi raggruppano i parametri di mktime. Più parametri vengono aggiunti, più accurato sarà il tempo. Provate!<br> secondi.<del> Play around with it!</del><ins> Giocateci un po'!</ins><br>Alcune cose da provare<br>Un miliardo di secondi... calcolate l'esatto numero di secondi trascorsi dalla vostra nascita (se potete). Calcolate quando compirete (o forse quando avete compiuto?) un miliardo di secondi. Quindi segnatelo sul vostro calendario.<br>Buon compleanno! Chiedete ad una persona in che anno, mese e giorno è nata. Calcolate quanti anni ha e dategli un bel ceffone per ogni compleanno.<br><ins>La classe Hash</ins><br>...continua...<br>]]></description>
        <pubDate>Tue, 17 Feb 2009 17:40:13 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2009-02-17-17-40-13</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Qualcos'altro sui metodi (in traduzione)<br>Il controllo del flusso (da tradurre)<br> iteratori<del> (da</del><del> tradurre)</del><ins> (in</ins><ins> traduzione)</ins><br>Scrivere i propri metodi (da tradurre)<br>Classi (in traduzione)<br>]]></description>
        <pubDate>Fri, 18 May 2007 07:04:00 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2007-05-18-07-04-00</guid>
      </item>
          <item>
        <title> added ArraysAndIterators</title>
        <link>http://rubyacademy.pbworks.com/ArraysAndIterators</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Array e iteratori

Scriviamo un programma che ci chiede di digitare quante parole vogliamo (una parola per riga, continuando fino a che non si preme |Invio| su una riga vuota), e che quindi riscrive le parole in ordine alfabetico. OK? 

Allora... per prima cosa... um... hmmm... Bene, potremmo... um...

Sapete una cosa.... credo che non siamo in grado di farlo. Ci serve un modo per conservare un numero indefinito di parole, eun modo per tenere traccia di tutte le parole allo stesso momento, so they don\'t get mixed up with other variables. Dobbiamo metterle in una specie di lista. Ci servono gli \'\'array\'\'.

Un array è una lista per il nostro computer. Ogni elemento della lista si comporta come una variabile: è possibile vedere a quale oggetto un elemento punta, ed è possibile farlo puntare ad un altro oggetto. Diamo uno sguardo ad alcuni array: 

 <raw>%5B%5D</raw>
 <raw>%5B5%5D</raw>
 <raw>%5B\'Hello\', \'Goodbye\'%5D</raw>
 
 <raw>flavor = \'vanilla\'       # Ovviamente questo non è un array</raw>
 <raw>%5B89.9, flavor, %5Btrue, false%5D%5D  #  ...ma questo lo è</raw>

Il primo è un array vuoto, poi ce ne è uno che contiene un singolo numero e poi ancora un array con due stringhe. Abbiamo dopo un semplice assegnamento e infine un array con tre oggetti l\'ultimo dei quali è l\'array **<raw>%5Btrue, false%5D</raw>**. Ricordate, le variabili non sono oggetti, quindi in realtà punta ad un decimale, a una stringa e a un array. Anche se facciamo puntare **flavor** a qualcos\'altro l\'array non cambierà.

Per aiutarci a trovare un particolare oggetto in un array ad ogni elemento è assegnato un indice numerico. I programmatori (e, incidentalmente, molti matematici) iniziano a contare dallo zero, e così il primo elemento di un array ha indice zero. Ecco come fare riferimento ad un oggetto in un array:

 <raw>nomi = %5B\'Ada\', \'Belle\', \'Chris\'%5D</raw>
 
 puts nomi
 <raw>puts nomi%5B0%5D</raw>
 <raw>puts nomi%5B1%5D</raw>
 <raw>puts nomi%5B2%5D</raw>
 <raw>puts nomi%5B3%5D  #  Questo è fuori range.</raw>

 **Ada**
 **Belle**
 **Chris**
 **Ada**
 **Belle**
 **Chris**
 **nil**

Allora, si vede che **puts nomi** stampa ogni nome dell\'array. Mentre si usa <raw>puts nomi%5B0%5D</raw> per stampare il \"primo\" nome dell\'array, e <raw>puts nomi%5B1%5D</raw> per stampare il \"secondo\"...

\'\'...continua\'\'
]]></description>
        <pubDate>Fri, 18 May 2007 07:03:38 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/ArraysAndIterators.2007-05-18-07-03-38</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Come si può vedere, reverse non inverte la stringa originale; ma ne fa solo una copia inversa. Ecco perché var1 vale ancora 'roma' anche dopo aver chiamato reverse su var1.<br>Another string method is length, which tells us the number of characters (including spaces) in the string:<br> +<del> '?'What</del><del> is</del><del> your</del><del> full</del><del> name?Christopher</del><ins> '?'Quale</ins><ins> è</ins><ins> il</ins><ins> tuo</ins><ins> nome</ins><ins> completo?Christopher</ins> David Pine#&amp;lt;TypeError: can't convert Fixnum into String&amp;gt;<br>Uh-oh! Qualcosa è andata storta, e sembra che sia accaduto qualcosa dopo la riga name = gets.chomp... Avete riconosciuto il problema? Provate a trovarlo.<br>C'è un problema con length: fornisce un numero, ma noi vogliamo una stringa. La soluzione è semplice, dobbiamo solo inserire un to_s (e incrociare le dita):<br> +<del> '?'What</del><del> is</del><del> your</del><del> full</del><del> name?Christopher</del><ins> '?'Quale</ins><ins> è</ins><ins> il</ins><ins> tuo</ins><ins> nome</ins><ins> completo?Christopher</ins> David PineSai che ci sono 22 caratteri nel tuo nome, Christopher David Pine?<br>No, non lo so. Nota: quello è il numero di caratteri del mio nome, non il numero di lettere (contatele). Credo che possiamo scrivere un programma che ci chieda il nostro primo nome, il secondo nome e il cognome separatamente e che poi sommi le loro lunghezze insieme... hey, perché non lo fate voi! Iniziate, vi aspetto.<br>Fatto? Bene! è bello programmare, non trovate? Tra qualche capitolo sarete sorpresi da quello che potrete fare.<br>lettere = 'aAbBcCdDeE'puts lettere.upcaseputs lettere.downcaseputs lettere.swapcaseputs lettere.capitalizeputs ' a'.capitalizeputs lettereAABBCCDDEEaabbccddeeAaBbCcDdEeAabbccddee aaAbBcCdDeE<br>Tutta roba regolare. Come si può vedere, dalla riga puts ' a'.capitalize, il metodo capitalize rende maiuscolo il primo carattere, non la prima lettera. E anche, come abbiamo visto prima, nel chiamre questi metodi, la variabile lettere rimane immutata. Non intendo insistere su questo aspetto, ma è una cosa importante da capire. Ci sono alcuni metodi che cambiano l'oggetto associato, ma non ne abbiamo visti ancora, e non ne vedremo ancora per un po'.<br> vedremo<del> serveno</del><ins> servono</ins> a formattare le stringhe. Il primo, center, aggiunge degli spazi all'inizio e alla fine della stringa al fine di centrarla.<del> However,</del><del> just</del><del> like</del><del> you</del><del> have</del><del> to</del><del> tell</del><ins> Ricapitolando,</ins><ins> a</ins> puts<del> what</del><del> you</del><del> want</del><del> it</del><del> to</del><del> print,</del><del> and</del><ins> va</ins><ins> detto</ins><ins> cosa</ins><ins> si</ins><ins> vuole</ins><ins> stampare,</ins><ins> a</ins> +<del> what</del><del> you</del><del> want</del><del> it</del><del> to</del><del> add,</del><del> you</del><del> have</del><del> to</del><del> tell</del><del> center</del><del> how</del><del> wide</del><del> you</del><del> want</del><del> your</del><del> centered</del><del> string</del><del> to</del><del> be.</del><del> So</del><del> if</del><del> I</del><del> wanted</del><del> to</del><ins> cosa</ins><ins> si</ins><ins> vuole</ins><ins> aggiungere,</ins><ins> a</ins> center<del> the</del><del> lines</del><del> of</del><ins> in</ins><ins> che</ins><ins> modo</ins><ins> vogliamo</ins><ins> che</ins><ins> la</ins><ins> nostra</ins><ins> stringa</ins><ins> sia</ins><ins> centrata.</ins><ins> Quindi</ins><ins> se</ins><ins> vogliamo</ins><ins> centrare</ins><ins> le</ins><ins> righe</ins><ins> di</ins><ins> una</ins><ins> poesia</ins><ins> dobbiamo</ins><ins> fare</ins><ins> così:</ins><ins><br>lineWidth</ins><ins> =</ins><ins> 50puts(</ins><ins>                'Old</ins><ins> Mother</ins><ins> Hubbard'.center(lineWidth))puts(</ins><ins>               'Sat</ins><ins> in</ins><ins> her</ins><ins> cupboard'.center(lineWidth))puts(</ins><ins>         'Eating</ins><ins> her</ins><ins> curds</ins><ins> an</ins><ins> whey,'.center(lineWidth))puts(</ins><ins>          'When</ins><ins> along</ins><ins> came</ins><ins> a</ins><ins> spider'.center(lineWidth))puts(</ins><ins>         'Which</ins><ins> sat</ins><ins> down</ins><ins> beside</ins><ins> her'.center(lineWidth))puts('And</ins><ins> scared</ins><ins> her</ins><ins> poor</ins><ins> shoe</ins><ins> dog</ins><ins> away.'.center(lineWidth))</ins><ins>               Old</ins><ins> Mother</ins><ins> Hubbard</ins><ins>                               Sat</ins><ins> in</ins><ins> her</ins><ins> cupboard</ins><ins>                            Eating</ins><ins> her</ins><ins> curds</ins><ins> an</ins><ins> whey,</ins><ins>                          When</ins><ins> along</ins><ins> came</ins> a<del> poem,</del><del> I</del><del> would</del><del> do</del><del> it</del><del> like</del><del> this:</del><ins> spider</ins><ins>                         Which</ins><ins> sat</ins><ins> down</ins><ins> beside</ins><ins> her</ins><ins>                     And</ins><ins> scared</ins><ins> her</ins><ins> poor</ins><ins> shoe</ins><ins> dog</ins><ins> away.</ins><br>(...continua)<br>]]></description>
        <pubDate>Fri, 18 May 2007 06:35:28 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-05-18-06-35-28</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Array e iteratori (da tradurre)<br>Scrivere i propri metodi (da tradurre)<br>Classi<del> (da</del><del> tradurre)</del><ins> (in</ins><ins> traduzione)</ins><br>Blocchi e procedure (da tradurre)<br>Oltre questa guida (da tradurre)<br>]]></description>
        <pubDate>Sat, 05 May 2007 06:44:04 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2007-05-05-06-44-04</guid>
      </item>
          <item>
        <title> edited Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[a = Array.new  + 12345  #  Somma di Array.b = String.new + 'hello'  #  Somma di String.c = Time.newputs 'a = '+a.to_sputs 'b = '+b.to_sputs 'c = '+c.to_sa = 12345b = helloc = Sat May 05 06:11:13 GMT 2007<br>Dato che gli array e le stringhe possono essere creati usando rispettivamente %5B...%5D e '...' , raramente useremo new per crearli. (Benché questo non sia evidente dall'esempio, String.new crea una stringa vuota, e Array.new crea un array vuoto.) Infine, i numeri rappresentano un'eccezione: non è possibile creare un intero con Integer.new. Bisogna scrivere l'intero direttamente.<br><ins>La classe Time<br>Dunque che roba è la classe Time? Gli oggetti Time rappresentano momenti di tempo. E' possibile aggiungere (o sottrarre) numeri al (o dal) tempo per ottenere nuovi tempi: aggiungendo 1.5 si ha un nuovo tempo con un secondo e mezzo in più:<br>time  = Time.new   #  Il momento attuale.time2 = time + 60  #  Un minuto dopo.puts timeputs time2Sat May 05 06:11:13 GMT 2007Sat May 05 06:12:13 GMT 2007<br>E' possibile anche creare un tempo che rappresenta uno specifico momento usando Time.mktime:<br>puts Time.mktime(2000, 1, 1)          #  L'anno duemila.puts Time.mktime(1976, 8, 3, 10, 11)  #  Quando sono nato.Sat Jan 01 00:00:00 GMT 2000Tue Aug 03 10:11:00 GMT 1976<br>Nota: questa è la mia data di nascita in Pacific Daylight Savings Time (PDT). Quando il duemila è arrivato era Pacific Standard Time (PST), almeno per noi della West Coast. Le parentesi raggruppano i parametri di mktime. Più parametri vengono aggiunti, più accurato sarà il tempo. Provate!<br>Si possono confrontare i tempi usando il metodo di confronto (un tempo precedente è minore di un tempo successivo), e se si sottraggono due tempi si ottiene la loro differenza in secondi. Play around with it!<br>Alcune cose da provare<br>Un miliardo di secondi... calcolate l'esatto numero di secondi trascorsi dalla vostra nascita (se potete). Calcolate quando compirete (o forse quando avete compiuto?) un miliardo di secondi. Quindi segnatelo sul vostro calendario.<br>Buon compleanno! Chiedete ad una persona in che anno, mese e giorno è nata. Calcolate quanti anni ha e dategli un bel ceffone per ogni compleanno.<br>...continua...</ins><br>]]></description>
        <pubDate>Sat, 05 May 2007 06:43:38 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2007-05-05-06-43-38</guid>
      </item>
          <item>
        <title> added Classes</title>
        <link>http://rubyacademy.pbworks.com/Classes</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Le classi

Prima abbiamo visto diversi generi, o \'\'classi\'\', di oggetti: stringhe, interi, decimali, array e qualche oggetto speciale (**true**, **false**, and **nil**) che vedremo in seguito. In Ruby, queste classi iniziano sempre per lettera maiuscola: **String, Integer, Float, Array**... etc. In generale se si vuole creare un nuovo oggetto di una classe si usa **new**:

 a = Array.new  + %5B12345%5D  #  Somma di Array.
 b = String.new + \'hello\'  #  Somma di String.
 c = Time.new
 
 puts \'a = \'+a.to_s
 puts \'b = \'+b.to_s
 puts \'c = \'+c.to_s

 **a = 12345**
 **b = hello**
 **c = Sat May 05 06:11:13 GMT 2007**

Dato che gli array e le stringhe possono essere creati usando rispettivamente **%5B...%5D** e **\'...\'** , raramente useremo **new** per crearli. (Benché questo non sia evidente dall\'esempio, **String.new** crea una stringa vuota, e **Array.new** crea un array vuoto.) Infine, i numeri rappresentano un\'eccezione: non è possibile creare un intero con **Integer.new**. Bisogna scrivere l\'intero direttamente.
]]></description>
        <pubDate>Sat, 05 May 2007 06:24:59 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/Classes.2007-05-05-06-24-59</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[No, non lo so. Nota: quello è il numero di caratteri del mio nome, non il numero di lettere (contatele). Credo che possiamo scrivere un programma che ci chieda il nostro primo nome, il secondo nome e il cognome separatamente e che poi sommi le loro lunghezze insieme... hey, perché non lo fate voi! Iniziate, vi aspetto.<br>Fatto? Bene! è bello programmare, non trovate? Tra qualche capitolo sarete sorpresi da quello che potrete fare.<br><ins>Ci sono anche alcuni metodi che cambiano il case (maiuscolo e minuscolo) delle stringhe. upcase cambia ogni lettera minuscola in maiuscola, e downcase cambia le maiuscole in minuscole. swapcase scambia il case di osni lettera della stringa, e infine, capitalize è come downcase, con la differenza che cambia solo il primo carattere in maiuscolo (se è una lettera).<br>lettere = 'aAbBcCdDeE'puts lettere.upcaseputs lettere.downcaseputs lettere.swapcaseputs lettere.capitalizeputs ' a'.capitalizeputs lettereAABBCCDDEEaabbccddeeAaBbCcDdEeAabbccddee aaAbBcCdDeE<br>Tutta roba regolare. Come si può vedere, dalla riga puts ' a'.capitalize, il metodo capitalize rende maiuscolo il primo carattere, non la prima lettera. E anche, come abbiamo visto prima, nel chiamre questi metodi, la variabile lettere rimane immutata. Non intendo insistere su questo aspetto, ma è una cosa importante da capire. Ci sono alcuni metodi che cambiano l'oggetto associato, ma non ne abbiamo visti ancora, e non ne vedremo ancora per un po'.<br>Gli ultimi divertenti metodi che vedremo serveno a formattare le stringhe. Il primo, center, aggiunge degli spazi all'inizio e alla fine della stringa al fine di centrarla. However, just like you have to tell puts what you want it to print, and + what you want it to add, you have to tell center how wide you want your centered string to be. So if I wanted to center the lines of a poem, I would do it like this:</ins><br>(...continua)<br>]]></description>
        <pubDate>Wed, 28 Feb 2007 11:34:17 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-28-11-34-17</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[C'è un problema con length: fornisce un numero, ma noi vogliamo una stringa. La soluzione è semplice, dobbiamo solo inserire un to_s (e incrociare le dita):<br>puts 'Quale è il tuo nome completo?'nome = gets.chompputs 'Sai che ci sono ' + nome.length.to_s + ' caratteri nel tuo nome, ' + nome + '?'What is your full name?Christopher David PineSai che ci sono 22 caratteri nel tuo nome, Christopher David Pine?<br><ins>No, non lo so. Nota: quello è il numero di caratteri del mio nome, non il numero di lettere (contatele). Credo che possiamo scrivere un programma che ci chieda il nostro primo nome, il secondo nome e il cognome separatamente e che poi sommi le loro lunghezze insieme... hey, perché non lo fate voi! Iniziate, vi aspetto.<br>Fatto? Bene! è bello programmare, non trovate? Tra qualche capitolo sarete sorpresi da quello che potrete fare.</ins><br>(...continua)<br>]]></description>
        <pubDate>Tue, 27 Feb 2007 17:27:49 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-27-17-27-49</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[]]></description>
        <pubDate>Tue, 27 Feb 2007 17:21:00 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-27-17-21-00</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Se non riuscite a capire tutto, va bene lo stesso. La cosa importante da capire da tutto questo è che ogni metodo viene eseguito da qualche oggetto, anche se non c'è il punto. Se capite questo, then you're all set.<br>Divertenti metodi per le stringhe<br> le<del> stringhe.+ stringhe.</del><ins> Infatti</ins><ins> anche</ins><ins> io</ins><ins> riesco</ins><ins> a</ins><ins> ricordare</ins><ins> non</ins><ins> più</ins><ins> della</ins><ins> meta</ins><ins> dei</ins><ins> metodi</ins><ins> delle</ins><ins> stringhe</ins><ins> —</ins><ins> ma</ins><ins> non</ins><ins> è</ins><ins> un</ins><ins> problema,</ins><ins> poiché</ins><ins> ci</ins><ins> sono</ins><ins> delle</ins><ins> ottime</ins><ins> reference</ins><ins> su</ins><ins> internet</ins><ins> con</ins><ins> tutti</ins><ins> i</ins><ins> metodi</ins><ins> elencati</ins><ins> e</ins><ins> spiegati.</ins><ins> (Vi</ins><ins> mostrerò</ins><ins> dove</ins><ins> trovarle</ins><ins> alla</ins><ins> fine</ins><ins> di</ins><ins> questa</ins><ins> guida.)</ins><ins> In</ins><ins> realtà</ins><ins> non</ins><ins> voglio</ins><ins> conoscere</ins><ins> tutti</ins><ins> i</ins><ins> metodi</ins><ins> delle</ins><ins> stringhe;</ins><ins> è</ins><ins> un</ins><ins> po'</ins><ins> come</ins><ins> voler</ins><ins> conoscere</ins><ins> ogni</ins><ins> parola</ins><ins> del</ins><ins> dizionario.</ins><ins> Posso</ins><ins> parlare</ins><ins> bene</ins><ins> in</ins><ins> italiano</ins><ins> anche</ins><ins> senza</ins><ins> conoscere</ins><ins> ogni</ins><ins> parola</ins><ins> del</ins><ins> dizionario...</ins><ins> and</ins><ins> isn't</ins><ins> that</ins><ins> really</ins><ins> the</ins><ins> whole</ins><ins> point</ins><ins> of</ins><ins> the</ins><ins> dictionary?</ins><ins> So</ins><ins> you</ins><ins> don't</ins><ins> have</ins><ins> to</ins><ins> know</ins><ins> what's</ins><ins> in</ins><ins> it?</ins><ins><br>Allora,</ins><ins> il</ins><ins> nostro</ins><ins> primo</ins><ins> metodo</ins><ins> è</ins><ins> reverse</ins><ins> ,</ins><ins> che</ins><ins> fornisce</ins><ins> l'inverso</ins><ins> di</ins><ins> una</ins><ins> stringa:</ins><ins><br>var1</ins><ins> =</ins><ins> 'roma'var2</ins><ins> =</ins><ins> 'enoteca'var3</ins><ins> =</ins><ins> 'Puoi</ins><ins> pronunciare</ins><ins> questa</ins><ins> frase</ins><ins> al</ins><ins> contrario?'puts</ins><ins> var1.reverseputs</ins><ins> var2.reverseputs</ins><ins> var3.reverseputs</ins><ins> var1puts</ins><ins> var2puts</ins><ins> var3amoracetone?oirartnoc</ins><ins> la</ins><ins> esarf</ins><ins> atseuq</ins><ins> eraicnunorp</ins><ins> iouPromaenotecaPuoi</ins><ins> pronunciare</ins><ins> questa</ins><ins> frase</ins><ins> al</ins><ins> contrario?</ins><ins><br>Come</ins><ins> si</ins><ins> può</ins><ins> vedere,</ins><ins> reverse</ins><ins> non</ins><ins> inverte</ins><ins> la</ins><ins> stringa</ins><ins> originale;</ins><ins> ma</ins><ins> ne</ins><ins> fa</ins><ins> solo</ins><ins> una</ins><ins> copia</ins><ins> inversa.</ins><ins> Ecco</ins><ins> perché</ins><ins> var1</ins><ins> vale</ins><ins> ancora</ins><ins> 'roma'</ins><ins> anche</ins><ins> dopo</ins><ins> aver</ins><ins> chiamato</ins><ins> reverse</ins><ins> su</ins><ins> var1.</ins><ins><br>Another</ins><ins> string</ins><ins> method</ins><ins> is</ins><ins> length,</ins><ins> which</ins><ins> tells</ins><ins> us</ins><ins> the</ins><ins> number</ins><ins> of</ins><ins> characters</ins><ins> (including</ins><ins> spaces)</ins><ins> in</ins><ins> the</ins><ins> string:</ins><ins><br>puts</ins><ins> 'Quale</ins><ins> è</ins><ins> il</ins><ins> tuo</ins><ins> nome</ins><ins> completo?'nome</ins><ins> =</ins><ins> gets.chompputs</ins><ins> 'Sai</ins><ins> che</ins><ins> ci</ins><ins> sono</ins><ins> '</ins><ins> +</ins><ins> nome.length</ins><ins> +</ins><ins> '</ins><ins> caratteri</ins><ins> nel</ins><ins> tuo</ins><ins> nome,</ins><ins> '</ins><ins> +</ins><ins> nome</ins><ins> +</ins><ins> '?'What</ins><ins> is</ins><ins> your</ins><ins> full</ins><ins> name?Christopher</ins><ins> David</ins><ins> Pine#&amp;lt;TypeError:</ins><ins> can't</ins><ins> convert</ins><ins> Fixnum</ins><ins> into</ins><ins> String&amp;gt;</ins><ins><br>Uh-oh!</ins><ins> Qualcosa</ins><ins> è</ins><ins> andata</ins><ins> storta,</ins><ins> e</ins><ins> sembra</ins><ins> che</ins><ins> sia</ins><ins> accaduto</ins><ins> qualcosa</ins><ins> dopo</ins><ins> la</ins><ins> riga</ins><ins> name</ins><ins> =</ins><ins> gets.chomp...</ins><ins> Avete</ins><ins> riconosciuto</ins><ins> il</ins><ins> problema?</ins><ins> Provate</ins><ins> a</ins><ins> trovarlo.</ins><ins><br>C'è</ins><ins> un</ins><ins> problema</ins><ins> con</ins><ins> length:</ins><ins> fornisce</ins><ins> un</ins><ins> numero,</ins><ins> ma</ins><ins> noi</ins><ins> vogliamo</ins><ins> una</ins><ins> stringa.</ins><ins> La</ins><ins> soluzione</ins><ins> è</ins><ins> semplice,</ins><ins> dobbiamo</ins><ins> solo</ins><ins> inserire</ins><ins> un</ins><ins> to_s</ins><ins> (e</ins><ins> incrociare</ins><ins> le</ins><ins> dita):</ins><ins><br>puts</ins><ins> 'Quale</ins><ins> è</ins><ins> il</ins><ins> tuo</ins><ins> nome</ins><ins> completo?'nome</ins><ins> =</ins><ins> gets.chompputs</ins><ins> 'Sai</ins><ins> che</ins><ins> ci</ins><ins> sono</ins><ins> '</ins><ins> +</ins><ins> nome.length.to_s</ins><ins> +</ins><ins> '</ins><ins> caratteri</ins><ins> nel</ins><ins> tuo</ins><ins> nome,</ins><ins> '</ins><ins> +</ins><ins> nome</ins><ins> +</ins><ins> '?'What</ins><ins> is</ins><ins> your</ins><ins> full</ins><ins> name?Christopher</ins><ins> David</ins><ins> PineSai</ins><ins> che</ins><ins> ci</ins><ins> sono</ins><ins> 22</ins><ins> caratteri</ins><ins> nel</ins><ins> tuo</ins><ins> nome,</ins><ins> Christopher</ins><ins> David</ins><ins> Pine?</ins><br>(...continua)<br>]]></description>
        <pubDate>Tue, 27 Feb 2007 17:15:17 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-27-17-15-17</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Come dicevo, così come ogni verbo ha bisogno di un sostantivo, allo stesso modo ogni metodo ha bisogno di un oggetto. Solitamente è semplice dire quale oggetto sta eseguendo il metodo: è quello che viene prima del punto, come nel nostro esempio orologio.ticchetta, oppure 101.to_s. A volte, comunque, non è così scontato; come succede per i metodi aritmetici. Risulta che 5 + 5 è solo un modo breve di scrivere 5.+ 5. Ad esempio:<br>puts 'hello '.+ 'world'puts (10.* 9).+ 9hello world99<br><del>It</del><del> isn't</del><del> very</del><del> pretty,</del><del> so</del><del> we</del><del> won't</del><del> ever</del><del> write</del><del> it</del><del> like</del><del> that;</del><del> however,</del><del> it's</del><del> important</del><del> to</del><del> understand</del><del> what</del><del> is</del><del> really</del><del> happening.</del><del> (On</del><del> my</del><del> machine,</del><del> that</del><del> also</del><del> gives</del><del> me</del><del> a</del><ins>Non</ins><ins> è</ins><ins> molto</ins><ins> gradevole,</ins><ins> quindi</ins><ins> non</ins><ins> scriveremo</ins><ins> mai</ins><ins> in</ins><ins> questo</ins><ins> modo;</ins><ins> comunque,</ins><ins> l'importante</ins><ins> è</ins><ins> capire</ins><ins> cosa</ins><ins> è</ins><ins> successo</ins><ins> veramente.</ins><ins> (Sulla</ins><ins> mia</ins><ins> macchina,</ins><ins> che</ins><ins> restituisce</ins><ins> anche</ins><ins> un</ins> warning:<br>warning: parenthesize argument(s) for future version.<br><del>It</del><del> still</del><del> ran</del><del> the</del><del> code</del><del> just</del><del> fine,</del><del> but</del><del> it's</del><del> telling</del><del> me</del><del> that</del><del> it's</del><del> having</del><del> trouble</del><del> figuring</del><del> out</del><del> what</del><del> I</del><del> mean,</del><del> and</del><del> to</del><del> use</del><del> more</del><del> parentheses</del><del> in</del><del> the</del><del> future.)</del><del> This</del><del> also</del><del> gives</del><del> us</del><del> a</del><del> deeper</del><del> understanding</del><del> of</del><del> why</del><del> we</del><del> can</del><del> do</del><del> 'pig'*5</del><del> but</del><del> we</del><del> can't</del><del> do</del><ins>Il</ins><ins> codice</ins><ins> viene</ins><ins> eseguito</ins><ins> correttamente,</ins><ins> ma</ins><ins> vengo</ins><ins> avvertito</ins><ins> che</ins><ins> sta</ins><ins> avendo</ins><ins> problemi</ins><ins> a</ins><ins> capire</ins><ins> cosa</ins><ins> voglio</ins><ins> dire,</ins><ins> e</ins><ins> mi</ins><ins> invita</ins><ins> ad</ins><ins> usare</ins><ins> più</ins><ins> parentesi</ins><ins> in</ins><ins> futuro.)</ins><ins> Questo</ins><ins> ci</ins><ins> permette</ins><ins> di</ins><ins> capire</ins><ins> anche</ins><ins> perché</ins><ins> possiamo</ins><ins> scrivere</ins><ins> 'pig'*5</ins><ins> ma</ins><ins> non</ins><ins> possiamo</ins><ins> scrivere</ins> 5*'pig': 'pig'*5<del> is</del><del> telling</del><ins> sta</ins><ins> dicendo</ins><ins> a</ins> 'pig'<del> to</del><del> do</del><del> the</del><del> multiplying,</del><del> but</del><ins> di</ins><ins> moltiplicarsi,</ins><ins> mentre</ins> 5*'pig'<del> is</del><del> telling</del><del> 5</del><del> to</del><del> do</del><del> the</del><del> multiplying.</del><del> 'pig'</del><del> knows</del><del> how</del><del> to</del><del> make</del><del> 5</del><del> copies</del><del> of</del><del> itself</del><del> and</del><del> add</del><del> them</del><ins> sta</ins><ins> dicendo</ins><ins> a</ins><ins> 5</ins><ins> di</ins><ins> moltiplicarsi.</ins><ins> 'pig'</ins><ins> sa</ins><ins> come</ins><ins> fare</ins><ins> 5</ins><ins> copie</ins><ins> di</ins><ins> se</ins><ins> stesso</ins><ins> e</ins><ins> sommarle</ins><ins> tutte</ins><ins> insieme;</ins><ins> invece</ins><ins> 5</ins><ins> potrebbe</ins><ins> avere</ins><ins> molta</ins><ins> più</ins><ins> difficoltà</ins><ins> a</ins><ins> fare</ins><ins> 'pig'</ins><ins> copie</ins><ins> di</ins><ins> se</ins><ins> stesso</ins><ins> e</ins><ins> a</ins><ins> sommarle</ins><ins> insieme.</ins><ins><br>Utilizziamo</ins><ins> puts</ins><ins> e</ins><ins> gets</ins><ins> per</ins><ins> spiegare</ins><ins> tutto.</ins><ins> Dove</ins><ins> sono</ins><ins> i</ins><ins> loro</ins><ins> oggetti?</ins><ins> In</ins><ins> italiano,</ins><ins> si</ins><ins> può</ins><ins> qualche</ins><ins> volta</ins><ins> sottointendere</ins><ins> il</ins><ins> nome;</ins><ins> ad</ins><ins> esempio,</ins><ins> se</ins><ins> un</ins><ins> furfante</ins><ins> urla</ins><ins> &quot;Crepa!&quot;,</ins><ins> il</ins><ins> nome</ins><ins> implicito</ins><ins> è</ins><ins> colui</ins><ins> a</ins><ins> cui</ins><ins> sta</ins><ins> urlando</ins><ins> contro.</ins><ins> In</ins><ins> Ruby,</ins><ins> se</ins><ins> dico</ins><ins> puts</ins><ins> 'essere</ins><ins> o</ins><ins> non</ins><ins> essere',</ins><ins> in</ins><ins> realtà</ins><ins> sto</ins><ins> dicendo</ins><ins> self.puts</ins><ins> 'essere</ins><ins> o</ins><ins> non</ins><ins> essere'.</ins><ins> Dunque</ins><ins> cos'è</ins><ins> self?</ins><ins> è</ins><ins> una</ins><ins> variabile</ins><ins> speciale</ins><ins> che</ins><ins> punta</ins><ins> all'oggetto</ins><ins> che</ins><ins> la</ins><ins> contiene.</ins><ins> Non</ins><ins> sappiamo</ins><ins> ancora</ins><ins> cosa</ins><ins> vuol</ins><ins> dire</ins><ins> essere</ins><ins> contenuto</ins><ins> un</ins><ins> oggetto,</ins><ins> but</ins><ins> until</ins><ins> we</ins><ins> find</ins><ins> out,</ins><ins> sappiamo</ins><ins> di</ins><ins> essere</ins><ins> sempre</ins><ins> in</ins><ins> un</ins><ins> grande</ins><ins> oggetto</ins><ins> che</ins><ins> è...</ins><ins> l'intero</ins><ins> programma!</ins><ins> E</ins><ins> per</ins><ins> nostra</ins><ins> fortuna</ins><ins> il</ins><ins> programma</ins><ins> ha</ins><ins> alcuni</ins><ins> suoi</ins><ins> propri</ins><ins> metodi,</ins><ins> come</ins><ins> puts</ins><ins> e</ins><ins> gets.</ins><ins> Date</ins><ins> uno</ins><ins> sguardo</ins><ins> a</ins><ins> questo:</ins><ins><br>nonPossoCredereDiAverSceltoUnNomeCosiLungoSoloPerPuntareA3</ins><ins> =</ins><ins> 3puts</ins><ins> nonPossoCredereDiAverSceltoUnNomeCosiLungoSoloPerPuntareA3self.puts</ins><ins> nonPossoCredereDiAverSceltoUnNomeCosiLungoSoloPerPuntareA333</ins><ins><br>Se</ins><ins> non</ins><ins> riuscite</ins><ins> a</ins><ins> capire</ins><ins> tutto,</ins><ins> va</ins><ins> bene</ins><ins> lo</ins><ins> stesso.</ins><ins> La</ins><ins> cosa</ins><ins> importante</ins><ins> da</ins><ins> capire</ins><ins> da</ins><ins> tutto</ins><ins> questo</ins><ins> è</ins><ins> che</ins><ins> ogni</ins><ins> metodo</ins><ins> viene</ins><ins> eseguito</ins><ins> da</ins><ins> qualche</ins><ins> oggetto,</ins><ins> anche</ins><ins> se</ins><ins> non</ins><ins> c'è</ins><ins> il</ins><ins> punto.</ins><ins> Se</ins><ins> capite</ins><ins> questo,</ins><ins> then</ins><ins> you're</ins> all<del> together;</del><del> however,</del><del> 5</del><del> will</del><del> have</del><del> a</del><del> much</del><del> more</del><del> difficult</del><del> time</del><del> of</del><del> making</del><del> 'pig'</del><del> copies</del><del> of</del><del> itself</del><del> and</del><del> adding</del><del> them</del><del> together.+ set.</del><ins><br>Divertenti</ins><ins> metodi</ins><ins> per</ins><ins> le</ins><ins> stringhe</ins><ins><br>Impariamo</ins><ins> adesso</ins><ins> alcuni</ins><ins> divertenti</ins><ins> metodi</ins><ins> per</ins><ins> le</ins><ins> stringhe.</ins><ins> Non</ins><ins> bisogna</ins><ins> memorizzarli</ins><ins> tutti;</ins><ins> se</ins><ins> ne</ins><ins> dimenticate</ins><ins> qualcuno</ins><ins> potete</ins><ins> sempre</ins><ins> dare</ins><ins> uno</ins><ins> sguardo</ins><ins> a</ins><ins> questa</ins><ins> pagina.</ins><ins> Vi</ins><ins> voglio</ins><ins> mostrare</ins><ins> solo</ins><ins> una</ins><ins> piccola</ins><ins> parte</ins><ins> delle</ins><ins> cose</ins><ins> che</ins><ins> si</ins><ins> possono</ins><ins> fare</ins><ins> con</ins><ins> le</ins><ins> stringhe.</ins><ins><br>(...continua)</ins><br>]]></description>
        <pubDate>Tue, 27 Feb 2007 14:16:08 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-27-14-16-08</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Qualcos'altro sui metodi<br>Fin qui abbiamo visto alcuni metodi, puts, gets e gli altri (Quiz a sorpresa: Elencate tutti i metodi che abbiamo incontrato fin qui! Ce ne sono decine; la risposta è in fondo.), ma non abbiamo mai veramente parlato di cosa sono i metodi. Sappiamo cosa fanno ma non sappiamo cosa sono.<br> senza<del> sostantivi</del><ins> un</ins><ins> nome</ins> che<del> eseguano.</del><ins> li</ins><ins> esegue.</ins> Ad esempio, il ticchettio non è qualcosa che semplicemente accade; un orologio (o una sveglia o qualcosa di simile) lo produce. In italiano diremmo, &quot;L'orologio ticchetta.&quot; In Ruby potremmo scrivere orologio.ticchetta (ovviamente assumendo che orologio è un oggetto Ruby). I programmatori potrebbero dire che &quot;abbiamo chiamato il metodo ticchetta di orologio,&quot; oppure che &quot;chiamiamo ticchetta su orologio.&quot;<br>Avete fatto il quiz? Bene. Vediamo, sono sicuro che vi siete ricordati dei metodi puts, gets, e chomp, poiché ce ne siamo appena occupati. Probabilmente avete anche considerato i metodi di conversione, to_i, to_f, e to_s. Comunque, avete considerato anche gli altri quattro? Chi se non i nostri vecchi amici +, -, *, and /!<br> oggetto.<del> It's</del><del> usually</del><del> easy</del><del> to</del><del> tell</del><del> which</del><del> object</del><del> is</del><del> performing</del><del> the</del><del> method:</del><del> it's</del><del> what</del><del> comes</del><del> right</del><del> before</del><del> the</del><del> dot,</del><del> like</del><del> in</del><del> our</del><del> clock.tick</del><del> example,</del><del> or</del><del> in</del><ins> Solitamente</ins><ins> è</ins><ins> semplice</ins><ins> dire</ins><ins> quale</ins><ins> oggetto</ins><ins> sta</ins><ins> eseguendo</ins><ins> il</ins><ins> metodo:</ins><ins> è</ins><ins> quello</ins><ins> che</ins><ins> viene</ins><ins> prima</ins><ins> del</ins><ins> punto,</ins><ins> come</ins><ins> nel</ins><ins> nostro</ins><ins> esempio</ins><ins> orologio.ticchetta,</ins><ins> oppure</ins> 101.to_s.<del> Sometimes,</del><del> however,</del><del> it's</del><del> not</del><del> quite</del><del> as</del><del> obvious;</del><del> like</del><del> with</del><del> the</del><del> arithmetic</del><del> methods.</del><del> As</del><del> it</del><del> turns</del><del> out,</del><del> 5</del><ins> A</ins><ins> volte,</ins><ins> comunque,</ins><ins> non</ins><ins> è</ins><ins> così</ins><ins> scontato;</ins><ins> come</ins><ins> succede</ins><ins> per</ins><ins> i</ins><ins> metodi</ins><ins> aritmetici.</ins><ins> Risulta</ins><ins> che</ins><ins> 5</ins> + 5<ins> è</ins><ins> solo</ins><ins> un</ins><ins> modo</ins><ins> breve</ins><ins> di</ins><ins> scrivere</ins><ins> 5.+</ins><ins> 5.</ins><ins> Ad</ins><ins> esempio:</ins><ins><br>puts</ins><ins> 'hello</ins><ins> '.+</ins><ins> 'world'puts</ins><ins> (10.*</ins><ins> 9).+</ins><ins> 9hello</ins><ins> world99</ins><ins><br>It</ins><ins> isn't</ins><ins> very</ins><ins> pretty,</ins><ins> so</ins><ins> we</ins><ins> won't</ins><ins> ever</ins><ins> write</ins><ins> it</ins><ins> like</ins><ins> that;</ins><ins> however,</ins><ins> it's</ins><ins> important</ins><ins> to</ins><ins> understand</ins><ins> what</ins> is really<ins> happening.</ins><ins> (On</ins><ins> my</ins><ins> machine,</ins><ins> that</ins><ins> also</ins><ins> gives</ins><ins> me</ins><ins> a</ins><ins> warning:</ins><ins><br>warning:</ins><ins> parenthesize</ins><ins> argument(s)</ins><ins> for</ins><ins> future</ins><ins> version.</ins><ins><br>It</ins><ins> still</ins><ins> ran</ins><ins> the</ins><ins> code</ins> just<ins> fine,</ins><ins> but</ins><ins> it's</ins><ins> telling</ins><ins> me</ins><ins> that</ins><ins> it's</ins><ins> having</ins><ins> trouble</ins><ins> figuring</ins><ins> out</ins><ins> what</ins><ins> I</ins><ins> mean,</ins><ins> and</ins><ins> to</ins><ins> use</ins><ins> more</ins><ins> parentheses</ins><ins> in</ins><ins> the</ins><ins> future.)</ins><ins> This</ins><ins> also</ins><ins> gives</ins><ins> us</ins> a<del> shortcut</del><del> way</del><ins> deeper</ins><ins> understanding</ins> of<del> writing</del><del> 5.+</del><del> 5.</del><del> For</del><del> example:+ why</del><ins> we</ins><ins> can</ins><ins> do</ins><ins> 'pig'*5</ins><ins> but</ins><ins> we</ins><ins> can't</ins><ins> do</ins><ins> 5*'pig':</ins><ins> 'pig'*5</ins><ins> is</ins><ins> telling</ins><ins> 'pig'</ins><ins> to</ins><ins> do</ins><ins> the</ins><ins> multiplying,</ins><ins> but</ins><ins> 5*'pig'</ins><ins> is</ins><ins> telling</ins><ins> 5</ins><ins> to</ins><ins> do</ins><ins> the</ins><ins> multiplying.</ins><ins> 'pig'</ins><ins> knows</ins><ins> how</ins><ins> to</ins><ins> make</ins><ins> 5</ins><ins> copies</ins><ins> of</ins><ins> itself</ins><ins> and</ins><ins> add</ins><ins> them</ins><ins> all</ins><ins> together;</ins><ins> however,</ins><ins> 5</ins><ins> will</ins><ins> have</ins><ins> a</ins><ins> much</ins><ins> more</ins><ins> difficult</ins><ins> time</ins><ins> of</ins><ins> making</ins><ins> 'pig'</ins><ins> copies</ins><ins> of</ins><ins> itself</ins><ins> and</ins><ins> adding</ins><ins> them</ins><ins> together.</ins><br>]]></description>
        <pubDate>Tue, 27 Feb 2007 11:18:41 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-27-11-18-41</guid>
      </item>
          <item>
        <title> edited MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[<del>I</del><del> metodi</del><del> in</del><del> dettaglio+Qualcos'altro</del><ins> sui</ins><ins> metodi</ins><br>Fin qui abbiamo visto alcuni metodi, puts, gets e gli altri (Quiz a sorpresa: Elencate tutti i metodi che abbiamo incontrato fin qui! Ce ne sono decine; la risposta è in fondo.), ma non abbiamo mai veramente parlato di cosa sono i metodi. Sappiamo cosa fanno ma non sappiamo cosa sono.<br> senza<del> un</del><del> nome</del><ins> sostantivi</ins> che<del> li</del><del> esegua.</del><ins> eseguano.</ins> Ad esempio, il ticchettio non è qualcosa che semplicemente accade; un orologio (o una sveglia o qualcosa di simile) lo produce. In italiano diremmo, &quot;L'orologio ticchetta.&quot; In Ruby potremmo scrivere orologio.ticchetta (ovviamente assumendo che orologio è un oggetto Ruby). I programmatori potrebbero dire che &quot;abbiamo chiamato il metodo ticchetta di orologio,&quot; oppure che &quot;chiamiamo ticchetta su orologio.&quot;<br>Avete fatto il quiz? Bene. Vediamo, sono sicuro che vi siete ricordati dei metodi puts, gets, e chomp, poiché ce ne siamo appena occupati. Probabilmente avete anche considerato i metodi di conversione, to_i, to_f, e to_s. Comunque, avete considerato anche gli altri quattro? Chi se non i nostri vecchi amici +, -, *, and /!<br><ins>Come dicevo, così come ogni verbo ha bisogno di un sostantivo, allo stesso modo ogni metodo ha bisogno di un oggetto. It's usually easy to tell which object is performing the method: it's what comes right before the dot, like in our clock.tick example, or in 101.to_s. Sometimes, however, it's not quite as obvious; like with the arithmetic methods. As it turns out, 5 + 5 is really just a shortcut way of writing 5.+ 5. For example:</ins><br>]]></description>
        <pubDate>Tue, 27 Feb 2007 11:10:07 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-27-11-10-07</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Variabili e assegnazioni (tradotto, da revisionare)<br>Mescoliamoli insieme (tradotto, da revisionare)<br><del>I</del><ins>Qualcos'altro</ins><ins> sui</ins> metodi<del> in</del><del> dettaglio</del> (in traduzione)<br>Il controllo del flusso (da tradurre)<br>Array e iteratori (da tradurre)<br>]]></description>
        <pubDate>Tue, 27 Feb 2007 11:01:15 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2007-02-27-11-01-15</guid>
      </item>
          <item>
        <title> added MoreAboutMethods</title>
        <link>http://rubyacademy.pbworks.com/MoreAboutMethods</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!I metodi in dettaglio

Fin qui abbiamo visto alcuni metodi, **puts**, **gets** e gli altri (\'\'**Quiz a sorpresa**: Elencate tutti i metodi che abbiamo incontrato fin qui! Ce ne sono decine; la risposta è in fondo\'\'.), ma non abbiamo mai veramente parlato di cosa sono i metodi. Sappiamo cosa fanno ma non sappiamo cosa sono.

Ecco cosa sono effettivamente: cose che fanno cose. Se gli oggetti (come stringhe, interi, e decimali) sono i nomi nel linguaggio Ruby, allora i metodi sono come i verbi. E, proprio come nella lingua italiana, non si possono avere verbi senza un nome che li esegua. Ad esempio, il ticchettio non è qualcosa che semplicemente accade; un orologio (o una sveglia o qualcosa di simile) lo produce. In italiano diremmo, \"L\'orologio ticchetta.\" In Ruby potremmo scrivere **orologio.ticchetta** (ovviamente assumendo che orologio è un oggetto Ruby). I programmatori potrebbero dire che \"abbiamo chiamato il metodo **ticchetta** di **orologio**,\" oppure che \"chiamiamo **ticchetta** su **orologio**.\"

Avete fatto il quiz? Bene. Vediamo, sono sicuro che vi siete ricordati dei metodi **puts**, **gets**, e **chomp**, poiché ce ne siamo appena occupati. Probabilmente avete anche considerato i metodi di conversione, **to_i**, **to_f**, e **to_s**. Comunque, avete considerato anche gli altri quattro? Chi se non i nostri vecchi amici **+**, **-**, *, and **/**!
]]></description>
        <pubDate>Sun, 25 Feb 2007 11:03:22 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/MoreAboutMethods.2007-02-25-11-03-22</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Variabili e assegnazioni (tradotto, da revisionare)<br>Mescoliamoli insieme (tradotto, da revisionare)<br><del>More</del><del> About</del><del> Methods</del><del><br>Flow</del><del> Control</del><del><br>Arrays</del><del> and</del><del> Iterators</del><del><br>Writing</del><del> Your</del><del> Own</del><del> Methods</del><del><br>Classes</del><del><br>Blocks</del><del> and</del><del> Procs</del><del><br>Beyond</del><del> This</del><del> Tutorial+I</del><ins> metodi</ins><ins> in</ins><ins> dettaglio</ins><ins> (in</ins><ins> traduzione)</ins><ins><br>Il</ins><ins> controllo</ins><ins> del</ins><ins> flusso</ins><ins> (da</ins><ins> tradurre)</ins><ins><br>Array</ins><ins> e</ins><ins> iteratori</ins><ins> (da</ins><ins> tradurre)</ins><ins><br>Scrivere</ins><ins> i</ins><ins> propri</ins><ins> metodi</ins><ins> (da</ins><ins> tradurre)</ins><ins><br>Classi</ins><ins> (da</ins><ins> tradurre)</ins><ins><br>Blocchi</ins><ins> e</ins><ins> procedure</ins><ins> (da</ins><ins> tradurre)</ins><ins><br>Oltre</ins><ins> questa</ins><ins> guida</ins><ins> (da</ins><ins> tradurre)</ins><br>]]></description>
        <pubDate>Sun, 25 Feb 2007 09:34:16 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2007-02-25-09-34-16</guid>
      </item>
          <item>
        <title> added VariablesAndAssignment</title>
        <link>http://rubyacademy.pbworks.com/VariablesAndAssignment</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Variabili e assegnazioni 

Finora ogni volta che abbiamo usato **puts** con una stringa o con un numero, ciò che abbiamo stampato è poi scomparso. Quello che intendo dire è che se volevamo stampare qualcosa due volte, avremmo dovuto scriverla due volte: 

 puts \'...puoi dirlo ancora...\'
 puts \'...puoi dirlo ancora...\'

 **...puoi dirlo ancora...**
 **...puoi dirlo ancora...**

Sarebbe carino poterlo digitare una sola volta e poi... memorizzarlo da qualche parte. Naturalmente possiamo farlo (altrimenti non avrei detto tutto ciò!). 

Per memorizzare la stringa nella memoria del nostro computer bisogna dare un nome alla stringa. I programmatori spesso chiamano questa operazione \'\'assegnazione\'\' e chiamano i nomi \'\'variabili\'\'. La variabile può essere costituita da una sequenza di lettere e numeri, ma il primo carattere deve essere una lettera minuscola. Proviamo nuovamente questo programma, questa volta però daremo alla stringa il nome **laMiaStringa** (anche se l\'avrei potuta anche chiamare **str** o **laMiaPiccolaStringa** oppure **enricoOttavo**).

 laMiaStringa = \'...puoi dirlo ancora...\'
 puts laMiaStringa
 puts laMiaStringa

 **...puoi dirlo ancora...**
 **...puoi dirlo ancora...**

Ogni volta che il programma fa un\'operazione con **laMiaStringa**, in realtà la fa con **\'...puoi dirlo ancora...\'**. Si può pensare che la variabile **laMiaStringa** \"punti\" alla stringa **\'...puoi dirlo ancora...\'**. Ecco un esempio un po\' più interessante: 

 nome = \'Patricia Rosanna Jessica Mildred Oppenheimer\'
 puts \'Mi chiamo \' + nome + \'.\'
 puts \'Wow!  \' + nome + \' è un nome veramente lungo!\'

 **Mi chiamo Patricia Rosanna Jessica Mildred Oppenheimer.**
 **Wow!  Patricia Rosanna Jessica Mildred Oppenheimer è un nome veramente lungo!**

Inoltre, allo stesso modo di come si assegna un oggetto ad una variabile, è possibile \'\'riassegnare\'\' un oggetto differente a quella variabile (ecco perché le chiamiamo variabili: perché ciò a cui puntano può variare).

 compositore = \'Mozart\'
 puts compositore + \' era \"il massimo\" ai suoi tempi.\'
 
 compositore = \'Beethoven\'
 puts \'Ma personalmente preferisco \' + compositore + \'.\'

 **Mozart era \"il massimo\" ai suoi tempi.**
 **Ma personalmente preferisco Beethoven.**

Naturalmente le variabili possono puntare a ogni tipo di oggetto, non solo alle stringhe: 

 var = \'solo un\\\'altra \' + \'stringa\'
 puts var
 
 var = 5 * (1+2)
 puts var

 **solo un\'altra stringa**
 **15**

Infatti le variabili possono puntare a quasi qualsiasi cosa eccetto altre variabili. Allora cosa succede se ci proviamo?

 var1 = 8
 var2 = var1
 puts var1
 puts var2
 
 puts \'\'
 
 var1 = \'otto\'
 puts var1
 puts var2

 **8**
 **8**
 
 **otto**
 **8**

Come prima cosa, quando abbiamo provato a far puntare **var2** a **var1**, la variabile ha davvero puntato a **8** (proprio come var1). Dopodiché abbiamo fatto puntare var1 a **\'otto\'**, ma dato che **var2** in realtà non ha mai veramente puntato **var1**, la variabile ha continuato a puntare **8**. 

Ora che abbiamo le variabili, i numeri e le stringhe, impariamo ad %5BMixingItUp|usarli assieme%5D!
]]></description>
        <pubDate>Sat, 04 Nov 2006 13:41:08 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/VariablesAndAssignment.2006-11-04-13-41-08</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[# %5BGettingStarted|Iniziamo%5D (''tradotto, da revisionare'')<br />
# %5BNumbers|I numeri%5D (''tradotto, da revisionare'')<br />
# %5BLetters|Le lettere%5D (''tradotto, da revisionare'')<br />
# Variables and Assignment <br />
# %5BVariablesAndAssignment|Variabili e assegnazioni%5D (''tradotto, da revisionare'')<br />
# %5BMixingItUp|Mescoliamoli insieme%5D (''tradotto, da revisionare'')<br />
# More About Methods <br />
# Flow Control]]></description>
        <pubDate>Sat, 04 Nov 2006 13:29:47 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-11-04-13-29-47</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!!Impariamo a programmare<br />
''Traduzione in italiano di **Learn to Program** ( http://pine.fm/LearnToProgram )''<br />
# %5BGettingStarted|Iniziamo%5D<br />
# %5BGettingStarted|Iniziamo%5D (''tradotto, da revisionare'')<br />
# %5BNumbers|I numeri%5D (''tradotto, da revisionare'')<br />
# %5BLetters|Le lettere%5D (''tradotto, da revisionare'')<br />
# Variables and Assignment]]></description>
        <pubDate>Sat, 04 Nov 2006 08:16:10 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-11-04-08-16-10</guid>
      </item>
          <item>
        <title> added GettingStarted</title>
        <link>http://rubyacademy.pbworks.com/GettingStarted</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Iniziamo

Quando programmiamo un computer dobbiamo \"parlare\" in un linguaggio che il computer possa comprendere: un linguaggio di programmazione. Esistono tantissimi linguaggi di programmazione, molti dei quali sono eccellenti. In questa guida ho scelto di utilizzare il mio linguaggio di programmazione preferito, \'\'Ruby\'\'. 

Oltre ad essere il mio preferito, Ruby è anche il linguaggio di programmazione più semplice che io abbia mai visto (e ne ho visti diversi). Questo è il vero motivo per il quale sto scrivendo questa guida: non ho deciso di scrivere una guida e poi ho scelto Ruby perché è il mio preferito; piuttosto, ho trovato Ruby talmente semplice che doveva esserci una buona guida per principianti che lo utilizzasse. È la semplicità di Ruby che ha portato a questa guida, non il fatto che sia il mio linguaggio preferito (scrivere una simile guida utilizzando un altro linguaggio, come il C++ o il Java avrebbe richiesto centinaia e centinaia di pagine). Ma non crediate che il fatto che Ruby sia semplice significhi che sia un linguaggio per principianti! È invece un linguaggio di programmazione potente e professionale come forse mai nessun altro lo è stato.

Quando scriviamo qualcosa nel linguaggio umano, ciò che viene scritto lo chiamiamo testo. Quando scriviamo qualcosa in un linguaggio di programmazione, questo viene invece chiamato \'\'codice\'\'. Ho inserito molti esempi di codice Ruby nella guida, la maggior parte dei quali sono programmi completi che potete eseguire sul vostro computer. Per rendere la lettura del codice più immediata ho colorato differentemente le varie parti (per esempio, i numeri sono sempre in **verde**). Tutto ciò che si dovrà digitare sarà in un |rettangolo bianco| e tutto ciò che il programma stamperà sarà in un |**rettangolo blu**|. 

Se durante la lettura si incontrerà qualcosa che non si riesce a comprendere, la si scriva e si continui nella lettura! È possibile che la risposta si trovi in un capitolo successivo! Ad ogni modo, se non si trova la risposta entro l\'ultimo capitolo, verrà spiegato dove chiedere aiuto. Ci sono tante persone in giro più che disponibili ad aiutare chi è in difficoltà, basta solo sapere dove trovarle. 

Ma innanzitutto dobbiamo scaricare e installare Ruby sul nostro computer!


!!Installazione per Windows 

L\'installazione di Ruby per Windows è velocissima. Come prima cosa bisogna scaricare il programma di installazione di %5Bhttp://rubyinstaller.rubyforge.org/|Ruby%5D. Potrebbero esserci più di una versione tra le quali scegliere; questa guida usa la versione 1.8.4 quindi assicuriamoci di scaricare una versione recente almeno quanto questa (io suggerirei di scaricare l\'ultima versione disponibile). Dopodiché eseguiamo il programma di installazione. Ci verrà chiesto dove installare Ruby e almeno che non si abbia una buona ragione per farlo, si lasci la sua locazione invariata. 

Per poter programmare dobbiamo poter scrivere programmi ed eseguirli. Per fare questo c\'è bisogno di un editor di testi e di una linea di comando. 

Il programma di installazione di Ruby installa anche un bel editor di testi chiamato SciTE (Scintilla Text Editor). Per far colorare il proprio codice alla stessa maniera degli esempi di questa guida, scarichiamo i seguenti file e copiamoli nella cartella di SciTE (\'\'c:/ruby/scite\'\' se non è stata modificata la sua locazione):

* %5Bhttp://pine.fm/LearnToProgram/SciTEGlobal.properties|Proprietà globali%5D
* %5Bhttp://pine.fm/LearnToProgram/ruby.properties|Proprietà di ruby%5D 

Sarebbe inoltre una buona idea quella di creare una cartella dove conservare tutti i propri programmi. Assicuriamoci quando salviamo un programma di farlo in questa cartella. 

Per ottenere la linea di comando, selezioniamo \"Prompt di ms-dos\" dalla cartella Accessori del menu avvio. Quindi spostiamoci nella cartella dove conserviamo i nostri programmi. Digitando |cd ..| si scenderà di un livello e digitando |cd nomecartella| si entrerà nella cartella con nome \'\'nomecartella\'\'. Per vedere tutte le cartelle contenute nella cartella in cui ci si trova, digitiamo |dir /ad|. 

Ed è tutto! È tutto pronto per %5BNumbers|imparare a programmare%5D.


!!Installazione per Macintosh 

Se utilizziamo Mac OS X 10.2 (Jaguar), allora abbiamo già Ruby a disposizione sul nostro sistema! Potrebbe essere più facile di così? Se invece stiamo utilizzando la versione 10.1, avremo bisogno di scaricare Ruby. Sfortunatamente credo che non sia possibile utilizzare Ruby su Mac OS 9 e sulle versioni precedenti. 

Per poter programmare abbiamo bisogno di poter scrivere programmi ed eseguirli. Per fare questo c\'è bisogno di un editor di testi e di una linea di comando. 

La linea di comando è accessibile tramite l\'applicazione Terminal (che si trova in Applications/Utilities). 

Come editor di testi possiamo utilizzare qualunque editor al quale si è familiari o con i quali ci si trova bene. Se si utilizza TextEdit, comunque, assicuriamoci di salvare i programmi nel formato di solo testo altrimenti i programmi \'\'non funzioneranno\'\'! Altri editor sono emacs, vi e pico, tutti accessibili dalla linea di comando. 

Ed è tutto! È tutto pronto per %5BNumbers|imparare a programmare%5D.


!!Installazione per Linux 

Innanzitutto controlliamo se Ruby è già installato sul nostro sitema. Digitiamo |which ruby|. Se viene stampato qualcosa tipo |**/usr/bin/which: no ruby in (...)**|, allora avremo bisogno di %5Bhttp://www.ruby-lang.org/en/20020102.html|scaricare Ruby%5D, altrimenti controlliamo che versione di Ruby è installata digitando |ruby -v|. Se è più vecchia dell\'ultima versione stabile rilasciata, possiamo aggiornarla dalla pagina suddetta. 

Se si abbiamo i permessi di root (amministratore), allora probabilmente non abbiamo necessità di conoscere alcuna istruzione per installare Ruby. Se invece non li abbiamo, dovremo chiedere all\'amministratore di sistema di installarlo (in questo modo Ruby potrà essere utilizzato da tutti gli utenti del sistema). 

Altrimenti potremo installarlo in modo tale che solo il nostro utente potrà utilizzarlo. Spostiamo il file scaricato in una directory temporanea, tipo \'\'$HOME/tmp\'\'. Se il nome del file è \'\'ruby-1.6.7.tar.gz\'\', è possibile estrarlo digitando |tar zxvf ruby-1.6.7.tar.gz|. Spostiamoci nella directory appena creata (in questo esempio, |cd ruby-1.6.7|). 

Configurare l\'installazione digitando |./configure --prefix=$HOME|. Quindi scriviamo |make| per assemblare il nostro interprete Ruby. Questa operazione potrebbe richiedere qualche minuto; al termine, digitiamo |make install| per installarlo. 

Infine avremo bisogno di aggiungere \'\'$HOME/bin\'\' al nostro path modificando il file \'\'$HOME/.bashrc\'\' (Perché questa modifica abbia effetto bisogna fare il logout e nuovamente il login). Fatto questo, controlliamo che l\'installazione sia andata a buon termine digitando: |ruby -v|. Se il programma risponde con la versione di Ruby installata è possibile eliminare i file nella directory \'\'$HOME/tmp\'\' (o dovunque siano stati messi). 

Ed è tutto! È tutto pronto per %5BNumbers|imparare a programmare%5D.
]]></description>
        <pubDate>Sat, 04 Nov 2006 08:15:49 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/GettingStarted.2006-11-04-08-15-49</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!!Impariamo a programmare<br />
''Traduzione in italiano di **Learn to Program** ( http://pine.fm/LearnToProgram )''<br />
# %5BGetting Started|Iniziamo%5D<br />
# %5BNumbers|I numeri%5D (''tradotto, da revisionare'')<br />
# %5BLetters|Le lettere%5D (''tradotto, da revisionare'')<br />
# Variables and Assignment]]></description>
        <pubDate>Sat, 04 Nov 2006 07:52:38 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-11-04-07-52-38</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!!Impariamo a programmare<br />
''Traduzione in italiano di **Learn to Program** ( http://pine.fm/LearnToProgram )''<br />
# Getting Started<br />
# %5BNumbers|I numeri%5D ('tradotto, da revisionare'')<br />
# %5BLetters|Le lettere%5D ('tradotto, da revisionare'')<br />
# %5BNumbers|I numeri%5D (''tradotto, da revisionare'')<br />
# %5BLetters|Le lettere%5D (''tradotto, da revisionare'')<br />
# Variables and Assignment <br />
# %5BMixingItUp|Mescoliamoli insieme%5D (''tradotto, da revisionare'')<br />
# More About Methods]]></description>
        <pubDate>Mon, 30 Oct 2006 13:32:18 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-30-13-32-18</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!!Impariamo a programmare<br />
''Traduzione in italiano di **Learn to Program** ( http://pine.fm/LearnToProgram )''<br />
# Getting Started<br />
# %5BNumbers|I numeri%5D (''in traduzione'')<br />
# %5BLetters|Le lettere%5D (''in traduzione'')<br />
# %5BNumbers|I numeri%5D ('tradotto, da revisionare'')<br />
# %5BLetters|Le lettere%5D ('tradotto, da revisionare'')<br />
# Variables and Assignment <br />
# %5BMixingItUp|Mescoliamoli insieme%5D (''tradotto, da revisionare'')<br />
# More About Methods]]></description>
        <pubDate>Mon, 30 Oct 2006 13:31:52 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-30-13-31-52</guid>
      </item>
          <item>
        <title> edited Letters</title>
        <link>http://rubyacademy.pbworks.com/Letters</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Le lettere<br />
E così adesso sappiamo tutto sui %5Bnumeri|Numbers|numeri%5D, ma cosa sappiamo sulle lettere? e sulle parole? e sul testo?<br />
In un programma un gruppo di lettere è detto ''stringa''. (Potete pensare a delle lettere stampate tenute insieme su uno striscione.) Le stringhe saranno colorate di **rosso** per distinguerle facilmente all'interno del codice. Ecco alcune stringhe: <br />
'**Ciao.**'<br />
'**Ruby rocks.**'<br />
'**5 è il mio numero preferito... quale è il tuo?**'<br />
'**Snoopy dice #%^?&@! when he stubs his toe.**'<br />
'**Snoopy dice #%^?&@! quando urta con il ditone.**'<br />
'&lt;raw&gt;            &lt;/raw&gt;'<br />
'&lt;raw&gt;&lt;/raw&gt;'<br />
Funziona bene. Adesso prova con alcune stringhe a tuo piacere.<br />
!!Aritmetica con le stringhe<br />
Così come si può fare aritmetica con i numeri, è possibile fare aritmetica con le stringhe! Così come si può fare aritmetica con i numeri, è possibile fare aritmetica con le stringhe! Well, sort of... possiamo sommare stringhe, anyway. Proviamo a sommare due stringhe e vediamo **puts** cosa tira fuori.<br />
O almeno una specie di aritmetica... <br />
comunque possiamo sommare le stringhe. Proviamo a sommare due stringhe e vediamo **puts** cosa tira fuori.<br />
puts 'Mi piace' + 'la torta di mele.'<br />
Quindi possiamo aggiungere stringhe, e possiamo anche moltiplicarle! (Per un numero, ovviamente.) Vediamo:<br />
puts 'blinkau ' * 4<br />
**batting her eyes**<br />
**cane che abbaia**<br />
(Sto scherzando... in realtà viene fuori questo:)<br />
**b **blink blink blink blink**<br />
**bau bau bau bau**<br />
Pensandoci ha perfettamente senso. Dopotutto, ''&lt;raw&gt;7*3&lt;/raw&gt;'' significa **7+7+7**, così ''&lt;raw&gt;'moo'*3&lt;/raw&gt;'' significa **'moo'+'moo'+'moo'**.<br />
puts 'You're swell!'<br />
ebbene, così non funziona; non voglio neanche provare ad eseguirlo. The computer thought we were done with the string. (Ecco perché è una buona cosa avere un editor di testo con la ''sintassi colorata''.) Quindi come facciamo a far sapere al computer cosa vogliamo mettere nella stringa? Dobbiamo ''escape'' l'apostrofo, in questo modo:<br />
ebbene, così non funziona; non voglio neanche provare ad eseguirlo. The computer thought we were done with the string. (Ecco perché è una buona cosa avere un editor di testo con la ''sintassi colorata''.) Quindi come facciamo a far sapere al computer cosa vogliamo mettere nella stringa? Dobbiamo fare l'''escape'' dell'apostrofo, in questo modo:<br />
puts 'You\'re swell!'<br />
**You're swell!**<br />
Il backslash è il carattere di escape. <br />
Il backslash è il carattere di escape. In altre parole se si ha un backslash seguito da un altro carattere questi a volte vengono sostituiti da un nuovo carattere. Le sole cose di cui il backslash fa l'escape comunque sono l'apostrofo e il backslash stesso (se ci si pensa, i caratteri di escape devono sempre fare l'escape anche di sé stessi). Ecco degli esempi, credo, ordinati:<br />
puts 'L\'arcobaleno è bello!'<br />
puts 'backslash alla fine della stringa:  \\'<br />
puts 'su\\giu'<br />
puts 'su\giu'<br />
''...continua''<br />
**L'arcobaleno è bello!**<br />
**backslash alla fine della stringa:  \**<br />
**su\giu**<br />
**su\giu**<br />
Dato che il backslash non fa l'escape della lettera **'g'**, ma fa l'escape di sé stesso, le ultime due stringhe sono identiche: nel codice sembrano differenti ma per il computer sono la stessa stringa. <br />
Se vi vengono delle domande o delle perplessità continuate %5BVariablesAndAssignment|leggere%5D! Dopotutto non posso rispondere a tutte le domande in ''questa'' pagina.]]></description>
        <pubDate>Mon, 30 Oct 2006 13:31:26 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Letters.2006-10-30-13-31-26</guid>
      </item>
          <item>
        <title> edited Numbers</title>
        <link>http://rubyacademy.pbworks.com/Numbers</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!!Semplice Aritmetica<br />
we've got all the makings of a simple calculator<br />
Finora abbiamo ottenuto tutte le funzionalità di una semplice calcolatrice. (Le calcolatrici usano sempre i decimali, quindi se vogliamo che il nostro computer si comporti come una calcolatrice dobbiamo usare anche noi i decimali.) Per l'addizione e la sottrazione usiamo + e - come già detto. Per la moltiplicazione usiamo * e per la divisione /. Molte tastiere hanno questi tasti nel tastierino numerico a destra. If you have a smaller keyboard or a laptop, though, you can just use Shift 8 and / (same key as the ? key). Let's try to expand our calc.rb program a little. Type in the following and then run it.<br />
Se invece si ha una tastiera più piccola oppure un portatile, si può usare ''Shift +'' e ''Shift 7''. Proviamo ora ad aggiungere qualcosa al nostro programma &lt;raw&gt;calc.rb&lt;/raw&gt;. Scriviamo quanto segue ed eseguiamo.<br />
puts 1.0 + 2.0<br />
puts 2.0 * 3.0<br />
Uh... tranne l'ultimo! Quando si fa aritmetica con gli interi bisogna aspettarsi risposte ''intere''. Quando il computer non può ricavare la risposta ''esatta'' non può far altro che arrotondare. (Ovviamente, **4** è la risposta giusta di **9/2** nell'aritmetica degli interi; solo non è la risposta che ci aspettavamo.)<br />
Forse vi starete chiedendo a cosa serve la divisione tra numeri interi. Immaginiamo di stare andando a vedere un film e di avere solo 9 dollari. Qui a Portland si può vedere un film al Bagdad con 2 dollari. Quanti film possiamo vedere? **9/2**... **4** film. In questo caso di sicuro 4.5 ''non'' è la risposta giusta: non ci verrà fatto vedere mezzo film e non si potrà entrare solo per metà per vedere un film intero... alcune cose semplicemente sono indivisibili.<br />
''...continua''<br />
Sperimentate adesso per conto vostro con qualche programma! Per scrivere espressioni più complesse si possono usare le parentesi. Ad esempio: <br />
puts 5 * (12-8) + -15<br />
puts 98 + (59872 / (13*8)) * -52<br />
**5**<br />
**-29802**<br />
!!Alcune cose da provare <br />
Scrivere un programma che dica: <br />
* quante ore ci sono in un anno? <br />
* quanti minuti ci sono in un decennio? <br />
* quanti secondi di vita hai? <br />
* quanti cioccolatini conti di mangiare nella tua vita? (**Attenzione**: questa parte del programma potrebbe richiedere un po' di tempo!)<br />
Ecco una domanda più ostica: <br />
* Se ho 878 milioni di secondi di vita, quanti anni ho? <br />
Una volta finito di giocare e sperimentare con i numeri andremo a dare un'occhiata alle %5BLetters|lettere%5D.]]></description>
        <pubDate>Mon, 30 Oct 2006 13:22:33 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Numbers.2006-10-30-13-22-33</guid>
      </item>
          <item>
        <title> edited Numbers</title>
        <link>http://rubyacademy.pbworks.com/Numbers</link>
        <author>email@hidden ()</author>
        <description><![CDATA[In pratica, molti programmi non usano i decimali, ma solo numeri interi. (Dopo tutto, nessuno vuole leggere 7.4 email, o navigare 1.8 pagine, oppure ascoltare 5.24 canzoni...) I decimali sono usati in ambiti accademici (esperimenti di fisica e simili) e per la grafica 3D. Anche molti programmi che hanno a che fare con i soldi usano interi, tengono semplicemente il conto del numero dei centesimi!<br />
!!Semplice Aritmetica<br />
we've got all the makings of a simple calculator. (Le calcolatrici usano sempre i decimali, quindi se vogliamo che il nostro computer si comporti come una calcolatrice dobbiamo usare anche noi i decimali.) Per l'addizione e la sottrazione usiamo + e - come già detto. Per la moltiplicazione usiamo * e per la divisione /. Molte tastiere hanno questi tasti nel tastierino numerico a destra. If you have a smaller keyboard or a laptop, though, you can just use Shift 8 and / (same key as the ? key). Let's try to expand our calc.rb program a little. Type in the following and then run it.<br />
puts 1.0 + 2.0<br />
puts 2.0 * 3.0<br />
puts 5.0 - 8.0<br />
puts 9.0 / 2.0<br />
Otterremo questo:<br />
**3.0**<br />
**6.0**<br />
**-3.0**<br />
**4.5**<br />
(Gli spazi nel programma non sono importatnti; rendono solo il codice facile da leggere.) Bene, finora nessuna grande sorpresa. Proviamo adesso con gli interi:<br />
puts 1+2<br />
puts 2*3<br />
puts 5-8<br />
puts 9/2<br />
Essenzialmente gli stessi di prima, giusto?<br />
**3**<br />
**6**<br />
**-3**<br />
**4**<br />
Uh... tranne l'ultimo! Quando si fa aritmetica con gli interi bisogna aspettarsi risposte ''intere''. Quando il computer non può ricavare la risposta ''esatta'' non può far altro che arrotondare. (Ovviamente, **4** è la risposta giusta di **9/2** nell'aritmetica degli interi; solo non è la risposta che ci aspettavamo.)<br />
''...continua'']]></description>
        <pubDate>Sun, 29 Oct 2006 19:32:41 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Numbers.2006-10-29-19-32-41</guid>
      </item>
          <item>
        <title> edited Letters</title>
        <link>http://rubyacademy.pbworks.com/Letters</link>
        <author>email@hidden ()</author>
        <description><![CDATA[puts 'You're swell!'<br />
ebbene, così non funziona; non voglio neanche provare ad eseguirlo.<br />
ebbene, così non funziona; non voglio neanche provare ad eseguirlo. The computer thought we were done with the string. (Ecco perché è una buona cosa avere un editor di testo con la ''sintassi colorata''.) Quindi come facciamo a far sapere al computer cosa vogliamo mettere nella stringa? Dobbiamo ''escape'' l'apostrofo, in questo modo:<br />
puts 'You\'re swell!'<br />
**You're swell!**<br />
Il backslash è il carattere di escape. <br />
''...continua'']]></description>
        <pubDate>Sun, 29 Oct 2006 19:15:51 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Letters.2006-10-29-19-15-51</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[# %5BNumbers|I numeri%5D (''in traduzione'')<br />
# %5BLetters|Le lettere%5D (''in traduzione'')<br />
# Variables and Assignment <br />
# %5BMixingItUp|Mescoliamoli insieme%5D (''# %5BMixingItUp|Mescoliamoli insieme%5D (''in traduzione'')<br />
tradotto, da revisionare'')<br />
# More About Methods <br />
# Flow Control <br />
# Arrays and Iterators]]></description>
        <pubDate>Sun, 29 Oct 2006 08:50:06 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-29-08-50-06</guid>
      </item>
          <item>
        <title> edited MixingItUp</title>
        <link>http://rubyacademy.pbworks.com/MixingItUp</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Si può notare che anche dopo aver convertito **var1** in stringa, chiamando **to_s**, questi punta sempre a **2** e mai a **'2'**. A meno che non sia esplicitamente riassegnato (il che richiede il segno ''='') **var1** punterà a **2** in tutto il programma.<br />
Adesso proviamo alcune interessanti (e alcun<br />
a volte un po' strane) conversioni:<br />
puts '15'.to_f<br />
puts '99.999'.to_f<br />
**stringy**<br />
**3**<br />
Probabilmente, alcune di queste conversioni sorprendono un po'. La prima è abbastanza standard e ci da |15.0|. Poi abbiamo convertito la stringa **'99.999'** in decimale e in intero. Il decimale fa quello che ci si aspetta; l'intero, come al solito, è arrotondato.<br />
E ancora, seguono alcuni esempi di... ''insolite'' stringhe convertite in numeri. **to_i** ignora la prima cosa che non capisce, e anche il resto della stringa da quel punto in poi. Così la prima stringa è convertita in **5**, ma le altre, che iniziano con una lettera, sono ignorate completamente... e il computer mostra solo uno zero.<br />
''...continua''<br />
Infine, le ultime due conversioni non fanno assolutamente niente, proprio come ci si aspetta.<br />
!!Un altro sguardo a ''puts''<br />
Ci sono strani comportamenti del nostro metodo preferito... Date uno sguardo a questo:<br />
puts 20<br />
puts 20.to_s<br />
puts '20'<br />
**20**<br />
**20**<br />
**20**<br />
Perché in tutti e tre i casi viene stampata la stessa cosa? Bene, sugli ultimi due nessuna stranezza, poiché **20.to_s** è **'20'**. Ma perché succede anche con il primo, l'intero **20**? For that matter, what does it even mean to write out the integer 20? Quando scriviamo un ''2'' e poi uno ''0'' su un pezzo di carta, noi stiamo scrivendo una stringa, non un intero. ''L'intero 20'' è il numero di dita delle mani e dei piedi che io ho; non è un ''2'' seguito da uno ''0''.<br />
Bene, qui c'è il grande segreto del nostro amico **puts**: Prima di scrivere un oggetto **puts** utilizza **to_s** per ottenere l'oggetto sotto forma di stringa. Infatti, la ''s'' in **puts** sta per ''stringa''; **puts** dunque significa ''put string''.<br />
Questo potrebbe sembrare non molto entusiasmante adesso, ma in Ruby ci sono tantissimi tipi di oggetti (impareremo anche come crearne di nostri!), ed è divertente sapere cosa accade quando tentiamo di usare **puts** su un oggetto veramente molto strano, come ad esempio un'immagine di nostar nonna, o un file musicale o qualcos'altro. Ma questo lo vedremo dopo...<br />
Nel frattempo, vediamo alcuni metodi che si permetteranno di scrivere ogni genere di programma...<br />
!!I metodi ''gets'' e ''chomp''<br />
Se **puts** significa ''put string'', sono sicuro che potete indovinare il significato di **gets**. Poiché **puts** tira fuori delle stringhe, allora **gets** sarà in grado di recuperare delle stringhe. E da dove le otterrà?<br />
Da noi! Dalla nostra tastiera ovviamente. Poiché la nostra tastiera produce solo stringhe, tutto funziona a meraviglia. Quello che accade è che **gets** se ne sta in attesa di leggere quello che scriviamo fino a che non premiamo il tasto ''Enter''. Proviamo:<br />
puts gets<br />
|**C'è eco qui?**|<br />
**C'è eco qui?**<br />
Ovviamente qualsiasi cosa scriviamo sarà ripetuta. Provate ad eseguirlo più volte e a scrivere cose differenti.<br />
A questo punto siamo pronti per fare un programma interattivo! Scriveremo il nostro nome e il programma ci saluterà:<br />
puts 'Salve, qual\'è il tuo nome ?'<br />
nome = gets<br />
puts 'Il tuo nome è ' + nome + '?  Che bel nome!'<br />
puts 'Piacere di conoscerti, ' + nome + '.  :)'<br />
Eek! Lo eseguiamo scriviamo il nostro nome e questo è quello che accade:<br />
**Salve, qual'è il tuo nome?**<br />
**|Chris|**<br />
**Il tuo nome è Chris**<br />
**?  Che bel nome!**<br />
**Piacere di conoscerti, Chris**<br />
**.  :)**<br />
Hmmm... sembra come se quando ho scritto le lettere ''C, h, r, i, s,'' e premuto ''Enter'', **gets** ha preso tutte le lettere del mio nome e anche ''Enter''! Fortunatamente, c'è un metodo proprio per questo tipo di cose: **chomp** che toglie ogni ''Enter'' dalla fine delle nostre stringhe. Proviamo ancora, ma stavolta ci faremo aiutare da **chomp**:<br />
puts 'Salve, qual\'è il tuo nome ?'<br />
nome = gets.chomp<br />
puts 'Il tuo nome è ' + nome + '?  Che bel nome!'<br />
puts 'Piacere di conoscerti, ' + nome + '.  :)'<br />
**Salve, qual'è il tuo nome?**<br />
**|Chris|**<br />
**Il tuo nome è Chris?  Che bel nome!**<br />
**Piacere di conoscerti, Chris.  :)**<br />
Molto meglio! Notate che **nome** sta puntando a **gets.chomp**, quindi non dovremo più fare **nome.chomp**, poiché il nome è già **chomp**ato.<br />
!!Alcune cose da provare<br />
* Scrivere un programma che chiede il nome, il secondo nome e il cognome di una persona. E infine dovrebbe salutare la persona usando il nome completo.<br />
* Scrivere un programma che chiede ad una persona il suo numero preferito. Quindi il programma aggiunge uno al numero e lo suggerisce come un migliore e più grande numero preferito. (Abbiate molto tatto a tale proposito.)<br />
Una volta finiti questi due programmi (e qualsiasi altro vogliate fare), impareremo qualche altro %5BMoreAboutMethods|metodo%5D e qualcosa di più sui metodi in generale.]]></description>
        <pubDate>Sun, 29 Oct 2006 08:49:15 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MixingItUp.2006-10-29-08-49-15</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!!Impariamo a programmare<br />
''Traduzione in italiano di **Learn to Program** ( http://pine.fm/LearnToProgram )''<br />
# Getting Started<br />
# %5BNumbers|I numeri%5D<br />
# %5BLetters|Le lettere%5D<br />
# %5BNumbers|I numeri%5D (''in traduzione'')<br />
# %5BLetters|Le lettere%5D (''in traduzione'')<br />
# Variables and Assignment <br />
# %5BMixingItUp|Mescoliamoli insieme%5D (''in traduzione'')<br />
# More About Methods <br />
# Flow Control <br />
# Arrays and Iterators]]></description>
        <pubDate>Sun, 29 Oct 2006 07:49:52 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-29-07-49-52</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Progetto "Rubini per bambini"<br />
''Ovvero'' **Ruby come primo linguaggio di programmazione da imparare**<br />
---<br />
!!Impariamo a programmare<br />
''Traduzione in italiano di **Learn to Program** ( http://pine.fm/LearnToProgram )''<br />
# Getting Started]]></description>
        <pubDate>Sat, 28 Oct 2006 16:35:42 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-28-16-35-42</guid>
      </item>
          <item>
        <title> edited SideBar</title>
        <link>http://rubyacademy.pbworks.com/SideBar</link>
        <author>email@hidden ()</author>
        <description><![CDATA[**Progetto "Rubini per bambini"**<br />
Ovvero Ruby come primo linguaggio di programmazione da imparare.<br />
* %5Bhttp://rubyacademy.pbwiki.com|Home page%5D<br />
* %5BContatti%5D<br />
* %5Bhttp://rubyacademy.pbwiki.com/rss2.php?a=01685fb903d6a2df4102526c080dc3f581e37d03|RSS%5D]]></description>
        <pubDate>Sat, 28 Oct 2006 16:35:27 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/SideBar.2006-10-28-16-35-27</guid>
      </item>
          <item>
        <title> edited Contatti</title>
        <link>http://rubyacademy.pbworks.com/Contatti</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Collaborazioni<br />
Chi è interessato a collaborare alla traduzione di **Learn To Program** può contattarmi all'indirizzoChi è interessato a collaborare alla traduzione di **Learn To Program** può contattarmi all'indirizzo %5Bhttp://rubyacademy.pbwiki.com/f/email.png%5DChi è interessato a collaborare alla traduzione di **Learn To Program** può contattarmi all'indirizzo:<br />
%5Bhttp://rubyacademy.pbwiki.com/f/email.png%5D]]></description>
        <pubDate>Sat, 28 Oct 2006 16:34:42 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Contatti.2006-10-28-16-34-42</guid>
      </item>
          <item>
        <title> edited Contatti</title>
        <link>http://rubyacademy.pbworks.com/Contatti</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Collaborazioni<br />
Chi è interessato a collaborare alla traduzione di **Learn To Program** può contattarmi all'indirizzo Chi è interessato a collaborare alla traduzione di **Learn To Program** può contattarmi all'indirizzo 1115201006@HotPOP.com<br />
%5Bhttp://rubyacademy.pbwiki.com/f/email.png%5D]]></description>
        <pubDate>Sat, 28 Oct 2006 16:34:26 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Contatti.2006-10-28-16-34-26</guid>
      </item>
          <item>
        <title> uploaded </title>
        <link>http://rubyacademy.pbworks.com/</link>
        <author>email@hidden ()</author>
        <description><![CDATA[<a href="http://rubyacademy.pbworks.com/f/email.png"><img src="http://rubyacademy.pbworks.com/f/email.png" alt="email.png" /></a>]]></description>
        <pubDate>Sat, 28 Oct 2006 16:33:20 +0000</pubDate>
        <category>upl</category>
        <guid>http://rubyacademy.pbworks.com/f/.2006-10-28-16-33-20</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Progetto "Rubini per bambini"<br />
''Ovvero'' **Ruby come primo linguaggio di programmazione da imparare**<br />
---]]></description>
        <pubDate>Fri, 27 Oct 2006 12:33:18 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-27-12-33-18</guid>
      </item>
          <item>
        <title> edited MixingItUp</title>
        <link>http://rubyacademy.pbworks.com/MixingItUp</link>
        <author>email@hidden ()</author>
        <description><![CDATA[**3**<br />
''...comtinua''<br />
<br />
''...continua'']]></description>
        <pubDate>Wed, 25 Oct 2006 18:15:36 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/MixingItUp.2006-10-25-18-15-36</guid>
      </item>
          <item>
        <title> added MixingItUp</title>
        <link>http://rubyacademy.pbworks.com/MixingItUp</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Mescoliamoli insieme

Finora abbiamo visto alcuni differenti tipi di oggetti (numeri e lettere), e abbiamo creato delle variabili che puntano ad essi; la prossima cosa che faremo sarà quella prenderli e di metterli allegramente insieme.

Abbiamo visto che se vogliamo far stampare |25| al nostro programma, il seguente programma non va bene, poiché non si possono sommare numeri e stringhe:

 var1 = 2
 var2 = \'5\'
 
 puts var1 + var2

Parte del problema sta nel fatto che il computer non sa se vogliamo ottenere |7| **(2 + 5)** oppure |25| **(\'2\' + \'5\')**. 

Prima di poterli sommare abbiamo bisogno di rappresentare **var1** come stringa oppure **var2** come intero.

!!Conversioni

Per ottenere la versione stringa di un oggetto, basta aggiungere **.to_s** dopo di esso: 

 var1 = 2
 var2 = \'5\'
 
 puts var1.to_s + var2

 **25**

Allo stesso modo **to_i** ci fornisce l\'oggetto sotto forma di intero, e **to_f** ci da invece la versione decimale. Vediamo un po\' più da vicino cosa fanno (e cosa \'\'non fanno\'\') questi tre metodi:

 var1 = 2
 var2 = \'5\'
 
 puts var1.to_s + var2
 puts var1 + var2.to_i

 **25**
 **7**

Si può notare che anche dopo aver convertito **var1** in stringa, chiamando **to_s**, questi punta sempre a **2** e mai a **\'2\'**. A meno che non sia esplicitamente riassegnato (il che richiede il segno \'\'=\'\') **var1** punterà a **2** in tutto il programma.

Adesso proviamo alcune interessanti (e alcune un po\' strane) conversioni:

 puts \'15\'.to_f
 puts \'99.999\'.to_f
 puts \'99.999\'.to_i
 puts <raw>\'\'</raw>
 puts \'5 is my favorite number!\'.to_i
 puts \'Who asked you about 5 or whatever?\'.to_i
 puts \'Your momma did.\'.to_f
 puts <raw>\'\'</raw>
 puts \'stringy\'.to_s
 puts 3.to_i

 **15.0**
 **99.999**
 **99**
 
 **5**
 **0**
 **0.0**
 
 **stringy**
 **3**


\'\'...comtinua\'\'
]]></description>
        <pubDate>Wed, 25 Oct 2006 09:03:32 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/MixingItUp.2006-10-25-09-03-32</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[# %5BNumbers|I numeri%5D<br />
# %5BLetters|Le lettere%5D<br />
# Variables and Assignment <br />
# Mixing It Up <br />
# %5BMixingItUp|Mescoliamoli insieme%5D<br />
# More About Methods <br />
# Flow Control <br />
# Arrays and Iterators]]></description>
        <pubDate>Wed, 25 Oct 2006 08:45:12 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-25-08-45-12</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Rubini per bambini<br />
''Ovvero'' **Ruby come primo linguaggio di programmazione da imparare**<br />
---<br />
!!Impariamo a programmare]]></description>
        <pubDate>Wed, 25 Oct 2006 08:42:14 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-25-08-42-14</guid>
      </item>
          <item>
        <title> edited Numbers</title>
        <link>http://rubyacademy.pbworks.com/Numbers</link>
        <author>email@hidden ()</author>
        <description><![CDATA[|puts 3|<br />
**puts** scrive semplicemente sullo schermo quello che c'è viene dopo di lui.<br />
!!Interi e decimali<br />
In molti linguaggi di programmazione (e Ruby non fa eccezione)<br />
i numeri senza virgola sono chiamati ''interi'', e quelli con la virgola sono in genere chiamati ''decimali'' o ''numeri a virgola mobile''.<br />
Ecco alcuni interi:<br />
5<br />
-205<br />
9999999999999999999999999<br />
0<br />
E questi sono alcuni decimali:<br />
54.321<br />
0.001<br />
-205.3884<br />
0.0<br />
In pratica, molti programmi non usano i decimali, ma solo numeri interi. (Dopo tutto, nessuno vuole leggere 7.4 email, o navigare 1.8 pagine, oppure ascoltare 5.24 canzoni...) I decimali sono usati in ambiti accademici (esperimenti di fisica e simili) e per la grafica 3D. Anche molti programmi che hanno a che fare con i soldi usano interi, tengono semplicemente il conto del numero dei centesimi!<br />
!!Semplice Aritmetica<br />
''...continua'']]></description>
        <pubDate>Wed, 25 Oct 2006 08:40:48 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Numbers.2006-10-25-08-40-48</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Rubini per bambini<br />
**Ruby come primo linguaggio di programmazione da imparare**<br />
''Traduzione di **Learn to Program** ( http://pine.fm/LearnToProgram ) in italiano''<br />
---<br />
!!Impariamo a programmare<br />
''Traduzione in italiano di **Learn to Program** ( http://pine.fm/LearnToProgram )''<br />
# Getting Started<br />
# %5BNumbers|I numeri%5D<br />
# %5BLetters|Le lettere%5D]]></description>
        <pubDate>Wed, 25 Oct 2006 08:32:17 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-25-08-32-17</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Imparare a programmare<br />
!Rubini per bambini<br />
''Traduzione di **Learn to Program** ( http://pine.fm/LearnToProgram ) in italiano''<br />
# Getting Started]]></description>
        <pubDate>Mon, 23 Oct 2006 20:32:16 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-23-20-32-16</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Imparare a programmare<br />
''Traduzione di **Learn to Program** ( http://pine.fm/LearnToProgram) in italiano'' ) in italiano''<br />
# Getting Started<br />
# %5BNumbers|I numeri%5D<br />
# %5BLetters|Le lettere%5D]]></description>
        <pubDate>Mon, 23 Oct 2006 20:25:23 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-23-20-25-23</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Ruby Academy<br />
!Imparare a programmare<br />
''Traduzione di **Learn to Program** (http://pine.fm/LearnToProgram) in italiano''<br />
# Getting Started]]></description>
        <pubDate>Mon, 23 Oct 2006 20:24:34 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-23-20-24-34</guid>
      </item>
          <item>
        <title> edited Letters</title>
        <link>http://rubyacademy.pbworks.com/Letters</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Le lettere<br />
&lt;toc&gt;<br />
<br />
E così adesso sappiamo tutto sui %5Bnumeri|Numbers%5D, ma cosa sappiamo sulle lettere? e sulle parole? e sul testo?<br />
In un programma un gruppo di lettere è detto ''stringa''. (Potete pensare a delle lettere stampate tenute insieme su uno striscione.) Le stringhe saranno colorate di **rosso** per distinguerle facilmente all'interno del codice. Ecco alcune stringhe:]]></description>
        <pubDate>Mon, 23 Oct 2006 17:16:09 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Letters.2006-10-23-17-16-09</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Ruby Academy<br />
''Traduzione di **Learn to Program** (http://pine.fm/LearnToProgram) in italiano''<br />
* Getting Started<br />
* %5BNumbers|I numeri%5D<br />
* %5BLetters|Le lettere%5D<br />
* Variables and Assignment <br />
* Mixing It Up <br />
* More About Methods <br />
* Flow Control <br />
* Arrays and Iterators <br />
* Writing Your Own Methods <br />
* Classes <br />
* Blocks and Procs <br />
* Beyond This Tutorial<br />
# Getting Started<br />
# %5BNumbers|I numeri%5D<br />
# %5BLetters|Le lettere%5D<br />
# Variables and Assignment <br />
# Mixing It Up <br />
# More About Methods <br />
# Flow Control <br />
# Arrays and Iterators <br />
# Writing Your Own Methods <br />
# Classes <br />
# Blocks and Procs <br />
# Beyond This Tutorial]]></description>
        <pubDate>Mon, 23 Oct 2006 17:15:35 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-23-17-15-35</guid>
      </item>
          <item>
        <title> edited Letters</title>
        <link>http://rubyacademy.pbworks.com/Letters</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Le lettere<br />
&lt;toc&gt;<br />
E così adesso sappiamo tutto sui %5Bnumeri|Numbers%5D, ma cosa sappiamo sulle lettere? e sulle parole? e sul testo?<br />
In un programma un gruppo di lettere è detto ''stringa''. (Potete pensare a delle lettere stampate tenute insieme su uno striscione.) Le stringhe saranno colorate di **rosso** per distinguerle facilmente all'interno del codice. Ecco alcune stringhe: <br />
**blink blink blink blink**<br />
Pensandoci ha perfettamente senso. Dopotutto, ''&lt;raw&gt;7*3&lt;/raw&gt;'' significa **7+7+7**, così ''&lt;raw&gt;'moo'*3&lt;/raw&gt;'' significa **'moo'+'moo'+'moo'**.<br />
!!12 vs '12' <br />
Prima di andare avanti dovremmo essere sicuri di aver capito la differenza tra numeri e cifre. 12 è un numero, ma '12' è una stringa di due cifre. <br />
Giochiamoci sopra per qualche momento: <br />
puts  12  +  12<br />
puts '12' + '12'<br />
puts '12  +  12'<br />
**24**<br />
**1212**<br />
**12  +  12**<br />
Qualcosa come questo: <br />
puts  2  *  5<br />
puts '2' *  5<br />
puts '2  *  5'<br />
**10**<br />
**22222**<br />
**&lt;raw&gt;2  *  5&lt;/raw&gt;**<br />
Questi esempi sono mplto semplici. Tuttavia, se non si sta molto attenti a mischiare stringhe e numeri si possono avere dei...<br />
!!Problemi<br />
A questo punto potreste aver provato alcune cose che non funzionano. Se così non è stato eccone alcune:<br />
puts '12' + 12<br />
puts '2' * '5'<br />
**&lt;raw&gt;#&lt;TypeError: can't convert Fixnum into String&gt;&lt;/raw&gt;**<br />
Hmmm... un messaggio d'errore. Il problema è che non si può aggiungere un numero ad una stringa. Non ha più senso che fare qualcosa del genere:<br />
puts 'Betty' + 12<br />
puts 'Fred' * 'John'<br />
Qualcos'altro a cui stare attenti: si può scrivere |'maiale'*5| in un programma, che significa 5 ripetizioni della stringa 'maiale'. Tuttavia non si può scrivere |5*'maiale'|, che significherebbe 'maiale' ripetizioni del numero 5, e questo è molto sciocco. <br />
Per concludere, come si fa ad avere un programma che stampa **You're swell!?** Possiamo provare in questo modo:<br />
puts 'You're swell!'<br />
ebbene, così non funziona; non voglio neanche provare ad eseguirlo.<br />
''...continua'']]></description>
        <pubDate>Mon, 23 Oct 2006 17:13:43 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Letters.2006-10-23-17-13-43</guid>
      </item>
          <item>
        <title> edited Numbers</title>
        <link>http://rubyacademy.pbworks.com/Numbers</link>
        <author>email@hidden ()</author>
        <description><![CDATA[Ora che sappiamo tutto sulla %5BSetup | configurazione%5D siamo pronti per  scrivere un programma!<br />
Apriamo il nostro editor preferito e scriviamo la seguente riga:<br />
|puts 1+2|<br />
Salviamo il nostro programma (si, è un programma!) come ''<br />
|calc.rb''<br />
| (**.rb** è la tipica estensione dei programmi scritti in Ruby). Adesso eseguiamo il nostro programma scrivendo ''<br />
|ruby calc.rb''<br />
| in un terminale. Dovrebbe apparire **3** sul nostro schermo. Visto, programmare non è poi così difficile, now is it?<br />
!!Introduzione a ''puts'']]></description>
        <pubDate>Mon, 23 Oct 2006 17:03:53 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/Numbers.2006-10-23-17-03-53</guid>
      </item>
          <item>
        <title> added Letters</title>
        <link>http://rubyacademy.pbworks.com/Letters</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Le lettere

E così adesso sappiamo tutto sui %5Bnumeri|Numbers%5D, ma cosa sappiamo sulle lettere? e sulle parole? e sul testo?

In un programma un gruppo di lettere è detto \'\'stringa\'\'. (Potete pensare a delle lettere stampate tenute insieme su uno striscione.) Le stringhe saranno colorate di **rosso** per distinguerle facilmente all\'interno del codice. Ecco alcune stringhe: 
 \'**Ciao.**\'
 \'**Ruby rocks.**\'
 \'**5 è il mio numero preferito... quale è il tuo?**\'
 \'**Snoopy dice #%^?&@! when he stubs his toe.**\'
 \'<raw>            </raw>\'
 \'<raw></raw>\'

Si può notare che le stringhe possono contenere punteggiatura, cifre, simboli... oltre alle lettere. L\'ultima stringa non contiene niente; perciò la chiameremo \'\'stringa vuota\'\'.

Prima abbiamo usato **puts** per stampare dei numeri; adesso   
proveremo con alcune stringhe:

 puts \'Ciao Mondo!\'
 puts \' \'
 puts \'Addio.\'

 **Ciao Mondo!**
 
 **Addio.**

Funziona bene. Adesso prova con alcune stringhe a tuo piacere.

!!Aritmetica con le stringhe
Così come si può fare aritmetica con i numeri, è possibile fare aritmetica con le stringhe! Well, sort of... possiamo sommare stringhe, anyway. Proviamo a sommare due stringhe e vediamo **puts** cosa tira fuori.

 puts \'Mi piace\' + \'la torta di mele.\'

 **Mi piacela torta di mele.**

Oops! Ho dimenticato di mettere uno spazio tra **\'Mi piace\'** e **\'la torta di mele\'**. Gli spazi in genere non contano, ma hanno importanza all\'interno delle stringhe. (E` vero quello che si dice: i computer non fanno quello che \'\'vorremmo\'\' che loro facessero, ma fanno solo quello che gli si \'\'dice\'\' di fare.) Riproviamo ancora:

 puts \'Mi piace \' + \'la torta di mele.\'
 puts \'Mi piace\' + \' la torta di mele.\'

 **Mi piace la torta di mele.**
 **Mi piace la torta di mele.**

(Come si può vedere non importa in quale stringa è stato aggiunto lo spazio.)

Quindi possiamo aggiungere stringhe, e possiamo anche moltiplicarle! (Per un numero, ovviamente.) Vediamo:

 puts \'blink \' * 4

 **batting her eyes**

(Sto scherzando... in realtà viene fuori questo:)

 **blink blink blink blink**

Pensandoci ha perfettamente senso. Dopotutto, \'\'<raw>7*3</raw>\'\' significa **7+7+7**, così \'\'<raw>\'moo\'*3</raw>\'\' significa **\'moo\'+\'moo\'+\'moo\'**.


\'\'...continua\'\'
]]></description>
        <pubDate>Mon, 23 Oct 2006 15:08:54 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/Letters.2006-10-23-15-08-54</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[''Traduzione di **Learn to Program** (http://pine.fm/LearnToProgram) in italiano''<br />
* Getting Started<br />
* %5BNumbers|I numeri%5D<br />
* Letters <br />
* %5BLetters|Le lettere%5D<br />
* Variables and Assignment <br />
* Mixing It Up <br />
* More About Methods]]></description>
        <pubDate>Mon, 23 Oct 2006 14:17:55 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-23-14-17-55</guid>
      </item>
          <item>
        <title> edited SideBar</title>
        <link>http://rubyacademy.pbworks.com/SideBar</link>
        <author>email@hidden ()</author>
        <description><![CDATA[* %5Bhttp://rubyacademy.pbwiki.com/rss2.php?a=01685fb903d6a2df4102526c080dc3f581e37d03|RSS%5D<br />
* &lt;random&gt;<br />
%5Bhttp://img236.imageshack.us/img236/562/rubinohd5<br />
rubyacademy.pbwiki.com/f/rubino.jpg%5D]]></description>
        <pubDate>Mon, 23 Oct 2006 14:03:38 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/SideBar.2006-10-23-14-03-38</guid>
      </item>
          <item>
        <title> uploaded </title>
        <link>http://rubyacademy.pbworks.com/</link>
        <author>email@hidden ()</author>
        <description><![CDATA[<a href="http://rubyacademy.pbworks.com/f/rubino.jpg"><img src="http://rubyacademy.pbworks.com/f/rubino.jpg" alt="rubino.jpg" /></a>]]></description>
        <pubDate>Mon, 23 Oct 2006 14:03:03 +0000</pubDate>
        <category>upl</category>
        <guid>http://rubyacademy.pbworks.com/f/.2006-10-23-14-03-03</guid>
      </item>
          <item>
        <title> added Contatti</title>
        <link>http://rubyacademy.pbworks.com/Contatti</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!Collaborazioni

Chi è interessato a collaborare alla traduzione di **Learn To Program** può contattarmi all\'indirizzo 1115201006@HotPOP.com
]]></description>
        <pubDate>Mon, 23 Oct 2006 13:59:55 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/Contatti.2006-10-23-13-59-55</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[''Traduzione di **Learn to Program** (http://pine.fm/LearnToProgram) in italiano''<br />
* Getting Started<br />
* %5BNumbers|NI numeri%5D<br />
* Letters <br />
* Variables and Assignment <br />
* Mixing It Up]]></description>
        <pubDate>Mon, 23 Oct 2006 13:56:44 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-23-13-56-44</guid>
      </item>
          <item>
        <title> added Numbers</title>
        <link>http://rubyacademy.pbworks.com/Numbers</link>
        <author>email@hidden ()</author>
        <description><![CDATA[!I numeri

Ora che sappiamo tutto sulla %5BSetup | configurazione%5D siamo pronti per  scrivere un programma!
Apriamo il nostro editor preferito e scriviamo la seguente riga:
|puts 1+2|
Salviamo il nostro programma (si, è un programma!) come \'\'calc.rb\'\' (**.rb** è la tipica estensione dei programmi scritti in Ruby). Adesso eseguiamo il nostro programma scrivendo \'\'ruby calc.rb\'\' in un terminale. Dovrebbe apparire **3** sul nostro schermo. Visto, programmare non è poi così difficile, now is it?

!!Introduzione a \'\'puts\'\'

Allora cosa c\'è in quel programma? Sono sicuro che potete indovinare quanta fa **2 + 1**; nel nostro programma avremmo potuto scrivere: 
|puts 3|
**puts** scrive semplicemente sullo schermo quello che c\'è viene dopo di lui.

\'\'...continua\'\'
]]></description>
        <pubDate>Mon, 23 Oct 2006 13:56:10 +0000</pubDate>
        <category>add</category>
        <guid>http://rubyacademy.pbworks.com/Numbers.2006-10-23-13-56-10</guid>
      </item>
          <item>
        <title> edited SideBar</title>
        <link>http://rubyacademy.pbworks.com/SideBar</link>
        <author>email@hidden ()</author>
        <description><![CDATA[* %5Bhttp://rubyacademy.pbwiki.com/rss2.php?a=01685fb903d6a2df4102526c080dc3f581e37d03|RSS%5D<br />
* &lt;random&gt;<br />
%5Bhttp://www.manipura.it/Gemme/foto/rubino<br />
img236.imageshack.us/img236/562/rubinohd5.jpg%5D]]></description>
        <pubDate>Mon, 23 Oct 2006 13:39:50 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/SideBar.2006-10-23-13-39-50</guid>
      </item>
          <item>
        <title> edited SideBar</title>
        <link>http://rubyacademy.pbworks.com/SideBar</link>
        <author>email@hidden ()</author>
        <description><![CDATA[* %5Bhttp://rubyacademy.pbwiki.com|Home page%5D<br />
* %5BContatti%5D<br />
* &lt;random&gt;<br />
* %5Bhttp://rubyacademy.pbwiki.com/rss2.php?a=01685fb903d6a2df4102526c080dc3f581e37d03|RSS%5D<br />
* &lt;random&gt;<br />
%5Bhttp://www.manipura.it/Gemme/foto/rubino.jpg%5D]]></description>
        <pubDate>Mon, 23 Oct 2006 13:37:41 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/SideBar.2006-10-23-13-37-41</guid>
      </item>
          <item>
        <title> edited SideBar</title>
        <link>http://rubyacademy.pbworks.com/SideBar</link>
        <author>email@hidden ()</author>
        <description><![CDATA[* %5Bhttp://rubyacademy.pbwiki.com|Home page%5D<br />
* %5BContatti%5D<br />
* %5Bhttp://rubyacademy.pbwiki.com/rss2.php?a=01685fb903d6a2df4102526c080dc3f581e37d03|RSS%5D<br />
* &lt;random&gt;<br />
* %5Bhttp://rubyacademy.pbwiki.com/rss2.php?a=01685fb903d6a2df4102526c080dc3f581e37d03|RSS%5D]]></description>
        <pubDate>Mon, 23 Oct 2006 13:31:11 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/SideBar.2006-10-23-13-31-11</guid>
      </item>
          <item>
        <title> edited SideBar</title>
        <link>http://rubyacademy.pbworks.com/SideBar</link>
        <author>email@hidden ()</author>
        <description><![CDATA[**This is your Sidebar**, which you can edit like any other wiki page.<br />
This Sidebar appears everywhere on your wiki. Add to it whatever you like -- a "Home" link, a navigation section, a link to your favorite web sites, or anything else.<br />
Quick tip: If you type &lt;raw&gt;&lt;toc&gt;&lt;/raw&gt; on this page, you'll get an automatically generated table of contents. Play around with it!<br />
* %5Bhttp://rubyacademy.pbwiki.com|Home page%5D<br />
* %5BContatti%5D<br />
* %5Bhttp://rubyacademy.pbwiki.com/rss2.php?a=01685fb903d6a2df4102526c080dc3f581e37d03|RSS%5D<br />
* &lt;random&gt;]]></description>
        <pubDate>Mon, 23 Oct 2006 13:29:02 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/SideBar.2006-10-23-13-29-02</guid>
      </item>
          <item>
        <title> edited FrontPage</title>
        <link>http://rubyacademy.pbworks.com/FrontPage</link>
        <author>email@hidden ()</author>
        <description><![CDATA[! Welcome to your PBwiki!<br />
* What can you do with a wiki? %5Bhttp://tour.pbwiki.com/|Take a tour%5D and %5Bhttp://rubyacademy.pbwiki.com/newpage.php| use pre-made templates%5D<br />
* How do you create a new page? %5B2 easy ways%5D<br />
* Learn how to use **bold**, ''italics'', tables, and more: %5BWikiStyle|The wiki style page%5D<br />
* Share this wiki with others. %5Bhttp://rubyacademy.pbwiki.com/share.php|It's easy%5D<br />
!Ruby Academy<br />
''Traduzione di **Learn to Program** (http://pine.fm/LearnToProgram) in italiano''<br />
* Getting Started<br />
* %5BNumbers|Numeri%5D<br />
* Letters <br />
* Variables and Assignment <br />
* Mixing It Up <br />
* More About Methods <br />
* Flow Control <br />
* Arrays and Iterators <br />
* Writing Your Own Methods <br />
* Classes <br />
* Blocks and Procs <br />
* Beyond This Tutorial]]></description>
        <pubDate>Mon, 23 Oct 2006 13:24:52 +0000</pubDate>
        <category>mod</category>
        <guid>http://rubyacademy.pbworks.com/FrontPage.2006-10-23-13-24-52</guid>
      </item>
      </channel>
</rss>