<10 줄의 간단한 코드로 할 수있는 가장 멋진 일은 무엇입니까? 초보자에게 영감을주세요! [닫은]


406

간단한 코드 몇 줄로 할 수있는 가장 멋진 일을 찾고 있습니다. Haskell에 만델 브로트 세트를 15 줄로 작성할 수 있다고 확신 하지만 따르기가 어렵습니다.

저의 목표는 학생들에게 프로그래밍이 멋지도록 고무시키는 것입니다 .

우리는 당신이 상상하는 것을 만들 수 있기 때문에 프로그래밍이 멋지다 는 것을 알고 있습니다. 그것은 궁극적 인 창의적 배출구입니다. 나는이 초보자들에게 영감을주고 가능한 한 많은 초기 학습 혹을 극복하고 싶습니다.

이제 내 이유는 이기적입니다. 저는 반 엔지니어링, 반 비즈니스 전공 그룹 60 명 에게 컴퓨팅 입문 과정을 가르치고 있습니다 . 모든 신입생. 그들은 소외 계층 고등학교에서 온 학생들입니다. 내 과거의 경험에서, 일반적으로 분할 그룹이 다음과 몇 바위 별 , 아주 열심히 시도 누가 어떤 종류의 그것을 얻을를 매우 열심히 노력하고있는 몇 간신히 그것을 얻을, 그리고 몇 상관하지 않는 사람들. 가능한 한 많은 그룹에 효과적으로 연락하고 싶습니다. 다음은 컴퓨터 프로그램을 사용하여 가르치는 방법에 대한 예입니다.

다음은 내가 찾는 것의 예입니다. 컴퓨터와 대화 할 수있는 1 줄 VBS 스크립트 :

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

이것을 사용하여 작업 순서를 보여줄 수 있습니다. 나는 코드를 보여주고 그것들을 가지고 놀게 한 다음 그 줄에 많은 일이 일어나고 있다고 설명하지만 컴퓨터는 규칙을 알고 있기 때문에 이해할 수 있습니다. 그런 다음 다음과 같이 표시합니다.

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

그리고 당신은 내가해야 할 첫 번째가 (5 * 5)임을 알 수 있습니다. 그런 다음 4를 곱할 수 있습니다. 이제 Object를 만들었습니다. 10으로 나누는 것은 Speak를 호출하는 것과 같습니다. 객체를 갖기 전에 말할 수없고 100을 갖기 전에 나눌 수 없습니다. 다른 쪽에서는 먼저 표시 방법에 대한 지침이있는 InputBox를 만듭니다. . 입력 상자에서 Enter 키를 누르면 입력 한 내용을 평가하거나 "반환"합니다. (힌트 : 'oooooo'는 재미있는 소리를냅니다.) 말할 때 오른쪽은 말할 것입니다. 그리고 나는 그것을 InputBox에서 얻습니다.

따라서 한 줄에 여러 가지 작업을 수행하면 다음과 같습니다.

x = 14 + y;

사물의 순서를 알고 있어야합니다. 먼저 14와 y를 더합니다. 그런 다음 결과 (평가 또는 반환 대상)를 x에 넣습니다.

저의 목표는 재미있게 수업을 시연하고 가르치는 멋진 예제를 많이 보유하는 것입니다. 나는이 예를 나의 룸메이트에게 시도했지만 이것을 첫 번째 수업으로 사용하지는 않겠지 만 그녀는 그것을 좋아하고 무언가를 배웠다.

이해하기 쉬운 아름다운 그래프 나 모양을 만드는 멋진 수학 프로그램은 좋은 아이디어 일 것입니다. 다음은 복잡한 액션 스크립트 예제 이지만 약간 너무 고급이며 플래시를 가르 칠 수 없습니다. 다른 아이디어가 있습니까?


102
프로그래밍을 가르치는 방법에 대한 질문은 훌륭하고 사소하지 않다고 생각합니다. 당신이하려는 일에 행운을 빕니다.
Mike Dunlavey

6
"제 목표는 학생들에게 프로그래밍이 멋지도록 영감을주는 것입니다." 나는 사람들이 프로그래밍이 멋지다고 말할 수 있다고 생각하지 않습니다. 그들은 그것을 좋아하거나 좋아하지 않습니다.
Rik

2
한 줄의 VBS 스크립트가 Mac에서 작동하지 않습니다! :-P 좋은 질문입니다.
John Topley

1
나는 항상 이런 종류의 물건을 좋아하지만, 당신이 인상을 주려고하는 사람, 나는 Sierpinski 가스켓 하나가 좋은 일을 할 것입니다. IT 전문가에게는 파일을 만드는 것이있을 수 있으며 컴퓨터 대화를하는 사람들은 인상적 일 수 있습니다. 대상 독자가 중요한 것은 멋진 것을 정의합니다.
Oakcool

5
83 명이이 질문이 어떻게 "우수하고 비 사소한"지에 대한 의견을지지했습니다. 파워 그랜드 아닌가요?
rg88

답변:


78

Microsoft Agent 캐릭터를 조작하는 빠른 VB 스크립트를 사용하여 아이들로부터 큰 반응을 얻었습니다. MS Agent에 익숙하지 않은 사용자를 위해 COM 인터페이스를 통해 조작 할 수있는 일련의 애니메이션 화면 문자입니다. Microsoft Agent 다운로드 페이지 에서 코드와 문자를 다운로드 할 수 있습니다 .

다음의 몇 줄은 멀린 캐릭터가 화면에 나타나고, 날아 가며, 화면을 두드리면서주의를 끌고, 인사합니다.

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"

사용할 수있는 다른 많은 명령이 있습니다. 검사자세한 내용은 http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx 를 참조하십시오.

편집 2011-09-02 최근에 Microsoft Agent가 Windows 7에 기본적으로 설치되어 있지 않다는 것을 발견했습니다. 그러나 여기 에서 별도의 다운로드로 제공됩니다 . 나는 이것을 테스트하지 않았으므로 작동하는지 확인할 수 없습니다.


대단해. 이것은 더 많은지지를받을 가치가 있습니다.
Tom Ritter

인정 톰 감사합니다. 비록 upvotes를 얻기 시작하더라도 rep 포인트를 얻지 못할 것입니다. :-P
Bob Mc

32
당신이 클립을 볼 수있는이 방법은 모든 시간을 : D
Pedery

8
@Bob BASIC은 초보자 언어입니다. VB는 기본 이 아닙니다 . VB는 MS가 당시 필요에 맞게 만든 스위스 군용 칼입니다. 요즘에는 그보다 더 나은 (훨씬 더 전문화 된) 도구가 있습니다. VB는 나쁜 언어가 아니며 초과 수하물이 많이 있습니다. 내가 사용 하지 않는 이유를 완전히 편견없는 이유로 제시 한다면 MS가 VB에 대한 지원을 천천히 중단하고 있기 때문입니다. 죽어가는 언어입니다. 가까운 장래에 계획된 JavaScript로 Office 스크립팅이 완료 될 때까지 기다리십시오. 그러면 VB가 감소합니다.
Evan Plaice

3
@Evan-종교적 규율이 아닌 공정한 답변에 감사드립니다. 잘 했어요 Office Javascript 이동에 대해 들어 보지 못했습니다. 조사합니다.
Bob Mc

339

주소 표시 줄 (브라우저에서)에이 코드를 입력하고 Enter를 누르십시오. 그러면 웹 페이지의 모든 내용을 편집 할 수 있습니다!

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

그것은 내가 아는 가장 멋진 "한 줄짜리"입니다 =)


95
"One-liner"는 그런 잘못된 이름입니다. 정말 3 줄입니다. 원하는 경우 모든 코드가 한 줄이 될 수 있습니다.
DisgruntledGoat

5
이것은 정말 깔끔해 보이지만 일단 수정되면 페이지를 얻는 방법이 있습니까?
Sylverdrag

51
나는 그것을 너무 좋아, 나는 999999999 번 당신을 위해 upvoted! img707.imageshack.us/img707/4843/jshack.png
JRL

4
javascript :가 비활성화되어 Firefox에서 더 이상 사실이 아닙니다. 부끄러움.

2
@DisgruntledGoat가 javascript:void 0의 동등 : 보일러입니다 int main() {return 0; }C에서 그리고 다른 두 선이 같은 일을 단지 다른 브라우저 API가 있습니다 : 첫 번째 IE의 API이고, 두 번째는 넷스케이프 API입니다. HTML5는을 사용 contentEditable하므로 Firefox 1.5 또는 그 document.body.contentEditable='true';
밖의

201

내가 처음 썼을 때

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

사람들을 날려 버렸습니다! 컴퓨터는 그들의 이름을 기억했습니다!

편집 : 이것에 추가하십시오. 새로운 프로그래머를 설득 할 수 있다면 이것이 가장 멋진 일이며, 좋은 프로그래머가 될 것입니다. 요즘 다른 사람이 작성한 라이브러리를 실행하기 위해 한 줄의 코드로 원하는 거의 모든 것을 할 수 있습니다. 나는 개인적으로 그 일에 대해 전혀 만족하지 못하며 그것을 가르치는 데 거의 도움이되지 않습니다.


15
30 ~ 40 GOTO : 더 나은 다음과 같이 될 것이다
쓰셨

8
사용자 이름을 표시하기 위해 +1하면 사람들은 항상 자신의 이름이 표시되는 것을 좋아합니다. @ saua, 어떻게 무한 인쇄 루프가 아닌가요? 그것은 20 행이 아닌 30 행으로 돌아갑니다.
z-

13
..., 자신의 이름을 입력 할 수 있습니다 확실히 너무 다른 인물 고토 10이어야한다
오마르 Kooheji

17
당신은 35 PRINT CHR $ (7) 잊어
아담 Jaskiewicz

6
이것이 내가 프로그래밍을 배운 방법입니다. 가장 좋은 답은 imo입니다. +1을 수락
하려면

180

PHP-Sierpinski 개스킷 (일명 Triforce)

좋아, 그것은 15 줄의 코드이지만 결과는 훌륭합니다! 내가 어렸을 때 나를 놀라게했던 것들입니다. 이것은 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);

시 에르 핀 스키 가스켓


25
기록을 위해, 그것은 Sierpinski 가스켓입니다.
혼돈

6
그것은 굉장하지만 루프와 배열과 같은 많은 개념을 기반으로하기 때문에 코스 중간에 와야한다고 생각합니다.
Mike Dunlavey

4
@Masi : 일반적인 아이디어는 삼각형의 모퉁이 인 고정 된 세 개의 점과 계속 업데이트하는 "현재"점을 갖는 것입니다. 이동하려면 모서리 중 하나를 임의로 선택하고 현재 지점의 절반을 해당 모서리로 이동하십시오. 현재 포인트의 색상입니다. 그런 다음 같은 방식으로 다른 움직임을 한 다음 다시 수천 번 더 움직이면 패턴이 나타납니다. 그런 다음 다른 수의 모퉁이로 시도하거나 현재 점이 모퉁이로 점프하는 비율을 변경하여 패턴에 미치는 영향을 확인하십시오.
Daniel Earwicker

18
기록상, 그것은 Sierpinski 가스켓이 아닙니다. 그것은 실제로 Triforce입니다. en.wikipedia.org/wiki/The_Legend_of_Zelda
jason

2
이 코드는 일반적으로 재귀로 수행되는 것을 볼 수 있기 때문에 이상하게 보입니다 (코드 라인이 거의 없음). 사실, 프랙탈은 컴퓨터 과학 수업에서 재귀에 대한 좋은 소개입니다. 그러나이 코드는 임의의 접근 방식으로 인해 많은 픽셀을 페인트 칠하고 다시 칠하는 것이 매우 비효율적 인 것처럼 보입니다.
Steve Wortham

105

Microsoft는 "kids"를위한 IDE 인 Small Basic을 가지고 있습니다.

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

그것은 멋진 프로그래밍이 얼마나 멋진지를 보여주기 위해 특별히 고안되었습니다.


80
이 라이브러리 호출은 마술처럼 보이기 때문에 실제로 짜증납니다. VB 스크립트 키즈로 설정했습니다. 나는 그들이 "어둠의 마법"영역에 빠져들지 않고 "안전한"배관 영역에 머물지 않을 것을 두려워합니다. ... 한 줄에 인터넷 브라우저를 만드는 방법은 다음과 같습니다! MSIEControl (.. blabla 어떤 ...) (보여).
하센

88
나는 아이들이 바보라고 생각하지 않습니다. 프로그래밍의 가능성에 대해 흥미를 느끼게되면 더 진보 된 일을 스스로하는 방법을 알게 될 것입니다. 다른 것이 없다면, 테스토스테론에 감염된 어린 소년들은 당신이 일어난 일을 알기 전에 가장 신비 롭고 어두운 마술을 배우려고 노력할 것입니다.
Tim Lin

28
@hansen j, 불공평합니다. 모두가 어딘가에서 시작해야합니다.
존 파렐

30
이것은 아이들을위한 CS 학위가 아닙니다. 이것은 프로그래밍 장난감입니다. 그 관문이 무엇이든 아이들이 프로그래밍의 재미있는면을 보게하는 것은 ASM 일 필요는 없습니다.
Copas

29
제가 가르치려고했던 아이들을 알면, pic = Flickr를 시도하기까지 약 10 초가 걸릴 것입니다. GetRandomPicture ( "boobs")
Iain Galloway

83

나는 사람들이 자신의 삶과 관련이 있거나 관련이있는 것들에 깊은 인상을 받았다고 생각하는 경향이 있습니다. 나는 그들이 알고 이해하는 것을 중심으로 10 줄의 코드를 작성하려고합니다. 예를 들어 Twitter와 API를 예로 들어 보겠습니다. 이 API를 사용하여 멋진 것을 만들어보십시오. 다음 10 줄의 코드는 Twitter에서 "공개 타임 라인"을 반환하고 콘솔 응용 프로그램에 표시합니다.

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

내 코드 샘플이 학생에게 가장 적합하지 않을 수 있습니다. C #으로 작성되었으며 .NET 3.5를 사용합니다. 따라서 PHP, Java 또는 C ++을 가르쳐 줄 경우 유용하지 않습니다. 그러나 필자의 요점은 10 줄의 코드를 "시원하고 흥미롭고 학생들과 관련이있는 것"과 연관시킴으로써 샘플이 시원하고 흥미롭고 관련성이있게된다는 것입니다.

행운을 빕니다!

[예, 문장과 Main 메소드를 사용하는 몇 줄을 놓쳤다는 것을 알고 있지만 10 줄이 문자 그대로 10 줄일 필요는 없습니다.]


정말 깔끔합니다! SyndicationFeed 객체에 익숙하지 않았습니다. 코드에 감사드립니다!
Tad Donaghe

대상 독자는 괴짜가 아니고, 멍청 아, 트위터에 대해 망설이지 않습니까?
peufeu

80

이것은 사용자 이름을 물어보고 인사하는 Python 텔넷 서버입니다. 네트워크를 통해 다른 컴퓨터에서 프로그램과 통신하기 때문에 멋지게 보입니다.

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()

68

요즘 컴퓨터 교육자가되기가 어렵다고 생각합니다. 나는. 우리는 점점 가파른 오르막 전투에 직면 해 있습니다. 본교 학생들은 매우 정교한 사용자 이며 인상을주는 데 많은 시간이 걸립니다. 그들은 놀라운 일을 할 수있는 수많은 도구를 가지고 있습니다.

10 줄의 코드로 된 간단한 계산기? 왜? 이를위한 TI-86이 있습니다.

이미지에 특수 효과를 적용하는 스크립트? 이것이 바로 포토샵입니다. 그리고 Photoshop은 10 줄로 할 수있는 모든 것을 날려 버립니다.

CD를 리핑하고 파일을 MP3로 변환하는 것은 어떻습니까? 음, 나는 이미 BitTorrent에서 얻은 50,000 곡을 가지고 있습니다. 이미 MP3 형식입니다. 나는 내 아이폰에서 재생합니다. 어쨌든 누가 CD를 사나요?

정통한 사용자에게 프로그래밍을 소개하려면 다음과 같은 것을 찾아야합니다.

a) 흥미롭고 시원하게 찾은 것에 적용 가능하며 b) 아직 할 수없는 것을 수행

학생들이 이미 가장 비싼 소프트웨어에 액세스 할 수 있다고 가정하십시오. 대다수는 Adobe CS5.5의 정식 버전 (소매 가격 : $ 2,600; 실제 가격 : 무료)을 가지고 있으며 일반적으로 부서 예산을 어기는 응용 프로그램을 쉽게 얻을 수 있습니다.

그러나 대다수는이 "컴퓨터"가 실제로 어떻게 작동하는지 전혀 모른다.

그들은 엄청나게 창조적 인 무리입니다 : 그들은 물건을 만들고 싶어합니다. 그들은 친구들이 할 수없는 일을하거나 할 수 있기를 원합니다. 그들은 자랑 할 무언가를 원합니다.

다음은 학생들과 함께 공감 한 것들입니다.

  • HTML과 CSS. 이들은 MySpace 테마의 작동 방식을 배우고이를 사용자 정의 할 수 있습니다.
  • 매시업. 그들은 모두 그들을 보았지만 어떻게 만드는지 모릅니다. 확인 야후! 파이프 . RSS, XML, 텍스트 필터링, 매핑 및 시각화와 같이 가르치는 순간이 많이 있습니다. 완성 된 매시업 위젯은 웹 페이지에 임베드 할 수 있습니다.
  • 작품. 에서 봐 상황에 무료 예술 . 재귀와 무작위 화는 아름다운 사진을 만드는 열쇠입니다.
  • 스토리 텔링. Alice 와 같은 사용하기 쉬운 3D 프로그래밍 환경을 사용하면 드래그 앤 드롭만으로도 고품질의 매력적인 스토리를 쉽게 만들 수 있습니다.

이들 중 어느 것도 전통적인 의미의 프로그래밍과 관련이 없습니다. 그러나 그들은 강력한 라이브러리를 사용합니다. 나는 그것들을 다른 종류의 프로그래밍이라고 생각합니다.


11
+1 요즘 비트 토렌트와 Adobe CS4에서 50,000 곡의 노래를 가지고있는 아이들을 묘사 한 것을 좋아했습니다. 물론 그것은 현실입니다
thomasrutter

파이썬으로 간단한 이진 검색 알고리즘을 작성하십시오. 전화 번호부를 반으로 찢어 작동 방식을 설명하십시오. 숙련 된 프로그래머가 간과하고 초보자가 경외심을 느끼는 것은 프로그래밍의 단순하면서도 강력한 측면입니다. 대부분의 사람들은 모니터가 모니터의 픽셀의 절반 이상을 60-120 / 초로 새로 고치는 것을 인식하지 못합니다. 인간 대 컴퓨터 속도 경쟁을하십시오. 재미있는 것들. 더 자세한 아이디어는 다음을 참조하십시오 : educationearth.org/courses/introduction-to-computer-science-i : 그리고 당신이 무엇을하든 ANSI C를 모국어로 가르치지 마십시오. 나는 거기에 갔다.
Evan Plaice

3
사이트를 사용자 정의하는 경우 Greasemonkey를 사용하지 않는 이유는 무엇입니까?
new123456

예제에 대한 몇 가지 생각 : 포토샵을 다시 사용하면 분명하게 지적해야합니다. 포토샵을 사용하면 하나의 이미지를 변경할 수 있으며 스크립팅으로 수십만을 변경할 수 있습니다. 그리고 MP3의 경우, 아무도 CD를 더 이상 다운로드하지 않아도되지만, 합법적이지 않은 경우 최신 음악을 자동으로 아이팟으로 다운로드하는 프로그램을 작성할 수 있다고 설명 할 수 있습니다.
Jeff Welling

@JeffWellWell을 사용하면 배치와 액션을 통해 여러 파일을 변경할 수 있습니다. 오늘날 컴퓨터로 얼마나 많은 돈을 벌 수 있는지는 놀랍습니다.
John

63

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

초급 학생들에게는 수정해야 할 몇 가지 개념이 있습니다.

  • 컴퓨터는 당신의 마음을 읽지 않습니다.
  • 컴퓨터는 한 번에 한 가지만 수행합니다. 너무 빠르더라도 한 번에 모두 수행하는 것처럼 보입니다.
  • 컴퓨터는 어리석은 기계 일 뿐이며 컴퓨터가 말하는 것만 수행합니다.
  • 컴퓨터는 특정 사항 만 인식하며 이는 빌딩 블록과 같습니다.
  • 핵심 개념은 변수가 값을 포함하고 이름이 해당 값과 다른 것입니다.
  • 프로그램을 편집 한 시간과 프로그램이 실행되는 시간의 차이.

수업에 행운을 빕니다. 나는 당신이 잘 할 것이라고 확신합니다.

추신 : 나는 당신이 재료와 기술과 함께 당신도 태도를 가르치고 있음을 이해하고 있다고 확신합니다.


현대 컴퓨터는 한 번에 여러 가지 작업을 수행합니다.
dreamlax

그러나 코드가 한 번에 둘 이상의 작업을 수행합니까?
JeffO

5
@ dreamlax : 물론 그렇습니다. 그러나 머리카락을 나누지 마십시오. 우리는 아이들에게 컴퓨터를 소개하고 기본적인 정신 구성 요소를 제공하는 것에 대해 이야기하고 있습니다. 병렬 처리는 나중에 올 수 있습니다.
Mike Dunlavey

1
@Ben S : 10 번 줄 앞의 공백을 제거 했습니까? SO 포매터가 첫 번째 줄을 1 칸 씩 들여 쓰지 않는 것 같아서 넣었습니다. 코드를 정렬하는 더 좋은 방법이 있는지 궁금합니다.
Mike Dunlavey

2
@foljs : 어이! 정말? :-) dreamlax도 같은 지적을했습니다. 문제는 컴퓨터에 대해 전혀 모르는 사람들과 일할 때 모든 것이 한 번에 발생하는 것처럼 보이기 때문에 머리카락을 나누지 않고 극복해야한다는 것입니다. 따라서 가장 기본적인 개념은 "먼저 A를 수행 한 다음 B를 수행하는 것"입니다.
Mike Dunlavey가

62

이 C 코드는 난독 화되었을 수도 있지만 매우 강력하다는 것을 알았습니다.

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

결과는 다음과 같습니다 ... 3 줄만 ... 프랙탈 종류 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

5
좋은! 실제로 "Hello World!"라고 표시된 곳이 없습니다.
Ponkadoodle

이쁘다! Mandelbrot 모델 : D
Aniket

45

웹 브라우저를 사용하고 주소 표시 줄에 JavaScript를 입력하고 실행할 코드를 얻을 수 있음을 보여주는 것은 어떻습니까?

편집 : 많은 이미지가있는 페이지로 이동하여 주소 표시 줄에서 시도하십시오.

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)

2
좋아,하지만 당신은 구체적인 예를 알고 있어야합니다..
hasen

1
@ 존 : 구체적인 예를 들어주십시오. JS 파일을 내 보내서 서버에서 JS 만 사용했습니다. 주소 표시 줄에 코드를 넣지 않았습니다.
Léo Léopold Hertz 준영

7
매우 흥미로운 예는 아니지만 javascript : alert ( "Hello World");
John Topley

"javascript : for (var i = 0; i> -1; i ++) alert ( '축하합니다.'+ i + '번 입력을 누르 셨습니다!');" "; (실행하기 전에 해당 코드를 읽으십시오 ...). ^^
Arnis Lapsa

와우 팩터 +1 ... 꽤 멋진 예 :)
fretje

37

난수를 선택하는 응용 프로그램을 만들 수 있습니다. 그리고 당신은 그것을 추측해야합니다. 당신이 틀렸다면 그것은 높거나 낮음을 말합니다. 그리고 당신이 그것을 추측한다면, 좋은 메시지입니다.

학생들을 위해 노는 것이 멋지다.

적절한 오류 확인이없는 간단한 Python 버전 :

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컴퓨터 가 숫자를 추측해야한다고 제안합니다 . 이것은 10 줄의 코드 내에서도 수행 할 수 있습니다 (지금은 적절한 오류 검사가 부족하다는 것이 훨씬 심각합니다. 범위 밖의 유효한 숫자는 무한 루프를 유발합니다).

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)

4
더 흥미로운 것은 사용자가 임의의 숫자를 선택한 다음 컴퓨터가 추측하도록하는 것입니다.
Erik Forbes

15
이제이 두 프로그램이 소켓을 통해 서로 재생되도록하십시오.
Josh Lee

3
컴퓨터에 직접 번호를 제공하지 않으면 더 좋습니다. 사용자에게 "1에서 100 사이의 숫자를 선택"하도록 지시해야합니다. 그런 다음 "I guess 50"을 출력하고 입력 ( "higher", "lower"또는 "correct")을 요청하고 추측을 세분화하십시오.
Ponkadoodle

나는 아들과 함께이 작업을 수행했으며 (9) 알고리즘 사고에 들어가는 이점도 있습니다. 최소한 추측 횟수에서 올바른 숫자를 찾는 가장 좋은 전략은 무엇입니까?
mbesso

raw_input을 원한다고 생각합니다. 입력은 eval(raw_input(prompt))입니다. 입력을 참조하십시오 .
Jeff Kaufman

26

고등학교에서 컴퓨터 수업으로 돌아 왔을 때, 나와 친구 몇 명이 델파이로 프로그램하는 법을 가르쳤다. 이 클래스는 주로 Pascal을 사용한 프로그래밍에 중점을 두었으므로 Delphi는 다음 단계로 훌륭했습니다. 델파이의 이벤트 중심 특성과 RAD 기능을 시연했습니다. 수업이 끝날 때 우리는 수업에 샘플 응용 프로그램을 보여주고 그것을 재생산하도록 요청했습니다. 응용 프로그램은 "물어 당신이 술에 취해 있습니까? "두 개의 버튼과 아니오 . ... 다음에 나올 내용을 알고 있다고 생각합니다 ... No 버튼은 마우스의 위치를 ​​변경 했으며 클릭하기 가 거의 불가능했습니다.

학생들과 교사는 좋은 결과를 얻었습니다.

이 프로그램은 버튼을 움직일 위치를 계산하기 위해 간단한 방정식으로 몇 줄의 사용자 작성 코드 만 필요했습니다. 나는 다른 학생들이 그것을 알아 차리지 못했다고 생각하지만, 몇 명은 가깝습니다.


7
엔터테인먼트뿐만 아니라 동료가 한 번 소프트웨어를 통해 메시지 상자의 "확인"버튼 만 사용했습니다. 내부적으로 사용되는 앱이므로 눈살을 찌푸 리지 않았습니다. 그것은 푸른 달에서 한 번만했습니다. 물론 그들은 그에게 전화를 걸었고, 그가 그것을 믿기 위해서는 그것이 일어나는 것을 볼 필요가 있다고 말할 것입니다. 그래서 그는 걸어 돌아 다니며 물론 그가있을 때는 일어나지 않을 것입니다 ...
Jason D

나는 이런 것을 기억합니다 .. 그러나 그것은 번쩍였습니다 .. 그리고 질문은 "당신은 게이입니까?".. 그리고 버튼 클릭 불꽃 놀이 이벤트입니다.
glasnt

2
사람들이 탭과 공간을 통해 탐색하도록 가르치는 재미있는 시간입니다.
davidahines

23

내가 bash 포크 폭탄을 처음 발견했을 때, 나는 그것이 정말로 달콤하다고 생각했다. 그렇게 간단하면서도 깔끔합니다.

:(){ :|:& };:

7
여기에 꽤 좋은 설명이 있습니다 : cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr

12
리눅스를 처음 접하는 사람들을 위해 : 달리지 마십시오. 그렇지 않으면 모든 작업을 잃게됩니다.
Behrooz

@Behrooz는 배포판에 따라 일부 스레드 / 포크 제한이 내장되어 있습니다.
Razor Storm

SuSE에 큰 영향을 주지만 대부분의 데비안 기반 배포판에는 아무것도 없습니다.
Behrooz

사용자 제한뿐만 아니라 디스크 캐시를 플러시하는 빈도, 파일 시스템 ...
new123456

22

이것은 부정 행위이며 원격으로 간단하지는 않지만 Allegro 그래픽 라이브러리를 사용하여 20 줄의 C ++로 촬영을 작성했습니다. 라인 이 무엇인지에 대한 실제 기준은 없지만 조금 전에 왔으며 순전히 재미있게 만들어졌습니다. 심지어 거친 사운드 효과도있었습니다.

그 모습은 다음과 같습니다.

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

그리고 코드 다음과 같습니다 ( 컴파일 해야 함 ).

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()

5
이것은 어떻게 누군가에게 무엇을 가르쳐야합니까? 무관 한 메모에 COOL! 하아! 그것을 사랑!
slezica

21

요즘 JavaScript는 메모장과 같은 기본 도구를 사용하여 프로그래밍하는 방법을 보여주는 훌륭한 방법입니다.

jQuery 효과는 친구를 놀라게하려는 모든 사람들에게 훌륭한 출발점입니다!

이 페이지에서 공백을 클릭하십시오.

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

1
동의합니다. 메모장을 열고 자바 스크립트로 코딩을 시작한 다음 브라우저를 열면 학생들에게 깊은 인상을 줄 것입니다. 이것들은 모두가 가진 도구이며 Jon의 예제와 같이 할 수있는 많은 다른 효과와 물건을 찾을 수 있습니다.
Jeff Reddy

1
도서관을 사용하여 누군가에게 상당히 간단한 언어의 기초를 가르치는 것은 좋은 생각이 아닙니다. jQuery를 사용하지 않고도이 작업을 쉽게 수행 할 수 있으며 초보자는이 작업을 수행해야합니다. 라이브러리는 실제 언어를 대체하지 않습니다.
일부 남자

자바 스크립트의 경우, jQuery는 자바 스크립트를 대체하지 않으며, 변수가 큰 돔을 대체합니다. 어느 누구에게나 회피 할 수있는 좋은 일입니다.
Kzqai

20

당신이 고려할 수있는 한 가지는 Robocode 와 같은 것인데, 많은 코딩이 추상화되어 있으며 기본적으로 로봇에게 무엇을해야하는지 알려줍니다. 간단한 10 라인 기능으로 로봇이 많은 작업을 수행 할 수 있으며 시각적으로보기 쉬운 결과를 얻을 수 있습니다.

아마도 Robocode 자체는 작업에 적합하지 않지만 이러한 종류의 작업은 작성된 코드를 컴퓨터의 시각적 동작과 관련시키는 좋은 방법이며 예제를 제시해야 할 때 재미있게 볼 수 있습니다.

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

6
robocode에 대해 모르지만 로고를 사용한 후 코딩에 들어갔습니다. 앞으로, 뒤로, 왼쪽, 오른쪽 등을 사용하여 집을 그릴 수 있습니다. 그것은 큰 작업을 수행하는 간단한 지시의 마인드로 당신을 데려갑니다.
Robin Day

1
네, 초등학교 컴퓨터 실에서 로고를 배웠습니다. 나는 그것이 시원하다고 생각하는 것 이상으로 더 많은 것을 알고 싶어하는 아이들 중 하나였습니다.
Travis

1
RoboCode +1! 나는 로보을 사랑하고, 우리는 최고의 알고리즘을 가지고 올 것입니다 누가보고 자신 사이의 경쟁을하는 데 사용
안드레아스 GRECH을

18

그래서 어느 날 나는 충분하다고 결정했습니다. 나는 피아노를 배울 입니다. Elton John과 같은 사람들이 키보드를 완전히 숙달 한 것을 보았을 때 이것이 내가하고 싶은 일이라고 확신했습니다.

실제로 피아노를 배우는 것은 큰 실망이었습니다. 8 학년의 피아노 레슨을 마친 후에도 피아노 연주에 대한 나의 정신적 이미지가 활동을 즐기는 나의 원래 비전과 어떻게 다른지에 대해서는 여전히 감명받지 못했습니다.

그러나, 내가 완전히 즐겼던 것은 음악 이론의 기초가되는 단지 3 개의 등급이었다. 나는 음악의 구성에 대해 배웠다. 나는 마침내 작곡의 세계에서 내 자신의 음악을 쓰기까지 걸을 수있었습니다. 그 후, 나는 내가 원하는 것을 연주하기 시작했습니다.


새로운 프로그래머, 특히 젊은 프로그래머를 현혹 시키려고하지 마십시오. "10 줄 미만의 간단한 코드"라는 개념은 "나에게 영리한 것을 보여줘"라는 분위기를 불러 일으킨다 .

새로운 프로그래머에게 영리한 것을 보여줄 수 있습니다. 그런 다음 동일한 프로그래머에게이 "성능"을 복제하는 방법을 가르 칠 수 있습니다. 그러나 이것이 프로그래밍에 매료되는 것은 아닙니다. 그들에게 기초를 가르치고 자신의 영리한 10 줄의 코드를 합성하게하십시오.

새로운 프로그래머에게 다음 파이썬 코드를 보여줄 것입니다.

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)

에 할당 line할 필요가 없다는 것을 알고 edited_line있습니다. 그러나 이것은 단지 명확하게 유지하고 원본 문서를 편집하지 않음을 보여주기위한 것입니다.

10 줄 미만으로 문서를 상세하게 만들었습니다. 물론, 새로운 프로그래머에게 사용 가능한 모든 문자열 메소드 를 보여주십시오 . 더 중요한 것은 변수 할당, 루프, 파일 IO 및 표준 라이브러리 사용이라는 세 가지 근본적으로 흥미로운 일을 보여주었습니다.

이 코드가 현혹되지 않는다는 데 동의 할 것입니다. 실제로, 그것은 조금 지루합니다. 아니요-실제로 매우 지루합니다. 그러나 그 코드를 새로운 프로그래머에게 보여주고 그 프로그래머가 그 스크립트의 모든 부분을 그 날이 아니라면 일주일 이내에 훨씬 더 흥미로운 것으로 바꿀 수 없는지 확인하십시오. 물론,이 스크립트를 사용하여 간단한 HTML 파서를 만드는 것은 좋지 않지만 다른 모든 것은 시간과 경험이 필요합니다.


17

대부분의 다른 주석가들과 마찬가지로, 수학 문제를 해결하기 위해 코드를 작성하기 시작했습니다.

실제로 수학과 프로그래밍 모두에서 시작한 것은 텍스트 기반에서 시작하여 자신 만의 모험 스타일 게임을 선택하고 더 많은 그래픽 기반 게임을 선택하는 것입니다. 기하학에 들어갈 때까지 그래프 용지를 채색하고 픽셀을 플로팅하기 시작했습니다 ... 그리고 방정식을 사용하여 곡선과 선, 상자 등을 플롯하는 방법을 발견했습니다.

내 요점은, 전형적인 프로그램이 다음과 같은 처리 ( http://processing.org/ )에 실제로 들어갈 수 있다는 것입니다 .

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

나에게 이것은 미래의 "로고"입니다.

누군가가 코드를 신속하게 그리기 및 변경하고 문제가 발생하는 방식과 이상한 "사고"를 생성 할 수있는 쉬운 "hello world"예제가 있습니다.


+1 초급자가 알아야 할 가장 중요한 주제 인 알고리즘 사고를 처리하는 좋은 방법이라고 생각합니다.
Nils

15

AutoIt으로 작성된 스크립트 를 사용하면 전통적인 응용 프로그램 사용과 프로그래밍 사이의 경계가 흐려집니다.

예를 들어 메모장을 열고 자신의 컴퓨터가 메시지 상자를 통해 자신의 컴퓨터를 모욕하게 한 다음 그 동작을 추적하지 않는 스크립트 :

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

++ 수업 계획에서 어디에 적합한 지 잘 모르겠지만 귀엽습니다.
Mike Dunlavey가

13

루프 코딩을 처음 시작했을 때 항상 감동했습니다. 5-10 줄의 코드 (또는 그 이하)를 작성하고 수백 (또는 많은 수의 지정) 줄을 인쇄합니다. (PHP와 Java에서 처음 배웠습니다).

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

13

학생이 시작하기에 좋은 곳은 Greasemonkey 일 수 있다고 생각합니다 . userscripts.org에는 수천 개의 예제 스크립트가 있습니다. 아주 좋은 읽기 자료이며 그 중 일부는 매우 작습니다. 그리스 몽키 스크립트는 웹 페이지에 영향을 미치며, 조작하지 않을 경우 학생들이 이미 익숙하게 사용할 수 있습니다. Greasemonkey 자체는 테스트하는 동안 스크립트를 편집하고 활성화 / 비활성화하는 매우 쉬운 방법을 제공합니다.

예를 들어 다음은 "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'; }

10

이것은 슬롯 머신의 회전 동작을 시뮬레이션하는 매우 기초적인 텍스트 기반 c # 프로그램입니다. 상금이나 현금 지급에 대한 다른 가능성은 포함되지 않지만 학생들에게 좋은 연습이 될 수 있습니다.

10 줄 이상입니다.

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

9

Tcl 을 사용하면 약 12 줄의 코드로 저장 버튼이있는 간단한 텍스트 편집기가 있습니다 (그러나 열리지 않으면 다른 8 줄이 필요합니다). 모든 표준 플랫폼에서 작동합니다.

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

목표는 10 줄이라는 것을 알고 있으므로 10 줄 이하를 고수하려면로드하거나 저장하지 않는 간단한 텍스트 편집기는 두 줄입니다. 너무 초라하지 않습니다.

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

선택한 플랫폼에서 "wish filename "을 사용하여 위의 코드 블록 중 하나를 실행 하십시오. Wish는 대부분의 * nix 및 Mac과 함께 제공되지만 Windows 용으로 수동으로 설치해야합니다.

한 걸음 더 나아가서 두 줄 스크립트는 파이썬으로 작성할 수도 있지만 여전히 10 줄 목표에 따라 8 줄이 필요합니다.

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()

9

북마크릿은 어떻습니까? 개발 도구없이 매일 사용하는 무언가 (인터넷)를 조작하는 방법을 보여줍니다.


이 제안을 원하지만 예제와 그로부터 배울 수있는 것이 더 좋을 것입니다. 질문에 주어진 예와 같이 : [code] javascript : alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ code]를 눌러 작동 순서를 표시하십시오.
tylermac

8

하드웨어를 감당할 수 있다면 Arduino 보드 + 처리를 사용하면 약간의 멋진 것들을 만들 수 있지만 프로그래밍에 전혀 관심이없는 사람들에게는 조금 발전 할 수 있습니다.


8

나는 최근에 내가 쓴 "가장 짧고 유용한 프로그램" 이라는 기사에 이것을 썼다 .

요약 : 1996 년에 3 라인 VB6 앱을 작성하여 매일 사용하고 있습니다. exe가 "보내기"폴더에 놓이면 탐색기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 해당 파일의 전체 경로를 클립 보드로 보낼 수 있습니다.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  

Clipboard.Clear? 텍스트가 아닌 데이터 (예 : 이미지 데이터)를 포함하여 클립 보드의 모든 내용을 제거 합니다 . 이것은 일반적으로 하지 당신이 전혀 원하는.
Konrad Rudolph

그렇다면 가장 짧은 프로그램은 현재 크기의 절반이어야합니다.
JohnFx

정말 깔끔합니다. 나는 긴 길을 입력하고 오타가 있는지 궁금해
Sylverdrag

파일을 복사 할 때 정확히 수행되는 "현대"Windows 버전의 AFAIK (Ctrl + C) ... 파일 이름 만 복사하면됩니다. 누군가가 이것을 시도 할 수 있습니까 (창문이 없기 때문에)?
opatut

나는 Windows 7을 가지고 있으며 그렇게하지 않습니다.
JohnFx

7

GW-BASIC으로 프랙탈을 만드는 것이 고등학교 (1993 년경)에 프로그래밍에 대한 사랑을 불러 일으켰 기 때문에 Mandelbrot 세트를 언급하는 것이 흥미 롭습니다. 프랙탈에 대해 배우기 전에 지루한 표준 편차 응용 프로그램을 작성했으며 여전히 저널리즘에 참여할 계획이었습니다.

그러나 작성하기 어려운 길고 기본적인 BASIC 프로그램이 "프랙탈 터 레인"을 생성하는 것을 보았을 때 나는 푹 빠졌고 결코 뒤돌아 보지 않았습니다. 수학, 과학, 컴퓨터, 학습 방식에 대한 생각이 바뀌 었습니다.

학생들에게 동일한 영향을 미치는 프로그램을 찾으시기 바랍니다.


한 학기 프로젝트에 좋습니다. 내가 가르치고있을 때 그 생각을 다시했으면 좋겠다.
Mike Dunlavey


6

10 줄 이상의 코드로 바뀔 것이라고 확신하지만 버튼을 누르면 배경색 변경 또는 텍스트 크기 변경과 같은 작업을 수행하는 양식 기반 응용 프로그램을 고려 했습니까? 대화식 프로그램이 작동하는 방식을 보여줍니다. 또한 프로그래머로서 컴퓨터 (프로그램)의 기능을 완전히 제어 할 수 있음을 보여줍니다.

바라건대 그들은 그들이 바꿀 수있는 다른 것들에 대한 제안을하고 나서 그들이하고 싶은 다른 것들에 대해 제안하도록 이끌 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.