Qual é a coisa mais legal que você pode fazer em <10 linhas de código simples? Ajude-me a inspirar iniciantes! [fechadas]

406

Estou procurando a coisa mais legal que você pode fazer em algumas linhas de código simples. Tenho certeza de que você pode escrever um conjunto de Mandelbrot em Haskell em 15 linhas, mas é difícil de seguir.

Meu objetivo é inspirar os alunos que a programação é legal .

Nós sabemos que a programação é legal porque você pode criar qualquer coisa que você imaginar - é a saída criativa final. Quero inspirar esses iniciantes e superá-los o máximo que puder.

Agora, minhas razões são egoístas. Estou ministrando um curso de Introdução à Computação a um grupo de 60 cursos de engenharia, metade de negócios; todos os calouros. Eles são os alunos que vieram de escolas secundárias desfavorecidas. De minha experiência anterior, o grupo é geralmente dividido da seguinte forma: alguns astros do rock , alguns que se esforçam muito e meio que conseguem, alguns que se esforçam muito e mal conseguem, e poucos que não se importam. Eu quero alcançar o maior número possível desses grupos. Aqui está um exemplo de como eu usaria um programa de computador para ensinar:

Aqui está um exemplo do que estou procurando: um script VBS de 1 linha para que seu computador fale com você:

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

Eu poderia usar isso para demonstrar a ordem das operações. Eu mostrava o código, deixava que eles brincassem com ele e depois explicava que há muita coisa acontecendo nessa linha, mas o computador pode entender isso, porque conhece as regras. Então eu mostraria a eles algo assim:

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

E você pode ver que primeiro eu preciso fazer é (5 * 5). Então eu posso multiplicar por 4. E agora eu criei o Objeto. Dividir por 10 é o mesmo que chamar Speak - não posso falar antes de ter um objeto e não posso dividir antes de ter 100. Depois, do outro lado, primeiro criei um InputBox com algumas instruções sobre como exibi-lo. . Quando pressiono enter na caixa de entrada, ele avalia ou "retorna" o que eu inseri. (Dica: 'oooooo' faz um som engraçado) Então, quando digo Falar, o lado direito é o que Falar. E eu recebo isso da InputBox.

Então, quando você faz várias coisas em uma linha, como:

x = 14 + y;

Você precisa estar ciente da ordem das coisas. Primeiro, adicionamos 14 e y. Em seguida, colocamos o resultado (o que ele avalia ou retorna) em x.

Esse é o meu objetivo, ter um monte desses exemplos legais para demonstrar e ensinar a classe enquanto eles se divertem. Eu tentei este exemplo na minha colega de quarto e, embora não possa usá-la como primeira lição, ela gostou e aprendeu alguma coisa.

Alguns programas matemáticos bacanas que fazem belos gráficos ou formas fáceis de entender seriam boas idéias e eu vou dar uma olhada nelas. Aqui estão alguns exemplos complicados de actionscript, mas isso é um pouco avançado demais e eu não posso ensinar flash. Que outras idéias você tem?

George Stocker
fonte
102
Eu acho que perguntas sobre como ensinar programação são excelentes e não triviais. Boa sorte com o que você está tentando fazer.
Mike Dunlavey #
6
"meu objetivo é inspirar os alunos que a programação é legal". Eu não acho que você possa dizer às pessoas que a programação é legal. Ou eles gostam, ou não.
Rik
2
Seu script VBS de uma linha não funciona no meu Mac! :-P Boa pergunta embora.
311 John Topley
1
Eu sempre gosto desse tipo de coisa, mas quem você está tentando impressionar, eu, a gaxeta de Sierpinski, faria um bom trabalho. Para uma equipe de TI, algo que cria arquivos, para algumas pessoas que fazem o computador falar, seria impressionante, e assim por diante. Então, o que importa é o público-alvo, então você define o que é legal.
Oakcool
5
83 pessoas votaram positivamente no comentário sobre como esta pergunta é "excelente e não trivial" ... fechada como "não construtiva" por 5 pessoas que aparentemente discordam. Não é poder grande?
Rg88

Respostas:

78

Eu recebi uma ótima resposta dos meus filhos com um script VB rápido para manipular um caractere do Microsoft Agent. Para aqueles que não estão familiarizados com o MS Agent, é uma série de caracteres animados na tela que podem ser manipulados através de uma interface COM. Você pode baixar o código e os caracteres na página de download do Microsoft Agent .

As poucas linhas a seguir farão com que o personagem Merlin apareça na tela, voe, bata na tela para chamar sua atenção e diga olá.

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"

Existem muitos outros comandos que você pode usar. Verificahttp://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx para mais informações.

EDIT 2011-09-02 Descobri recentemente que o Microsoft Agent não está instalado nativamente no Windows 7. No entanto, é oferecido como um download separado aqui . Eu não testei isso, por isso não posso verificar se está funcionando.

Bob Mc
fonte
Fantástico. Isso merece muito mais votos.
21430 Tom Ritter
Obrigado pelo reconhecimento Tom. É uma merda que eu não receba pontos de representante, mesmo que ele comece a receber votos positivos. :-P
Bob Mc
32
Dessa forma, você pode ver o clipe o tempo todo : D
Pedery
8
O @Bob BASIC é um idioma para iniciantes. VB não é básico. VB é o canivete suíço que a MS criou para atender às necessidades da época. Atualmente, existem ferramentas muito melhores (muito mais especializadas) para substituí-las. VB não é uma linguagem ruim, apenas tem muito excesso de bagagem. Se eu desse uma razão completamente imparcial por que não usá-lo, seria porque a MS está deixando o suporte para o VB lentamente. É uma linguagem moribunda. Aguarde até que o script do Office seja feito com JavaScript (que está planejado para o futuro próximo), para que o declínio do VB seja certo.
Evan Plaice
3
@Evan - Obrigado pela resposta justa, ao invés de uma mesa religiosa. Bem feito. Não tinha ouvido falar sobre a mudança do Javascript do Office. Irá investigar.
Bob Mc
339

Digite esse código na barra de endereço (no navegador) e pressione enter. Então você pode editar todo o conteúdo da página!

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

Esse é o "one-liner" mais legal que eu conheço =)

Espen Herseth Halvorsen
fonte
95
"One-liner" é um nome impróprio. São 3 linhas, na verdade. Qualquer código pode ser uma linha, se você desejar.
DiscruntledGoat
5
Parece realmente legal, mas existe uma maneira de obter a página depois que ela é modificada?
Sylverdrag
51
Gostei muito, votei para você 999999999 vezes !! img707.imageshack.us/img707/4843/jshack.png
JRL
4
Isso não é mais verdade no Firefox, pois o javascript: foi desativado. Uma vergonha.
2
@DisgruntledGoat, javascript:e void 0são clichê: o equivalente a int main() {e return 0; }em C. E as outras duas linhas são apenas diferentes APIs do navegador que fazem a mesma coisa: A primeira é a API IE, a segunda é a API Netscape. O HTML5 usa contentEditable, portanto, a menos que você se preocupe em oferecer suporte ao Firefox 1.5 ou algo assim, o código real é de:document.body.contentEditable='true';
Zarel 31/11/11
201

Quando escrevi isso pela primeira vez.

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

Isso surpreendeu as pessoas! O computador lembrou o nome deles!

EDIT: Apenas para adicionar a isso. Se você conseguir convencer um novo programador de que essa é a coisa mais legal que ele pode fazer, eles se tornarão os bons programadores. Hoje em dia, você pode fazer quase tudo o que quiser com uma linha de código para executar uma biblioteca que outra pessoa escreveu. Pessoalmente, não tenho absolutamente nenhuma satisfação em fazer isso e vejo pouco benefício em ensiná-lo.

Robin Day
fonte
15
seria melhor com o seguinte: 40 GOTO 30
gastador
8
+1 por exibir nome de usuário, as pessoas sempre adoram ver seu próprio nome exibido. @ saua, como isso não é um loop de impressão infinito? Ele vai voltar para a linha 30, não linha 20.
z -
13
Deve ser Goto 10 certamente tão somone mais pode entrar mudando o nome ...
Omar Kooheji
17
Você esqueceu 35 PRINT CHR $ (7)
Adam Jaskiewicz
6
Foi assim que aprendi programação também. É a melhor resposta imo. +1 para aceitar esta opção
Clique em Upvote
180

PHP - a junta de Sierpinski, também conhecida como Triforce

OK, são 15 linhas de código, mas o resultado é incrível! Esse é o tipo de coisa que me fez pirar quando criança. Isto é do manual do 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 de sierpinski

markus
fonte
25
Para o registro, é uma junta de Sierpinski.
caos
6
Isso é incrível, mas acho que deveria aparecer no meio do curso, porque se baseia em vários conceitos, como loops e matrizes.
Mike Dunlavey #
4
@ Masi: a idéia geral é ter três pontos fixos que são os cantos do triângulo e um ponto "atual" que você continua atualizando. Para fazer uma jogada, escolha um dos cantos aleatoriamente e mova o ponto atual na metade do caminho em direção a esse canto. Cor no ponto atual. Em seguida, faça outro movimento da mesma maneira e, em seguida, mais alguns milhares de vezes, e o padrão aparecerá. Em seguida, tente com um número diferente de cantos ou altere a fração pela qual o ponto atual salta em direção ao canto, para ver como isso afeta o padrão.
Daniel Earwicker
18
Para o registro, isso não é uma junta de Sierpinski ... É, de fato, o Triforce. en.wikipedia.org/wiki/The_Legend_of_Zelda
jason
2
Esse código me parece estranho, porque normalmente vejo isso feito com recursão (também com muito poucas linhas de código). De fato, os fractais são uma boa introdução à recursão nas aulas de ciência da computação. Mas parece-me que esse código será bastante ineficiente, pintando e repintando muitos pixels devido à sua abordagem aleatória.
21119 Steve Wortham
105

A Microsoft possui o Small Basic , um IDE para "crianças".

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

Ele foi projetado especificamente para mostrar o quão legal é a programação.

Bob Fanger
fonte
80
Isso é realmente péssimo, porque essas chamadas de biblioteca parecem mágicas. Você está configurando-os para serem crianças de script VB. Receio que eles nunca se escondam nessa área de "magia negra" e permaneçam na área de encanamento "segura". ... Oh, veja como fazer um navegador de internet em uma linha! MSIEControl (.. blabla qualquer outra coisa ...) show ().
Hasen
88
Eu não acho que as crianças são idiotas. Se você ficar animado com as possibilidades de programação, eles descobrirão como fazer coisas mais avançadas por conta própria. Se nada mais, os jovens infectados com testosterona tentariam aprender as coisas mais misteriosas e mágicas das trevas antes mesmo de saber o que aconteceu.
Tim Lin
28
@ Hansen j, isso é injusto, todo mundo tem que começar em algum lugar.
317 John Farrell
30
Este não é um diploma de CS para crianças, é um brinquedo de programação. Seja qual for esse gateway para levar as crianças a ver o lado divertido da programação, isso é ótimo, não precisa ser ASM.
Copas
29
Conhecendo as crianças que eu tentei ensinar, levaria cerca de dez segundos antes de tentarem pic = Flickr.GetRandomPicture ("boobs")
Iain Galloway
83

Costumo pensar que as pessoas estão impressionadas com coisas com as quais podem se relacionar ou são relevantes para suas vidas. Eu tentaria basear minhas 10 linhas de código em algo que eles conhecem e entendem. Veja, por exemplo, o Twitter e sua API. Por que não usar essa API para criar algo interessante? As 10 linhas de código a seguir retornarão a "linha do tempo pública" do Twitter e a exibirão em um aplicativo de console ...

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));
    }

Meu exemplo de código pode não ser o melhor para seus alunos. Está escrito em C # e usa o .NET 3.5. Portanto, se você ensiná-los PHP, Java ou C ++, isso não será útil. No entanto, o que quero dizer é que, associando suas 10 linhas de código a algo "interessante, interessante e relevante para os alunos, sua amostra também se torna interessante, interessante e relevante".

Boa sorte!

[Sim, eu sei que perdi algumas linhas de uso de instruções e o método Main, mas acho que as 10 linhas não precisavam ser literalmente 10 linhas]

Martin Peck
fonte
Isso é realmente legal! Eu não estava familiarizado com o objeto SyndicationFeed - obrigado pelo código!
Tad Donaghe
O público-alvo é não-nerd, portanto, eles não dão a mínima para o tweeter?
peufeu 22/11/2009
80

Este é um servidor de telnet Python que solicita o nome do usuário e diz oi para eles. Isso parece legal porque você está se comunicando com seu programa a partir de um computador diferente na rede.

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()
user17918
fonte
68

Eu acho que é difícil ser um educador de computadores hoje em dia. Eu sou. Enfrentamos uma batalha cada vez mais íngreme. Nossos alunos são usuários incrivelmente sofisticados e é preciso muito para impressioná-los. Eles têm tantas ferramentas acessíveis a eles que fazem coisas incríveis.

Uma calculadora simples em 10 linhas de código? Por quê? Eu tenho uma TI-86 para isso.

Um script que aplica efeitos especiais a uma imagem? É para isso que serve o Photoshop. E o Photoshop impressiona tudo o que você pode fazer em 10 linhas.

Que tal rasgar um CD e converter o arquivo em MP3? Já tenho 50.000 músicas que recebi do BitTorrent. Eles já estão no formato MP3. Eu os jogo no meu iPhone. Quem compra CDs, afinal?

Para apresentar aos usuários mais experientes a programação, você precisará encontrar algo que seja:

a) aplicável a algo que acham interessante e interessante eb) faz algo que ainda não pode fazer.

Suponha que seus alunos já tenham acesso ao software mais caro. Muitos deles possuem a versão completa do Adobe CS5.5 (preço de varejo: US $ 2.600; preço real: gratuito) e podem facilmente obter qualquer aplicativo que normalmente viole o orçamento do seu departamento.

Mas a grande maioria deles não tem idéia de como realmente funciona esse "material de computador".

Eles são um grupo incrivelmente criativo: eles gostam de criar coisas. Eles só querem poder fazer ou fazer algo que seus amigos não podem. Eles querem algo para se gabar.

Aqui estão algumas coisas que eu acho que ressoam com meus alunos:

  • HTML e CSS. Daqueles aprendem como os temas do MySpace funcionam e podem personalizá-los.
  • Mashups. Todos eles já os viram, mas não sabem como criá-los. Confira o Yahoo! Tubos . Existem muitos momentos de aprendizado, como RSS, XML, filtragem de texto, mapeamento e visualização. Os widgets de mashup completos podem ser incorporados em páginas da web.
  • Obra de arte. Veja a arte livre de contexto . Recursão e randomização são essenciais para criar belas imagens.
  • Narrativa. Com um ambiente de programação 3D fácil de usar como o Alice , é fácil criar histórias envolventes e de alta qualidade usando nada mais do que arrastar e soltar.

Nenhuma delas envolve programação no sentido tradicional. Mas eles utilizam bibliotecas poderosas. Eu penso neles como um tipo diferente de programação.

Barry Brown
fonte
11
+1 Eu amei como você descreveu crianças nos dias de hoje que têm 50.000 músicas de bittorrent e Adobe CS4 para nada, é da realidade curso
thomasrutter
Escreva um algoritmo de busca binária simples em python. Rasgue uma lista telefônica pela metade várias vezes para descrever como ela funciona. São os aspectos simples, porém poderosos da programação, que os programadores experientes geralmente ignoram e os novatos parecem admirados. a maioria das pessoas não percebe que seus monitores atualizam pelo menos metade dos pixels em seu monitor de 60 a 120 / s. faça corridas de velocidade humana vs computador. coisas divertidas. veja isso para mais idéias: academicearth.org/courses/introduction-to-computer-science-i : e, o que você fizer ... não os ensine ANSI C como sua primeira língua. Eu estive lá, é uma merda.
Evan Plaice
3
Se você está personalizando sites, por que não usar o Greasemonkey?
new123456
Apenas alguns pensamentos sobre seus exemplos: no photoshop, você só precisa apontar o óbvio - com o photoshop, você pode alterar uma imagem, e com os scripts, centenas de milhares. E, quanto aos MP3, você está certo: ninguém mais baixa CDs, mas você poderia (se não fosse a legalidade) explicar que eles poderiam escrever um programa para baixar automaticamente as músicas mais recentes diretamente no iPod.
31411 Jeff Welling
@JeffWelling bem com o Photoshop, você pode fazer lotes e ações para fazer essas alterações em qualquer número de arquivos também. É incrível o quanto é dado como certo nos dias de hoje com os computadores.
John John
63

Eu encontrei um grande favorito (em GWBASIC) é:

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>"

Eu descobri que os alunos iniciantes têm algumas concepções que precisam ser corrigidas.

  • Computadores não leem sua mente.
  • Os computadores fazem apenas uma coisa de cada vez, mesmo que façam tão rápido que parecem fazer tudo de uma vez.
  • Os computadores são apenas máquinas estúpidas e só fazem o que lhes é dito.
  • Os computadores reconhecem apenas certas coisas e são como blocos de construção.
  • Um conceito-chave é que uma variável é algo que contém um valor e seu nome é diferente desse valor.
  • A distinção entre a hora em que você edita o programa e a hora em que é executado.

Boa sorte com sua classe. Tenho certeza que você vai se sair bem.

PS Tenho certeza de que você entende que, juntamente com material e habilidade, você também está ensinando uma atitude, e isso é igualmente importante.

Mike Dunlavey
fonte
Os computadores modernos fazem muito mais do que uma coisa de cada vez.
Dreamlax #
Mas, seu código faz mais de uma coisa por vez?
1040 JeffO
5
@ dreamlax: Você está certo, é claro, mas não vamos dividir os cabelos. Estamos falando de apresentar computadores às crianças e de lhes dar os blocos mentais básicos. O paralelismo pode vir mais tarde.
Mike Dunlavey #
1
@ Ben S: Você por acaso removeu o espaço na frente da linha 10? Eu coloquei isso porque parece que o formatador SO parece descompactar a primeira linha por 1 espaço. Gostaria de saber se existe uma maneira melhor de alinhar o código?
Mike Dunlavey #
2
@foljs: Puxa! Mesmo? :-) dreamlax fez o mesmo ponto. O problema é que, quando você trabalha com pessoas que não sabem nada sobre computadores, parece que tudo acontece ao mesmo tempo, por isso precisamos superar isso, sem dividir os cabelos. Portanto, um conceito realmente básico é "Primeiro, A, depois B, e assim por diante".
Mike Dunlavey
62

Talvez esse código C seja ofuscado, mas achei muito 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;}

E aqui está o resultado ... Em apenas 3 linhas ... Uma espécie 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
fonte
5
Agradável! Pena que não há nenhum lugar lá que realmente diga "Olá Mundo!"
Ponkadoodle
Isso é bonito! Modelo de Mandelbrot: D
Aniket
45

Que tal mostrar que você pode usar qualquer navegador da web e inserir JavaScript na barra de endereço e obter código para executar?

EDIT: Vá para uma página com muitas imagens e tente isso na barra de endereços:

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
fonte
2
ok, mas você deve dar um exemplo concreto u sei ..
Hasen
1
@ John: Por favor, dê um exemplo concreto. Eu apenas usei JS no meu servidor exportando o arquivo JS. Eu nunca coloquei o código na minha barra de endereço.
Léo Léopold Hertz, 04 de
7
Bem, não é um exemplo muito interessante, mas você pode fazer javascript: alert ("Hello World");
John Topley
Prefiro: "javascript: para (var i = 0; i> -1; i ++) alerta ('Parabéns, você pressionou enter por' + i + 'vezes!');". (Leia esse código antes de executar ...). ^^
Arnis Lapsa
+1 para o wow-factor ... exemplo espetacular :)
fretje
37

Você pode criar um aplicativo que escolha um número aleatório. E você tem que adivinhar. Se você está errado, diz: maior ou menor. E se você adivinhou, uma boa mensagem.

É legal tocar para os alunos.

Versão simples do Python sem verificação de erro adequada:

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 sugere que o computador adivinhe o número. Isso também pode ser feito em 10 linhas de código (embora agora a falta de verificação adequada de erros seja ainda mais séria: números válidos fora do intervalo causam um loop 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
fonte
4
Mais interessante seria o usuário escolher o número aleatório e fazer com que o computador o adivinhasse.
Erik Forbes
15
Agora faça esses dois programas se reproduzirem em um soquete.
21139 Josh Lee
3
Seria melhor se o computador não tivesse recebido o número diretamente. Você deve dizer ao usuário para "escolher um número entre 1 e 100". Em seguida, imprima "Eu acho que 50" e solicite entrada ("superior", "inferior" ou "correta") e refine seu palpite.
Ponkadoodle
Eu fiz isso com meu filho (9) e também tem o benefício de entrar no pensamento algorítmico, qual é a melhor estratégia para encontrar o número correto no menor número de suposições.
mbesso 16/09
Eu acho que você quer raw_input. A entrada é igual a eval(raw_input(prompt)). Veja a entrada .
Jeff Kaufman
26

De volta à aula de informática no ensino médio, eu e alguns amigos ensinamos à turma como programar com Delphi. A turma estava focada principalmente na programação com Pascal, então Delphi foi um bom próximo passo. Demonstramos a natureza orientada a eventos do Delphi e seus recursos RAD. No final da lição, mostramos à classe um aplicativo de amostra e pedimos que o reproduzissem. O aplicativo perguntou " Você está bêbado? " Com dois botões Sim e Não . ... Acho que você sabe o que está por vir ... o botão Não mudou de local ao passar o mouse e era quase impossível clicar.

Os alunos e o professor deram um bom chute nisso.

O programa exigiu apenas algumas linhas de código escrito pelo usuário com uma equação simples para calcular para onde mover o botão. Não acho que nenhum dos outros alunos tenha percebido, mas alguns foram próximos.

Ryan Anderson
fonte
7
Não apenas divertido, mas um colega meu fez isso em alguns softwares, mas foi o botão "OK" em uma caixa de mensagem. Era um aplicativo usado internamente, portanto não era desaprovado. Só fez isso uma vez na lua azul. É claro que eles ligariam para ele e ele diria que precisava ver isso acontecer para acreditar. Então ele vagava e, é claro, isso não aconteceria quando ele estivesse lá ...
Jason D
Lembro-me de algo assim .. mas estava em flash .. e a pergunta era "Você é gay?" .. e o botão clicando em conjunto de um evento de fogos de artifício.
glasnt
2
Esse seria um momento interessante para ensinar as pessoas a navegar pela guia e pelo espaço.
Davidhines
23

Quando descobri o bash forkbomb, achei muito legal. Tão simples, mas elegante no que pode fazer:

:(){ :|:& };:
hodgesmr
fonte
7
Aqui está uma boa explicação: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr
12
para novatos no linux: não corra, senão você perderá todo o seu trabalho.
Behrooz 07/07
@Behrooz, depende de sua distro, alguns têm limites thread / fork arbitrárias construído dentro.
Navalha Tempestade
Faz um grande estrondo no SuSE, mas não produz quase nada na maioria das distribuições baseadas em debian.
Behrooz
Que, assim como limites do usuário, quantas vezes seus caches de disco são liberadas, seu sistema de arquivos ...
new123456
22

Isso é trapaça, e nem remotamente simples, mas uma vez escrevi um shoot'em em 20 linhas de C ++, usando a biblioteca de gráficos Allegro. Nenhum critério real para o que uma linha era , mas foi há pouco tempo e foi feita apenas por diversão. Tinha até efeitos sonoros grosseiros.

Aqui está o que parecia:

20 Linhas http://img227.imageshack.us/img227/8770/20linesxx0.png

E aqui está o código ( deve 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()
Kronikarz
fonte
5
Como isso deve ensinar alguma coisa a alguém? Em uma nota não relacionada, COOL! HA! Amei!
Slezica
21

Atualmente, o JavaScript é uma excelente maneira de mostrar como você pode programar usando algumas ferramentas realmente básicas, como o bloco de notas.

Os efeitos jQuery são um excelente ponto de partida para quem deseja impressionar seus amigos!

Neste, basta clicar no espaço em branco da 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
fonte
1
Eu concordaria. Você pode abrir o bloco de notas e começar a codificar com o script java, abrir um navegador e tenho certeza de que seus alunos ficarão impressionados. Essas são ferramentas que todo mundo tem e podem procurar muitos efeitos diferentes e coisas que podem ser feitas como o exemplo de Jon.
Jeff Reddy
1
Não acho que seja uma boa idéia ensinar a alguém a base de uma linguagem bastante simples usando uma biblioteca. Você pode fazer isso facilmente sem usar o jQuery e, para iniciantes, deveria. As bibliotecas não substituem o idioma real.
Some Guy
No caso do javascript, o jQuery não é um substituto para o javascript, é um substituto para os DOMs (altamente variáveis). O que é uma grande coisa para poder evitar, para qualquer um.
Kzqai
20

Uma coisa que você pode considerar é algo como Robocode , no qual muita codificação é abstraída e você basicamente diz ao robô o que fazer. Uma função simples de 10 linhas pode fazer o robô fazer muita coisa e tem um resultado muito visual e fácil de seguir.

Talvez o próprio Robocode não seja adequado para a tarefa, mas esse tipo de coisa é uma boa maneira de relacionar código escrito a ações visuais no computador, além de ser divertido observar quando você precisa dar exemplos.

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
fonte
6
Não sei sobre o código de código, mas entrei em codificação depois de usar o Logo. Ser capaz de desenhar uma casa usando para frente, para trás, para a esquerda, para a direita, etc.
Robin Day
1
Sim, eu aprendi Logo no laboratório de informática da escola primária. Eu era uma das crianças que, além de achar legal, queria saber mais.
Travis
1
+1 para o RoboCode! Eu amo Robocode, e nós costumávamos fazer competições entre nós para ver quem viria acima com os melhores algoritmos
Andreas Grech
18

Então, um dia, eu decidi que já tinha o suficiente. Eu iria aprender a tocar piano. Ver pessoas como Elton John comandar tal domínio do teclado me garantiu que era isso que eu queria fazer.

Na verdade, aprender piano foi uma grande decepção. Mesmo depois de completar oito séries de aulas de piano, eu ainda não estava impressionado com a forma como minha imagem mental de tocar piano era tão diferente da minha visão original de apreciar a atividade.

No entanto, o que eu gostei muito foram meus meros três graus de rudimentos da teoria musical. Eu aprendi sobre a construção da música. Eu finalmente fui capaz de sair do mundo da música escrita para escrever minha própria música. Posteriormente, pude começar a tocar o que queria tocar.


Não tente deslumbrar novos programadores, especialmente jovens. Toda a noção de "menos de dez linhas de código simples" parece suscitar um clima de "Mostre-me algo inteligente ".

Você pode mostrar a um novo programador algo inteligente. Você pode ensinar ao mesmo programador como replicar esse "desempenho". Mas não é isso que os prende à programação. Ensine-lhes os rudimentos e deixe-os sintetizar suas próprias dez linhas de código inteligentes.

Eu mostraria a um novo programador o seguinte código 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)

Percebo que não preciso atribuir linea edited_line. No entanto, isso é apenas para manter as coisas claras e mostrar que não estou editando o documento original.

Em menos de dez linhas, eu detalhei um documento. Obviamente, também certifique-se de mostrar ao novo programador todos os métodos de string disponíveis. Mais importante, mostrei três coisas fundamentalmente interessantes que posso fazer: atribuição de variável, um loop, E / S de arquivo e uso da biblioteca padrão.

Eu acho que você concorda que esse código não deslumbra. Na verdade, é um pouco chato. Não - na verdade, é muito chato. Mas mostre esse código a um novo programador e veja se ele não pode adaptar novamente cada parte desse script a algo muito mais interessante dentro de uma semana, se não o dia. Claro, será desagradável para você (talvez usando esse script para criar um simples analisador de HTML), mas tudo o resto leva tempo e experiência.

Wesley
fonte
17

Como a maioria dos outros comentadores, comecei a escrever código para resolver problemas de matemática (ou para criar gráficos para jogos realmente terríveis que eu projetaria - coisas como Indiana Jones versus Zombies).

O que realmente me iniciou (em matemática e programação) foi passar de texto, escolher seus próprios jogos de aventura ... para mais jogos baseados em gráficos. Comecei a colorir papel milimetrado e a desenhar pixels, até entrar na geometria ... e descobri como usar equações para plotar curvas e linhas, caixas, etc.

Meu argumento é que eu realmente poderia ter entrado em algo como processamento ( http://processing.org/ ), em que um programa típico se parece com isso:

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 mim, este é o "logotipo" do futuro.

Existem exemplos fáceis do "olá mundo" que podem rapidamente levar alguém a desenhar e alterar códigos e ver como as coisas quebram e que "acidentes" estranhos podem ser criados ... até uma interação mais avançada e criação de fractal ...

Jeffrey Berthiaume
fonte
+1 Acho que o processamento é uma ótima maneira de ensinar o pensamento algorítmico, que é o tópico mais importante que os iniciantes precisam aprender.
Nils
15

Você pode usar um script escrito com AutoIt , que desfoca a linha entre o uso de um aplicativo e a programação tradicionais.

Por exemplo, um script que abre o bloco de notas e faz com que seu próprio computador os insulte nele e por meio de uma caixa de mensagem e, em seguida, não deixa rastros de suas ações:

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
fonte
++ Não sei ao certo onde ele se encaixaria em um plano de aula, mas é bonito.
Mike Dunlavey #
13

Lembro que quando comecei a codificar loops sempre me impressionou. Você escreve de 5 a 10 linhas de código (ou menos) e centenas (ou quantas você especificar) de linhas impressas. (Eu aprendi primeiro em PHP e Java).

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

Eu acho que um bom lugar para um aluno começar pode ser o Greasemonkey . Existem milhares de scripts de exemplo no userscripts.org, material de leitura muito bom, alguns dos quais são muito pequenos. Os scripts Greasemonkey afetam as páginas da web, que os alunos já estarão familiarizados com o uso, se não com a manipulação. O próprio Greasemonkey oferece uma maneira muito fácil de editar e ativar / desativar scripts durante o teste.

Como exemplo, aqui está o 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
fonte
10

Este é um programa c # baseado em texto muito rudimentar que simula a ação de rotação de uma máquina caça-níqueis. Não inclui probabilidades diferentes de ganhos ou pagamentos em dinheiro, mas isso poderia ser um bom exercício para os alunos.

Desculpe, são mais de 10 linhas.

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
fonte
9

Com o Tcl, você tem um editor de texto simples com um botão salvar em cerca de 12 linhas de código (mas não aberto, isso levaria mais 8 linhas). Funciona em todas as plataformas padrão:

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
    }
}

Sei que o objetivo era 10 linhas; portanto, se você quiser manter 10 linhas ou menos, um simples editor de texto sem carregar ou salvar é de apenas duas linhas. Isso não é muito ruim.

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

Execute um dos blocos de código acima com "desejo nome do arquivo " na plataforma de sua escolha. O Wish vem com a maioria dos * nix e mac, mas você terá que instalá-lo manualmente no Windows.

Para dar um passo adiante, esse script de duas linhas também pode ser escrito em python, embora seja preciso oito linhas, ainda abaixo do objetivo de 10 linhas:

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
fonte
9

Que tal um bookmarklet? Isso mostraria a eles como manipular algo que eles usam todos os dias (a Internet) sem exigir nenhuma ferramenta de desenvolvimento.

Stevo3000
fonte
Eu gostaria dessa sugestão, mas seria melhor com um exemplo e o que pode ser ensinado a partir dela. Como o exemplo dado na pergunta: [código] javascript: alert (4 (5 * 5) / 10 + 9 (0,25 + 0,75)); [/ code] para mostrar a ordem de operação.
Tylermac #
8

Se você puder comprar o hardware, o uso de uma placa Arduino + de processamento produzirá algumas coisas bem legais, embora possa ser um pouco avançado para pessoas que podem não estar interessadas em programação.

Andrew Sledge
fonte
8

Escrevi sobre isso recentemente em um artigo "O programa mais curto e mais útil que já escrevi".

Resumo: escrevi um aplicativo VB6 de 3 linhas em 1996 que ainda uso todos os dias. Depois que o exe for descartado na pasta "Enviar para". Permite clicar com o botão direito do mouse em um arquivo no explorer e enviar o caminho completo desse arquivo para a área de transferência.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  
JohnFx
fonte
Por que o Clipboard.Clear? Remove todo o conteúdo da área de transferência, mesmo dados que não sejam de texto (por exemplo, dados de imagem). Isso geralmente não é o que você deseja.
22911 Konrad Rudolph
Bem, então talvez o programa mais curto precisa ser metade de seu tamanho atual ...
JohnFx
Realmente limpo. Eu odeio ter que digitar caminhos longos e admirar, então, se houver um erro de digitação
Sylverdrag
AFAIK nas versões "modernas" do Windows que é exatamente o que faz quando você copia o arquivo (Ctrl + C) ... Apenas copiando o nome do arquivo. Alguém pode tentar isso (como eu não tenho janelas)?
opatut
Eu tenho o Windows 7 e ele não faz isso.
JohnFx
7

É interessante que você mencione o conjunto de Mandelbrot, pois a criação de fractais com o GW-BASIC foi o que despertou meu amor pela programação no ensino médio (por volta de 1993). Antes de começarmos a aprender sobre fractais, escrevemos aplicativos de desvio padrão chatos e eu ainda planejava entrar no jornalismo.

Mas uma vez que vi aquele programa BASIC longo e difícil de escrever gerar "terreno fractal", fiquei viciado e nunca mais olhei para trás. Isso mudou a maneira como eu pensava em matemática, ciências, computadores e a maneira como aprendi.

Espero que você encontre o programa que tem o mesmo efeito em seus alunos.

Robert S.
fonte
Isso é ótimo para um projeto de semestre. Eu gostaria de ter pensado nisso quando estava ensinando.
Mike Dunlavey
6

Tenho certeza de que ele se transformaria em mais de 10 linhas de código, mas você considerou um aplicativo baseado em formulário em que pressionar os botões faz coisas como mudar a cor do plano de fundo ou alterar o tamanho do texto? Isso mostraria a eles como os programas interativos funcionam. Também mostraria a eles que, como programadores, estão no controle completo do que o computador (programa) faz.

Esperançosamente, isso os levaria a fazer sugestões de outras coisas que eles poderiam mudar e, em seguida, de outras coisas que eles poderiam querer fazer.

ChrisF
fonte