ruby en mp3

Download Ruby En MP3

Post on 18-Oct-2015

20 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Ruby Apuntes

TRANSCRIPT

  • Todo lo que siempre quisiste saber sobre Ruby y no te vamos a contar

    William Viana Andreu Belmonte

    13 de noviembre

  • Contenidos

    1 Introduccin 4

    2 puts "Ruby mola mazo!" 5

    2.1 Invocando el intrprete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.3 Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.3.1 Nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.3.2 Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.3.3 Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.3.4 Rangos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.3.5 Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.6 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.3.7 Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3 Condicionando y repitiendo 14

    3.1 Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.1.1 if y unless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.1.2 case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.2 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1

  • William Viana y Andreu Belmonte 2

    3.2.1 while y until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3.2.2 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    4 New kids on the block 19

    4.1 Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    4.1.1 Cmo hacer bien un finger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    4.2 Bloques e iteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    4.2.1 Qu echan en el cine? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    5 Un lenguaje con clase 27

    5.1 Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    5.1.1 Acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    5.1.2 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5.2 Mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    5.3 Mixins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    6 Si no lo apunto se me olvida 34

    6.1 La clase File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    6.2 Bienvenido al mundo falible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    6.3 Qu voy a ver en el cine? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    7 Qt4-Ruby 377.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    7.2 Estructura de un interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    7.2.1 SignalnSlots: Connecting Peoples objects . . . . . . . . . . . . . . . . . . . . . . . . . . 39

  • William Viana y Andreu Belmonte 3

    7.3 Diseo del interfaz: Designer-qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    7.4 Implementacin de la funcionalidad del interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    7.5 Aplicacin principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    8 Dice la leyenda que se empieza por documentar y se acaba por implementar 46

    8.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    8.2 SimpleMarkup o yo solo s HTML, como se juega a esto? . . . . . . . . . . . . . . . . . . . . . . 47

    8.3 y ahora?. . . ejecucin sobre nuestro cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    9 Material relacionado 51

    10 Agradecimientos 52

    11 Sobre este documento 53

  • 1 Introduccin

    Ruby es un lenguaje de programacin orientado a objetos puro. Se basa sobretodo en la sintaxis de Perl y enla orientacin a objetos de SmallTalk. Fue creado por el japons Yukihiro Matz Matsumoto quien lo liber alpblico en 1995. Es distribuido bajo dos licencias: una propia y la GPL.

    Ruby es un lenguaje interpretado y no es de los ms rpidos. Matz lo que quera hacer era un lenguaje divertidode programar, en el que el programador pudiera ser muy productivo en poco tiempo. A m al menos divertidome resulta :)

    Sobre las versiones, la ltima versin estable es la 1.8.4 y la que est en desarrollo es la rama 1.9 que ser lafutura versin 2.0

    En este manual/tutorial aprenderemos lo bsico del lenguaje para empezar a programar scripts sencillos. Apren-der a hablarlo fluidamente ser cosa tuya. Talvez para la compresin de este manual haga falta ciertas nocionessobre programacin orientada a objetos, as que si no las tienes haz los deberes y al menos busca informacin enla wikipedia sobre el tema.

    4

  • 2 puts "Ruby mola mazo!"

    2.1 Invocando el intrprete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.3.1 Nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3.2 Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.3.3 Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.4 Rangos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.5 Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3.6 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.7 Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5

  • William Viana y Andreu Belmonte 6

    Todo lenguaje de programacin se empieza a aprender con un programa que imprime en pantalla "Hola mundo!".Nosotros seremos un poco ms originales, pero no demasiado, y aprenderemos a imprimir en pantalla "Ruby molamazo!". De hecho eso es lo que justamente hace el ttulo del captulo.

    Sigamos con algo un poco ms serio.

    2.1 Invocando el intrpreteLos ficheros de cdigo fuente de Ruby llevan la extensin .rb y el intrprete se llama ruby. Nuestro primerHay varias maneras de invocar el intrprete

    pasndole argumentos en la lnea de coman-dos. Por ejemplo con el parmetro -e pode-mos ejecutar cdigo desde la misma lnea decomandos:

    ruby -e puts "Hola mundo!"Con -c simplemente se comprueba la sintaxisdel cdigo y con -w se activan los warnings.Para ver una lista con todas las opcionesdisponibles:

    man ruby

    programa tendr este aspecto:

    hola_mundo.rb#!/ usr / b in /env rubyputs "Ruby mola mazo ! " # es to es un comentario .

    La primera lnea indica, en un sistema Unix, con qu intrprete se ha de interpretar ese fichero. Para ejecutarnuestro programa desde la lnea de comandos podemos hacerlo as:

    ruby hola_mundo.rb

    o si el fichero tiene permisos de ejecucin simplemente:

    ./hola_mundo.rb

    Tambin podemos usar el intrprete interactivo de Ruby que se llama irb.i rb> puts "Ruby mola mazo ! "Ruby mola mazo !=> n i l

    2.2 VariablesLas variables en Ruby no necesitan declararse y no tienen tipo, puedes almacenar en ellas lo que sea. LasEn realidad lo que se almacenan en las vari-

    ables son referencias, no un valor. Esto puedecausar algn dolor de cabeza si no se tiene encuenta.

    constantes deben empezar con una letra mayscula y si intentas cambiar el valor de una constante durante laejecucin Ruby te lanzar un warning. Las variables globales empiezan con un smbolo del dlar y las constantesglobales con un dlar seguido de una letra mayscula. Algunos ejemplos de nombres de variables:

    foo bar Pi $IVA $Precio

  • William Viana y Andreu Belmonte 7

    Resta saber qu tipo de datos se pueden almacenar en una variable, sigue leyendo.

    2.3 Tipos2.3.1 Nmeros

    Al principio he dicho que Ruby era un lenguaje orientado a objetos y ahora lo empezaremos a notar. Todos lostipos base en Ruby son objetos. Los nmeros enteros pertenecen a la clase Fixnum si estn comprendidos entreun rango 230 y 230 y Bignum para cualquier nmero entero fuera de ese rango.

    Tambin se pueden utilizar diferentes bases de representacin (binaria, octal, hexadecimal,...) Los nmeros realespertenecen a la clase Float y tambin se pueden representar en notacin cientfica.

    El mtodomethods devuelve una lista con to-dos los mtodos disponibles del objeto. Otramanera de averiguar qu metodos tiene unobjeto es ejecutar