1 :
デフォルトの名無しさん:
あと、どの入門書が初心者には
最善でうかね?
関数できない人に理解できる入門書はありません
不可能。不可能。不可能。
別名 ... 手動inline
略して手淫
6 :
デフォルトの名無しさん:04/07/18 03:41
糞すれ立てんなカス。
mainも関数、printfもscanfも関数。
・・・・・・とりあえずsageよう
酔っ払いを追放しよう
#includeを一つも書かないで(自分で定義するのも除く)
呼び出せるのってmainだけだっけ?
12 :
デフォルトの名無しさん:04/07/18 06:18
理解しづらくなるだけでねえか?
関数ができないの意味が分からない
関数は難しくないと思うよ。
関数の呼び出しがあったら、関数にワープして、処理を終えたら戻ってくるだけ。
というか、mainも関数だから、できないと実行すらできないよ。
#include <stdio.h>
void kansuu(void)
{
printf("関数\n");
}
int main(void)
{
kansuu();
return 0;
}
>>11 そのmainは
お前が定義してるんじゃないのか?
17 :
デフォルトの名無しさん:04/07/18 09:47
>>8 main() は関数、 printf() も scanf() も関数。
malloc() は関数だが、
free() は関数ではない。
値を返さないので関数ではない。
ただし、上記五つは全て function である。
18 :
デフォルトの名無しさん:04/07/18 09:51
Cの関数は数学の関数とは違う。
>>17 入門者にそんな言葉遊びを仕掛けても仕方がない。
20 :
デフォルトの名無しさん:04/07/18 09:58
>>18 意味するものは同じだ。
つまり、誤訳だ。
23 :
デフォルトの名無しさん:04/07/18 10:26
>>17 > free() は関数ではない。
> 値を返さないので関数ではない。
メモリを解放するという出力はありますね。
プログラム言語ではprintf()だろうがfree()だろうが関数と呼ぶがな。
25 :
デフォルトの名無しさん:04/07/18 10:35
>>26 素直に謝れ、
>>24よ。
主語が「プログラム言語」の時点でお前の負けだ。
外で遊べよ。
32 :
デフォルトの名無しさん:04/11/22 10:50:04
33 :
デフォルトの名無しさん:05/02/15 03:47:30
つまり、#includeを一つも書かないで(自分で定義するのも除く)呼び出せるのは何もないと?
C99は知らんけどintを返す関数なら問題なく呼び出せるはず
いや、スレの趣旨的に関数呼んだら駄目なんだったか?
>>33 #includeを書かなきゃ呼び出せない関数ってあまり無いと思う。
fopen位しか咄嗟には出てこない。
古い仕様との互換性のためにstdio.hとstdlib.hは省けるんだっけ。
さすがにマクロ(EXIT_SUCCESSとか)使うときはそーもならない
ヘッダをincludeしなくても自分で宣言すればいい(プロトタイプ宣言じゃなくてもいいけど宣言自体を省くのは無理、つか未定義)
でもtypedefされた型を使ってたりマクロを使わないと呼び出せなかったりするような関数は宣言だけあっても呼び出せない
38 :
デフォルトの名無しさん:2005/12/24(土) 01:46:22
38ゲトズサー
 ̄ ̄V ̄ ̄ ̄ ̄ ̄
∧ ∧
⊂(゚Д゚⊂⌒^つ≡3
そういうのをC言語を理解できたとは言わないから、不可能ってことでいいんじゃない?
>>1 それはつまり
#include<stdio.h>
main()
{
int i;
printf("%d"i);
return 0;
}
こういう規模のプログラミングしかできないんだけど、
関数の引数すら上手くやり取りできない自分でございますがC言語を理解したと
他人に言い放ちたいって意味ですか?
あるいは自分でも関数を使っている事に気付かず
最先端のCUIアプリケーションゲームの開発をなさっておられる方ですか?
>>1 ならば、話ははやいです。できます。理解できます。
おそらく関数を必要としないマシン語レベルで理解なさられておられるのでしょう
そんなコンピュータのような思考をする貴方に理解できないはずはありますまいて
アセンブラで考えるとstackとgotoが理解できないんだろ?
101110001011101 手打ち
>>44 古いミニコンでブートローダー手打ちするときは
そんな感じだったが。
>>42 それもC言語理解してるとは言わないだろ。
47 :
笹井奈琴:2006/01/14(土) 23:18:31
共用体やビットフィールド、関数ポインタなんかをしらないひとが
「俺C言語理解してるぜ」って言うのは、まあ許してやるが、
関数を知らないんじゃな...
俺関数全く出来ないけどCやってるよ
>>48 まあお前が関数できなくてもお前が関数を書ければ問題ないかな。
このスレの
>>1は、多分プログラミングでいう関数と、
中学校で習うような一次関数・二次関数を勘違いしてるのではないだろうか。
プログラミングの本を読んでみたら、関数という言葉が載っていたのだが、
自分は学校の関数の授業をまだ理解していたいので、プログラミングが
習得できるかどうか不安に思いこのスレをたてたと推測
>48
てめー!俺はまだ童貞だっつーのに!ヽ(`Д´)ノ
test
55 :
デフォルトの名無しさん:2006/11/08(水) 23:00:56
関数を知った時の感想を述べると、htmlのタグみたいに感じた。
t
>>57 そのままの意味だけど・・・
関数をタグみたいに覚えて扱うと楽しくてしょうがない
59 :
デフォルトの名無しさん:2007/06/30(土) 20:17:04
age
3BGET
>>33 #include使わなくても手作業でヘッダーファイルの中身をソースファイルにコピペすればいい
まあでも、関数がわからない = main()やprintf()もわからないってことでしょ?何もできないじゃん
関数がいやならアセンブラにしとけ
__,,:::========:::,,__
...‐''゙ . ` ´ ´、 ゝ ''‐...
..‐´ ゙ `‐..
/ \
.................;;;;;;;;;;;;;;;;;;;;;;::´ ヽ.:;;;;;;;;;;;;;;;;;;;;;;.................
.......;;;;;;;;;;゙゙゙゙゙゙゙゙゙゙゙゙゙ .' ヽ ゙゙゙゙゙゙゙゙゙゙゙゙゙;;;;;;;;;;......
;;;;;;゙゙゙゙゙ / ゙: ゙゙゙゙゙;;;;;;
゙゙゙゙゙;;;;;;;;............ ;゙ ゙; .............;;;;;;;;゙゙゙゙゙
゙゙゙゙゙゙゙゙゙;;;;;;;;;;;;;;;;;.......;............................. ................................;.......;;;;;;;;;;;;;;;;;゙゙゙゙゙゙゙゙゙
゙゙゙゙i;゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙;l゙゙゙゙゙
ノi|lli; i . .;, 、 .,, ` ; 、 .; ´ ;,il||iγ
/゙||lii|li||,;,.il|i;, ; . ., ,li ' ; .` .; il,.;;.:||i .i| :;il|l||;(゙
`;;i|l|li||lll|||il;i:ii,..,.i||l´i,,.;,.. .il `, ,i|;.,l;;:`ii||iil||il||il||l||i|lii゙ゝ
゙゙´`´゙-;il||||il|||li||i||iiii;ilii;lili;||i;;;,,|i;,:,i|liil||ill|||ilill|||ii||lli゙/`゙
´゙`゙⌒ゞ;iill|||lli|llii:;゙|lii|||||l||ilil||i|llii;|;_゙ι´゚゙´`゙
´゙゙´`゙``´゙`゙´``´゙`゙゙´´
68 :
デフォルトの名無しさん:2008/01/09(水) 18:41:42
Lispは関数が出来なくても理解可能ですか?
Haskellは(以下略
Elangは(以
Erlangだた
なんだよ
糞スレじゃん
73 :
デフォルトの名無しさん:2008/01/21(月) 20:06:00
Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、
本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)
今になって分かりました。
彼らもまた、理解できていなかったのです。
プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。
私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。
そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。
興味がある方はどうか、下のサイトをみてみてください。
http://mori.eco.to/
どうでもいいけど、qsort()の実装にmalloc()の仕様を認めるって変じゃね?
このスレでぬるぽしてもおそらく誰も気づくまい。
/\ /\
/:::::::ヽ____/::::::::ヽ、
丿 ::.__ .::::::::::::: __ ::::ヽ_ ,. 、 / /
/ /。 ヽ_ヽv /: /。ヽ ::::::ヽ ,.〃´ヾ.、 / /
/ / ̄ ̄√___丶  ̄ ̄\ ::::| / |l ', / /
| .:::::::::: / / tーーー|ヽ ..::::: ::|r'´ ||--‐r、 ', ぬ る ぽ ぬ る ぽ ぬ る ぽ !!
| .:::::. ..: | |ヽ .,..ィ'´ l', '.j '. ぬ る ぽ ぬ る ぽ ぬ る ぽ!!
| ::: | |⊂ニヽ| | 'r '´ ',.r '´ !| \
| : | | |:::T::::| ! l! ....:.:.:.:.:.:ヽ、 ,l \
\: ト--^^^^^┤ ゝ、.,_ ---‐‐‐----ゝ、ノ
いまどきぬるぽとかw
77 :
デフォルトの名無しさん:2008/06/25(水) 23:07:07
数学の関数とC言語の関数って同じ意味じゃん
引数は何個でもいい、戻り値は一個だけ。
同じじゃん。
void関数も漸近線のある関数なら漸近線を超えれば戻り値がないでしょ。
どこがちがうの?
副作用の有無。
数学の関数は、同じ引数を与えると値が返るだけだが、
Cの関数はそれ以外の効果を生むことがある。例えば、出力を行うprintfなど。
>>77 戻り値は引数の写像ではないので数学でいう関数とは異なります。
アホ?
おまえらの言いたいことの察しはつくが不正確
同じ所もあるが、むしろ「違いが分からなければ」理解不能
>関数ができなくても
ワロタ
漏れの周りにも一人だけ関数が理解できないというやつがいたが、
そいつは関数の作成ができなかった。
特に、配列やポインタの受け渡しになると絶望的だった。
1って、そういう意味じゃね?
Cの関数以外を理解することは可能だろうが、C言語には関数も含まれるんだから
C言語を理解したと言い張るつもりなら関数も理解しなければならない。
昔アセンブラ入門でサブルーチンを別の工場のラインにたとえてるのがあったが
ああいう本ってまだあるのかねぇ。
昔Cを使ってたが意外に関数なんていらなかった
関数と違って型チェックはないけれど
全部マクロ関数で書いてcppに展開させる
最終的にインラインアセンブラに展開される
ようするに関数ってのはライブラリのバイナリをシンボルで呼んでるわけで
同じ関数は1つしかリンクされない
マクロの場合はは全部ベタに展開されてしまうから無駄が多くなる
int main(){
return 0;
}
こんな定型書式はIDEが自動で書いてくれるから
とくに関数を知らなくても問題ない
関数という、プログラムのリサイクル手法を使うか
それともたとえ繰り返し部分があってもリサイクルしないで
あえて上から下まで平文で打つか
関数を使うも使わないも個人の自由
そりゃ、趣味グラマなら好きにするがいいさ。
関数は邪道だよ
漢なら関数に頼らず
Cの基本リテラルだけで書け
関数に分割すると全体の構造がわかりにくくなるから
何のための構造化プログラムだかわからんしな
コボラーはこれだから
>関数に分割すると全体の構造がわかりにくくなるから
>何のための構造化プログラムだかわからんしな
>関数に分割すると全体の構造がわかりにくくなるから
>何のための構造化プログラムだかわからんしな
見通しが悪くなるんだよ
関数に逝ったり返ったりして可読性を妨げる
スパゲッティーは万死に値する
とりあえず94には手本になるソースを上げてもわわなければ
>関数に分割すると全体の構造がわかりにくくなるから
>何のための構造化プログラムだかわからんしな
関数を使うとダメなんだよ
繰り返し使うなら繰り返し構文の中で条件を指定して使うことだ
全体の中での位置を明確にして、流れを中断しないことが
質のよいプログラムを書く原則な
>>4-5 そんな便利な方法があったとは知らなかった
>>11 #includeはファイルをそのまま展開するだけだから
#includeはあっても別にいいよ
>>78 副作用っていうか、作用させるのがプログラムの仕事で、
戻り値が副作用だろ
>>61 printf()等を使うのがCだと思ったら、それは違う
それは標準関数の使い方を知っているにすぎない
C本来の使い方とは一切関係ないから
>>1 俺はVBAのメソッドの作り方は知らないが関数・プロシージャの作り方ぐらいは知ってる
「メソッドとか関数はできないがVBでプログラム作ってる」
は有りなんじゃない?
関数なんて糞だから使わないけどな
×→「関数はできないがC言語理解してる」
○→「C言語を理解たら関数なんて使いません」
もういい……もういいんだ。お前は良くやった。
他の誰が認めなくても俺が良くやったと認める。
だから、だからこれ以上無駄な涙を流させてくれるな……!
俺と一緒にコボルへ帰ろう。あそこは良いところだ。
gotoだってお前を待ってる。
そんな見当違いの主張をせずに済むんだ。さぁ、帰ろう。
どうしてもコボル使いにしたいようだな
>>99 式の結果を計算することが作用、それ以外が副作用。
慣習的にそう言い表すことが多いというだけのこと。
バカチンだな。
動作させることが主目的で、値は無い場合もあるんだから、
値が副作用だ。
>>84 純粋なC言語には関数は含まれず、
他の人が作った外部プログラムをリンクさせたいときにだけ
関数(すでに誰かがなんらかの言語で作った外部プログラム=別工場のライン)
を使いますが、関数の宣言と起動はリンクのための作法なので
C言語の言語仕様からは多少離れた話になってきます
サブルーチンにするというのは、一種の圧縮法にすぎず、
人間の頭で圧縮工程までやろうとするからコードが醜くなるわけです
1つの実行ファイルを生成しようとするときは、相当する関数main()1本で書くのが正解
>>96 関数では構造化されているとはいい難い
ブロックを使って書くべきだろう
>>1 hello worldぐらいは誰でもできるね
関数の使い方はただそこに関数を書くだけでいいんだ
>>1は関数の定義ができないんだと思う
それはむしろ幸いなことだね
>>1のレベルだと、普段使わないようなライブラリ関数の
呼び出しも苦労しそうだが
まあ、百歩譲って関数の呼び出しは容認してもいい
しかし、相当の理由がない限り関数を定義してはいけない
関数を使わないことのデメリットって何かあるかな
スコープの問題が思い浮かぶが、ブロックにすればいい
字下げして常に{}の対応を明確にすることで
関数より遥かに処理の流れがわかりやすくなる
C言語に限らず、どの言語でも関数はよくない
できる限りプリプロセッサへのマクロ定義とか
エディタのタグジャンプ機能などに頼りつつ
得ようとする実行コードに近い形でソースを出力させた後に
コンパイラを通すべき
オブジェクトを細かく分ければ再コンパイル時間の節約にはなるだろうが
たったそれだけのために保守性を犠牲にするのは馬鹿げている
関数は百害あって一利なしといえる
C言語の要はマクロ展開にあると思う
関数などがあるおかげで、関数に合わせてデータ型を気にしたりする必要が
増えて、不必要に言語学習を難しいものにしているし
型ごとに用意する関数には汎用性がなく煩雑になってしまう場合がある
マクロでできることを関数などにして、
いかにも関数がC言語を特徴づける書式だというのは
頭のおかしい人がいってることだ
関数ってリソースが限られていたころの苦肉の策だから
モバイルのセルフ開発でもない限り、近いうちに廃止されることだろう
コンパイラって、ソースコードをマクロ作業的にアセンブラに渡すコードに置き換える物だから
結局機械的な置換マクロ動作の繰り返しになる
機械翻訳的にCPUのネイティブコードに変換する
プログラムの基本は関数よりもマクロだというのは
プログラム作りを実行ファイル完成まで通してやったことの
ある人は感覚的にわかるだろう
>プログラムの基本は関数よりもマクロ
関数型言語は知らないのでコメントできない
C言語はただ手続きを書き並べただけの手続き型言語
関数というより手続きと戻値という感じだろ
利用価値ないよね
これはまた面白い気狂いが湧いてますね。
関数(笑)
1つの関数は1つのアプリケーション
関数は外部プログラムに等しい扱いとする
内部関数も関数は関数なので同じ
あまり小さな単位で関数を作らず、
関数は完全に別プログラムとして動作させられる単位に限るべき
複数の人間で1つのソフトを作る場合でも
ソースを持ちよって1つに合成(コピペ)するほうが、
関数を行ったり来たりしながらの手直しより断然効率的だろう
実例うp
Windowsのメモ帳でソース開いて編集しているビギナークラスの人は
ファイルが巨大化すると困るだろうから、遠慮せずに関数を使ってくれ
Cで関数使うなって言ってるやつは、アセンブリでサブルーチン使わなかったの?
アセンブリは速度が命
オーバーヘッドがあるサブルーチンなど極力使うのは愚の骨頂
>極力使うのは愚の骨頂
なるほど、関数を毛嫌いしている人は日本語も怪しいと。
再帰的に呼び出すのでもない限りサブルーチンにする必要ないだろ
マクロがあるのに
何故関数を毛嫌いするのやら。
マクロにするくらいなら、関数でいいじゃん。どうせ、コンパイラがインライン展開してくれるんだから。
そんな部分は当然のごとくマクロだろ
なんでわざわざ関数にするの
関数のほうが楽だから
いまさらだが
>>1表面調和関数のような関数の事を言っていたんじゃまいか?
129 :
デフォルトの名無しさん:2009/01/03(土) 11:58:54
パソコン(引き値:キーボード、戻り値:ディスプレイ)は関数である。
つ標準入出力
1はそういうこといってねーよ
関数がわからなくてもC言語使えるか? だろ
理解可能だ
たいてい、センスのある初心者は
ifとforと配列まで覚えたらゲーム作ろうとする
main関数に数百行かく
センスないやつは、そもそも、関数まで覚えてもその規模のソースさえなかなかかけない
mainに数百行だけでまともなゲーム書けるか?
ウィンドウ処理だけでも百行近く必要なのに
標準ライブラリを必ず使わなければいけないなんてことはないが、
標準ライブラリを使う機会は少なくない。どんなものがあるかを知るのも重要だが、
どういう仕組みで、どう使うか、最低限のことは理解しておくべき。
第一、main関数を使っている時点で、既に理解していないと困るんだが。
>>132 オセロとかテトリスとか300ぐらいですんだ希ガス
>>133 全然困らない。mainしか使わないのだからmainの書き方だけ覚えればいい。
>mainしか使わない
こういう奴の存在が困る。
そんなやつは身近にいないから困らないw
は?
「関数ができない」とは、実行できないということか?
実行環境なしに紙だけで勉強するのは非常につらいが、
まあ不可能ではあるまい。
スレ勃てから5年にして初めての珍解釈登場
141 :
デフォルトの名無しさん:2009/09/11(金) 00:25:05
へ?
>>35 プロトタイプ宣言のない関数は暗黙にintを返すと見なされるので
intからvoid*へキャストできる環境ならfopenだって呼べるぞ。
↓のコードにgcc4.3.2は警告すら出さない。
(もちろんこんなスタイルをオススメする訳ではない)
main(){
void* FP = (void*)fopen("hoge", "w");
if(FP){
fputs("hoge", FP);
fclose(FP);
}
return 0;
}
アセンブラでサブルーチン使わなかったらメモリアクセスのオーバーヘッドでかすぎ
になるだろうが
実際に使えもしないバカがいい加減なことを語るな
いきなり何言い出してんのかと思った。
>>121-122 へのレスか。
つか、去年の話にレスするならアンカーくらい付けろ阿呆。
自作関数縛りのプログラミングとか楽しそう
define使っちゃうと面白くないからそれもなしで
俺なら入力も出力も無いプログラムが出来そうだ
非チューリングマシンか。
148 :
デフォルトの名無しさん:2009/09/30(水) 21:07:11
実は…
入学式のときから俺…
お前のことが…
ヤらせろ!
>>143 アセンブラではそんなに大きなプログラムは作らないから
問題ない。構造が明確であることが大切。
サブルーチンは使うな。
>>152 >サブルーチンは使うな。
となると
>構造が明確であることが大切。
構造も糞もないわけだが。
頭おかしいの?
はぁ?
あっちこっち飛ぶなって言ってるんだよ
1つの流れのなかにブロックでコピペしろって言ってるの
はぁ?
えっ?
サブルーチンは使うな
アンカーも使うな
160 :
デフォルトの名無しさん:2010/09/24(金) 06:24:22
お?
機能ごとに処理まとめないと、デバッグが地獄だな
プリプロセッサとラベルとgotoを駆使してプログラム書いてみたらどうか?
2011年になっても未だにJAVA使い続けてる奴ってさ
仕事で仕方なくならわかるけど
家でもJAVAやってるなら本当にバカだよね。哀れ
気持ち悪い
164 :
デフォルトの名無しさん:2011/11/22(火) 13:01:13.76
>>145 似たような事はやった事がある。入力はキーボードのBIOSから直接読み取り、
画面表示はVRAMにぶち込む。
だってC言語の標準関数ってその辺まったく役に立たないんだもん。
結局自前でやるしか。
166 :
デフォルトの名無しさん:2012/03/09(金) 23:38:06.20
あ
一切のライブラリーを使わず(リンクせずに)プログラム書けよゴルァ!
このスレまだあったのか・・・