ページ 11

これからC言語を学ぶものです

Posted: 2015年1月31日(土) 00:27
by aaaadddddd
今僕はゲームプログラマーになるためにC言語を学ぼうとしています。しかし、どれから学ぶのがいいのか、どのように勉強をしたらいいか少しもわかりません。いろんなところを巡ってこのようなことを見ても書いてることがちがいすぎてわかりません。。。フローチャートというものとかもかかれていましたがどうしたらいいのか。。。皆さんが上達した手順を教えていただけるとうれしいです。

Re: これからC言語を学ぶものです

Posted: 2015年1月31日(土) 09:40
by daive
始めまして、
この投稿に似た物として、
「C言語で何を作りましたか? 作れるようになるまで、どのくらいの期間でしたか?」
 http://dixq.net/forum/viewtopic.php?f=3&t=16296
が、ありますが、読んでみても意味不明、まったく判りません、状態ですか?

※1.真面目に質問をしている。
 2.適切な回答を欲している。
 3.将来的にも、自身の質問、回答を再度閲覧したい。投稿したい。
 のであれば、現在の投稿者名(ハンドルネーム)は、
 適切でしょうか?
 その場限りと受け取られかねない、投稿者名などは、
 投稿者さん自身の為にならないと、思います。

Re: これからC言語を学ぶものです

Posted: 2015年1月31日(土) 10:50
by たいちう
【1. 言語を選ぶ】
プロになるなら当然複数の言語(や諸々)を習得する必要がありますが、
最初に手を出す言語を何にするかは重要です。
人によって向き不向きもあるし、回答者の好みもあるけど、
C言語は悪くない選択肢の1つだと思います。

入門書、解説サイト、サンプルなども非常に豊富ですし、言語自体が非常に強力です。
多すぎる情報で迷子にならないことに気を付けましょう。
その他の注意点としては、C++と混同しないようにすることでしょうか。

【2. 入門書の選択】
私の場合だと、大型書店に行って入門書を立ち読みし、自分に合ったものを探します。
自分が身に着けたいことが書いてあるか、自分に理解できそうか、ということは、
書評ではなかなか判断できないためです。

経済的な理由や地理的な理由で同じことができない場合は、
書評に賭けるか、Web上で入門サイトを探すことになるでしょう。

【3. 学習】
入門書を全て読み、全てのプログラムを実行します。
サンプルのままで実行した後、必ず自分なりにアレンジしてください。

本に書かれた理解できない呪文を唱えるだけでも、
本に書かれた通りの実行結果が得られるはずですが、
こんなのはプログラミングではありません。
アレンジできた部分についてのみ一応理解できた、と、考えるようにしましょう。

ちなみに私は、CD-ROMなどは使わずに、ソースコードを手打ちすることに拘っています。
手打ちすると適度に間違いが入り、コンパイルできなかったり、
正常に動作しなかったりします。
どのような間違いがどのようなエラーにつながるのか知ることも理解につながりますし、
デバッグに慣れることもできます。

【4. 理解できない場合】
入門書といえど、一度も躓かずに理解しながら読み終えることは滅多にありません。
じっくり考えて、試行錯誤を行って、寝て起きてもう一度試してもお手上げだったら、
掲示板で質問しましょう。

目先の問題を片づけることなど大した問題ではありません。
自分で考える力、理解する力、応用する力、自分で調べる力、
これらを向上させることの方がより重要です。
疑問=成長のチャンスと考え、浪費しないようにしましょう。

よほど質問が下手でなければ、C言語入門のレベルで、
この掲示板で回答がつかないことはまずありません。
しかし、掲示板の回答が完全に理解できないことはあるかもしれません。
そのような場合は、一旦飛ばして先に進むという選択も有効でしょう。
学習を続けていけば、いつか読み返したときに理解できるでしょう。

あまりにも飛ばすことが多い場合は、本のレベルと自分のレベルが合っていません。
本の最初に戻るか、別の本を探しましょう。

【5. 次のステップ】
次の本を探します。
【2. 入門書の選択】の時に比べると、理解が深まっているはずです。
同時に、自分がやりたいこともより具体的になっているでしょう。

【6. 参考】
一応サイトを紹介しておきます。

苦しんで覚えるC言語(苦C)

Re: これからC言語を学ぶものです

Posted: 2015年1月31日(土) 10:51
by daive
Cって、言語としては、ミニマムを目指したので、Cとして覚える事は、比較的少ないです。
処理系としての機能の殆どは、ヘッダ、ライブラリで実現されているので、以下MS Visual Studio 想定
1.学習の殆どは、ヘッダ、ライブラリで提供されている、機能の使い方になります。
  ゲーム用ライブラリの使い方、自分用ライブラリの作り方(後々で)など。
2.IDE(統合開発環境)が、普通になる前は、言語毎に、prityPrintなど、prity:ミニツールを作って、でした。
  prityを作りながら、学習、練習。
  ⇒今は必要ないので、Cでウィンド作成、ウィンド上に機能を実装、などからかも。
   Web系の、Spring Boot:Spring Tool Sweetなどは、碌に環境構築しないでも、
   プログラミング⇒テスト:デバッグ⇒リリース迄できるように成っていたり。(凄い時代になった。)
3.IDE下では、環境の作り方、ソリューションの作り方、プロジェクト分割の考え方、仕方、
  エディタの使い方、デバッガの使い方から。
が、最初の学習事項になるはずです。
エディタ、デバッガは、知っているかいないかで、作業効率を左右する部分ですので、重要です。
(カスタマイズなどは、最初の間は手を出さない。)

言語無関係、分野無関係に知っておいた方が、余計な苦労をしなくて済むという事もあります。
1.対象(仕様)を理解し、分析して、プログラムコードへ適用可能なまでに、分解、要素化、一般化、簡易化する事。
  箇条書きで、表せるように、普段から、物事を要素へ分解する練習だったり。
2.算数レベルで済む部分、高校数学レベルで済む部分、難問レベル、知っていれば簡単にできる内容、
  知っていても、簡単な解法はあっても、解決方法が、ないもの(パイ:3.14...などは、繰返し計算で、近似値を得ます。)。
  例えば、円の面積、扇形の面積は、中心点を通りますので、簡単に求められます。
  では? 円の中心点を通らない、面積の求め方は? 丸い筒に流れている水などの、断面積などが該当します。
  異形の面積の求め方は?、
  プログラム化がある程度できても、最適解が難しいもの、
    板取問題(布のパターン取、材木、鉄板など)、金種問題(つり銭だけではなく、振込額から、請求分を割り当てなど)、
    シフト問題(人の配置だけでは無いです)
3.コンピュータ系ならではの、ブール代数、真理値表、状態遷移図の書き方など、楽をする為の(箇条書きもそうです。)方法
  真理値表は、複雑な条件を、簡易化して(0,1、有る,無しにしなければ書けない)、プログラム化する場合に応用できます。
  状態遷移図は、条件、状態により、変化する、変化していく事柄に、応用できます。
  フローチャートは、今では殆ど書かれませんが、順序実行型、ポーリング型のプログラムは、書き表す事ができます。
  現在でも使われている順序実行型の言語:シーケンサーなどで一般的な、ラダー
  ToDoリストなど、プロジェクトの進捗状況を書き表すいろいろ、構造化図、O/Rマップ他など図表化する物、
  も、結局は、人が楽をする為の物です。