質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.78%

C++独学 おすすめの書籍や勉強方法を知りたいです

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 19K+

score 183

プログラミング初心者です。VisualStudio2015を使い、独学でC++の勉強を始めています。
VisualC++を学ぶため、入門書に書かれたサイコロゲーム作りをしています。
API,MFC,.NET,Qtなどの違いも、ファイルには.hと.cppがある意味も、iostreamが何なのかも分からないまま、ひたすらキーボードを打っている状態です。

そこで、お尋ねしたいのですが

  1. C++、VisualC++の勉強は、どう学ぶと効率が良いのでしょうか。また、学んでいく上でおすすめの書籍がありましたら教えて頂けないでしょうか。
    (勉強方法に悩みインターネットを検索したところ、API→クラス→MFCの順で学ぶと良いなどという記述を見つけましたが、C++でAPIを学ぶための書籍が一般の書店で見つからず、どうしたものだろうと立ち止まっています。)
  2. また、ポインタやバッファ、メモリなどの意味や関連も分かっていないため、ひたすらネットで検索ばかりの状態です。PCやプログラミングをを基本的なことから理解するには、どのような書籍を読んだり、どう勉強を進めれば良いでしょうか。
  3. VC++の書籍に記載が無く、MSDNのライブラリにしか紹介が無いものは、使いたくてもどうやって使ったら良いのか全くわからないのですが、こういったものはC++を基礎から学べば自ずと書けるように上達するものなのでしょうか。
  4. 最後に、まだ先のことになると思いますが、将来的にしっかりプログラミングを身に着けていくには、これは読むべきという本がありましたら、こちらも教えていただけると幸いです。

長文となり申し訳ございません。
教えて頂きたく、お願いします。


2000view突破!!・・・というわけで、記念追記(^^ゞ(2017/07/26)

このページを検索される方はC++を始めたばかりの方でしょうか。
C言語とC++は全体像を把握するのに時間と根気を必要としますが、基礎が身に付くため、
JAVA・VBA・C#・Rといった他言語にシフトしたときでもその知識が役に立つと思います。
初心者向けの本は、ダラダラ読まず勢いで最後のページまで学び切る事をお勧めします。
・・・偉そうにすみません。

このページでは、C言語を学んだ上でC++を学ばなければならない事、
標準C++とC++/CLIが別物だという事…などなど多くの事を教えていただきました。
超初心者(私)とプログラミングに詳しい方々との会話が、
言語選びや書籍選びの助けとなれば幸いです。

右も左も分からないまま飛び込んだプログラミングの世界でしたが
teratailの皆様にたくさんの手を差し伸べていただきました。感謝!!
このサイトが無かったら、今頃はプログラミングを諦めていたと断言できます。
少しでも何これ??という疑問があったら、質問することをお勧めします。
簡単にスクリプトだけ知りたいフリーライダーでない限り、
初心者の小さな質問にも丁寧な答えをして下さる方がいて、そうしてまた前に進めます。
時に他の質問ページを覗くと高度な議論もなされていて、良い刺激になります。

まだまだ初心者のままですが、
これからも良いプログラミングが書けるように成長していきたいので
どうぞよろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+4

そもそもC++自体が、初心者向きの言語ではないと思います。とりあえず動かせればよい、というのであればJavaやRubyが比較的とっつきやすいです。どうしても仕事などの都合でC++でなければいけない、という事情があるのでしたら、「猫でもわかるプログラミング」というサイトが便利です。C++の書き方、その前身であるCの書き方、WindowsプログラミングのTip、様々な要素が詰まっています。はじめは「C++編」という項目から読むのがよいでしょう。

API->クラス->MFCという勉強法は、オススメしません。理由は下記の通りです。

  • APIを使うためにはC言語の知識が必須
  • APIやMFCは特定の環境でしか使えない
  • APIについてまとめた専門書が乏しい

メモリやポインタの知識は、先程紹介したサイトで大体は学べますが、「プログラムはなぜ動くのか」という書籍がまとまっていて読みやすいと思います。

書籍に載っていないAPIが必要となる場面は、最初のうちはまずないと思います。載っているAPIでも詳しい仕様は書籍に掲載されていないこともあり、それを調べていくうちに、「調べ方」は自然と身につくものであると思います。

最後に、読むべき本ということですが
「プログラミング言語C」
「プログラミング作法」
という2冊を紹介します。中級者以上向けなので現段階では読む必要はないですが、いずれ一人前になるのであれば、必読です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/31 11:38

    既に「猫でもわかるC++プログラミング」という本を読みはじめているのですが、サイトには実戦練習として家計簿の作り方が掲載されるなど本には書かれていない内容も載っていたので、こちらも併せて勉強を進めたいです。
    APIについては、すこし距離をとって基礎固めをしたいと考え直すようになりました。

    「プログラムはなぜ動くのか」
    ネットで中身を少し読めるようになっていました。知りたいことが書いてあり、良さそうです。本当にこういう基礎から分かっていないので、助かります。

    「プログラミング言語C」
    「プログラミング作法」
    この2冊、手に取って読んでみたいです。でも分からなくても、今は焦らずできることを勉強したいと思います。
    回答、ありがとうございました。

    キャンセル

  • 2016/10/31 12:08

    すみません、一部訂正。C++編から、と書いてしまいましたが、正しくは、C言語編から、です。C++編はC言語の知識を前提としているので、並べて読むなりしないと、???になります。

    キャンセル

  • 2016/10/31 19:56

    ……分からないことばかりな理由がわかりました。C言語を知らずにC++の入門書を読んでいるからなんですね。王道なし、C言語からがんばってみます。

    「プログラムはなぜ動くのか」
    早速読んでいます。図形や絵が多いので、パソコンの中で何が起こっているのか想像しやすくなりました。メモリーについての理解が進みます。

    色々とありがとうございます。

    キャンセル

0

  1. 写経(参考書籍の丸写し)が効率がいいと思います。そして、動作がわからない部分はVC++のデバッガにてブレークポイントとステップオーバー実行などで動作を確認できれば良いと思います。そのソースコードの間にprintfのような変数を表示できる関数を差し込んで変数を表示できるようにするのもいいかもしれません。

  2. 私はここに載っている初心者向けと中級者向けの本を読んで勉強しました。

  3. MSDNのライブラリにしか紹介が無いAPI関数などは使う時になったら覚えれば良いと思います。C/C++では標準関数とSTLを憶えておけば十分です。Windowsのソフトを作りたくなったらWin32APIを学べば良いと思います。

  4. コーディングコンテストの経験はとてもプログラミング力がつきます。そのコーディングコンテスト向けの本です。

・プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?
・最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイド
このサイトの競技プログラミングのリンク集も参照してみてください。 

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/31 11:17

    確かに習うより慣れろという面もあると思うので、プログラミングを写経して経験を積みたいと思います。リンク集からプログラマのコンテスト世界を垣間見ることができて、いい刺激になりました。いつの日かコンテスト用の本も読みこなせるようになりたいです。ありがとうございました。

    キャンセル

0

新人にまず渡す本を示します。
リンク内容
まずはこれならばオブジェクト指向についての簡単な概念やすぐに試せるソースもあり、早道と考えています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/31 20:15

    黄色い本は、本屋をめぐっても見つからず、中古でのネット購入を検討中です。

    ①.NETでVC++を学ぶ入門書と②純粋なC++の入門書の2冊が手元にあるのですが、異なる言語と考えた方がよいと言われてみて、今までの漠然とした謎の原因が分かりはじめました。C++とC++/CLIが別物であるという意識をもって勉強を進めようと思います。

    独学していたところ、頭から黒い煙が出始めて、このサイトにたどり着きました。
    コメントしてくださり、みなさま ありがとうございます。

    キャンセル

  • 2016/12/23 08:08

    このご回答を頂いてからもう2か月ほど経ちますが、
    ようやく黄色い本を古本屋で見つけることができました!!
    読むと、理由や仕組みがしっかり書いてある良書でした。
    C++を何となく使える、でも応用がきかないという状態に悶々としていたので、この本で助かりました。何故売られなくなってしまったんだろうと思います。
    こんな本が自分には向いているのかということも分かり、これからの本を選ぶ指針にもなりました。ありがとうございました。

    キャンセル

  • 2016/12/23 09:31

    お役に立てたなら良かったです。これからも頑張ってください。

    キャンセル

0

c++は今、転機を迎えていて11や14といったバージョンになると、
昔のc++とはまるで別の言語に感じるほどの違いがあります。

もちろん、最新バージョンでも昔のc++の書き方はできますし、
(業種によりますが)まだ業界では昔のc++を使っている方が多いでしょう。
ですが、後、5年もしてくれば大分状況は変わると思います。

もちろん、いくら最新バージョンになろうとポインタやメモリ管理の概念は覚えていないとだめです。
ですが、使う関数自体が変わってくるので書き方だけ覚えてもだめです。

ですので、私は基本情報技術者試験の参考書をオススメします。
これらはプログラムの書き方そのものより、プログラムがなぜ動くのかというような説明が中心になります。
一見、遠回りな道になりますが、言語に関係なくプログラムに必要な土台が勉強できます。
(後、資格をとると履歴書に書けます)

それをマスターした後でc++に戻るか、
JavaやC#等の人気のある言語を学んでいくといいのではないでしょうか?
(それらとは関係なく何かしらのスクリプト言語も覚えていくといいと思います)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/31 11:51

    C++がそのような転換期を迎えているとは、全く知りませんでした。
    ポインタやメモリ管理すら分かっていないので、従来のC++を勉強しつつ、先を見越して11や14の情報を集めてみたいです。

    基本情報技術者試験の参考書も探してみます。そのような試験があることも初めて知りました。
    将来的にはC++だけではなくJAVAも使えるようになりたいと思っているので、言語に関係なくプログラムに必要な土台作りを意識してみたいと思います。

    知らないことばかりです。ありがとうございます。

    キャンセル

0

解決済みとのことですが、ちょっと補足します
OSの機能を使うにはWin32APIかMFCか.NETか、と選択肢がいくつもありますが
MFCはもう古すぎるのと、.NET(C++/CLI)は言語とOSとの癒着(Windowsでしか使えないコードになる)が激しいので
「猫でもわかる」でとりあえずWin32APIを使ったプログラミングに慣れるのは得策だと思います。
あとWin32APIはC言語用なので、C++のクラス等を理解してなくても使えますよね。
Win32APIの解説書は少ないという回答もありましたが、もしWindows上のプログラミングの仕組みへの理解が物足りないと感じたら
「Windows2000 プログラミング標準講座」がおすすめです(メッセージループの仕組み等が詳細に解説されているので)。
あと同著者の独習C、独習C++も手元にあると必ず役立つと思います。

3.についてですが、慣れればMSDNで使い方はすぐ分かるようになります。(使ってトラブルが起きたときはその限りではないですが・・・・(  ´・ω・) )

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/24 08:05

    .NETという便利なフレームワークも存在するのですが、動作の軽いアプリを作りたいのでWin32APIを選ぼうとプログラミングサイトで情報を集めている所でした。行き詰まり感が出てきたそんなとき、骨太な書籍を教えて下さりありがとうございます。Win32APIのメッセージの仕組みが知りたかったので、今一番欲しい本になっています。C/C++の勉強も、初心者の本を終えて詳細な本に移動したいと思っていたので、こちらもぜひ読んでみたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る