[Solar-cdeducacion] Soft para aprender a programar....

Daniel Ajoy dajoy en openworldlearning.org
Lun Sep 27 18:35:22 CEST 2004


	From:	El Profe Roman <romangelbort en yahoo.com.ar>


El Dom 26 Sep 2004 10:58, Daniel Ajoy escribió:
> > Sinceramente yo pensé algo similar: la idea del pseudo
> > código es que sea código en lenguaje natural, con lo que no
> > se puede pautar una sintaxis precisa para un intérprete,
> > pero de todas formas este intérprete sirve para que los
> > alumnos programen en un lenguaje en castellano.
>
> Para programar en castellano podrían usar Logo. La
> traducción de MSWLogo propuesta es completamente
> en castellano, incluso el manual de referencia y los ejemplos.
>
> Daniel

> Suponiendo que quiero que realicen este programa, ¿como sería el código con 
> mswlogo?
> 
> "Ingresar 15 números, e informar, cual es el mayor de los ingresados."

No quiero asustarles, pero ya que Logo es un lenguaje de programación
entre procedimental y funcional, incorpora funciones comunes de 
programación funcional, entre ellas "reduce", o también llamada "fold".

Lo siguiente es la forma en la que se haría naturalmente el Logo,
PERO ciertamente se lo puede hacer de la forma estructurada.


para max :a :b
devuelve sisino :a > :b [:a] [:b]
fin

escribe reduce "max [2 3 8 7 9 0]
9

escribe reduce "max leelista
1 1 1 1 100 1 1 1 1 1 2 1 1 1 1 

100

escribe reduce "max leelista
1 1 1 1 -100 1 1 1 1 1 2 1 1 1 1 

2

Sin "reduce", se me ocurre una forma recursiva así:

para max.muchos :lista
 si vacio? menosprimero :lista [devuelve primero :lista] 
 devuelve max primero :lista max.muchos menosprimero :lista
fin

escribe max.muchos [1 1 1 1 100 1 1 1 1 1 2 1 1 1 1]
100

escribe max.muchos [1 1 1 1 -100 1 1 1 1 1 2 1 1 1 1]
2

que funciona para cualquier candidad de elementos en la lista,
excepto 0.

Si quieren usemos arreglos e índices en lugar de listas:

para max.muchos2 :arreglo
 haz "max elemento 1 :arreglo
 desde [i 2 15 1] [
  si :max < elemento :i :arreglo [haz "max elemento :i :arreglo]
 ]
 devuelve :max
fin

escribe max.muchos2 {1 1 1 1 100 1 1 1 1 1 2 1 1 1 1}
100

escribe max.muchos2 {1 1 1 1 -100 1 1 1 1 1 2 1 1 1 1}
2

escribe max.muchos2 {1 1 1 1 -100 1 1 1 1 1 2 1 1 1 4}
4

escribe max.muchos2 {7 1 1 1 -100 1 1 1 1 1 2 1 1 1 4}
7


>   // Prog que suma 10 nros
>   Programa Suma
>     Para contador<=1 hasta 10 hacer
>       escribir 'Ingrese un numero';
>       leer numero;
>       total<=total+numero;
>     FinPara
>     Escribir 'El resultado es:',total;
>   FinPrograma

Así luciría en Logo:

para suma10a
 haz "total 0
 repite 10 [
  escribe [Ingrese un numero]
  haz "numero leepalabra
  haz "total :total + :numero
 ]
 escribe frase [El resultado es:] :total
fin

También podría hacerse usando "preguntabox":

para suma10b
 haz "total 0
 repite 10 [
  haz "numero primero preguntabox [Pregunta] [Ingrese un numero]
  haz "total :total + :numero
 ]
 escribe frase [El resultado es:] :total
fin

O simplemente desde la misma "Area de Trabajo":

escribe reduce "suma [1 2 3 4 5 6 7 8 9 10]
55




> ¿A quién tendría que escribir para saber cuál es la licencia de mswlogo?


Está en el paquete de instalación (que también viene con el código fuente)




		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991
		
	*VER NOTA AL PIE DEL DOCUMENTO(TRADUCCIÓN A ESPAÑOL)*


		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                          675 Mass Ave, Cambridge, MA 02139, USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.



> o ¿Dónde puedo encontrarla?


http://tinyurl.com/25rgh







Más información sobre la lista de distribución Solar-cdeducacion