2008年5月31日土曜日

第4章 プログラムの流れの繰り返し (その3)

体調をくずして、ちょっとお休みしてました。
今日から徐々に再開!


  • 4-3 for文

    • whileとforは常に書き換え可能。



これでfor文がつかえるようになった!

2008年5月18日日曜日

第4章 プログラムの流れの繰り返し (その2)

こつこつ。


  • 4-2 while 文

    • 'A'は文字定数。シングルクォーテーションは文字定数のためのもの。文字列に使うのは処理系依存。
    • 前置・後置という演算子の記法によって、式の評価ルールがかわるのか。なるほど。

    とりあえず、ここまで。
    所要時間1.5H。

2008年5月17日土曜日

第4章 プログラムの流れの繰り返し


  • 4-1 do 文
    まあdo文自体はシンプルなので、それのいくつかの例をやりながら、初期化子や演算子に触れている。
    後置の演算子って変数にくっついていないと駄目なのかな? ためす。お、くっつけなくても動いた。
    これら、構文糖衣だと思うが、これらの構文糖衣がCの何かを自然に表現できるのだろうか。それとも省力化のための略記なだけなのか。

    とりあえず、ここまで。
  • 4-2 while 文
  • 4-3 for 文
  • 4-4 多重ループ
  • 4-5 プログラムの要素と書式

2008年5月10日土曜日

第3章 プログラムの流れの分岐 (続き)


  • 条件演算子から再開。

    • そうか。ブロックってそれ全体で一つの文なんだ。
    • まあ、文がなんだかは直感的な理解しかないんだけど。

  • 3-2 switch文

    • emacsで(c-set-style "k&r")としていると、

      switch (num % 3) {
      case 0 : puts("その数は3で割り切れます。"); break;
      case 1 : puts("その数を3で割った余りは1です。"); break;
      case 2 : puts("その数を3で割った余りは2です。"); break;
      }

      switchとcaseの頭がそろう。なんかCのコーディングスタイルに興味がでてきた。
      コーディングスタイルの光景
      K&Rの方がちょっと見易いかな。
    • なんでここでcase文の構文図説明が無いんだろ?
    • case * :とかdefault : とかはラベルというものでプログラムの飛び先を表すものらしい。
    • switch文って結構複雑。



これで3章まで完了。写経の日々。きっと地力があがるはず!

2008年5月9日金曜日

第3章 プログラムの流れの分岐


  • 3-1 if文

    • Cのifは非0。
    • 「C言語の式は、(一部の例外を除くと)必ず、その値を評価することができます」なるほど。すると何が式かがポイントか。
    • 構文図っておもしろいやり方だ。"("は区切り子というものなんだ。
    • true,falseはリテラルとしては存在しなくて、1,0がその役割なんだろうな。たぶん。
      ・・・
      以降は明日。

第2章 演算と型


  • 2-1 演算

    • ふと思ったのだが、int main(void)のようにシンボル?の後ろが(だったら関数定義でそうじゃなかったら変数定義というシンタックスって結構すごいような。
    • おお! =は二項演算子だったんだ。

  • 2-2 型

    • doubleの時、dx / 2.0となってるけど、dx / 2でも動く。どういうルールなのかな。
    • お、オブジェクトだ。。。こんなところで出てくるとは。オブジェクトは変数なの???
    • dx /2 で2は2.000000に自動格上げされるのか。
    • 式(expression)の中などに表われる2とか1.56とかを定数というんですね。
    • おお。(double)というのは演算子なんだ。オペランドとくっつけてもくっつけなくても動く。

2008年5月7日水曜日

第1章 まずは慣れよう


  • 1-1 まずは計算結果を表示

    • M-x compileで、
      Compile command: gcc -g -Wall list0101.c
      で翻訳。shellで./a.out。お、動いた。
    • return(0)じゃなくて、return (0)なんだ。
    • 日本語がprintfでちゃんと表示できるか心配したけど、大丈夫だった。
    • う、文字列リテラルで全角文字を使うのは規則違反、とな。
    • Emacsでは警報が^G^G^G、とな。
      端末のベルがONじゃなかった。shellからなら、onにすればaudio/visual双方機能した。
      Emacsはonにしてもだめ。

  • 1-2 変数

    • 変数は箱。
    • int vx; int型の箱をつくる。
    • =は代入。


    これで一章はおしまい。
  • 1-3 読込みと表示

    • scanfで端末から文字列を読みこんで、変換した数値を変数にsetする。なぜ変数に&がつくのか?
    • なんで、printfがあるのに、putsもあるのかなぁ。単なる構文糖衣とは思えない。

環境

環境はEmacsにしました。
cc-modeなようです。
emacsの設定はここを参考にしました。
CC-mode の簡単な使い方
※defunは不要なので、lambdaにしました。

のんびりC言語

いろいろな言語をつまみぐいするのは、あまりよくないと思いますが、Common Lisp一本槍で勉強するよりも、いくつかの言語は知っておいた方が逆に早くCommon Lispを習得できるような気がしてきました。

そこで、まずハードウエアに近いところということで、C言語を勉強します。
C言語はほとんどやったことがないので、丁寧な入門書を選びました。

散歩する気分でのんびり学んでいきたいと思います。