トップページ⇒tech
1001コメント279KB

C言語なら俺に聞け(入門編)Part 87

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/07/19(火) 07:00:19.71
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 86
http://hibari.2ch.net/test/read.cgi/tech/1309089793/
★過去スレ
http://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++の宿題片付けます 150代目
http://hibari.2ch.net/test/read.cgi/tech/1308749241/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0232デフォルトの名無しさん2011/07/26(火) 00:05:39.14
linuxのカーネルソースを読んでたら
change_huge_pmd() のような、ありがちな名前の関数が、staticも付けずに宣言されてたりする。

static を付けずに関数を宣言したら、
以後、どんなことをしても、
リンクされる全てのソースコードへ名前のスコープが通ってしまうのを防止できないかと思ってたのだが、
違うのだろうか?

こんな単純な名前が、数百万行のソースコードで、一度も被らないのが不思議でならない。
なにか、公開を一部のソースだけに限定する方法でもあるのですか?
0233デフォルトの名無しさん2011/07/26(火) 00:24:42.74
>>231
fu>=1 : fuが1以上
&& : かつ
jimen[fu-1]>=4 : jimen[fu-1]が4以上
0234デフォルトの名無しさん2011/07/26(火) 00:25:16.54
>>232
リンクしなきゃいい
0235デフォルトの名無しさん2011/07/26(火) 00:28:20.55
>>233
ありがとうございます
jimen[fu-1] の部分も実はよく解ってないのですが
これはどういう事なんでしょうか?
配列が10個に設定してあるので配列が1個減るよみたいな感じなんでしょうか
0236デフォルトの名無しさん2011/07/26(火) 00:29:33.01
>>235
hoge[5-2]
0237デフォルトの名無しさん2011/07/26(火) 00:31:22.05
>>235

すいませんhogeを見たことがないのですが
どう解釈したらよろしいでしょうか…本当に知識が無くて申し訳ないです
0238デフォルトの名無しさん2011/07/26(火) 00:33:57.89
一度基礎からやり直さないと
行き当たりばったりでやっていても身につかないよ
0239デフォルトの名無しさん2011/07/26(火) 00:38:05.28
いや、プログラミングに向いてないと思うんだ。
時間のムダだから他のことやったほうがいいよ。
0240デフォルトの名無しさん2011/07/26(火) 00:41:00.24
プログラミングに向き不向きもねーよカス
0241デフォルトの名無しさん2011/07/26(火) 00:41:06.11
正直私も自分で向いてないなと思うしやりたくないんですが
学生なもので…再試に向けて学習していたところでした…
0242デフォルトの名無しさん2011/07/26(火) 00:41:13.13
釣りだろ
0243デフォルトの名無しさん2011/07/26(火) 00:43:26.41
1,000行くらいコードを書けば見えてくる物はあるし、
3,000行くらい書けば分かってくる事もある
10,000行くらい書けば、多分独りで何とか出来る様になる
0244デフォルトの名無しさん2011/07/26(火) 00:44:19.99
>>235
配列の何番目の要素を使うかを[]内で指定している
例えばfuに3が入っていたらfu-1は2になり、
インデックスは0から始まるので、配列の3番目の要素って意味になる。
0245デフォルトの名無しさん2011/07/26(火) 00:55:57.90
>>244
なるほど、ぼんやりとですが理解できました。
例文どおり行けば3番目の要素になるということはわかりましたが
その後の>=4というのは
3番目の要素と4が等しい?ということですか?
0246デフォルトの名無しさん2011/07/26(火) 01:01:06.23
>= は ≧ と同じ意味。
<= は ≦ と同じ意味。
0247デフォルトの名無しさん2011/07/26(火) 01:08:16.37
以上以下ということでしょうか
0248デフォルトの名無しさん2011/07/26(火) 02:35:41.41
算数からやり直したほうが...
0249デフォルトの名無しさん2011/07/26(火) 04:14:55.36
単位を諦めろ。
0250デフォルトの名無しさん2011/07/26(火) 05:19:56.64
ここまで釣り。
0251デフォルトの名無しさん2011/07/26(火) 09:56:51.55
ソケットで、TCPポートからUDPポートをぶち開ける方法を教えてください
0252デフォルトの名無しさん2011/07/26(火) 10:28:10.51
どこでもお好きなポートをどうぞ。ただしやさしくお願いします。
0253デフォルトの名無しさん2011/07/26(火) 10:59:43.41
情報系の高校生だけど
C言語できたらモテますか
友人のバンドマン超えられますか?
0254デフォルトの名無しさん2011/07/26(火) 11:02:11.83
モテません。超えられません。またどうぞ。
0255デフォルトの名無しさん2011/07/26(火) 11:21:41.75
全てを否定しておきながら
また来いだと・・・
ぬかしおる・・・
0256デフォルトの名無しさん2011/07/26(火) 11:22:14.49
>>253
卒業までにOSか言語か高機能テキストエディタを作って、
フリーで公開し、みんなが使ってくれたら、高校生のうちにモテるよ。絶対だよ。
0257デフォルトの名無しさん2011/07/26(火) 11:37:44.65
携帯アプリのほうが盛り上がるだろ
0258デフォルトの名無しさん2011/07/26(火) 11:43:14.55
学校みんながあつまれるサイトとかのがいいんじゃね?
0259デフォルトの名無しさん2011/07/26(火) 11:58:29.89
日本版facebook?
0260デフォルトの名無しさん2011/07/26(火) 11:59:57.59
>>255
まさか、「またどうぞ」って「またどうぞお越しください」って意味だと思ってたりしないよな。
0261デフォルトの名無しさん2011/07/26(火) 12:07:46.80
みんな思ってるよ
0262デフォルトの名無しさん2011/07/26(火) 13:43:11.20
ぶぶ漬け食べはります?
0263デフォルトの名無しさん2011/07/26(火) 13:44:09.70
大盛りでもらおうか
0264デフォルトの名無しさん2011/07/26(火) 14:33:44.31
あぁ、ついでに氷もたのむ
0265 ◆QZaw55cn4c 2011/07/26(火) 19:44:50.67
>>256
エディター, 言語, OS
どれも誰もが一度は夢見る分野だ‥‥‥。
0266デフォルトの名無しさん2011/07/26(火) 20:01:21.73
自分は、エディタ、コンパイラ、GUI ライブラリだったな
OS はドライバを用意するのが面倒くさそうなんで、心惹かれなかった
0267デフォルトの名無しさん2011/07/26(火) 21:53:54.40
すでにあるモノつくたって意味ない。ないモノつくれ、ないモノ。
0268デフォルトの名無しさん2011/07/26(火) 22:03:35.18
プログラマにとっては意味があるんだよ
0269デフォルトの名無しさん2011/07/26(火) 22:04:10.55
俺はprintfを極める。
0270デフォルトの名無しさん2011/07/26(火) 22:08:06.93
OSをゼロから作ったら面白いと思うけどな。
一切の予備知識無しに。独自進化の面白さがモロに出る。
0271デフォルトの名無しさん2011/07/26(火) 22:13:48.14
一般にosを作るっていうのは
カーネルから作るの?
0272デフォルトの名無しさん2011/07/26(火) 22:22:52.77
カーネルからというか、カーネルを作るのでしょう

ブートローダから作って、スケジューラ、仮想メモリ、デバイスドライバ、
ファイルシステム、ネットワークプロトコルスタック、その他細々と沢山

俺は無理
0273デフォルトの名無しさん2011/07/26(火) 22:40:17.96
俺はブートローダ、スケジューラ、仮想メモリ(の枠組み)まで作って次デバドラ作ろうと思ったけどハードウェアの資料が見つからなくて諦めた
0274デフォルトの名無しさん2011/07/26(火) 22:56:28.92
>>270
それなくして、他に何が残るのか
というくらい自らの存在意義をありありと感じられるところだからな
MVS や Multics や CP/M の流れをくまない独自の世界が
偉大だろうがショボかろうが歴史に骨を残す何かをしてる
ときには多値化やアナログ、有機物性やハイエナジーに
超高速不揮発性次世代ストレージと、おもしろいネタにはことかかない
生きた証ってのは「この手で」残すものだろ
0275デフォルトの名無しさん2011/07/26(火) 23:03:29.32
ほんとにOSを学びたいなら、CPUとメモリ、デコーダーから作るべきだと思うんだ・・・
0276デフォルトの名無しさん2011/07/26(火) 23:04:10.82
仮想マシンを作るのは愉しそうだな
0277デフォルトの名無しさん2011/07/26(火) 23:07:12.89
>>274
その生きた証を残せる逸材が、
地球上で一握りしか出てこない(ヽ´ω`)
0278デフォルトの名無しさん2011/07/26(火) 23:19:33.32
ちょっくらシリコンバレー行ってくるわ
0279デフォルトの名無しさん2011/07/26(火) 23:47:31.31
ttp://www.amazon.co.jp/CPU%E3%81%AE%E5%89%B5%E3%82%8A%E3%81%8B%E3%81%9F-%E6%B8%A1%E6%B3%A2-%E9%83%81/dp/4839909865
0280デフォルトの名無しさん2011/07/26(火) 23:52:02.07
ぁ、バカフリでシリコンバレーの見分け方やるみたい・・・
0281デフォルトの名無しさん2011/07/27(水) 00:31:51.32
スレチならごめん。
プログラミング経験のない人にC言語を教えているんだが,
最初に難しいと感じるのは,「演算子」の使い方なんだろうか?

よくある問題(プログラミングの問題)を解くのに、
「演算子を組み合わせてうまく使うこと」が結びついていないことがネックだと思うんだけど,
どうだろうか?当たり前と言われればそれまでだけど…
わからない感覚を教えていただけると嬉しい.
0282デフォルトの名無しさん2011/07/27(水) 00:36:21.51
代入あたりは、馴染みがないのかもしれん。
C以外でも、何かプログラミング言語をやってりゃ馴染んでるだろうけど。
0283デフォルトの名無しさん2011/07/27(水) 00:39:20.19
なるほど.
でも代入は何回かやってるうちに慣れてくる印象.
それよりも,if文の中の判定とかの書き方を思いつかない場合のほうが多そう
だなぁと思っているんだけど,どうだろうか?

(そもそも,if文で分岐するっていう発想ができない人もいるけどマレ)
0284デフォルトの名無しさん2011/07/27(水) 00:43:31.67
>>283
ifの判定というか、条件の記述はいまだに自信を失うときがあるw
ある角度をある範囲にクランプさせるふうに条件をかいたつもりが、
なんどやってもうまくいかなかったことがあるw
以上、以下を組み合わせてつかうだけのことでも、場合によっては混乱を来たす。
0285デフォルトの名無しさん2011/07/27(水) 00:46:25.17
http://www.amazon.co.jp/12%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%A7%E4%BD%9C%E3%82%8B%E7%B5%84%E8%BE%BC%E3%81%BFOS%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80-%E5%9D%82%E4%BA%95-%E5%BC%98%E4%BA%AE/dp/4877832394/ref=pd_sim_b_3

12ステップで作る組込みOS自作入門


これは解説が丁寧でよくわかる。
0286デフォルトの名無しさん2011/07/27(水) 00:48:36.36
malloc.hをインクルードしてるのに、
_get_amblksiz関数が定義されてないってエラーがでます。
この関数はもう存在しないのでしょうか
0287デフォルトの名無しさん2011/07/27(水) 00:51:12.08
>>284
初心者相手なんで,そんな条件が複雑になることはないw
実際に開発となればテストケース書けば良いことなので…
今回の場合,高々複雑といっても,
「入力された数が4の粕{数と5の倍数又は3の場合に数を表示せよ」そういった類の問題です.
例えば,
〜の倍数 と言われてどう書けばいいかわからないとか
条件が複数出てくる場合には || や && を使わなかったり

こういうのが最初につまずくポイントかなぁと思うんですけど,どうだろ?
(||とか&&とかを組み立てたり,〜の倍数という条件文を考える所が)
0288デフォルトの名無しさん2011/07/27(水) 00:55:54.65
> 〜の倍数という条件文を考える所が

あーはいはい。なるほど。そういうのある気がするし、
俺自体も何十年も前にそれを体験したような気もする。
0289デフォルトの名無しさん2011/07/27(水) 00:58:40.10
>>288
やっぱそうですよねw
そこの点で,
「何年も、何十年も前に体験した」ので,初心者が「何で」わからないのか
わからないみたいな状態です.そこで,知恵を貸していただきたいなと思ってます.
0290デフォルトの名無しさん2011/07/27(水) 01:16:57.60
何で分からないかに答えることは難しい。

/と%の意味を先に教えておいたなら、
各自の応用力(想像力)に任せるか、
先にもうイディオムとして教えちゃうかだろうし、
何で分からないかと問われれば、
応用できない、応用しにくい、基本が疎か、
せんせーがイディオムを教えてくれてない!
とかかな。

あとはやっぱり実物を触ってるかどうかも大きい。
実際に自由に工夫をしたり確認したりすることなしに、
理屈だけでものごとを考え、延長させていくことはたぶん不慣れなはず。
0291デフォルトの名無しさん2011/07/27(水) 01:25:49.77
お答え,ありがとうございます.

応用できる土台を作る為に,演算子に注目して問題を作ればいいのではないかと
思っているのですが,どう思いますか?

int main(void)とかprintfとかをわざわざ書かなくても演算子にだけ注目
して問題をとかせるのがいいかなぁと思っていて…

例えば,
int i = 10;
i%2 はいくつになりますか?
i%5 はいくつになりますか?
のような問題が効果的な気がするのですが,どうでしょうか?
0292デフォルトの名無しさん2011/07/27(水) 03:17:05.97
算数習ってない幼稚園児にでも教えてんのか?
0293デフォルトの名無しさん2011/07/27(水) 03:17:15.18
ぶっちゃけその程度のことも思いつかないような人はセンスが無いから適当にあしらえばいい
0294デフォルトの名無しさん2011/07/27(水) 04:44:59.47
むしろ、こんな教え方の人に習ったら不幸だな。俺ならK&Rを嫁!という。
0295デフォルトの名無しさん2011/07/27(水) 04:50:00.00
そんな時代遅れな本を読まされる方がよっぽど不幸だろ
それもmodの発想すら頭にないような奴に
0296デフォルトの名無しさん2011/07/27(水) 05:13:34.15
ひたすらコード書かせて、コンパイルして実行させる
0297デフォルトの名無しさん2011/07/27(水) 05:18:25.68
時代遅れな本ってw だったら、そもそもCを教えるなよww
0298デフォルトの名無しさん2011/07/27(水) 05:23:50.83
いるよなーこうやってK&Rに固執する奴
0299デフォルトの名無しさん2011/07/27(水) 05:38:54.70
じゃぁ、お前の言う、はじめてCを習う人にうってつけの
時代の最先端をいく本とやらをあげてもらおうか?
0300デフォルトの名無しさん2011/07/27(水) 05:48:35.02
入門書なんてそんなに書いてあることに違いは無いんだから、なんならネットから適当に拾ってきてもいいんじゃね
ただ、K&RはC言語に慣れた人ならともかく、初心者が読むもんではないだろ
いわんや初心者未満の者をや
0301デフォルトの名無しさん2011/07/27(水) 05:49:13.44
K&RはC入門者にはともかくとして、
プログラミング言語の入門者には向かない
見事なまでに簡潔すぎる

かつては他に選択肢がないという理由で
使われていたこともあったらしいけどさ
0302デフォルトの名無しさん2011/07/27(水) 06:15:49.11
初心者向け学習用開発環境「Microsoft Small Basic」 これがなにげに良くできている。
http://www.forest.impress.co.jp/docs/news/20110714_460395.html
0303デフォルトの名無しさん2011/07/27(水) 08:51:47.96
おすすめの入門書は猫でもわかるC言語
C言語を学ぶ上では避けて通れない名著だね
0304デフォルトの名無しさん2011/07/27(水) 09:36:57.77
>>291です.
皆様(>>292-303)レスありがとうございます.

できるやつは手が自然に動く→勝手にできるようになるのでほっといてもいいと思います.
でも,やっぱりできない人もいるのでそういう人は「センスがないから諦めろ!」でいいんでしょうか?
個人的には,効率的な学習法があればもう少しは「わからない」→「わかる」に
できると思っているんですが…

本はたしかに大事ですが,結局読む苦労があるので,ツールかなにかで支援できたら
嬉しいかなぁと思っています.(手を動かしながら自然に理解するという事)

>>302
マイクロソフトのSmallBasicは初耳ですね.
ありがとうございます.初心者にとってどういった点がよく出来ているのでしょうか?

0305デフォルトの名無しさん2011/07/27(水) 09:42:19.63
>>296
がいいこと言った!
トライアンドエラーの中で、コンパイラ、実行結果と対話して理解を深めていくんですよね。
0306デフォルトの名無しさん2011/07/27(水) 10:32:00.75
>「センスがないから諦めろ!」でいいんでしょうか?
いいんです。必要なら、出来る人にお金を払ってやってもらえばいいんです。
世の中、そーゆーもんです。
0307デフォルトの名無しさん2011/07/27(水) 10:40:42.30
PGは安いしな
小金でこき使うのがベスト
0308 忍法帖【Lv=33,xxxPT】 2011/07/27(水) 10:56:53.59
スレ違いになるけど、表計算ソフトでも触らせたら?
制御構造はない代わりに、セルを参照する計算式を幾らでも記述できるから
話題に出ていた除算や剰余、条件判断なんかを全部こなせるぞ。
おまけに、そこにある数値を使ってその場で計算できるからテストケースも作り易い。
0309デフォルトの名無しさん2011/07/27(水) 11:27:44.83
BASICで
「”●”をテンキーで操作するプログラムを作れ」
の方が入門基礎知識身につきそう。
0310デフォルトの名無しさん2011/07/27(水) 11:28:45.30
環境依存になりそう
0311デフォルトの名無しさん2011/07/27(水) 11:59:34.06
>>305
ごもっともです.

>>306
やめちまえとは言えない立場なのでごめんなさい.

>>308
なるほど!たしかに良いアイディアです!
基本的な演算子構造は学べますね.
ただ,Excelやった後にプログラミングに入ると
順次実行するという感覚がイマイチ身につかない様です…

>>309
なぜBASICなんでしょうか?
0312デフォルトの名無しさん2011/07/27(水) 12:21:13.33
もう、VBAでいいじゃん。
分かりやすいし、開発環境ほぼ無料みたいなもんだし
慣れりゃゲームでもネットワーク関係でもなんでも作れるし
言語的にもしっかりできてるしな
0313 忍法帖【Lv=33,xxxPT】 2011/07/27(水) 12:54:39.47
>>311
どっかのセルに=indirect(address(row()-1;column()))+1とでも入れて、
縦方向に並べる。
これの一つのセルの計算を、何列も並べる代わりに回数を指定したのがループ。
この説明で中坊の甥っ子は納得したぞ。
まぁ、マインドストーム知ってたけど。
0314デフォルトの名無しさん2011/07/27(水) 13:09:13.25
ほれ、これでも、やらせとけ。
http://home.jeita.or.jp/is/highschool/algo/index2.html
0315デフォルトの名無しさん2011/07/27(水) 14:23:46.56
>311
>>>309
>なぜBASICなんでしょうか?
「BASICを学べ」、と言う訳ではなく、
「BASICを使ってプログラムの基礎」を学べということで。

HelloWorld例

BASIC
10 PRINT "Hello World."

C言語
#include<stdio.h>
int main(void)
{
printf("Hello World.\n");
return 0;
}

大学でC始めたばかりの頃、先頭の#includや int main(void)の意味がわからず、
のどに何かつっかえたままやらされて、気分が悪かった。
訳の判らないまま勉強しても身に付かない。

Cと比べてBASICの方が記述量が少ないから理解し安いかなと思って書いた。

あと学ぶなら面白いプログラム、自分なら画面に動きのあるプログラムの方が書いてて楽しかった。
Cだと画面描画はライブラリそろえないとろくなことできないけど、
BASICはそういう命令が最初からそろってるので向いてると思った。

まぁ、いまさらBASIC勉強させられても…とは思うけど。
0316デフォルトの名無しさん2011/07/27(水) 15:11:01.26
それはお前がアホだから
0317デフォルトの名無しさん2011/07/27(水) 15:27:43.35
アホにプログラムを教える話じゃないのか?
0318デフォルトの名無しさん2011/07/27(水) 15:32:05.69
CのスレでBASIC先にやれとか、頭おかしいだろw
先にやるならアセンブリに決まってる
0319デフォルトの名無しさん2011/07/27(水) 16:07:00.88
「俺がやった学習順が一番正しい!!キリッ!!」
0320デフォルトの名無しさん2011/07/27(水) 16:28:40.98
キリッ!!(キリッ
0321デフォルトの名無しさん2011/07/27(水) 16:41:40.18
大学じゃC言語の前にPASCALやったけど、役に立ったとは思えなかった。

はじめてのC(どこの出版かは忘れた)、データー構造とアルゴリズム、C言語の非常識、Cからアセンブラの利用方法書いてあった本、
これらで基本的なことは学んだ。

0322デフォルトの名無しさん2011/07/27(水) 17:06:32.66
アセンブラなんか勉強して意味あるのかねぇ
パイプラインやらサイクルやらレジスタ演算やら覚えた所で今時意味がないじゃん

逆に意味不明なプライドと思想が付いて、スパゲティプログラマになりそうだ
0323デフォルトの名無しさん2011/07/27(水) 17:07:58.50
>>322
学ぶ意味はあるだろうけどアセンブラから学ぶ必要性があるかは分からん
0324デフォルトの名無しさん2011/07/27(水) 17:11:12.60
スクリプト言語からでもいいじゃん。
0325デフォルトの名無しさん2011/07/27(水) 17:27:41.57
英語がおすすめ
0326デフォルトの名無しさん2011/07/27(水) 18:08:41.94
BASIC先にやっておくメリット。

・ポケコンやDSで動かせるので初期投資が小さい
・言語仕様が素朴で小さく理解しやすい
・行番号とGOTOという非構造化の不便さを学べる
0327デフォルトの名無しさん2011/07/27(水) 18:11:52.65
このスレでやんな氏ね
0328デフォルトの名無しさん2011/07/27(水) 18:13:04.74
DSで動くんか、と探したらスマイルブームか、、、
ちょっと買ってみようかなあ
0329デフォルトの名無しさん2011/07/27(水) 18:47:41.68
>>326
はい、ダウト
行番号や GOTO 君と仲良くなると
お別れがつらくなり
本当は GOTO 君きらいじゃないのに
世論に流されて自らに嘘をつくという
プログラマである前に人間として恥ずべきことをするようになる
0330デフォルトの名無しさん2011/07/27(水) 18:54:17.99
アルゴリズム本(データ操作な話から 数値解析や AI等)の説明で
使われる言語が C (もしくはそれに近いメタ言語)が多いんじゃないかな?と思う
0331デフォルトの名無しさん2011/07/27(水) 18:56:52.00
別に推奨してる訳じゃないのに書いてない部分に突っ込みいれてダウトってwwww
■ このスレッドは過去ログ倉庫に格納されています