Nos movemos a https://sites.google.com/site/pro012iessanandres.
Tabla de Contenidos
Capítulo 1: Números página 1
Capítulo 2: Letras página 72
Capítulo 3: Variables página 118
[]Entonces primero tenemos un array vacio, luego un array conteniendo un número simple, luego un array que contiene dos textos. Siguiendo, tenemos una simple asignación, luego un array conteniendo tres objetos, un flotante, un texto y otro array, el array [true, false].
[5]
['Hola', 'Adiós']
sabor = 'vainilla' # Esto no es una matriz, por supuesto...
[89.9, sabor, [true, false]] # ...pero esto sí lo es.
names = ['Ada', 'Belle', 'Chris']Resultado:
puts names
puts names[0]
puts names[1]
puts names[2]
puts names[3] # Este esta fuera del rango.
AdaEntonces, nosotros vemos que puts names imprime cada nombre en el array names. Luego usamos puts names[0] para imprimir el "primer" objeto que contiene el array y puts names[1] para imprimir el "segundo" objeto ... Estoy seguro que esto parece confuso, pero puedes acostumbrarte a esto. Tienes que realmente solo comenzar pensando que el contador comienza en cero, y dejas de usar palabras como "primero" y "segundo"
Belle
Chris
Ada
Belle
Chris
lenguajes = ['Inglés', 'Alemán', 'Ruby']Resultado:
lenguajes.each do |leng|
puts '¡Me gusta ' + leng + '!'
end
puts 'Y el C?'
puts '...'
¡Me gusta Inglés!¿Qué acaba de ocurrir? Bueno, está permitido ir pasando por cada objeto del array sin utilizar ningun número. Traducido al español diriamos que: para cada (each) objeto en el array lenguajes, haz que la variable leng contenga dicho objeto y entonces haz (do) todo lo que te digo, hasta que llegues al end. (Como ya sabes, C es otro lenguaje de programación que es mucho mas difícil de aprender que Ruby; por lo general, un programa hecho en C será muchas veces más extenso que un programa en Ruby que haga la misma funcionalidad)
¡Me gusta Alemán!
¡Me gusta Ruby!
Y el C?
...
3.times doResultado:
puts 'Hip-Hip-Hooray!'
end
Hip-Hip-Hooray!
Hip-Hip-Hooray!
Hip-Hip-Hooray!
alimentos = ['artichoke', 'brioche', 'caramel']Resultado:
puts alimentos
puts '...'
puts alimentos.to_s
puts '...'
puts alimentos.join(', ')
puts '...'
puts alimentos.join(' :) ') + ' 8)'
200.times do
puts []
end
artichokeComo puedes ver, puts trata el array diferente a otros objetos: solo llama puts sobre cada uno de los objetos en la matriz. Esto es porque puts con un array vacío 200 veces no hace nada; el array no apunta a nada; entonces no hay nada para puts. (Hacer nada 200 veces continúa siendo hacer nada)
brioche
caramel
...
["artichoke", "brioche", "caramel"]
...
artichoke, brioche, caramel
...
artichoke :) brioche :) caramel 8)
favoritos = []Resultado:
favoritos.push 'lluvia de rosas'
favoritos.push 'whisky en gatitos'
puts favoritos[0]
puts favoritos.last
puts favoritos.length
puts favoritos.pop
puts favoritos
puts favoritos.length
lluvia de rosas
whisky en gatitos
2
whisky en gatitos
lluvia de rosas
1
Indica año de inicio:
1800
Indica año de fin:
2005
===
Hay 50 años bisiestos: 1804-1808-1812-1816-1820-1824-1828-1832-1836-1840-1844-1848-1852-1856-1860-1864-1868-1872-1876-1880-1884-1888-1892-1896-1904-1908-1912-1916-1920-1924-1928-1932-1936-1940-1944-1948-1952-1956-1960-1964-1968-1972-1976-1980-1984-1988-1992-1996-2000-2004
comando = ''
while comando != 'adios'
puts comando
comando = gets.chomp
end
puts '¡Vuelve pronto!'
puts 1 > 2Resultado:
puts 1 < 2
false
true
puts 5 >= 5Resultado:
puts 5 <= 4
true
false
puts 1 == 1Resultado:
puts 2 != 1
true
true
puts 'gato' < 'perro'Resultado:
true
puts 'Hola, ¿cual es tu nombre?'El resultado en caso de que el usuario escriba Chris:
name = gets.chomp
puts 'Hola, ' + name + '.'
if name == 'Chris'
puts '¡Que nombre tan hermoso!'
end
Hola, ¿cual es tu nombre?pero si ponemos otro nombre:
Chris
Hola, Chris.
¡Que nombre tan hermoso!
Hola, ¿cual es tu nombre?Y eso es una ramificación. Si lo que viene luego del if es true (es decir, si es cierto), se ejecutará el código entre el if y el end. Y no se ejecutará si lo que viene luego del if es false (falso). Más facil imposible.
Chewbacca
Hola, Chewbacca.
puts 'Soy un adivino. Dime tu nombre:'si respondemos 'Chris':
name = gets.chomp
if name == 'Chris'
puts 'Veo grandes cosas en tu futuro.'
else
puts 'Tu futuro es... ¡Oh! ¡Mira la hora!'
puts 'Realmente debo irme, ¡lo siento!'
end
Soy un adivino. Dime tu nombre:Si tratamos con un nombre diferente:
Chris
Veo grandes cosas en tu futuro.
Soy un adivino. Dime tu nombre:
Ringo
Tu futuro es... ¡Oh! ¡Mira la hora!
Realmente debo irme, ¡lo siento!
puts 'Hola, y bienvenido a la clase de 7mo año.'si respondemos el nombre en minúsculas:
puts 'Me llamo Mrs. Gabbard. ¿Tú nombre es...?'
nombre = gets.chomp
if nombre == nombre.capitalize
puts 'Por favor, toma asiento ' + nombre + '.'
else
puts '¿' + nombre + '? Quieres decir ' + nombre.capitalize + ', ¿cierto?'
puts '¿No sabes escribir tu propio nombre?'
respuesta = gets.chomp
if respuesta.downcase == 'si'
puts '¡Hum! Bueno, ¡siéntese!'
else
puts '¡SALGA DEL SALON!'
end
end
Hola, y bienvenido a la clase de 7mo año.y si respodemos el nombre como debe ser:
Me llamo Mrs. Gabbard. ¿Tú nombre es...?
chris
¿chris? Quieres decir Chris, ¿cierto?
¿No sabes escribir tu propio nombre?
si
¡Hum! Bueno, ¡siéntese!
Hola, y bienvenido a la clase de 7mo año.Algunas veces puede ser algo confuso entender donde todos los ifs, elses, y ends van. Lo que yo hago es escribir el end al mismo tiempo que escribo el if. Así es que como se veía al principio el programa de arriba seún lo iba escribiendo:
Me llamo Mrs. Gabbard. ¿Tú nombre es...?
Chris
Por favor, toma asiento Chris.
puts 'Hola, y bienvenido a la clase de 7mo año.'Entonces lo llené con comentarios, cosas en el código que la computadora ignorará:
puts 'Me llamo Mrs. Gabbard. ¿Tú nombre es...?'
nombre = gets.chomp
if nombre == nombre.capitalize
else
end
puts 'Hola, y bienvenido a la clase de 7mo año.'Todo lo que aparezca luego de un # se considera un comentario (a menos, claro, que ese caracter esté dentro de una cadena). Después de eso, reemplacé los comentarios con código real. Algunas personas prefieren dejar los comentarios; personalmente, pienso que un código bien escrito normalmente habla por si mismo. Solía utilizar más comentarios, pero mientras más "flúido" me volvía con Ruby menos los utiliza. Actualmente los encuentro algo distrayentes la mayor parte del tiempo. Es una opción personal; tú encontrarás tu propio estilo (siempre en evolución). Así que mi siguiente paso se veía así:
puts 'Me llamo Mrs. Gabbard. ¿Tú nombre es...?'
nombre = gets.chomp
if nombre == nombre.capitalize
# Me trata como una persona normal.
else
# Se vuelve loca.
end
puts 'Hola, y bienvenido a la clase de 7mo año.'De nuevo, escribí los if, else, y end juntos. Realmente me ayuda para saber "donde estoy" en el código. Tambien permite que el trabajo parezca más sencillo ya que me permite enfocarme en una pequeña parte, como en llenar el código entre if y el else. El otro beneficio de realizarlo de esta manera es que el computador puede entender el programa en cualquier etapa. Cualquiera de las versiones incompletas del programa que te mostrén se podrían ejecutar. No estaban finalizadas, pero eran programas funcionales. De esa manera, podría probarlo mientras lo escribo, lo que ayuda a ver como voy avanzando y donde aún necesito trabajar.
puts 'Me llamo Mrs. Gabbard. ¿Tú nombre es...?'
nombre = gets.chomp
if nombre == nombre.capitalize
puts 'Por favor, toma asiento ' + nombre + '.'
else
puts '¿' + nombre + '? Quieres decir ' + nombre.capitalize + ', ¿cierto?'
puts '¿No sabes escribir tu propio nombre?'
respuesta = gets.chomp
if respuesta.downcase == 'si'
else
end
end
comando = ''Respuesta:
while comando != 'adios'
puts comando
comando = gets.chomp
end
puts '¡Vuelve pronto!'
Y eso es un bucle. (Tal vez te has dado cuenta de la línea vacía que sale al inicio del resultado; viene de ejecutar el primer puts, antes del primer gets).
¿Hola?
¿Hola?
¡Hola!
¡Hola!
Un gusto conocerlo
Un gusto conocerlo
¡Oh... que amable!
¡Oh... que amable!
adios
¡Vuelve pronto!
puts 'Hola, ¿cual es tu nombre?'Respuesta:
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
if nombre == 'Chris'
puts '¡Que nombre tan hermoso!'
else
if nombre == 'Katy'
puts '¡Que nombre tan hermoso!'
end
end
Hola, ¿cual es tu nombre?Bueno, funciona... pero no es un programa muy bonito. ¿Por qué no? Bueno, la mejor regla que he aprendido de programación es la regla DRY: Don't Repeat Yourself ("No te repitas" en español). Probablemente podría escribir un libro pequeño sobre por qué es tan buena esta regla. En nuestro caso, hemos repetido la línea puts 'Que nombre tan hermoso!'. ¿Por qué es tan problemático esto? Bueno, que pasaría si cometiera un error al escribir los textos cuando reescribí el programa? ¿Que tal si hubiera querido cambiar de 'hermoso' a 'bonito' en ambas líneas?
Katy
Hola, Katy.
¡Que nombre tan hermoso!
puts 'Hola, ¿cual es tu nombre?'Respuesta:
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
if (nombre == 'Chris' or nombre == 'Katy')
puts '¡Que nombre tan hermoso!'
end
Hola, ¿cual es tu nombre?Mucho mejor. Para hacer que funcione, he utilizado el operador or. Los otros operadores lógicos son and y not. Siempre es una buena idea usar los paréntesis cuando trabajamos con éstos. Veamos como funcionan:
Katy
Hola, Katy.
¡Que nombre tan hermoso!
soyChris = trueRespuesta:
soyMorado = false
meGustaLaComida = true
comoRocas = false
puts (soyChris and meGustaLaComida)
puts (meGustaLaComida and comoRocas)
puts (soyMorado and meGustaLaComida)
puts (soyMorado and comoRocas)
puts '...'
puts (soyChris or meGustaLaComida)
puts (meGustaLaComida or comoRocas)
puts (soyMorado or meGustaLaComida)
puts (soyMorado or comoRocas)
puts '...'
puts (not soyMorado)
puts (not soyChris)
trueLa única de esas sentencias que te podría confundir es el or. En español normalmente decimos "uno u otro, pero no los dos". Por ejemplo, tu mamá podría decir "Para postre puedes pedir flan o tarta". ¡Ella no quiso decir que podrías tener ambos!
false
false
false
...
true
true
true
false
...
true
false
puts 5**2Resultado:
puts 5**0.5
puts 7/3
puts 7%3
puts 365%7
25De la última línea, aprendimos que un año (no bisiesto) tienen algún número de semanas, más un día. Entonces si tu cumpleaños fue un martes este año, el próximo año será un miércoles. También puedes usar flotantes con el método módulo (%). Básicamente, funciona de una manera lógica... pero voy a mostrar un poco mas como trabajar con esto.
2.23606797749979
2
1
1
puts((5-2).abs)Resultado:
puts((2-5).abs)
3Números aleatorios
3
puts randUn posible resultado:
puts rand
puts rand
puts(rand(101))
puts(rand(101))
puts(rand(101))
puts(rand(1))
puts(rand(1))
puts(rand(1))
puts(rand(99999999999999999999999999999999999999999999999999999999999))
puts('El hombre del tiempo dijo que hay '+rand(101).to_s+'% de posibilidades de que llueva,')
puts('pero nunca debes confiar en el.')
0.866769322351658
0.155609260113273
0.208355946789083
61
46
92
0
0
0
22982477508131860231954108773887523861600693989518495699862
El hombre del tiempo dijo que hay 47% de posibilidades de que llueva, pero nunca debes confiar en el.
srand 1776Resultado:
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts '...'
srand 1776
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
24Esto hará la misma cosa cada vez que inicies con el mismo número. Si quieres obtener diferentes números(como pasaría si nunca utilizaras srand), entonces basta usar srand 0. Esto inicializa con un número realmente raro, utilizando (además de otras cosas) la hora actual de tu computadora, hasta los milisegundos.
35
36
58
70
...
24
35
36
58
70
puts(Math::PI)Resultado:
puts(Math::E)
puts(Math.cos(Math::PI/3))
puts(Math.tan(Math::PI/4))
puts(Math.log(Math::E**2))
puts((1 + Math.sqrt(5))/2)
3.14159265358979La primera cosa de la que te habrás dado cuenta es probablemente de la notación :: pero todavía no vamos a explicar qué significa esto.
2.71828182845905
0.5
1.0
2.0
1.61803398874989
Table of Contents
Chapter 1: Numbers page 1
Chapter 2: Letters page 72
Chapter 3: Variables page 118
puts 'hola '.+ 'mundo'Resultado:
puts (10.* 9).+ 9
hola mundo
99
noPuedoCreerQueUnaVariableConNombreTanLargoContengaSoloUn3 = 3Resultado:
puts noPuedoCreerQueUnaVariableConNombreTanLargoContengaSoloUn3
self.puts NoPuedoCreerQueUnaVariableConNombreTanLargoContengaSoloUn3
3
in `<main>': private method `puts' called for main:Object (NoMethodError)
var1 = 'parar'Resultado:
var2 = 'subrayado'
var3 = 'Puedes pronunciar esta oración al reves?'
puts var1.reverse
puts var2.reverse
puts var3.reverse
puts var1
puts var2
puts var3
rarapComo puedes ver, reverse no revierte el orden de la cadena original; éste sólo hace una nueva versión de éste en orden inverso. Esto es porque var1 continua conteniendo 'parar' aún después de que invoquemos al reverse de var1.
odayarbus
?sever la nóicaro atse raicnunorp sedeuP
parar
subrayado
Puedes pronunciar esta oración al reves?
puts 'Cuál es tu nombre completo?'Resultado:
name = gets.chomp
puts '¿Sabes que hay ' + name.length + ' caracteres en tu nombre, ' + name + '?'
Cuál es tu nombre completo?¡¡Uhh!! Algo salió mal, y esto parece que ocurrió después la línea name = gets.chomp... ¿Puedes ver el problema? Fijate si puedes darte cuenta.
Christopher David Pine
#<TypeError: can't convert Fixnum into String>
puts 'Cuál es tu nombre completo?'Resultado:
name = gets.chomp
puts '¿Sabías que hay ' + name.length.to_s + ' caracteres en tu nombre, ' + name + '?'
Cuál es tu nombre completo?Hay que darse cuenta que este número es el número de caracteres en mi nombre, no el número de letras.
Christopher David Pine
Sabías que hay 22 caracteres en tu nombre, Christopher David Pine
letters = 'aAbBcCdDeE'Resultado:
puts letters.upcase
puts letters.downcase
puts letters.swapcase
puts letters.capitalize
puts ' a'.capitalize
puts letters
AABBCCDDEEEsto es bastante estándar. Como puedes ver desde la linea puts ' a'.capitalize, el método capitalize sólo deja en mayúsculas el primer carácter, no la primera letra. También, como hemos visto antes, en todas estas llamadas a métodos, la variable letters permanece igual. Hay algunos métodos los cuales hacen cambios al contenido de los objetos asociados, pero no los hemos visto aún, y no lo haremos por algún tiempo.
aabbccddee
AaBbCcDdEe
Aabbccddee
a
aAbBcCdDeE
lineWidth = 50Resultado:
puts('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 HubbardSer perezoso no es siempre algo malo en programación. Por ejemplo, fíjate como guardé el ancho del poema en la variable lineWidth.Esto supone que si entonces quiero regresar más tarde y hacer el poema más ancho, solo tengo que cambiar la variable al comienzo del programa, antes que en cada línea. Con un poema muy largo, esto podría ahorrarme un montón de tiempo. Este tipo de pereza es realmente una virtud en programación.
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.
lineWidth = 40Resultado:
str = '--> text <--'
puts str.ljust lineWidth
puts str.center lineWidth
puts str.rjust lineWidth
puts str.ljust(lineWidth/2) + str.rjust(lineWidth/2)
--> text <--
--> text <--
--> text <--
--> text <-- --> text <--
var1 = 2Resultado:
var2 = '5'
puts var1 + var2
var1 = 2Resultado:
var2 = '5'
puts var1.to_s + var2
25
var1 = 2Resultado:
var2 = '5'
puts var1.to_s + var2
puts var1 + var2.to_i
25
7
puts '15'.to_fResultado:
puts '99.999'.to_f
puts '99.999'.to_i
puts '...'
puts '5 es mi número favorito'.to_i
puts '¿Quien te pregunto?'.to_i
puts 'Tu madre lo hizo.'.to_f
puts '...'
puts 'cadenita'.to_s
puts 3.to_i
15.0
99.999
99
...
5
0
0.0
...
cadenita
3
puts 20Resultado:
puts 20.to_s
puts '20'
20
20
20
puts getsResultado:
¿Hay eco aquí?
¿Hay eco aquí?
puts 'Hola... y, ¿cuál es tu nombre?'Resultado:
nombre = gets
puts '¿Tu nombre es ' + nombre + '? ¡Qué nombre tan hermoso!'
puts 'Gusto en conocerte ' + nombre + '. :)'
Hola... y, ¿cúal es tu nombre?
Chris
¿Tu nombre es Chris
? ¡Qué nombre tan hermoso!
Gusto en conocerte, Chris
. :)
puts 'Hola... y, ¿cuál es tu nombre?'Resultado:
nombre = gets.chomp
puts '¿Tu nombre es ' + nombre + '? ¡Qué nombre tan hermoso!'
puts 'Gusto en conocerte ' + nombre + '. :)'
Hola... y, ¿cúal es tu nombre?
Chris
¿Tu nombre es Chris? ¡Qué nombre tan hermoso!
Gusto en conocerte, Chris. :)
puts '...puedes decirlo de nuevo...'Resultado:
puts '...puedes decirlo de nuevo...'
...puedes decirlo de nuevo...Sería bueno que pudiéramos escribirlo sólo una vez y después conservarlo... guardarlo en algún lugar.
...puedes decirlo de nuevo...
miCadena = '...puedes decir eso de nuevo...'Resultado:
puts miCadena
puts miCadena
...puedes decirlo de nuevo...Cuando intentes hacer algo a la variable miCadena, el programa lo hará a '...puedes decirlo de nuevo...' en su lugar, es decir, a la cadena que está dentro del cajón miCadena.
...puedes decirlo de nuevo...
nombre = 'Yehuda Katz Yukihiro Matsumoto Linus Torvals Alan Turing'Resultado:
puts 'Mi nombre es ' + nombre + '.'
puts '¡Oh! ¡' + nombre + ' es un nombre realmente largo!'
Mi nombre es Yehuda Katz Yukihiro Matsumoto Linus Torvals Alan Turing.También, así como podemos asignar algo (un número, una cadena...) a una variable, podemos luego reasignar algo diferente a esa variable. (Esto es por lo que las llamamos variables: debido a que lo que contienen puede variar.)
¡Oh! ¡Yehuda Katz Yukihiro Matsumoto Linus Torvals Alan Turing es un nombre realmente largo!
compositor = 'Mozart'Resultado:
puts compositor + ' era “la bomba”, es sus días.'
compositor = 'Beethoven'
puts 'Pero, personalmente, yo prefiero a ' + compositor + '.'
Mozart era “la bomba”, es sus días.Por su puesto, las variables pueden contener cualquier clase de objeto, no solo cadenas:
Pero, personalmente, yo prefiero a Beethoven.
var = 'sólo otra ' + 'cadena'Resultado:
puts var
var = 5 * (1 + 2)
puts var
sólo otra cadenaDe hecho, las variables pueden contener casi todo... excepto otras variables. ¿Qué pasa si lo intentamos?
15
var1 = 8Resultado:
var2 = var1
puts var1
puts var2
puts '...'
var1 = 'ocho'
puts var1
puts var2
8Primero, cuando decimos que var2 contenga a var1, en realidad lo que conseguimos es que var2 contenga lo mismo que contenía var1, es decir, un 8. Luego hicimos que var1 contuviera 'ocho', pero como var2 no estaba en realidad conteniendo a var1, var2 se quedo conteniendo un 8.
8
...
ocho
8
'Hola.'Como puedes ver, las cadenas pueden tener puntuación, dígitos, símbolos, y espacios dentro... es decir, pueden contener más que solo palabras. Esa última cadena no tiene nada y podemos llamarla una cadena vacía.
'Ruby la rompe.'
'5 es mi número favorito... ¿Cuál es el tuyo?'
'Snoopy dice #%^?&*@! cuando le aplastan el dedo del pie.'
' '
''
puts 'Hola, mundo!'Resultado:
puts ''
puts 'Adiós.'
Hola MundoEso funcionó bien. Ahora inténtalo con algún texto tuyo.
Adiós
puts 'Me gusta' + 'el pastel de manzana'Resultado:
Me gustael pastel de manzanaWhoops! Me olvidé de poner un espacio entre 'Me gusta' y 'el pastel de manzana'. Los espacios no importan generalmente salvo si lo hacen dentro de los textos. (Es verdad lo que dicen: las computadoras no hacen lo que tú quieres que hagan, solo lo que tú le dices que hagan) Intentémoslo nuevamente:
puts 'Me gusta ' + 'el pastel de manzana.'Resultado:
puts 'Me gusta' + ' el pastel de manzana.'
Me gusta el pastel de manzana(Como puedes ver, no importó a que texto le agregué el espacio)
Me gusta el pastel de manzana
puts 'parpadeo ' * 4Resultado:
La computadora te hace ojitos.(Solo bromeaba, en realidad muestra esto):
parpadeo parpadeo parpadeo parpadeoSi lo piensas, tiene todo el sentido. Después de todo, 7*3 realmente solo significa 7+7+7, así que 'moo'*3 solo significa 'moo'+'moo'+'moo'.
puts 12 + 12Resultado:
puts '12' + '12'
puts '12 + 12'
24Y qué sucede con esto?:
1212
12 + 12
puts 2 * 5Resultado:
puts '2' * 5
puts '2 * 5'
10Estos ejemplos fueron bastante directos. De cualquier modo, si no tienes cuidado en cómo mezclas tus textos y tus números podrías encontrarte con...
22222
2 * 5
puts '12' + 12Resultado:
puts '2' * '5'
can't convert Fixnum into String (TypeError)Hmmm... un mensaje de error. El problema es eque en realidad no puedes sumar un número a un texto, o multiplicar un texto por otro texto. No tiene más sentido que esto:
puts 'Betty' + 12Algo más para tener cuidado: Puedes escribir 'pig' * 5 en un programa, dado que sólo significa 5 veces el texto 'pig' todo sumado. De cualquier modo, tú no puedes escribir 5 * 'pig', ya que eso significa 'pig' veces el número 5, lo cual es simplemente tonto.
puts 'Fred' * 'John'
puts '2° 57' 32"'Bueno, eso no funcionará; yo ni siquiera intentaría ejecutarlo. La computadora pensó que habíamos terminado con la cadena al llegar después del 57. (Por eso es bueno tener un editor de textos que colorea la sintaxis por ti). Así que, ¿cómo dejamos saber a la computadora que queremos continuar con la cadena? Tenemos que escapar el apostrofo, así:
puts '2° 57\' 32"'Resultado:
2° 57' 32"La diagonal invertida es el carácter de escape. En otras palabras, si tienes una diagonal invertida y otro carácter, a veces este último caracter es transformado en un nuevo carácter. Sin embargo, la diagonal invertida sólo escapa los apostrofes y así misma. (Si piensas acerca de ello, los caracteres de escape siempre deben escaparse a si mismos), Aquí hay algunos pocos ejemplos en orden, creo:
puts 'diagonal invertida al final de una cadena: \\'
puts 'arriba\\abajo'
puts 'arriba\abajo'
diagonal invertida al final de una cadena: \
arriba\abajo
arriba\abajo
puts 1+2Guarda tu programa (sí, ¡eso es un programa!) como calc.rb (el .rb es lo que usualmente ponemos al final de los programas escritos con Ruby). Ahora ejecuta tu programa escribiendo ruby calc.rb en la línea de comandos. Deberías obtener un 3 en tu pantalla. ¿Lo ves?, programar no es tan difícil, ¿cierto?
puts 3puts simplemente escribe en la pantalla lo que sea que escribamos a continuación.
5Y aquí hay algunos flotantes:
-205
9999999999999999999999999
0
54.321En la práctica, la mayoría de los programas no usan flotantes, sólo enteros. (Después de todo, nadie quiere leer 7.4 emails, o navegar 1.8 páginas, o escuchar 5.24 de sus canciones favoritas...) Los flotantes se usan más con propósitos académicos (como por ejemplo experimentos científicos) y para gráficos en 3D.
0.001
-205.3884
0.0
puts 1.0 + 2.0Esto es lo que retorna el programa:
puts 2.0 * 3.0
puts 5.0 - 8.0
puts 9.0 / 2.0
3.0(Los espacios en el programa no son importantes; simplemente hacen que el código sea más fácil de leer). Bueno, eso no fue muy sorprendente. Ahora probemos con enteros:
6.0
-3.0
4.5
puts 1+2Básicamente lo misno, ¿no?
puts 2*3
puts 5-8
puts 9/2
3Uh... ¡excepto por el último! Pero cuando se hace aritmética con enteros, se obtienen enteros. Cuando su computadora no puede obtener la respuesta "correcta", siempre redondea hacia abajo. (Por supuesto, 4 es la respuesta correcta en aritmética con enteros para 9/2; simplemente tal vez no sea el resultado que esperaba).
6
-3
4
puts 5 * (12-8) + -15Resultado:
puts 98 + (59872 / (13*8)) * -52
5
-29802