トップページ > プログラム > 2016年10月17日 > ioKnq3J9

書き込み順位&時間帯一覧

5 位/188 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000110000000000130006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【QBASIC互換!?】FreeBasic【GPL】

書き込みレス一覧

【QBASIC互換!?】FreeBasic【GPL】
839 :デフォルトの名無しさん[sage]:2016/10/17(月) 07:54:12.54 ID:ioKnq3J9
>>838
>これは、かなりメモリーを食う手法なので、重複起動しないタスクにしか使えない。
答えはNOだよ
ファイルから文字列を文字列型のバッファに読み込む
そのバッファを文字列カウントアルゴリズムに通す
その結果を出力する

この動作に使用されるメモリは、1つの関数内でやろうが関数を分けようが変わらない
なぜなら、何方にしてもバッファは必要であり
バッファを参照(あるいはポインタ)としてカウント関数に渡せば良いから

>一つのルーチンにまとめた場合「障害があるから、と直してしまう」と、
>どこかのルーチンの方で障害が出ることがある。
これも答えはNOだよ
バグを修正したからといって、その関数の使用先の修正の必要性はない
なぜなら、その関数の設計段階で期待される結果が決められているから

オブジェクト指向言語が主流になって設計の重要性が叫ばれているけれど
それに限った話ではなく、手続き型言語であっても同じこと
何を関数として汎化して切り出すか、それを設計段階で疎かにするから
無駄な読み難いコードが出来上がる

Staticおじさんの一連の騒動ををしっかりと調べた?
派生した話ではなく、その話題の発端となった話のことね
言っていることがまんまその人と同じなんだけど、危機感を持つべき事案だよ
【QBASIC互換!?】FreeBasic【GPL】
840 :デフォルトの名無しさん[sage]:2016/10/17(月) 08:11:13.23 ID:ioKnq3J9
>>838
オブジェクト指向の話で申し訳ないが、このスライドを見てよ
少し極端な話ではあるけど、参考になると思うよ
ttp://www.slideshare.net/MoriharuOhzu/ss-14083300

この内容を額面通り受け取らず、手続き型言語において、この思考をどう活かせるか
慣れ親しんだ思考を取り敢えず横に置いておいて思考を巡らして下さいよ

理解を「出来る、出来ない」に関してアレコレ言うつもりはないけれど
理解を「しようとする、しない」の姿勢に対しては言わせてもらうわ
レガシープログラマは、新しい「もの」に対して拒絶的なのよ
そのくせ、新しい「物」を使いたがる
だけど、古いままの使い方を無理やりする
【QBASIC互換!?】FreeBasic【GPL】
845 :デフォルトの名無しさん[sage]:2016/10/17(月) 19:34:55.84 ID:ioKnq3J9
>>842、>>843、>>844
ざっとコード読んでみたけど、そりゃ上手く動かんだろうね

>Dim InValLing As Long, RetVal() as Long
ここで、RetVal()は動的配列を宣言して、その後関数に渡される
関数内の
>If (RetValLong(IBB, ICC) <> DimDataLong2(IBB, ICC)) Then IDD = IDD +1
   ^^^^^^^
この部分で配列RetValLong()を参照しているけど
RetValLong()の参照元の動的配列RetVal()は、まだ具体的な要素数でメモリを確保していない
redim RetValLong(IAA, IAA) as Longの場所が悪いね
【QBASIC互換!?】FreeBasic【GPL】
846 :デフォルトの名無しさん[sage]:2016/10/17(月) 20:05:26.95 ID:ioKnq3J9
同様に>>843のグローバル配列も関数内でredimで領域確保していないな
>ReDim DimDataLong2(IAA, IAA) As Long, RetValLong(IAA, IAA) as Long
こいつらの宣言場所が悪い

まずさ、FreeBASICの言語機能を理解しようよ
言っちゃ悪いが、こんなの初歩だと思うんだけど…
【QBASIC互換!?】FreeBasic【GPL】
847 :デフォルトの名無しさん[sage]:2016/10/17(月) 20:28:00.52 ID:ioKnq3J9
それとさ
サンプルコードなのだから取り敢えずいらない部分は削ぎ落とそうよ
やっていることは至極簡単なのに余計な部分が多々あるから読み難いよ

動くかどうか試していないけど、取り敢えずいらないものを排除したコード
変数iddが何に使うのか知らんけど、一応入れておいた

function AS03_AAAA(RetValLong() as long) as long
dim as long iaa = AS02_AAAA(RetValLong())
dim as long idd

redim DimDataLong2(iaa, iaa), RetValLong(iaa, iaa)

for ibb as long = 1 to iaa
for icc as long = 1 to iaa
DimDataLong2(ibb, icc) = ibb * iaa + icc
'' idd += -(RetValLong(ibb, icc) <> DimDataLong2(ibb, icc)) こういう書き方も出来る
idd += iif(RetValLong(ibb, icc) <> DimDataLong2(ibb, icc), 1, 0)
RetValLong(ibb, icc) = DimDataLong2(ibb, icc)
next icc
next ibb

return iaa
end function
【QBASIC互換!?】FreeBasic【GPL】
848 :デフォルトの名無しさん[sage]:2016/10/17(月) 20:47:28.64 ID:ioKnq3J9
>>847
補足
redimはそれが宣言された時点でその型のデフォルト値で初期化されるから
値を保持したいなら、Preserve使ってな


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。