2011年2月22日火曜日

苦C勉強会 E.6からE.9まで。

前回と同じく気になった点など。
E.6.1
scanf関数では、整数だけでなく、実数の入力も可能です。
ただし、実数の場合、%lf指定子を使用する必要があります。
printf関数では%f指定子だったので注意して下さい。

printfでは実数を出力する時%fでいいけどdoubleをscanfする時は%lfっていうポイントは抑えてある!
けどdoubleとint以外の型がでてきてないので書式指定子の説明が大幅に少ないのが残念。

E.6.2
おお、scanf駄目だよってかいてる!すごい!今の段階では解決出来ない orz

練習問題6
squareの意味がわからなかった。
#include <stdio.h>

int main(void) {
int price;
scanf("%d", &price);
printf("%d\n", (int)(price - price * 0.1));
printf("%d\n", (int)(price - price * 0.3));
printf("%d\n", (int)(price - price * 0.5));
printf("%d\n", (int)(price - price * 0.8));
}


E.7.1
ワンポイントに書いてあったけど、=と==は非常に間違いやすい。
コンパイラによってはif文の中で代入してると警告してくれたりするらしい。
定数を左側に書いておく事でこのエラーをふせぐ事が出来る。

int a = 10;
if (a = 10) ; // エラーじゃない


int a = 10;
if (10 = a) ; // エラー(10に代入する事は出来ない。)

という感じ。

E.7.2
値がひとしいか調べるには等値演算子を使う。(== !=)
他にも関係演算子(> < >= <=)や論理演算子((かつ &&) (または ||) (否定 !))がある。
Cの論理演算子は短絡評価なんで気をつけよう。

練習問題7
ちょっとプログラム書取の方はスルー

E.8.3
swtichの中に入れていいのってint? char? long?
case文は257個まで使えるとANSI Cで定義されてるってググったら出てきた。
breakかかないとどんどん落ちていくのをfall throughっていうらしいですよ。


練習問題8
プログラム書取スルー
記述式に弱いかも。

E.9.1
C99なら
for(int i = 0; i < 10; i++) { /* something */ }
なんでiなのか?軽くググってWikipedia とか
http://blogs.wankuma.com/jitta/archive/2007/01/25/58555.aspx
がひっかかった。 けど一番納得行くのはこっちの説明だな!
language agnostic - Why are variables "i" and "j" used for counters?
そいうえばなんでfor文3つの欄があって、区切りが;なんだろ。誰か教えてください。

練習問題9
プログラム書取はスルー。一応前に書いた事はある。

2011年2月19日土曜日

苦C勉強会 E.2からE.5まで。

箇条書きですみません。気になった事等です。

E.2
  • インデントはタブ派、スペース派、両方使う派、インデントしない派がいるけどCではタブ使うのが慣習なの?
  • コメントの書き方はC99からは/**/で囲う以外に//も使えるけど、スルー?
  • 練習問題2-2-1
    int main(void) {
    }
  • 練習問題2-3-1 読む時の理解を助けるため。ソースコードだけでは伝わらない書き手の意図を伝えるため。
  • #include等は疑似命令(プログラムではない)、プリプロセッサで処理される。
  • #include、#define等の疑似命令は;を行末に付ける必要がない
  • プリプロセス→コンパイル→アセンブル→リンクの流れ?(誰か教えてください)
E.3
E.4
E.5
  • かっこいい。これ、ほとんどの入門書では、数値を入れておく箱と説明しますが、
    こんなのは、誰もコンピュータに触ったことがなかった時代の説明方法でしょう。
    コンピュータをそれなりに使っている人には、メモリと言った方がすっきりします
  • 「メモリといったほうがすっきり」からのロッカーの説明w
  • C99では~の説明をみて時代を感じるなど。
  • staticでないローカル変数を宣言した場合、初期値は不定。
  • グローバル変数やstaticな変数は0で初期化される。C FAQ 1
  • 問題、こうといちゃった。変数使うようにしなきゃ。
    #include <stdio.h>

    int main(void) {
    printf("%d\n", (int)(1000 - (198 + 138 * 2) * 1.05));
    }

2011年2月17日木曜日

苦C勉強会 AからE.1.3(練習問題1)まで。

はじまったんで色々書く。
気になる事とか。
  • C言語じゃなくてCじゃないの?
  • K&R C/C89/C99/C1xとCにも色々あるけど、どれが対象なの?

何もしないプログラム
http://9cguide.appspot.com/01-01.html

  • 最初に実行されるとこをエントリーポイントっていうらしい
  • エントリーポイントは変更出来る。なのでmainからはじまらない場合もあるらしい。gccの場合は-eオプションで指定出来る。デフォだと_startからmainが呼ばれるらしい。-eでhogeを指定したらhogeから始まる。hogeの中でmain呼ばない事も出来る。(Linuxでしか確認しておらず)
    http://stackoverflow.com/questions/3379190/avoiding-the-main-entry-point-in-a-c-program
  • C99ではmain関数でreturn文を書かなかった場合0を返すと規定されてるからint main(void){}でいいんじゃない?

2011年2月1日火曜日

Macのオススメ理由等々

学生向けのAdobe製品の価格表
http://www.adobe.com/jp/education/purchasing/ste/price/
* AdobeのPremiere Pro CS5が33,075円のところ2月14日までキャンペーンで28,113円
* Premiere Elements 9が7,140円のところキャンペーン期間なら6,069円

Premiere Pro CS5 と Premiere Elements 9 の違いは何ですか
http://kb2.adobe.com/jp/cps/440/4403.html



以下Macオススメ理由
* Apple謹製の動画編集ソフトiMovie 1,700円
* Final Cut Express 4、21,400円

MacBook Pro 15インチ
Core i5 2.4GHz、メモリ4GB、HDD 320GB、NVIDIA GeForce GT 330M (256MB)
教職員割引で148,800円

iMacの21.5インチ
Core i3 3.2GHz、メモリ4GB、HDD 1TB、ATI Radeon HD 5670グラフィックプロセッサ(512MB)
教職員割引で124,800円

一応iMacの方がいい気がする。ノート希望らしいけど。

動画編集以外にもワープロとか使うでしょう。
MS Officeを買うならWindowsより高くつくけどApple謹製のワープロ・表計算・プレゼンテーションソフト1つ1700円、全部買っても安い
生徒会用途ならこれで十分、動画編集が目的ならワープロとかはおまけ

* Windowsみたいにアップデートをあてる必要はある。
* MacだからWindows向けのソフトはそのまま動かない。なので学生がゲームいれて遊ぶとか変なソフトを入れることで問題がおきる事がWindowsよりは少ないだろう。
* 先生が管理者権限もてばソフトウェアインストールするのにも管理者権限必要だし安心
* 外付けHDDがあればTimeMachine(優秀なバックアップ機能)が使えるし新マシンへ移行も楽

iMac 124,800円
ワープロ表計算プレゼンテーション 1,700円 * 3本 = 5,100円
Final Cut Express 4、21,400円
しめて 151,300円

他にもDVI変換のコネクタとか必要な気はするけどどうだろ…、プレゼンとか入れなければ大丈夫じゃないでしょうか。
ああ、あともう1ついいところ: 写真管理iPhotoもついてくる。