エクセル指向プログラミング (34レス)
1-

1
(1): 2024/03/26(火)17:12 ID:e/0sucGI(1/6) AAS
エクセル指向プログラミング(Excel Oriented Programming、EOP)は、ノンプログラマにとって最も直感的で習得が容易なプログラミングスタイルです。

ブログラマは難解な言語機能を覚えることなく、拡張が容易なソフトウェアを、簡単に開発することができます。

プログラムのすべてのデータは長さ可変の二次元配列の上で管理されます。この二次元配列を「シート」といい、配列の各要素を「セル」と言います。

シートはシングルトンオブジェクトです。すなわち、EOPでは単一のグローバル変数を上書きすることでプログラムの状態を更新します。

構造化データはすべて配列で表します。データ型などのスキーマはありません。どの行・どの列がなんのデータを表すのかは、その場その場で変更することができます。

行方向または列方向に連続するセルが一つのデータ構造を表します。したがって、構造化データの読み取りは

while(cell) {
// do something
cell = sheet[r][c++];
}

のように書けます。使い終わった領域は0またはnullで初期化しておきます。

ネストされた構造化データは、セルへの参照をセルに書き込みます。たとえば、多重配列を表現する場合は、ネストされた配列の先頭要素の座標をセルに書き込みます。

EOPでは、プログラマは好きなときに好きなデータ構造を使用することができます。既存のプログラミングスタイルのように、データ型やメソッドのシグネチャに、データ構造が制限されることがありません。
5: 2024/03/26(火)19:26 ID:e/0sucGI(5/6) AAS
訂正:

r++やc++と書いてあるところ
すべて++r, ++cです
6: 2024/03/26(火)19:59 ID:e/0sucGI(6/6) AAS
EOPでは、シートを用いてデータ構造をシンプルかつ柔軟に扱えるだけではなく、シートは手続きを表現することもできます

以下のプログラムは、4つのコマンド

ADD
PRINT

を持ちます
ADDを呼ぶと、引数の数が合計値に加算されます
PRINTを呼ぶと、現在の合計値が表示されます

r = 0;
sum = 0;
while(cell) {
if (cell == "ADD") {
sum += sheet[r][cmd + 1];
}
if (cell =="PRINT") {
print(sheet[r][cmd + 1]);
}
cell = sheet[++r][cmd];
}
7: 2024/03/27(水)05:40 ID:Ln/fAIz6(1) AAS
言語何使ってんのコレ
8: 2024/03/27(水)14:53 ID:8k2YrkW2(1) AAS
なんかオライリーみたいな導入
9: 2024/03/29(金)14:55 ID:hQjfrr6D(1) AAS
ID:e/0sucGI
こいつろくにプログラミングしたことないんだろうなぁ
10: 2024/03/29(金)16:33 ID:4yVHOK9w(1) AAS
ネタスレにマジレス
11
(1): 2024/03/30(土)19:46 ID:lpdJhGw+(1) AAS
あれだけ連投してるのにネタスレでごまかすのは無理でしょ
まぁ足りない頭を絞って書いたものを正論で潰されるのは可哀相っちゃ可哀相だけど…
12: 2024/03/30(土)22:25 ID:2vvOizF3(1) AAS
うわぁ……
13: 2024/03/31(日)05:30 ID:mCr6Yy4A(1) AAS
>>1があれ以降書き込んでないのがお察し
どんな反応求めてたんだろう
14: 2024/03/31(日)10:58 ID:bHunl/8X(1) AAS
>>11が心配

「連投してるからネタスレでない」というロジックが意味不明だし
「正論」とやらがどこに書かれているのかもわからない
15: 2024/03/31(日)11:12 ID:AFDVA+e4(1) AAS
一次元の配列指向プログラミングならセルの参照は1個のパラメータだけで済むからより効率的
16: 2024/04/02(火)15:32 ID:CQMIJaVM(1) AAS
1次元配列ならジャンプ先のアドレスの指定は変数1個で済む
17: 2024/04/02(火)15:41 ID:x3qRw97u(1) AAS
多次元配列だって計算すれば同じだよ
変数一つで実現できる
逆に一次元配列を多次元配列とみなして使う方法だってあるんだし
18
(1): 2024/04/02(火)19:06 ID:5dwwFNXN(1/2) AAS
C言語なら、ポインタ型変数1個だけ使えばいいな
19
(1): 2024/04/02(火)19:09 ID:7yjlHQas(1) AAS
>>18
ポインタ理解できてないだろ
20
(1): 2024/04/02(火)19:10 ID:5dwwFNXN(2/2) AAS
>>19

21
(1): 2024/04/02(火)19:18 ID:JgXYUviJ(1/2) AAS
>>20
ポインタ型変数一つじゃ実現不可って話
22: 2024/04/02(火)19:22 ID:kERS+9TD(1) AAS
・配列の先頭アドレスを指すポインタ
・行数,列数を表す符号なし整数
・↑をまとめた構造体
23: 2024/04/02(火)19:38 ID:JgXYUviJ(2/2) AAS
それをポインタ型変数1個って言うか?
24: 2024/04/02(火)19:51 ID:oY83wibz(1) AAS
>>21
なぜ?
25: 2024/04/02(火)19:55 ID:vNvRaytj(1) AAS
ネタスレで、そのネタを下回る知能のやつがああだこうだ言っているという地獄
26: 2024/04/02(火)19:57 ID:GZPLkX8A(1) AAS
ポインタ1個と即値だけでいけるがな
27: 2024/04/02(火)20:11 ID:abcHw/BD(1) AAS
スタックポインタはいるだろ
28: 2024/04/02(火)20:20 ID:rNuJc/A1(1/2) AAS
スタックは要るな
29: 2024/04/02(火)20:22 ID:rNuJc/A1(2/2) AAS
いや、いらんわ
戻り先のアドレスは紙にでも書いときゃいい
30: 2024/04/02(火)20:33 ID:edguWIiV(1) AAS
以外に伸びたなとおもったら違う方向か
31: 2024/04/03(水)11:24 ID:07nBP01A(1) AAS
エクセルでプログラムとかメンテナンス性が最悪だからおすすめしない
32: 2024/04/04(木)03:34 ID:GlxXdEjq(1) AAS
ぬるぽ
33: 2024/04/04(木)03:48 ID:2O67KOQT(1) AAS
データの読み書きは

while(cell = *p++) {
// do something
}

データ構造を扱いたい時は
1つのオブジェクトがいくつのフィールドを持つか決めておき

while(cell = *(p + size)) {
// do something
}

のようにする

途中で構造を変えたくなった時のために、
sizeは3つか4つ余分に確保しておくのがベストプラクティス

データ構造を入れ子にする場合や、サブルーチンを使う場合は、スタックを使う

C言語とか忘れた
34: 2024/04/04(木)11:19 ID:AaDBa930(1) AAS
つまんねーC言語モドキじゃなくて
Excel4マクロみたいに独自性を出していこうよ
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.293s*