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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

8回答

4768閲覧

Cを学校で勉強するようなのですが、つまずきやすいポイントを教えて下さい!

flow

総合スコア21

C

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

3クリップ

投稿2015/01/18 14:35

こんにちは
受験が終わり、今年からC言語を学校で勉強するらしいのですが入学する前に基礎をおさえておきたいです。

現在はjavascriptをやっていて独習javascriptという入門書を買い、演算子、制御文ときて現在関数を勉強してます
そこで一通りやったらcの勉強をしようと考えているのですが、わかりやすい入門書などあれば教えて頂きたいです。

またCを学ぶ上でつまずきやすい点なども教えて頂けると幸いです

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

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

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

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

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

guest

回答8

0

オブジェクト指向ですかね。
私の場合はロジック構築やポインタではあまり躓きませんでしたが、オブジェクト指向の設計思想に関してはちょっと理解に時間がかかりました。
まぁ、Cに限った話ではありませんが・・・。
部品単位でクラスを作って、インスタンスを組み合わせてプログラムを構築していくやり方ですが、ある程度慣れが必要になると思いますので、これから書かれるプログラムではそういった部分も意識していくと良いかと思います。

Javascriptでは現在関数まで勉強しておられるとの事ですが、Cへ進むのであれば、「use strict」を使い、ついでにクラスまで勉強したうえで、構造的によく考えてプログラムを書く事をお勧めします。

ちなみにですが、ポインタはアセンブラをちょっとかじると良くわかる様になりますよ。

投稿2015/01/19 03:19

utun

総合スコア384

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

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

0

C言語と言っても、規格の種類と処理系の種類があります。プログラミング言語で規格の種類と処理系の種類が複数あるのはそれほど珍しいことではありません。

C 言語の規格 - Wikipedia
主な C 言語処理系 - Wikipedia

実際に授業で扱うのがどの処理系なのかが分かりませんので一概には言えませんが、個人的につまずきやすいと思われるのは、やはりポインターだと思います。
ポインターの中でも配列のポインターが特に混乱しやすいと思っています。

よくある質問・間違いに関するサイトも多数あります。ある程度学んでから読んでみると良いでしょう。

C言語 FAQ 日本語訳
ありがちなC言語プログラムの間違い

投稿2015/01/19 00:21

argius

総合スコア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

daive

総合スコア2028

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

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

0

ベストアンサー

まず、私がつまずいた順に……
・変数の型
・関数化
・ループとリエントラント
・ポインタ
GUIになると、win32api系列。
特に、ListViewやTreeView系が未だにわかりません。
更には、「デバイスコンテキスト」の概念や、String型のようなガベージコレクション(GC)。
GCは、メモリを自動開放をしてくれるなどの機能を持っていますが、ポインタのように自分で好きなタイミングでメモリの確保と開放を行えないため、コアな処理の時に不安になり、面倒でもポインタで組んだりします。

GUIを組む場合、JavaScriptはブラウザ動作となりますが、Cではウインドウを自分で定義しなければいけません。
厳密に言うと、JavaScriptは「スクリプト言語」で、C言語「プログラミング言語」となります。
コアとなる部分を自分で書くことができる(書かなければならない)という点で相違がありますね。

おすすめの参考書は、私は「ない」と言っておきます。
質問者様の「わかりやすい」と思う説明と、私の「わかりやすい」と思う説明はおそらく違うからです。
本のチョイスは、書店に行き、ページをパラパラと捲り、解説の配置や内容の濃さが自分好みのものを選ばれると良いかと思います。

蛇足ですが、私は「ActiveBasic」というBASIC言語(化石言語とか言うな!!)でプログラムを組んでいますが、Cベースなのでこちらで学んでもいいかと思います。
Cより少しやさしい部分が……あるような、ないような……?

投稿2015/01/18 21:36

nnahito

総合スコア2004

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

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

flow

2015/01/20 17:02

コメント感謝します 以前からポインタが難しいとはきいていたので少し調べたら分かりやすい動画がアップされてました。どのようなものか感覚は掴めた?気がします 本については見に行って分かりやすい本が見つかったので良かったです nnahitoさんの仰る通り変数の型は最初とっつき難かったですが、大体分かるようになりました。 javascriptと並行してやっていこうと思います。ありがとうございました
guest

0

私はJavaScriptを学習しているものですが他言語と違い、JavaScriptは良くも悪くも大雑把と言いますかなかなか変わった言語なんです。
他言語は型に厳格であること(JavaScriptは暗黙の型変換などが可能ですが)や変数の宣言を含めた書式や構成の違いに気を付けて学ぶべきだと思います。
またC言語では文字コードの型の違いなども意識しないと困ることがあるのではないかと思います。

投稿2015/01/18 16:20

Cf_cwd

総合スコア730

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

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

0

ポインタですかね!

投稿2015/01/18 14:55

takayukiinaba

総合スコア1158

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

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

0

先ず、C言語で躓きやすい場所というと、やはりポインタ周りであろうと思われます。
「どういう機能かは分ったが、それが何の役に立つのかわからない」そう挫けそうになるかもしれません(私がそうでした)。そういう時に個人的にお勧めする方法は「しばらく放っておく」事です。対象がどういう物か、文字情報として把握できたら、その先の内容に進んでしまいましょう。ある日突然、「ああ、アレはこういう時の為に在るのか!」と理解出来るものです。幸い、独学ではなく、学校で習うという事なので、どうしても分からない場合(或いはテストが近づいている場合とか)は素直に先生に質問するとよいでしょう。

質問者はJavaScriptの経験が有るという事なので、ポインタの他には「型」や「main関数の存在意義」、「プリプロセサ(特に#include)」で躓くかもしれませんね。また、C言語は、オブジェクト指向プログラミングが一般的になるより前に生まれた言語であるため、「何故こんなに書きづらい記法なのだろう」という感想を抱かれるかも知れません。

入門書ですが、個人的には、林晴比古氏氏の書かれた物は分り易く、逆に柴田望洋氏の本は分かり難く感じました。もっとも、ここは結構「相性」が影響すると聞きます。是非、実際に本屋(大きな所の方が良いです。ヨドバシカメラ等の大きめの家電量販店のPC書籍コーナーも割とお薦めです)で、または図書館で実物を手に取り、比較してみる事をお勧めします。

C言語はコンピュータについての理解を深めるには良い言語だと思います(アセンブラほど読みにくくなく、ポインタでコンピュータがどうデータを記憶しているかの基本的な理解をする事が出来る)。ぜひ頑張って下さい。

投稿2015/01/20 15:34

AmaiSaeta

総合スコア105

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

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

0

JavaScriptを勉強中ということで、おそらく制御構文(if、switchなどの分岐や、for、whileなどのループなど)は問題無いと思います。

JavaScriptには無い(訳ではないが基本的には考慮しなくてもよい)考え方として、メモリ、ポインタなどがつまづきやすいポイントかと思いますので、その辺を重点的に勉強してみてください。
また、構造体や共用体も引っかかるポイントかもしれません。

投稿2015/01/19 06:00

k.tada

総合スコア1679

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問