work-731198_1280

1: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:11:15.894 ID:J0h3KxBd0
でも頑張りたいので解決方法や予防方法を教えてください


2: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:12:10.053 ID:J0h3KxBd0
ちなみに言語はCです

3: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:12:42.661 ID:ITIdh0bm0
論理エラーって何?

5: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:13:48.095 ID:J0h3KxBd0
>>3
プログラムの文法は合ってるけど製作者の意図した機能とは別の機能を持ってしまってるプログラムのエラー
って感じだと思う

7: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:16:21.178 ID:DTwAgSEZd
>>3
プログラムが複雑すぎるせい
関数等に分割するなどし、個々のパーツを絶対に間違いないようにしろ

14: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:18:22.394 ID:J0h3KxBd0
>>7
関数はなるべく多い方がいい?

15: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:18:54.524 ID:O9mou+JY0
多いほうがいいっていうか単機能にすべきとはよく言うよね

23: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:28:00.390 ID:J0h3KxBd0
>>15
main関数にぶっこみまくってた………
改めます

18: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:19:28.653 ID:hzVhAv+BM
単一責務

10: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:16:58.467 ID:R2pipIcZ0
カルノー図かけよ

20: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:21:02.990 ID:J0h3KxBd0
>>10
ググったけど論理演算に役立ちそう
ありがとう

11: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:17:14.764 ID:fkqgi6sP0
簡単なプログラムを作るならPPP
複雑なプログラムを作るならTDDやBDD的に作っていってみるとか

前者は模擬コードで何をしたいのか決めてから実際のコーティングを行う技法
後者はテストプログラムや仕様ありきでコーティングを進めていく技法

22: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:26:52.922 ID:J0h3KxBd0
>>11
ごめんなさい
ググったけど難しくてわかんなかった
模擬コードってのはコメントの文でコードを表すやつ?

33: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:37:48.751 ID:fkqgi6sP0
>>22
そうそう
コメントで何をやりたいのか列挙書きして、それを元に論理的に正しいかをチェック
問題なさそうであればコメント部分に該当する処理を記述していく
最初から構文ありきで書いてくと論理問題と構文変更(引数や戻り地の変更etc)の2つが生じて手間が増えるけど
その前の段階で特定出来ればコメントを書き換えるだけなので手間が減る

ついでにコメント1行枚に関数を分割していけば
このスレでも挙がってるプログラムの細分化にも繋がっていく(けどやり過ぎには注意)

39: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:42:01.731 ID:J0h3KxBd0
>>33
たしかにその方が同時に考えることが減ってやりやすいかもしれないです
丁寧に教えてくださってありがとう御座いました!

37: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:39:26.211 ID:cYQrE9Ud0
どういう方法で勉強してんの?
本を買う+ネット?

43: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:46:21.025 ID:J0h3KxBd0
>>37
今のところはネットだけで勉強してました
今後は必要に応じて本も買っていこうと思います

17: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:19:20.159 ID:kUkFVkDJ0
とりあえずリーダブルコードよめ

25: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:28:33.052 ID:ITIdh0bm0
>>17
その本いいのか
結構気になってたんだよ

31: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:33:51.041 ID:kUkFVkDJ0
>>25
読みやすいコードを書くことは論理エラーを減らすことに繋がるからな
とにかく細分化と出来れば抽象化を心がけてエラーの特定を容易にしような

27: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:30:10.352 ID:J0h3KxBd0
>>17
きれいなコードの書き方本?
すごく良さそうなので買って読んでみようと思います
そういえば自分の書き方は我流で乱雑だったかも………

35: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:38:12.164 ID:kUkFVkDJ0
>>27
別に最初はC言語の本とか一切買わんでいいからリーダブルコードだけ読んどこうな
プログラム言語の仕様はネットで調べてどうしても行き詰まったり限界を感じたら専門性の高い本も買えばいい

41: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:45:03.115 ID:J0h3KxBd0
>>35
わかりました
まずはきれいな書き方を身に着けます

24: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:28:21.524 ID:OW5R1+Gm0
クロスコンパイル を目指してコード書いておけば汎用性や拡張性があるんやないかな?(´・ω・`)

32: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:35:33.215 ID:J0h3KxBd0
>>24
クロスコンパイルですか
ゆくゆくは目指してみるかもしれないです

26: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:29:45.997 ID:OW5R1+Gm0
あとコードって読んだだけだと 挙動を実際に理解できない(´・ω・`)

だから実装してみるのが一番いい(´・ω・`)

32: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:35:33.215 ID:J0h3KxBd0
>>26
実装ってのはコンパイルして実行することですか?

36: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:38:25.255 ID:OW5R1+Gm0
>>32
そう(´・ω・`)
このシステムではちゃんと動いても他のシステムじゃ動かないなんてこともある(´・ω・`)

41: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:45:03.115 ID:J0h3KxBd0
>>36
クロスコンパイルってそういうことだったんですか
たしかに色んなシステムで問題無く動くコードを書けるように慣れてないと後々困りそうですね

28: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:31:17.469 ID:OW5R1+Gm0
スレッド を実装しても隠蔽化して動きが 始めたばかりの人に追えないとか

だと速度追求できないとかエトセトラ (´・ω・`)

34: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:37:48.146 ID:J0h3KxBd0
>>28
スレッドと隠蔽化って何ですか?

40: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:42:51.784 ID:OW5R1+Gm0
>>34
隠蔽化というか 関数になっててその実態がスレッドとかになってることとかない?(´・ω・`)

44: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:50:39.285 ID:J0h3KxBd0
>>40
スレッドってのがわからないんですけど関数の細分化の話ですか?
たしかに関数がスレッド?みたいになってるかもしれないです

46: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:54:09.110 ID:OW5R1+Gm0
>>44
スレッドは 並列処理(´・ω・`)

スレッドにある処理任せていろいろやってる間に メインで他のことできるから速度があがる(´・ω・`)

49: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 14:03:38.045 ID:J0h3KxBd0
>>46
調べてみたら大体わかりました
並列処理は難しそうなのでもっと自分の腕が上がったら取り組んでみます

47: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:57:45.302 ID:OW5R1+Gm0
スレッドセーフとかで調べればでてくる(´・ω・`)

51: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 14:10:48.551 ID:OW5R1+Gm0
あと関数の戻り値 でerrorがわかるように書いておいたり

構造体にerror flag  つくっておいて flagの値でどこでerrorおきたのか追えるようにしておけば?(´・ω・`)

54: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 14:18:44.534 ID:OW5R1+Gm0
あと関数作るときは 必ず戻ってくるようにするとかやっておけば

必ずerror原因が拾える(´・ω・`)

30: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:32:49.280 ID:Dt7wFTvq0
論理エラーって起こるのがふつうじゃね?
起こってから対処していけばよくね
トライアンドエラーやろ

34: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:37:48.146 ID:J0h3KxBd0
>>30
そういうものなんですか
予防も大事だけど解決に慣れることも大事かもしれないですね

42: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:45:28.881 ID:W5Jbi+kW0
論理エラーは自分が書いたコードは絶対正しいと思い込んでるから起きる
一晩寝て見直すか、他人に見て貰えば見つかるよ

45: 以下、5ちゃんねるからVIPがお送りします 2020/04/08(水) 13:51:05.464 ID:J0h3KxBd0
>>42
たしかにそういう解決方法も良さそうです
ありがとうございます

ソフトウェアデザイン 2020年5月号
技術評論社 (2020-04-17)
売り上げランキング: 5