[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 05/09 23:42 / Filesize : 31 KB / Number-of Response : 159
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語は関数ができなくても、理解可能か?



1 名前:デフォルトの名無しさん [04/07/18 03:31]
あと、どの入門書が初心者には
最善でうかね?


77 名前:デフォルトの名無しさん [2008/06/25(水) 23:07:07 ]
数学の関数とC言語の関数って同じ意味じゃん
引数は何個でもいい、戻り値は一個だけ。
同じじゃん。
void関数も漸近線のある関数なら漸近線を超えれば戻り値がないでしょ。
どこがちがうの?

78 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 23:13:01 ]
副作用の有無。
数学の関数は、同じ引数を与えると値が返るだけだが、
Cの関数はそれ以外の効果を生むことがある。例えば、出力を行うprintfなど。

79 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 12:25:44 ]
>>77
戻り値は引数の写像ではないので数学でいう関数とは異なります。
アホ?

80 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:25:58 ]
おまえらの言いたいことの察しはつくが不正確
同じ所もあるが、むしろ「違いが分からなければ」理解不能

81 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 05:29:42 ]
>>78-79 正しい >>80 アホ

82 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 15:26:10 ]
>関数ができなくても

ワロタ

83 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 02:12:42 ]
漏れの周りにも一人だけ関数が理解できないというやつがいたが、
そいつは関数の作成ができなかった。
特に、配列やポインタの受け渡しになると絶望的だった。
1って、そういう意味じゃね?

84 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 13:48:07 ]
Cの関数以外を理解することは可能だろうが、C言語には関数も含まれるんだから
C言語を理解したと言い張るつもりなら関数も理解しなければならない。

昔アセンブラ入門でサブルーチンを別の工場のラインにたとえてるのがあったが
ああいう本ってまだあるのかねぇ。

85 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 22:04:11 ]
昔Cを使ってたが意外に関数なんていらなかった
関数と違って型チェックはないけれど
全部マクロ関数で書いてcppに展開させる
最終的にインラインアセンブラに展開される



86 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 22:22:05 ]
ようするに関数ってのはライブラリのバイナリをシンボルで呼んでるわけで
同じ関数は1つしかリンクされない
マクロの場合はは全部ベタに展開されてしまうから無駄が多くなる

87 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:51:10 ]
int main(){
return 0;
}
こんな定型書式はIDEが自動で書いてくれるから
とくに関数を知らなくても問題ない
関数という、プログラムのリサイクル手法を使うか
それともたとえ繰り返し部分があってもリサイクルしないで
あえて上から下まで平文で打つか
関数を使うも使わないも個人の自由

88 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 11:51:35 ]
そりゃ、趣味グラマなら好きにするがいいさ。

89 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 15:57:56 ]
関数は邪道だよ
漢なら関数に頼らず
Cの基本リテラルだけで書け
関数に分割すると全体の構造がわかりにくくなるから
何のための構造化プログラムだかわからんしな

90 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:18:06 ]
コボラーはこれだから

91 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:48:10 ]
>関数に分割すると全体の構造がわかりにくくなるから
>何のための構造化プログラムだかわからんしな

92 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 17:40:16 ]
>>91
gotoとか関数を使うやつはアホ

93 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 18:55:48 ]
>関数に分割すると全体の構造がわかりにくくなるから
>何のための構造化プログラムだかわからんしな

94 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 19:06:04 ]
見通しが悪くなるんだよ
関数に逝ったり返ったりして可読性を妨げる
スパゲッティーは万死に値する

95 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 19:34:24 ]
とりあえず94には手本になるソースを上げてもわわなければ



96 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:14:08 ]
>関数に分割すると全体の構造がわかりにくくなるから
>何のための構造化プログラムだかわからんしな

97 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:37:15 ]
関数を使うとダメなんだよ
繰り返し使うなら繰り返し構文の中で条件を指定して使うことだ
全体の中での位置を明確にして、流れを中断しないことが
質のよいプログラムを書く原則な

98 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:52:08 ]
>>4-5
そんな便利な方法があったとは知らなかった
>>11
#includeはファイルをそのまま展開するだけだから
#includeはあっても別にいいよ

99 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:56:56 ]
>>78
副作用っていうか、作用させるのがプログラムの仕事で、
戻り値が副作用だろ

100 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 21:16:08 ]
>>61
printf()等を使うのがCだと思ったら、それは違う
それは標準関数の使い方を知っているにすぎない
C本来の使い方とは一切関係ないから

101 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:13:30 ]
>>1
俺はVBAのメソッドの作り方は知らないが関数・プロシージャの作り方ぐらいは知ってる
「メソッドとか関数はできないがVBでプログラム作ってる」
は有りなんじゃない?
関数なんて糞だから使わないけどな

×→「関数はできないがC言語理解してる」
○→「C言語を理解たら関数なんて使いません」

102 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:20:47 ]
もういい……もういいんだ。お前は良くやった。
他の誰が認めなくても俺が良くやったと認める。
だから、だからこれ以上無駄な涙を流させてくれるな……!
俺と一緒にコボルへ帰ろう。あそこは良いところだ。
gotoだってお前を待ってる。
そんな見当違いの主張をせずに済むんだ。さぁ、帰ろう。

103 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:45:43 ]
どうしてもコボル使いにしたいようだな

104 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:04:11 ]
>>99
式の結果を計算することが作用、それ以外が副作用。
慣習的にそう言い表すことが多いというだけのこと。

105 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 06:28:15 ]
バカチンだな。
動作させることが主目的で、値は無い場合もあるんだから、
値が副作用だ。



106 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 07:49:17 ]
>>84
純粋なC言語には関数は含まれず、
他の人が作った外部プログラムをリンクさせたいときにだけ
関数(すでに誰かがなんらかの言語で作った外部プログラム=別工場のライン)
を使いますが、関数の宣言と起動はリンクのための作法なので
C言語の言語仕様からは多少離れた話になってきます

サブルーチンにするというのは、一種の圧縮法にすぎず、
人間の頭で圧縮工程までやろうとするからコードが醜くなるわけです

1つの実行ファイルを生成しようとするときは、相当する関数main()1本で書くのが正解

107 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 08:43:31 ]
>>96
関数では構造化されているとはいい難い
ブロックを使って書くべきだろう

108 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:23:44 ]
>>1
hello worldぐらいは誰でもできるね
関数の使い方はただそこに関数を書くだけでいいんだ
>>1は関数の定義ができないんだと思う
それはむしろ幸いなことだね
>>1のレベルだと、普段使わないようなライブラリ関数の
呼び出しも苦労しそうだが
まあ、百歩譲って関数の呼び出しは容認してもいい
しかし、相当の理由がない限り関数を定義してはいけない

109 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:38:19 ]
関数を使わないことのデメリットって何かあるかな
スコープの問題が思い浮かぶが、ブロックにすればいい
字下げして常に{}の対応を明確にすることで
関数より遥かに処理の流れがわかりやすくなる

110 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 08:33:33 ]
C言語に限らず、どの言語でも関数はよくない
できる限りプリプロセッサへのマクロ定義とか
エディタのタグジャンプ機能などに頼りつつ
得ようとする実行コードに近い形でソースを出力させた後に
コンパイラを通すべき

オブジェクトを細かく分ければ再コンパイル時間の節約にはなるだろうが
たったそれだけのために保守性を犠牲にするのは馬鹿げている
関数は百害あって一利なしといえる

111 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:45:25 ]
C言語の要はマクロ展開にあると思う
関数などがあるおかげで、関数に合わせてデータ型を気にしたりする必要が
増えて、不必要に言語学習を難しいものにしているし
型ごとに用意する関数には汎用性がなく煩雑になってしまう場合がある

マクロでできることを関数などにして、
いかにも関数がC言語を特徴づける書式だというのは
頭のおかしい人がいってることだ

112 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 12:06:06 ]
関数ってリソースが限られていたころの苦肉の策だから
モバイルのセルフ開発でもない限り、近いうちに廃止されることだろう

113 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:53:15 ]
コンパイラって、ソースコードをマクロ作業的にアセンブラに渡すコードに置き換える物だから
結局機械的な置換マクロ動作の繰り返しになる
機械翻訳的にCPUのネイティブコードに変換する
プログラムの基本は関数よりもマクロだというのは
プログラム作りを実行ファイル完成まで通してやったことの
ある人は感覚的にわかるだろう

114 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 10:59:55 ]
>プログラムの基本は関数よりもマクロ

115 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 18:22:40 ]
関数型言語は知らないのでコメントできない

C言語はただ手続きを書き並べただけの手続き型言語
関数というより手続きと戻値という感じだろ
利用価値ないよね



116 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 18:43:55 ]
これはまた面白い気狂いが湧いてますね。

117 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 19:44:42 ]
関数(笑)

118 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:08:18 ]
1つの関数は1つのアプリケーション
関数は外部プログラムに等しい扱いとする
内部関数も関数は関数なので同じ
あまり小さな単位で関数を作らず、
関数は完全に別プログラムとして動作させられる単位に限るべき

複数の人間で1つのソフトを作る場合でも
ソースを持ちよって1つに合成(コピペ)するほうが、
関数を行ったり来たりしながらの手直しより断然効率的だろう

119 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:18:36 ]
実例うp

120 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 11:31:37 ]
Windowsのメモ帳でソース開いて編集しているビギナークラスの人は
ファイルが巨大化すると困るだろうから、遠慮せずに関数を使ってくれ

121 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:44:53 ]
Cで関数使うなって言ってるやつは、アセンブリでサブルーチン使わなかったの?

122 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:49:48 ]
アセンブリは速度が命
オーバーヘッドがあるサブルーチンなど極力使うのは愚の骨頂

123 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:57:58 ]
>極力使うのは愚の骨頂
なるほど、関数を毛嫌いしている人は日本語も怪しいと。

124 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:42:15 ]
再帰的に呼び出すのでもない限りサブルーチンにする必要ないだろ
マクロがあるのに

125 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 05:28:52 ]
何故関数を毛嫌いするのやら。
マクロにするくらいなら、関数でいいじゃん。どうせ、コンパイラがインライン展開してくれるんだから。



126 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 22:33:37 ]
そんな部分は当然のごとくマクロだろ
なんでわざわざ関数にするの

127 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 02:43:59 ]
関数のほうが楽だから

128 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 23:44:42 ]
いまさらだが>>1表面調和関数のような関数の事を言っていたんじゃまいか?

129 名前:デフォルトの名無しさん [2009/01/03(土) 11:58:54 ]
パソコン(引き値:キーボード、戻り値:ディスプレイ)は関数である。

130 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 12:31:33 ]
つ標準入出力

131 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:46:07 ]
1はそういうこといってねーよ
関数がわからなくてもC言語使えるか? だろ
理解可能だ

たいてい、センスのある初心者は
ifとforと配列まで覚えたらゲーム作ろうとする
main関数に数百行かく
センスないやつは、そもそも、関数まで覚えてもその規模のソースさえなかなかかけない

132 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:13:06 ]
mainに数百行だけでまともなゲーム書けるか?
ウィンドウ処理だけでも百行近く必要なのに

133 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:28:10 ]
標準ライブラリを必ず使わなければいけないなんてことはないが、
標準ライブラリを使う機会は少なくない。どんなものがあるかを知るのも重要だが、
どういう仕組みで、どう使うか、最低限のことは理解しておくべき。
第一、main関数を使っている時点で、既に理解していないと困るんだが。

134 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:53:50 ]
>>132
オセロとかテトリスとか300ぐらいですんだ希ガス

135 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 01:58:41 ]
>>133
全然困らない。mainしか使わないのだからmainの書き方だけ覚えればいい。



136 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 11:03:26 ]
>mainしか使わない
こういう奴の存在が困る。

137 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 05:18:54 ]
そんなやつは身近にいないから困らないw

138 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 20:40:19 ]
は?

139 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 07:10:18 ]
「関数ができない」とは、実行できないということか?

実行環境なしに紙だけで勉強するのは非常につらいが、
まあ不可能ではあるまい。

140 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 15:11:23 ]
スレ勃てから5年にして初めての珍解釈登場

141 名前:デフォルトの名無しさん [2009/09/11(金) 00:25:05 ]
へ?

142 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 02:33:55 ]
>>35
プロトタイプ宣言のない関数は暗黙にintを返すと見なされるので
intからvoid*へキャストできる環境ならfopenだって呼べるぞ。
↓のコードにgcc4.3.2は警告すら出さない。
(もちろんこんなスタイルをオススメする訳ではない)

main(){
void* FP = (void*)fopen("hoge", "w");
if(FP){
fputs("hoge", FP);
fclose(FP);
}
return 0;
}

143 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 16:15:35 ]
アセンブラでサブルーチン使わなかったらメモリアクセスのオーバーヘッドでかすぎ
になるだろうが
実際に使えもしないバカがいい加減なことを語るな

144 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 16:56:04 ]
いきなり何言い出してんのかと思った。
>>121-122 へのレスか。
つか、去年の話にレスするならアンカーくらい付けろ阿呆。

145 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/19(土) 17:55:13 ]
自作関数縛りのプログラミングとか楽しそう
define使っちゃうと面白くないからそれもなしで




146 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 06:46:45 ]
俺なら入力も出力も無いプログラムが出来そうだ

147 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 16:41:51 ]
非チューリングマシンか。

148 名前:デフォルトの名無しさん [2009/09/30(水) 21:07:11 ]
実は…

149 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 08:51:36 ]
入学式のときから俺…

150 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 13:50:38 ]
お前のことが…

151 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 21:17:18 ]
ヤらせろ!

152 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 15:15:16 ]
>>143
アセンブラではそんなに大きなプログラムは作らないから
問題ない。構造が明確であることが大切。
サブルーチンは使うな。

153 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 15:17:13 ]
>>152
>サブルーチンは使うな。
となると
>構造が明確であることが大切。
構造も糞もないわけだが。
頭おかしいの?

154 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 16:42:10 ]
はぁ?
あっちこっち飛ぶなって言ってるんだよ
1つの流れのなかにブロックでコピペしろって言ってるの

155 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 06:56:26 ]
はぁ?



156 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 07:41:44 ]
えっ?

157 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 10:18:15 ]
>>154
もう書けば書くほどボロがでる状態。

158 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 16:28:59 ]
サブルーチンは使うな
アンカーも使うな






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<31KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef