こんにちは
受験が終わり、今年からC言語を学校で勉強するらしいのですが入学する前に基礎をおさえておきたいです。
現在はjavascriptをやっていて独習javascriptという入門書を買い、演算子、制御文ときて現在関数を勉強してます
そこで一通りやったらcの勉強をしようと考えているのですが、わかりやすい入門書などあれば教えて頂きたいです。
またCを学ぶ上でつまずきやすい点なども教えて頂けると幸いです
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
0
オブジェクト指向ですかね。
私の場合はロジック構築やポインタではあまり躓きませんでしたが、オブジェクト指向の設計思想に関してはちょっと理解に時間がかかりました。
まぁ、Cに限った話ではありませんが・・・。
部品単位でクラスを作って、インスタンスを組み合わせてプログラムを構築していくやり方ですが、ある程度慣れが必要になると思いますので、これから書かれるプログラムではそういった部分も意識していくと良いかと思います。
Javascriptでは現在関数まで勉強しておられるとの事ですが、Cへ進むのであれば、「use strict」を使い、ついでにクラスまで勉強したうえで、構造的によく考えてプログラムを書く事をお勧めします。
ちなみにですが、ポインタはアセンブラをちょっとかじると良くわかる様になりますよ。
投稿2015/01/19 03:19
総合スコア384
0
C言語と言っても、規格の種類と処理系の種類があります。プログラミング言語で規格の種類と処理系の種類が複数あるのはそれほど珍しいことではありません。
C 言語の規格 - Wikipedia
主な C 言語処理系 - Wikipedia
実際に授業で扱うのがどの処理系なのかが分かりませんので一概には言えませんが、個人的につまずきやすいと思われるのは、やはりポインターだと思います。
ポインターの中でも配列のポインターが特に混乱しやすいと思っています。
よくある質問・間違いに関するサイトも多数あります。ある程度学んでから読んでみると良いでしょう。
投稿2015/01/19 00:21
総合スコア9390
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
C言語といっても、処理系は、いろいろ有るので、
取りあえず、俯瞰できるサイト
Wiki:C言語、主な C 言語処理系、C 言語の規格
http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E
GNUコンパイラコレクション:Linux / Windows / 組込み系 や、開発環境によったり。
Microsoft Visual C++ :VS2008 迄と、VS2010以後で、比較的大きな違いがあります。
組込系では、AVR Studio 5 以後が、Visual Studio 化していたはずです。
がターゲットであれば、それなりに、ネット上でも資料があります。
毛色の変わったところでは、
Fail-Safe C : https://staff.aist.go.jp/y.oiwa/FailSafeC/
先ずは、対象OS、処理系を確認してください。
ソフトウェアは、学校でのライセンスがあったり、学生の間は特別割引があったり。
無償版があったり。
’
キャストや、ポインタ、構造体、共用体については、アセンブリ出力を見ると、
理解しやすいのですが、今は、アセンブラを教えないからどうかなぁ。
’
学習の内容により、Cの基本的な部分の学習なのか、OS依存機能他、どこまで含むのかで、
読むべき書籍も変わるはずです。
’
cは、容易に、意図せず、不具合、バグを作り込む事ができる点が、
インタープリター、スクリプト系からの、違いです。
デバッガを使いこなす事が出来るかどうかで、作成効率が変わります。
’
昔々の遊びとしては、Cのソースコードを、アセンブラのソースコードに、
何処まで近づけるか、というのをやっていましたっけ。
オプティマイザが貧弱だったり、CPU/MEMORYが貧弱だった時代、
コンパイラの癖を、掴む為の遊びでした。
’
質問は、C++が多い様子ですが、
以下の質問サイトでは、C/C++のゲーム系で、発生しやすい問題が、質問されています。
C言語何でも質問掲示板
http://dixq.net/forum/viewforum.php?f=3&sid=d4dcca8cb91114d089bc080eec09e8d7
投稿2015/01/18 23:09
総合スコア2028
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
まず、私がつまずいた順に……
・変数の型
・関数化
・ループとリエントラント
・ポインタ
GUIになると、win32api系列。
特に、ListViewやTreeView系が未だにわかりません。
更には、「デバイスコンテキスト」の概念や、String型のようなガベージコレクション(GC)。
GCは、メモリを自動開放をしてくれるなどの機能を持っていますが、ポインタのように自分で好きなタイミングでメモリの確保と開放を行えないため、コアな処理の時に不安になり、面倒でもポインタで組んだりします。
GUIを組む場合、JavaScriptはブラウザ動作となりますが、Cではウインドウを自分で定義しなければいけません。
厳密に言うと、JavaScriptは「スクリプト言語」で、C言語「プログラミング言語」となります。
コアとなる部分を自分で書くことができる(書かなければならない)という点で相違がありますね。
おすすめの参考書は、私は「ない」と言っておきます。
質問者様の「わかりやすい」と思う説明と、私の「わかりやすい」と思う説明はおそらく違うからです。
本のチョイスは、書店に行き、ページをパラパラと捲り、解説の配置や内容の濃さが自分好みのものを選ばれると良いかと思います。
蛇足ですが、私は「ActiveBasic」というBASIC言語(化石言語とか言うな!!)でプログラムを組んでいますが、Cベースなのでこちらで学んでもいいかと思います。
Cより少しやさしい部分が……あるような、ないような……?
投稿2015/01/18 21:36
総合スコア2004
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ポインタですかね!
投稿2015/01/18 14:55
総合スコア1158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
先ず、C言語で躓きやすい場所というと、やはりポインタ周りであろうと思われます。
「どういう機能かは分ったが、それが何の役に立つのかわからない」そう挫けそうになるかもしれません(私がそうでした)。そういう時に個人的にお勧めする方法は「しばらく放っておく」事です。対象がどういう物か、文字情報として把握できたら、その先の内容に進んでしまいましょう。ある日突然、「ああ、アレはこういう時の為に在るのか!」と理解出来るものです。幸い、独学ではなく、学校で習うという事なので、どうしても分からない場合(或いはテストが近づいている場合とか)は素直に先生に質問するとよいでしょう。
質問者はJavaScriptの経験が有るという事なので、ポインタの他には「型」や「main関数の存在意義」、「プリプロセサ(特に#include)」で躓くかもしれませんね。また、C言語は、オブジェクト指向プログラミングが一般的になるより前に生まれた言語であるため、「何故こんなに書きづらい記法なのだろう」という感想を抱かれるかも知れません。
入門書ですが、個人的には、林晴比古氏氏の書かれた物は分り易く、逆に柴田望洋氏の本は分かり難く感じました。もっとも、ここは結構「相性」が影響すると聞きます。是非、実際に本屋(大きな所の方が良いです。ヨドバシカメラ等の大きめの家電量販店のPC書籍コーナーも割とお薦めです)で、または図書館で実物を手に取り、比較してみる事をお勧めします。
C言語はコンピュータについての理解を深めるには良い言語だと思います(アセンブラほど読みにくくなく、ポインタでコンピュータがどうデータを記憶しているかの基本的な理解をする事が出来る)。ぜひ頑張って下さい。
投稿2015/01/20 15:34
総合スコア105
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。