Aiuto facile operazione

CIao a tutti, voglio imparare ad usare Ruby e sto seguendo questa guida
http://corsorubyonrails.com/imparare-a-programmare/mischiamo-tutto-assieme
A fine “capitolo” ci sono due esercizi, il secondo dice
" Scrivi un programma che chieda all’utente quale sia il suo numero
preferito. Poi fai s che il programma sommi uno al numero inserito e
quindi suggerisca il risultato come un numero pi grande e quindi
migliore
da
preferire. (Abbi del tatto, per)."

Io ho scritto questo

puts ‘Qual' e' il tuo numero preferito?’
numero= gets.chomp
S= 1+numero.to_i
puts ‘Dai', e' molto meglio’ +S+ ‘perche' e piu' grande’

Perch non va? /: Non riesco a far riconoscere la stringa come numero /:

puts ‘Dai', e' molto meglio’ +S.to_s+ ‘perche' e piu' grande’

questo risolve il problema :slight_smile:

Ti consiglio, visto che sei alle prime armi, di non usare le lettere
maiuscole come iniziali per le variabili ( convenzione che le variabili
inizino con lettere minuscole in ruby)

2012/11/7 Lorenzo N. [email protected]

Grazie mille dell’aiuto e del consiglio, lo terrò a mente :wink:

Il giorno mercoled 7 novembre 2012, Sante R. ha scritto:

Ti consiglio, visto che sei alle prime armi, di non usare le lettere
maiuscole come iniziali per le variabili ( convenzione che le variabili
inizino con lettere minuscole in

Non solo una convenzione, le maiuscole identificano una costante :slight_smile:

Ricordo che quando cominciai a scrivere in Ruby, una delle cose che mi
colpi fu la sua flessibilità nello scrivere stringhe (perlomeno
rispetto ai linguaggi da cui arrivavo io).

L’istruzione

puts ‘Dai', e' molto meglio’ +S + ‘perche' e piu' grande’

si può scrivere anche come

puts “Dai’, e’ molto meglio #{S} perche’ e piu’ grande”

In questo caso è Ruby che si occupa di chiamare S.to_s in fase di
interpolazione.

Un link per approfondire:
http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Strings

Ciao,
Silvano

2012/11/7 Lorenzo N. [email protected]:

[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Considera l’ambiente prima di stampare questa email. Be a total user
rather than a complete waster.

. . . Silvano S. . . .
❡ email: [email protected]
❡ site: http://www.sistrall.it
★ kitchen: http://keepcooking.it/

Andrea P. wrote in post #1083472:

Il giorno mercoled 7 novembre 2012, Sante R. ha scritto:

Ti consiglio, visto che sei alle prime armi, di non usare le lettere
maiuscole come iniziali per le variabili ( convenzione che le variabili
inizino con lettere minuscole in

Non solo una convenzione, le maiuscole identificano una costante :slight_smile:

Verissimo:

$ irb
1.9.3-p286 :001 > S = 2
=> 2
1.9.3-p286 :002 > S = 3
(irb):2: warning: already initialized constant S
=> 3

Altro consiglio: usa pure le lettere accentate, “perché è più facile da
leggere”, ma fai attenzione ad iniziare tutti i file con una riga di
commento che ne indichi l’encoding come

encoding: UTF-8

altrimenti ruby si arrabbia:

$ cat prova.rb
puts “non và”
$ ruby prova.rb
prova.rb:1: invalid multibyte char (US-ASCII)
prova.rb:1: invalid multibyte char (US-ASCII)
$ cat prova2.rb

encoding: UTF-8

puts “và”
$ ruby prova2.rb

Per il web ti consiglio di usare sempre e solo l’encoding UTF-8.
Fai attenzione che l’editor che usi salvi i file proprio nell’encoding
che indichi nel commento. Per l’UTF-8 assicurati che il file sia salvato
senza il BOM (es: notepad++ su Windows ha un’opzione apposita) perché
sarà più compatibile con più tool ed sistemi.

Se ti vuoi addentrare nei misteri degli encoding, a me piacciono questo
due entry point

Paolo

Gi che siamo in tema newbie, cosa dovreste assolutamente far vedere di
ruby a qualcuno che lo vede per la prima volta?

Da domani inizia un corso in quattro lezioni, che sfortunatamente per
chi
lo seguir sar tenuto da me :slight_smile:

Magari i vostri consigli salveranno qualche giovane anima!

Ciao, sto tenendo ad un paio di amici un corso introduttivo alla
programmazione, con Ruby.

Se la platea ha gi chiaro cosa sia l’OOP puoi passare direttamente a far
vedere le caratteristiche pi interessanti di Ruby.

  • Type System
  • Module Mixing
  • Meta programming

Per quattro lezioni mi pare gi abbastanza

2012/11/8 Sante R. [email protected]

http://lists.ruby-it.org/mailman/listinfo/ml


Riccardo

L’esperienza quello che ottieni quando, non ottieni quello che
desideri.

Blocchi/lambda/Proc sono il primo scoglio di chi si approccia a Ruby
partendo da un linguaggio che non li ha.
Idem per i simboli.
A me piace sempre concentrarmi un pochino sull’aspetto “morfologico”:
splat param, literals, e vari idiomi comuni tipo ||=.
Questo per dare agli allievi gli strumenti per leggersi il codice su
Github senza fare “boh” ogni 2 secondi.
Fino adesso ha sempre funzionato!


Luca P.
[email protected]
+39 346 4296868

Il giorno 08/nov/2012, alle ore 10:28, Sante R. [email protected]
ha scritto:

Di solito faccio vedere i simboli tra le primissime cose, perché si
usano praticamente ovunque. A chi ha familiarità con C o Java li spiego
come delle costanti che si danno da sole un valore dentro
all’interprete, perché in fondo quel valore non ci interesserà mai e C e
Java ci fanno sprecar tempo a inventarceli ed assicurarci che non ci
siano collisioni.

Buona l’idea di Luca della morfologia. Poi mi concentrerei sulle basi:
classi, moduli, ereditarietà, mixin. La metaprogrammazione è molto bella
ma attenderei almeno il secondo giorno, altrimenti vanno in information
overload.

Paolo

Luca P. wrote in post #1083540:

Blocchi/lambda/Proc sono il primo scoglio di chi si approccia a Ruby
partendo da un linguaggio che non li ha.
Idem per i simboli.
A me piace sempre concentrarmi un pochino sull’aspetto “morfologico”:
splat param, literals, e vari idiomi comuni tipo ||=.
Questo per dare agli allievi gli strumenti per leggersi il codice su
Github senza fare “boh” ogni 2 secondi.
Fino adesso ha sempre funzionato!


Luca P.
[email protected]
+39 346 4296868

Il giorno 08/nov/2012, alle ore 10:28, Sante R. [email protected]
ha scritto:

Il 08 novembre 2012 12:01, Luca P. [email protected] ha
scritto:

Blocchi/lambda/Proc sono il primo scoglio di chi si approccia a Ruby partendo da
un linguaggio che non li ha.
Idem per i simboli.
A me piace sempre concentrarmi un pochino sull’aspetto “morfologico”: splat
param, literals, e vari idiomi comuni tipo ||=.
Questo per dare agli allievi gli strumenti per leggersi il codice su Github
senza fare “boh” ogni 2 secondi.
Fino adesso ha sempre funzionato!

100% agree; anche noi usiamo lo stesso approccio.
le reazioni in genere sono un mix tra wow-effect e non-ne-uscir-mai-vivo
ma
dopo qualche ora di tentativi sono in grado di leggere codice di altri,
che IMO
il primo passo per andare oltre.

m.

encoding: utf-8

puts ‘Qual è il tuo nome completo?’
name = gets.chomp
puts 'Lo sapevi che ci sono ’ + name.length+ ’ caratteri nel tuo nome, ’

  • name + ‘?’

Mi sento davvero troppo impedito, devo far contare il numero di
caratteri del mio nome, ma mi restituisce l’errore /:

2012/11/8 chaoz angel [email protected]

puts ‘Qual il tuo nome completo?’
name = gets.chomp
puts 'Lo sapevi che ci sono ’ + name.length+ ’ caratteri nel tuo nome, ’

  • name + ‘?’

i consigli sul .to_s o sull’usare i doppi apici e l’interpolazione delle
stringhe con #{} possono aiutarti

chaoz angel wrote in post #1083610:

encoding: utf-8

puts ‘Qual è il tuo nome completo?’
name = gets.chomp
puts 'Lo sapevi che ci sono ’ + name.length+ ’ caratteri nel tuo nome, ’

  • name + ‘?’

Mi sento davvero troppo impedito, devo far contare il numero di
caratteri del mio nome, ma mi restituisce l’errore /:

il problema credo sia nel fatto che hai terminato la riga senza / per
dire a Ruby che puts deve elaborare anche + name + ‘?’

Prova così:

puts 'Lo sapevi che ci sono ’ + name.length+ ’ caratteri nel tuo nome,
'/

  • name + ‘?’
    (In Ruby 1.9 da quello che so viene evalutata la riga seguente come
    contiunazione della precedente solo se la riga comincia con un punto,
    per il method chaining )

Altra cosa, io toglierei “#enconding: uft8”, da più problemi che
utilità…IMHO, è solo una chicca da sapere, ma non usare mai lettere
accentate et similari nel codice, non ce n’è bisogno.

Riguardo agli argomenti da spiegare in un corso di quattro giorni, io
prima analizzerei il background dei partecipanti e mi focalizzerei sulle
differenze rispetto ai linguaggi che già conoscono.

Usa SEMPRE l’encoding, fidati.
Noi abbiamo un rake task apposta per non dimenticarlo!
Inoltre secondo me con l’interpolazione di stringa ne guadagna la
lettura del codice, per sono gusti.

Esempio:
puts “Lo sapevi che ci sono #{name.length} caratteri nel tuo nome,
#{name}?”

Inviato da iPhone

Il giorno 08/nov/2012, alle ore 19:54, Rocco G.
[email protected] ha scritto:

Ops… sorry…scusate, io per encoding parlo quello dei nomi delle
variabili, per il file sorgente assolutamente si, ci mancherebbe.
Io l’ho settato in vim come encoding standard(ma tutti gli editor e ide
che ho visto pemettono di fare la stessa cosa, di solito si setta UTF-8
senza BOM)

In ruby non aggiungo niente poiché in tutte le macchine che l’ho
installato
puts ENCODING

mi da UTF-8 (credo sia di default, almeno nella 1.9.2 e 3)

Luca P. wrote in post #1083616:

Usa SEMPRE l’encoding, fidati.
Noi abbiamo un rake task apposta per non dimenticarlo!
Inoltre secondo me con l’interpolazione di stringa ne guadagna la
lettura del codice, per sono gusti.

Esempio:
puts “Lo sapevi che ci sono #{name.length} caratteri nel tuo nome,
#{name}?”

Inviato da iPhone

Il giorno 08/nov/2012, alle ore 19:54, Rocco G.
[email protected] ha scritto:

Luca P. wrote in post #1083616:

Usa SEMPRE l’encoding, fidati.
Noi abbiamo un rake task apposta per non dimenticarlo!
Inoltre secondo me con l’interpolazione di stringa ne guadagna la
lettura del codice, per sono gusti.

Esempio:
puts “Lo sapevi che ci sono #{name.length} caratteri nel tuo nome,
#{name}?”

Inviato da iPhone

Il giorno 08/nov/2012, alle ore 19:54, Rocco G.
[email protected] ha scritto:

Grazie mille (grazie a tutti per le continue risposte, consigli e aiuti
:D), con questo ho risolto.
Ma se l’avessi dovuto fare con “to_s” come avrei dovuto scrivere? Non mi
riesce proprio /:

name.length.to_s

Ruby non ha le dichiarazioni dei tipi ma è un linguaggio tipizzato, nel
senso che le conversioni devono essere esplicite.

Ricorda to_s, to_i, to_f, to_a, to_sym

Paolo

chaoz angel wrote in post #1083625:

Luca P. wrote in post #1083616:

Usa SEMPRE l’encoding, fidati.
Noi abbiamo un rake task apposta per non dimenticarlo!
Inoltre secondo me con l’interpolazione di stringa ne guadagna la
lettura del codice, per sono gusti.

Esempio:
puts “Lo sapevi che ci sono #{name.length} caratteri nel tuo nome,
#{name}?”

Inviato da iPhone

Il giorno 08/nov/2012, alle ore 19:54, Rocco G.
[email protected] ha scritto:

Grazie mille (grazie a tutti per le continue risposte, consigli e aiuti
:D), con questo ho risolto.
Ma se l’avessi dovuto fare con “to_s” come avrei dovuto scrivere? Non mi
riesce proprio /:

Il giorno 08/nov/2012, alle ore 20:21, Rocco G.
[email protected] ha scritto:

mi da UTF-8 (credo sia di default, almeno nella 1.9.2 e 3)
+10 :slight_smile:

Luca P. wrote in post #1083616:

Inoltre secondo me con l’interpolazione di stringa ne guadagna la
lettura del codice, per sono gusti.

l’interpolazione anche pi performante perch crea una sola stringa a
runtime. quando usi la concatenazione, invece, stai creando N stringhe
pi quella finale con il risultato.

A.


http://andreapavoni.com