• Publicidad

División real y división entera

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

División real y división entera

Notapor fgalves » 2007-05-14 01:52 @119

Hola a todos.

Sé que ésta puede parecer una pregunta tonta, pero es que por más que he buscado no he encontrado la respuesta.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$a = 15;
$b = 2;

$c = 15/2;

$c = 7.5;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


¿Cómo hacer para obtener la división entera, es decir, ignorar la parte decimal y quedarme solo con el 7? He buscado en diversos foros y he encontrado cosas como "fix" o "round" pero que no consigo hacer que me funcionen....

¿Alguien me puede echar una manita?
¡Muchas gracias!
¡Saludos!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor fgalves » 2007-05-14 03:30 @188

Me respondo a mi mismo ya que he encontrado la forma.
Basta con aplicar el modificador int:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
int($c);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Saludos a todos!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor explorer » 2007-05-14 07:02 @334

Dile a tu jefe que necesitas aprender Perl en condiciones, de una vez por todas. Dile que te compre un libro de Perl. Y si no quiere o no puede, una tarde te conectas a perldoc.perl.org y, con calma, te lees los apartados que allí están. O en tu propia distribución Perl, las páginas de manual.

Sí, son muchas, muy largas algunas de ellas, y además, en inglés. Pero aprender un lenguaje informático es lo que tiene: aprender su sintaxis.

La dificultad añadida de Perl es que tiene una sintaxis extraordinariamente rica. Por eso hay que repasar y repasar.

¿Por qué? Pues porque casi siempre te encontrarás que aquello que has hecho que te ha llevado una o dos horas hacerlo, resulta que en Perl estaba resuelto en un par de funciones de las que nunca habías oído hablar. O la habías leído pero ni te acordabas de ellas. Por ejemplo, yo debería usar mucho más el uso de la variable $,, pero me está costando mucho. Siempre se me olvida. Pero debo insistir hasta que se convierta en una costumbre.

int() no es un modificador porque no modifica sus argumentos. Es una función:
http://perldoc.perl.org/functions/int.html

En serio... cuando tengas un ratito, entra en páginas como esta: http://perldoc.perl.org/index-functions.html y leete sólo las descripciones de las funciones. Cuando veas alguna que te llame la atención, entras a ver su descripción.

Esto es lo mismo que para un albañil conocer cuántos tipos de ladrillos cara vista existen. Cuantos más conozca, más alternativas tiene para construir las paredes de las casas. Pues lo mismo en Perl. Cuanto más le conozcas, más posibilidades de construir antes, más rápido, y más bonito tus programas (relacionado con las tres virtudes del programador de Perl: pereza, impaciencia e hibris).

Sobre lo tuyo de la parte entera, decir que existe una posibilidad más: si estás completamente seguro que todas las operaciones matemáticas, en tu programa, van a ser enteras, podría ser interesante probar con

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use integer;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

pero... tienes sus peculiaridades: http://perldoc.perl.org/integer.html

Yo lo he utilizado en contextos cortos, donde no quería llenarlo de operaciones int(), por ejemplo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor fgalves » 2007-06-20 10:01 @459

Hola a todos,
Explorer, no había leído hasta el día de hoy tu respuesta a ese post y me he quedado un poco perl-plejo ;).

Tienes toda la razón del mundo: soy un petardo en Perl y por ese motivo hasta el día de hoy no me he atrevido a plantear una sola duda en la sección "Intermedio" u "Experto".

El gran problema que tengo es que se me plantean continuamente modificaciones a hacer y debido a la escasez de tiempo la uúica forma que tengo de aprender Perl pues es esa: haciendo las modificaciones y aprendiendo al mismo tiempo con ellas. Por eso, no te debe extrañar lo "absurdo" (llámalo como quieras) de algunas de mis preguntas y dudas.

Y lo de pedir a mi jefe que me compre un libro de Perl... que quieres que te diga... ;) Le pido eso y me manda a tomar por donde todos sabemos. Así es la vida. En las grandes empresas no están para esos trotes: hay que minimizar el tiempo y maximizar la productividad. Y lo peor es que te meten en un proyecto en Perl cuando tu has sido contratado para implementar en C...

Como ya he dicho, así es la vida y yo intento sacar lo positivo de las cosas: un lenguaje nuevo que estoy aprendiendo.

De todos modos, te agradezco muchísimo tus consejos y se que son los buenos. Se que esa es la manera de aprender el lenguaje como Dios manda y no a "cachitos" como es mi caso.

Yo no tengo más que palabras positivas para esta web (y en especial para ti): desde el principio me habéis ayudado muchísimo, resolviendo casi el 100% de mis dudas con mucha rapidez además. Se nota que sois profesionales y desde aquí os mando un gran saludo y mucho ánimo para continuar y seguir aguantando mis dudas ¡y las de muchos perleros novatos!

Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor explorer » 2007-06-20 11:07 @505

fgalves escribiste:Tienes toda la razón del mundo: soy un petardo en Perl y por ese motivo hasta el día de hoy no me he atrevido a plantear una sola duda en la sección "Intermedio" u "Experto".
Pues menos mal que no la pusiste en la de 'Experto' :-) En serio, no hagas mucho caso. Lo que pasa es que a veces me pongo borde con una persona cuando le digo por cuarta vez que tiene que consultar el manual, sin pararme a pensar que quizás no puede hacer precisamente eso. O por tiempo o por idioma.

fgalves escribiste:El gran problema que tengo es que se me plantean continuamente modificaciones a hacer y debido a la escasez de tiempo la única forma que tengo de aprender Perl pues es esa: haciendo las modificaciones y aprendiendo al mismo tiempo con ellas. Por eso, no te debe extrañar lo "absurdo" (llámalo como quieras) de algunas de mis preguntas y dudas.
Mira, a mí me pasó eso: llegué a un departamento donde se programaba en C. Yo había sido profesor de C e incluso una de mis alumnas estaba por allí. Un día me encontré que había algunos scripts que modificar en la parte web. Estaban en Perl y ni te cuento la 'calidad' del código, pues habían sido escritos por otro 'francotirador' (término que se ajusta al informático que sirve para todo, pero no llega al nivel de 'todoterreno'). Bueno, pues el caso es que me pidieron hacer más scripts para: pasar ficheros de un ordenador a otro bajo ciertas circunstancias o a determinadas horas del día, lanzar correos de aviso, o avisos al messenger de los Windows o que tal cliente había dejado un fichero en el FTP, etc. etc.

Cada uno de estos pequeños problemas los podía haber resuelto en Bash Shell y así es como lo hice al principio, pero resulta que Perl lo tenía oído desde hacía tiempo y pensé que ya era hora de darle una oportunidad. Así que me compré libros y me leí tutoriales y manuales.

Me animé a 'pasar' algunos de los scripts hechos, desde Bash Shell a Perl e incluso me atreví a hacer alguno directamente ya en Perl. Como el resultado fue bueno, al ser pequeños programas, pero muy potentes, gracias a las expresiones regulares, seguí aprendiendo más, en ratos libres.

A medida de que los jefes me pedían cosas, del tipo... "Joaquín, ¿se puede hacer un programa que haga esto y esto y esto?" la respuesta cada vez más era "Sí, se puede", y cada vez más con un "en un rato".

Un día el jefe 'descubrió' que yo programaba en Perl. Le llamó la atención e incluso puso cara de disgusto, porque "lo normal en una empresa es que todo se haga con el mismo lenguaje". No le faltaba razón, pero si yo hubiera hecho en C todo lo que ya tenía hecho en Perl, aún estaríamos a mitad de proyecto. De hecho, el director técnico me dijo que no le hiciera caso y que siguiera así.

Pasaron 4 años y ahora se habían vuelto las tornas: era yo el que hacía los programas en Perl mucho más grandes que los de C (miles de líneas) y no hace falta contar el tiempo que ahorramos y que 'animó' al jefe a preparar más presupuestos y conseguir más clientes y atacar a proyectos aún más ambiciosos. Incluso el director técnico se animó a recibir alguna clase de Perl y dí algún cursillo interno, pero ya sólo me dio tiempo a hacer unas demos para que el resto de programadores vieran lo que se podía hacer y que era y es una herramienta válida y perfecta para un número muy alto de aplicaciones.

Y para nada es desmerecer lo que se hacía con otros lenguajes. De hecho, muchas rutinas en C se integraron directamente en C (con el Inline::C) o se programaba con la librería matemática PDL (también en C).

fgalves escribiste:Y lo de pedir a mi jefe que me compre un libro de Perl... que quieres que te diga... ;) Le pido eso y me manda a tomar por donde todos sabemos. Así es la vida. En las grandes empresas no están para esos trotes: hay que minimizar el tiempo y maximizar la productividad. Y lo peor es que te meten en un proyecto en Perl cuando tu has sido contratado para implementar en C...
Bueno... eso depende...

Si ves que tus 'apaños' de Perl son momentáneos, pues con lo que haces ahora, te vale. Pero si ves que lo hecho hasta ahora te podría valer para el futuro, pues te lo puedes plantear como una mejora de tu currículo. Lo haces fuera de la empresa, repasas el inglés, y dentro de un año te marchas a Londres a ganar 79.000€/año. Adiós al jefe.

También le puedes decir que los programadores de Perl solemos ser 2,41 veces más productivos que uno de Java, haciendo programas 2,5 veces más cortos :-) (no he visto esta estadística relacionada con otros lenguajes).

fgalves escribiste:Como ya he dicho, así es la vida y yo intento sacar lo positivo de las cosas: un lenguaje nuevo que estoy aprendiendo.
Bueno, ¿cómo aprendiste C? Pues te lo puedes plantear de la misma manera. Aquí Zeokat se lo ha planteado en serio, con ejercicios. Yo al principio fui más teórico (me gusta más leer).

fgalves escribiste:De todos modos, te agradezco muchísimo tus consejos y se que son los buenos. Se que esa es la manera de aprender el lenguaje como Dios manda y no a "cachitos" como es mi caso.
Puedes aprender otros lenguajes. Ruby está de moda, pero me parece demasiado simple. Python está bien siempre y cuando seas transigente con su sistema de indentación y encuentres la única forma de resolver un problema (¡uf!). Java te dará de comer (está de moda), después de terminar de pagar el gigantesco servidor capaz de mover su máquina virtual. C# también, siempre y cuando no te encuentres con la dichosa DLL que se cuelga de forma aleatoria en los días de luna llena. Perl está bien si quieres romperte la cabeza buscando el módulo que sabes que existe y que resolverá tu problema en un par de líneas. :-)

fgalves escribiste:Yo no tengo más que palabras positivas para esta web (y en especial para ti): desde el principio me habéis ayudado muchísimo, resolviendo casi el 100% de mis dudas con mucha rapidez además. Se nota que sois profesionales y desde aquí os mando un gran saludo y mucho ánimo para continuar y seguir aguantando mis dudas ¡y las de muchos perleros novatos!
Aquí estaremos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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