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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

5回答

21962閲覧

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

fermat

総合スコア183

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

2グッド

2クリップ

投稿2016/10/30 13:54

編集2017/07/25 16:02

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

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

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


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

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

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

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

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

Makinoricat, LouiS0616👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

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

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

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

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

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

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

投稿2016/10/30 15:12

majiponi

総合スコア1720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2016/10/31 02:38

既に「猫でもわかるC++プログラミング」という本を読みはじめているのですが、サイトには実戦練習として家計簿の作り方が掲載されるなど本には書かれていない内容も載っていたので、こちらも併せて勉強を進めたいです。 APIについては、すこし距離をとって基礎固めをしたいと考え直すようになりました。 「プログラムはなぜ動くのか」 ネットで中身を少し読めるようになっていました。知りたいことが書いてあり、良さそうです。本当にこういう基礎から分かっていないので、助かります。 「プログラミング言語C」 「プログラミング作法」 この2冊、手に取って読んでみたいです。でも分からなくても、今は焦らずできることを勉強したいと思います。 回答、ありがとうございました。
majiponi

2016/10/31 03:08

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

2016/10/31 10:56

……分からないことばかりな理由がわかりました。C言語を知らずにC++の入門書を読んでいるからなんですね。王道なし、C言語からがんばってみます。 「プログラムはなぜ動くのか」 早速読んでいます。図形や絵が多いので、パソコンの中で何が起こっているのか想像しやすくなりました。メモリーについての理解が進みます。 色々とありがとうございます。
guest

0

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

投稿2016/10/30 14:58

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2016/10/31 02:21

良さそうと思いましたが、残念ながら絶版となっているようです。アマゾンの評価には、「標準C++とC++/CLIを対比して説明しているので、それぞれの違いが良く分かりました。」とあり、まさにそれを知りたいんだよ…と思っていたので、中古でも見つかればと頭の隅に置いておきます。ありがとうございました。
MasahikoHirata

2016/10/31 06:31

私も最後に購入したのが2カ月ほど前で大手の書店でした。まだ在庫がある可能性が。
yohhoy

2016/10/31 06:54 編集

参考までに、(純粋な)C++ と C++/CLI は異なるプログラミング言語と考えた方がよいです。その名前が示す通り共通項もありますが、C++/CLIは.NETフレームワークを前提とするため、純粋C++からさまざまな仕様変更が加えられており、好ましい書き方も変わります。 またC++/CLIは、C#やVBなどの.NET向け言語とCやC++のネイティブモジュールの橋渡しをする中間的位置付けと捉えた方が良いと思います。アプリケーション全体をC++/CLIメインで開発することもできますが、書きづらいだけですから正直お勧めしません。
fermat

2016/10/31 11:15

黄色い本は、本屋をめぐっても見つからず、中古でのネット購入を検討中です。 ①.NETでVC++を学ぶ入門書と②純粋なC++の入門書の2冊が手元にあるのですが、異なる言語と考えた方がよいと言われてみて、今までの漠然とした謎の原因が分かりはじめました。C++とC++/CLIが別物であるという意識をもって勉強を進めようと思います。 独学していたところ、頭から黒い煙が出始めて、このサイトにたどり着きました。 コメントしてくださり、みなさま ありがとうございます。
fermat

2016/12/22 23:08

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

2016/12/23 00:31

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

0

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

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

投稿2016/12/23 03:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2016/12/23 23:05

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

0

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

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

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

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

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

投稿2016/10/31 02:13

編集2016/10/31 02:20
ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2016/10/31 02:51

C++がそのような転換期を迎えているとは、全く知りませんでした。 ポインタやメモリ管理すら分かっていないので、従来のC++を勉強しつつ、先を見越して11や14の情報を集めてみたいです。 基本情報技術者試験の参考書も探してみます。そのような試験があることも初めて知りました。 将来的にはC++だけではなくJAVAも使えるようになりたいと思っているので、言語に関係なくプログラムに必要な土台作りを意識してみたいと思います。 知らないことばかりです。ありがとうございます。
guest

0

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

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

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

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

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

投稿2016/10/30 14:34

編集2016/10/30 14:35
Touhoku

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2016/10/31 02:17

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問