¿Qué es lo mejor que puedes hacer en <10 líneas de código simple? ¡Ayúdame a inspirar a los principiantes! [cerrado]

406

Estoy buscando lo mejor que puedes hacer en unas pocas líneas de código simple. Estoy seguro de que puedes escribir un conjunto de Mandelbrot en Haskell en 15 líneas, pero es difícil de seguir.

Mi objetivo es inspirar a los estudiantes que la programación es genial .

Nosotros sabemos que la programación es genial, porque se puede crear cualquier cosa que imagine - es la última salida creativa. Quiero inspirar a estos principiantes y superar la mayor cantidad posible de jorobas de aprendizaje temprano.

Ahora, mis razones son egoístas. Estoy enseñando un curso de Introducción a la Computación a un grupo de 60 estudiantes de mitad de ingeniería y mitad de negocios; Todos los estudiantes de primer año. Son los estudiantes que vinieron de escuelas secundarias desfavorecidas. A partir de mi experiencia pasada, el grupo se divide en general, de la siguiente manera: un par de estrellas de rock , algunos que tratan muy duro y tipo de conseguirlo, los pocos que tratan muy duro y casi no lo consigue, y los pocos que no me importa. Quiero llegar a tantos de estos grupos tan efectivamente como pueda. Aquí hay un ejemplo de cómo usaría un programa de computadora para enseñar:

Aquí hay un ejemplo de lo que estoy buscando: un script VBS de 1 línea para que su computadora se comunique con usted:

CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it")

Podría usar esto para demostrar el orden de las operaciones. Mostraría el código, dejaría que jugaran con él, y luego les explicaría que están sucediendo muchas cosas en esa línea, pero la computadora puede entenderlo porque conoce las reglas. Entonces les mostraría algo como esto:

4(5*5) / 10 + 9(.25 + .75)

Y puedes ver que lo primero que necesito hacer es (5 * 5). Entonces puedo multiplicar por 4. Y ahora he creado el Objeto. Dividir por 10 es lo mismo que llamar a Speak: no puedo hablar antes de tener un objeto, y no puedo dividir antes de tener 100. Luego, en el otro lado, primero creo un InputBox con algunas instrucciones sobre cómo mostrarlo. . Cuando presiono enter en el cuadro de entrada, evalúa o "devuelve" lo que haya ingresado. (Sugerencia: 'oooooo' hace un sonido gracioso) Entonces, cuando digo Hablar, el lado derecho es qué hablar. Y lo obtengo de InputBox.

Entonces, cuando haces varias cosas en una línea, como:

x = 14 + y;

Debes ser consciente del orden de las cosas. Primero agregamos 14 e y. Luego colocamos el resultado (lo que evalúa o devuelve) en x.

Ese es mi objetivo, tener un montón de estos ejemplos geniales para demostrar y enseñar a la clase mientras se divierten. Probé este ejemplo con mi compañera de cuarto y, aunque puede que no lo use como la primera lección, a ella le gustó y aprendió algo.

Algunos buenos programas matemáticos que hacen gráficos o formas hermosas que son fáciles de entender serían buenas ideas y las analizaré. Aquí hay algunos ejemplos complicados de ActionScript, pero eso es demasiado avanzado y no puedo enseñar flash. ¿Qué otras ideas tienes?

George Stocker
fuente
102
Creo que las preguntas sobre cómo enseñar programación son excelentes y no triviales. Buena suerte con lo que intentas hacer.
Mike Dunlavey
66
"Mi objetivo es inspirar a los estudiantes a que la programación sea genial". No creo que puedas decirle a la gente que la programación es genial. O les gusta o no.
Rik
2
¡Tu script VBS de una línea no funciona en mi Mac! :-P Buena pregunta sin embargo.
John Topley
1
Siempre me gusta este tipo de cosas, pero a quién estás tratando de impresionar, la junta de Sierpinski me haría un buen trabajo. Para una persona de TI, algo puede crear archivos, para algunas personas hacer que la computadora hable sería impresionante, y así sucesivamente. Entonces, lo que importa es el público objetivo, luego se define qué es genial.
Oakcool
55
83 personas votaron por el comentario sobre cómo esta pregunta es "excelente y no trivial" ... cerrada como "no constructiva" por 5 personas que aparentemente no están de acuerdo. ¿No es poder grandioso?
rg88

Respuestas:

78

Recibí una gran respuesta de mis hijos con un script VB rápido para manipular un personaje de Microsoft Agent. Para aquellos que no están familiarizados con MS Agent, es una serie de personajes animados en pantalla que se pueden manipular a través de una interfaz COM. Puede descargar el código y los caracteres en la página de descarga del Agente de Microsoft .

Las siguientes líneas harán que el personaje de Merlín aparezca en la pantalla, vuele, toque la pantalla para llamar su atención y salude.

agentName = "Merlin"
agentPath = "c:\windows\msagent\chars\" & agentName & ".acs"
Set agent = CreateObject("Agent.Control.2")

agent.Connected = TRUE
agent.Characters.Load agentName, agentPath
Set character = agent.Characters.Character(agentName)

character.Show

character.MoveTo 500, 400
character.Play "GetAttention"
character.Speak "Hello, how are you?"
Wscript.Sleep 15000
character.Stop
character.Play "Hide"

Hay muchos otros comandos que puedes usar. Chequehttp://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx para más información.

EDITAR 2011-09-02 Recientemente descubrí que Microsoft Agent no está instalado de forma nativa en Windows 7. Sin embargo, se ofrece como una descarga por separado aquí . No he probado esto, así que no puedo verificar si funciona.

Bob Mc
fuente
Eso es genial. Esto merece mucho más votos a favor.
Tom Ritter
Gracias por el reconocimiento Tom. Es una lástima que no obtenga puntos de repetición, incluso si comienza a recibir votos a favor. :-P
Bob Mc
32
De esta manera puede ver el clip todo el tiempo : D
Pedery
8
@Bob BASIC es un lenguaje para principiantes. VB no es BÁSICO. VB es la navaja suiza que MS creó para satisfacer la necesidad en ese momento. Hoy en día, hay herramientas mucho mejores (mucho más especializadas) para ocupar su lugar. VB no es un mal lenguaje, solo tiene mucho exceso de equipaje. Si tuviera que dar una razón completamente imparcial por la que no usarlo, sería porque la EM está disminuyendo lentamente el soporte para VB. Es un lenguaje moribundo. Solo espere hasta que las secuencias de comandos de Office se realicen con JavaScript (que se planifica en un futuro próximo), entonces el declive de VB será algo seguro.
Evan Plaice
3
@Evan - Gracias por la respuesta justa, en lugar de algo religioso. Bien hecho. No había escuchado sobre el movimiento Javascript de Office. Investigaré.
Bob Mc
339

Ingrese este código en su barra de direcciones (en su navegador) y presione Intro. ¡Entonces puedes editar todo el contenido de la página web!

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

Ese es el "one-liner" más genial que conozco =)

Espen Herseth Halvorsen
fuente
95
"One-liner" es un nombre inapropiado. Eso son 3 líneas, de verdad. Cualquier código puede ser una línea si así lo desea.
DisgruntledGoat
55
Esto se ve muy bien, pero ¿hay alguna manera de obtener la página una vez que se modifica?
Sylverdrag el
51
Me gusta tanto, ¡te voté 999999999 veces! img707.imageshack.us/img707/4843/jshack.png
JRL
44
Esto ya no es cierto en Firefox ya que javascript se ha deshabilitado. Es una pena.
2
@DisgruntledGoat, javascript:y void 0son repetitivos: el equivalente de int main() {y return 0; }en C. Y las otras dos líneas son solo API de navegador diferentes que hacen lo mismo: la primera es la API de IE, la segunda es la API de NetScape. HTML5 utiliza contentEditable, por lo que, a menos que le importe admitir Firefox 1.5 o algo así, el código real equivale a:document.body.contentEditable='true';
Zarel
201

Cuando escribí esto por primera vez.

10 PRINT "What is your name?"
20 INPUT A$
30 PRINT "Hello " A$
40 GOTO 30

Se voló la gente! ¡La computadora recordó su nombre!

EDITAR: solo para agregar a esto. Si puede convencer a un nuevo programador, esto es lo mejor que puede hacer, se convertirán en buenos programadores. En estos días, puede hacer casi cualquier cosa que desee con una línea de código para ejecutar una biblioteca que alguien más escribió. Personalmente no obtengo ninguna satisfacción al hacerlo y veo pocos beneficios en enseñarlo.

Robin Day
fuente
15
sería mejor con lo siguiente: 40 GOTO 30
gastador
8
+1 para mostrar el nombre de usuario, a las personas siempre les encanta que se muestre su propio nombre. @saua, ¿cómo es que no es un ciclo de impresión infinito? Vuelve a la línea 30, no a la línea 20.
z -
13
En caso de ser así seguramente Goto 10 somone más puede entrar en emabrgo nombre ...
Omar Kooheji
17
Has olvidado 35 PRINT CHR $ (7)
Adam Jaskiewicz
66
así es como aprendí a programar también. Es la mejor respuesta de la OMI. +1 para aceptar este
haga clic en Votación
180

PHP: la junta de Sierpinski, también conocida como la Trifuerza

OK, son 15 líneas de código, ¡pero el resultado es increíble! Ese es el tipo de cosas que me hicieron enloquecer cuando era niño. Esto es del manual de PHP:

$x = 200;
$y = 200;

$gd = imagecreatetruecolor($x, $y);

$corners[0] = array('x' => 100, 'y' =>  10);
$corners[1] = array('x' =>   0, 'y' => 190);
$corners[2] = array('x' => 200, 'y' => 190);

$red = imagecolorallocate($gd, 255, 0, 0); 

for ($i = 0; $i < 100000; $i++) {
  imagesetpixel($gd, round($x),round($y), $red);
  $a = rand(0, 2);
  $x = ($x + $corners[$a]['x']) / 2;
  $y = ($y + $corners[$a]['y']) / 2;
}

header('Content-Type: image/png');
imagepng($gd);

junta sierpinski

markus
fuente
25
Para el registro, esa es una junta de Sierpinski.
caos
66
Eso es increíble, pero creo que debería llegar a la mitad del curso, porque se basa en una serie de conceptos, como bucles y matrices.
Mike Dunlavey
44
@Masi: la idea general es tener tres puntos fijos que son las esquinas del triángulo y un punto "actual" que sigas actualizando. Para hacer un movimiento, elija una de las esquinas al azar y mueva el punto actual la mitad del camino hacia esa esquina. Color en el punto actual. Luego haga otro movimiento de la misma manera, y luego nuevamente unos miles de veces más y aparecerá el patrón. Luego, pruébelo con un número diferente de esquinas, o cambie la fracción por la cual el punto actual salta hacia la esquina, para ver cómo afecta el patrón.
Daniel Earwicker
18
Para el registro, esa no es una junta de Sierpinski ... Es, de hecho, la Trifuerza. es.wikipedia.org/wiki/The_Legend_of_Zelda
jason
2
Este código me parece extraño porque normalmente veo esto hecho con recursividad (también con muy pocas líneas de código). De hecho, los fractales son una buena introducción a la recursividad en las clases de informática. Pero me parece que este código será bastante ineficiente, pintando y repintando muchos píxeles debido a su enfoque aleatorio.
Steve Wortham
105

Microsoft tiene Small Basic , un IDE para "niños".

pic = Flickr.GetRandomPicture("beach")
Desktop.SetWallpaper(pic)

Está específicamente diseñado para mostrar cuán genial es la programación.

Bob Fanger
fuente
80
Esto realmente apesta, porque estas llamadas a la biblioteca parecen mágicas. Los estás configurando para ser niños de script VB. Me temo que nunca se esconderán en esa área de "magia oscura" y se quedarán en el área de plomería "segura". ... ¡Oh, mira cómo hacer un navegador de Internet en una línea! MSIEControl (.. blabla lo que sea ...). Show ()
hasen
88
No creo que los niños sean idiotas. Si los entusiasma con las posibilidades de programación, descubrirán cómo hacer cosas más avanzadas por su cuenta. Por lo menos, los jóvenes infectados con testosterona tratarían de aprender las cosas más misteriosas y misteriosas antes de que sepas lo que sucedió.
Tim Lin
28
@hansen j, eso es injusto, todos tienen que comenzar en algún lugar.
John Farrell
30
Este no es un título de CS para niños, es un juguete de programación. Cualquiera que sea esa puerta de entrada, es hacer que los niños vean el lado divertido de la programación que es genial, no necesita ser ASM.
Copas
29
Conociendo a los niños que he tratado de enseñar, pasarían unos diez segundos antes de que intenten pic = Flickr.GetRandomPicture ("boobs")
Iain Galloway
83

Tiendo a pensar que las personas están impresionadas con cosas con las que pueden relacionarse o que son relevantes para sus vidas. Intentaría basar mis 10 líneas de código en algo que ellos saben y entienden. Tomemos, por ejemplo, Twitter y su API. ¿Por qué no utilizar esta API para crear algo que sea genial? Las siguientes 10 líneas de código devolverán la "línea de tiempo pública" de Twitter y la mostrarán en una aplicación de consola ...

using (var xmlr = XmlReader.Create("http://twitter.com/statuses/public_timeline.rss"))
    {
        SyndicationFeed
            .Load(xmlr)
            .GetRss20Formatter()
            .Feed
            .Items        
            .ToList()
            .ForEach( x => Console.WriteLine(x.Title.Text));
    }

Mi ejemplo de código podría no ser el mejor para sus alumnos. Está escrito en C # y usa .NET 3.5. Entonces, si les va a enseñar PHP, Java o C ++, esto no será útil. Sin embargo, mi punto es que al asociar sus 10 líneas de código con algo "genial, interesante y relevante para los estudiantes, su muestra también se vuelve genial, interesante y relevante.

¡Buena suerte!

[Sí, sé que me he perdido algunas líneas de usar declaraciones y el método Main, pero supongo que las 10 líneas no tenían que ser literalmente 10 líneas]

Martin Peck
fuente
Esto es realmente genial! No estaba familiarizado con el objeto SyndicationFeed, ¡gracias por el código!
Tad Donaghe
El público objetivo no son geeks, ergo, ¿les importa un comino el tweeter?
Peufeu
80

Este es un servidor Telnet de Python que le pedirá el nombre de los usuarios y los saludará. Esto se ve genial porque te estás comunicando con tu programa desde una computadora diferente a través de la red.

from socket import *
s=socket(AF_INET, SOCK_STREAM)
s.bind(("", 3333))
s.listen(5)
while 1:
   (c, a) = s.accept()
   c.send("What is your name? ")
   name = c.recv(100)
   c.send("Hello "+name)
   c.close()
usuario17918
fuente
68

Creo que es difícil ser un educador informático en estos días. Yo soy. Nos enfrentamos a una batalla cuesta arriba cada vez más empinada. Nuestros estudiantes son usuarios increíblemente sofisticados y se necesita mucho para impresionarlos. Tienen tantas herramientas accesibles para ellos que hacen cosas increíbles.

¿Una calculadora simple en 10 líneas de código? ¿Por qué? Tengo una TI-86 para eso.

¿Un guión que aplica efectos especiales a una imagen? Para eso es Photoshop. Y Photoshop elimina todo lo que puede hacer en 10 líneas.

¿Qué tal copiar un CD y convertir el archivo a MP3? Uhh, ya tengo 50,000 canciones que obtuve de BitTorrent. Ya están en formato MP3. Los juego en mi iPhone. ¿Quién compra CD de todos modos?

Para presentar a los usuarios expertos la programación, tendrá que encontrar algo que sea:

a) aplicable a algo que encuentran interesante y genial, y b) hace algo que ya no pueden hacer.

Suponga que sus alumnos ya tienen acceso al software más costoso. Muchos de ellos tienen la versión completa de Adobe CS5.5 (precio minorista: $ 2,600; precio real: gratis) y pueden obtener fácilmente cualquier aplicación que normalmente rompería el presupuesto de su departamento.

Pero la gran mayoría de ellos no tiene idea de cómo funciona realmente alguna de estas "cosas de computadora".

Son un grupo increíblemente creativo: les gusta crear cosas. Solo quieren poder hacer o hacer algo que sus amigos no puedan hacer. Quieren alardear de algo.

Aquí hay algunas cosas que he encontrado que resuenan con mis alumnos:

  • HTML y CSS. De ellos aprenden cómo funcionan los temas de MySpace y pueden personalizarlos.
  • Mashups Todos los han visto, pero no saben cómo crearlos. Echa un vistazo a Yahoo! Tuberías . Hay muchos momentos de enseñanza, como RSS, XML, filtrado de texto, mapeo y visualización. Los widgets mashup completos se pueden incrustar en páginas web.
  • Obra de arte. Mire el arte sin contexto . La recursión y la aleatorización son clave para hacer bellas imágenes.
  • Cuentacuentos. Con un entorno de programación 3D fácil de usar como Alice , es fácil crear historias atractivas de alta calidad utilizando nada más que arrastrar y soltar.

Ninguno de estos implica ninguna programación en el sentido tradicional. Pero sí aprovechan bibliotecas poderosas. Pienso en ellos como un tipo diferente de programación.

Barry Brown
fuente
11
1 Me encantó lo que ha descrito los niños en estos días que tienen 50.000 canciones de bittorrent y Adobe CS4 para nada, es por supuesto de la realidad
thomasrutter
Escribe un algoritmo de búsqueda binaria simple en python. Rasgue una guía telefónica por la mitad varias veces para describir cómo funciona. Son los aspectos simples pero poderosos de la programación que los programadores experimentados a menudo pasan por alto y los novatos se asombran. la mayoría de las personas no se dan cuenta de que sus monitores actualizan al menos la mitad de los píxeles en su monitor 60-120 / seg. hacer carreras de velocidad humano contra computadora. cosas divertidas. vea esto para obtener más ideas: academicearth.org/courses/introduction-to-computer-science-i : y, hagas lo que hagas ... no les enseñes ANSI C como su primer idioma. He estado allí, apestaba.
Evan Plaice
3
Si está personalizando sitios, ¿por qué no usar Greasemonkey?
new123456
Solo algunas reflexiones sobre sus ejemplos: re photoshop, solo necesita señalar lo obvio: con photoshop puede cambiar 1 imagen, con scripts puede cambiar cientos de miles. Y con respecto a los MP3, tienes razón, ya nadie descarga CD, pero podrías (si no fuera por la legalidad) explicar que podrían escribir un programa para descargar automáticamente la última música directamente a su iPod.
Jeff Welling
@JeffWelling bien con Photoshop puedes hacer lotes y acciones para hacer esos cambios a cualquier número de archivos también. Sin embargo, es sorprendente cuánto se da por sentado en estos días con las computadoras.
John
63

He encontrado un gran favorito (en GWBASIC) es:

10 input "What is your name ";N$
20 i = int(rnd * 2)
30 if i = 0 print "Hello ";N$;". You are a <fill in insult number 1>"
40 if i = 1 print "Hello ";N$;". You are a <fill in insult number 2>"

He descubierto que los estudiantes principiantes tienen algunas concepciones que necesitan ser reparadas.

  • Las computadoras no leen tu mente.
  • Las computadoras solo hacen una cosa a la vez, incluso si lo hacen tan rápido que parecen hacerlo todo a la vez.
  • Las computadoras son simplemente máquinas estúpidas y solo hacen lo que se les dice.
  • Las computadoras solo reconocen ciertas cosas y son como bloques de construcción.
  • Un concepto clave es que una variable es algo que contiene un valor y su nombre es diferente de ese valor.
  • La distinción entre el momento en que edita el programa y el momento en que se ejecuta.

Buena suerte con tu clase. Estoy seguro de que lo harás bien.

PD: Estoy seguro de que entiendes que, junto con el material y la habilidad, también estás enseñando una actitud, y eso es igual de importante.

Mike Dunlavey
fuente
Las computadoras modernas hacen mucho más de una cosa a la vez.
dreamlax
Pero, ¿su código hace más de una cosa a la vez?
JeffO
55
@dreamlax: Tienes razón, por supuesto, pero no separemos los pelos. Estamos hablando de presentar computadoras a los niños y darles los elementos básicos de construcción mental. El paralelismo puede venir después.
Mike Dunlavey
1
@Ben S: ¿Por casualidad eliminaste el espacio frente a la línea 10? Lo puse porque parece que el formateador SO parece deshacer la primera línea por 1 espacio. Me pregunto si hay una mejor manera de alinear el código.
Mike Dunlavey
2
@foljs: Gosh! De Verdad? :-) dreamlax hizo el mismo punto. La cuestión es que cuando trabajas con personas que no saben nada sobre computadoras, les parece que todo sucede de una vez, por lo que debemos superarlo, sin dividir los pelos. Entonces, un concepto realmente básico es "Primero hace A, luego hace B, y así sucesivamente".
Mike Dunlavey
62

Este código C puede ser ofuscado, pero lo encontré muy poderoso

#include <unistd.h>
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<L?--_
%6:6:7)+"World! \n",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}

Y aquí está el resultado ... En solo 3 líneas ... Una especie de fractal Hello World...

WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   !dWW!ddddllllrrrrrrrooooooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           drrWdlllrrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wlddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
olddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           droWdlllrrrrrrrr
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   WdWW!ddddllllrrrrrrrooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ThibThib
fuente
55
¡Agradable! Lástima que no haya ningún lugar allí que realmente diga "¡Hola Mundo!"
Ponkadoodle
Esto es lindo! Modelo de Mandelbrot: D
Aniket
45

¿Qué le parece mostrar que puede tomar cualquier navegador web e ingresar JavaScript en la barra de direcciones y obtener el código para ejecutar?

EDITAR: vaya a una página con muchas imágenes e intente esto en la barra de direcciones:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)
Yuval
fuente
2
bien, pero se debe dar un ejemplo concreto u saber ..
Hasen
1
@ John: Por favor, da un ejemplo concreto. Solo he usado JS en mi servidor exportando el archivo JS. Nunca he puesto el código en mi barra de direcciones.
Léo Léopold Hertz 준영
77
Bueno, no es un ejemplo muy emocionante, pero podría hacer javascript: alert ("Hello World");
John Topley
Prefiero: "javascript: for (var i = 0; i> -1; i ++) alert ('¡Felicitaciones, ha presionado enter para' + i + 'veces!');". (Lea ese código antes de ejecutar ...). ^^
Arnis Lapsa,
1 para el factor sorpresa ... bastante espectacular ejemplo :)
fretje
37

Podría hacer una aplicación que elija un número aleatorio. Y tienes que adivinarlo. Si te equivocas, dice: más alto o más bajo. Y si lo has adivinado, un buen mensaje.

Es genial jugar para los estudiantes.

Versión simple de Python sin verificación de errores adecuada:

import random

while input('Want to play higher/lower? ').lower().startswith('y'):
    n = random.randint(1, 100)
    g = int(input('Guess: '))

    while g != n:
        print('  %ser!' % (g > n and 'low' or 'high'))
        g = int(input('Guess: '))

    print('  Correct! Congratulations!')

Erik sugiere que la computadora adivine el número. Esto también se puede hacer dentro de 10 líneas de código (aunque ahora la falta de verificación de errores adecuada es aún más grave: los números válidos fuera del rango causan un bucle infinito):

while input('Want to let the pc play higher/lower? ').lower().startswith('y'):
    n = int(input('Give a number between 1 and 100: '))
    lo, hi, guess, tries = 1, 100, 50, 1

    while guess != n:
        tries += 1
        lo, hi = (guess + 1, hi) if guess < n else (lo, guess - 1)
        guess = (lo + hi) // 2

    print('Computer guessed number in %d tries' % tries)
Stephan202
fuente
44
Más interesante sería hacer que el usuario elija el número aleatorio y luego que la computadora lo adivine.
Erik Forbes
15
Ahora haga que estos dos programas se reproduzcan entre sí a través de un socket.
Josh Lee
3
Sería mejor si la computadora no recibiera el número directamente. Debe decirle al usuario que "elija un número entre 1 y 100". Luego, escriba "Supongo que 50", y solicite una entrada ("más alto", "más bajo" o "correcto") y refine su suposición.
Ponkadoodle
He hecho esto con mi hijo (9) y también tiene el beneficio de entrar en el pensamiento algorítmico, ¿cuál es la mejor estrategia para encontrar el número correcto en el menor número de conjeturas?
mbesso
Creo que quieres raw_input. La entrada es igual a eval(raw_input(prompt)). Ver entrada .
Jeff Kaufman
26

De vuelta en la clase de informática en la escuela secundaria, yo y un par de amigos enseñamos a la clase cómo programar con Delphi. La clase se centró principalmente en la programación con Pascal, por lo que Delphi fue un buen siguiente paso. Demostramos la naturaleza impulsada por los eventos de Delphi y sus capacidades RAD. Al final de la lección, mostramos a la clase una aplicación de muestra y les pedimos que la reprodujeran. La aplicación le preguntó " ¿Estás borracho? " Con dos botones y No . ... Creo que sabes lo que viene después ... el botón No cambió la ubicación del mouse y fue casi imposible hacer clic.

Los estudiantes y el maestro obtuvieron una buena patada.

El programa solo requería unas pocas líneas de código escrito por el usuario con una ecuación simple para calcular dónde mover el botón. No creo que ninguno de los otros estudiantes lo haya descubierto, pero algunos estaban cerca.

Ryan Anderson
fuente
77
No solo entretenido, sino que un compañero de trabajo mío lo hizo en algún software, solo que era el botón "Aceptar" en un cuadro de mensaje. Era una aplicación utilizada internamente, por lo que no estaba mal vista. Solo hizo esto una vez en una luna azul. Por supuesto que lo llamarían y él diría que necesitaba ver que sucediera si iba a creerlo. Así que había vagar sobre y por supuesto que no sucedería cuando él estaba allí ...
Jason D
Recuerdo algo como esto ... pero estaba en flash ... y la pregunta era "¿Eres gay?" ... y el botón haciendo clic en un evento de fuegos artificiales.
brillante
2
Ese sería un momento interesante para enseñar a las personas a navegar a través de pestañas y espacio.
davidahines
23

Cuando descubrí por primera vez el bash forkbomb, pensé que era realmente dulce. Tan simple, pero ordenado en lo que puede hacer:

:(){ :|:& };:
hodgesmr
fuente
77
He aquí una explicación bastante buena: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr
12
Para los nuevos en Linux: no corran, de lo contrario perderán todo su trabajo.
Behrooz
@Behrooz, depende de su distribución, algunos tienen límites arbitrarios de hilo / horquilla incorporados.
Razor Storm
Hace una gran explosión en SuSE, pero no hace nada en la mayoría de las distribuciones basadas en Debian.
Behrooz
Eso, además de los límites de los usuarios, con qué frecuencia se vacían las cachés de disco, el sistema de archivos ...
new123456
22

Esto es trampa, y ni siquiera remotamente simple, pero una vez escribí un shoot'em en 20 líneas de C ++, usando la biblioteca de gráficos Allegro. No hay criterios reales para lo que era una línea , pero fue hace un poco, y fue hecha por pura diversión. Incluso tuvo efectos de sonido crudos.

Así es como se veía:

20 líneas http://img227.imageshack.us/img227/8770/20linesxx0.png

Y aquí está el código ( debería compilar):

bool inside(int x, int y, int x2, int y2) { return (x>x2&&x<x2+20&&y>y2&&y<y2+10); }
int main() {
  BITMAP* buffer;
  float px,shotx,shoty,monstars[8],first,rnd,pressed,points = 0, maxp = 0;
  unsigned char midi[5] = {0xC0,127,0x90,25,0x54}, plgfx[] = {0,0,0,10,3,10,3,5,6,5,6,10,8,12,10,10,10,5,13,5,13,10,16,10,16,0,13,0,13,2,3,2,3,0,0,0}, mongfx[] = {0,0, 10,5, 20,0, 17,8, 15,6, 10,16, 5,6, 3,8, 0,0};
  allegro_init(), set_color_depth(32), set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0), install_timer(), install_keyboard(),  install_mouse(), buffer = create_bitmap(320,240),srand(time(NULL)),install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT,""),clear_to_color(buffer,makecol32(100,100,255));
    while ((pressed=(!key[KEY_Z]&&pressed)?0:pressed)?1:1&&(((shoty=key[KEY_Z]&&shoty<0&&pressed==0?(pressed=1?200:200):first==0?-1:shoty)==200?shotx=px+9:0)==9999?1:1) && 1+(px += key[KEY_LEFT]?-0.1:0 + key[KEY_RIGHT]?0.1:0) && 1+int(px=(px<0?0:(px>228?228:px))) && !key[KEY_ESC]) {
    rectfill(buffer,0,0,244,240,makecol32(0,0,0));
    for(int i=0;i<8;i++) if (inside(shotx,shoty,i*32,monstars[i])) midi_out(midi,5);
        for (int i=0; i<8; monstars[i] += first++>8?(monstars[i]==-100?0:0.02):-100, points = monstars[i]>240?points-1:points, monstars[i]=monstars[i]>240?-100:monstars[i], points = inside(shotx,shoty,i*32,monstars[i])?points+1:points, (monstars[i] = inside(shotx,shoty,i*32,monstars[i])?shoty=-1?-100:-100:monstars[i]), maxp = maxp>points?maxp:points, i++) for (int j=1; j<9; j++) line(buffer,i*32+mongfx[j*2 - 2],monstars[i]+mongfx[j*2-1],i*32+mongfx[j*2],monstars[i]+mongfx[j*2+1],makecol32(255,0,0));
    if (int(first)%2000 == 0 && int(rnd=float(rand()%8))) monstars[int(rnd)] = monstars[int(rnd)]==-100?-20:monstars[int(rnd)]; // randomowe pojawianie potworkow
    if (shoty>0) rectfill(buffer,shotx,shoty-=0.1,shotx+2,shoty+2,makecol32(0,255,255)); // rysowanie strzalu
    for (int i=1; i<18; i++) line(buffer,px+plgfx[i*2 - 2],200-plgfx[i*2-1],px+plgfx[i*2],200-plgfx[i*2+1],makecol32(255,255,0));
    textprintf_ex(buffer,font,250,10,makecol32(255,255,255),makecol32(100,100,255),"$: %i   ",int(points)*10);
    textprintf_ex(buffer,font,250,20,makecol32(255,255,255),makecol32(100,100,255),"$$ %i   ",int(maxp)*10);
    blit(buffer, screen, 0, 0, 0, 0, 320,240);
  }
} END_OF_MAIN()
revs Kronikarz
fuente
55
¿Cómo se supone que esto debe enseñarle algo a alguien? En una nota no relacionada, COOL! ¡DECIR AH! ¡Me encantó!
slezica
21

En la actualidad, JavaScript es una excelente manera de mostrar cómo puede programar utilizando algunas herramientas realmente básicas, como el bloc de notas.

¡Los efectos de jQuery son un excelente punto de partida para cualquiera que quiera sorprender a sus amigos!

En este, simplemente haga clic en el espacio en blanco de la página.

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(document.body).click(function () {
  if ($("#pic").is(":hidden")) {
    $("#pic").slideDown("slow");
  } else {
    $("#pic").slideUp();
  }
});
</script>
</head>
<body><img id="pic" src="http://www.smidgy.com/smidgy/images/2007/07/26/lol_cat_icanhascheezburger.jpg"/>
</body>
</html>
Jon Winstanley
fuente
1
Estoy de acuerdo Puede abrir el bloc de notas y comenzar a codificar con Java Script y luego abrir un navegador y estoy seguro de que sus alumnos quedarán impresionados. Estas son herramientas que todos tienen y pueden buscar muchos efectos diferentes y cosas que se pueden hacer como el ejemplo de Jon.
Jeff Reddy el
1
No creo que sea una buena idea enseñarle a alguien la base de un lenguaje bastante simple usando una biblioteca. Puede hacerlo fácilmente sin usar jQuery, y para un principiante, debería hacerlo. Las bibliotecas no reemplazan el idioma real.
Algún tipo
En el caso de javascript, jQuery no es un reemplazo para javascript, es un reemplazo para los doms (altamente variables). Lo cual es una gran cosa para poder esquivar a cualquiera.
Kzqai
20

Una cosa que podría considerar es algo como Robocode , en el que se abstrae una gran cantidad de codificación y básicamente le dice a un robot qué hacer. Una simple función de 10 líneas puede hacer que el robot haga mucho, y tiene un resultado muy visual y fácil de seguir.

Quizás Robocode en sí no sea adecuado para la tarea, pero este tipo de cosas es una buena manera de relacionar el código escrito con las acciones visuales en la computadora, además es divertido observarlo cuando necesita dar ejemplos.

public class MyFirstJuniorRobot extends JuniorRobot {
 public void run() {
  setColors(green, black, blue);
  // Seesaw forever
  while (true) {
   ahead(100); // Move ahead 100
   turnGunRight(360); // Spin gun around
   back(100); // Move back 100
   turnGunRight(360); // Spin gun around
  }
 }
 public void onScannedRobot() {
  turnGunTo(scannedAngle);
  fire(1);
 }
 public void onHitByBullet() {
  turnAheadLeft(100, 90 - hitByBulletBearing);
 }
}
Pavel Savara
fuente
66
No sé sobre robocode, pero me metí en la codificación después de usar Logo. Ser capaz de dibujar una casa usando adelante, atrás, izquierda, derecha, etc. Te lleva a la mentalidad de instrucciones simples que realizan tareas enormes.
Robin Day
1
Sí, aprendí Logo en el laboratorio de computación en la escuela primaria. Yo era uno de los niños que, más allá de pensar que era genial, quería saber más.
Travis
1
+1 para RoboCode! Me encanta robocode, y que solía hacer competiciones entre nosotros mismos para ver que vendría al día con los mejores algoritmos
Andreas Grech
18

Entonces, un día, decidí que ya había tenido suficiente. Me gustaría aprender piano. Ver a personas como Elton John dominando el dominio del teclado me aseguró que esto era lo que quería hacer.

En realidad, aprender piano fue una gran decepción. Incluso después de completar ocho grados de lecciones de piano, todavía no me impresionaba cómo mi imagen mental de tocar el piano era tan diferente de mi visión original de disfrutar la actividad.

Sin embargo, lo que más disfruté fueron mis tres grados de rudimentos de teoría musical. Aprendí sobre la construcción de la música. Finalmente pude pasar del mundo de la interpretación de música escrita a escribir mi propia música. Posteriormente, pude comenzar a jugar lo que quería jugar.


No intentes deslumbrar a los nuevos programadores, especialmente a los jóvenes programadores. Toda la noción de "menos de diez líneas de código simple" parece provocar un ambiente de "Muéstrame algo inteligente ".

Puede mostrarle a un nuevo programador algo inteligente. Luego puede enseñarle al mismo programador cómo replicar este "rendimiento". Pero esto no es lo que los engancha a la programación. Enséñeles los rudimentos y déjelos sintetizar sus propias diez líneas de código inteligentes.

Le mostraría a un nuevo programador el siguiente código de Python:

input = open("input.txt", "r")
output = open("output.txt", "w")

for line in input:
    edited_line = line
    edited_line = edited_line.replace("EDTA", "ethylenediaminetetraacetic acid")
    edited_line = edited_line.replace("ATP", "adenosine triphosphate")
    output.write(edited_line)

Me doy cuenta de que no tiene que asignar linea edited_line. Sin embargo, eso es solo para mantener las cosas claras y para mostrar que no estoy editando el documento original.

En menos de diez líneas, he verificado un documento. Por supuesto, también asegúrese de mostrarle al nuevo programador todos los métodos de cadena disponibles. Más importante aún, he mostrado tres cosas fundamentalmente interesantes que puedo hacer: asignación de variables, un bucle, archivo IO y uso de la biblioteca estándar.

Creo que estará de acuerdo en que este código no deslumbra. De hecho, es un poco aburrido. No, en realidad es muy aburrido. Pero muestre ese código a un nuevo programador y vea si ese programador no puede reutilizar cada parte de ese script en algo mucho más interesante dentro de la semana, si no el día. Claro, será desagradable para usted (tal vez usando este script para hacer un analizador HTML simple), pero todo lo demás solo requiere tiempo y experiencia.

Wesley
fuente
17

Como la mayoría de los otros comentaristas, comencé a escribir código para resolver problemas matemáticos (o para crear gráficos para juegos realmente terribles que diseñaría, como Indiana Jones versus Zombies).

Lo que realmente me sorprendió (tanto en matemáticas como en programación) fue pasar de textos, elegir sus propios juegos de estilo de aventura ... a más juegos basados ​​en gráficos. Comencé coloreando papel cuadriculado y trazando píxeles, hasta que me metí en la geometría ... y descubrí cómo usar ecuaciones para trazar curvas y líneas, cuadros, etc.

Mi punto es que realmente podría haberme metido en algo como el procesamiento ( http://processing.org/ ) donde un programa típico se parece a esto:

void setup() 
{
  size(200, 200); 
  noStroke();
  rectMode(CENTER);
}

void draw() 
{   
  background(51); 
  fill(255, 204);
  rect(mouseX, height/2, mouseY/2+10, mouseY/2+10);
  fill(255, 204);
  int inverseX = width-mouseX;
  int inverseY = height-mouseY;
  rect(inverseX, height/2, (inverseY/2)+10, (inverseY/2)+10);
}

Para mí, este es el "Logotipo" del futuro.

Hay ejemplos fáciles de "hola mundo" que pueden hacer que alguien dibuje y cambie código rápidamente y vea cómo se rompen las cosas y qué extraños "accidentes" se pueden crear ... hasta una interacción más avanzada y la creación de fractales ...

Jeffrey Berthiaume
fuente
+1 Creo que el procesamiento es una excelente manera de enseñar el pensamiento algorítmico, que es el tema más importante que los principiantes deben aprender.
Nils
15

Podría usar un script escrito con AutoIt , que difumina la línea entre el uso de una aplicación tradicional y la programación.

Por ejemplo, un script que abre el bloc de notas y hace que su propia computadora los insulte en él y mediante un cuadro de mensaje, y luego no deja rastro de sus acciones:

Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("You smell of human.")
Sleep(10000)
MsgBox(0, "Humans smell bad", "Yuck!")
WinClose("Untitled - Notepad")
WinWaitActive("Notepad", "Do you want to save")
Send("!n")
meepmeep
fuente
++ No estoy seguro de dónde encajaría en un plan de lección, pero es lindo.
Mike Dunlavey
13

Recuerdo que cuando comencé a codificar bucles siempre me impresionó. Escribe de 5 a 10 líneas de código (o menos) y se imprimen cientos (o la cantidad que especifique) de líneas. (Aprendí primero en PHP y Java).

for( int i = 0; i < 200; i++ )
{
   System.out.println( i );
}
Josh Curren
fuente
13

Creo que un buen lugar para que un estudiante comience podría ser Greasemonkey . Hay miles de scripts de ejemplo en userscripts.org, muy buen material de lectura, algunos de los cuales son muy pequeños. Las secuencias de comandos de Greasemonkey afectan a las páginas web, que los estudiantes ya estarán familiarizados con el uso, si no con la manipulación. Greasemonkey en sí ofrece una manera muy fácil de editar y habilitar / deshabilitar scripts durante las pruebas.

Como ejemplo, aquí está el script "Google Two Columns":

result2 = '<table width="100%" align="center" cellpadding="10" style="font-size:12px">';
gEntry = document.evaluate("//li[@class='g'] | //div[@class='g'] | //li[@class='g w0'] | //li[@class='g s w0']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < gEntry.snapshotLength; i++) {
  if (i==0) { var sDiv = gEntry.snapshotItem(i).parentNode.parentNode; }
  if(i%2 == 0) { result2 += '<tr><td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td>'; }
  if(i%2 == 1) { result2 += '<td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td></tr>'; }
}
sDiv.innerHTML = result2+'</table>';

if (document.getElementById('mbEnd') !== null) { document.getElementById('mbEnd').style.display = 'none'; }
joeytwiddle
fuente
10

Este es un programa de C # basado en texto muy rudimentario que simula la acción giratoria de una máquina tragamonedas. No incluye diferentes probabilidades de ganar o pagos en efectivo, pero eso podría ser un buen ejercicio para los estudiantes.

Lo siento, son más de 10 líneas.

string[] symbols = new[] { "#", "?", "~" }; // The symbols on the reel
Random rand = new Random();

do
{
    string a="",b="",c="";

    for( int i = 0; i < 20; i++ )
    {
        Thread.Sleep( 50 + 25 * i ); // slow down more the longer the loop runs

        if( i < 10 )
            a = symbols[rand.Next( 0, symbols.Length )];

        if( i < 15 )
            b = symbols[rand.Next( 0, symbols.Length )];

        c = symbols[rand.Next( 0, symbols.Length )];

        Console.Clear();
        Console.WriteLine( "Spin: " + a + b + c );
    }

    if( a == b && b == c )
        Console.WriteLine( "You win. Press enter to play again or type \"exit\" to exit" );
    else
        Console.WriteLine( "You lose. Press enter to play again or type \"exit\" to exit" );
}
while( Console.ReadLine() != "exit" );
Greg
fuente
9

Con Tcl , tiene un editor de texto simple con un botón de guardar en aproximadamente 12 líneas de código (pero no abierto, eso tomaría otras 8 líneas). Funciona en todas las plataformas estándar:

pack [frame .toolbar] -side top -fill x
pack [button .save -text save -command save] -in .toolbar -side left
pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side right -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true
proc save {} {
    set filename [tk_getSaveFile]
    if {$filename ne ""} {
        set f [open $filename w]
        puts $f [.text get 1.0 end-1c]
        close $f
    }
}

Me doy cuenta de que el objetivo era 10 líneas, por lo que si desea mantener 10 líneas o menos, un editor de texto simple sin cargar o guardar es solo dos líneas. Eso no está muy mal.

pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side left -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true

Ejecute cualquiera de los bloques de código anteriores con " nombre de archivo deseado " en la plataforma de su elección. Wish viene con la mayoría de * nix's y mac, pero tendrás que instalarlo manualmente para Windows.

Para ir un paso más allá, esa secuencia de comandos de dos líneas también se puede escribir en Python, aunque se necesitan ocho líneas, aún debajo del objetivo de 10 líneas:

from Tkinter import *
root=Tk()
text = Text(wrap="word")
sb = Scrollbar(orient="vertical", command=text.yview)
text.configure(yscrollcommand=sb.set)
sb.pack(side="right", fill="y")
text.pack(side="left", fill="both", expand=True)
root.mainloop()
Bryan Oakley
fuente
9

¿Qué tal un bookmarklet? Les mostraría cómo manipular algo que usan todos los días (Internet) sin necesidad de herramientas de desarrollo.

Stevo3000
fuente
Me gustaría esta sugerencia, pero sería mejor con un ejemplo y lo que se puede enseñar de él. Tal como el ejemplo dado en la pregunta: [código] javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ código] para mostrar el orden de operación.
tylermac
8

Si puede pagar el hardware, el uso de una placa Arduino + procesamiento producirá algunas cosas geniales, aunque puede ser un poco avanzado para las personas que pueden no estar interesadas en la programación.

Andrew Sledge
fuente
8

Escribí sobre esto recientemente en un artículo "El programa más corto y útil que he escrito".

Resumen: Escribí una aplicación VB6 de 3 líneas en 1996 que todavía uso todos los días. Una vez que el exe se suelta en la carpeta "Enviar a". Le permite hacer clic derecho en un archivo en el explorador y enviar la ruta completa de ese archivo al portapapeles.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  
revs JohnFx
fuente
¿Por qué el Clipboard.Clear? Elimina todo el contenido del portapapeles, incluso los datos que no son de texto (por ejemplo, datos de imagen). Esto generalmente no es lo que quieres en absoluto.
Konrad Rudolph el
Bueno, entonces tal vez el programa más corto tiene que ser la mitad de su tamaño actual ...
JohnFx
Realmente aseado. Odio tener que escribir caminos largos y luego preguntarme si hay un error tipográfico
Sylverdrag
AFAIK en versiones de Windows "modernas" que es exactamente lo que hace cuando copia el archivo (Ctrl + C) ... Simplemente copiando el nombre del archivo. ¿Alguien puede probar esto (ya que no tengo ventanas)?
opatut
Tengo Windows 7 y NO hace eso.
JohnFx
7

Es interesante que mencione el conjunto de Mandelbrot, ya que crear fractales con GW-BASIC es lo que despertó mi amor por la programación en la escuela secundaria (alrededor de 1993). Antes de comenzar a aprender sobre fractales, escribimos aplicaciones aburridas de desviación estándar y aún planeaba dedicarme al periodismo.

Pero una vez que vi que el programa BASIC largo y difícil de escribir generaba "terreno fractal", me enganché y nunca miré hacia atrás. Cambió mi forma de pensar sobre las matemáticas, las ciencias, las computadoras y la forma en que aprendo.

Espero que encuentres el programa que tenga el mismo efecto en tus alumnos.

Robert S.
fuente
Eso es genial para un proyecto semestral. Desearía haber pensado en eso cuando estaba enseñando.
Mike Dunlavey
6

Estoy seguro de que se convertiría en más de 10 líneas de código, pero ¿ha considerado una aplicación basada en formularios en la que presionar los botones hace cosas como cambiar el color del fondo o cambiar el tamaño del texto? Esto les mostraría cómo funcionan los programas interactivos. También les mostraría que ellos, como programadores, tienen el control total de lo que hace la computadora (programa).

Esperemos que les lleve a hacer sugerencias sobre otras cosas que podrían cambiar y luego a otras cosas que quieran hacer.

revs ChrisF
fuente