Ruby, le variabili

r1Si continua con l’intro, siamo ancora all’inizio e abbiamo tante cose da scoprire; per esempio oggi facciamo la conoscenza con il concetto di variabile.
Al solito usiamo la versione interattiva irb. Anzi, come indicato nei post precedenti irb --simple-prompt, che abbiamo deciso di chiamare irq.

v0

La prima operazione la conosciamo, sommare 5 + 3. Il passo successivo è quello di definire due variabili a e b. In Ruby una variabile viene creata automaticamente appena viene usata; nel nostro caso alla variabile a assegniamo il valore intero 5 e alla b 3. Questo significa: Ruby ricorda che abbiamo due dati che indichiamo come a e b. Anzi ne abbiamo 3, perché adesso in c devi registrare la somma di a e b.

Nella versione interattiva per visualizzare il valore di una variabile basta scriverne il nome, come in figura per c.

v1

Nella versione script (quella normale, prossimamente) dovremo usare un’istruzione apposita. Ne esistono due print e puts. puts aggiunge un “a-capo” alla fine, cosa che print non fa. Il nil che compare in entrambi i casi è solo il valore ritornato dalla procedura (sia print che puts sono procedure, proc le chiama Ruby). Ne parleremo prossimamente.

v2

Adesso andiamo ai Mercati Generali a comprare un sacco di patate. Grosso da non dirsi e pesante. Sì 120 kg. Un sacco vuoto, simile a quello con le patate pesa 20 kg (sì pesante anche il sacco ma deve contenere tutte quelle patate). Le operazioni in figura ci consentono di sapere qual è il peso delle patate.
Notare una cosa da VPR (Veri Programmatori Ruby): avremmo potuto usare come variabili a, b e c oppure, meglio, l, t e n. Ma i nomi pesoLordo, tara e pesoNetto sono mnemonici e quando il codice diventa lungo questo aiuta –non immaginate quanto!
Il nome di una variabile deve rispettare qualche regola:

  • deve iniziare con una lettera o con _ e la lettera dev’essere minuscola;
  • non deve contenere spazi;
  • per convenzione se contiene più parole attaccate si usa la convenzione del cammello: le successive iniziano con la maiuscola.

Come esempi corretti quelli della figura; sarebbero OK anche sacco1 e saccoN1. Invece i seguenti sono errori:

  • 1sacco (inizia con un numero)
  • peso sacco (sontine uno spazio)
  • sacco.1 (carattere illegale)
  • sacco#1 (idem)
  • peso_netto (questo non sarebbe un errore ma non è da VPR)
  • Tara (idem, inizia con una lettera maiuscola e per un VPR sembra –lo vediamo subito)

OK, allora vediamo qual è il vantaggio di usare le variabili:

v3

Torniamo al mercato; il sacco da 120 kg è troppo pesante, vediamo di pesarne altri. Il secondo tentativo è ancora peggio (notare che dobbiamo dire all’interprete di rifare il calcolo del pesoNetto che altrimenti questo continua a contenere il dato vecchio). Finalmente troviamo usa sacco decente, OK! questo riusciamo a portarlo 😉

Però… A pensarci bene c’è una cosa che può essere migliorata: di sacchi vuoti per determinare la tara ne abbiamo pesato uno solo (sono tutti uguali) e questo valore resta costante per tutta l’elaborazione. Costante, ecco, non è una variabile ma (appunto) una costante.

v4

Per convenzione (anzi un po’ di più) i VPR usano per le costanti l’iniziale maiuscola.
Trascurando che quest’ultimo sacco ci piace di più del precedente.

Un’ultima cosa:

v5

Ovvio che Tara e tara sono diverse e possono convivere, con valori indipendenti (ottimo metodo per fare casino). Se poi tento di cambiare il valore a una costante Ruby mi avvisa che sto facendo una cosa dubbia; me la lascia fare ma avverte.

OK? 😮 🙂 😀

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • Flavio  Il 11 febbraio 2014 alle 14:56

    Una domanda: la tara è una costante ( mettiamo che la scrivo con T), il peso lordo no e il peso netto è la differenza tra pesoLordo – T
    Perché se cambio il valore del pesoLordo per calcolare di nuovo il pesoNetto devo riscrivere la formula?

    • juhan  Il 12 febbraio 2014 alle 10:26

      Perché non è una formula, non nel senso usato in matematica.
      È l’assegnazione alla variabile pesoNetto (creata se non esiste o sovrascritta se già esistente) del risultato dell’espressione a destra del segno =. Potrebbe anche succedere che il tipo di dato immagazzinato sia completamente differente, p.es. una stringa.
      Un comportamento come quello che vorresti si può avere con le funzioni; se ricordo bene ne ho parlato nei post successivi 😉

  • CRISTOFARO VILLAFRANCA  Il 2 febbraio 2015 alle 23:15

    si ma come si sommano due cifre alle quali due variabili puntano?

    • juhan  Il 5 febbraio 2015 alle 18:24

      Intanto scusa il ritardo per la risposta. Ma è dovuto anche al fatto che non ho capito a cosa ti riferisci. Puoi fare un esempio?
      (e sarò più veloce, promesso).

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: