a23_usm006
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* a23_useSelfMade #6
-(by [[K]], 2023.02.21)
--親ページ: [[a23_useSelfMade]]
** 2023.02.21 Tue #1
-今日はちょっと忙しいので、ここに書けるほどの成果はなさそ...
-昨日からずっと考えているのは、HL-9の改造で、(1)変数一覧...
~
** 2023.02.22 Wed #1
-最近は、easy-Cの有用性は理解されている気がするんだけど、...
~
** 2023.02.22 Wed #2
-「たしざんかあど」からランダムに10問を出題して計算練習。
-tashi.c[12行]
n = 0;
for (i = 1; i <= 10; i++) {
for (;;) {
j = aRnd(9) + 1;
k = aRnd(9) + 1;
if (j + k >= 11) break; // 繰り上がりの練習なので、1...
}
printf("[%02d] %d+%d=", i, j, k);
m = aInput("");
if (m == j + k) { n++; prs "O\n\n"; } else { prs "X\n\...
}
printf("score=%d/100\n", n * 10);
-実行するとこんな感じです。
HL9>run tashi.c
[01] 7+9=16
O
[02] 9+5=14
O
[03] 7+6=15
X
[04] 8+9=17
O
[05] 6+9=
-小学1年生の宿題をこれでやらせたら、大人側の支援がすごく...
-ちなみに繰り下がりのある引き算版も作りました(似たような...
~
** 2023.02.23 Thu #1
-なんかいろいろアイデアが出てきました。
-[1]コンソールを複数出してマルチタスクみたいなことがした...
-[2] a[0-99]=0; みたいな書き方ができるようにしたい。
-[3] {i,j,k} = aRnd(9) + 1; みたいな書き方ができるように...
~
** 2023.02.23 Thu #2
-昨日のtashi.cですが、小学1年生にやらせていると、たまに連...
-だから改造します。・・・できました、これなら同じ問題は出...
int a[100];
for (i = 0; i < 100; i++) { a[i] = 0; }
for (j = 1; j <= 9; j++) {
for (k = 1; k <= 9; k++) {
if (j + k >= 11) { a[j * 10 + k] = 1; } // 繰り上が...
}
}
n = 0;
for (i = 1; i <= 10; i++) {
m = aArgMaxRndInt(a, 0, 100);
j = m / 10; k = m % 10;
a[m] = 0;
printf("[%02d] %d+%d=", i, j, k);
m = aInput("");
if (m == j + k) { n++; prs "O\n\n"; } else { prs "X\n\...
}
printf("score=%d/100\n", n * 10);
~
** 2023.02.24 Fri #1
-「キャラクターを右に動かす」「もしもキャラクターの移動先...
-この隠れ変数方式を極めれば、easy-Cの「変数を使わなくても...
-この話をしたら、それはScratchがやっていることに近いので...
~
** 2023.02.26 Sun #1
-a[0-99]=0; について仕様を考えています。
a[0:::99] = 0; // これはいいんじゃないか? - だと引き算...
// a[1:::99] = a[i - 1]; // これで変数ずらしも可能に!
pr 0:::9; // これで 0123456789 が出力される。
s = 0; s += 1:::100; pr s; // これで5050が出てくる。
-うん、なかなかいいかもしれない。
~
** 2023.02.27 Mon #1
-簡易ループ演算子
-いろいろ考えて、:::はかっこ良くない気がしたので、:<と:<=...
a[0:<=99] = 0; → for (i = 0; i <= 99; i++) { a[i] = 0; }...
a[0:<100] = 0; → for (i = 0; i < 100; i++) { a[i] = 0; }
~
** 2023.02.28 Tue #1
-なんか自前のスタートアップルーチンを使うと、ダウンロード...
~
** 2023.02.28 Tue #2
-くう、なんか最近忙しすぎる!
~
** 2023.03.01 Wed #1
-[[a23_ec001]]を更新して、最新版をダウンロードできるよう...
--ああしまった、あせって invader.c と blocks.c を入れ忘れ...
~
** 2023.03.02 Thu #1
-かなり雑な実装にしていますが、とにかく簡易ループ演算子が...
HL9>pr 1:<=5
12345
HL9>pr 1:<5
1234
HL9>s=0;s=s+1:<=100;pr s ← sには1~100の和が入る.
5050
HL9>int a[100]
HL9>pr a[9]
0
HL9>a[0:<100]=1 ← これで全部1になる.
HL9>pr a[9]
1
HL9>a[0] = 0; a[1] = 1; a[(i = 0:<10) + 2] = a[i] + a[i ...
1 1 2 3 5 8 13 21 34
HL9>
-あとはこれをいろいろと使ってみて、便利かどうかをじっくり...
~
** 2023.03.03 Fri #1
-簡易ループ演算子。かなりfor文の書き方に近いロング形式。
HL9>(i = 0:<=10) { pris i; }
0 1 2 3 4 5 6 7 8 9 10
HL9>int a[100] = { 0, 1 }; (i = 0:<18) { a[i + 2] = a[i]...
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 25...
// 長さ比較.
HL9>(i = 0:<=10) { pris i; } // 簡易ループ演算子の前後に...
HL9>for (i = 0; i <= 10; i++) { pris i; }
// 13文字節約できている.
-標準的なC言語のスタイルだと、for文は繰り返し範囲を次の行...
~
** 2023.03.04 Sat #1
-gcc実行モードでも簡易ループ演算子を実装しようとして、う...
~
** 2023.03.06 Mon #1
-簡易ループ演算子の仕様変更
(構文1) pris a[0:<10];
(構文2) [i = 0:<10] { ... }
(構文3) [5] { ... }
-構文1は今までのもの。
-構文2はロング形式で、for文の代用。
-構文3はミドル形式で、指定した回数だけ繰り返す。もはや簡...
-簡易ループ演算子の目的は、プログラムを短くすることです。...
-今考えている仮説としては、プログラム内での繰り返し処理は...
** 2023.03.07 Tue #1
-今やりたいと思っている開発。
--[1]KeyValueStore
--[2]簡易ループ演算子をgccからも使えるようにする
--[3]対戦ゲームを作る
--[4]Cコンパイラをうまく使った、CPUに依存しないアセンブラ
--[5]実行中の変数を見えるようにする大掛かりな改造
-この中で[4]と[5]は手を出したら数週間(もしくは数か月)帰...
-やっぱりまずは[2]を仕上げて、その次に[3]かなあ。
~
** 2023.03.08 Wed #1
-easy-Cのプログラムを普通のC言語に変換する、ACA_EasyC_lv2...
~
** 2023.03.08 Wed #2
-とりあえず、簡易ループ演算子の(構文2)と(構文3)はgcc実行...
-内部を作り直したので、 pr (1+2)*3; もできるようになりま...
** 2023.03.09 Thu #1
-普通に「a[0:<10]=aRnd(10);」と書けば、なんか適当な10個の...
-でもそうではなくて、乱数は一度だけ振って、その値をa[0:<1...
-もしくは、while (x < a) { ... } みたいなループがあったと...
-こういうときも c = a; while (x < c) { ... } とする必要が...
-この c って面倒じゃないかなと思ったのです。なんかこう、 ...
-結局何が嫌なのかというと、変数が増えるのが嫌なんです。変...
** 2023.03.11 Sat #1
-簡易ループ演算子の(構文1)もgccモードで動くようになりまし...
~
** 2023.03.12 Sun #1
-思いついたことがあって試してみたくなったので実験します。
-gccでは、構造体を引数に取ったり、変数の返値として指定す...
-それは前から知っていたのですが、じゃあ仮に8KBの構造体を...
AClass(AGpc16) { // 汎用(GP)クラス(C). 16はサイズ. この...
union {
char c[8192];
double d[1024];
AInt i[16];
};
};
AGpc16 func(AGpc16 x)
{
AGpc16 y;
y.i[10] = x.i[0] + x.i[1];
x.i[1] = 9;
return y;
}
-funcが呼ばれるとき、スタック上の引数は 第一引数がreturn-...
-うん、C言語の仕様に照らせばxの渡し方は正しい気がします。
~
-私がこれに興味を持ったのは、可変長の構造体を返すことがで...
-たとえば、2つの文字列を連結して、その文字列を返すという...
AGpc16 myStrcat(char *s, char *t)
{
AGpc16 r;
sprintf(r.c, "%s%s", (const char *) s, (const char *...
return r;
}
void aMain(AComArg *aCA)
{
puts(myStrcat(myStrcat("abc", "123").c, myStrcat("de...
}
-これで abc123def456 が出ます・・・のはずだったのですが、...
-以下のようにすればいけます。
void aMain(AComArg *aCA)
{
AGpc16 a = myStrcat("abc", "123"), b = myStrcat("def...
AGpc16 c = myStrcat(a.c, b.c);
puts(c.c);
}
~
** 2023.03.13 Mon #1
-バイナリデータを簡単に出力したり入力したりできたら便利に...
~
** 2023.03.15 Wed #1
-あと2週間ほどでオープンソースカンファレンスです。私とし...
-やっぱり対戦ゲームです。それならオープンソースカンファレ...
** 2023.03.16 Thu #1
-今日は演算子について考えてみます。
-まず演算子には優先順位があります。私はこの優先順位をまじ...
-それで自分なりに得た結論は「できるだけカッコを使いたくな...
a=((1*2)+(3*4))
-って書かないとダメだったら、便利ですかね?
-さて私はC言語の演算子の優先順位について納得のいかないこ...
-よくある記述で、fopenしてNULLだったらエラーという処理を...
if ((fp = fopen(...)) == NULL) { ... }
-なんですかこれは?こんなのカッコ無しで書きたいです。
if (fp=fopen(...) == NULL) { ... }
-つまり比較演算子は代入演算子よりも優先順位が低くなるべき...
-ああわかりますよ。flag = a != 3; とかやりたかったんです...
flag = (a != 3);
-これでいいですよ、私は全く不満がないです。
-ビット演算の優先順位の低さも不満です。
if ((a & 15) == 7) { ... }
-ビット演算は優先順位が低いのです。きっと&&や||の代わりに...
if (a&15 == 7) { ... }
** 2023.03.18 Sat #1
-このeasy-Cの開発は、主にSecHack365のチャットというか掲示...
// persistent-C
//一覧を得る関数があって、後は自分でフィルタ・ソートする。
//kvs, 言語は型を知るべき, 言語はオブジェクトを知るべき
//winのクローズ
* こめんと欄
-掲示板をご利用ください。→[[a23_bbs]]
終了行:
* a23_useSelfMade #6
-(by [[K]], 2023.02.21)
--親ページ: [[a23_useSelfMade]]
** 2023.02.21 Tue #1
-今日はちょっと忙しいので、ここに書けるほどの成果はなさそ...
-昨日からずっと考えているのは、HL-9の改造で、(1)変数一覧...
~
** 2023.02.22 Wed #1
-最近は、easy-Cの有用性は理解されている気がするんだけど、...
~
** 2023.02.22 Wed #2
-「たしざんかあど」からランダムに10問を出題して計算練習。
-tashi.c[12行]
n = 0;
for (i = 1; i <= 10; i++) {
for (;;) {
j = aRnd(9) + 1;
k = aRnd(9) + 1;
if (j + k >= 11) break; // 繰り上がりの練習なので、1...
}
printf("[%02d] %d+%d=", i, j, k);
m = aInput("");
if (m == j + k) { n++; prs "O\n\n"; } else { prs "X\n\...
}
printf("score=%d/100\n", n * 10);
-実行するとこんな感じです。
HL9>run tashi.c
[01] 7+9=16
O
[02] 9+5=14
O
[03] 7+6=15
X
[04] 8+9=17
O
[05] 6+9=
-小学1年生の宿題をこれでやらせたら、大人側の支援がすごく...
-ちなみに繰り下がりのある引き算版も作りました(似たような...
~
** 2023.02.23 Thu #1
-なんかいろいろアイデアが出てきました。
-[1]コンソールを複数出してマルチタスクみたいなことがした...
-[2] a[0-99]=0; みたいな書き方ができるようにしたい。
-[3] {i,j,k} = aRnd(9) + 1; みたいな書き方ができるように...
~
** 2023.02.23 Thu #2
-昨日のtashi.cですが、小学1年生にやらせていると、たまに連...
-だから改造します。・・・できました、これなら同じ問題は出...
int a[100];
for (i = 0; i < 100; i++) { a[i] = 0; }
for (j = 1; j <= 9; j++) {
for (k = 1; k <= 9; k++) {
if (j + k >= 11) { a[j * 10 + k] = 1; } // 繰り上が...
}
}
n = 0;
for (i = 1; i <= 10; i++) {
m = aArgMaxRndInt(a, 0, 100);
j = m / 10; k = m % 10;
a[m] = 0;
printf("[%02d] %d+%d=", i, j, k);
m = aInput("");
if (m == j + k) { n++; prs "O\n\n"; } else { prs "X\n\...
}
printf("score=%d/100\n", n * 10);
~
** 2023.02.24 Fri #1
-「キャラクターを右に動かす」「もしもキャラクターの移動先...
-この隠れ変数方式を極めれば、easy-Cの「変数を使わなくても...
-この話をしたら、それはScratchがやっていることに近いので...
~
** 2023.02.26 Sun #1
-a[0-99]=0; について仕様を考えています。
a[0:::99] = 0; // これはいいんじゃないか? - だと引き算...
// a[1:::99] = a[i - 1]; // これで変数ずらしも可能に!
pr 0:::9; // これで 0123456789 が出力される。
s = 0; s += 1:::100; pr s; // これで5050が出てくる。
-うん、なかなかいいかもしれない。
~
** 2023.02.27 Mon #1
-簡易ループ演算子
-いろいろ考えて、:::はかっこ良くない気がしたので、:<と:<=...
a[0:<=99] = 0; → for (i = 0; i <= 99; i++) { a[i] = 0; }...
a[0:<100] = 0; → for (i = 0; i < 100; i++) { a[i] = 0; }
~
** 2023.02.28 Tue #1
-なんか自前のスタートアップルーチンを使うと、ダウンロード...
~
** 2023.02.28 Tue #2
-くう、なんか最近忙しすぎる!
~
** 2023.03.01 Wed #1
-[[a23_ec001]]を更新して、最新版をダウンロードできるよう...
--ああしまった、あせって invader.c と blocks.c を入れ忘れ...
~
** 2023.03.02 Thu #1
-かなり雑な実装にしていますが、とにかく簡易ループ演算子が...
HL9>pr 1:<=5
12345
HL9>pr 1:<5
1234
HL9>s=0;s=s+1:<=100;pr s ← sには1~100の和が入る.
5050
HL9>int a[100]
HL9>pr a[9]
0
HL9>a[0:<100]=1 ← これで全部1になる.
HL9>pr a[9]
1
HL9>a[0] = 0; a[1] = 1; a[(i = 0:<10) + 2] = a[i] + a[i ...
1 1 2 3 5 8 13 21 34
HL9>
-あとはこれをいろいろと使ってみて、便利かどうかをじっくり...
~
** 2023.03.03 Fri #1
-簡易ループ演算子。かなりfor文の書き方に近いロング形式。
HL9>(i = 0:<=10) { pris i; }
0 1 2 3 4 5 6 7 8 9 10
HL9>int a[100] = { 0, 1 }; (i = 0:<18) { a[i + 2] = a[i]...
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 25...
// 長さ比較.
HL9>(i = 0:<=10) { pris i; } // 簡易ループ演算子の前後に...
HL9>for (i = 0; i <= 10; i++) { pris i; }
// 13文字節約できている.
-標準的なC言語のスタイルだと、for文は繰り返し範囲を次の行...
~
** 2023.03.04 Sat #1
-gcc実行モードでも簡易ループ演算子を実装しようとして、う...
~
** 2023.03.06 Mon #1
-簡易ループ演算子の仕様変更
(構文1) pris a[0:<10];
(構文2) [i = 0:<10] { ... }
(構文3) [5] { ... }
-構文1は今までのもの。
-構文2はロング形式で、for文の代用。
-構文3はミドル形式で、指定した回数だけ繰り返す。もはや簡...
-簡易ループ演算子の目的は、プログラムを短くすることです。...
-今考えている仮説としては、プログラム内での繰り返し処理は...
** 2023.03.07 Tue #1
-今やりたいと思っている開発。
--[1]KeyValueStore
--[2]簡易ループ演算子をgccからも使えるようにする
--[3]対戦ゲームを作る
--[4]Cコンパイラをうまく使った、CPUに依存しないアセンブラ
--[5]実行中の変数を見えるようにする大掛かりな改造
-この中で[4]と[5]は手を出したら数週間(もしくは数か月)帰...
-やっぱりまずは[2]を仕上げて、その次に[3]かなあ。
~
** 2023.03.08 Wed #1
-easy-Cのプログラムを普通のC言語に変換する、ACA_EasyC_lv2...
~
** 2023.03.08 Wed #2
-とりあえず、簡易ループ演算子の(構文2)と(構文3)はgcc実行...
-内部を作り直したので、 pr (1+2)*3; もできるようになりま...
** 2023.03.09 Thu #1
-普通に「a[0:<10]=aRnd(10);」と書けば、なんか適当な10個の...
-でもそうではなくて、乱数は一度だけ振って、その値をa[0:<1...
-もしくは、while (x < a) { ... } みたいなループがあったと...
-こういうときも c = a; while (x < c) { ... } とする必要が...
-この c って面倒じゃないかなと思ったのです。なんかこう、 ...
-結局何が嫌なのかというと、変数が増えるのが嫌なんです。変...
** 2023.03.11 Sat #1
-簡易ループ演算子の(構文1)もgccモードで動くようになりまし...
~
** 2023.03.12 Sun #1
-思いついたことがあって試してみたくなったので実験します。
-gccでは、構造体を引数に取ったり、変数の返値として指定す...
-それは前から知っていたのですが、じゃあ仮に8KBの構造体を...
AClass(AGpc16) { // 汎用(GP)クラス(C). 16はサイズ. この...
union {
char c[8192];
double d[1024];
AInt i[16];
};
};
AGpc16 func(AGpc16 x)
{
AGpc16 y;
y.i[10] = x.i[0] + x.i[1];
x.i[1] = 9;
return y;
}
-funcが呼ばれるとき、スタック上の引数は 第一引数がreturn-...
-うん、C言語の仕様に照らせばxの渡し方は正しい気がします。
~
-私がこれに興味を持ったのは、可変長の構造体を返すことがで...
-たとえば、2つの文字列を連結して、その文字列を返すという...
AGpc16 myStrcat(char *s, char *t)
{
AGpc16 r;
sprintf(r.c, "%s%s", (const char *) s, (const char *...
return r;
}
void aMain(AComArg *aCA)
{
puts(myStrcat(myStrcat("abc", "123").c, myStrcat("de...
}
-これで abc123def456 が出ます・・・のはずだったのですが、...
-以下のようにすればいけます。
void aMain(AComArg *aCA)
{
AGpc16 a = myStrcat("abc", "123"), b = myStrcat("def...
AGpc16 c = myStrcat(a.c, b.c);
puts(c.c);
}
~
** 2023.03.13 Mon #1
-バイナリデータを簡単に出力したり入力したりできたら便利に...
~
** 2023.03.15 Wed #1
-あと2週間ほどでオープンソースカンファレンスです。私とし...
-やっぱり対戦ゲームです。それならオープンソースカンファレ...
** 2023.03.16 Thu #1
-今日は演算子について考えてみます。
-まず演算子には優先順位があります。私はこの優先順位をまじ...
-それで自分なりに得た結論は「できるだけカッコを使いたくな...
a=((1*2)+(3*4))
-って書かないとダメだったら、便利ですかね?
-さて私はC言語の演算子の優先順位について納得のいかないこ...
-よくある記述で、fopenしてNULLだったらエラーという処理を...
if ((fp = fopen(...)) == NULL) { ... }
-なんですかこれは?こんなのカッコ無しで書きたいです。
if (fp=fopen(...) == NULL) { ... }
-つまり比較演算子は代入演算子よりも優先順位が低くなるべき...
-ああわかりますよ。flag = a != 3; とかやりたかったんです...
flag = (a != 3);
-これでいいですよ、私は全く不満がないです。
-ビット演算の優先順位の低さも不満です。
if ((a & 15) == 7) { ... }
-ビット演算は優先順位が低いのです。きっと&&や||の代わりに...
if (a&15 == 7) { ... }
** 2023.03.18 Sat #1
-このeasy-Cの開発は、主にSecHack365のチャットというか掲示...
// persistent-C
//一覧を得る関数があって、後は自分でフィルタ・ソートする。
//kvs, 言語は型を知るべき, 言語はオブジェクトを知るべき
//winのクローズ
* こめんと欄
-掲示板をご利用ください。→[[a23_bbs]]
ページ名: