- 1 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 23:27:18 ]
- C言語の*入門者*向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 60 pc12.2ch.net/test/read.cgi/tech/1264920499/ ★過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 ★初心者、初級者の方は他の質問スレのほうが良いかもしれません。 例えば 【初心者歓迎】C/C++室 Ver.72【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1267775473/ とか ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 134代目 pc12.2ch.net/test/read.cgi/tech/1263824755/ ★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
- 45 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:28:51 ]
- CreateProcessだろ
DOS画面出さず出力をメモリに入れられる
- 46 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:03:39 ]
- >>45
つスレタイ
- 47 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 07:59:22 ]
- const と define の違いが今ひとつわからない
どっちも定数を定義するんだよね?
- 48 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 08:47:35 ]
- ココでも読め。
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q128719177 rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200510/05100021.txt
- 49 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 10:20:16 ]
- C言語でrailsのActiverecord
作ってくださいお願いします
- 50 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 10:23:47 ]
- 自分でやれよ
- 51 名前:デフォルトの名無しさん [2010/03/07(日) 10:37:04 ]
- >>47
define ・・・最も古くから使われている enum ・・・ヒゲさん曰く見えない圧力に押されて追加、いまいちらしい const ・・・禿と共同開発 定数を返す関数という手もあり これが実は最も融通が利く
- 52 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 10:55:25 ]
- defineはコンパイル時に置き換えてくれるだけ
だからマクロとして使えるし、関数丸ごとdefineしてみるとか変なこともできる __LINE___や__TIME___みたいなコンパイル時に決まるやつもある 事項時はもうすでに置き換わっているのでaaaaとかって名前でdfineしてデバッカでaaaa探してもない constはメモリ上に固定でそいつがずっといるだけ つまりデバッカで値も見れる
- 53 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 10:55:26 ]
- >>47
これ↓も似たような質問かな? C言語のdefineとグローバル関数について - Yahoo!知恵袋 detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1237313677
- 54 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 10:57:16 ]
- おれ52だけど なんでアンダーバーが3っつなんだろ??
- 55 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 10:59:46 ]
- コンパイル時というかプリプロセス時
- 56 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:00:50 ]
- キーリピート間隔を短く設定していたんじゃないのか
- 57 名前:デフォルトの名無しさん [2010/03/07(日) 11:12:23 ]
- 8bitのデータで、
6ビット目が1になったら他のビットが1でも0でも関係なく特定の処理をする動作はどのようにすればよいでしょうか。
- 58 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:17:02 ]
- & (1 << 5)
- 59 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:17:36 ]
- if(data&0x20){
特定の処理 }
- 60 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:36:45 ]
- ループを使わずに配列の順序を逆にせよ。
という問題は、ループ制御構造(whileやfor)を使わずに、という意味でいいのかな? 関数の再帰呼び出しでもできそうだけど、goto文使ったらだめ?
- 61 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:38:53 ]
- >>60
それはCの問題ではなく日本語の問題じゃね? どういう意図で書いたのかを書いた人に聞けよ
- 62 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:43:04 ]
- >>61
このホワイトボードプログラミングのところ: http://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20409456-2,00.htm 一応、こんな感じで(^^ int * reverse(int ary[]) { int i = 0; int j = SIZE - 1; int tmp; loop: if (i >= j) goto end; tmp = ary[i]; ary[i++] = ary[j]; ary[j--] = tmp; goto loop; end: return ary; }
- 63 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:47:31 ]
- gotoつかってもループだろ
- 64 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:49:50 ]
- goto文はループ制御構造ではないんですよね。
だったら「ループを使わずに」じゃなくて「再帰を使って」、と書けばいいのに。。
- 65 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:51:03 ]
- たぶん出題意図としては、再帰を使ってほしいんじゃないかね
Cというよりは関数型言語でやらせるような問題
- 66 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:52:09 ]
- >>62
答え出てるぞ * ループを使わずに配列の順序を逆にする。 答え:順次、配列を画面に表示して行ってオペレーターにメモさせておき、 メモした値を逆順に入力するよう促すダイアログを出す。
- 67 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:21:02 ]
- 画像の範囲内をマウスのクリックで判定させるにはどのような考え方をすればよいのでしょうか?
参考サイトがあれば紹介して頂きたいです。
- 68 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:30:16 ]
- UNIX環境でVCの代わりになるような物ってないですかねぇ
- 69 名前:デフォルトの名無しさん [2010/03/07(日) 13:34:37 ]
- VC のどんな特徴の「代わり」ができればいいんだ?
VC そのものなら Xen という手もある
- 70 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:35:53 ]
- >67
その画像が矩形なのか矩形以外の多角形なのかで変わる >68 Anjuta, Emacs, Geany
- 71 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:38:38 ]
- >>70
矩形を想定しています。
- 72 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:44:12 ]
- >>71
ドラッグして範囲選択みたいな感じ? 考え方っていうか、サンプルコード見たほうが早いんじゃない? マウスダウンのイベントでマウスカーソルをキャプチャして、マウスの ボタンが離されたれらそこまでが選択範囲だけど。
- 73 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:49:13 ]
- 単にヒットした座標か画素が欲しいだけだろ
- 74 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:53:45 ]
- 範囲選択ではなく、画像のスイッチのような感じです。
一定の矩形の範囲内をクリックすることで、処理が行われるようにしたいと 思っています。
- 75 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 13:58:16 ]
- ゲームでも作りたいんじゃないの
確かやねうさんはビット演算でやっていたな 自分で紙に矩形とポイントを描いて条件を考えてみれば自ずと答えが見えてくるよ
- 76 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 14:20:51 ]
- マウスの位置と矩形の位置を取得しておいて
矩形の上境界線と下境界線の間にマウスの縦座標があって 左境界線と右境界線の間にマウスの横座標があればいいだけじゃないの?
- 77 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 14:30:09 ]
- left <= x && x <= rignt && bottom <= y && y <= top
- 78 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 14:30:29 ]
- >>67
むかしBMPファイル(って予備領域とか拡張可能になってるから)に勝手にホットスポットっていうか クリック可能位置を付け足してクリックすると話が進む紙芝居、見たいなの作った 言語も環境も書いてないからあれだけど クリッカブルマップ、とかでググってみるとなんとかくやり方わかると思うよ あとは環境しだいで同じ様な事を違うやり方でやれば
- 79 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 14:44:28 ]
- 様々なご回答ありがとうございます。
全て参考にさせて頂きます。
- 80 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 15:18:45 ]
- >>68 : kdevelop (書こうとしてる字を予測して、自動補完してくれるからラクちんです)
>>71 : 三角形がいっぱいあるとおもってやるほうほうもあるみたいですよ。 double OuterProduct( double ax, double ay, double az, double bx, double by, double bz, double cx, double cy, double cz ) { double Ax=bx-ax; double Ay=by-ay; double Az=bz-az; double Bx=cx-bx; double By=cy-by; double Bz=cz-bz; double opx = (Ay*Bz-Az*By); double opy = (Az*Bx-Ax*Bz); double opz = (Ax*By-Ay*Bx); return opz; } B A △ C 3角形ABC の中に、点P が「中かな?外かな?」ってのを知りたいときは、 「AB と P」、「BC と P」、「CA と P」 の3つについて、この関数で調べてみて、戻り値が3つとも全部プラス、または3つとも全部マイナスなら 点Pは 3角形ABCの内側ってことらしいです。 なんでか理由はよくわかりませんがw 符号1 = OutarProduct( Aのx座標、Aのy座標, 0、 Bのx座標、Bのy座標、0、 Pのx座標、Pのy座標、0 ); 符号2 = OutarProduct( Bのx座標、Bのy座標, 0、 Cのx座標、Cのy座標、0、 Pのx座標、Pのy座標、0 ); 符号3 = OutarProduct( Cのx座標、Cのy座標, 0、 Aのx座標、Aのy座標、0、 Pのx座標、Pのy座標、0 ); if( 符号1と符号2と符号3が、3つともプラス。 または3つともマイナスなら){ 点Pは、さんかっけいABCのうちがわ♪ } ってなるみたいです。 なんでか理由はよくわかりませんがw こんど算数の先生に聞いてみまーす。
- 81 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 15:22:25 ]
- 外積で左右判定してるんでしょ
- 82 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:35:50 ]
- >>67 三角形の内部の点かどうか判定するプログラム
#include<stdio.h> #include<math.h> int is_inner(double ax, double ay, double bx, double by, double cx, double cy, double px, double py) { double Ax, Ay, Bx, By, Px, Py, alpha, beta, divisor; Ax=ax-cx; Ay=ay-cy; Bx=bx-cx; By=by-cy; Px=px-cx; Py=py-cy; divisor=Ax*By-Bx*Ay; if(fabs(divisor)<1.0e-6) return 0; alpha=(By*Px-Bx*Py)/divisor; beta=(-Ay*Px+Ax*Py)/divisor; if(0.0<alpha && alpha<1.0 && 0.0<beta && beta<(1.0-alpha)) return 1; return 0; } int main(void) { printf("%d\n", is_inner(1.0, 2.0, 2.0, 1.0, 1.0, 1.0, 0.5, 0.499)); return 0; }
- 83 名前:デフォルトの名無しさん [2010/03/07(日) 21:51:15 ]
- 再帰的アルゴリズムの利便性がわかりません。
下手をすればスタック領域が蓄積されていってメモリ不足に陥りますよね。 再帰を使わなくても他に解決できる手段があればみなさんはどちらを選択しますか
- 84 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:54:10 ]
- >>83
間違いが少ないほう
- 85 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:56:59 ]
- ほらループなしで処理が書けたよ!と頭よさげにアピールできる
問題領域そのものが再帰的なら可読性と保守性があがる C言語ではあまり利点がないので他の手段で頑張る 関数型言語とかだとまた別の話しになる
- 86 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:10:59 ]
- >>83
利便性っていうか、再帰的な処理は再帰で書いた方がわかりやすいな。
- 87 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:11:17 ]
- 関数に状態を持たせるのがどうじゃこうじゃ
逆に再帰で書いているのを繰り返し制御などで書き直す方が頭良さげ 最近再帰使ったのはビット単位でファイルに書き込む関数の下請け関数だわ
- 88 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:28:25 ]
- 本物のプログラマは自己書き換えプログラミング・コードを記述する。
そのことにより再帰アルゴリズムを使うのに比べて20ナノ秒も実行時間が改善される どうしても再帰なんつう場面は数年に一度 それ以外は、再帰アルゴリズムがぱっとわからないと馬鹿にされるという理由だけで使用する プログラマってそんなもん
- 89 名前:デフォルトの名無しさん [2010/03/07(日) 22:52:19 ]
- 再帰は、数学の階乗を求めるプログラムをかじった程度です。
可読・保守性があがるという利点は納得です。 逆にプログラマが再帰プログラムを創り出すほうが大変そう。 階乗求める以外に再帰を使ったほうがいいケースは思いつきにくいですね
- 90 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:53:10 ]
- >>89
3D オブジェクトを扱うときは必須だよ
- 91 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:54:05 ]
- 階乗こそ単純ループで十分で再帰にする必要なんてないんだが。
- 92 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:00:41 ]
- 無向グラフの経路探索とか再帰使わないと面倒でやってられんけど
- 93 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:01:26 ]
- >>89
ディレクトリをおりていく処理とか、ループで書くとめんどくさいだろ。
- 94 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:12:27 ]
- >>91
教材的な意味だろ
- 95 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:46:11 ]
- 教材としてあげるにしても、せめてユークリッドの互除法とか、フェボナチ数列(など漸化式)とかが出てこないものか
- 96 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:47:17 ]
- 再帰関数の教材ならハノイの塔の問題を解く奴が好き
- 97 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:56:03 ]
- 他人のコードで見つけるとループに書き換えられないかと難癖付けてみたくなる要素
自コードと同じスタックでライブラリ的利用させてもらう場合特に
- 98 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:55:01 ]
- 組み込み系だと、変数を取れるキャパが決まってたりして
「お、スタックが空いてる再帰でなんとかしろ」とかあるよ
- 99 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:18:44 ]
- >>89
再帰だとシンプルに書けるものはたくさんある。 もちろんスタックオーバーフローには注意が必要だけど、 プログラマの差ってのはこういうところから来るんだと思う。 例えば、テキストファイルの行を逆順に出力する(いわゆるtacコマンド) を作ろうとすると、再帰だとこんなにシンプル #include <stdio.h> void rev() { char buf[1000]; if(fgets(buf, 1000, stdin) != 0) { rev(); fputs(buf,stdout); } } main() { rev(); }
- 100 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:21:16 ]
- >>99
再帰関数で大きな自動変数の配列を使うのはナシだろ
- 101 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:25:22 ]
- なにこの制限だらけのtac
- 102 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:50:03 ]
- >99
これは再帰の悪い例としていつか使わせてもらう
- 103 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 02:14:39 ]
- >>再帰
文字列の中から、正規表現によって単語検索をする場合、正規表現の文字列の並びを、配列から、一旦、順序木の構造に変換してしまって、 木のノードを順番に辿りながら、文字列を検索していくと、一連の検索を、共通の操作であつかえて簡単だとおもいます。 たとえば括弧で囲まれて1まとめになった複数条件も、あるノードの子としてまとめて、”あるノードの子というひとまとまりの単位”であつかえるので、 たとえば単純な ”A" という条件も、複雑な ”[AかBかC]”みたいな括弧で囲まれた条件も、どちらも同一の「”このノード”を使って検索する」という操作で扱えます。 これが再帰を使って得られる簡単さという恩恵だと思います。 簡単に素直にするために再帰を使うんだと思います。 たとえば括弧に囲まれた複数文字も、囲まれてない単一文字も、どちらも同じように考えて検索できるのだから、 木がどんなに複雑な形をしてても、逆にどんなに単純な形だとしても、 どちらも同じ要領で「”このノード”を使って検索する」という共通の操作だけで最後まで処理できます。 この順序木を巡っていくという操作を、単一のループだけでやろうとすると、 「さまざまな形の木を想定」して、それぞれに専用の動作を書いたりするケースが出てきやすいと思います。 (たとえば "A"の場合と "[AかBかCか]"の場合とでの動作の違いを、「わざわざ専用に用意」しないといけいない。などのメンドクササ。 これがループだけでやる場合のメンドクササだと思います。) だけど、純粋に繰り返しの処理速度だけでみれば、やっぱり for ループみたいなモノの方が優れてるような気がします。よく知りませんが。 普通はループで十分事足りるので、たとえば「シンプルな int[1000] の配列全部に0を代入する」だけのことに、わざわざ再帰を使う必要は無いと思うし、 無理やり再帰なんか使ったら、逆に、わかりづらくなるだけだろうし、わかり辛いとミスも増えますし。 あたりまえですけど、「より簡単に、より素直に書ける方」を選んで使えばいいだけのことかとおもいます。どっちも便利だとおもいます。
- 104 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 04:41:46 ]
- Cの場合、非再帰で記述(スタックを自前で構築ってのは
この場合反則になるんで)できる位の力量が無いのに 再帰(間接再帰を含む)を使いまくったコードを書くと 後で地獄を見る可能性も視野に...
- 105 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 05:08:48 ]
- >>104
よく分からん縛りだけど 人に強要するのは勘弁してね
- 106 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 05:11:09 ]
- ライブラリ、長く使うものに再帰はないな。
どこがスタック積まれるか判らないし、スタックオーバーフローもいつ起こるか特定できない。
- 107 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 07:41:46 ]
- >>99
逆順にならない。
- 108 名前:107 mailto:sage [2010/03/08(月) 18:48:09 ]
- 失礼、行を単位に逆になるという意味だったんですね。ちゃんとうごきました。
- 109 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 18:51:24 ]
- 1行毎に1000バイトずつスタックに積むとか使えない。
手元にあるテキストは、1行当たり数キロバイトとか逆に数十万行とか普通にあるんだが。 まぁ発想方法としては、悪くないんだけどね。
- 110 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 18:58:51 ]
- 一行読んで、それを連結リストで繋いでおく方がいいな。
それでもファイルサイズが大きすぎると面倒だけど。 tacコマンドは、ファイルの末尾にseekしてから表示しているな。 seekできないストリームに対しては、テンポラリファイルにコピーしてから。 まあちゃんと読んだわけではないから詳しくは知らないけど。
- 111 名前:デフォルトの名無しさん [2010/03/08(月) 20:21:44 ]
- Cと直接関係してる質問じゃないけど
ソースを見れる形でファイルを上げれるcodepadのようなアップローダって他にある? なんか似たような感じで見やすいところがもう一つあった気がするんだけど
- 112 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:27:44 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
ここ?
- 113 名前:デフォルトの名無しさん [2010/03/08(月) 20:32:06 ]
- いや、もっと企業がやってるようなオシャレな感じで掲示板では無かったんだけど。
codepadみたいにソースが表示されてdownloadボタンが付いてる感じで
- 114 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:35:20 ]
- gist.github.com/
ここ?
- 115 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:44:11 ]
- おおそれだ、探しても見つかんなかったんだありがとう。
- 116 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:44:29 ]
- 言われてから探して見つけてきたけど
- 117 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:52:01 ]
- アップローダとか無駄なキーワード入れてたのが駄目っだのかな・・
- 118 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:54:14 ]
- codepadの類似サービスだから一緒くたに紹介されてると思って、はてブでcodepadと検索したら出てきた
- 119 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 21:41:02 ]
- #include <stdio.h>
void rev(void) { char *buf; if ((buf = malloc(sizeof(char) * 1000)) == NULL) { fputs("memory allocate error.", stderr); exit(1); } if (fgets(buf, 1000, stdin) != 0) { rev(); fputs(buf,stdout); } free(buf); } int main(void) { rev(); return 0; } これでいいですか?
- 120 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 21:55:53 ]
- malloc()で動的に確保しても、領域計算量が大きければ意味なし。
- 121 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:27:03 ]
- 最近も再起なんて使う?みたいなレスを見たなぁと思ったら図書スレでか
まぁこの手の話題は定期的にあがるもんだけど
- 122 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:28:31 ]
- C言語って難しいんですか??
- 123 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:30:22 ]
- 難しいの定義による。
- 124 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:30:22 ]
- >>122
わかれば簡単だと思うよ
- 125 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:30:56 ]
- >>122
文法自体はかなり簡単な部類 ポインタで躓かなかったらな
- 126 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:32:03 ]
- 英語とかって、出来てたほうがいいですかね??
- 127 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:33:37 ]
- >>122
難しいともいえるしやさしいともいえる。 低機能の言語なので、文法自体はシンプルで覚えることは少ない。(やさしい?) 低機能の言語なので、なんかやろうとするとめちゃくちゃ手間がかかる。(難しい?)
- 128 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:39:03 ]
- >>126
出来た方がいいに決まってるが、 そんな質問するアホには必要ない。
- 129 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:39:54 ]
- >>126
読みやすいプログラムはそれ自体英文として読めるプログラムだから(俺流の解釈) 読みやすいプログラムを書くためには英語は必要。 英語のできない人が書いたプログラムは大変。 CにしてもJavaにしても英語圏の産物なんだな。
- 130 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:54:34 ]
- プログラミング言語は、アルファベット使うけど英語じゃなくて数学に近いな
- 131 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:24:31 ]
- >読みやすいプログラムはそれ自体英文として読めるプログラムだから
こんなこというやつの変数や関数は長くてむかつく ReadDataFromUserFileToImageBuffer() みたいなやつ あるいはアンダーバーでつなげてみたりして 今時補完機能があるからへいきだろう、とか言い出してさ >読みやすいプログラムを書くためには英語は必要。英語のできない人が書いたプログラムは大変。 こういうこと言うやつは俺がnamaeみたいな変数とかyomikomi()みたいな関数作ると怒り出すよな いいじゃん、日本人なんだから日本語にしただけで読みずらくなったりしないよ と見ず知らずの129にすげえむかつく
- 132 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:26:24 ]
- 英語できないやつのプログラムは、
childs とか serch とか、ありえないスペルミスがあって、読みにくくてかなわん。
- 133 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:26:40 ]
- いや読みにくいから
- 134 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:26:53 ]
- >>131
日本語があやふやなお前が言っても説得力は無い
- 135 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:42:49 ]
- 俺が普段書くスクリプトなんて一文字変数、スペースけちって詰め詰めばっかりだよ
- 136 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:44:49 ]
- SQL?
- 137 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 02:41:32 ]
- >>131
ReadDataとToImageBufferが意味的にかぶってない? UserFileというのもちょっと。 ReadImageFromFileじゃだめかい? 英文として読めるように、というのはよくある指針だね。
- 138 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 03:58:43 ]
- RiyousyaFileKaraGazouBufferHeYomikomi()
とか書かれたらキレそう
- 139 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 05:21:39 ]
- プログラムが正しく動作して、開発スタート時に決めた関数の命名規約
(※腐ったルールだとしても)を遵守しているなら、あまり気にしないレベル
- 140 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:16:23 ]
- >>137
そうそう、こういう人 上記のやうは例じゃん、適当に作ったさ それにたいしてまで、こんな事言ってくる そういう点がむかつくんだって事 ReadImageFromFileじゃだめじゃん 長々と英文を関数名にしてるやつが居るよねって例としては短すぎる ここは多少英語としておかしくても長くして置かないと駄目
- 141 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:17:31 ]
- JISYO のように複数のローマ字方式をミックスしたり、
JYOHO のような適当ローマ字で書かれているのを見るとためいきが出る。
- 142 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 07:32:31 ]
- readdata
readdata2 readdata3 readdataEX readdataEX2 みたいにされるのもむかつく、混在してたりするとさらに
- 143 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 08:15:36 ]
- とりあえず読みにくいのはお断り
関数名は英語とローマ字のどちらかに統一されていれば気にしない 混在してるとイラッとくるが
- 144 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 08:17:50 ]
- >>140
シンプルだが単語のせいで長くなる場合は仕方ない i18nのようにごまかすのもいいけど、やりすぎはよくない 複数の意味を含めた名前になるのならそれは関数化が足りない
- 145 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 10:05:36 ]
- つかもともとCは単語を略す文化だよね
intもcharもbufだってそう memcmpとかやっちゃうし 昔の本とかのソース見るとインデントもあって目を細めると螺旋模様のように見える 今のソースはBASICのようにブロック並べたみたい
|

|