] > 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. エクスプローラの設定変更

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

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

6-3. 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-4. 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-1

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

演習6-2

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

#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-3

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

演習6-4

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

#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-5

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

6-5. 宿題

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


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