Calcular el valor de la sumatoria: 1 + 2 + 3 + 4 + 5 + ... + 100.

344 views
Skip to first unread message

Daniel Ajoy

unread,
May 12, 2007, 1:11:25 AM5/12/07
to matemati...@lcampino.cl, educacion-...@yahoogrupos.com.mx, log...@googlegroups.com
----------------
del documento: AlgoritmosProgramacion.pdf

Esto es MicroMundos


EJEMPLO 3-9
Calcular el valor de la sumatoria: 1 + 2 + 3 + 4 + 5 + ... + 100.


ANÁLISIS DEL PROBLEMA
Formular el problema: Ya se encuentra claramente formulado.
Resultados esperados: El resultado de la suma de los números
entre 1 y 100.
Datos disponibles: El rango de números dado.
Restricciones: Ninguna.
Procesos necesarios: guardar el número 0 en una variable e
incrementarla en 1 cada vez que se ejecute el ciclo repetitivo.
Guardar 0 en otra variable e ir acumulando en ella su propio valor
más el valor de la primera variable.


para suma100a
bnombres
da "contador 0
da "sumatoria 0
repite 100
[
da "contador :contador + 1
da "sumatoria :sumatoria + :contador
muestra nombres
]
muestra frase
[El valor de la suma 1 + 2 + 3 + . . . + 100 es ] :sumatoria
fin

----------------


En simple FMSLogo:

muestra aplica "adicion SecEnt 1 100
5050

(nótese que este "programa" tiene sólo una línea, no es un
procedimiento y no tiene ninguna variable. Pero resuelve el
problema! Creo que un problema bastante mínimo se merece una
solución bastante mínima)

o

muestra invoca [[n] :n * (:n + 1) / 2] 100
5050

o

muestra invoca [? * (? + 1) / 2] 100
5050


en LogoFe sería:

logofe
LogoFE Cargado para FMSLogo!

muestra suma serie [1 1 100]
5050


podemos definir una función llamada sumatoria.explicita:

muestra suma serie frase [1 1] 100
5050


funciona "sumatoria.explicita [suma serie frase [1 1]]

muestra sumatoria.explicita 100
5050

Y graficarla:

graflineas [] recorrido [sumatoria.explicita ?] dominio [1 100 100]

y ver que tiene cara de parábola.

Y luego encontrar los mejores coeficientes de esa parábola:

muestra calzapoli lista 2 trans recorrido [sumatoria.explicita ?]
dominio [1 100 10]

[0.5 0.5 0]

Y ver que eso nos da:

1/2 * n^2 + 1/2 * n + 0

que es:

n^2 / 2 + n / 2 = (n^2 + n) / 2 = n * (n + 1) / 2

que es con lo que Mr. Gauss dejó loco a su profesor de
primaria...


Daniel

Suma100.gif

Raúl Duque

unread,
May 12, 2007, 8:27:12 AM5/12/07
to log...@googlegroups.com
Que tal lista:

Hablan mucho de las versiones LogoFE y FMSLogo, tienen algún link donde comparen estas dos versiones para conocer las ventajas/desventajas de cada una??

Gracias.

Saludos,

RAUL ANDRES DUQUE M.
Bogota, Colombia
rdu...@usa.com
rauland...@hotmail.com

> The following section of this message contains a file attachment
> prepared for transmission using the Internet MIME message format.
> If you are using Pegasus Mail, or any other MIME-compliant system,
> you should be able to save it or view it from within your mailer.
> If you cannot, please ask your system administrator for assistance.
>
> ---- File information -----------
> File: Suma100.gif
> Date: 12 May 2007, 0:09
> Size: 4247 bytes.
> Type: GIF-image
> << Suma100.gif >><BR>

>

lrcvs

unread,
May 12, 2007, 8:49:33 AM5/12/07
to da....@gmail.com
Te adjunto una forma mas de hacer la sumatoria de un numero:
 
para Sxx
haz "x 100
haz "a 0
haz "b 0
repite :x [haz "b :b + :a haz "a :a +1]
es :b + :x
fin
 
 
Atte.: Luis Belmonte
 
Saludos




LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com

Daniel Ajoy

unread,
May 12, 2007, 12:01:32 PM5/12/07
to lo...@me.gov.ar
On 12 May 2007 at 7:27, Raúl Duque wrote:

> Que tal lista:
>
> Hablan mucho de las versiones LogoFE y FMSLogo, tienen algún link
> donde comparen estas dos versiones para conocer las
> ventajas/desventajas de cada una??
>
> Gracias.
>

Hola Raúl,

Estaríamos comparando manzanas con peras.

LogoFE es un conjunto de procedimientos en Logo.
http://mondragon.angeltowns.net/logofe/

FMSLogo es un Logo.
http://mondragon.angeltowns.net/paradiso/VersionesLogo.html

Daniel

_______________________________________________
Lista Logo en Español
Para cualquier consulta escribir a: logo-...@mailman.me.gov.ar
lo...@me.gov.ar
www.mundologo.com.ar
http://mailman.me.gov.ar/mailman/listinfo/logo

Daniel Ajoy

unread,
May 15, 2007, 12:53:25 PM5/15/07
to Proyecto Matematicas Libre, log...@googlegroups.com
On 15 May 2007 at 7:01, Igor TAmara wrote:

> La programación sobrepasa en cierta medida los niveles de
> abstracción básicos que se ven en el colegio, por ejemplo, el niño
> aprende el concepto de número y después el concepto de variable, la
> cual puede almacenar un número o puede tomar ciertos valores. Como
> explico más adelante, en la misma notación de funciones, se habla de
> variables, así que no creo que sea tan sencillo obviar el concepto.

Yo diría que es posible computar sin variables. Y una vez que se
adquiere un poquito de experiencia es divertido.

Así se programa por ejemplo en J y en FP, también en LogoFE.

La idea es computar sólo usando composición de funciones.

por ejemplo, veamos tu código en Python para calcular los
números pares hasta el 20:

print [a for a in xrange(20) if a%2==0]

vemos que aquí se usa la variable "a", pero bien podría
usarse la variable "dummy", o cualquier otra:

print [dummy for dummy in xrange(20) if dummy%2==0]

vemos entonces que esta variable sirve más bien para
"guardar el puesto", para indicar "este elemento con el
que estoy trabajado", es una referencia. No estoy seguro
de que sea un lugar de almacenamiento.


Ahora veamos el mismo cálculo en Logofe:

logofe
LogoFE Cargado para FMSLogo!

muestra serie [1 1 20]
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]

Lo siguiente significa, a cada uno de los elementos
de la serie, sácale el modulo 2. (el residuo de dividir
entre 2)

muestra impon [modul dista 2] serie [1 1 20]
[1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0]

vemos que no usamos ninguna variable, porque no necesitamos
referirnos a ningun elemento específico, simplemente
decimos "a cada uno".

vemos que
el residuo de dividir 1 entre 2 es 1,
el residuo de dividir 2 entre 2 es 0,
el residuo de dividir 3 entre 2 es 1,
el residuo de dividir 4 entre 2 es 0,
...

podemos usar esos 1s y 0s para escoger los elementos
pares de nuestra serie, LogoFE tiene una función
llamada "escoge":

muestra escoge [modul dista 2] serie [1 1 20]
[1 3 5 7 9 11 13 15 17 19]

El problema fue que "escoge" escoge los elementos que
corresponden con 1s, es decir escogió los impares.

Pero eso es fácil de solucionar porque, el
"complemento" de 1 es 0 y el de 0 es 1:

muestra comp 0
1

muestra comp 1
0

muestra impon [comp modul dista 2] serie [1 1 20]
[0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1]

muestra escoge [comp modul dista 2] serie [1 1 20]
[2 4 6 8 10 12 14 16 18 20]

vemos que no hemos necesitado usar variables. Lo
anterior es simplemente la aplicación de la función
"escoge" a lo que devuelve serie.

Es una composición de funciones, que, si nos gustan
los paréntesis, se podría ver así:

escoge(funfiltro,serie([1 1 20]))


Encontrar números pares es algo bastante básico,
¿pero los números primos?...


muestra impon [factora] serie [1 1 10]
[[1] [2] [3] [2 2] [5] [2 3] [7] [2 2 2] [3 3] [2 5]]

muestra impon [cuenta factora] serie [1 1 10]
[1 1 1 2 1 2 1 3 2 2]

muestra impon [esigual lista 1 cuenta factora] serie [1 1 10]
[1 1 1 0 1 0 1 0 0 0]

muestra escoge [esigual lista 1 cuenta factora] serie [1 1 10]
[1 2 3 5 7]

muestra escoge [esigual lista 1 cuenta factora] serie [1 1 100]

[1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97]


Daniel

Daniel Ajoy

unread,
May 18, 2007, 10:45:31 AM5/18/07
to Proyecto Matematicas Libre, lo...@me.gov.ar
On 17 May 2007 at 22:21, Igor TAmara wrote:

> Daniel> Me quedó la duda... en qué notas que [la sintaxis de MicroMundos]
> Daniel> luce primitiva?
>
> Siento como un cierto olorcillo por ahí a Fortran con definición de
> procedimientos, posiblemente es simple costumbre al usar otros
> lenguajes :)

MicroMundos tiene el problema, quizá no muy importante, que no
se preocupa mucho de la administración de código, es decir, en
el ambiente de trabajo de MicroMundos no hay:

colorización de código
indentación automática de código
herramientas de depuración (excepto "escribe" :)
formas de crear bibliotecas o paquetes de código

MicroMundos tampoco viene con estructuras de lazo comunes, como:

mientras
hasta
haz.mientras
haz.hasta

aunque todas estas pueden programarse en MicroMundos mismo.

Por otro lado, las capacidades para crear animaciones y juegos
son mejores en MicroMundos que en cualquier otra versión de
Logo.


> En C incluso, usas menos código para clonar el ciclo que está
> propuesto ahí...
>
> Como sabes, estoy en total desacuerdo en el uso de micromundos,
> debido a que los contenidos quedan sometidos a la compra de
> licencias, ojalá podamos popularizar el uso de herramientas
> abiertas a aquellos que todavía las desconocen.
>
> Has tenido la oportunidad de contar con librerías para acceder al
> API de Gnuplot? o tal vez ver un poco más de cerca Squeak?

En mi tesis de ingeniería usé gráficos de programados en GNUPlot,
directamente. Era impráctico usar una hoja de cálculo porque
hubiese tenido que cortar y pegar a mano los datos generados
cada vez que quisiera visualizarlos.

Yo también creo que tiene más sentido para las escuelas
maximizar su uso de software libre.

Por mi parte uso una versión libre de Logo en español llamada
FMSLogo.
El problema es que funciona únicamente en Windows.

Existe un par de versiones libres de Logo para Linux: Xlogo
(corre en Java) y UCBLogo

Por un tiempo estaba entusiasmado en mantener una traducción
de UCBLogo, se llama LogoES. El problema aquí fue que el
entusiasmo por LogoES se limitaba a... mi :)

La verdad es que UCBLogo es un poco feo.


Una ventaja de Logo en general en el aprendizaje de matemáticas
es que la pantalla de gráficos ("canvas" dirían en otros lenguajes)
está lista para ser usada. En todos los Logos, inmediatamente
después de iniciarlos, puedes teclear:

avanza 100

o

adelante 100

y la "tortuga" (cursor gráfico) dibujará una línea de 100 pasos de
tortuga (pixeles) en la pantalla.


Desde hace algunos años ya no necesito usar para mis
experimentaciones una herramienta extra (como GNUPlot) para hacer
gráficas de barras o de líneas 2D.

Usando instrucciones como "avanza 100" programamos una biblioteca
libre de procedimientos que las hacen. Esto permite generar datos
de experimentos con programación y hacer gráficos con ellos para
visualizarlos. Un ejemplo típico que se me viene a la mente es el
de lanzamiento de monedas. Otro ejemplo es el que puse hace algunos
días aquí mismo: ver cómo la sumatoria de naturales forma una curva
parabólica.

http://mondragon.angeltowns.net/logofe/pages/p32.htm

Daniel Ajoy

unread,
May 8, 2008, 7:12:01 PM5/8/08
to LogoES
Oh, entonces quizá la gente del foro sepa.

------- Forwarded message -------
From: "jorge apablaza espinoza" <jorge_a...@live.cl>
To: "Daniel Ajoy" <da....@gmail.com>
Subject: RE: Calcular el valor de la sumatoria: 1 + 2 + 3 + 4 + 5 + ... + 100.
Date: Thu, 08 May 2008 17:34:35 -0500

> > Bueno soy nuevo....
> > Creo que lo de la sumatoria es muy bueno...
> > pero existe una forma de hacerlo mentalmente...
> > ;) con una super formula
> > eso seria muchas gracias
> >
>
>
> no se

Bueno Daniel yo soy jorge y sabes que soy nuevo en el foro....
La cosa es que existe otra forma.....
;) cuidate y saludos


da....@gmail.com

unread,
May 8, 2008, 7:31:11 PM5/8/08
to LogoES
> Bueno Daniel yo soy jorge y sabes que soy nuevo en el foro....
> La cosa es que existe otra forma.....
> ;) cuidate y saludos

ya me acordé:

http://groups.google.com.ec/group/logoes/msg/d7f6c497fe3c8ea8
Reply all
Reply to author
Forward
0 new messages