] > Training typing, C compiler

第 6 回 タイプ練習、C コンパイラ

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

6-1. キーボード入門

本日は増田法と言う方法により、英文タイプのタッチタイプ(ブラインドタッ チ)を覚えます。この方法は動き易い指から順に練習をすることによって、タッ チタイプを早く覚えることができます。

なお、市販のタイプ練習ソフトウェアを選ぶ際は、失敗を強調しないよう な練習法を選びましょう。 失敗した時ブザーが鳴ったり画面が光ったりと、失敗を強調するタイプのソフ トウェアでは、強調された事すなわち失敗したことを良く学習する事になり、 上達しづらいと思います。

準備

Meadow などのエディタを開き、文字を入力できるようにします。 右手の中指はk、左手の中指は d が乗るようにキーボードに指を置きます。 自然に右手は、人差指が j、中指は k、薬指が l、小指が ; の上に置かれま す。 左手は、人差指が f、中指は d、薬指は s、小指が a の上に置かれます。 この練習法ではこの指の位置が基本になります。基本となる指の位置をホー ムポジションといいます。

以下の練習では指示通りキーを打ちます。但し、キーボードの字を見てはいけ ません。画面をみるようにして下さい。 また、区切りとして、スペースキーや Enter キーを適宜押して下さい。 スペースキーは右手の親指で、 Enter キーは右手の小指で押して下さい。 また、間違えても消してはいけません。気を落ち着けて打ち直して下さい (間違いを訂正すると、訂正している状況を手が覚えてしまい、間違いを練習 することになってしまいます)。

右手の練習

指の配置表: 中指、人差指、薬指、小指の順、中段、上段、下段の順

右手中段の練習

  1. 右手中指中段を押すと、「k」が表示される。
    kk 2k 3k 4k 5k
    を打つと画面には
    kk jk hk lk ;k
    が表示される。
    kk 2k 3k 4k 5k 6k 7k 8k 9k 10k 11k 12k 13k 14k 15k
    を打つと画面には
    kk jk hk lk ;k ik uk yk ok pk ,k mk nk .k /k
    が表示される。
  2. 右手人差指中段を押すと、「j」が表示される。
    kj jj 3j 4j 5j
    を打つと画面には
    kj jj hj lj ;j
    が表示される。
    kj jj 3j 4j 5j 6j 7j 8j 9j 10j 11j 12j 13j 14j 15j
    を打つと画面には
    kj jj hj lj ;j ij uj yj oj pj ,j mj nj .j /j
    が表示される。
  3. 右手人指指を開いて中段を押すと、「h」が表示される。
    kh jh hh 4h 5h
    を打つと画面には
    kh jh hh lh ;h
    が表示される。
    kh jh hh 4h 5h 6h 7h 8h 9h 10h 11h 12h 13h 14h 15h
    を打つと画面には
    kh jh hh lh ;h ih uh yh oh ph ,h mh nh .h /h
    が表示される。
  4. 右手薬指中段を押すと、「l」が表示される。
    kl jl hl ll 5l
    を打つと画面には
    kl jl hl ll ;l
    が表示される。
    kl jl hl ll 5l 6l 7l 8l 9l 10l 11l 12l 13l 14l 15l
    を打つと画面には
    kl jl hl ll ;l il ul yl ol pl ,l ml nl .l /l
    が表示される。
  5. 右手小指中段を押すと、「;」が表示される。
    k; j; h; l; ;;
    k; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15;
    を打つと画面には
    k; j; h; l; ;; i; u; y; o; p; ,; m; n; .; /;
    が表示される。

練習

kk jk hk lk ;k
kjhl; kjhl; hjkl; ;lkjh

右手上段の練習

指の配置表: 中指、人差指、薬指、小指の順、中段、上段、下段の順
  1. 右手中指上段を押すと、「i」が表示される。
    ki ji hi li ;i
    ki ji hi li ;i ii 7i 8i 9i 10i 11i 12i 13i 14i 15i
    を打つと画面には
    ki ji hi li ;i ii ui yi oi pi ,i mi ni .i /i
    が表示される。
  2. 右手人差指上段を押すと、「u」が表示される。
    ku ju hu lu ;u
    ku ju hu lu ;u iu uu 8u 9u 10u 11u 12u 13u 14u 15u
    を打つと画面には
    ku ju hu lu ;u iu uu yu ou pu ,u mu nu .u /u
    が表示される。
  3. 右手人差指を開いて上段を押すと、「y」が表示される。
    ky jy hy ly ;y
    ky jy hy ly ;y iy uy yy 9y 10y 11y 12y 13y 14y 15y
    を打つと画面には
    ky jy hy ly ;y iy uy yy oy py ,y my ny .y /y
    が表示される。
  4. 右手薬指上段を押すと、「o」が表示される。
    ko jo ho lo ;o
    ko jo ho lo ;o io uo yo oo 10o 11o 12o 13o 14o 15o
    を打つと画面には
    ko jo ho lo ;o io uo yo oo po ,o mo no .o /o
    が表示される。
  5. 右手小指上段を押すと、「p」が表示される。
    kp jp hp lp ;p
    kp jp hp lp ;p ip up yp op pp 11p 12p 13p 14p 15p
    を打つと画面には
    kp jp hp lp ;p ip up yp op pp ,p mp np .p /p
    が表示される。

練習

kk jk hk lk ;k ik uk yk ok pk
kook joy hook look iou uhhuh you ohio pull hiphop

右手下段の練習

指の配置表: 中指、人差指、薬指、小指の順、中段、上段、下段の順
  1. 右手中指下段を押すと、「,」が表示される。
    k, j, h, l, ;,
    k, j, h, l, ;, i, u, y, o, p, ,, 12, 13, 14, 15,
    を打つと画面には
    k, j, h, l, ;, i, u, y, o, p, ,, m, n, ., /,
    が表示される。
  2. 右手人差指下段を押すと、「m」が表示される。
    km jm hm lm ;m
    km jm hm lm ;m im um ym om pm ,m mm 13m 14m 15m
    を打つと画面には
    km jm hm lm ;m im um ym om pm ,m mm nm .m /m
    が表示される。
  3. 右手人差指を開いて下段を押すと、「n」が表示される。
    kn jn hn ln ;n
    kn jn hn ln ;n in un yn on pn ,n mn nn 14n 15n
    を打つと画面には
    kn jn hn ln ;n in un yn on pn ,n mn nn .n /n
    が表示される。
  4. 右手薬指下段を押すと、「.」が表示される。
    k. j. h. l. ;.
    k. j. h. l. ;. i. u. y. o. p. ,. m. n. .. 15.
    を打つと画面には
    k. j. h. l. ;. i. u. y. o. p. ,. m. n. .. /.
    が表示される。
  5. 右手小指下段を押すと、「/」が表示される。
    k/ j/ h/ l/ ;/
    k/ j/ h/ l/ ;/ i/ u/ y/ o/ p/ ,/ m/ n/ ./ //
    を打つと画面には
    k/ j/ h/ l/ ;/ i/ u/ y/ o/ p/ ,/ m/ n/ ./ //
    が表示される。

練習

kk jk hk lk ;k ik uk yk ok pk ,k mk nk .k /k
moon nippon only my him
In Jun., I look in on you on Mon.

左手の練習

左手中段の練習

指の配置表: 中指、人差指、薬指、小指の順、中段、上段、下段の順
  1. 左手中指中段を押すと、「d」が表示される。
    dd 2d 3d 4d 5d
    を打つと画面には
    dd fd gd sd ad
    が表示される。
    dd 2d 3d 4d 5d 6d 7d 8d 9d 10d 11d 12d 13d 14d 15d
    を打つと画面には
    dd fd gd sd ad ed rd td wd qd cd vd bd xd zd
    が表示される。
  2. 左手人差指中段を押すと、「f」が表示される。
    df ff 3f 4f 5f
    を打つと画面には
    df ff gf sf af
    が表示される。
    df ff 3f 4f 5f 6f 7f 8f 9f 10f 11f 12f 13f 14f 15f
    を打つと画面には
    df ff gf sf af ef rf tf wf qf cf vf bf xf zf
    が表示される。
  3. 左手人差指を開いて中段を押すと、「g」が表示される。
    dg fg gg 4g 5g
    を打つと画面には
    dg fg gg sg ag
    が表示される。
    dg fg gg 4g 5g 6g 7g 8g 9g 10g 11g 12g 13g 14g 15g
    を打つと画面には
    dg fg gg sg ag eg rg tg wg qg cg vg bg xg zg
    が表示される。
  4. 左手薬指中段を押すと、「s」が表示される。
    ds fs gs ss 5s
    を打つと画面には
    ds fs gs ss as
    が表示される。
    ds fs gs ss 5s 6s 7s 8s 9s 10s 11s 12s 13s 14s 15s
    を打つと画面には
    ds fs gs ss as es rs ts ws qs cs vs bs xs zs
    が表示される。
  5. 左手小指中段を押すと、「a」が表示される。
    da fa ga sa aa
    da fa ga sa aa 6a 7a 8a 9a 10a 11a 12a 13a 14a 15a
    を打つと画面には
    da fa ga sa aa ea ra ta wa qa ca va ba xa za
    が表示される。

練習

dd fd gd sd ad
kk jk hk lk ;k
dd fd gd sd ad
dad fad gas sad as
dig fall going slash and
I am saying Hi, and shaking hands.
If you go shopping, go as soon as you finish planing.

左手上段の練習

指の配置表: 中指、人差指、薬指、小指の順、中段、上段、下段の順
  1. 左手中指上段を押すと、「e」が表示される。
    de fe ge se ae
    de fe ge se ae ee 7e 8e 9e 10e 11e 12e 13e 14e 15e
    を打つと画面には
    de fe ge se ae ee re te we qe ce ve be xe ze
    が表示される。
  2. 左手人差指上段を押すと、「r」が表示される。
    dr fr gr sr ar
    dr fr gr sr ar er rr 8r 9r 10r 11r 12r 13r 14r 15r
    を打つと画面には
    dr fr gr sr ar er rr tr wr qr cr vr br xr zr
    が表示される。
  3. 左手人差指を開いて上段を押すと、「t」が表示される。
    dt ft gt st at
    dt ft gt st at et rt tt 9t 10t 11t 12t 13t 14t 15t
    を打つと画面には
    dt ft gt st at et rt tt wt qt ct vt bt xt zt
    が表示される。
  4. 左手薬指上段を押すと、「w」が表示される。
    dw fw gw sw aw
    dw fw gw sw aw ew rw tw ww 10w 11w 12w 13w 14w 15w
    を打つと画面には
    dw fw gw sw aw ew rw tw ww qw cw vw bw xw zw
    が表示される。
  5. 左手小指上段を押すと、「q」が表示される。
    dq fq gq sq aq
    dq fq gq sq aq eq rq tq wq qq 11q 12q 13q 14q 15q
    を打つと画面には
    dq fq gq sq aq qq rq tq wq qq cq vq bq xq zq
    が表示される。

練習

ed rd td wd qd
dd fd gd sd ad
kk jk hk lk ;k
eat rat tag war qatar
english rolling translation white quantity
We take this lesson after we finish a meal.
We are training typing.

左手下段の練習

指の配置表: 中指、人差指、薬指、小指の順、中段、上段、下段の順
  1. 左手中指下段を押すと、「c」が表示される。
    dc fc gc sc ac
    dc fc gc sc ac ec rc tc wc qc cc 12c 13c 14c 15c
    を打つと画面には
    dc fc gc sc ac ec rc tc wc qc cc vc bc xc zc
    が表示される。
  2. 左手人差指下段を押すと、「v」が表示される。
    dv fv gv sv av
    dv fv gv sv av ev rv tv wv qv cv vv 13v 14v 15v
    を打つと画面には
    dv fv gv sv av ev rv tv wv qv cv vv bv xv zv
    が表示される。
  3. 左手人差指を開いて下段を押すと、「b」が表示される。
    db fb gb sb ab
    db fb gb sb ab eb rb tb wb qb cb vb bb 14b 15b
    を打つと画面には
    db fb gb sb ab eb rb tb wb qb cb vb bb xb zb
    が表示される。
  4. 左手薬指下段を押すと、「x」が表示される。
    dx fx gx sx ax
    dx fx gx sx ax ex rx tx wx qx cx vx bx xx 15x
    を打つと画面には
    dx fx gx sx ax ex rx tx wx qx cx vx bx xx zx
    が表示される。
  5. 左手小指下段を押すと、「z」が表示される。
    dz fz gz sz az
    dz fz gz sz az ez rz tz wz qz cz vz bz xz zz
    を打つと画面には
    dz fz gz sz az ez rz tz wz qz cz vz bz xz zz
    が表示される。

練習

cd vd bd xd zd
dd fd gd sd ad
kk jk hk lk ;k
cat vertex bear extra zebra
congratulations violence business extraordinary zoology
Now, we have finished learning the location of each keys.
Then, let us exercise typing a little.
Type abcdefghijklmnopqrstuvwxyz.
Did you finish typing above examples?
Ok, then you may type anything freely.
Write what you did last Sunday.

6-2. 表計算の宿題の解説

演習6-1

二次方程式 ax2 + bx + c = 0 ( a0 ) の実根を求めるシートを作りなさい。 もし実根が無かったら「解なし」と表示しなさい。 なお、平方根を求める関数は SQRT() とします。 そして次の問題を解きなさい。

  1. 2x2 - 3x + 1 = 0
  2. 4x2 + 4x + 1 = 0
  3. x2 + x + 1 = 0
ヒント
ABCDEF
1'a'b'c'判別式の値
2102030=B2*B2-4*A2*C2大きい方の解
または重解
または"解なし"
小さい方の解
または表示しない

解は最大 2 個ありますので、解を計算するセルは 2 個用意します。 一個目のセルは次のような働きをするようにします。

D>0 の時
大きい方の根の表示
D=0 の時
重根の表示
D<0 の時
「解なし」の表示

一方、二個目のセルは次のような働きをするようにします。

D>0 の時
小さい方の根の表示
D=0 の時
何も表示しない
D<0 の時
何も表示しない
解答

E2 は D>0 の時 (-b+D)/2a 、 D=0 の時 -b/2a 、 D<0 の時 "解なし" が出力されるようにするため、 =IF(D2>0;(-B2+SQRT(D2))/2/A2;IF(D2=0;-B2/2/A2;"解なし")) を入れる。 但し、 D=0 の時、 - b+D 2a = - b 2a より、D>0 と D=0 の条件をまとめて、 =IF(D2>=0;(-B2+SQRT(D2))/2/A2;"解なし") を入れても良い。 一方、同様に F2 には =IF(D2>0;(-B2-SQRT(D2))/2/A2;"") を入れる。

6-3. 数列

数列とは 1, 2, 3, 4 などの数の列を言います。 数学では記号を使って数列を表す場合、 a1, a2, a3, ... ak と、変数に添字をつけて表します。 数列を生成するには、全てを具体的に書き上げる他に、 第 k 項である ak をどうやって計算するかを与える方法があります。

ここでは、数の列を生成する方法として、直前の値を使用するような生成 法を考えます。 つまり、 ak ak-1 を使用して計算する方法です。 この定義方法は漸化式と呼ばれ、プログラミングでは頻繁に用い られる考え方です。

例えば、 1,2,3,4,5… という列を生成することを考えます。 これは直前の値に対して 1 を足すことで生成できます。 数学的には ak = ak-1 + 1 と書きます。 但し、一番最初の値はこれだけでは計算できないので具体的に a1 = 1 と与えます。 これを初項と言います。 まとめると、漸化式を与えるには、 次の項目を与える必要があります。

つまり、 1, 2, 3, 4, … を生成する漸化式は a1=1 ak = ak-1 + 1 と表せます。

ではこの考えを使って実際に表計算ソフトで数列を発生させましょう。 A1 には 1 を入れ、 A2 には =A1+1 を入れます。

A
11
2=A1+1

このようにすると、 A2 には 2 が表示されます。 そして、 A2 を選択し、ハンドルを下に引っ張ると、 A3, A4 には次のように コピーされます。

A
11
2=A1+1
3=A2+1
4=A3+1

表示上は 1,2,3,4 と確かに期待していた通りの数列が得られることになりま す。

演習6-2

次の数列を直前のセルの参照のみを使って生成しなさい。

  1. 10,9,8,7,6,5
  2. 0,2,4,6,8,10
  3. 1,3,5,7,9,11
  4. 1,2,4,8,16,32

演習6-3

数列の和を漸化式で求めることを考えます。 つまり、 Sk = a1 + a2 + ... + ak を求めます。 もし、 ak-1 までの和 Sk-1 が求まっていたとしたら、これに ak を足せば和 Sk が求まることになります。 つまり漸化式を書くと次の通りになります。

これを利用して、(SUM 関数を使用せずに)表計算で和を求めてみましょう。 次の表で和を求めなさい。

AB
15=A1
22=B1+A2
37?
41?
5=SUM(A1:A4)

演習6-4

次の漸化式から得られる列をフィボナッチ数列と言います(直前だけではな く二つ前の値も使用していますが、これも漸化式になります)。

表計算ソフトを使い、フィボナッチ数列を計算する表を作り、 a10 を求めなさい。

演習6-5

n個のなかから k 個を選ぶ選び方の数を nCk と書くことにします。 例えば、 4 個の中から 2個を選ぶ選び方は 4C2 と書き、この場合 6 (通り)になります。 この値は次のように考えると漸化式を立てることができます。 全体で n 個あるものの中から k 個を選ぶことを考え ます。 その時、特定の 1 個に着目します。これを選んだ場合、残りの n-1 個の中から k-1 個を選ぶことになります。 一方、これを選ばなかった場合、残りの n-1 個の中から k 個を選ぶことになります。 全体の選び方はこれらの和になるので、 nCk = n-1 Ck-1 + n-1 Ck になります。

これを利用して表計算ソフトを使用し、 10C4 を求めましょう。

ABCD
11
2=A1+B1=B1+C1
3=A2+B2=B2+C2=C2+D2

B1 には 0 個のものから 0 個のものを取り出す取り出し方 0C0 = 1 が入っています。 また、何も入ってないセルの値は 0 と扱ってくれるので、上のように何 も入ってないセルを指定してもエラーにならず正しく値を求めてくれます。

註: できあがった三角形状の表をパスカルの三角形と言います。

演習6-6

以下のようなパターンを表計算ソフトにおいてコピーすればするだけ表示でき るようにしなさい。

A
1
2○○
3○○○

演習6-7

演習6-7において、A1 の文字を○から別の文字に変えたら、すべての欄も 同時に○がすべて置き換えた別の文字に替わるようにしなさい (演習6-7で既にそのように作っているのであれば、同じ答を回答しなさい)。

A
1
2○○
3○○○
A
1×
2××
3×××

6-4. エクスプローラの設定変更

MS-Windows では、ファイル名の最後にファイルの 属性に関する記号として、ピリオドに続き 3 文字以内の 文字を付加してファイルの管理をします。 これを拡張子と言います。 しかし、初期設定時には拡張子が見えないように設定されています。 一方、 MS-Windows では、システムに関わるが一般ユーザに関係ないファイル を表示しないようになっています。 これらの機能は、特定の業務をこなすだけで様々なファイルを作成しないユー ザーにとっては有用です。 しかし、プログラミングをしたり、様々なファイル形式を取り扱う立場では拡張子 を意識しないといけないので、基本的には全ての情報は隠されない方が望まし いです。 そこで、次の手順でエクスプローラの設定を変更します。

  1. 「スタート」を右クリックして「エクスプローラ」を選択します。
  2. 「ツール」→「フォルダオプション」を選択します。
  3. 「表示」タブを選びます。
  4. フォルダオプションの設定例 「ファイルとフォルダの表示」では「すべてのファイルとフォルダを表示 する」を選び、「登録されている拡張子は表示しない」のチェックを外します。
  5. 「すべてのフォルダに適用」を押します。

6-5. C言語とは

機械語

コンピュータは CPU がメモリ上のプログラムを読んで実行することで動作し ます。 CPU が実行できるプログラムを「オブジェクトコード」と呼びます。 オブジェクトコードを書くためのルールを「機械語」と言います。 機械語はコンピュータが解釈するため、0 と 1 の組合せ(2進法)により記述さ れます。 機械語を使って人間が直接プログラムするのに、直接二進数で表された数一つ 一つに対して割り当てられた機能を対応させて覚えるのは大変です。 そこで、各二進数の列に割り当てられた機能に対応するような覚えやすい記号 (mnemonic ニーモニック)を割り振ってプログラムを組み、完成したニーモニッ クによるプログラムに対して、後でそれを 0 と 1 の列に変換します。 たとえば00000001 11011000という列は「AX レジスタに BX レジスタの値を 足す」という命令ですが、これに ADD AX,BX という記号を割り当 てます。 そして、プログラムを組む時は一旦 ADD AX,BX と記述しておき、 プログラムが完成した時にこの部分を00000001 11011000に戻すこ とで機械語のプログラムを完成させます。 このように CPU の機能に対応したニモニックを用いたプログラミングのルー ルを アセンブリ言語 と言います。 そしてアセンブリ言語で作られたプログラムを機械語にする作業をアセ ンブルと言います。 人間でも機械語に直せますが(これをハンドアセンブルと言います)、 もちろんコンピュータのプログラムでも直せます。 記号を機械語に直すプログラムをアセンブラと言います。

高級言語

アセンブリ言語でプログラムを書く際、次のようなことが問題になります。

  1. CPU の仕組みを知らないと書くことができない
  2. コンピュータのハードウェアの構成を理解し、メモリやプログラムの管理 を自分でしなければならない
  3. 特定のことをさせる時、毎回複数の同じ手順が必要になる場合がある
  4. そもそも CPU の計算のし方と、人間の計算のし方が違う

このような問題点を解決するために、(1)機械語とは直接関係ない人間の記述しや すい記述法でプログラムを書き、(2)それをコンピュータが理解する仕組みを 実現する必要があります。

高級言語

機械語とは直接関係ない人間の記述しやすい記述法を高級言語と 言います。 代表的な高級言語には次のようなものがあります。

本講義では次のような理由から C 言語を学習します。

  1. インターネットなどでもっとも利用されている
  2. 他の言語を学習する際の基礎になる
  3. コンピュータの動作原理と言語仕様がよく対応している

処理系

高級言語をコンピュータが理解する仕組みを処理系と言います。 処理系には二種類あります。

解釈系(インタプリタ)

高級言語で書かれたプログラムを読んで解釈しながら動作するプログラムを インタプリタと言います。 代表的なインタプリタは BASIC, LISP, Prolog などがあります。 長所は、複雑で高度な機能を持ち、開発時に部分的にプログラムを実行できる など、開発コストが低い事があげられます。 一方短所は、完成したプログラムを実行するにも常にインタプリタ自身が必要であ り、また実行速度が遅い事が挙げられます。

翻訳系(コンパイラ)

高級言語で書かれたプログラムを機械語に翻訳するプログラムをコンパイ ラと言います。 高級言語で書かれたプログラムをソースプログラム原始プロ グラムと呼び、翻訳されたプログラムをオブジェクトプログラム と言います。 長所は、直接コンピュータが実行できるプログラムを作成できる事と、実行速 度がインタプリタと比較して速い事が挙げられます。 一方短所はプログラム中に一箇所でも誤りがあるとプログラムを実行できない ため、開発コストがかかる(工夫しなければならない)ことが挙げられます。

6-6. MinGW プロジェクトとGCC

MinGW プロジェクトとは

MinGW プロジェクトでは GNU のフリーソフトウェアとして Windows 上の開発 環境を開発しています。 MinGW に含まれるプログラムのライセンスは GPL に従いますが、コンパイラ が出力するプログラムはマイクロソフトのライブラリを使用します。 したがって MinGW を利用して開発したソフトウェアは GPL 以外のライセンス でも公開できます。 gcc などのコンパイラの他にデバッガやアセンブラも含まれています。

Cygwin も Windows 上の開発環境ですが、 UNIX との互換性を高めるため、 GPL ライセンスのライブラリを使用します。 Cygwin では UNIX 用のプログラムが簡単に動きますが、公開する際は GPL ラ イセンスに基づき、自由なコピーを認め、ソースコードを提供する必要があり ます。

インストール

本講義では C言語のコンパイラを使用します。 始めに MinGW-jp をインストールして下さい。

  1. MinGW-jp を授業用サーバーからダウンロードする
  2. lhasa で解凍したものを c:\ に移動する。
  3. 起動用バッチファイル mingw-jp.bat をデスクトップ上にダウンロードす る。

インストールした MinGW を使用するには、 起動用バッチファイル mingw-jp.bat を開きます。

このパッケージをインストールすることで利用できるコマンドは次の通りです。 (c:\mingw-jp\bin )

gcc:
C コンパイラ(構造型言語)
g++,c++:
C++ コンパイラ(オブジェクト指向言語)
as:
アセンブラ
windres:
Windows 用のリソースコンパイラ

gcc の使い方

本講義では、次のようにしてプログラムを作成、実行させます。

  1. Meadow などのテキストエディタで XXX.c という名前のソースファイルを 作る(例えばファイル名 test.c など)。
  2. 起動用バッチファイル mingw-jp.bat を開くことで出るコマンドプロンプトで gcc にソースファイルを読ませ、オブジェクトコードを作る。
    gcc test.c
    
  3. a.exe というオブジェクトコードができるので、それを次のようにして実 行する。
    .\a.exe
    

プログラムの作成とコンパイル、実行

例6-1

次のプログラムを作り、コンパイルして実行するまでの手順を示します。

/* This program prints "Hello World!". */
#include <stdio.h>
main(){
  printf("Hello World!\n");
}
  1. Meadow で「Files → Open File」を選び、 hello.c というファイル名を 指定します(ファイル名は最後に .c がつけば何でも良い)。
  2. ブラウザ上で上のプログラムをマウスでドラッグし、「編集→コピー」を 選びます。 そして、 Meadow の画面で「Edit → Paste」を選び、プログラムをコピーし ます。
  3. Meadow で「Files → Save Buffer」を選びセーブします。
  4. mingw-jp.bat を開いてコマンドプロンプトを動かします。
  5. gcc hello.cと打つと、 hello.c というプログラムがコンパ イルされ、オブジェクトファイル a.exe ができます。 ここでエラーが出た場合は、エラーの内容を良く読んで対処して下さい。
  6. .\a.exe と打つとプログラムが実行されます。

演習6-8

上記のプログラムを改造して、「Hello New World!」を表示するプログラムを 作りなさい。

演習6-9

次のプログラムをコンパイル、実行しなさい。

#include <windows.h>

int WINAPI WinMain(HINSTANCE progIns, HINSTANCE prevIns, LPTSTR cmdLine, int cmdShow)
{
    MessageBox(NULL, TEXT("Hello World!"), TEXT("Hello"), MB_OK);
    return 0;
}

演習6-10

演習6-9を改造して、画面に「Hello New World!」が表示されるようにしな さい。

演習6-11

次のプログラムを読んで、このプログラムが何をするか予想しなさい。 そして、プログラムをコンパイル、実行して、予想と一致するか調べなさい。

#include <stdio.h>
main()
{
  float a,b,c;
  a=2.0; b=3.0;
  c= a+b;
  printf("a=%f  b=%f a+b=%f\n",a,b,c);
}

演習6-12

演習6-11を改造して、a=5, b=2 に関して a+b, a-b, a*b, a/b をそれぞれ求めなさい。

6-7. 宿題

次回までに TeX をダウンロードしておいて下さい。


坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科