You are on page 1of 25

Universidad de Panam

Facultad de informtica, Electrnica y Comunicacin


Ingeniera en Informtica

II semestre
Tema: Laboratorio #6
Visual Basic
Vs
Perl

Profesor:
Sal Ardines G.

Asignatura:
Estructura de Lenguajes de Programacin (LP)

Nombre:
Ian A. Herrera A.

Sed. : 8-874-58

Fecha de entrega:
Martes 11 de noviembre de 2014

ndice

1.
2.
3.

4.

5.
6.
7.
8.
9.

Hoja de Presentacin
Contenido del laboratorio:
Introduccin
Breve Resea Histrica
Caractersticas del Lenguaje de Programacin
Objetos de datos
3.1 Tipos de datos primitivos
3.1.1 Variables y constantes
3.1.2 Tipos de datos numricos y Tipos de datos de caracteres
3.1.3 Tipos de datos booleanos
3.2 Tipos de datos estructurados
3.2.1 Tipos de datos de arreglos
3.2.2 Tipos de datos de registro
3.2.3 Apuntadores o Punteros
3.2.4 Archivo de entrada/salida
3.3 Tipos de datos definidos por el usuario
Control de secuencia
4.1 Expresiones
4.2 Enunciados
4.1.1 Enunciados de entrada y salida
4.1.2 Enunciados condicionales
4.1.3 Enunciados de iteracin
Subprogramas y gestin de almacenamiento
Ejemplos prcticos
Cuadro de Comparacin y Evaluacin de los Lenguajes de Programacin
Evaluacin
Bibliografa

Introduccin

En este laboratorio veremos las caractersticas principales del lenguaje de


programacin Perl, adems evaluaremos los lenguajes Visual Basic y Perl
segn los Criterios de Comparacin y Evaluacin de los Lenguajes de
Programacin para poder determinar cul de estos es el mejor lenguaje a
utilizar, aunque hay muchos ms criterios que estos mencionados
simplemente al usar los que se nos han facilitados es suficiente para tener un

panorama de lo que pueden ser capases los lenguajes y as cuando se nos


presente una situacin en donde tendremos que elegir entre varios lenguajes
de programacin para resolver algn problema o proyecto tendremos una
herramienta ms exacta para poder tomar decisiones con una mayor
precisin y mucho ms rpido.

Resea Histrica
Perl es un lenguaje de programacin diseado por Larry Wall. 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.
Larry Wall comenz a trabajar en Perl en 1987 mientras trabajaba como programador
en Unisys y anunci la versin 1.0 en el grupo de noticias comp.sources.misc el 18 de
diciembre de 1987. El lenguaje se expandi rpidamente en los siguientes aos. Perl 2,
publicado en 1988, aport un mejor motor de expresiones regulares. Perl 3, publicado
en 1989, aadi soporte para datos binarios.
La primera versin de PERL que lleg a ser suficientemente conocida fue la versin 4,

dada a conocer al mundo por el libro del camello. Esta versin se estuvo desarrollando
desde 1991 a 1993, y coincidi con la popularidad del PERL como lenguaje para
programacin de servidores de Internet; aunque originalmente se haba diseado
como lenguaje para administracin de sistemas.
La versin 5 estable no apareci hasta el 17 octubre de 1994, y ha sido tan popular
que todava se usa. Fue casi una completa reescritura del intrprete y aadi muchas
nuevas caractersticas al lenguaje, incluyendo objetos, referencias, paquetes y
mdulos. A destacar, los mdulos proveen de un mecanismo para extender el lenguaje
sin modificar el intrprete. Esto permiti estabilizar su ncleo principal, adems de
permitir a los programadores de Perl aadirle nuevas caractersticas.
Y hacen a PERL tan fcil de programar, incluyendo los mdulos, las facilidades para
programacin dirigida a objetos, referencias y mucha mejor documentacin. Aparecen
muchos otros libros, tales como Learning Perl.

Caractersticas del Lenguaje de Programacin


Estructuralmente, Perl est basado en un estilo de bloques como los del C o AWK, y fue
ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de
las limitaciones de los otros lenguajes de script.
Un script, archivo de rdenes es un programa usualmente simple, que por lo regular se
almacena en un archivo de texto plano. Los script son casi siempre interpretados, pero
no todo programa interpretado es considerado un script. El uso habitual de los scripts
es realizar diversas tareas como combinar componentes, interactuar con el sistema
operativo o con el usuario.

Perl es un lenguaje de programacin de propsito general originalmente desarrollado


para la manipulacin de texto y actualmente para un amplio rango de tareas
incluyendo administracin de sistemas, desarrollo web, programacin de redes,
desarrollo de GUI y muchas ms.

Este Lenguaje ha sido creado para ser practico (fcil de usar, eficiente, completo) en
lugar de bonito (pequeo, elegante, minimalista). Su mayor caracterstica son que es
fcil de usar, soporta programacin procedural y orientada a objetos, tiene un fuerte
soporte incorporado para procesamiento de texto.

Objetos de datos
Tipos de datos primitivos
Variables y constantes
VARIABLES
Las variables almacenan el valor asignado en la memoria, para acceder a dicho valor
hay que hacerlo a travs del nombre con el que se declar, en Perl los nombres de las
variables empiezan por el carcter "$" y no es obligatorio declarar el tipo de datos, ni
tampoco indicar explcitamente de que se trata de una variable, aunque se puede
hacer mediante la palabra reservada my, las variables pueden ir cambiando su valor a
lo largo de la ejecucin del programa, esto quiere decir que no son constantes, una
variable puede almacenar un valor y ser cambiado tras una determinada accin.
Ejemplo:
#Variables
my $variable = "Hola soy una variable \n";
print $variable;
$variable = "Hola soy una variable \n";
print $variable;

CONSTANTES
Las constantes al contrario que las variables mantienen el valor constante, es decir, no
pueden cambiar su valor en ningn punto de la ejecucin, es til para definir valores
que no van a tener que ser sometidos a cambios, como podra ser el nmero pi, un
importe fijo, un determinado nmero, ... Para declarar una constante en Perl se utilizan
las palabras reservadas use constant, seguido del nombre y la asignacin de su
valor, como en el caso de las variables tampoco es necesario especificar el tipo de
datos, ya que Perl lo interpreta atendiendo al valor asignado.
Ejemplo:
#Constantes
use constant numero_pi => 3.14;
print "Numero pi es una constante: ".numero_pi;

Tipos de datos numricos y Tipos de datos de caracteres

Un escalar es un solo valor; puede ser un nmero, un string o una referencia

Una lista es una coleccin de escalares (una variable que almacena una lista se
llama array)

Un hash, o memoria asociativa, es un mapeo de strings a escalares;


los strings se llaman claves y los escalares valores.

Todas las variables estn precedidas por un sigil, que identifica el tipo de dato que es
accedido (no el tipo de dato de la misma variable). Se puede usar el mismo nombre
para variables de diferentes tipos, sin que tengan conflictos.
$var # un escalar
@var # un ''array''
%var # un ''hash''

Datos 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 entre comillas.
Al final de la asignacin se debe escribir ";".

$n
= 42;
$nombre = "juan";

Perl convertir los strings en nmeros y viceversa dependiendo del contexto en que
sean usados.

Datos array
Comienzan con el signo @ y contienen una lista de valores escalares (nmeros y/o textos). Al
ser una lista de valores para acceder a cada de uno estos se utiliza un nmero que indica su
posicin dentro de la lista. La numeracin empieza en 0, y se coloca entre corchetes [ ]. A este
nmero que indica la posicin de un valor dentro de la lista del arreglo se denomina ndice

@puntuaciones = (32, 45, 16, 5);

Datos hash
Un hash puede ser inicializado desde una lista de pares clave/valor.
%favorito = (joe => 'rojo', sam => 'azul',);

Tipos de datos booleanos


En Perl no existen tales datos, sin embargo cuando se analizan internamente si el dato
contiene algn valor diferente de cero Perl lo considera como verdadero.
$fruta = '0'; #Falso
$fruta = '5'; #Verdadero
$fruta = "5 mangos"; #Verdadero

Tipos de datos estructurados


Tipos de datos de arreglos
Arrays
Un Array en Perl es como los de C, pero con la diferencia de que van precedidos del
smbolo arroba @. (Como las variables de $). La forma de acceder a ellos es mediante
la indexacin, contando desde cero. En Perl no nos tenemos que preocupar de reservar
la memoria ni gestionarla de ninguna forma. Hay que tener en cuenta que cuando se
accede a un elemento de un array, ya no se est haciendo referencia a un array sino a
un dato escalar, por lo que debe ir precedido del smbolo $.

#!/usr/bin/perl
#Declaramos la variable primer_array como un array
my @primer_array;
#asignamos unos cuatro valores al array
@primer_array= (1,"dos", 3,"cuatro");
#Aadimos un quinto de forma individual
$primer_array[4]=5.5;
#Mostramos el tercer elemento del array
print "El tercero es= ".$primer_array[3]." \n";

my @array3D=([],[],[]);
$array2D[0][0]=0;

Arrays asociativos
Un array asociativo en Perl o tabla hash (como tambin se le denomina) es un array
donde los elementos son referenciados mediante claves en vez de una posicin. Para
los array asociativos se utiliza el smbolo %. Al igual que sucede con los arrays
normales, cuando se accede a un elemento de un array asociativo se debe referenciar
como un escalar con el smbolo $. Adems la indexacin por clave no se hace
utilizando los corchetes, sino que se utilizan las llaves ({ }).
#asignamos valores a una tabla hash
my %colorfruta;
$colorfruta {"verde"}="kiwi";

Puntero a un Array
Se puede crear una referencia a una lista usando en lugar de ( ). Mediante esta tcnica
se pueden implementar arreglos multidimensionales.

my $ref_a_arreglo = [ 'a0', 'a1', 'a2' ];


print "$ref_a_arreglo->[1]\n";
my $ref_a_multi_arreglo = [ [ 'a0', 'a1', 'a2' ], [ 'b0', 'b1',
'b2', 'b3' ], [ 'c0', 'c1', 'c2' ], ];

# Desplegar elemento (1,3) = 'b3'


print "$ref_a_multi_arreglo->[1][3]\n";

Tipos de datos de registro


Variables matrices asociadas: "hashes"(Listas)
Comienzan con el signo % y se tratan de matrices que se referencian por el
par clave/valor. Como veremos a continuacin los valores se introducen manteniendo
una relacin a pares. El primer valor es la clave o referencia del siguiente.
Se pueden asociar los valores a las matrices asociadas de 2 modos:

%dia=(Lun,"Lunes",Mar,"Martes ");
%dia=( Lun => "Lunes",
Mar => "Martes", );

Clase Struct
Exporta una sola funcin struct(), dada una lista de elementos con nombres y tipos, la
funcin struct() crea una clases que implementa una estructura de datos parecida a un
struct
struct( CLASS_NAME => [ ELEMENT_LIST ]);
struct( CLASS_NAME => { ELEMENT_LIST });
struct( ELEMENT_LIST );

Ejemplo
use Class::Struct;
struct( Rusage => {ru_utime => 'Timeval',
ru_stime => 'Timeval',

# user time used


# system time used});

Apuntadores o Punteros
Punteros
Los References en Perl apuntan a una direccin de memoria donde se almacena el
valor de una variable. Si bien se pueden hacer referencias a cualquier tipo de variable,
la referencia en si se trata siempre como un Escalar por lo que comienzan con $.
my $scalar = 'hola';
my $scalar_ref = \$scalar;
print "Scalar: $$scalar_ref\n";

Archivo de entrada/salida
Otra funcin necesaria cuando se realizan programas es la lectura/escritura de
archivos.

En Perl se maneja de la siguiente manera.


En la variable $archivo1 se guarda el nombre del archivo entre comillas.
$archivo1=notas.txt;
open(ARCHIVO1,"<",$archivo1) or die
mensaje al
usuario: $!;

Leer archivo y asignarlo al manejador ARCHIVO1.

open(ARCHIVO2,">",$archivo2) or die
mensaje al
usuario: $!;

Escribir en archivo utilizando el manejador ARCHIVO2.

open(FINAL,">>",$arFinal) or die
mensaje al
usuario: $!;

Insertar al final del archivo sin borrar el contenido completo del


mismo, utilizando el manejador de archivos FINAL.

Se puede utilizar la funcin print para escribir en los archivos.


Ej: print FINAL $ar,"\n";
Para recorrer el archivo y mostrarlo en pantalla se utiliza un ciclo como este:
while( < ARCHIVO1 > ){print $_;}
Bases de datos
Los mdulos
Antes de empezar es necesario que cheques si tienes los mdulos necesarios.
El mejor mdulo en mi opinin y en la de muchos es la de DBI, un mdulo creado en
lenguaje C++ por lo que est compilado. La gran ventaja que tienes este mdulo, a
parte de estar muy bien hecho por lo que no tiene bugs, es que es compatible con casi
todos los sistemas de database, por lo que si usas este mdulo para conectarte a tu
database, podrs usar tu cdigo con los ms importantes sistemas de database.
Ahora, parte del mdulo DBI vamos a necesitar otro mdulo, nada ms que este
depende de qu database uses, si por ejemplo usas MySQL entonces el otro mdulo
sera DBD::mysql, si usaras postgres entonces sera DBD::Pg y as con los otros
database.
Todos los mdulos disponibles de DBD son:
DBD::Sybase
DBD::pNET
DBD::mSQL
DBD::mysql
DBD::Unify
DBD::Oracle
DBD::Pg
DBD::Ingres
DBD::Illustra
DBD::CSV

DBD::Sqlflex
DBD::Solid
DBD::DBMaker
DBD::Informix
DBD::Ovrimos
DBD::Teradata
DBD::Multiplex
DBD::InterBase
DBD::XBase
DBD::ODBC
DBD::Adabas

y muchos ms
Como ves existen mdulos de DBD para casi cualquier sistema de database que hay,
slo es cuestin de que instales el que quieres usar.

Control de secuencia
Expresiones

La manera de utilizar las expresiones en Perl es la siguiente:


#!/usr/bin/perl -w
# elementos de la sintaxis de Perl
# llamada al mdulo strict
use strict;
# declaramos la variable $fecha
my $fecha;
# llamada al sistema operativo para ejecutar el programa date y asignar el
resultado a $fecha con el operador =
$fecha = `date`;
# estructura de control if-else para ejecutar partes del programa de forma
condicional
# la condicin es que dentro del contenido de $fecha encontremos la subcadena
# "mar" seguida de uno ms espacios \s+ y un dgito \d
# esto es una expresin regular, fcilmente identificable por / /
if($fecha =~ /mar\s+\d/)
{
# llamada a la funcin print con una cadena de caracteres como parmetro
# normalmente las funciones reciben parmetros separados por comas entre
parntesis
print("Estamos en Marzo, el mes de mi cumpleaos\n");
}
else
{
# pero perl no siempre requiere los parntesis en las llamadas a
funciones
print "Todava queda para mi cumpleaos\n";
}

Enunciados
Enunciados de entrada y salida
Escribir en la salida estndar (pantalla) ya sabemos hacerlo, ahora nos interesa
aprender como leer cosas desde el teclado y como escribir y leer en ficheros.
Para leer de teclado se utiliza <STDIN>, que es un manejador de ficheros (Filehandle),
que por costumbre se ponen en maysculas. (Tambin existe <STDOUT> y <STDERR>
para la salida estndar y la salida de errores respectivamente).
Lectura de STDIN:
#!/usr/bin/perl
print "Hola. Cmo te llamas?\n";
$nombre=<STDIN>;
#le quitamos el caracter de retorno de carro
chop($nombre);
if ($nombre eq "")
{
print 'Qu pasa? eres mudit@?'."\n";
}

else
{
print "Hola $nombre, yo me llamo Flanagan. Estudias o trabajas?\n";
}

Para escribir en la salida estndar se utiliza print como hemos visto, pero si queremos
escribir en la salida de errores sera poniendo despus de print el manejador de fichero
de donde queremos escribir.
Lectura de STDIN, escritura en STDERR y STDOUT:
#!/usr/bin/perl
print "Hola. Cmo te llamas?\n";
$nombre=<STDIN>;
#le quitamos el caracter de retorno de carro
chop($nombre);
if ($nombre eq "")
{
print STDERR 'Qu pasa? eres mudit@?'."\n";
}
else
{
print STDOUT "Hola $nombre, yo me llamo Flanagan. trabajas o
vives?\n";}

Ya sabemos leer/escribir en un manejador de fichero (vale, que hasta ahora slo hemos
usado pantalla y teclado). Ahora vamos a ver como se hara con ficheros. Para trabajar
con un fichero hay que abrirlo, escribir/leer de l y cerrarlo. Para abrir un fichero se
utiliza la funcin open y para cerrarlo con close. El formato para abrir un fichero es
open (Manejador_de_fichero, Modo_y_NombreFichero). Lo modos de abrir un fichero se
muestran en la siguiente tabla.
Modo

Significado

"Nombre"

Abre Nombre para leer.

"<Nombre"

Abre Nombre para leer. Igual que el anterior

">Nombre"

Abre Nombre para escribir. Si no existe lo crea

">>Nombre"

Abre Nombre para aadir al final

"+>Nombre"

Abre Nombre para lectura/escritura.

Enunciados condicionales
Perl mantiene todas las estructuras de control de flujo que pueda tener cualquier otro
lenguaje, pero con la peculiaridad de que un bloque siempre debe ir entre llaves ({
}), aun cuando el bloque contenga un nica sentencia.
Un resumen general de las estructuras de control de flujo es:

if (EXPR) BLOQUE

while (EXPR) BLOQUE

if (EXPR) BLOQUE else


BLOQUE

SENTENCIA while (EXPR);

until (EXPR) BLOQUE

if (EXPR) BLOQUE elsif


(EXPR) BLOQUE else BLOQUE

SENTENCIA until (EXPR);

SENTENCIA if (EXPR);

do BLOQUE while (EXPR);

unless (EXPR) BLOQUE

do BLOQUE until (EXPR);

unless (EXPR) BLOQUE else


BLOQUE

for (EXPR;EXPR;EXPR) BLOQUE

unless (EXPR) BLOQUE elsif


(EXPR) BLOQUE else BLOQUE

switch(EXPR){case n{BLOQUE}

SENTENCIA unless (EXPR)

Donde EXPR es una expresin, BLOQUE es una sentencia o conjunto de estas


encerrado entre llaves y SENTENCIA es una sola sentencia
Enunciados de iteracin
For
Perl soporta el ciclo for. La sintaxis es la siguiente:
for (my $i=0; $i < $array_size; $i++ ){ # $i es el contador de control
$array[$i] = El valor es $i; #imprime el valor del contador por consola.}

While
my $i = 0;
my $maximo = 10; # por decir un maximo cualquiera.
while ( $i < $maximo){
$array[$i] = El valor es $i; #imprime el valor del contador por consola.
$i++;
# o --> $i=$i + 1;}

Foreach
Ejemplo de un foreach sobre un array:
foreach my $val (@array) { print "Este es el valor del array: $val"\n";}
Ejemplo de un foreach sobre un hash:
foreach my $val (keys %miHash){ # $val contiene el nombre del key del valor, no
el valor real.
my $aux = $miHash{$val};
print El valor de aux es $aux.\n;}

Subprogramas y gestin de almacenamiento


Funciones
En Perl se puede definir una funcin es cualquier parte, aunque lo comn es hacerlo al
principio del fichero. La funcin solo se ejecuta cuando se llama expresamente. La
funcin se define con la palabra sub.
Ejemplo:
sub funcion_1 {
$a = shift;
# shift asume el array @_
# @_ contiene los argumentos

# que se dan al llamar la funcin


$y = 2 * $a;
return($y);
# devuelve ese valor al que llam la funcin}

La funcin se llama simplemente escribiendo su nombre:


$x = 5;
$z = funcion_1($x);
# pasa $x como nico elemento de @_
# por tanto, $z queda con 10.

Una funcin que no tiene un return explcito retorna, no obstante, el valor de la ltima
expresin que se ha ejecutado; por tanto, la funcin funcion_1 anterior no necesita la
sentencia return.
Cuanto se llama a una funcin, no es obligatorio recoger el valor devuelto por sta.
Los parmetros de una funcin se pasan siempre por referencia; por consiguiente, si se
modifica $_[1] se est cambiando el segundo parmetro usado en la expresin que
llama a la funcin. Puede ser peligroso si no se maneja con cautela.
sub funcion_2 { $_[0]=7;
# Modifica el primer parmetro en el llamador}
$a = 5;
funcion_2($a);
print $a;
# Imprime: 7

Bloques
Un bloque consiste en un conjunto de expresiones dentro de llaves {}. Las funciones
son bloques, pero tambin puede haber bloques sin la palabra sub. Una de las razones
para tener bloques es la de disponer de variables locales que desaparecen cuando el
bloque termina.
$a=5;
{ $b=7;

# variable global que nunca muere


# variable global que nunca muere
my($c)= 3;
# "my" crea una variable local que
# solo existe en este bloque
funcion_3();
# $c no es visible dentro de funcion_3}
print $a;
# imprime: 5
print $b;
# imprime: 7
print $c;
# No imprime nada: $c no existe
sub funcion_3 {
print $a;
# imprime: 5
print $b;
# imprime: 7
print $c;
# No imprime nada: $c no existe }

Cuando definimos una variable por regla general tiene un mbito global al script, a no
ser que utilicemos las funciones my o local para limitar su alcance. Su significado es
muy parecido, con algn matiz:


La funcin my es la ms utilizada para definir variables locales. Las variables
declaradas con my son visibles slo dentro del bloque, y no desde fuera. Tampoco son
visibles a las funciones que se llaman desde el bloque.

La funcin local se usa para definir otras variables locales, pero a diferencia de
las anteriores, si son visibles a las funciones que se llamen desde el bloque.
$a = 5;
# variable global que nunca muere
{local($a)=3;
# El valor 5 se guarda temporalmente
# para reponerlo cuando el bloque termine
local($b)=7;
# Como $b no existia, al salir del bloque
# no va a existir
funcion_4();
# En funcion_4() se puede usar $a y $b}
print $a;
# imprime: 5
print $b;
# No imprime nada: $b no existe
sub funcion_4 {
print $a;
# Imprime: 3
print $b;
# Imprime: 7 }

Ejemplos prcticos
Perl
#!/usr/bin/env perl
do{
print "Lista de Artistas\n\n
1.Foo Fighters\n
2.Nirvana\n
3.Coheed and Cambria\n
4.Salir\n\n
Seleccionar una de las opciones anteriores\n";
$opt=<STDIN>;
chop($opt);
use warnings;
use feature ":5.12";
my $file1 = "foo.txt\n\n";
my $file2 = "nirvana.txt\n\n";
my $file3 = "coheed.txt\n\n";
given($opt) {
when(1)
{ unless(open FILE, $file1) {die "nUnable to open $file1\n\n";}while(my $line =
<FILE>) {print $line;}close FILE;print "\n \n\n";system("pause");system("cls");}
when(2)
{ unless(open FILE, $file2) {die "nUnable to open $file2\n\n";}while(my $line =
<FILE>) {print $line;}close FILE;print "\n \n\n";system("pause");system("cls");}
when(3)
{unless(open FILE, $file3) {die "nUnable to open $file3\n\n";}while(my $line =
<FILE>) {print $line;}close FILE;print "\n \n\n";system("pause");system("cls");}
when(4)
{system("cls"); print "\n\n\n\n\n\n\n\nBuuuuuueeeeeeennnooo Se Termino
xD\n\n\n\n\n\n\n\n";}
default
{ system("cls");print " \n\n\n\n\n\n\n\nPorfavor elige ua opcion valida UmU
\n\n\n\n\n\n\n\n";system("pause");system("cls");}
}
}while($opt!=4);

Visual Basic
Public Class Form1
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Label1.Click
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText("C:\Users\Ian\Documents\Perl\foo.txt")
MsgBox(fileReader)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText("C:\Users\Ian\Documents\Perl\nirvana.txt")
MsgBox(fileReader)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button3.Click
Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText("C:\Users\Ian\Documents\Perl\coheed.txt")
MsgBox(fileReader)
End Sub
End Class

Cuadro de Comparacin y Evaluacin de los Lenguajes de


Programacin
Criterio

1. Expresividad

Razones ( al menos deben ser 5 )

Calificacin

a) Reflejar lo deseado(Utilizar un algoritmo como base)

Perl
1. Visual Basic: Lenguaje en donde la manera de plasmar
un algoritmo en cdigo es bastante parecida a la del
lenguaje de programacin Pascal debido a que muchos
de los mdulos que utiliza inician y terminan con
palabras reservadas; no utiliza el ; para terminar las
sentencias y se utiliza el : para separar ecuaciones en
una sola lnea.

4,75

2. Perl: Este lenguaje plasmar un algoritmo es un poco


ms complicada debido al uso de los sigils, pero es
menos restrictivo que otros lenguajes debido a que no
hay tantos tipos de variables y que la principal que son
los escalares no necesitan ser definidos.

b) Uso de programacin estructurada(ciclos y


condicionales):

i.

Visual Basic: Sentencias de iteracin: utiliza


instrucciones como: While...End While, Do...Loop,
For...Next, For Each...Next.
Las sentencias de seleccin: Utiliza Instrucciones
como: If...Then...Else, Select...Case, Try...Catch...Finally.
Ejemplo Iteracin:
While index <= 10
Debug.Write(index.ToString & " ")
index += 1
End While
Ejemplo seleccin:
If count = 0 Then
message = "There are no items."
ElseIf count = 1 Then
message = "There is 1 item."
Else
message = "There are " & count & " items."
End If

ii.

Perl: Sentencias de iteracin: utiliza instrucciones


como: For, While, Foreach, Dowhile, Dountil, while,
until.
Las sentencias de seleccin: Utiliza Instrucciones
como: If...Else, ifelsifelse, unless, unlesselsif
else, switch

Visual
Basic
4,90

Ejemplo Iteracin:
while (EXPR) BLOQUE
do BLOQUE while (EXPR);
Ejemplo seleccin:
if (EXPR) BLOQUE else BLOQUE
c) Expresiones Matemticas:
i.
ii.
2. Bien-definido

Visual Basic: X = E+Y


Perl: $Y = 2 * $y;

a) Sintaxis(General programas):

Perl
i.

Visual Basic:

Module mainModule
Sub Main()
MsgBox("Hello, World!") ' Display message on computer screen.
End Sub
End Module

4,70

Visual
Basic
4,85

ii.

Perl:
#!/usr/bin/perl
print "Hola. Cmo te llamas?\n";

b) Sintaxis(en Funciones)

i.

Visual Basic:

Public Function calcSum(ByVal ParamArray args() As Double) As Double


calcSum = 0
If args.Length <= 0 Then Exit Function
For i As Integer = 0 To UBound(args, 1)
calcSum += args(i)
Next i
End Function

ii.

Perl:
sub funcion_1 {

$a = shift;
$y = 2 * $a;
return($y); }

3.
Tipos
estructuras
datos

y
de

a) Datos primitivos:

Perl
i.

4,65

Visual Basic:

Los tipos de datos


integrales con
signo

Los tipos datos


integrales sin
signo

Tipos numricos
no integrales

SByte

Byte

Decimal

Short

UShort

Single

Integer

UInteger

Double

Long

ULong

ii.

Visual
Basic
4,70

Perl: escalar.

Datos Estructurados:

4. Modularidad

i.

Visual Basic: Listas, colas pilas, arboles.

ii.

Perl: Hash (Listas). Las listas en perl no son


estructuras de datos, son posiciones en el cdigo,
determinadas por el contexto que las rodea.
Bsicamente las listas son estructuras que Perl utiliza
para mover datos.

a) Uso de funciones y procedimientos

Perl
i.

Visual Basic: Visual Basic utiliza varios tipos de


procedimientos:

4,75

1. Subprocedimientos.
2. Los procedimientos de control de eventos son
procedimientos Sub que se ejecutan en respuesta a
un evento provocado por una accin del usuario o
por un suceso en un programa.
3. Procedimientos de propiedad: get y set.
4. Procedimientos de operador.
5. Procedimientos genricos: definen uno o
varios parmetros de tipo adems de sus parmetros
normales, de forma que el cdigo de llamada puede
pasar tipos de datos especficos cada vez que realiza
una llamada.

ii.

Visual Basic:

Bloques
Un bloque consiste en un conjunto de expresiones
dentro de llaves {}. Las funciones son bloques, pero
tambin puede haber bloques sin la palabra sub. Una de
las razones para tener bloques es la de disponer de
variables locales que desaparecen cuando el bloque
termina.
$a=5;
{ $b=7; my($c)= 3;
funcion_3();
# "my" crea una variable local que
# solo existe en este bloque }
print $a; print $b; print $c;

b) Tipos de datos definidos por el usuario

iii.

Visual Basic:
[Public | Protected | Friend | Protected Friend | Private]
Structure structname
{Dim | Public | Friend | Private} member1 As datatype1
' ...
{Dim | Public | Friend | Private} memberN As
datatypeN
End Structure

iv.

Perl:

Visual
Basic
4,85

use Class::Struct;
struct( Rusage => {ru_utime => 'Timeval', # user time used
ru_stime => 'Timeval', # system time used});
a) Manejo de archivos simples:
5. Facilidades de
e/s

Perl
i.

Visual Basic: Soporta acceso directo de los archivos.

ii.

Perl: Maneja todo tipo de acceso para archivos.

b) Conectividad de con Bases de Datos:

4,95

Visual
Basic
4,90

6.
Transportabilidad

i.

Visual Basic: utiliza Oracle, MySQL, SQL, Access,


Odbc, Genrico.

ii.

Perl: Gracias a la implementacin de mdulos se


puede conectar a todas las bases de datos existentes
en el mercado.

a) Dependencia de S.O
Perl se pueden utilizar en:

Perl
4,95

1. Windows
2. Linux (u otros UNIX)
3. Mac (con el compilador Xcode)

Visual
Basic
4,00

b) Visual Basic solo se puede usar en Windows.

7. Eficiencia

a) El tamao del ejecutable y el tiempo de ejecucin dependen


del compilador
b) Visual Basic gracias a su editor de cdigo es mucho ms
rpido para escribir las instrucciones y le toma menos
esfuerzo al programador debido a que muchas veces
simplemente solo se utiliza el mouse para seleccionar los
diferentes objetos y el editor va creando el cdigo.

Perl
4,85

Language
Java
Perl
C/C++
C#
Assembler
Fortran
Ada
Basic (e.g. Visual Basic)
You name it
Other languages

Time taken to run a simple empty loop test for 10 000 billion iterations
Under one second
approx. 1 month
approx. 1 month
approx. 1 month
approx. 1 month
approx. 1 month
approx. 1 month
approx. 1 month
approx. 1 month or greater
approx. 1 month or greater

Visual
Basic
4,80

http://www.javaperformancetuning.com/news/qotm028.shtml

c) En Un procesador x86 quad core

http://benchmarksgame.alioth.debian.org/u32q/benchmark.php?test=all&lang=fpascal&id=1&data=u32q

8. Pedagoga

a) Facilidad para aprender y ensear

Perl
4,80

i.

Visual Basic: Lenguaje fcil de entender y ensear


debido a su sintaxis.

ii.

Visual Basic lenguaje utilizado para ensear a las


personas que estn empezando a estudiar
programacin gracias a su gran bibliografa y la
facilidad para entender el cdigo.

iii.

Visual Basic gracias a su editor de cdigo permite


un entendimiento ms rpido y fcil.

iv.

Perl: Su sintaxis y la estructura de sus programas


hacen difcil el aprendizaje.

Visual
Basic
4,90

b) Preferencia por usuarios:

Rango de aplicaciones de programacin:


9. Generalidad

Visual Basic: Lenguaje de Propsito General

Perl
4,85

Perl es un lenguaje de programacin de propsito general


originalmente desarrollado para la manipulacin de texto y
actualmente para un amplio rango de tareas incluyendo
administracin de sistemas, desarrollo web, programacin de
redes, desarrollo de GUI y muchas ms.

Visual
Basic
4,75

Promedio
Visual Basic
Perl
4,73
4,81

Evaluacin
Despus de aplicar todos los criterios a los lenguajes de programacin Perl,
Visual Basic llegamos a la conclusin que Perl con una calificacin de 4,81 es
mejor lenguaje que Visual Basic con una calificacin de 4,73. Adems
durante la investigacin de la informacin para poder evaluar estos lenguajes
hemos aprendido muchas cosas nuevas sobre estos lenguajes de
programacin

Bibliografa
http://www.ccg.unam.mx/~contrera/bioinfoPerl/node103.html
http://es.wikipedia.org/wiki/Perl
http://flanagan.ugr.es/perl/datos.htm

http://informatica.blogs.uoc.edu/2011/11/23/%C2%BFel-lenguaje-de-programacionmas-expresivo/
http://flanagan.ugr.es/perl/control.htm
http://www.tizag.com/perlT/perlif.php
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Perl/Estructuras_de_control
http://blog.openalfa.com/como-usar-variables-de-tipo-hash-en-perl
http://www.osmosislatina.com/lenguajes/perl/basico.htm
http://www.perlmonks.org/bare/?node_id=135509
http://perlenespanol.com/tutoriales/bases_de_datos/como_conectarte_a_tu_database.h
tml
http://jquery-manual.blogspot.com/2013/09/variables-y-constantes-en-perl.html
http://www2.iib.uam.es/bioinfo/curso/perl/tutoriales/cicei/cap3.htm
http://www.javaperformancetuning.com/news/qotm028.shtml
http://www.perlmonks.org/?node_id=227771
http://sandbox.mc.edu/~bennet/perl/leccode/
http://friedo.com/blog/2013/07/arrays-vs-lists-in-perl
http://www6.uniovi.es/perl/tutor/cap01.htm

You might also like