Forum: Italian Ruby user group Aiuto facile operazione

Posted by chaoz angel (chaoz4ngel)
on 2012-11-07 21:53
(Received via mailing list)
CIao a tutti, voglio imparare ad usare Ruby e sto seguendo questa guida
http://corsorubyonrails.com/imparare-a-programmare...
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 /:
Posted by Sante Rotondi (Guest)
on 2012-11-07 21:56
(Received via mailing list)
puts 'Dai\', e\' molto meglio' +S.to_s+ 'perche\' e piu\' grande'

questo risolve il problema :)

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 Nargiso <chaoz4ngel@gmail.com>
Posted by chaoz angel (chaoz4ngel)
on 2012-11-07 22:00
Grazie mille dell'aiuto e del consiglio, lo terrò a mente ;)
Posted by Silvano Stralla (sistrall)
on 2012-11-07 22:50
(Received via mailing list)
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/Synt...

Ciao,
Silvano


2012/11/7 Lorenzo Nargiso <chaoz4ngel@gmail.com>:
>
> Ml@lists.ruby-it.org
> 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 Stralla . . .
❡ email: silvano.stralla@sistrall.it
❡ site: http://www.sistrall.it
★ kitchen: http://keepcooking.it/
Posted by Andrea Pavoni (apeacox)
on 2012-11-08 00:03
(Received via mailing list)
Il giorno mercoled 7 novembre 2012, Sante Rotondi 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 :-)
Posted by Paolo Montrasio (pmontrasio)
on 2012-11-08 09:01
Andrea Pavoni wrote in post #1083472:
> Il giorno mercoled 7 novembre 2012, Sante Rotondi 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 :-)

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
và

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

http://yehudakatz.com/2010/05/05/ruby-1-9-encoding...

http://blog.grayproductions.net/articles/ruby_19s_string

Paolo
Posted by Sante Rotondi (Guest)
on 2012-11-08 10:29
(Received via mailing list)
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 :)

Magari i vostri consigli salveranno qualche giovane anima!
Posted by Riccardo Lucatuorto (riccardo_l)
on 2012-11-08 11:56
(Received via mailing list)
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 Rotondi <saten.r@gmail.com>

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



--
Riccardo
--
L'esperienza  quello che ottieni quando, non ottieni quello che 
desideri.
Posted by Luca P. (luca_p)
on 2012-11-08 12:01
(Received via mailing list)
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 Pradovera
luca.pradovera@gmail.com
+39 346 4296868



Il giorno 08/nov/2012, alle ore 10:28, Sante Rotondi <saten.r@gmail.com> 
ha scritto:
Posted by Paolo Montrasio (pmontrasio)
on 2012-11-08 15:18
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 Pradovera
> luca.pradovera@gmail.com
> +39 346 4296868
>
>
>
> Il giorno 08/nov/2012, alle ore 10:28, Sante Rotondi <saten.r@gmail.com>
> ha scritto:
Posted by Michele Franzin (Guest)
on 2012-11-08 16:14
(Received via mailing list)
Il 08 novembre 2012 12:01, Luca Pradovera <luca.pradovera@gmail.com> 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.
Posted by chaoz angel (chaoz4ngel)
on 2012-11-08 19:09
# 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 /:
Posted by Sante Rotondi (Guest)
on 2012-11-08 19:13
(Received via mailing list)
2012/11/8 chaoz angel <chaoz4ngel@gmail.com>

> 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
Posted by Rocco Galluzzo (byterussian)
on 2012-11-08 19:54
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.
Posted by Luca P. (luca_p)
on 2012-11-08 20:08
(Received via mailing list)
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 Galluzzo 
<mail@roccogalluzzo.com> ha scritto:
Posted by Rocco Galluzzo (byterussian)
on 2012-11-08 20:21
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 Galluzzo
> <mail@roccogalluzzo.com> ha scritto:
Posted by chaoz angel (chaoz4ngel)
on 2012-11-08 21:18
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 Galluzzo
> <mail@roccogalluzzo.com> 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 /:
Posted by Paolo Montrasio (pmontrasio)
on 2012-11-09 08:29
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 Galluzzo
>> <mail@roccogalluzzo.com> 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 /:
Posted by Andrea Pavoni (apeacox)
on 2012-11-09 10:31
(Received via mailing list)
Il giorno 08/nov/2012, alle ore 20:21, Rocco Galluzzo 
<mail@roccogalluzzo.com> ha scritto:

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

> 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
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.