• ベストアンサー

プログラミング(数学的) 初心者です

今年、大学の情報科学科に入学した一年生です。 大学の授業で初めてプログラミング(C言語)を学んでいるところです。 その授業というのが、いくつもの課題が提示され実際にパソコンでプログラミングするというものなのです。 基本中の基本はなんとか理解でき書けるんですが、数学のような応用問題(素数がどうのや行列など)のC言語ではどういう思考回路を持てばよいのか分りません… 数学みたいに基本的な思考方法を覚えた方が良いのでしょうか? 見れば分るのですが自分ではなかなか思いつかないようなことばかりなので 例えばfor文自体の意味は分るのですが、一般的にどういう表現のときに用いるのかが分らないのです。 何か良い本などがあれば教えてください。 回答よろしくお願いします<m(__)m>

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.6

★コンパイラについて >自宅のパソコンで実際にC言語を扱い、 >コンパイルができて実行結果を表示できるソフトのようなものはないでしょうか?  ↑  これはコンパイラが無いので用意したいとうことですよね。  それなら次のリンクを参考にして下さい。  http://oshiete1.goo.ne.jp/qa3025770.html→『最低限必要なものは何でしょうか?』  ここに無料コンパイラ、サイト、本などを紹介しています。 >品質が良ければ有料でも構いません  ↑  なら学割で買える『アカデミック版』のコンパイラをお店で購入することもありです。  上記の無料コンパイラには Windows GUI の リソースエディタが付属していません。  でも、最初は C 言語のお勉強用で用意するので無料コンパイラでも十分です。  お金は『良い本』、『分かりやすい参考書』に使うべきと思います。  また、C 言語の解説本を買うときに著者が異なる本を数冊(2~3)用意すると良いです。  理由は1つの本の解説では説明不足だったり、分からなくても別の解説書の説明で  理解できたとか、解説漏れも防げると思います。ただし、入門用の本を複数買うより  入門用、中級用、問題集という感じでレベルや内容が異なるものにします。  そうしないと同じような入門書を複数買う意味がありません。 >柴田望洋さんの本もしっかりと読んでみる事にします。  ↑  このシリーズの本を買うなら次の本はどうでしょうか?  (1)http://www.amazon.co.jp/dp/4797329955/→『新版 明解C言語 実践編』  (2)http://www.amazon.co.jp/dp/4797327901/→『解きながら学ぶC言語』  (3)http://www.amazon.co.jp/dp/4797331186/→『図解C言語 ポインタの極意』  (4)http://www.amazon.co.jp/dp/4797331631/→『新版 C言語によるアルゴリズムとデータ構造』 ・(1)、(2)は今回購入しても良さそうな本と思います。  (3)は C 言語で一番ポイントとなる(挫折しやすい?)部分を重点的にまとめられた本です。  目次を見るかぎりではかなりお勧めします。構造体、共用体なども説明されているようです。 ・(4)は今後、授業で必ず出てくる『アルゴリズム』についての本です。  授業や教科書だけでは説明不足だと思った場合は購入も考えてみて下さい。 最後に: ・コンパイラは無料コンパイラを1つ用意します。  このときフリーで出回っている総合環境をダウンロードして使えばコンパイルが楽になります。  http://www.forest.impress.co.jp/article/2007/02/07/cwohajimeyou2.html→『C言語を始めよう!』  http://www.vector.co.jp/soft/win95/prog/se180695.html→『BCC Developer』  http://www.vector.co.jp/soft/win95/prog/se141451.html→『CPad for Borland C++Compiler』  http://www.vector.co.jp/soft/win95/prog/se326602.html→『Visual Windows for BC++』  使いやすいのをどうぞ。 ・あと無料コンパイラの『Borland C++ Compiler 5.5』はリンク先が変わりました。  新しいリンク先は下の『参考URL』をどうぞ。 ・以上。

参考URL:
http://www.codegear.com/jp/downloads/free/cppbuilder/
herobushi
質問者

お礼

ここまで丁寧な回答だとちょっと申し訳ない気がします(笑) 本当にありがとうございました。 紹介してくださったもので自分に合うものを吟味したいと思います。 プログラミングは学校の授業でというよりは個人的にとても興味があるので、本気で学んでいこうと思います。

その他の回答 (5)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.5

★回答者No.1です。 >なるほど、アルゴリズムですか… >確か自分の学科では二年生になったら必修科目でデータ構造とアルゴリズムがあったはずです。 >ちょっと先取りして見てみることにします  ↑  この考えはお勧めですね。  授業などでアルゴリズムを習っても完全には理解できずに進んで行ったりしますので。  その結果、アルゴリズム嫌いとなり、コンピュータ数学嫌い、数学嫌いとなったりします。 >数学的センスとプログラミングのセンスって違うものなのですか…  ↑  まだ良く分からないでしょうね。  少なくも数学とは違います。  これは数学では 10÷3×3=10 となりますが、プログラミングで整数の場合は 9 となります。  また、数学上では無限の数を扱えますが、プログラミングでは有限の数しか扱えません。  つまり、計算できる数の大きさ(小ささ)に上限があるのです。  これを考慮してアルゴリズムがどうとか、for 文でどう記述するとかの考え方が出てきます。  ここの概念が最初の難関なのです。 >全く新しく学ぶ分野ならとにかく慣れろって感じですかね  ↑  そうだね。習うより慣れろ!ってことになります。  私はソフトウェアの前に電子回路を趣味で4.5年やりました。  その後にパソコン関係のソフトに移りましたが、電子回路の思考からソフトウェアの思考の  移行がなかなか出来ませんでした。そして最終的に感じたのは電子回路の思考とソフトウェアの  思考は全く違うという感じでした。電子回路では設計するときに部品の値を数学の計算式で求め  誤差を考慮して部品の値を決めます。ソフトウェアでは整数での計算を上手く利用して誤差が  出ないようにしたり、0 という数がかなり重要になります。  また、ソフトウェアの方は数列を良く使いますが、算術関数 sin、cos、tan などは科学技術の  計算を処理しないかぎりはあまり使わないです。ゲームなどでは sin などが使われますが一部。 ・こんな感じで慣れるまでは時間がかかるか、人間の数学からコンピュータ数学の概念を新しく  作った方が良いです。全く別の分野として。 >for文の中にどういう文をどういう順番に入れれば良いのか、というような感じで迷うことが多いです。  ↑  これはある程度プログラミングしないとどの順番が一番良いか分からないと思います。  あとプログラミングの経験者のソースを見て研究することですね。  見やすい、見づらい、分かりやすい、分かりにくいなどいろいろとね。 >うちの教科書が「明解C言語(入門編)」柴田望洋 ソフトバンク >なのですが、先輩方の評判があまり良くないのでちょっと敬遠してたのですが…  ↑  これは先輩の評価であって、あなたの評価ではないはず。  例え評判が悪くても自分には分かりやすい本なら『宝』です。  また、逆に自分に読んで分かりやすいものを後輩に勧めたら分かりにくかったという意見が  帰ってくるかもしれません。なので自分で読んでみて評価して下さい。  私も『柴田望洋』さんの本を持っています。ただし、10年以上前のポインタの本です。  『柴田望洋』さんのホームページを下の『参考URL』に載せておきます。 ・以上。

参考URL:
http://www.bohyoh.com/CandCPP/C/index.html
herobushi
質問者

お礼

さらにまた丁寧な回答をありがとうございます。 プログラミングを全く新しい概念として学んでいこうと思います。 柴田望洋さんの本もしっかりと読んでみる事にします。 あと、このあとにも同じ質問を載っけるとおもうのですが、 できればもっとプログラミングに慣れていきたいので 自宅のパソコンで実際にC言語を扱い、 コンパイルができて実行結果を表示できるソフトのようなものはないでしょうか? 品質が良ければ有料でも構いません 再度の質問ですが、よろしくお願いします<m(__)m>

  • fatbowler
  • ベストアンサー率48% (26/54)
回答No.4

現場のSEの立場からアドバイス差し上げます。 >数学のような応用問題(素数がどうのや行列など)のC言語ではどういう思考回路を持てばよいのか分りません… 数学とC言語は無関係です。 私自身は数学を苦にしませんが、現場の経験しか持たないプログラマには、たとえベテランでも そういった問題ができない人も多いと思いますよ。 思考回路という話でしたら、どういう順番でどういった処理を行えば、求められている処理が 実現できるのかを先に考えて、完全に理解してからプログラミングに入るよう心掛けてください。 フローチャートをマスターするのが王道でしょう。 アルゴリズムの勉強は確かに有意義なのですが、初心者が手を出すと行き詰って、プログラミングが キライになってしまうのがオチなので、ある程度自信が付いてから勉強した方がいいと思います。 数学の勉強でも、微分・積分を教わるのは、y=2xとかの関数を覚えてから何年も経った後ですし。 最後に、ANo.3で紹介されている 「明解C言語(入門編)」柴田望洋 ソフトバンク は、シリーズの「実践編」とともに部下の教育用に買い求めましたが、かなり良い本です。 是非オススメします。

herobushi
質問者

補足

回答ありがとうございます。 確かに思考回路というよりは処理の順番ですね。 for文の中にどういう文をどういう順番に入れれば良いのか、というような感じで迷うことが多いです。 うちの教科書が「明解C言語(入門編)」柴田望洋 ソフトバンク なのですが、先輩方の評判があまり良くないのでちょっと敬遠してたのですが…

回答No.3

数学的センスとプログラミングのセンスは 異質なものです。 数学を学ぶのと、プログラミングを学ぶのは 分けて考えたほうが良いでしょう。 例えば、微分方程式を解く場合は コンピュータの世界では数値計算で求めるわけであり 近似値を求めるわけです。 必要十分な解を求めるわけではありません。 またプログラムのアルゴリズムというのは、論理の流れではなく 操作の流れです、プログラムのアルゴリズムは結果を出すものでは あるけれど、結果を保証するものではありません この点、数学のアルゴリズムとは異なります。 (わかるかな~) とにかくプログラムの勉強は、いろいろ自分でプログラムを 作って、自分で動かしてみることですな。 超初心者向きでは、ありますが 以下の本がよろしいかと 「明解C言語(入門編)」柴田望洋 ソフトバンク 多数の小さいサンプルが掲載されており どのサンプルもPCに打ち込めば動くということが ひじょうに良いですな。 まあ、最初のうちは、小難しいことは 考えずに、こう書けば、こう動く とうい感じで、英語の例文でも 覚えるような気分で、気楽に 数をこなしてみるのがよろしいかと。

herobushi
質問者

お礼

数学的センスとプログラミングのセンスって違うものなのですか… おっしゃてることはなんとなく分る気がします(笑) 全く新しく学ぶ分野ならとにかく慣れろって感じですかね 頑張ってみます! 回答ありがとうございました!

  • uyama33
  • ベストアンサー率30% (137/450)
回答No.2

数学用の関数の本を読みましょう。 Numerical Recipes in C や、 C言語 数学関数ハンドブック (技術評論社) 図書館にあると思います。 先生に聞いてみてください。

herobushi
質問者

お礼

回答ありがとうぞざいます。 C言語の数学関数の本があるんですか! ぜひ探してみます!

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス >基本中の基本はなんとか理解でき書けるんですが、数学のような応用問題(素数がどうのや行列など)の >C言語ではどういう思考回路を持てばよいのか分りません…  ↑ ・これは『アルゴリズム』の事を言っているのですよね。 >例えばfor文自体の意味は分るのですが、一般的にどういう表現のときに用いるのかが分らないのです。 >何か良い本などがあれば教えてください。  ↑ ・アルゴリズムの勉強をすれば for 文も使いこなせるようになります。  下のリンクで本(サイト)を紹介しているので参考にして下さい。  (1)http://oshiete1.goo.ne.jp/qa2914917.html→『データ構造とアルゴリズム』  (2)http://oshiete1.goo.ne.jp/qa3082805.html→『アルゴリズム関連の奨めサイトは?』 >数学みたいに基本的な思考方法を覚えた方が良いのでしょうか?  ↑ ・これは『アルゴリズム』を覚える方が良いということですね。  ソートにはソートで有名な方法が多数あり、それぞれ特徴があります。  その特徴などを把握してどのソートがよいか決めます。  データの種類や性質によってもソートの使い分けをします。 ・数学的、論理的、人間ならどう考えるかなどをそのまま if、for、while 文を使って記述すれば  良いことになります。→なれないと駄目ですが…。 ・例えばトランプゲームでシャッフルはどうやりますか?  このようなゲームを作るときには絶対にカードをシャッフルさせる処理(関数)が必要になってきます。  また、ソート処理の良し悪しを検証するためにもデータをシャッフルさせる処理が必要にもなります。 >その授業というのが、いくつもの課題が提示され実際にパソコンでプログラミングするというものなのです。  ↑ ・サンプル・プログラムだけでは上達しないため何でもよいので1つの便利なソフト(ツール)を  自分の為に作成してみて下さい。コマンドライン型、ウインドウ型、常駐型などいろいろあります。  アルゴリズムを覚え、研究し、改良してコンピュータ数学をこれから学んで下さい。 ・下の『参考URL』もどうぞ。 ・以上。

参考URL:
http://www5c.biglobe.ne.jp/~ecb/algorithm/algorithm00.html
herobushi
質問者

お礼

回答ありがとうございます。 なるほど、アルゴリズムですか… 確か自分の学科では二年生になったら必修科目でデータ構造とアルゴリズムがあったはずです。 ちょっと先取りして見てみることにします

関連するQ&A

  • 数学科の学生が身に着けるべきプログラミング言語

    数理情報科学科で数学を勉強しています。 具体的なプログラミングの授業、工学部の人から良く聞くC言語とかは習う、というか勉強したことがないのですが、数学科の学生でも、就職したときのことを考えると、何か勉強しておいたほうがいい、という話を聞きます。 今は解析とかの授業でいっぱいいっぱいですが、どういう言語を勉強したらいいのでしょうか。また、数学の研究(卒業研究とか)でプログラミング、というとどういうことに使うと思いますか。 4年生の統計でRというのを勉強はするみたいです。

  • 数学C

    数学Cの「行列とその応用」・「式と曲線」が分かりやすく載っている参考書って有りませんか。なぜか学校では数学Cの授業がなく、しかし大学二次試験では必要なので独学しようと思ってます。良い参考書で値もお手頃価格の品を教えて下さい。

  • プログラミングの勉強方法

    プログラミングの勉強方法 今、私は理系の大学3年生です。 自分はプログラミングが全くと言っていいほどできません。 このままでは研究室に配属になるときにまずいと思い、あせっています。 授業でプログラムの授業がないので独学でやろうとしているのですが、どうもなにをやっていいのかわかりません。 なので基本情報処理技術者、応用情報技術者と資格を取っていこうと思います。 資格を取ることを目標にすれば勉強にも身が入るかと思っているのですが、プログラムをできるようにするためにとるための資格って基本情報処理技術者などでいいのでしょうか? もっとオススメの目標となる資格があれば教えてください。 ちなみに私の専門は通信系で、言語はC言語を頑張っていきたいと思っています。ポインタ辺りまでの基本的な内容は授業で学習しました。

  • 数学科と応用数学科の違い

    来年大学を受験するものです。 数学科か応用数学科もしくは数理情報科学科に入りたいのですが、 よく違いがわかりません。 自分で調べたところ、 数学科:純粋数学をおもにやる。哲学的、抽象的なもの?ドロップアウトが多い。 応用数学科:実践で使える数学をやる。就職に有利。 情報数理学科:応用数学に近い。PCに関連する授業が中心。就職に有利。 以上、私が持ったイメージです。 大学を卒業したら大学院(修士)に進みたいのですが、 『大学院』に入るときに数学科から応用数学に進むことができるのでしょうか? 質問を整理しますと…… (1)数学科、応用数学科、数理情報科学科の違い。 (2)大学では数学科に在籍し、大学院では応用数学を専攻できるのか。 色々おかしなところがあるでしょうが、回答お願いいたします。

  • 数学 

    数学は何のための学問でしょうか? 科学での応用はもちろんあるかもしれませんが、ぼくは先生に論理的な力を養うものと教えられました。 しかし、今大学受験を控えるぼくには一つ疑問があります。 センター試験は論理的思考力を養うという目的に反していませんか? 授業でセンター試験に向けた解法など教えられますが、それらには早さを重視した論理を無視したやり方が多く含まれているように思います。これってどうなんでしょうか? こんな事を聞くのは、努力を厭い数学に消えてほしいと思う自分への言い訳に過ぎないかもしれません。 でも、すごく気になるので、回答よろしくお願いします。

  • プログラミングについて

    プログラミングを今年の四月にはじめたばかりなのでまったくプログラミングの知識がない状態で、大学の3年の授業でJSPをやっているのですが、ほとんどわかりません。(大学には3年次編入で入りました) ちなみにJSPは授業をとらないといけません。 しかし今、一年の授業でC言語を習っていますが、JSPで使うのはJavaなので、C言語をこのまま勉強するべきなのか、それともJavaをやったほうがいいのか迷ってます。プログラミングに関してもっている参考書はやさしいC、明解C言語入門編、 JSP業務アプリケーション短期開発入門です。 何かいい教科書や勉強法、アドバイスがありましたら教えてください。

  • プログラミング言語

    現在文系私立大学の一年生です。 パソコンを扱うのが好きなので、在学中にプログラミング言語を覚えたいと考えています。 が、今はC、C+、C++、Javaなどの言語の名前だけを知っている状態です。 どのプログラミング言語を学ぶと役に立つのでしょうか? また、どのプログラミング言語が簡単でどのプログラミング言語が難しいなども教えていただけるとありがたいです。 また、私は数学がかなり苦手で文系に進んだのですが、プログラミングは数学が出来ない人間にも可能なのでしょうか? あとOSですが、プログラミングをするにはWindowsよりもLinuxの方が良いのですか? UbuntuとWin7のデュアルブートの経験はあります。今度はDebianというものでやってみようかなと思っています。

  • 初心者におすすめ

    今度大学のAOで論理的思考を伴うような課題が出されます 去年はプログラミングで図形を書く課題でした。 そこでプログラミングが練習できるソフトまたは、プログラミングで図形を描くことが可能なソフトありませんでしょう? 初心者でも分かりやすくフリーのソフトでお願いします。 大学は理系の情報科学部です

  • ゲームプログラミングを始めるにあたって

    ゲームプログラミングについて学ぼうと思っています。まったくの初心者です。 いくつか不安な点、疑問点があったので質問させていただきました。 ・CやC++が主に使われているらしいので、まずはC言語について学ぼうと思うのですが、C言語はゲーム以外の分野にも使われています。 なので、ただC言語について書籍やサイトで勉強しても、それがゲームのプログラミングに繋がるのかどうかが不安でなりません。 C言語を習得し、ゲームプログラミングに応用するためにはどのように学習するのが良いでしょうか。また、初心者が1からC言語を学ぶのに適している書籍などがありましたら、教えてください。 ・CとC++の違いについて教えていただけると幸いです。私の中の勝手なイメージですが、数学IとIIのような基礎と発展みたいな関係なのでしょうか?

  • プログラミングの言語について

    プログラミングをしたいのですが、言語の種類が多くてよく分かりません。おすすめの言語を教えてください。また、その言語でのプログラミングの方法が書かれているWebページも教えてください。パソコンの基本的なことや、応用的なことは分かりますが、プログラミングについては初心者なので、なるべく簡単なものでお願いします。

専門家に質問してみよう