ぼんさい塾

ぼんさいノートと補遺に関する素材や注釈です.ミスが多いので初稿から1週間を経た重要な修正のみ最終更新日を残しています.

Cの文法 (1)

2010-07-31 16:42:28 | 暮らし
「まず覚えるCの文法」

P10: 円の面積
//-------------------------------------
#include <stdio.h>
double pi=3.141592653589793;
int main(void){
   printf("S=%f\n", pi*7*7);
   return 0;
}
//-------------------------------------

P10A: 円の面積(2)
//-------------------------------------
#include <stdio.h>
int main(void){
   double pi=3.141592653589793;
   printf("S=%f\n", pi*7*7);
   return 0;
}
//-------------------------------------

P10B: 円の面積(3)
//-------------------------------------
#include <stdio.h>
int main(void){
   printf("S=%f\n", 
          3.141592653589793*7*7);
   return 0;
}
//-------------------------------------

P12: 四則演算
//-------------------------------------
#include <stdio.h>
int main(void){
   int i=3, k=-2;
   printf("%d, %d, %d, %d, %d\n",
     i+k, i-k, i*k, i/k, i%k
   );
   return 0;
}
//-------------------------------------

まず P10 のプログラム(//--- の内側)をコピーして実行すると,
画面に
    S=153.938040
と表示されることを確認してください.
とりあえず,赤い字の部分はそのまま真似をするものとして,黒い
字の部分について説明します.

「pi」は変数の名前で,「double」は変数 pi が実数型であることを
示します.「=3.141592653589793」は pi の初期値です(#14).
データの型としては,他に「int」(整数型)や「char」(文字型)等が
あります(#13).

・文字 'a', 'b', 'c' を並べた文字列を "abc" で表わします.
  "S=%f\n" も文字列です.文字「'」「"」自体は「\'」「\"」で
  表わします.「\」は「\\」です(#33).
・説明に使うデータ型は(@13),Cの予約語は(@14)参照.
・[#13]の [ ] 内の数値は8ビットデータの16進表示.
・2.998×108 は 2.998E+8 と表わします(@62).

計算結果の表示には printf() 関数を使います.「S=%f\n」の「%f」
の部分に「pi*7*7」の計算結果が埋め込まれます.「\n」は改行の
指示です.

・加算,減算,乗算,除算の演算子は「+」「-」「*」「/」です.
・「printf("面積は %f です.\n", pi*7*7);」に変更すると画面には
      面積は 153.938040 です.
  と表示されます.
・全体の桁数と小数部の桁数を指定して表示することもできます[#17].

P10A, P10B のプログラムの出力(表示画面)も P10 のプログラムと 
同じです.改行の挿入もかなり自由です(#11).

・P10 の pi と P10A の pi は計算機内での扱いが異なります(#14).

次に P12 のプログラムをコピーして実行すると,画面に
    1, 5, -6, -1, 1
と表示されることを確認してください.変数 i,k は[int]
(整数型) なので i/k の値は -1,i%k の値は 1 です(#12).

・"%d, %d, %d, %d, %d\n" の先頭の「%d」から順に i+k, i-k, i*k, 
  i/k, i%k の計算結果が対応します.
・整数と実数の計算結果は実数として扱われます.
・改行位置は(#11)に従うのが無難ですが,長い文字列内で強制的に
  改行することもできます.例えば
    printf("i+k = %d, i-k = %d,"
      "i*k = %d, i/k = %d, i%%k = %d\n",
      i+k, i-k, i*k, i/k, i%k
    );
  です.書式内の「%」を表示するには「%%」とすることに注意(@62). 


Cの文法 (0)

2010-07-31 16:41:01 | 暮らし
「まず覚えるCの文法」

1.データの入出力
2.選択と反復
3.配列とポインタ
4.関数
5.構造体
6.標準ライブラリ

ぼんさいノート「まず覚えるCの文法」はオブジェクト指向
プログラミングの説明に必要な(オブジェクト以前の)予備
知識を与えるために作成した本文 12 頁の資料です.

Cの教科書,参考書と併用して自習・復習することを前提と
して作成しましたが,特定の教科書,参考書は想定せず,当
ブログで少しずつ補足説明を行います.


URL の訂正

2010-07-30 11:23:58 | 日記
記事一覧

progC.pdf [#35-36]に関する「ポインタ C 自分」の Google 検索で見つかる

[1] 自分で調べるCのポインタ - [物理のかぎしっぽ]
    http://hooktail.org/computer/index.php?%BC%AB%CA%AC%A4%C7%C4%B4%A4%D9%A4%EB%A3%C3%A4%CE%A5%DD%A5%A4%A5%F3%A5%BF

のリンク先が誤って変更されています.「自分で調べるC のポインタ」については,以前のリンク先

  http://hooktail.sub.jp/prog/c/CPointerByMyself/

を参照してください.


複素関数の導関数

2010-07-29 16:03:57 | 暮らし
ぼんさいノート一覧

math.pdf [#42]に関する「複素関数 微分」,「正則関数」の Google 検索で

[1] 微分法 - Wikipedia
    http://ja.wikipedia.org/wiki/%E5%BE%AE%E5%88%86%E6%B3%95
[2] 正則関数 - Wikipedia
    http://ja.wikipedia.org/wiki/%E6%AD%A3%E5%89%87%E9%96%A2%E6%95%B0
[3] ときわ台学/複素関数論/正則関数
    http://www.f-denshi.com/000TokiwaJPN/12cmplx/030cmp.html

等が見つかりました.

複素関数の微分係数も実関数の場合と同様に上図左のような式で定義されますが,分母,分子とも複素数なので極限をとる操作を図示するのは困難です.よく知られているように z = x + i y,f(z) = u(x, y) + i v(x, y) とおけば,f(z) が微分可能な点で上図右のコーシー・リーマンの方程式が成立しますが,

  微分の本質は上図下に引用した [1] の1次近似

で,「複素一変数関数を実二変数の二次元ベクトル値関数と同一視することができる」と注記されています.u(a + h) が実二変数のスカラー値関数のときは1次近似を接平面として図示できます.

もちろん f(a + ⊿z) = f(a) + A⊿z + o(|⊿z|) となる A が簡単に見つかればコーシー・リーマンの方程式は無用です.このような1次近似式で考えると,多変数関数の場合へ素直に拡張できます.

蛇足: f(z) = z2 のとき f(a + ⊿z) = a2 + 2 a ⊿z + (⊿z)2 ですから,A⊿z は ⊿z の絶対値を 2|a| 倍し,偏角に arg(a) を加算した値に等しくなります. 
発展: 実変数の通常の関数(初等関数)は定義域を複素数の領域に拡張(解析接続)しても実数のときに成立していた等式(例えば導関数を求める公式)をそのまま適用できます.


非弾性衝突

2010-07-27 20:46:32 | 暮らし
ぼんさいノート一覧

phys-s.pdf (@23%) に関する「非弾性衝突」「反発係数」の Google 検索で

[1] 反発係数 - Wikipedia
    http://ja.wikipedia.org/wiki/%E5%8F%8D%E7%99%BA%E4%BF%82%E6%95%B0
[2] 非弾性衝突と弾性衝突 - 物理学 - 教えて!goo
    http://oshiete.goo.ne.jp/qa/3140788.html
[3] 非弾性衝突で運動量はどうして保存されるのでしょうか? | OKWave
    http://okwave.jp/qa/q6061297.html

等が見つかりました.定性的な説明は[1],消滅する運動エネルギーの定量的な説明は[3] のquadlike さんの回答(ANo.4)が簡潔で分かり易いと思います.

蛇足: 計算が面倒な人はこちらをご覧ください.