• ベストアンサー

C言語の基礎を勉強したいのですが。。。

今C言語を独学で勉強しようとしています。 参考書や書籍を色々見て、試行錯誤してい いるのですが、イマイチ”ピン”ときません。 と言うよりは、C言語の分野自体に向いていない、 理解してないといったほうが正しいのかもしれません。 根本的に勉強したく、都合良すぎかもしれませんが、 関連のサイトやおすすめの本などありましたら是非 教えて下さい。簡単なプログラム自体あれば、参考に 記述頂けると幸いです。よろしくお願いします。

  • TAXAS
  • お礼率91% (355/390)

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

  • ベストアンサー
  • rkit
  • ベストアンサー率51% (53/103)
回答No.4

あなたがどの程度のレベルなのかがわかりませんがご参考までに 簡単なプログラムをのせておきます。 1 #include <stdio.h> 2 3 int main(void) 4 { 5 int a,b, /* 入力した数字を格納 */ 6 kotae; /* 計算結果を格納 */ 7 8 printf("数を入力してください。a + bを計算します。\n"); 9 printf("input a = "); 10 scanf("%d",&a); 11 printf("inpur b = "); 12 scanf("%d",&b); 13 14 kotae = a + b; 15 16 printf("a + b = %d\n",kotae); 17 18 return 0; 19} 行番号は説明のためにつけました。 最初の行から説明します。 1行目:インクルード文です。最初の段階ではこれを理解するのはむずかしいと思うので、C言語のプログラムの最初の1行はこれ!と、暗号のように覚えてしまったほうがいいです。少し説明しますと、本当は書かなければいけないものを、いつも書くのは面倒なのでまとめてstdio.hというファイル(.hが付いているのはヘッダファイルということ)に書いて別のところに保管し、1行目の文を書くことにより読み込んでいるというイメージで、、、最初のうちはあまり考えないほうが無難でしょう。 3行目:メイン関数の入り口。4行目と、19行目の括弧内がメイン関数の中身。 C言語のプログラムにはこのメイン関数が必ず1つ存在します。プログラムを実行するとここから始まります。お手持ちの参考書の関数の章でいろいろと説明されていると思います。 5,6行目:変数宣言。C言語では変数という記憶領域上の箱のようなものを用意し、値の入れ替えを行います。つまり、この例では、a,b,kotaeの3つの変数を用意しているのです。2行に区切って記述されていますが、1行で int a,b,kotae; と記述しても同じです。途中で改行してもセミコロン(;)にぶつかるまでは 1つの文として扱われるので。intというのは整数型という意味。これについては 参考書のデータ型とか型とかの場所に載っているでしょう。 /* 説明文 */ という/* と */ で囲まれた部分はコメントです。自由に文字を書くことができます。説明文とか、自分での趣味のプログラムならぼやきとか(笑)を書き込むことができます。コメントの入れ子はできませんので要注意。 8,9,11行目は出力文です。プログラムで1番最初に習うのはだいたいこれでしょう。ここに説明するより参考書のほうがいいと思うので省略します。 10,12行目は入力文です。キーボードからの入力を行うことができます。 10行目でいうと、キーボードから入力された文字を、整数型("%d")として、 変数aに格納という感じです。&はアドレス演算子です。ポインタの章で詳しく学習できると思います。今は変数aにという感じで覚えてしまっていいと思います。 14行目はみてのとおり…ですね、これは。C言語では、必ず代入されるほうを左辺におきます。ですから、この文はA+Bの結果をkotaeに代入という意味です。 例として、ans = 9なんていう、数学ではありえない式も、C言語では9をansに代入、ということで通用します。これが普通です。慣れてくださいね。 16行目は出力文ですが、前の3つとは少し形が違います。 ""のあとにカンマがあり、そのあとにkotaeとなっています。このkotaeに格納(代入)されている値を""の中にある%dの場所に入れて、""で囲まれた部分を出力します。%dを書式指定子といいます。本によっては変換文字列とか書式指定文字列とかいろいろ言い方が違いますが。 それから¥nは改行マークです。これがかかれた場所で改行します。 いろいろずらして試してください。 18行目はリターン文です。 メイン関数は必ず値を返さなくてはいけません。int main(void)で始まっているでしょう?このintは整数型を返せということなのです。だからreturn 0;として 0を返してあげているのです。これについては関数の章で理解できると思うので、今は必ず書かなくてはいけないもの!として覚えてください。 ちなみに、int main(void)でなく、void main(void)としている参考書もありますが、これはANCI(American National Standards Insutitute《 米国国内規格協会 》)規格では間違いとされていますので注意してくださいね。 あまりうまい説明ができなくてすみません。 下記にもうひとつ、乱数発生のプログラムを載せておきました。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int ransuu, //乱数格納 i, //ループカウンタ max, //乱数の最大値 kaisuu; //発生させる乱数の個数 printf("max = "); scanf("%d",&max); printf("kaisuu = "); scanf("%d",&kaisuu); srand((unsigned)time(NULL)); for( i=1; i<=kaisuu; i++ ) { ransuu = rand() % max; if ( ransuu == 0 ) ransuu = max; printf( "%d\n",ransuu ); } } お遊びまでに・・・・・ コメントが//になっていますが、1行のコメントの場合はこれでもOKです。 //のあと全てがコメントとみなされます。 お役に立てましたでしょうか。 少しでも参考になれば幸いです。 プログラムが読みづらくてすみません。次はもっときれいに書きますね(汗) 参考書についてですが、本当に初心者の初心者の場合なら、 「1日でわかるC言語」(NTTアクセスサービスシステム研究所)桑原恒夫著 に、とても簡単な例題と解説が載っています。 本当に簡単なプログラムのみの説明になっています。 プログラムの説明以外は載っていないというかんじです。 わかりやすいのは確かですので、のぞいてみるといいかもしれません。

TAXAS
質問者

お礼

ご回答ありがとうございます。 このくらいのプログラムならなんとか理解できそうです。 書店などで色々と本を探したりしています。 ご親切にプログラムと解説ありがとうございました。 是非参考にさせて頂きます。

その他の回答 (4)

noname#30727
noname#30727
回答No.5

>イマイチ”ピン”ときません。 TAXASさんは、どのようなプログラムを作ろうとしてるのですか? C言語の基礎を覚えることは意味のあることですが、なんらかのアプリケーションを作成するようなケースでは、例えば文字を表示する手順、絵を表示する手順などを理解していかなければなりません。それは、OSや、なんらかのライブラリ、つまり他人の作った関数を呼び出すことの繰り返しを意味します。 漠然と言語を勉強しようとすると息がつまりますから、何か具体的な目標をたてた上で、適切なサンプルプログラムを探した方が無難だと思います。

TAXAS
質問者

お礼

ご回答ありがとうございます。 当初は漠然としていましたが、 少しずつではありますが、理解 するようにしています。 目標を持つのも一つの手ですね。

noname#4530
noname#4530
回答No.3

こんばんわ。ぼくもCの勉強してます。 本、URLの紹介ではありませんが、参考になれば之幸いです。 プログラミングの勉強をするにあたって、コンピュータ全般における知識・理解も重要かと思います。そこで、本屋さんでコンピュータ雑誌などを適当に選んで、ヒマなときにでも読んではどうでしょう。(あくまでヒマなときに!根を詰めすぎると、めげるコトがあります。とりあえず、コンピュータの世界の雰囲気というか何かを感じ取れればいいかと思います。) そのコトを通して、自分の勉強していることでどういうコトができるかのイメージがもててくると、意欲も湧いてきます。 たぶん脳内で「脳の働きを活性化させる分泌液」か何かが分泌されるのでしょう!? あと、1冊の本、1つのWebページだけを読んだだけでは解らないこともあるかもしれません。そんなときは、また違った角度から説明してある他の本、Webページを読んでみることをオススメします。(もちろんその解らなかった本に対してもある程度は考えてから) より立体的に理解することができることができるコトがあります。 ぼくもまだまだカンペキではないのですが、参考になりましたでしょうか? それでは、ガムバってください!

TAXAS
質問者

お礼

励ましのお言葉ありがとうございます。 いくつかの本も参照し、Webページでも多数閲覧して、 C言語の基礎中の基礎を理解し始めたところです。 何分、理解するのにも時間も苦労もかかりますが、 分かるように努力しつつ勉強していこうと思います。 どうもありがとうございました。

  • brogie
  • ベストアンサー率33% (131/392)
回答No.2

最近Cについての書籍も沢山出ていますネ。 しかし、ネット上でも、講座が無数にあります。 コンパイラーは何をお使いですか? それにより、紹介の仕方が違いますが・・・ 下に紹介したもの以外に、メーリングリストや掲示板などがあります。 大学講座もどうぞ! http://www.twcu.ac.jp/~misao/m-cprog/ http://mailsrv.nara-edu.ac.jp/~asait/ 課題もして下さい。 http://www.race.u-tokyo.ac.jp/%7Emasuda/jugyo/program99/index.html 晃君のプログラミング入門 http://www.owari.ne.jp/~gguy/ Cリンク集をどうぞ! http://www.cs.kyoto-su.ac.jp/~minaken/Link/Gengo/c.html

参考URL:
http://www.cs.kyoto-su.ac.jp/~minaken/Link/Gengo/c.html
TAXAS
質問者

お礼

解答ありがとうございます。 C言語に関してのリンク集はとても使えてうれしいです。 あんなにたくさんあったのですね。ビックリしました。 コンパーラーやプログラムソフトに関しては全くの素人 なので全く不明です。けど、ちゃんと動作はしてます。 あちこちのリンクをたどってしばらく見てみようと思います。 とても参考になりました。ありがとうございました。

  • sueoka
  • ベストアンサー率38% (24/62)
回答No.1

こんばんわ やはりC言語の基本と言ったら「猫でもわかる・・・」ははずせないでしょう。と言うことで、「猫でもわかるプログラミング」と言うページをお勧めします。 ここはVCを使ってCの基礎から解説してくれているページです。 C言語編から順に見ていけば力も付くかと。 あとはGoogleなどで「C言語 基礎 始める」と言ったキーワードで検索をすると、 いくつかページが出てきます。 頑張って下さい!!

参考URL:
http://203.174.72.111/y_kumei/
TAXAS
質問者

お礼

早速の解答ありがとうございます。 猫でも分かる。。。と言うのはとても魅力的ですね。 今ちょっとですが見てる最中です。 基礎からちゃんと解説してくれてるので理解する のもとても助かります。 どうもありがとうございました。 検索ページでも探してみます。

関連するQ&A

  • C言語を勉強したい。

    C言語でモーター、LED制御等行いたいのですが、参考書等はほとんど私の目的としたものに関係しない分野での参考プログラムです。 また、ロボット等のプログラムはアイコンをならべてプログラムを記述する方法ですが、肝心のC言語での記述は確認できません。 どなたか、モーター、あるいはLED等の制御を行うプログラム及びその解説,等がある参考書、キットなどご存じの方、教えて頂けませんか。 

  • C言語の勉強方法

    最近プログラミング言語という存在を知った程のとにかく初心者の私ですが、独学でC言語を勉強しようと思っています。 しかし参考書を買って始めてみたのはいいのですが、難解なことばかりで直ぐに行きづまってしまいます。 独学で勉強された経験のある方、どのような勉強方法をすればよいかアドバイスお願いします。

  • Windows上でC言語を勉強したい。

    私は現在専門学校でC言語の勉強をしています。 自宅のwindows上でもC言語を学習したいのですが、どうすればいいのかわかりません。 web上の”C言語開発環境~”ソフトをインストールしてみたものの、使い方が全く分からずに困っています。 学校ではfedora7を使って端末からC言語の記述とコンパイルをしています。windows上でも同様にC言語の学習ができないでしょうか?参考になるサイトなどありましたら教えていただけると助かります、よろしくお願いいたします。

  • C言語を学習することに将来性はあるのか

    現在C言語を勉強中なのですが、C言語自体の将来性はどのくらいあるのでしょうか? せっかく勉強するので、できれば将来性のある言語に重点を置いて学習したいと思って います。 よくC言語は枯れた技術だと言われることが多いのですが、これからはC++やJava等が 使われることが多くなり、C言語はあまり使われなくなる言語なのでしょうか? 現状はゲーム分野や組み込み分野ではC言語は現役バリバリに使われていると 聞いているのですが、今後はJavaやC++といった言語がこういった分野でも 主流になってくる(C言語に取って代わる)のでしょうか? C言語自体、あまり将来性がないようであれば、今後勉強するに当たって、 C言語をとことん追求するよりも他の言語に学習の重点を移行させたいと 考えています。 私自身はプログラムを勉強し、将来はゲーム制作あるいは組み込み分野の 開発に携わりたいと思っています。 こういったことに詳しい方がおられましたら、ぜひ教えて頂けないでしょうか?

  • 開発言語を勉強したいのですが

    最近、開発言語を勉強したいと思っているのですが種類が多すぎて困っています VC・C・C++・Java・・・etc これまで開発言語にたずさわったとが全くないのと、完全独学になるので初心者からでも 入りやすいもで、今後役に立つ言語を覚えたいと思っています。 もし、よろしければいい書籍なども教えてもらえると助かります。 乱文ですが、このメッセージを読んだ方回答をよろしくお願いします。

  • VBとC言語について

    こんにちは。 VBとC言語は参考書などで自宅で独学で勉強したら自由にプログラムを書けますか?。 独学で勉強したら何年もかかる気がします。 独学の一年で自由に書けるようになりますか?。

  • C言語で次のことができますか

     C言語は初級者です。ホームページの作成に関しては、全くの素人です。  本はいろいろ持っているのですが、独学で、本とインターネットの情報を駆使してメールフォームの作り方を本格的に勉強しているところです。  メールフォームに、(C言語で)word verificationの機能を付与することはできますか。できれば、本格的なメールフォームを作りたいと思っています。参考サイト・書籍などがあれば、ご教示頂ければ幸いです。よろしくお願いします。

    • ベストアンサー
    • CGI
  • C言語の基礎

    初心者でも、C言語の基礎をしっかり学習 出来る参考書を教えて欲しいです。 IT系の会社に入って、初常駐になりそうなんですが その環境がC言語なんです。 それで勉強しようと思っていますが、参考書が色々あって どれがいいのか迷ってしまって……。 ちなみに、私の言語経験はJAVAを2ヶ月です。 希望としては、基本をしっかり学べる物、 また絵などが多くイメージしやすい物がいいです。 何かいい参考書やWebサイト等ご存知でしたら教えて頂きたいです。

  • C言語を勉強し始めた初心者です

    C言語を勉強し始めて、そろそろ1週間ぐらいになります。勉強は「独習C」という本と、ネットを参考にしながら進めています。 そこで質問なのですが、 getchar()やscanf()などの部分を見ると 「ラインバッファ」が使用されている という記述 があるのですが、概念がよくわかりません。 ググってみたりもしたのですが、いまいち 私自身が納得できる回答が得られないでいます。 よろしければ、初心者にわかるように 説明していただければと思います。 よろしくお願いします。

  • C言語の勉強

    トライアル雇用を採用している会社なんですけど最初の何週間かは会社からプログラミングの基本を教えてもらえるらしいけどそれ以外でも勉強しないと本採用は難しいとのことでC言語の勉強ってパソコン教室でやるのと書籍で勉強するのどっちがいいんでしょうか?