0% encontró este documento útil (0 votos)
66 vistas

Tutorial Perl

Este documento presenta un tutorial sobre programación en Perl para Unix desarrollado por la Universidad de Guadalajara. Explica que el tutorial ofrece el primer material en español sobre Perl y está dirigido a lectores interesados en aprender sobre este popular lenguaje de programación. También invita a los lectores a compartir sus experiencias de programación en Perl a través de un boletín en línea.

Cargado por

Emmanuel García
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
66 vistas

Tutorial Perl

Este documento presenta un tutorial sobre programación en Perl para Unix desarrollado por la Universidad de Guadalajara. Explica que el tutorial ofrece el primer material en español sobre Perl y está dirigido a lectores interesados en aprender sobre este popular lenguaje de programación. También invita a los lectores a compartir sus experiencias de programación en Perl a través de un boletín en línea.

Cargado por

Emmanuel García
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 75

Universidad de Guadalajara

La programacin de Perl para Unix

Guadalajara, Jalisco Mxico Octubre 1997

Autor: Candidato a M. en C. Mnico Briseo correo electrnico: [email protected] Diseo grfico: Rubn Gmez.

Derechos Reservados 1997

computo academico

derechos reservados 1997

pag 1

Universidad de Guadalajara

Presentacin
Desde 1996, La Coordinacin General de Sistemas de Informacin, de la Universidad de Guadalajara, se ha dado a la tarea de ofrecer material educativo a travs de Internet. En la pgina de Cultura y Entretenimiento, tiene una seccin de tutoriales; enfocado hacia los lenguajes de programacin. Aqu se encuentra el primer material en espaol del lenguaje de programacin Perl. Durante estos meses de estar navegando en Internet, diferentes personas de diferentes lugares del mundo nos han solicitado el material de programacin en un formato distinto al de HTML. Siendo esta la primera propuesta para leerse fuera de lnea que ofrezca al amable lector una fuente agradable y til de ste popular lenguaje de programacin para Internet y pginas Web.

Adems invitamos a todos los interesados a que compartan sus experiencias de programacin en Perl. Para ello, se tiene preparado un boletn de noticias a travs del Web; en el cual se puedan intercambiar todo tipo de mensajes relacionado con este lenguaje de programacin. El boletn de noticias lo podrs encontrar en la siguiente direccin Internet: http://www.cultura.udg.mx/tutoriales/perl/perl.html

Para no olvidar
EL presente material es propiedad del autor. Se permite el uso del contenido del mismo para fines no lucrativos. Siempre y cuando se mencione que fue desarrollado en la Universidad de Gudalajara. Mnico Briseo [email protected] Guadalajara, Jalisco Octubre de 1997

coordinacin general de sistemas de informacin

pag 2

Universidad de Guadalajara

Captulo 1 Las caractersticas ms relevantes en perl

computo academico

derechos reservados 1997

pag 3

Universidad de Guadalajara

Las caractersticas ms relevantes de Perl

Perl (Practical Extraction and Report Language, por sus siglas en ingls), es un lenguaje intrprete. Tom Christiansen y Nathan Tarkington (1997) establecen que este lenguaje es de alto nivel. Considerado como un lenguaje escrito de forma eclctica por Larry Wall. Perl se deriva del lenguaje C de programacin, as como el sed, awk y el shell de Unix, adems de otras herramientas y lenguajes. Las facilidades para la manipulacin de procesos, archivos, y texto hace que este lenguaje este particularmente bien situado en las tareas donde involucran el rpido desarrollo de programas, desarrollo de utileras para el sistema operativo, herramientas de software, tareas relacionadas con la administracin de sistemas, manejo de bases de datos, programacin de grficas, redes, y del World Wide Web. Estas fortalezas hacen que Perl sea un lenguaje de programacin muy popular para los administradores de sistemas UNIX y los creadores de CGI scripts. Aunque lo anterior, no es una limitante para que cualquier persona se involucre y use este lenguaje de programacin.

Sin embargo, existen actividades en las cuales Perl, no es la solucin ms adecuada, por ejemplo: sistemas de tiempo real, desarrollo de bajo nivel del sistema operativo que trabajen con los dispositivos del sistema de cmputo, aplicaciones de memoria compartida de procesos o aplicaciones extremadamente largas.

La sintaxis del lenguaje perl

Al inicio de un programa de Perl, en Unix, debe iniciar con: #!/usr/local/bin/perl o donde se encuentren instalado. Los programas de Perl, por convencin, finalizan con la

coordinacin general de sistemas de informacin

pag 4

Universidad de Guadalajara

extensin .pl Cada lnea de comando debe finalizar con punto y coma (;) Cada lnea de comentarios, sobre las lneas de programacin deben iniciar con el smbolo: # Los bloques de cdigo de Perl, tales como los ciclos de control y las condiciones siempre deben encerrarse entre corchetes ({..}).

Tipos de datos en Perl

escalares arreglos de escalares arreglos asociativos, conocidos tambin como tablas hash Por el momento, solo se hablar de las variables escalares; dejando para los siguientes temas el manejo de las listas o arreglos de escalares.

Escalar
El dato del tipo escalar es el dato bsico de Perl. Un escalar puede ser un entero, punto flotante, o una cadena. Las variables escalares siempre tiene que iniciar con el smbolo prefijo $. Las variables en Perl no tiene que ser declaradas al inicio del programa, como ocurre con el lenguaje C. Adems dichas variables se teclean y se evalan en base al contexto del programa.

Por ejemplo:
$x=4; # un entero $y=11; # una cadena $z= 4.5; #de punto flotante;

computo academico

derechos reservados 1997

pag 5

Universidad de Guadalajara

Creando programas en Perl

Para crear programas en Perl , debemos considerar el uso de comandos o instrucciones que le dicen al lenguaje que hacer. La instruccin print enva a un dispositivo de salida lo que viene a continuacin. por ejemplo: print hola; muestra en pantalla: hola $var=Pedro; print $ var; muestra en pantalla: Pedro

Ejercicio 1
Instrucciones:
a) teclear en un editor de texto, fielmente el cdigo que aparece a continuacin. Programa 1.1 usr/local/bin/perl #documentando el programa #nombre del programa:uno.pl #la instruccion print muestra en un dispositivo de salida lo que #existe dentro de las comillas print Aprendiendo a programa en Perl;

b) grabar el cdigo con el nombre uno.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

coordinacin general de sistemas de informacin

pag 6

Universidad de Guadalajara

Cuestionario
a) Cul es la salida del programa? b) Cul sera el resultado si se omite la primera lnea del programa? c) Qu regla debe seguirse para crear comentarios dentro de un programa en Perl? d) Es necesario al extensin .pl en el programa a ejecutar? e) Cul sera el resultado, si se omite el punto y coma (;) de la lnea print?

Ejercicio 2
El uso de variables En este programa se implementar el uso de variables.

Instrucciones:
a) teclear en un editor de texto, fielmente el cdigo que aparece a continuacin Programa 1.2 #!/usr/local/bin/perl #nombre del programa: dos.pl #Asignacion de un valor de cadena a una variable $nombre=Pablo; #mostrar en pantalla el contenido de la variable nombre print "Nombre del alumno:$ nombre";

b) grabar el cdigo con el nombre dos.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

computo academico

derechos reservados 1997

pag 7

Universidad de Guadalajara

Cuestionario
a) Cual sera el resultado del programa, si a la variable nombre se le quita el smbolo $ ? b) Cual sera el resultado del programa, si colocamos comillas la palabra Pablo?

Ejercicio 3
Instrucciones:
a) Crear un programa que muestre en pantalla el siguiente

mensaje:
Las_variables_en_Perl_se_inicializan_con_$ b) El archivo se debe grabar como tres.pl c) Cambiarle los derechos al programa, para hacerlo ejecutable. d) Ejecutar el programa. e) Qu cambios deberan hacerse al programa anterior para que muestre el siguiente mensaje: Las variables en Perl se inicializan con $

Ejercicio 4
Instrucciones:
Crear un programa que asigne a una variable el valor 11. A otra el valor 2.5. La suma de ambas debe ser almacenada en una tercera. El resultado debe mostrarse en pantalla.

coordinacin general de sistemas de informacin

pag 8

Universidad de Guadalajara

Obteniendo informacin desde un dispositivo de entrada La instruccin <STDIN> del lenguaje de programacin Perl, permite obtener informacin desde un dispostivo de entrada, para nuestro caso ser el teclado de la computadora.

Ejercicio 5
Instrucciones:
a) teclear en un editor de texto, fielmente el cdigo que aparece a continuacin: Programa 1.5 #!/usr/local/bin/perl #programa:cinco.pl #obteniendo informacion con la instruccion <STDIN> $valor=<STDIN>; #imprime el contenido de la variable valor print $ valor;

b) grabar el cdigo con el nombre cinco.pl c) salirse del editor de texto d) cambiar derechos al programa cinco.pl e) ejecutar el programa f) Teclea en el programa: capturando informacion[enter] La instruccin <STDIN>, de Perl, le indica que se obtiene informacin desde un dispositivo de entrada. La longitud de la informacin almacena se delimita por el smbolo enter que representa una nueva lnea. Su contenido se almacena en una variable, $ valor. Dicho contenido se muestra en pantalla.

computo academico

derechos reservados 1997

pag 9

Universidad de Guadalajara

Cuestionario
a) Qu cambios tendran que hacerse al programa cinco.pl, para que se capturen dos lneas de informacin?

Ejercicio 6
Instrucciones:
a) teclear fielmente, el cdigo que se muestra a continuacin: E Programa 1.6

#!/usr/local/ perl #programa: seis.pl print "Teclea un valor numerico entero y positivo "; $var1 = <STDIN>; chop $ var1; print "Teclea otro valor numerico entero y positivo "; $var2 = <STDIN>; chop $ var2; $var3=$ var1+$ var2; print "El resultado de la suma de $ var1 y $ var2 es: $ var3 \n" ;

b) grabar el cdigo con el nombre seis.pl c) salirse del editor de texto d) cambiar derechos al programa seis.pl e) ejecutar el programa

La funcin chop, quita el ltimo carcter de la lnea que se introdujo va teclado. Que regulamente es el smbolo de retorno de carro, al momento de teclear [enter].

coordinacin general de sistemas de informacin

pag 10

Universidad de Guadalajara

La lnea $ var3=$ var1+$ var2; es una expresin en Perl, ya que contiene ms de un operador. Pueden exisitir expresiones de mayor longitud. Pero, que dependen de la funcionalidad del programa mismo.

Cuestionario
a) Qu pasara si se quita el chop en ambas lneas del programa?

Ejercicio 7
Instrucciones:
Crear un programa que capture y muestre en pantalla el siguiente mensaje:

Los programas secuenciales son aquellos ejecutan instrucciones sin considerar ninguna estructura de seleccin o repetitiva.

computo academico

derechos reservados 1997

pag 11

Universidad de Guadalajara

solucin de Problemas del capitulo uno

Programa 3
#!/usr/local/bin/perl #nombre del programa: tres.pl #manejo de variables $var1=Las_variables_en_Perl_se_inicializan_con_$ ; #mostrar la variable print "$ var1$ \n";

Programa 4
#!/usr/local/bin/perl #nombre del programa: cuatro.pl #suma de variables $numero1=11; $numero2=2.5; $suma=$ numero1+$ numero2; #mostrar en pantalla la suma de las variables print "La suma es: $ suma\n";

Programa 7
#!/usr/local/bin/perl #programa: seis.pl print "Teclea el primer parrafo: "; $var1 = <STDIN>; #chop $ var1; print "Teclea el segundo parrafo "; $var2 = <STDIN>; #chop $ var2; print "teclea el tercer parrafo "; $var3=<STDIN>; chop $ var3; print "El resultado de la captura es:\n $ var1\n $ var2\n $var3\n";

coordinacin general de sistemas de informacin

pag 12

Universidad de Guadalajara

Captulo 2
Las estructuras selectivas en perl

computo academico

derechos reservados 1997

pag 13

Universidad de Guadalajara

Las estructuras selectivas


Hasta ahora, se han desarrollado programas con una estructura lineal, es decir que una instruccin sigue a la otra en secuencia. Sin embargo, esta es muy rgida para crear programas ms complejos, donde se involucren la toma de decisin en funcin del resultado obtenido. Para ello se pueden emplear las estructuras selectivas, las cuales evalan una condicin y en funcin del resultado de la misma se ejecuta una instruccin u otra. El ejemplo de una estructura selectiva es la definida simplemente como si, entonces. La forma ms fcil de representarla es:

Si se cumple la condicin { secuencia de instrucciones } Que en la sintaxis del lenguaje Perl, es: if (condicin) { secuencia de procesos }

Ejercicio 1:
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin Programa 2.1 #!/usr/local/bin/perl #programa: estruc1.pl $var1 = <STDIN>; chop($ var1); if ($ var1) { print ("El valor es distinto de cero"); } b) grabar el cdigo con el nombre estruc1.pl c) salirse del editor de texto

coordinacin general de sistemas de informacin

pag 14

Universidad de Guadalajara

d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Qu hace el programa estruc1.pl ?

1 El programa espera un valor de entrada que se almacena en la variable $ var1 2 Con la funcin chop se quita el ltimo caracter tecleado. 3 Si el valor de la variable $ var1 es diferente de cero ejecuta lo que esta encerrado entre {}; en este caso, presenta un mensaje en pantalla. 4 Si el contenido de la variable $ var1 es igual a cero, no ejecuta lo que se encuentra encuentra encerrado entre {} y concluye el programa.

Para una mejor implementacin de las estructuras selectivas, es muy importante usar los operadores de comparacin, facilitando la toma de decisiones en funcin de una condicin. En el lenguaje Perl, se tiene dos tipos de operadores de comparacin, el primero para nmeros y el segundo para cadenas de caracteres.

Tabla A
Operadores de comparacin de valores numricos Operador < > == <= >= != Descripcin menor que mayor que igual que menor o igual que mayor o igual que no igual a

Tabla B
operadores de comparacin de cadena de caracteres

computo academico

derechos reservados 1997

pag 15

Universidad de Guadalajara

Operador lt gt eq le ge ne

Descripcin menor que mayor que igual a menor o igual que Mayor o igual que No igual a

Veamos con los siguientes ejemplos su aplicacin dentro de las estructuras selectivas.

Ejercicio 2
Instrucciones
a) Teclear el cdigo que se muestra a continuacin: Programa 2.2 #!/usr/local/bin/perl #programa: estruc2.pl print "Tecla un valor entero "; $var1 = <STDIN>; chop($ var1); print "Teclea un segundo valor"; $var2=<STDIN>; chop($ var2); if ($ var1==$ var2) { print ("Los valores son iguales\n"); }

b) grabar el cdigo con el nombre estruc2.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable e) ejecutar el programa

coordinacin general de sistemas de informacin

pag 16

Universidad de Guadalajara

Variante de estructura selectival

Se capturan dos valores numricos y se comparan entre s, utilizando el operador == Si son iguales se ejecuta el contenido entre {}. De lo contrario no entra y concluye.

Cuestionario
Qu pasara si en vez de utilizar el operador ==, se emplea el =?

Existe una variante en esta estructura selectiva que se muestra a continuacin Si se cumple la condicin { secuencia de procesos } de lo contrario { secuencia de procesos } Que se representa con la sintaxis del lenguaje Perl, de la siguiente manera: If (condicin) { secuencia de procesos } else { secuencia de procesos }

Ejercicio 3
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin:

computo academico

derechos reservados 1997

pag 17

Universidad de Guadalajara

Programa 2.3 #!/usr/local/bin/perl #programa: estruc3.pl print "Tecla un valor entero "; $var1 = <STDIN>; chop($ var1); print "Teclea un segundo valor "; $var2=<STDIN>; chop($ var2); if ($ var1==$ var2) { print ("Los valores son iguales\n"); } else { print "Son diferentes\n";

b) grabar el cdigo con el nombre estruc3.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable e) ejecutar el programa

Actividad
Describe con tus propias palabras el funcionamiento del programa estruc3.pl

Ejercicio 4
Instrucciones:
a) Crear un programa que calcule la media aritmtica de 5 nmeros enteros y positivos. b) grabarlo con el nombre estruc4.pl

Ejercicio 5
Instrucciones:
pag 18

coordinacin general de sistemas de informacin

Universidad de Guadalajara

a)Crear un programa para sumar 5 nmeros positivos introducidos por teclado. b) grabarlo con el nombre estruc5.pl

Existe otra variante a la estructura de seleccin, donde es posible crear diferentes opciones de ejecucin, en funcin de la condicin. Veamos

Si se cumple la condicin { secuencia de procesos } Si se cumple la condicin { secuencia de procesos } . . de lo contrario { secuencia de procesos } De acuerdo a la sintaxis en Perl, tenemos: if (condicion) { secuencia de procesos } elsif { secuencia de procesos } elsif { secuencia de procesos } . . . else { secuencia procesos }
computo academico derechos reservados 1997 pag 19

Universidad de Guadalajara

Ejercicio 6
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin: Programa 2.6 #!/usr/local/bin/perl #programa: estruc6.pl print "Tecla un valor entero "; $var1 = <STDIN>; chop($ var1); print "Teclea un segundo valor "; $var2=<STDIN>; chop($ var2); if ($ var1==$ var2) { print ("Los valores son iguales\n"); } elsif ($ var1==$ var2+1) { print ("El primer numero es mayor\n"); } elsif ($ var1+1==$ var2) { print ("El segundo es mayor\n"); } else { print ("los dos numeros no son iguales\n"); } b) grabar el cdigo con el nombre estruc6.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable e) ejecutar el programa

Ejercicio 7
Instrucciones:

coordinacin general de sistemas de informacin

pag 20

Universidad de Guadalajara

a) teclear el cdigo del siguiente programa: Programa 2.7 #!/usr/local/bin//perl #programa: estruc7.pl $uno=lunes; $dos=martes; $tres=miercoles; $cuatro=jueves; $cinco=viernes; $seis=sabado; $siete=domingo; print " Teclea el dia "; $dia=<STDIN>; chop($ dia); if ($ dia eq $ uno) { print "$ uno\n"; } elsif ($ dia eq $ dos) { print "$ dos\n"; } elsif ($ dia eq $ tres) { print "$ tres\n"; } elsif ($ dia eq $ cuatro) { print "$ cuatro\n"; } elsif ($ dia eq $ cinco) { print "$ cinco\n"; } elsif ($ dia eq $ seis) { print "$ seis\n"; } elsif ($ dia eq $ siete) { print "$ siete\n"; } else { print "fin del programa\n"; } b) grabar el cdigo con el nombre estruc7.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo

computo academico

derechos reservados 1997

pag 21

Universidad de Guadalajara
ejecutable e) ejecutar el programa Qu hace el programa estruc7.pl ?

Ejercicio 8
Instrucciones:
a) Crear un programa que convierta las calificaciones alfabticas A, B, C, D y E a calificaciones numricas 10, 9, 8, 7 y 6, respectivamente. b) Grabarlo como estruc8.pl

Las estructuras repetitivas

Las computadoras estn especialmente diseadas para todas aquellas aplicaciones en las cuales una operacin o conjunto de ellas deben repetirse muchas veces. Por ejemplo la lectura de las calificaciones de varias materias de un alumno para obtener su promedio. Para implementar actividades como la anterior, los lenguajes de programacin, incluyen estructuras repetitivas, donde la repeticin de una secuencia de instrucciones se le denomina ciclo y se denomina iteracin al hecho de repetir la ejecucin de una secuencia de acciones. En le lenguaje de programacin Perl se tienen varias estructuras repetitivas, como son: While, Unless, For, Do y el Foreach. Para este captulo, se desarrollarn los cuatro primeros, dejando para el apartado de las listas y los arreglos asociativos la estructura repetitiva foreach.

la estructura WHILE

La sintaxis en lenguaje Perl es: while (expresin) {

coordinacin general de sistemas de informacin

pag 22

Universidad de Guadalajara

instrucciones
} El formato de la estructura while es muy similar a la del if, pero trabaja de manera distinta. Veamos un ejemplo:

Ejercicio 9
Instrucciones:
a) teclear el cdigo del siguiente programa: Programa 2.9 #!/usr/local/bin/perl #programa:estruc9.pl $valor=0; $contar=1; print (Esta linea se imprime antes de iniciar el ciclo while.\n); while ($ valor==0) { print (El valor de contar es , $ contar, \n); if ($ contar ==3) { $valor=1; } $contar=contar+1; } print (Fin del ciclo while.\n); b) grabar el cdigo con el nombre estruc9.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable e) ejecutar el programa

Qu hace el programa estruc9.pl? a) Inicializa las variables $ contar y $ valor con valores que sern utilizados a lo largo del programa. b) Manda un mensaje a la pantalla.

computo academico

derechos reservados 1997

pag 23

Universidad de Guadalajara

c) en la lnea While, el programa evala y dice mientras que el contenido de la variable $ valor sea igual a cero, ejecutar la secuencia de instrucciones que se encuentra dentro de los {}. d) Manda un mensaje a pantalla e) Compara el contenido de la variable $ contar con el nmero 3. Si es verdadera la condicin, ejecuta la secuencia de instrucciones que se encuentra dentro de los {}. f) Incrementa el contenido de la variable $ contar en 1. g) Va a la lnea donde est el While y repite la operacin, hasta que el contenido de la variable $ valor sea distinto de 0.

Ejercicio 10
Instrucciones:
a) teclear el cdigo del siguiente programa: Program2.10 #!/usr/local/bin/perl #programa:estruc10.pl $suma=0; $numero=2; $valor=10; while ($ numero<=$ valor) { $suma=$ suma+$ numero; $numero=$ numero+2; } print ("la suma de los numeros pares es:$ suma\n"); b) grabar el cdigo con el nombre estruc10.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable e) ejecutar el programa

Cuestionario

coordinacin general de sistemas de informacin

pag 24

Universidad de Guadalajara

Describa con sus propias palabras qu hace el programa estruc10.pl?

Ejercicio 11
Instrucciones:
Crear un programa que lea las calificaciones del grupo A, de la materia de computadoras 1 y contar el nmero de aprobados y la media aritmtica del mismo.

la estructura repetitiva Until

La estructura repetiva until, permite llevar un control parecido al de while pero, trabaja hasta que la condicin sea verdadera. La representacin del until en Perl es: until (expresin) { secuencia de instrucciones } Veamos un ejemplo

Ejercicio 12
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin: Programa 2.12 #!/usr/local/bin/perl #programa:estruc12.pl print (Cual es la suma de 17 + 26\n); $resp_correcta=43; $resp_entrada=<STDIN>; until ($ resp_entrada == $ resp_correcta) {
computo academico derechos reservados 1997 pag 25

Universidad de Guadalajara

Programa 2.12 print (no es correcta. Intenta de nuevo\n); $resp_entrada=<STDIN>; chop ($ resp_entrada); } print (Lo has logrado\n); b) grabar el cdigo con el nombre estruc12.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable e) ejecutar el programa

Cmo funciona el programa estruc12.pl? a) Muestra un mensaje en pantalla, preguntando por la suma de 17 + 26. b)El usuario teclea el valor de la suma c) La estrcutura repetitiva until compara y dice al menos que no sea verdadera , ejecuta la secuencia de instrucciones que estan dentro de {}. Espera un nuevo valor de la suma, si sigue siendo diferente, repite el ciclo. d) Si es verdadero el valor de la suma, en este caso debe ser 43. Enva un mensaje a la pantalla, diciendo: lo has logrado. Aqui podra surgir la duda, con respecto a la forma de estructurar el programa con el until. Sin embargo, funciona.

Cuestionario
Qu pasara si se modifica el operador de comparacin por el de ne ?

Ejercicio 13
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin:

coordinacin general de sistemas de informacin

pag 26

Universidad de Guadalajara

Programa 2.13 #!/usr/local/bin/perl #programa:estruc13.pl print ("Cual es el valor de N?\n"); $num=<STDIN>; chop($ num); $fac=$ num; $valor=$ fac-1; until ($ valor <= 0) { $fac=$ fac*$ valor; $valor=$ valor-1; } print ("el factorial del numero $ num es $ fac\n");

Ejercicio 14
Instrucciones:
a) Crear un programa que muestre en pantalla los nmeros del 1 hasta el 100 b) Grabarlo con el nombre: estruc14.pl

La estructura repetitiva For

En muchas ocasiones se conoce de antemamo el nmero de veces que se desea ejecutar un proceso dentro de un ciclo repetitivo. Para ello se utiliza la estructura desde o para (for en ingls). Dentro del lenguaje de programacin Perl, la representacin del for es: For (expr1;expr2;expr3) {

computo academico

derechos reservados 1997

pag 27

Universidad de Guadalajara

instrucciones;
} expr1 es el inicializador del ciclo. Es evaluado solo una vez, antes de iniciar el ciclo. expr2 es la expresin de condicin que termina el ciclo. instrucciones son el conjunto de actividades que se ejecutaran cuando se cumpla la condicin. expr3 se ejecuta una vez por iteraccin del ciclo y se ejecuta despus de la ltima instruccin de las mismas.

Ejercicio 15
Instrucciones
a) Teclear fielmente el cdigo que se muestra continuacin: Programa 2.15 #!/usr/local/bin/perl #programa: estruc17.pl for ($ count=1;$ count<=5;$ count++) { print ("$ count\n"); }

Ejercicio 16
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin Programa 2.16 #!/usr/local/bin/perl #programa:estruc16.pl print ("Cual es el valor de N?\n"); $num=<STDIN>; chop($ num); $fac=$ num; for ($ valor=1; $ valor < $ num; $ valor++) {

coordinacin general de sistemas de informacin

pag 28

Universidad de Guadalajara

Programa 2.16 $fac=$ fac*$ valor; } print ("el factorial del numero $ num es $ fac\n");

Ejercicio 17
Instrucciones:
a) Crear un programa que obtenga la suma de los nmeros pares comprendidos entre el 1 y el 100 b) Grabarlo con el nombre: estruc17.pl

Ejercicio 18
Instrucciones:
a) Crear un programa que muestre el valor mximo de una serie de 10 nmeros b) Grabarlo con el nombre: estruc18.pl

La estructura repetitiva Do

Esta estructura repetitiva evala la condicin despus de haber ejecutado por primera vez un ciclo. Mientras que el ciclo while, for lo hacen antes. La estructura del do en el lenguaje de Programacin Perl, es: do { secuencia de instrucciones } while o Until (condicin)

Veamos un ejemplo

computo academico

derechos reservados 1997

pag 29

Universidad de Guadalajara

Ejercicio 19
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin valores sucesivos de la variable contar. c) La estructura repetitiva se ejecuta hasta que el valor de la variable $ contar sea menor de 5. Concluyendo el programa.

Ejercicio 20
Actividad:
a)Utilizar la estructura do, en vez de while del ejercicio 11 b)Grabarlo como: estruc20.pl

Apndice Programas del curso del capitulo dos

Ejercicio 4
Crear un programa que calcule la media aritmtica de 5 nmeros enteros y positivos. Programa 2.4 #!/usr/local/bin/perl #programa: estruc4.pl $valor=0; print "Teclea el primer valor numerico a promediar :"; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print"Teclea el segundo valor numerico a promediar : "; $num1=<STDIN>;

coordinacin general de sistemas de informacin

pag 30

Universidad de Guadalajara

if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print "Teclea el tercer valor numerico a promediar :"; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print "Teclea el cuarto valor numerico a promediar : "; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print "Teclea el quinto valor numerico a promediar :"; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } $media=$ suma/$ valor; print "el contenido de suma es: $ suma\n"; print "el contenido de valor es: $ valor\n"; print "La media aritmetica es: $ media\n";

Ejercicio 5
Crear un programa que sume 5 nmeros positivos introducidos por teclado Programa 2.5 #!/usr/local/bin/perl #programa: estruc5.pl $valor=0; print "Teclea el primer valor numerico a sumar : "; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; }
computo academico derechos reservados 1997 pag 31

Universidad de Guadalajara

print "Teclea el segundo valor numerico a sumar : "; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print "Teclea el tercer valor numerico a sumar :"; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print "Teclea el cuarto valor numerico a sumar : "; $num1=<STDIN>; print "Teclea el cuarto valor numerico a sumar : "; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print "Teclea el quinto valor numerico a sumar :"; $num1=<STDIN>; if($ valor ne 5) { $suma=$ suma+$ num1; $valor=$ valor+1; } print "el contenido de suma es: $ suma\n"; print "el contenido de valor es: $ valor\n";

Ejercicio 8
Crear un programa que convierta las calificaciones alfabticas A, B, C, D y E a calificaciones numricas 10, 9, 8, 7 y 6, respectivamente. Programa 2.8 #!/usr/local/bin/perl #programa: estruc8.pl $letra1=A; $letra2=B; $letra3=C; $letra4=D;

coordinacin general de sistemas de informacin

pag 31

Universidad de Guadalajara

$letra5=E; print "Teclea la letra de calificacion :"; $valor=<STDIN>; chop($ valor); if($ valor eq $ letra1) { print "su calificacion es:10\n"; } elsif($ valor eq $ letra2) { print "su calificacion es: 9\n"; } elsif($ valor eq $ letra3) { print "su calificacion es: 8\n"; } elsif($ valor eq $ letra4) { print "su calificacion es: 7\n"; } elsif($ valor eq $ letra5) { print "su calificacion es: 6\n"; } else { print "No es letra para calificacion\n";

Ejercicio 11
Programa 2.11 #!/usr/local/bin/perl #programa:estruc11.pl print ("Cuantos alumnos son?\n"); $alumno=<STDIN>; chop($ alumno); while ($ valor ne $ alumno) { print ("La calificacion del alumno: "); $calif=<STDIN>; chop($ calif); $suma=$ suma+$ calif; $valor=$ valor+1; if ($ calif>=6) { $aprob=$ aprob+1; } } $media=$ suma/$ alumno;
computo academico derechos reservados 1997 pag 33

Universidad de Guadalajara

print ("La cantidad de aprobados son: $ aprob\n"); print ("la media es:$ media\n");

Ejercicio 14
Programa 2.14 #!/usr/local/bin/perl #programa:estruc14.pl $num=1; $valor=99; until ($ valor <= 0) { $num=$ num+1; $valor=$ valor-1; print ("el numero es: $ num\n"); }

Ejercicio 17
Instrucciones:
Crear un programa que obtenga la suma de los nmeros pares comprendidos entre el 1 y el 100 Programa 2.17 #!/usr/local/bin/perl #programa:estruc17.pl $suma=2; $numero=4; for ($ valor=1; $ valor < 49; $ valor++) { $suma=$ suma+$ numero; $numero=$ numero+2; } print ("la suma de los numeros pares es:$ suma\n");

Ejercicio 18
Instrucciones:
coordinacin general de sistemas de informacin pag 34

Universidad de Guadalajara
Crear un programa que muestre el valor mximo de una serie de 10 nmeros Programa 2.18 #!/usr/local/bin/perl #programa:estruc18.pl print ("Valor: "); $num=<STDIN>; chop($ num); $maximo=$ valor; $n=1; for ($ valor=1; $ valor < 10; $ valor++) { print ("Valor: "); $num=<STDIN>; chop($ num); if ($ num > $ maximo) { $maximo=$ num; } } print ("El numero mayor de la serie es:$ maximo\n");

Ejercicio 20
Programa 2.20 #!/usr/local/bin/perl #programa:estruc20.pl print ("Cuantos alumnos son?\n"); $alumno=<STDIN>; chop($ alumno); do { print ("La calificacion del alumno: "); $calif=<STDIN>; chop($ calif); $suma=$ suma+$ calif; $valor=$ valor+1; if ($ calif>=6) { $aprob=$ aprob+1; } }while ($ valor ne $ alumno); $media=$ suma/$ alumno; print ("La cantidad de aprobados son: $ aprob\n"); print ("la media es:$ media\n");

computo academico

derechos reservados 1997

pag 35

Universidad de Guadalajara

Captulo 3 Listas y Arreglos enperl

coordinacin general de sistemas de informacin

pag 36

Universidad de Guadalajara

Listas y arreglos
En muchas situaciones se necesita procesar una coleccin de valores que estn relacionados entre s por algn mtodo, por ejemplo: una lista de calificaciones, una serie de temperaturas medidas a lo largo de un mes, etc. Un arreglo es una secuencia de posiciones de la memoria principal a las que se pueden leer directamente, que contiene datos de diferente tipo y pueden ser seleccionados individualmente mediante el uso de subndices. Un arreglo es un conjunto finito y ordenado de elementos. La propiedad ordenado significa que el elemento primero, segundo, tercero, ,..n-simo de un arreglo se puede identificar. Los arreglos se conocen como matrices (en matemticas) y tablas (en clculos financieros). Las operaciones que se pueden efectuar en un arreglo son: a) Asignacin b) Lectura/escritura c) Acceso secuencial d) Actualizar (aadir, borrar, insertar) e) Ordenacin f) Bsqueda Dentro del lenguaje de programacin Perl, una lista es una secuencia de valores escalares dentro de un parntesis. Veamos un ejemplo: (4,5, Perl, 2) La lista contiene cuatro elementos cada uno de los cuales son escalares. Perl es capaz de almacenar las listas en una variable especial designada para tal propsito. Estas variables son conocidas como arreglos.

Veamos un ejemplo:
@arreglo=(4,5, Perl, 2)

computo academico

derechos reservados 1997

pag 37

Universidad de Guadalajara

Obsrvese que Perl utiliza el smbolo @ para el uso de arreglos. Los arreglos siempre inician con la posicin cero. Veamos un ejemplo para ello:

Ejercicio 1
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin: Program 3.1 #!/usr/local/bin/perl #programa:arreglo1.pl @var=(1,2,3,4,5); $var=@var[0]; print (EL elemento 0 de la lista es:$ var\n); b) grabar el cdigo con el nombre arreglo1.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Cuestionario
Cmo funciona el programa arreglo1.pl? a)Asigna al arreglo @var los valores: 1,2,3,4,5 b) Asigna el valor del elemento 0 a la variable $ var c)Muestra en pantalla el elemento 0 de la variable $ var.

Se pueden asignar valores a los elementos de un arreglo en forma individual, veamos:

coordinacin general de sistemas de informacin

pag 38

Universidad de Guadalajara

Ejercicio 2
Instrucciones:
a) teclear el cdigo que se muestra a continuacin: Program 3.2 #!/usr/local/bin/perl #programa:arreglo2.pl @var=(1,2,3,4,5); $var[2]=4; $contador=1; while (contador<=5) { print (El elemento del arreglo var es:$ var[$ contador-1]\n); $contador=$ contador+1; }

b) grabar el cdigo con el nombre arreglo2.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa. Cmo funciona el programa arreglo2.pl? a)Se crea un arreglo llamado @var con cinco elementos b)Se modifica el contenido del elemento 2 del arreglo @var c)Se emplea una variable para controlar la estructura repetitiva, inicindolo con valor 1. d)La estructura repetitiva, evala la condicin, es verdadera, ejecuta la secuencia de instrucciones que se encuentran dentro de {}. e)Dentro de la estructura repetitiva, se ejecuta la instruccin print. La cual muestra en pantalla los elementos del arreglo @var. Donde el elemento dos, tiene un valor distinto al original. f) Se incrementa el valor de la variable $ contador en 1. Se repite la estructura repetitiva hasta que el valor sea mayor de 5. Concluye el programa.

computo academico

derechos reservados 1997

pag 39

Universidad de Guadalajara
Se puede usar el valor de una variable escalar como un subndice. Como se mostr en el ejercicio 2, se puede usar el valor de una variable escalar como un subndice para el arreglo. $indice=1; $valor=$ arreglo[$ indice]; que significa $valor=$ arreglo[1];

Ejercicio 3:
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin Programa 3.3 #!/usr/local/bin/perl #programa: arreglo3.pl @var=(1,2,3,4,5); $contador=1; while ($ contador<=5) { print (Elemento $ contador es $ var[$ contador-1]\n; $contador =$ contador +1; }

b) grabar el cdigo con el nombre arreglo3.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Qu hace el programa arreglo3.pl ? 1. El programa despliega en pantalla los cinco elementos del arreglo llamado @var. Para ello, emplea una estructura

coordinacin general de sistemas de informacin

pag 40

Universidad de Guadalajara
repetitiva (while), con el subndice, que viene de la variable $contador. 2. La variable $ contador, se incrementa en uno, cada vez que se ejecuta el ciclo 3. Cuando llega al valor 5, concluye el programa.

Ejercicio 4
Instrucciones:
a) Crear un programa que muestre en pantalla los elementos iniciales de un arreglo llamado var. Posteriormente asigne al elemento 9 y 10, los valores 12 y 20, respectivamente. Mostrando en pantalla sus valores finales. Los elementos iniciales de dicho arreglo son: (1,2,3,4,5,6,7,8,9,10)

b) Grabar el programa con el nombre arreglo4.pl

Conociendo la longitud de un arreglo Como se ha visto en los ejercicios anteriores, se puede tener arreglos de diferentes longitudes. Como consecuencia, Perl provee una forma de determinar la longitud de un arreglo. Veamos:

Ejercicio 5
a) Teclear el cdigo que se muestra a continuacin: Programa3.5 #!/usr/local/bin/perl #programa: arreglo5.pl @var=(1,2,3,4,5); $var=@var; print ("La longitud del arreglo es:$ var\n");

computo academico

derechos reservados 1997

pag 41

Universidad de Guadalajara

b) grabar el cdigo con el nombre arreglo5.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Cmo funciona el programa arreglo5.pl? a)Crea un arreglo de 5 elementos b) se le asigna el arreglo @var a la variable $ var, donde Perl lo interpreta como la longitud del arreglo, en este caso 5. De lo anterior, podemos modificar el ejercicio 3, sustituyendo en la estructura while el valor cinco por @var.

Ejercicio 6
Instrucciones:
a) Modificar el ejercicio 3, sustituyendo en la estructura while el valor 5 por @var. b) Grabarlo como arreglo6.pl

Cuestionario
Funciona igual que el ejercicio 3? La ventaja que nos ofrece utilizar la longitud del arreglo, es no tener que contabilizarlo antes de emplearlo. Simplemente usarlo. Con un arreglo es posible almacenar informacin de los dispositivos de entrada, por ejemplo del teclado. La ventaja que ofrece su uso es asignar lo capturado en un arreglo. Donde cada elemento del arreglo es una lnea de entrada. Mientras que el uso de variables escalares, solo almacena una sola lnea.

coordinacin general de sistemas de informacin

pag 42

Universidad de Guadalajara

Ejercicio 7
Instrucciones:
a) teclear el cdigo que se muestra a continuacin: Programa 3.7 #!/usr/local/bin/perl #programa: arreglo7.pl @var=<STDIN>; print (@var);

b) grabar el cdigo con el nombre arreglo7.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa. f) Para concluirlo teclear simultneamente ^D (fin de archivo).

Cmo funciona el programa arreglo7.pl? a) Asigna al arreglo @var las lneas de texto que se capturan. b) Muestra en pantalla su contenido.

Ordenando los elementos de un arreglo Para ordenar alfabticamente un arreglo se utiliza la funcin sort(). Veamos:

Ejercicio 8
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin:

computo academico

derechos reservados 1997

pag 43

Universidad de Guadalajara

Programa 3.8 #!/usr/local/bin/perl #programa: arreglo8.pl @array=("prueba", "valor", "Trabajo", "Salud"); @array=sort (@array); print ("@array\n"); b) grabar el cdigo con el nombre arreglo7.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Cmo funciona el programa arreglo8.pl? a) Inicializa el arreglo @array con una serie de elementos b) Empleando la funcin sort(), se ordena alfabticamente los elementos correspondientes al arreglo @array. c) Muestra en pantalla el resultado. Dentro de los arreglos es posible acomodar los elementos de un arreglo a la inversa de la funcin anterior.

Ejercicio 9
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin: Programa 3.9 #!/usr/local/bin/perl #programa: arreglo9.pl @array=("prueba", "valor", "Trabajo", "Salud"); @array=reverse (@array); print ("@array\n");

b) grabar el cdigo con el nombre arreglo9.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo

coordinacin general de sistemas de informacin

pag 44

Universidad de Guadalajara

ejecutable. e) ejecutar el programa. Cuestionario Cul ser la salida del programa arreglo9.pl?

Utilizando la funcin chop() en los arreglos Como se vio en el primer apartado del manual, la funcin chop quita el ltimo carcter de una cadena de caracteres. Esta caracterstica puede emplearse dentro de los arreglos.

Ejercicio 10
Instrucciones:
Teclear el cdigo que se muestra a continuacin: Programa 3.10 #!/usr/local/bin/perl #programa: arreglo10.pl @array=("prueba", "valor", "Trabajo", "Salud"); chop(@array); print ("@array\n");

b) grabar el cdigo con el nombre arreglo10.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa. Cuestionario Cul es la salida del programa arreglo10.pl?

La funcin chop, es muy til para crear una sola cadena a partir de los elementos de un arreglo. Para ello se emplea la funcin join.

computo academico

derechos reservados 1997

pag 45

Universidad de Guadalajara

Ejercicio 11
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin: Programa 3.11 #!/usr/local/bin/perl #programa: arreglo11.pl @array=<STDIN>; chop(@array); $cadena=join(" ", @array); pri t$ cena");

b) grabar el cdigo con el nombre arreglo11.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa. Cmo funciona el programa arreglo11.pl? a) desde un dispositivo de entrada se almacenan cadenas de caracteres separadas por el carcter nueva lnea. b) La funcin chop, quita el ltimo carcter a cada una de las cadenas que se introducen. Que en este caso es el carcter de nueva lnea. c) la funcin join utiliza el primer elemento como el carcter para unir las cadenas en una. En este caso se unen con espacio en blanco . d) Muestra en pantalla la nueva cadena.

Existe la funcin opuesta a join, conocida como split. La cual divide en varias cadenas una sola, de acuerdo al primer elemento definido.

coordinacin general de sistemas de informacin

pag 46

Universidad de Guadalajara

Ejercicio 12
Instrucciones:
a) Teclear el cdigo que se muestra continuacin: Programa 3.12 #!/usr/local/bin/perl #programa: arreglo12.pl $cadena="Esto:es:una:prueba"; @array=split(":",$ cadena); print (@array);

b) grabar el cdigo con el nombre arreglo12.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Cuestionario
Cmo funciona el programa arreglo12.pl? a) Se crea una cadena, donde las palabras significativas se separan por :, esto sirve como patrn en la funcin split. b) La funcin split emplea el carcter : para separar en subcadenas la anterior. c) muestra el resultado.

Ejercicio 13
Instrucciones
Crear un programa que cuente el nmero de palabras de un texto introducido va teclado.

computo academico

derechos reservados 1997

pag 47

Universidad de Guadalajara

la estructura reptitiva Foreach

La estructura repetitiva foreach


Una de las actividades comunes que se realizan dentro de una estructura repetitiva es aplicar alguna actividad sobre cada elemento almacenado en un arreglo. Por ejemplo, podemos utilizar la estructura repetitiva foreach para comprobar si existe un elemento de la lista que sea la cadena hola.

Ejercicio 14
Instrucciones:
a) Teclear el siguiente cdigo: Programa 3.14 #!/usr/local/bin/perl #programa: arreglo14.pl $contador=0; @arreglo=(Hola, Adios, bueno); foreach $ arreglo(@arreglo) { if ($ arreglo eq "Hola") { print ("Existe la palabra Hola\n"); } } b) grabar el cdigo con el nombre arreglo14.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Cmo funciona el programa arreglo14.pl? a) Inicializa la variable contador a 0. b) Inicializa el arreglo @arreglo con varios elementos c) Ejecuta la estructura repetitiva foreach; desarrollando lo siguiente: por cada elemento del arreglo @arreglo, asignado a la variable $ arreglo. Compralo con la palabra Hola. Si existe, manda un mensaje de confirmacin a pantalla.

coordinacin general de sistemas de informacin

pag 48

Universidad de Guadalajara

Ejercicio 4
Instrucciones:
a) Crear un programa que muestre en pantalla los elementos iniciales de un arreglo llamado var. Posteriormente asigne al elemento 9 y 10, los valores 12 y 20, respectivamente. Mostrando en pantalla sus valores finales. Los elementos iniciales de dicho arreglo son: (1,2,3,4,5,6,7,8,9,10) Programa 3.4 #!/usr/local/bin/perl #programa: arreglo4.pl @var=(1,2,3,4,5,6,7,8,9,10); print ("Los elementos originales son\n"); $contador=1; while ($ contador<=10) { print ("El elemento $ contador es $ var[$ contador-1]\n"); $contador=$ contador+1; } $num1=12; $num2=20; $var[8]=$ num1; $var[9]=$ num2; print ("Los elementos finales son:\n"); $contador=1; while ($ contador<=10) { print ("Elemento $ contador es $ var[$ contador-1]\n"); $contador ++; }

computo academico

derechos reservados 1997

pag 49

Universidad de Guadalajara

Solucin de programas del capitulo 3

Programa 6
Instrucciones:
a) Modificar el ejercicio 3, sustituyendo en la estructura while el valor 5 por @var.

#programa: arreglo6.pl @var=("Hola",2,3,4,5); $contador=1; while ($ contador<=@var) { print ("Elemento $ contador es $ var[$ contador-1]\n"); $contador ++; }

Programa 13
Instrucciones
Crear un programa que cuente el nmero de palabras de un texto introducido va teclado.

#!/usr/local/bin/perl #programa: arreglo13.pl $contador=0; $linea=<STDIN>; while ($ linea ne "") { chop($ linea); @arreglo=split(/ /, $ linea); $contador=contador+@arreglo; $linea=<STDIN>; } print ("El total de palabras son: $ contador\n");

coordinacin general de sistemas de informacin

pag 50

Universidad de Guadalajara

Captulo 4 Manejo de archivos en Perl

computo academico

derechos reservados 1997

pag 51

Universidad de Guadalajara

Introduccin Manejo de Archivos en Perl


EL manejo de la informacin es crtica en todo proceso de cmputo. Cuando se trata de grandes cantidades de esta, es conveniente emplear sistemas de almacenamiento secundario. Los cuales pueden guardar de forma permanente los datos necesarios y poder emplearlos cuando se requieran. Esta informacin almacenada tiene el nombre genrico de archivo. Un archivo en una computadora es una estructura diseada para contener datos. Los archivos estn organizados de tal modo que puedan ser recuperados fcilmente, actualizados o borrados y almacenados de nuevo en el archivo con todos los cambios previos. Una coleccin de archivos a los que puede accederse por un conjunto de programas y que contienen todos ellos datos relacionados, constituyen una base de datos. Los conceptos carcter, campo, registro, archivo y base de datos son conceptos lgicos que se refieren al medio en que el usuario de computadoras ve los datos y se organizan. Las estructuras da datos se organizan de un modo jerrquico, de modo que el nivel ms alto lo constituye la base de datos y el nivel ms bajo el carcter.

La organizacin y gestin de archivos en perl

Creando archivos de texto en Perl

Ejercicio 1
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin:

coordinacin general de sistemas de informacin

pag 52

Universidad de Guadalajara

Programa 4.1 #!/usr/local/bin/perl #programa:archivo1.pl print ("Teclear ^D para concluir la lectura del archivo\n"); if (open(DATOS, ">datos")) { $linea=<STDIN>; while ($ linea ne "") { print DATOS ($ linea); $linea=<STDIN>; } }

Cmo funciona el programa archivo1.pl? a)Realiza una operacin de lectura utilizando el smbolo > dentro la opcin open. Creando un archivo llamado datos. b)Se introducen la informacin desde el teclado y es almacenado en la variable $ linea c)Se utiliza una estructura repetitiva para introducir texto hasta que se teclee ^D. d) Revisar el contenido del archivo llamado datos. Utilizando el comando more o cat para observar la informacin que contiene.

Abriendo un archivo de texto en perl

En el lenguaje de programacin Perl, podemos abrir un archivo de la siguiente manera: open(filevar, filename) Donde filevar, representa el nombre del archivo a usar en Perl. Mientras que filename, representa el lugar donde se encuentra almacenado el archivo. Si el archivo se encuentra en el directorio: /home/user/camilo/web deber incluirse dicha ruta en el apartado filename. Veamos: open (NOTA, /home/user/camilo/web/datos)

computo academico

derechos reservados 1997

pag 53

Universidad de Guadalajara

Veamos un ejemplo:

Ejercicio 2
Instrucciones:
a) teclear el cdigo que se muestra a continuacin: Programa 4.2 #!/usr/local/bin/perl #programa:archivo2.pl if (open(ARCHIVO, "datos")) { $linea=<ARCHIVO>; while ($ linea ne "") { print $ linea; $linea=<ARCHIVO>; } } b) grabar el cdigo con el nombre archivo2.pl c) salirse del editor de texto d) cambiarle los derechos al programa, para hacerlo ejecutable. e) ejecutar el programa.

Cmo funciona el programa archivo2.pl? a) El programa evala si existe el archivo llamado datos, con la estructura condicional if. Aqu se observa como se puede emplear una variable que maneje el archivo datos. En este caso se emplea la variable ARCHIVO. Es recomendable utilizar siempre maysculas para tal actividad. b) Si es afirmativo, el programa lee cada lnea del archivo utilizando la sintaxis: <ARCHIVO>. c) La variable ARCHIVO se le asigna a la variable $ linea. d) Utilizando una estructura repetitiva compara la condicin. Mientras que el contenido de la variable $ linea no sea igual a espacio en blanco. Ejecuta lo que est dentro de los {}.

coordinacin general de sistemas de informacin

pag 54

Universidad de Guadalajara

Que en este caso es mostrar en pantalla su contenido. Posteriormente, se asigna de nueva cuenta el contenido del ARCHIVO a la variable $ linea. e) Repite el proceso hasta que no exista informacin alguna en el archivo llamado ARCHIVO. Qu pasara si por alguna razn no existiera el archivo uno en el programa archivo2.pl? Para ello, renombre el archivo datos a temp.pl ejecute de nuevo el programa archivo1.pl Qu pasa con el programa, se ejecuta correctamente? realiza lo que anteriormente haba hecho? Cmo podemos solucionar el problema? Una solucin, podra ser colocar la funcin die, dentro del programa archivo2.pl Esta funcin tiene la finalidad de concluir inmediatamente cualquier programa y enviar un mensaje a pantalla. Entonces, debemos agregar en el programa archivo2.pl la funcin die. Veamos

Ejercicio 3
Instrucciones:
a) Editar el programa archivo3.pl b) Agregar a la lnea if (open..) lo siguiente: || die ("No puedo abrir el archivo datos")) Deber quedar de la siguiente manera: Programa 4.3

computo academico

derechos reservados 1997

pag 55

Universidad de Guadalajara

Programa 4.3 if (open(ARCHIVO, "datos")|| die("No puedo abrir el archivo datos")) { $linea=<ARCHIVO>; while ($ linea ne "'") { print $ linea; $linea=<ARCHIVO>; } }

c) Grabar el programa con el mismo nombre. d) Ejecutar el programa

Cuestionario
Qu muestra en pantalla?

Falta por mencionar que antes de la funcin die, se ha colocado el smbolo ||, el cual representa un valor lgico para el lenguaje de programacin. Que significa: si es verdadera la primera instruccin o la segunda. En caso que sea afirmativo para la primera, no ejecuta la segunda. Si no es verdadera la primera, ejecuta la segunda.

El uso de los arreglos con los archivos

En Perl es posible almacenar en una variable del tipo arreglo el contenido de un archivo. Veamos:

Ejercicio 4
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin:

coordinacin general de sistemas de informacin

pag 56

Universidad de Guadalajara

Programa 4.4 #!/usr/local/bin/perl #programa:archivo3.pl if (open(ARCHIVO, "datos")) { @arreglo=<ARCHIVO>; } print(@arreglo);

Ejercicio 5
Instrucciones:
Crear un programa en Perl que almacene en un archivo de tipo texto los datos de un grupo de alumnos, el cual incluya su apellido y nombre.

Ejercicio 6
Instrucciones:
Crear un programa en Perl que muestre en pantalla ordenado alfabticamente el archivo creado anteriormente.

Agregando nuevos alumnos a la lista de alumnos existente Para agregar ms alumnos a la lista de alumnos existente, teclear el cdigo que se muestra a continuacin:

Ejercicio 7
Instrucciones:
a) Teclear el cdigo que se muestra a continuacin:

computo academico

derechos reservados 1997

pag 57

Universidad de Guadalajara

Programa 4.7 #!/usr/local/bin/perl if (open(OUTFILE, ">>alumnos") || die ("No puedo abrir el archivo alumnos")) { $line=<STDIN>; while ($ line ne "") { print OUTFILE ($ line); $line =<STDIN>; b) ejecutarlo, agregando ms alumnos a la lista. Cmo funciona el ejercicio 7? a) en la condicin if, dentro del parntesis se le agrega un smbolo mayor que al anterior. Con lo cual se le indica que el archivo se abrir para agregar ms elementos a este. b) El resto del programa es igual al descrito en el ejercicio 5.

coordinacin general de sistemas de informacin

pag 58

Universidad de Guadalajara

Programa 5
Ejercicios del captulo Archivo
#!/usr/local/bin/perl if (open(OUTFILE, ">alumnos") || die ("No puedo abrir el archivo alumnos")) { $line=<STDIN>; while ($ line ne "") { print OUTFILE ($ line); $line =<STDIN>; } }

Programa 6
#!/usr/local/bin/perl if (open(OUTFILE, "alumnos")||die ("No puedo abrir el archivo alumnos")) { @line=<OUTFILE>; print "Lista de alumnos\n"; @line=sort(@line); print @line; }

computo academico

derechos reservados 1997

pag 59

Universidad de Guadalajara

Proyecto de programacin: Creacin de un programa que administre un cajero automtico

coordinacin general de sistemas de informacin

pag 60

Universidad de Guadalajara

Proyecto de programacin
Nombre del proyecto: Creacin de un cajero automtico Requisitos de programacin en Perl: conceptos bsicos, estructuras de control, arreglos y archivos. Planteamiento del proyecto: desarrollar e implementar con el lenguaje de programacin Perl un cajero automtico que permite tres opciones: a) Entrega saldo de la cuenta b)Saldo de la cuenta y retirar fondos c) Solo retirar fondos Los fondos a retirar son en billetes de $ 500, $ 1000 y $ 5000 con un tope de $ 25000, si tiene fondos. Considerando como datos de entrada el nmero de cuenta del cliente, el saldo y el fondo a retirar.

computo academico

derechos reservados 1997

pag 61

Universidad de Guadalajara

Captulo 5 Expresiones regulares en Perl

coordinacin general de sistemas de informacin

pag 62

Universidad de Guadalajara

Expresiones regulares en Perl


Un patrn es una secuencia de caracteres que se buscan dentro de una cadena de caracteres. En Perl, un patrn se representa entre diagonales. /Aprendiendo/ El patrn de referencia encontrar todas las ocurrencias que existan en una cadena de caracteres.

El operador de coincidencia

Perl define un operador especial que prueba si un patrn coincide dentro de una cadena de caracteres o no. Dicho operador se define por los caracteres: =~ Veamos un ejemplo:

Ejercicio 1
1) Capturar el cdigo que se muestra a continuacin Programa 5.1 #!/usr/local/bin/perl #programa: expre1.pl print ( Es divertido aprender Perl, si o no?\n); $question=<STDIN>; if ($ question=~/si/) { print (Porque facilita mi trabajo de programacion\n); } else { print (Aparentemente no. Pero, es muy fcil de aprender\n); } 2) Grbalo con el nombre: expre1.pl 3) Cmbiale los derechos y ejectalo

Cmo funciona el programa? El programa es muy parecido a los que se han creado en los

computo academico

derechos reservados 1997

pag 63

Universidad de Guadalajara

anteriores captulos, pero contiene una instruccin con la cual nos permite comparar un patrn de caracteres dentro de una cadena de caracteres. Dicha instruccin es: if ($ question=~/si/) { print (Porque facilita mi trabajo de programacion\n); }

Donde el programa compara si la cadena de caracteres almacenada en la variable $ question que contiene un si. Si es afirmativo, ejecuta lo que se encuentra dentro de los corchetes {}. De lo contrario, ejecuta el else. Como se puede observar, el operador =~, permite comparar caracteres, cadenas de caracteres que se encuentran dentro de una variable.

Ejercicio 2
Instrucciones: crear un programa que cuente las veces que aparece la palabra Internet del archivo muestra.txt

Ejercicio 3
Introduccin: considera que es el responsable de una pgina Web en Internet. El protocolo httpd que administra dicha pgina se encuentra instalado en una mquina Unix. El protocolo genera dentro del subdirectorio logs, varios archivos, tales como el registro de los accesos a la pgina, los errores que genera, etctera. El propio protocolo genera un archivo de texto con esta informacin. Sin embargo, la forma como lo almacena es un poco legible para la persona que lo lea. Para solucionar este problema, se emplea un programa creado en Perl, empleando expresiones regulares para que nos muestre cuantas veces se

coordinacin general de sistemas de informacin

pag 64

Universidad de Guadalajara

ingreso a documentos HTML, en que da de la semana, y mes del ao. Para ello, tenemos listo un archivo llamado prueba.log que tiene parte del contenido del archivo llamado access.log. Entonces,

1) Revisar el contenido del archivo prueba.log 2) Observar el formato que contiene el archivo 3) Crear el programa en Perl que satisfaga los requerimientos antes mencionados 4) grabarlo con el nombre expre3.pl 5) Cambiarle los derechos y ejecutarlo

Caracteres especiales en los patrones Perl puede manejar varios caracteres especiales dentro de los patrones, los cuales posibilitan el nmero de coincidencias en una cadena de caracteres. Estos caracteres especiales son lo que hace a los patrones tiles.

El caracter especial+

El caracter especial + significa uno o ms de los caracteres precedentes. Por ejemplo, el patrn /de+f/ busca las coincidencias con cualquiera de los siguientes cadenas: def deef deeef deeeeef

El caracter especial[]

El caracter especial [] te permite definir patrones que coinciden con un grupo de alternativas. Por ejemplo el siguiente patrn encuentra las coincidencias: def o dEf. /d[eE]f/

computo academico

derechos reservados 1997

pag 65

Universidad de Guadalajara

Ejercicio 4
Instrucciones: Teclear el cdigo que se muestra a
continuacin: Programa 5.4
#!/usr/local/bin/perl #programa:expre4.pl $contador=0; $linea=<STDIN>; while ($ linea ne ) { chop ($ linea); @palabra=split(/[\t ]+/, $ linea); $contador+=@palabra; print $ contador; $linea=<STDIN>; } print (Numero total de palabras: $ contador\n);

Los caracteres especiales * y ? Con el caracter especial * se tiene coincidencias de cero o ms ocurrencias del caracter al que precede. /de*f/ tenemos: df, deef. Con el caracter especial ? se tiene coincidencias de cero o un caracter del caracter que le precede. /de?f/

Secuencias de escape para los caracteres especiales Si quieres que el patrn incluya un caracter que normalmente es tratado como caracter especial, coloca el caracter con una diagonal invertida \.

Ejercicio 5

coordinacin general de sistemas de informacin

pag 66

Universidad de Guadalajara

Instrucciones: capturar el programa que se muestra a


continuacin: Programa 5.7 #!/usr/local/bin/perl #programa: expre5.pl $wordcount=0; (open (ARCHIVO, prueba.log)); $line=<ARCHIVO>; while($ line ne ) { chop ($ line); if ($ line=~/\/export\//) { $wordcount=$ wordcount+1; } $line=<ARCHIVO>; } print (directiva encontrada: $ wordcount\n);

La coincidencia de cualquier letra o nmero Se puede incluir dentro de un rango, veamos: /a[0-9]c/ Lo mismo ocurre para las letras /[a-z][A-Z]/

Sujecin de patrones en Perl ^ o \A coincidencia al inicio de una cadena solamente $ o \Z coincidencia al final de la cadena solamente \b Coincidencia solo al inicio de una palabra \B Coincidencia dentro de una palabra. Veamos: /^def$ / significa que solo la coincidencia def y no otra.

computo academico

derechos reservados 1997

pag 67

Universidad de Guadalajara

Ejercicio 6
Instrucciones:
Capturar el programa que se muestra a continuacin Programa 5.6 #!/usr/local/bin/perl #programa: expre6.pl $wordcount=0; (open (ARCHIVO, prueba.log)); $line=<ARCHIVO>; while($ line ne ) { chop ($ line); if ($ line=~/^\[Wed/) { $wordcount=$ wordcount+1; } $line=<ARCHIVO>; } print (Palabras con Wed que aparecen: $ wordcount\n);

Ejercicio 7
Instrucciones: teclear el programa que se muestra a
continuacin: Programa 5.7 #!/usr/local/bin/perl #programa: expre7.pl $wordcount=0; (open (ARCHIVO, prueba.log)); $line=<ARCHIVO>; while($ line ne ) { chop ($ line); if ($ line=~/\bWed/) { $wordcount=$ wordcount+1; }

coordinacin general de sistemas de informacin

pag 68

Universidad de Guadalajara
Programa 5.7 $line=<ARCHIVO>; } print (La palabra Wed encontrada: $ wordcount\n);

Substitucin de variables en los patrones

Si lo deseas, se puede usar el valor de una variable escalar en un patrn. Veamos un ejemplo:

Ejercicio 8
Instrucciones:
Programa 5.8 #!/usr/local/bin/perl #programa: expre8.pl $wordcount=0; (open (ARCHIVO, prueba.log)); $line=<ARCHIVO>; while($ line ne ) { chop ($ line); $patron=Wed; if ($ line=~/$ patron/) { $wordcount=$ wordcount+1; } $line=<ARCHIVO>; } print (Palabras con Wed encontradas:: $ wordcount\n)

El operador de substitucin Perl permite substituir una parte de una cadena usando el operador de substitucin. El cual tiene la siguiente sintaxis:

computo academico

derechos reservados 1997

pag 69

Universidad de Guadalajara

s/pattern/replacement/

veamos un ejemplo

Ejercicio 9
Instrucciones: teclear el cdigo que se muestra a
continuacin: Programa 5.9 #!/usr/local/bin/perl #programa: expre9.pl $wordcount=0; (open (ARCHIVO, trabajo.txt)); $line=<ARCHIVO>; while($ line ne ) { chop ($ line); $line=~s/Internet/internet/; print $ line\n; $wordcount=$ wordcount+1; $line=<ARCHIVO>; }

Ejercicio 10
Instrucciones:
Qu cambio debera hacerse en el programa anterior, para que almacenara los cambios utilizados en operador de substitucin?

coordinacin general de sistemas de informacin

pag 70

Universidad de Guadalajara

Ejercicio 2
Solucin de problemas del captulo 5
#!/usr/local/bin/perl #programa: expre2.pl $wordcount=0; (open (ARCHIVO, muestra.txt)); $line=<ARCHIVO>; while ($ line ne ) { chop ($ line); if ($ line=~/Internet/) { $wordcount=$ wordcount+1; } $line=<ARCHIVO>; } print (Cuantas veces aparecio la palabra Internet: $wordcount\n);

Ejercicio 4
#!/usr/local/bin/perl #programa: expre4.pl $wordcount=0; (open (ARCHIVO, prueba.log)); $line=<ARCHIVO>; while($ line ne ) { chop ($ line); if ($ line=~/html/) { $wordcount=$ wordcount+1; } $line=<ARCHIVO>; } print (Cuantos documentos HTML fueron?: $ wordcount\n);

computo academico

derechos reservados 1997

pag 71

Universidad de Guadalajara

Captulo 6 subrutinas en perl

coordinacin general de sistemas de informacin

pag 72

Universidad de Guadalajara

Subrutinas en Perl
Las subrutinas son programas que estn diseados para ejecutar alguna tarea especfica. Estas se escriben una sola vez, pero pueden ser referenciadas en diferentes puntos de un programa de modo que se puede evitar la duplicacin innecesaria del cdigo.

Ejercicio 1
1) Capturar el cdigo que se muestra a continuacin Programa 6.1 #!/usr/local/bin/perl #programa:sub1.pl print ( Teclea 5 numeros enteros\n); &suma; print $ valor; sub suma { $valor=0; for ($ contador=1; $ contador<=5; $ contador ++) { $num=<STDIN>; $valor=$ valor+$ num; } $valor; }

Cmo funciona el programa? El programa ejecuta la suma de cinco nmeros enteros empleando una subrutina. El caracter &, Perl interpreta que lo que viene a continuacin es una subrutina. Por lo tanto ejecuta lo que est a partir de la palabra sub. Al concluir su ejecucin, el programa continua ejecutndose en la lnea inmediata inferior de donde fue llamada la subrutina. Siendo para este caso la impresin del contenido de la variable $ valor. Adems es importante mencionar que en Perl siempre la ltima lnea es valor que regresa al programa personal.
computo academico derechos reservados 1997 pag 73

Universidad de Guadalajara

Variables locales en las subrutinas

El uso de variables locales en las subrutinas permite una mayor claridad de organizacin dentro de los programas creados. Perl, permite declarar variables locales de la siguiente forma: my ($ var1, $ var2 ...) adems local ($ var1, $ var2 ..)

Ejercicio 2
1) Captura el cdigo que se muestra a continuacin Programa 6.2 #!/usr/local/bin/perl #programa:sub2.pl print ( Teclea 5 numeros\n); &suma; print $ valor; sub suma { my($ valor, $ contador, $ num); $valor=0; for ($ contador=1; $ contador<=5; $ contador ++) { $num=<STDIN>; $valor=$ valor+$ num; } $valor; } Cmo funciona el programa?

Pasando valores a la subrutina

La diferencia con el ejemplo 1, es fundamentalmente la declaracin de variables locales empleando el trmino my, al inicio de la subrutina. Se pueden crear programas ms tiles y flexibles, pasando valores desde el programa principal hacia las subrutinas, a estos
pag 74

coordinacin general de sistemas de informacin

Universidad de Guadalajara

se le conoce como argumentos.

Ejercicio 3
1) Capturar el cdigo que se muestra a continuacin Programa 6.3 #!/usr/local/bin/perl #programa: sub3.pl print ( Teclea 3 numeros\n); print (Primer numero:\n); $num1=<STDIN>; chop($ num1); print (Segundo numero:\n); $num2=<STDIN>; chop($ num2); print (Tercer numero:\n); $num3=<STDIN>; chop($ num3); &total($ num1, $ num2, $ num3);

sub total { local($ num1, $ num2, $ num3)=@_; local ($ suma); $suma=$ num1+$ num2+$ num3; print (La suma es: $ suma\n); } Cmo funciona el programa? Las variables $ num1, $ num2 y $ num3, pasan sus valores a la subrutina total. Dentro de esta, se definen las variables locales respectivas. Entonces se les asigna su contenido de la variable del sistema @ a stas. Las variables del sistema @ se crean cuando una subrutina se llama con argumentos. Esta contiene los valores en el orden en que se almacenaron.

computo academico

derechos reservados 1997

pag 75

También podría gustarte