a23_usm001
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* a23_useSelfMade #1
-(by [[K]], 2023.01.10)
--親ページ: [[a23_useSelfMade]]
** 2023.01.10 Tue #1
-小学生にC言語を教えようと思ったときに、#includeとかmain...
-「だったらC言語なんか教えないでRubyやPythonを教えればい...
--それに、そんな本質的じゃない理由(最初の導入ハードルが...
-仕組みは笑ってしまうくらいに単純です。指定された入力ファ...
-私はこれをひとまず「easy-C」と呼ぶことにしました。「お手...
-この仕組みがあれば、
puts("hello, world");
だけで実行できます(コマンドラインから「prompt>ecrun hell...
-いや、そんなのこの仕組みからすれば当たり前なのですが、私...
~
** 2023.01.10 Tue #2
-easy-Cでプログラムをいくつか書いていると、そもそも1行程...
-ということで、1ecというコマンドを作って、
prompt>1ec "puts('hello, world')"
ってできるようにしました。1ecというコンソールアプリは、第...
-たとえばこんなことができます。
prompt>1ec "int i, j; for (j = 1; j <= 9; j++) { for (i ...
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
-このC言語っぽくない感じが伝わるでしょうか?・・・唯一の...
-C言語のワンライナーは本当に便利で、「あれ?gccでは long ...
prompt>1ec "printf('%d', sizeof (long double))"
12
--ああ確認してよかった。10バイトかと思ったらそうじゃなか...
~
** 2023.01.11 Wed #1
-小学生にprintfを教えようと思うと、またしてもハードルを感...
-ということで、easy-Cでも似たようなことを試みます。と言っ...
prompt>1ec "pr(1+2+3)"
ってやるだけで、答えが出るようになりました。今まではprint...
-Rubyのようにpだけにすることも考えたのですが、それだと変...
-私が小学生にマスターさせたいC言語の命令として、printfとg...
-ということで、他に作ったマクロも含めて全部でこんな感じに...
#define pr(i) printf("%d", i)
#define prf(f) printf("%f", f)
#define prs(s) printf("%s", s)
#define prsp() printf(" ")
#define prlf() printf("\n")
#define go(l) goto l
-でもまあとりあえず、私が頻繁に使うのはprとprfだけです。p...
prompt>1ec "prf(pow(27,1.0/3))"
3.000000
~
** 2023.01.11 Wed #2
-私の教えた経験からすると、小学生はカッコが嫌いです。カッ...
-ということで、prとprfとprsとgoなどに限って、カッコを省略...
-それとついでに、小学生は小文字のアルファベットが読めない...
-こうして私は
prompt>1ec "pr 1*2*3*4"
24
prompt>1ec "prf sqrt(256)"
16.000000
ができるようになりました。カッコが省略できるようになった...
-私としては、小学生に対して、最初のころはPRやGOやIFを使っ...
~
** 2023.01.12 Thu #1
-easy-Cによるワンライナーをやっていると、コマンド全体をダ...
-そこで発想を転換して、gets()するアプリを書いて、もし最初...
1ec>pr 12*34
408
1ec>prs "hello\n"
hello
1ec>int c; for (c = 0; c < 10; c++) pr c
0123456789
1ec>
-すごくうまくいっています!普通のC言語を使うときは、
1ec>shell gcc -O3 -Wl,-s -o test.exe test.c
1ec>shell test.exe
などとやっています。すごく便利で楽しいです。この楽しさが...
-今、唯一の悩みは、easy-Cでミスって無限ループを実行してし...
-[追記] https://learn.microsoft.com/ja-jp/windows/console...
~
** 2023.01.12 Thu #2
-変数iや変数jはとてもよく使うのですが、そのたびにint i, j...
-これって小学生に教える時に有害かなと心配したのですが、む...
-九九の表もこんなに短く書けるようになっています。
1ec>for (j = 1; j <= 9; j++) { for (i = 1; i <= 9; i++) ...
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
~
** 2023.01.13 Fri #1
-ワンライナーではなく普通に何行か書いたプログラムについて...
-なかなか快適です!・・・これで実行ファイルを手元に保存し...
~
** 2023.01.13 Fri #2
-easy-Cを使っていると、とにかくディスクの書き換えが何度も...
-ということで、なんかいい感じのRAMディスクはないかなと探...
-私はImDiskにしてみました。
--https://syumi3.com/sonota/html_pasokon/imdisk-toolkit.h...
--https://forest.watch.impress.co.jp/library/software/imd...
--https://sourceforge.net/projects/imdisk-toolkit/
-他にも高速そうなRAMディスクがいくつかありましたが、やっ...
-私は64MBくらいのRAMディスクを作って、そこで1ecをずっと起...
-RAMディスクにしたことで速くなったか?・・・というと、も...
~
** 2023.01.14 Sat #1
-直近の予定。今日と明日は開発お休み。月曜日にはもちろん再...
-ここで作っているものは小さいものばかりだけど、でもちりも...
~
** 2023.01.16 Mon #1
-easy-Cはacl1ライブラリを使うことで、グラフィックが使える...
-まあまずは定番のこれをやりました。
1ec>AWin *w = aOpenWin(256, 256, "graphics"); for (j = 0...
https://essen.osask.jp/files/pic20230116a.png
-C言語のワンライナーでこれができる日が来るとは!(一人で...
~
-次はこれです。
1ec>AWin *w = aOpenWin(256, 256, "graphics"); for (j = 0...
http://k.osask.jp/files/pic20230116b.png
-うんうん、うまく動いています。こういうのを思いついたとき...
-ちなみにこうやって試しながら、acl1ライブラリや1ecにバグ...
~
-次はaDrawLineを試しました。
1ec>AWin *w = aOpenWin(256, 256, "graphics"); aSetMode(w...
https://essen.osask.jp/files/pic20230116c.png
-よしよし。
~
-次はaFillOvalを試しました(銀色の球に見える?)
1ec>AWin *w = aOpenWin(256, 256, "graphics"); for (i = 2...
https://essen.osask.jp/files/pic20230116d.png
-これもOK。
~
-Wikipediaによると、日本の国旗は「旗の形は縦が横の3分の2...
1ec>AWin *w = aOpenWin(384, 256, "hinomaru"); aFillRect(...
https://essen.osask.jp/files/pic20230116e.png
-おおなるほど、これは確かにそれらしい感じに見える!
~
-rynaさんから教えてもらった、XORで書けるすてきな模様。
1ec>AWin *w = aOpenWin(256, 256, "xor"); for (j = 0; j <...
https://essen.osask.jp/files/pic20230116f.png
-きれいだなー。
~
-ワンライナーがあると、ちょっとこれを試してみようっていう...
--だからなんか作りかけのライブラリか何かをインクルードし...
~
** 2023.01.17 Tue #1
-[[坂井弘亮さん(kozosさん)>https://kozos.jp/]]が最近開発...
-そこに「サンプル集2」というのがあって、「立体の波(動き...
-ということで、これをeasy-Cでもやってみたいと思いました。
-まずオリジナルのg_3dwave.hobはこんな感じです。
1 GSCREEN(G_AUTOMODE); GSETOFFSET(320,240); GSETSCALE(4,2)
2 R=0.0
3 .MAINLOOP; GCLEAR(G_BLACK); R -= 0.1
4 LOOP X0, 40, -20; LOOP Y0, 40, -20; X1 = X0 + 1; Y1 = ...
5 (D0, D1, D2) = SQRT(X0*X0+Y0*Y0, X1*X1+Y0*Y0, X0*X0+Y1...
6 (Z0, Z1, Z2) = SIN(R+D0, R+D1, R+D2) * (50/(D0+5),50/(...
7 GLINE(X0*2-Y0*2, X0*2+Y0*2+Z0, X1*2-Y0*2, X1*2+Y0*2+Z1...
8 GLINE(X0*2-Y0*2, X0*2+Y0*2+Z0, X0*2-Y1*2, X0*2+Y1*2+Z2...
9 LOOPEND Y0; LOOPEND X0
10 GFLUSH(); WAIT 1; GOTO MAINLOOP
-これをeasy-Cに書き直したものが以下になります(16行になっ...
AWin *w = aOpenWin(640, 480, "3dwave")
int r, x, y, gx[42][42], gy[42][42]
for (r = 0; w->phase != 2; r--) { // ウィンドウが閉じら...
aFillRect(w, 640, 480, 0, 0, 0x000000)
for (y = -20; y <= 21; y++)
for (x = -20; x <= 21; x++) {
float d = sqrt(x * x + y * y), z = sin(r * 0...
int x0 = x + 19, y0 = y + 19, x1 = x + 20, y...
gx[y1][x1] = (x * 2 - y * 2 + z * 0) * 4 + 320
gy[y1][x1] = (x * 2 + y * 2 + z * 1) * 2 + 240
if (x0 < 0 || y0 < 0) continue;
aDrawLine(w, gx[y0][x0], gy[y0][x0], gx[y0][...
aDrawLine(w, gx[y0][x0], gy[y0][x0], gx[y1][...
}
aWait(8)
}
https://essen.osask.jp/files/pic20230117a.png
-おお、ちゃんと波打っているー。実行するとちゃんと動きます...
1ec>run 3dwave.c
とします。
~
** 2023.01.17 Tue #2
-今まで、ecrunコマンドはWindowsのバッチファイルで構成して...
-ということでバッチファイルをやめて、C言語でecrunを書き直...
-しかも1ec.exeのほうで、「runコマンド実行中やワンライナー...
1ec>for (;;) prs "hello"
hellohellohellohellohellohellohellohellohellohello...
(中略)
hello^C
1ec>
つまりこんなことができるようになったわけです。やったー!
-この無限ループを書いても怖くないっていうのは、きっと小学...
-そもそもシェルスクリプトなんていらないというか、こんなも...
--まあ、現代はRubyやPythonのコマンドプロンプトを立ち上げ...
//-私は[[a21_txt01]]のHLシリーズとかその後継のHLXを作って...
// どんな開発手順を踏めば、C言語から楽して自作言語に移行...
* こめんと欄
#comment
終了行:
* a23_useSelfMade #1
-(by [[K]], 2023.01.10)
--親ページ: [[a23_useSelfMade]]
** 2023.01.10 Tue #1
-小学生にC言語を教えようと思ったときに、#includeとかmain...
-「だったらC言語なんか教えないでRubyやPythonを教えればい...
--それに、そんな本質的じゃない理由(最初の導入ハードルが...
-仕組みは笑ってしまうくらいに単純です。指定された入力ファ...
-私はこれをひとまず「easy-C」と呼ぶことにしました。「お手...
-この仕組みがあれば、
puts("hello, world");
だけで実行できます(コマンドラインから「prompt>ecrun hell...
-いや、そんなのこの仕組みからすれば当たり前なのですが、私...
~
** 2023.01.10 Tue #2
-easy-Cでプログラムをいくつか書いていると、そもそも1行程...
-ということで、1ecというコマンドを作って、
prompt>1ec "puts('hello, world')"
ってできるようにしました。1ecというコンソールアプリは、第...
-たとえばこんなことができます。
prompt>1ec "int i, j; for (j = 1; j <= 9; j++) { for (i ...
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
-このC言語っぽくない感じが伝わるでしょうか?・・・唯一の...
-C言語のワンライナーは本当に便利で、「あれ?gccでは long ...
prompt>1ec "printf('%d', sizeof (long double))"
12
--ああ確認してよかった。10バイトかと思ったらそうじゃなか...
~
** 2023.01.11 Wed #1
-小学生にprintfを教えようと思うと、またしてもハードルを感...
-ということで、easy-Cでも似たようなことを試みます。と言っ...
prompt>1ec "pr(1+2+3)"
ってやるだけで、答えが出るようになりました。今まではprint...
-Rubyのようにpだけにすることも考えたのですが、それだと変...
-私が小学生にマスターさせたいC言語の命令として、printfとg...
-ということで、他に作ったマクロも含めて全部でこんな感じに...
#define pr(i) printf("%d", i)
#define prf(f) printf("%f", f)
#define prs(s) printf("%s", s)
#define prsp() printf(" ")
#define prlf() printf("\n")
#define go(l) goto l
-でもまあとりあえず、私が頻繁に使うのはprとprfだけです。p...
prompt>1ec "prf(pow(27,1.0/3))"
3.000000
~
** 2023.01.11 Wed #2
-私の教えた経験からすると、小学生はカッコが嫌いです。カッ...
-ということで、prとprfとprsとgoなどに限って、カッコを省略...
-それとついでに、小学生は小文字のアルファベットが読めない...
-こうして私は
prompt>1ec "pr 1*2*3*4"
24
prompt>1ec "prf sqrt(256)"
16.000000
ができるようになりました。カッコが省略できるようになった...
-私としては、小学生に対して、最初のころはPRやGOやIFを使っ...
~
** 2023.01.12 Thu #1
-easy-Cによるワンライナーをやっていると、コマンド全体をダ...
-そこで発想を転換して、gets()するアプリを書いて、もし最初...
1ec>pr 12*34
408
1ec>prs "hello\n"
hello
1ec>int c; for (c = 0; c < 10; c++) pr c
0123456789
1ec>
-すごくうまくいっています!普通のC言語を使うときは、
1ec>shell gcc -O3 -Wl,-s -o test.exe test.c
1ec>shell test.exe
などとやっています。すごく便利で楽しいです。この楽しさが...
-今、唯一の悩みは、easy-Cでミスって無限ループを実行してし...
-[追記] https://learn.microsoft.com/ja-jp/windows/console...
~
** 2023.01.12 Thu #2
-変数iや変数jはとてもよく使うのですが、そのたびにint i, j...
-これって小学生に教える時に有害かなと心配したのですが、む...
-九九の表もこんなに短く書けるようになっています。
1ec>for (j = 1; j <= 9; j++) { for (i = 1; i <= 9; i++) ...
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
~
** 2023.01.13 Fri #1
-ワンライナーではなく普通に何行か書いたプログラムについて...
-なかなか快適です!・・・これで実行ファイルを手元に保存し...
~
** 2023.01.13 Fri #2
-easy-Cを使っていると、とにかくディスクの書き換えが何度も...
-ということで、なんかいい感じのRAMディスクはないかなと探...
-私はImDiskにしてみました。
--https://syumi3.com/sonota/html_pasokon/imdisk-toolkit.h...
--https://forest.watch.impress.co.jp/library/software/imd...
--https://sourceforge.net/projects/imdisk-toolkit/
-他にも高速そうなRAMディスクがいくつかありましたが、やっ...
-私は64MBくらいのRAMディスクを作って、そこで1ecをずっと起...
-RAMディスクにしたことで速くなったか?・・・というと、も...
~
** 2023.01.14 Sat #1
-直近の予定。今日と明日は開発お休み。月曜日にはもちろん再...
-ここで作っているものは小さいものばかりだけど、でもちりも...
~
** 2023.01.16 Mon #1
-easy-Cはacl1ライブラリを使うことで、グラフィックが使える...
-まあまずは定番のこれをやりました。
1ec>AWin *w = aOpenWin(256, 256, "graphics"); for (j = 0...
https://essen.osask.jp/files/pic20230116a.png
-C言語のワンライナーでこれができる日が来るとは!(一人で...
~
-次はこれです。
1ec>AWin *w = aOpenWin(256, 256, "graphics"); for (j = 0...
http://k.osask.jp/files/pic20230116b.png
-うんうん、うまく動いています。こういうのを思いついたとき...
-ちなみにこうやって試しながら、acl1ライブラリや1ecにバグ...
~
-次はaDrawLineを試しました。
1ec>AWin *w = aOpenWin(256, 256, "graphics"); aSetMode(w...
https://essen.osask.jp/files/pic20230116c.png
-よしよし。
~
-次はaFillOvalを試しました(銀色の球に見える?)
1ec>AWin *w = aOpenWin(256, 256, "graphics"); for (i = 2...
https://essen.osask.jp/files/pic20230116d.png
-これもOK。
~
-Wikipediaによると、日本の国旗は「旗の形は縦が横の3分の2...
1ec>AWin *w = aOpenWin(384, 256, "hinomaru"); aFillRect(...
https://essen.osask.jp/files/pic20230116e.png
-おおなるほど、これは確かにそれらしい感じに見える!
~
-rynaさんから教えてもらった、XORで書けるすてきな模様。
1ec>AWin *w = aOpenWin(256, 256, "xor"); for (j = 0; j <...
https://essen.osask.jp/files/pic20230116f.png
-きれいだなー。
~
-ワンライナーがあると、ちょっとこれを試してみようっていう...
--だからなんか作りかけのライブラリか何かをインクルードし...
~
** 2023.01.17 Tue #1
-[[坂井弘亮さん(kozosさん)>https://kozos.jp/]]が最近開発...
-そこに「サンプル集2」というのがあって、「立体の波(動き...
-ということで、これをeasy-Cでもやってみたいと思いました。
-まずオリジナルのg_3dwave.hobはこんな感じです。
1 GSCREEN(G_AUTOMODE); GSETOFFSET(320,240); GSETSCALE(4,2)
2 R=0.0
3 .MAINLOOP; GCLEAR(G_BLACK); R -= 0.1
4 LOOP X0, 40, -20; LOOP Y0, 40, -20; X1 = X0 + 1; Y1 = ...
5 (D0, D1, D2) = SQRT(X0*X0+Y0*Y0, X1*X1+Y0*Y0, X0*X0+Y1...
6 (Z0, Z1, Z2) = SIN(R+D0, R+D1, R+D2) * (50/(D0+5),50/(...
7 GLINE(X0*2-Y0*2, X0*2+Y0*2+Z0, X1*2-Y0*2, X1*2+Y0*2+Z1...
8 GLINE(X0*2-Y0*2, X0*2+Y0*2+Z0, X0*2-Y1*2, X0*2+Y1*2+Z2...
9 LOOPEND Y0; LOOPEND X0
10 GFLUSH(); WAIT 1; GOTO MAINLOOP
-これをeasy-Cに書き直したものが以下になります(16行になっ...
AWin *w = aOpenWin(640, 480, "3dwave")
int r, x, y, gx[42][42], gy[42][42]
for (r = 0; w->phase != 2; r--) { // ウィンドウが閉じら...
aFillRect(w, 640, 480, 0, 0, 0x000000)
for (y = -20; y <= 21; y++)
for (x = -20; x <= 21; x++) {
float d = sqrt(x * x + y * y), z = sin(r * 0...
int x0 = x + 19, y0 = y + 19, x1 = x + 20, y...
gx[y1][x1] = (x * 2 - y * 2 + z * 0) * 4 + 320
gy[y1][x1] = (x * 2 + y * 2 + z * 1) * 2 + 240
if (x0 < 0 || y0 < 0) continue;
aDrawLine(w, gx[y0][x0], gy[y0][x0], gx[y0][...
aDrawLine(w, gx[y0][x0], gy[y0][x0], gx[y1][...
}
aWait(8)
}
https://essen.osask.jp/files/pic20230117a.png
-おお、ちゃんと波打っているー。実行するとちゃんと動きます...
1ec>run 3dwave.c
とします。
~
** 2023.01.17 Tue #2
-今まで、ecrunコマンドはWindowsのバッチファイルで構成して...
-ということでバッチファイルをやめて、C言語でecrunを書き直...
-しかも1ec.exeのほうで、「runコマンド実行中やワンライナー...
1ec>for (;;) prs "hello"
hellohellohellohellohellohellohellohellohellohello...
(中略)
hello^C
1ec>
つまりこんなことができるようになったわけです。やったー!
-この無限ループを書いても怖くないっていうのは、きっと小学...
-そもそもシェルスクリプトなんていらないというか、こんなも...
--まあ、現代はRubyやPythonのコマンドプロンプトを立ち上げ...
//-私は[[a21_txt01]]のHLシリーズとかその後継のHLXを作って...
// どんな開発手順を踏めば、C言語から楽して自作言語に移行...
* こめんと欄
#comment
ページ名: