ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

CとC++コミュの課題助け2

  • mixiチェック
  • このエントリーをはてなブックマークに追加
Cで整数を3つ標準入力から
読み込み、その最大値を表示するプログラム。

コメント(83)

> 見通しを悪くしてまで三項演算子を使っても

この程度のことで見通しが悪く感じるなら、
それは訓練が足りてないということです。
むしろ三項演算子をもっと使って、
「使い慣れる」「読み慣れる」を目指しましょう。
微妙な表現の違いなのですな。、

方便だから、
仕様を満たしていれば、
気にしなくて良いんでね?
プログラムは自由です。
だからオモロイんです。

まぁ共同作業の場合、自由すぎても困るんですが、、、。
小職は混乱しているのですが、

>する「ひつようがない」というか
>「したらだめ」です。
>悪い手癖みたいなものになるので。

この文章の意味は
「初期化をする必要がないではなく」、「初期化をしないのは駄目」という意味ですよね?

>ほんとうに「初期化しないルート」ができてしまう

>コードを書くのよ。
>「とりあえずおおめのしとけばいい」という感覚じたいが
>禁物なわけ。

アバウトな感覚がバグを産むということですね。
機械設計や制御設計と同じく、
ソフトウェア設計も細かく詰めていかないと
危険なプログラムが出来てしまいますね。
為になります。
課題向けということで、そこはいいんじゃないかと思ってましたが。
必ず正確に要求通り入力するという前提があるなら、いいんですけどね。
そういえば、高木浩光氏も同じようなことを書いていました。

http://d.hatena.ne.jp/keyword/%B9%E2%CC%DA%B9%C0%B8%F7
> このように、コードの見た目が煩雑になることがプログラマ達に嫌われ
> ていて、特に解説本の著者がひどく嫌っていることがわかるが、それ
> が脆弱プログラマを増殖させる原因となっている。
間違い、こっちでした。
http://takagi-hiromitsu.jp/diary/20051227.html#p02
>課題とかやってるときから「scanfはだめ」を染みつかせておかないと「なんでだめ」かなんてわかるようにはならないよ。
たしかに、全員が全員、その後そういったことを自分なりに調べたりして向上するとは限らない…というか、そのほうが小数派か。
気に留めておくことにします。

惜しむらくは、トピ主さんが未だにこのトピを見ているとは思えないこと…かな。
課題出した先生にもみてほしいですね。

C は単なるプログラミング言語である以上に、UNIX の文化をたくさん背負っているので、そこからちゃんと教えてあげられればいいんでしょうけど。
> むしろ「ほんのちょっと」という形容が合う程度の量。

うーんたしかに、純粋に言語としてみればそれは理解できるんですが、stdio.h の関数群なんかは UNIX を知らないと意味が分からないと思うんですよね。
>> 「初期化をしないのは駄目」という意味ですよね?
>いいえ「してはだめ」

ああ、初期化について分かってきました。
ありがとうございます。

> UNIX の文化をたくさん背負っているので
未だにカーニハンとリッチーの「プログラミング言語C」
のお世話になっています。
あ、具体例を書きはじめたら長くなりそうなのでやめたんですが、、、

たとえば、main 関数は整数値を返し、この整数がプロセスの終了ステータスとして扱われることとか、ファイルを扱うのにファイル記述子という整数を使うこととか、gets などのように改行文字を特別視する関数があったりとか、こういうのって、UNIX に少しでも親しんでいないと、ちょっと必然性が分からないように思います。

どれも UNIX 固有の話ではないでしょうが、UNIX に親しんでいる人なら当たり前のことですよね。

逆に Windows だと、C の標準ライブラリをそっくり入れ替えるようなものを Microsoft が提供していて、ちょっとやりすぎな感じもするんですが、でもここまでやれば、あまり UNIX のことを考えなくてもよくなるように思います。
あ、はい。なので、UNIX の仕様というよりは「文化」かなぁと……。普通のこと、あたりまえのこと、ほど、人に教えるのは難しいと感じているので。
> ファイルを扱うのにファイル記述子という整数を使うこととか

open()とかwrite()とかって標準関数じゃないような。
たしかに、技量の問題ではあると思います……。

> open()とかwrite()とかって標準関数じゃないような。
はい。これはシステムコールですよね。ここまでくると UNIX の話になっちゃう。
あれ、でも fileno とか fdopen みたいなファイルディスクリプタを明示的に扱う関数も標準関数には含まれてますよね?
あ、すでにここまでくると標準関数じゃないのかな。
> あれ、でも fileno とか fdopen みたいなファイルディスクリプタを明示的に扱う関数も標準関数には含まれてますよね?

C89だと、そのふたつも標準関数に含まれてなようですが。
×C89だと、そのふたつも標準関数に含まれてなようですが。
○C89だと、そのふたつも標準関数に含まれてないようですが。
っていうか箸を使うかスプーンを使うかの程度なんだから、人様に迷惑かけなきゃどうでもいいんじゃね?( ´ω`)
> かわうちさん、
そうなんですかー。いろいろわかってなくてすみません……。
じゃあファイルポインタだけでアクセスするのが、最も標準的ということでしょうか。(なんとなくすっきりした。)

ログインすると、残り62件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

CとC++ 更新情報

CとC++のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング