• Publicidad

Factorial

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Factorial

Notapor juan » 2005-12-25 21:49 @950

Hacer un programa que calcule el número e a partir de la suma de la serie:

e = 1/1 + 1/1 + 1/(1*2) + 1/(1*2*3) + ...

hasta 100 sumandos. Para ello hacer un bucle con un acumulador (para e),
un contador (para el número del término) y un producto acumulado o factorial, que irá actualizándose en cada iteración con el anterior por el nuevo índice.

Pues esta es parte de mi tarea, lo que tengo duda es cómo hacer un factorial para esta ecuación.

SOS :oops:
juan
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2005-11-27 06:37 @317

Publicidad

Re: Factorial

Notapor explorer » 2005-12-26 08:24 @392

juan escribiste:Pues esta es parte de mi tarea, lo que tengo duda es cómo hacer un factorial para esta ecuación.
El factorial lo puedes ir haciendo mientras se recorre el bucle...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. # Hacer un programa que calcule el número e
  3. # a partir de la suma de la serie:
  4. # e = 1/1 + 1/1 + 1/(1*2) + 1/(1*2*3) + ...
  5.  
  6. # un producto acumulado o factorial,
  7. $producto = 1;
  8.  
  9. # Para ello hacer un bucle con un acumulador (para e),
  10. $e = 1;
  11.  
  12. # un contador (para el número del término) hasta 100 sumandos.
  13. for ( $i = 1; $i <= 100; $i++ ) {
  14.   # que irá actualizándose en cada iteración
  15.   # con el anterior por el nuevo índice
  16.   $producto = $producto * $i;
  17.  
  18.   $e = $e + 1 / $producto;
  19. }
  20. print $e, "\n";  # 2.71828182845905
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2005-12-26 08:36 @400

Yo creo que queda hasta más clara la versión reducida...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for ( $e = $factorial = $i = 1; $i <= 100; $i++ )
  2. {
  3.   $e = $e + 1 / ($factorial *= $i);
  4. }
  5. print "$e\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

o esta otra, que casi se parece a la definición matemática
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $e = $factorial = 1;
  2.  
  3. $e = $e + 1 / ($factorial *= $_) for 1 .. 100;
  4.  
  5. print "$e\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

expresiones regulares

Notapor juan » 2005-12-26 10:36 @483

22. Construir una expresión regular que encuentre cualquier fecha del tipo 18-3-2004 o bien, 18/03/04.

Si tengo que crear esta expresión mi duda es: ¿puedo usar corchetes para usar pipeline?, ¿y decir uno u otro?, ¿y cómo hago para que el "/", de separador de las fechas no lo reconozca como parte de los operadores de búsqueda?

a=~ [/\w2//\w2//\w2]|[\w2-\w-\w2/];

Otra duda con esto de las expresiones regulares: Si yo quiero, por ejemplo, crear una expresión que busque cinco o más minúsculas, ¿estaría bien esto?

=~ /[a-z]{5,*}/

Es decir, ¿el rango {5,*} se le come cinco o más veces?

Y si quiero hacer "Cualquier letra seguida de una vocal seguida de la misma letra de nuevo", pongo

=~ /r[a-u] r/;

si quiero usar siempre la letra r. Usar [a-u], ¿interpreta que son a, e, i, o, y u, o interpreta todos las letras de a hasta la u?

Pero si quiero poner "Cualquier letra seguida de una vocal seguida de la misma letra de nuevo"

= /w[a-u] \w/

pero esto significa que sería cualquier letra o dígito al inicio o al final, y ¿cómo haría para que sea siempre la misma?
juan
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2005-11-27 06:37 @317

Re: expresiones regulares

Notapor explorer » 2005-12-26 11:01 @500

juan escribiste:22. Construir una expresion regular que encuentre cualquier fecha del tipo 18-3-2004 o bien, 18/03/04.

Si tengo que crear esta expresión mi duda es ¿puedo usar corchetes para usar pipeline
No puedes usar corchetes. A lo sumo, tienes que usar paréntesis, o nada en absoluto si la expresión regular sólo tiene dos alternativas. Mira la alternation

juan escribiste:, ¿y decir uno u otro?, y ¿cómo hago para que el "/", de separador de las fechas no lo reconozca como parte de los operadores de búsqueda?
Tienes que 'escaparlo' con un '\' delante de él. Mira la sección de metacaracteres

juan escribiste:a=~ [/\w2//\w2//\w2]|[\w2-\w-\w2/];
El '2' está mal puesto. Es {2}.

juan escribiste:Otra duda con esto de las expresiones regulares. Si yo quiero por ejemplo crear una expresión que busque cinco o más minúsculas, ¿estaría bien esto?

=~ /[a-z]{5,*}/

Es decir, ¿el rango {5,*} se le come cinco o más veces?
No, lo correcto es {5,}, sin el asterisco.

juan escribiste:y si quiero hacer: "Cualquier letra seguida de una vocal seguida de la misma letra de nuevo, pongo

=~ /r[a-u] r/ ;

si quiero usar siempre la letra r. Usar [a-u], ¿interpreta que son a, e, i, o y u, o interpreta todos las letras de a hasta la u?
Efectivamente, [a-u] es la secuencia de letras desde la 'a' hasta la 'u'. Si quieres poner las vocales, pones [aeiou].

juan escribiste:Pero si quiero poner "Cualquier letra seguida de una vocal seguida de la misma letra de nuevo"

= /w[a-u] \w/

pero esto significa que sería cualquier letra o dígito al inicio o al final, y ¿cómo haría para que sea siempre la misma?
Entonces, primero 'capturas' la primera vocal con un par de paréntesis, y luego, te refieres a esa letra capturada con el parámetro \1. Entra en la página de manual de perlre y busca el párrafo que dice "The bracketing construct ( ... ) creates capture buffers.". Ejemplo:

$x =~ /(\w)[aeiou]\1/;

Aquí tienes un par de tutoriales en español.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: expresiones regulares

Notapor juan » 2005-12-26 16:13 @717

Entonces estaría bien así:

a =~ /\w{2}\/\w{2}\/\w{2}|\w{2}\-\w\-\w{2}/;

Otra duda que tengo es cómo reconoce esta expresión la diferencia en día, mes y año si le ingreso dd\/mm\/aa. ¿¿Sirve??
juan
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2005-11-27 06:37 @317

Re: Factorial

Notapor explorer » 2005-12-26 17:28 @769

Mejor así:

$a =~ /\d{2}\/\d{2}\/\d{2}|\d{2}-\d-\d{2}/;

No entiendo la última pregunta...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: expresiones regulares

Notapor Perl user » 2005-12-26 17:46 @782

juan escribiste:Entonces estaría bien así:

a =~ /\w{2}\/\w{2}\/\w{2}|\w{2}\-\w\-\w{2}/;

Otra duda que tengo es cómo reconoce esta expresión la diferencia en día, mes y año si le ingreso dd\/mm\/aa. ¿¿Sirve??


¿Qué te parece si atiendes las recomendaciones hechas anteriormente?

Es necesario leer bien sobre expresiones regulares, cómo se construyen, su sintaxis básica y comenzar a pensar en la solución de tu problema basado en lo que leíste. Es imposible lograr "ADIVINAR" la solución si no se aprenden y se fundamentan bien las bases.

Échale un vistazo a perlre, perlrequick, perlretut, perlreref.

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor explorer » 2005-12-28 18:10 @798

Me parece que el proyecto de pasar a castellano la documentación de Perl está llegando al nivel de urgente...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Perl user » 2005-12-28 23:14 @010

Bueno, en realidad había estado evitando el tema sobre las traducciones por diferentes razones, sin embargo, pienso que es importante dejar algunas cosas en claro que supongo muchos de los que están metidos en el mundo de la IT ya lo saben:

Si bien el proyecto de traducción NO es mala idea, es importante reconocer que la persona que no sabe inglés (al menos para comprender lecturas técnicas) no podrá sobresalir mucho en este campo... No podrá entender más de lo que las limitadas (y generalmente malas) traducciones le podrán brindar y no podrá aportar mucho a la comunidad mundial de lectores.

(Des)Afortunadamente el inglés sigue siendo la lengua madre para la publicación de trabajos internacionales, y es la lengua prácticamente primaria para la comunicación de ideas también en contexto internacional. Por lo tanto... en mi opinión realizar trabajos de traducción para la gente que no lo habla (no hablemos de dominar) o no lo maneja bien puede ser de mucha ayuda al principio, pero posiblemente a la larga podría perjudicar al no exigirle a esa persona aprender inglés.

Aparte de que el esfuerzo de traducción prácticamente dúplica el trabajo existente (es decir que ya existe el trabajo de documentación, ya está preparado, con un formato legible, etc.) en vez de ponernos a trabajar como en el desarrollo de módulos nuevos, aplicaciones nuevas, mejorar las ya existentes o aportar simplemente nueva documentación (como tutoriales, artículos, ensayos, lo que sea), reporte de errores, etc.

Este es un problema que se ve muy a menudo en países donde no se exige el inglés como lengua extranjera obligatoria (por ejemplo, México).

La otra parte es que me ha tocado hacer revisiones a libros traducidos, generalmente de España (sin discriminar a nuestros amigos españoles, claro) con muy pésimas traducciones. También obviamente he revisado libros en español (escritos nativamente) de México y otros países que son PÉSIMOS, enseñan pésimas metodologías, la peor sintaxis y por si fuera poco sintaxis antigua del lenguaje (hablando de Perl). ¿Qué trae como consecuencia? Que la gente con bajos recursos o la gente que no conoce del tema compra dichos libros (algunos por ser baratos y otros por ser lo único que pueden conseguir) y aprenden lo malo de ellos... y luego tienen problemas cuando piden ayuda a gente más experimentada porque les exigen "otro" tipo de conocimiento o metodología que ya está documentada en (valga la redundancia) la documentación oficial, es decir, que no tenían que comprar libro alguno para poder aprender de manera formal.

Nuevamente, este es mi punto de vista sobre dicha problemática, pero conozco perfectamente el problema ya que lo veo a diario. Sé que la gente que no sabe inglés podrá decir que no puede pagar cursos y demás, lo sé, es difícil (aunque también hay lugares económicos y no siempre es pretexto), sin embargo... es algo a lo que nos tenemos que enfrentar tarde o temprano, y en el mundo de la IT o te empapas de conocimiento o pereces lamentablemente...

Saludos, espero no haber ofendido a ningún ente Perliano.
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 17 invitados