Python Ruby y Perl PDF
Python Ruby y Perl PDF
Seguridad Informtica
Autor: Eduardo Bayn Cascajo
Profesor: Santiago Blanco
11/01/2012
Eduardo Bayn Cascajo Seguridad Informtica
Contenidos
Introduccin ........................................................................................................ 3
Comparacin de los lenguajes de programacin ............................................ 3
Python ................................................................................................................ 5
Por qu Python? ........................................................................................... 5
Ejemplos bsicos con Python ......................................................................... 5
Ejemplo 1: Secuencias simples ................................................................... 6
Ejemplo 2: Operadores ............................................................................... 7
Ejemplo 3: Definicin de variables .............................................................. 8
Ejemplo 4: Estructura condicional if ............................................................ 9
Ejemplo 5: Bucles FOR ............................................................................. 11
Ejemplo 6: Bucles WHILE ......................................................................... 11
Ejemplo 7: Funciones ................................................................................ 12
Ejemplo 7: Estructura de datos tipo array ................................................. 13
Ejercicios bsicos ......................................................................................... 14
Ruby ................................................................................................................. 18
Ejemplos sencillos ........................................................................................ 19
Trabajo con cadenas .................................................................................... 19
Expresiones regulares .................................................................................. 21
Hashes.......................................................................................................... 22
Estructuras de control ................................................................................... 23
Case .......................................................................................................... 23
While ......................................................................................................... 23
Times ........................................................................................................ 24
For ............................................................................................................. 24
Iteradores...................................................................................................... 25
Variables ....................................................................................................... 25
Perl ................................................................................................................... 27
Ejemplo sencillo con Perl .............................................................................. 27
Variables y Datos.......................................................................................... 28
Variables escalares ................................................................................... 28
Variables de matriz: arreglos ..................................................................... 28
Variables matrices asociadas: "hashes".................................................... 29
Pgina 1 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Entrada/Salida .............................................................................................. 30
Estructuras de control ................................................................................... 32
Estructuras condicionales ......................................................................... 32
Estructuras repetitivitas ............................................................................. 34
Bibliografa y Webgrafa ................................................................................... 36
Pgina 2 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Introduccin
En el siguiente documento vamos a ver un resumen sobre algunos los distintos
lenguajes de programacin existentes, sobre todo los ms usados en la
actualidad.
Python
Ruby
Perl
Por ejemplo, vamos a ver a continuacin una tabla con la comparacin entre
los distintos lenguajes de programacin que vamos a usar en este trabajo,
adems de algn otro que son de los ms usados segn las referencias que
podemos encontrar en TIOBE:
Pgina 3 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Pgina 4 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Python
Python es un lenguaje de programacin de alto nivel cuya filosofa hace
hincapi en una sintaxis muy limpia y que favorezca un cdigo legible.
Orientacin a objetos.
Programacin imperativa.
Programacin funcional(en menor medida)
Por qu Python?
Python es un buen lenguaje para aprender a programar. Su sintaxis es sencilla
y tiene incorporadas caractersticas muy poderosas. Permite diversos estilos de
programacin, incluyendo tanto tcnicas convencionales como las ms
modernas orientadas a objetos. Corre en diversas plataformas como
Unix/Linux, MS Windows, Macintosh, etc.
Pgina 5 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Ya hemos visto como primer ejemplo como mostrar una cadena de texto, ahora
vamos a ver como realizar una operacin matemtica sencilla (suma, resta,)
como si de una calculadora se tratara:
Python toma a todos los nmeros como enteros, y da por sentado que as lo
desea el usuario. Si necesitas usar decimales, simplemente agrega un nmero
despus del punto decimal:
Hay otras letras que pueden incluirse despus del marcador %. Algunas de las
ms usadas son:
Ejemplo 2: Operadores
Qu tipo de operadores hay, qu podemos hacer con los datos,
especficamente el rango de operaciones aritmticas y de cadena, y los
operadores lgicos y de listas.
Operadores aritmticos
Ya hemos visto la mayora en el anterior tema, pero no viene mal hacer
un breve repaso con la siguiente tabla:
Operadores de Cadena
Existen varias operaciones que se pueden realizar con las cadenas,
algunas vienen predeterminadas en Python:
Pgina 7 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Operadores de listas
Numrica (entera)
Numrica (flotante)
Numrica (complejo)
Cadena de caracteres
Booleano
Para definir una variable en Python solo debemos asignarle el valor, en dicho
momento se define el tipo de variable segn el valor asignado (Python es un
lenguaje sensible a maysculas y minsculas, por lo que debemos respetar
esta caracterstica):
Pgina 8 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Por ejemplo, vamos a definir una variable de cada tipo y luego las
imprimiremos empleando la ya conocida funcin print:
Y las visualizamos:
Pgina 9 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Decir que con Python se pueden, al igual que con otros lenguajes de
programacin, anidar estrucutras. Por ejemplo, vamos a generar un valor
aleatorio entre 1 y 1000 y luego imprimiremos un mensaje indicando cuantos
dgitos tiene:
Pgina 10 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Pgina 11 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Ejemplo 7: Funciones
La estructura fundamental de programacin de los lenguajes estructurados son
las funciones. Una funcin es un conjunto de instrucciones que se la invoca
mediante un nombre y que luego de ejecutado el algoritmo puede retornar un
valor.
Un programa estructurado no es ms que un conjunto de funciones que en
conjunto resuelven un problema complejo.
Veamos la sintaxis en Python para definir y llamar a una funcin:
Decir que una funcin puede tener parmetros de entrada, como una funcin
que queremos que reciba dos enteros y luego nos imprima el mayor, pongamos
un ejemplo para entenderlo:
Pgina 12 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Del mismo modo podemos dejar sin especificar el segundo valor y decir desde
que posicin hasta el final queremos que se muestre:
Pgina 13 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Ejercicios bsicos
Una vez visto un poco la introduccin a Python y unos cuantos ejemplos de su
uso, vamos a realizar algunos ejercicios bsicos para comprender un poco ms
su funcionamiento.
Pgina 14 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Pgina 15 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Y lo ejecutamos:
Pgina 16 de 37
Eduardo Bayn Cascajo Seguridad Informtica
9. Hacer una funcin que reciba dos palabras y que imprima lnea por lnea
las primeras, segundas, etc. letras de ambas palabras.
10. Pedirle un texto al usuario y mostrar el mismo texto pero sin las vocales.
Pgina 17 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Ruby
Ruby es un lenguaje de programacin interpretado, reflexivo y orientado a
objetos, creado por el programador japons Yukihiro "Matz" Matsumoto, quien
comenz a trabajar en Ruby en 1993, y lo present pblicamente en 1995.
Combina una sintaxis inspirada en Python y Perl con caractersticas de
programacin orientada a objetos similares a Smalltalk. Comparte tambin
funcionalidad con otros lenguajes de programacin como Lisp, Lua, Dylan y
CLU. Ruby es un lenguaje de programacin interpretado en una sola pasada y
su implementacin oficial es distribuida bajo una licencia de software libre. [4]
-e:
Entonces ahora solo tendremos que llamarlo desde nuestra lnea de comandos
para que se ejecute el cdigo:
Otra opcin que tenemos para usar Ruby es escribir el comando irb para
acceder a su shell y desde all ejecutar nuestro cdigo:
Pgina 18 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Ejemplos sencillos
Veamos una funcin que calcula el factorial de un nmero:
Debemos saber que Ruby es capaz de tratar cualquier entero que quepa en la
memoria del ordenador.
Podemos ver que las comillas simples y dobles a veces tienen efectos
diferentes.
Una cadena de comillas dobles permite la presencia embebida de caracteres
de escape precedidos por un backslash(barra invertida) y la expresin de
evaluacin #{ }:
Pgina 19 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Pgina 20 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Expresiones regulares
Con las expresiones regulares comprobaremos si una cadena satisface a una
descripcin o un patrn. Para estos patrones existen algunos caracteres y
combinaciones de caracteres que tiene un significado especial:
Smbolo Descripcin
[] Especificacin de rango. (p.e. [a-z] representa una letra
en el rango de la a a laz
\w Letra o dgito; es lo mismo que [0-9A-Za-z]
\W Ni letra, ni dgito
\s Espacio, es lo mismo que [ \t\n\r\f]
\S No espacio
\d Dgito; es lo mismo que [0-9]
\D No dgito
\b Backspace (0x08) (slo si aparece en una
especificacin de rango)
\b Lmite de palabra (slo si no aparece en una
especificacin de rango)
\B No lmite de palabra
* Cero o ms repeticiones de lo que precede
+ Una o ms repeticiones de lo que precede
[m,n] Al menos m y como mximo n de lo que precede
? Al menos una repeticin de lo que precede; es lo mismo
que [0,1]
| Puede coincidir con lo que precede o con lo que sigue
() Agrupamiento
Pgina 21 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Hashes
Un array asociativo contiene elementos que se pueden acceder, no a travs de
ndices numricos secuenciales, si no a travs de claves que pueden tener
cualquier tipo de valor.
Pgina 22 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Estructuras de control
Ya las conocemos de otros lenguajes de programacin, pero vamos a ver como
es su sintaxis que puede que cambie un poco:
Case
Se utiliza la sentencia case para comprobar una secuencia de condiciones. Se
parece al switch de C pero es considerablemente ms potente.
While
Se pueden hacer bucles con la instruccin while, que no es ms que un
if repetido:
Pgina 23 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Times
Este es un ejemplo de cmo en Ruby es todo un objeto, inclusive los nmeros.
El mtodo times necesita dos cosas:
For
El siguiente bucle For se ejecuta una vez por cada elemento de la coleccin,
esta coleccin puede ser un rango de valores:
Pgina 24 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Iteradores
Los iteradores no son un concepto original de Ruby. Son comunes en otros
lenguajes orientados a objetos. Tambin se utilizan en Lisp aunque no se les
conoce como iteradores. Sin embargo este concepto de iterador es muy poco
familiar para muchas personas por lo que se explorar con detalle.
Variables
Este ser el ltimo apartado que veamos sobre Ruby, aunque se podra
profundizar mucho ms.
Ruby tiene tres clases de variables, una clase de constante y exactamente dos
pseudo-variables. Las variables y las constantes no tienen tipo. Aunque las
variables sin tipo tienen sus inconveniente y presentan ms ventajas.
En la mayora de los lenguajes hay que declarar las variables para especificar
su tipo, si se pueden modificar e indicar su mbito, ya que no es ningn
problema el tipo y cmo vamos a ver, el resto se obtiene a partir del nombre, en
Ruby no se necesita declarar las variables.
Clases de variables:
$ Variable global
@ Variable instancia
[a-z] _ Variable local
[A-Z] Constante
Pgina 25 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Ambos tienen un identificador como de variable local pero self es una variable
global que la mantiene el interprete y nil es una constante. Como estas son las
nicas excepciones no provocan mucha confusin.
Pgina 26 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Perl
Perl es un lenguaje de programacin diseado por Larry Wall en 1987. Perl
toma caractersticas del lenguaje C, del lenguaje interpretado bourne shell (sh),
AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de
programacin.
Con Perl podemos programar casi de todo (hay libreras/mdulos para casi
cualquier cosa que queramos), pero hay aplicaciones que requieren mucha
rapidez en las cuales es mejor utilizar otros lenguajes que no sean
interpretados. Perl es un lenguaje que permite programar de forma muy rpida
y es excelente para el tratamiento de cadenas.
Pgina 27 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Variables y Datos
En PERL no hay que declarar los tipos de las variables.
Van precedidas por unos caracteres especiales como: $,@,%, que ya
indican su tipo.
Se distingue entre minscula y maysculas, por tanto, $A y $a son
distintas
Variables escalares
Comienzan con el signo $ y contienen datos de tipo escalar. Por escalar
entendemos valores numricos y/o alfanumricos.
Para la asignacin se usa el signo igual (=) como en la mayora de los
lenguajes. En el caso de ser un valor alfanumrico (texto) este se escribe
entres comillas. Al final de la asignacin se debe escribir ";".
@animal=("gato","perro","vaca");
Pgina 28 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Sacar el primer elemento del arreglo (se asigna a una variable escalar):
$sacado=shift(@animal);
%dia=(Lun,"Lunes",Mar,"Martes",Mie,"Mircoles",Jue,"Jueves",Vie,"Viernes",Sa
b,"Sbado",Dom,"Domingo");
%dia=(
Lun=> "Lunes",
Mar=> "Martes",
Mie=> "Mircoles",
Jue=> "Jueves",
Vie=> "Viernes",
Sab=> "Sbado",
Dom=> "Domingo"
);
Pgina 29 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Al igual que con los arreglos, las matrices asociadas tambin tienen una serie
de funciones asociadas, que facilitan su utilizacin:
Entrada/Salida
Hasta ahora se han visto los tipos de variables, a continuacin vamos a ver el
modo de capturar esos valores a travs de teclado/pantalla.
Pgina 30 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Y las visualizamos:
Tambin podemos usar operadores aritmticos, pero solo afectan a los valores
numricos:
Pgina 31 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Estructuras de control
La mayora de las estructuras de control que hay en Perl han sido heredadas
de C/C++ por lo que ser fcil adaptarnos a ellas.
Estructuras condicionales
Esta estructura de control, como en el resto de lenguajes de programacin,
evala segn las condiciones que establezcamos dentro de los bloques
IFELSIFELSE.
Pgina 32 de 37
Eduardo Bayn Cascajo Seguridad Informtica
1. Comparacin numrica:
== igual que...
!= distinto de...
< menor que...
> mayor que...
>= mayor o igual que...
<= menor o igual que...
Dentro de Perl existe otra estructura condicional que unless que se usa
cuando queremos que se ejecute una instruccin en el caso de que una
variable no est definida o que la condicin no sea verdad (equivaldra a
sino existe).
Pgina 33 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Estructuras repetitivitas
Dentro de las estructuras de control estn las estructuras repetitivas. Estas nos
permiten repetir una accin o grupos de acciones dependiendo de una
condicin. Podemos usar:
For
Foreach
While
Todas estas instrucciones producen los ya conocidos bucles.
FOR
Se basa en la repeticin N veces, definidas por el programador, de una serie de
acciones o instrucciones. Cuando la condicin alcanza el mximo de veces
definido, concluye esta repeticin.
Por ejemplo mostramos una lista de nmeros del 1 al 9 contando de 2 en dos:
En ocasiones nos puede interesar que el bucle termine antes del nmero de
veces de repeticin estimado o que al alcanzar cierto nmero de repeticiones
se produzca una alteracin del bucle. Para permitir estas alteraciones del flujo
normal de las repeticiones, tenemos las instrucciones next (salta la cuenta a un
punto determinado del proceso del bucle) y last (concluye la cuenta y las
repeticiones, terminando el bucle).
FOREACH
Usamos esta instruccin para recorrer los valores de las matrices o arrays. La
expresin que va dentro de los parntesis es evaluada para producir una lista
con sus valores, que actan como contadores del bucle, ejecutndose el bucle
una vez para cada uno de los elementos.
Pgina 34 de 37
Eduardo Bayn Cascajo Seguridad Informtica
WHILE
Es un bucle que se repetir mientras que se cumpla o deje de cumplirse la
condicin que le demos.
Por ejemplo, un bucle que nos mostrar un saludo mientras el contador sea
menor que 3 y que cuando sea 2, antes de salir, se despida:
Pgina 35 de 37
Eduardo Bayn Cascajo Seguridad Informtica
Bibliografa y Webgrafa
[1]Comparison of programming languages
http://en.wikipedia.org/wiki/Comparison_of_programming_languages
[Consulta el 9 de enero de 2012]
[2]Python http://es.wikipedia.org/wiki/Python
[Consulta el 9 de enero de 2012]
[3]Aprendiendo a programar
http://www.freenetpages.co.uk/hp/alan.gauld/spanish/
[Consulta el 10 de enero de 2012]
[4]Ruby
http://es.wikipedia.org/wiki/Ruby
[Consulta el 10 de enero de 2012]
[5]Perl
http://es.wikipedia.org/wiki/Perl
[Consulta el 10 de enero de 2012]
Pgina 36 de 37