6 nov. 2018

Teoría - Sintaxis básica de RUBY

Sintaxis básica de RUBY


http://cursodicampus2008.wordpress.com/


En Ruby el código que se lee puede ser:
  • Clase: Su función es la de crear los objetos.Se reconocen así class A
     ...
    end
  • Definición: Crea métodos dentro de las clases.
    Fuera de las clases son colecciones de bloques y/o procesos y se pueden llamar en cualquier parte del código donde ha sido definido, así que si se define dentro de una clase, es inaccesible si no se le hace accesible mediante el procedimiento adecuado.
    Se identifican condef a...end
  • Procesos: Asigna a una variable o constante un bloque que contiene un conjunto de acciones  y/o parámetros.
    Se identifican con
    a=Proc.new do
    ...
    end
  • Bloque: Nunca se utiliza solo, está relacionado con un proceso y se identifican con:do
    ...
    en
    ó
    {...}
  • Parámetros: Es todo lo que esta dentro de (...), || o cualquier texto introducido como parámetropueden ser variables o constantes definidas con anterioridad o sin definir porque se define dentro del código al que está asociado.
    Tipos de variables: 
    Locales y de bloques --> texto todo seguido y en minúscula. Su alcance es local,
    De clases --> empiezan por @@+texto todo seguido y en minúscula. Su alcance es la clase en la que está definida.
    De Instancia --> empiezan por @+texto todo seguido y en minúscula. Su alcance es el método o definición en el que está definido.
    Globales --> empieza por $++texto todo seguido y en minúscula. Su alcance es total desde cualquier parte del código.
    Las constantes:Empiezan por (al menos) una mayúscula y tienen alcance local salvo que sea precedida por ::. Si está definida en una clase o módulo se precederá de su nombre, si no lleva nada delante de :: es porque se definieron fuera de la clase o método que la llama. No se pueden definir constantes dentro de los métodos.

Sintaxis básica de Ruby

Por raulcaster

 

Introducción.

Ruby es un lenguaje de script interpretado, orientado a objetos, rápido y sencillo. No obstante, no es la panacea del programador. Las características básicas del lenguaje son las siguientes:
  • Los comentarios comienzan por #.
  • Las sentencias no terminan en ;.
  • Se pueden evitar los paréntesis cuando no haya ambigüedad.
  • Las variables locales comienzan por minúscula.
  • Las constantes empiezan por mayúscula.
  • Normalmente, cada línea empieza por un objeto y después lo que se quiere de él, bien sea declararlo o usar alguno de sus métodos y, finalmente, terminamos con un ¿qué quieres hacer con él? o ¿qué quieres que haga?
Los recursos que se emplearán serán el comando irb y la API de Ruby (http://www.ruby-doc.com/core/).

La clase Fixnum.

Son los números enteros del rango 2^-30 a 2^30. Si se sobrepasa el límite del rango tras una operación, el tipo de la variable pasa automáticamente a Bignum. Como todo en Ruby es un objeto, un número constante tiene métodos a los que se puede invocar. Algunos métodos destacados son to_s (entero a string), to_f (entero a float), divmod (devuelve un array con el resultado y el cociente de una división) y remainder (retorna el resto de una división).

La clase Float.

Representa los números reales, en coma flotante con doble precisión. Algunos de los métodos que presenta son to_s (float a string), to_i, to_int, truncate (float a entero, truncando la parte decimal) y round (redondear a entero más cercano).

Los boolenanos.

En Ruby no existe un tipo de dato booleano, explícitamente. No obstante, reconoce los valores false y nil. Todo lo demás es falso (incluido 0, a difierencia de otros lenguajes de programación).

La clase String.

Cadenas de texto, encerradas entre comillas simples o dobles. La diferencia entre usar unas u otras estriba en que con las dobles, se parsea el contenido la cadena (por ejemplo, \n se traduce como un salto de línea), mientras que con las simples, la cadena no se traduce. Es posible acceder a los caracteres de la cadena a través de su índice. Si éstos son negativos, se empieza a contar desde el final de la cadena. Los métodos más destacados son los siguientes:
  • capitalize: hace mayúscula la inicial de la cadena.
  • concat / <<: concatena una cadena a otra.
  • []: devuelve el código ascii del carácter que ocupa la posición indicada.
  • delete: borrar de la cadena el carácter indicado.
  • eql? / == / equal?: los tres comprueban si dos cadenas son iguales. Además, equal? compara también que se trate del mismo objeto.
  • to_i / to_f / to_sym: transformar una cadena en entero, float o símbolo (un símbolo es una variable que apunta a una posición que contiene una cadena igual al nombre del símbolo. Su ventaja es que símbolos con el mismo nombre hacen referencia a la misma cadena).
  • upcase / downcase / swapcase: transformar una cadena a mayúsculas, minúsculas o intercambiar mayúsculas y minúsculas, y viceversa.
  • reverse: invertir el orden de los caracteres de una cadena.
  • next: retorna el siguiente caracter de la cadena, según el orden alfabético.
  • chop: elimina el último carácter de una cadena.
  • chomp: eliminar el salto de línea final de una cadena.
  • strip / lstrip / rstrip: eliminar los espacios en blanco de una cadena por ambos lados, sólo la izquierda o sólo la derecha.
  • split: generar un array a partir de un string, indicando el patrón separador de componentes.

Rangos.

Para comprobar la inclusión de un valor en un rango, se emplea el operador ===. Los rangos pueden ser de dos tipos:
  • (a..b): es equivalente a [a,b].
  • (a…b): es equivalente a [a,b).
Algunos métodos son: begin, end (devuelven el extremo inferior y superior del rango), exclude_end (informa acerca de la exclusividad del extremo superior del rango), to_a (convertir un rango en un array).

Expresiones regulares.

Es un patrón que generalizar un conjunto de cadenas. Pertenecen a la clase Regexp. Para comprobar si una cadena cumple una expresión regular, se emplea el operador =~.

Símbolos.

Anteriormente, ya se ha explicado lo que es un símbolo. Para determinar si se debe emplear una cadena o un símbolo, hay que pensar sobre si lo importante es la identidad del objeto y el contenido del objeto. Algunos de los métodos que se pueden aplicar son to_i (símbolo a entero), to_f (símbolo a float) y to_s (símbolo a string).

Arrays y hashes.

Son colecciones de cualquier tipo de objetos (pueden ser distintos dentro de la misma colección). Los arrays son indexados mediante enteros, a diferencia de los hashes, que se indexan mediante cualquier objeto (que también pueden ser de distinto tipo). Por tanto, el array es más eficiente (está ordenado), mientras que el hash es más flexible. Los métodos más importantes son:
  • join: genera un string a partir de un array. Debemos indicar el patrón que separará las componentes en el array.
  • sort: ordena el array.
  • rsort: invierte el orden de los elementos del array.
  • length: proporciona la longitud del array.
  • flatten: desanida el array (transforma un array bidimensional o unidimensional).
  • uniq: elimina elementos duplicados.
  • include?: comprobar si un elemento pertenece a un array.
Los arrays se crean entre corchetes, mientras que los hashes, entre llaves, indicando clave y valor.

Estructuras del lenguaje.

if / elsif / else
if condicion1
sentecias
elsif condicion2
sentencias
else
sentencias
end
unless: similar al if, se verifica cuando la condición no se cumple. No existe elsunless.
unless condicion
sentencias
end
case: es el switch de otros lenguajes. En Ruby, el elemento estudiado puede ser de cualquier tipo. Permite estudiar la inclusión en un rango, la clase a que pertenece una variable o el cumplimiento de una expresión regular.
case a
when a = ..
sentencias
when a = ..
sentencias
else
sentencias
end
while: bucle más sencillo
while condicion
sentencias
end
until: funciona de forma similar al while, pero se ejecuta mientras no se verifica la condición:
until condicion
sentencias
end
Interrupción de los bucles:
  • break: sale del bucle.
  • next: pasa a la siguiente iteración del bucle.
  • redo: reinicia la iteración actual.
  • return: sale del bucle y del método que lo contiene.