第 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. C言語とは

機械語

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

記号は人間でも機械語に直せますが(これをハンドアセンブルと言います)、 もちろんコンピュータのプログラムでも直せます。 記号を機械語に直すプログラムをアセンブラと言います。 記号の組合せで書かれたプログラムは機械語と対応しますが、機械語そのもの ではありません。 記号の組合せる決まりをアセンブリ言語と言います。

高級言語

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

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

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

高級言語

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

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

  1. インターネットなどでもっとも利用されている
  2. プログラミングの知識を学ぶのに向いている
  3. 他の言語を学習する際の基礎になる

処理系

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

解釈系(インタプリタ)

高級言語で書かれたプログラムを読んで解釈しながら動作するプログラムを インタプリタと言います。 代表的なインタプリタは BASIC, LISP, Prolog などがあります。 機械語を処理するのと比較すると実行速度は遅くなりますが、複雑な機能を持 つことができます。またプログラムの実行にはインタプリタが常に必要になり ます。またプログラムを部分的に実行させることが可能なため、開発がしやす いです。

翻訳系(コンパイラ)

高級言語で書かれたプログラムを機械語に翻訳するプログラムをコンパイ ラと言います。 高級言語で書かれたプログラムをソースプログラム原始プロ グラムと呼び、翻訳されたプログラムをオブジェクトプログラム と言います。 コンパイラはソースプログラムを機械語に直してから実行するため、実行速度 は速くなり、また実行時にはコンパイラは不要になります。 プログラムの中に一箇所でも誤りがあるとオブジェクトコードは生成されない ので、完成前にプログラムを実行することは難しいです。

6-3. GCC

インストール

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

  1. gcc を授業用サーバーからダウンロードする
  2. 実行ファイルを実行すると、インストールが始まる。
  3. そのまま「Unzip」ボタンを押すと c:\gcc-2.95.2 にインストールされる。

インストールした gcc を使用するには、 使用する前に一回だけc:\gcc-2.95.2\mingw32 を入力する必要があります。

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

gcc:
C コンパイラ(構造型言語)
g++,c++:
C++ コンパイラ(オブジェクト指向言語)
g77:
FORTRAN コンパイラ(手続き型言語)
as:
アセンブラ
make:
プログラムの開発支援ソフトウェア
gdb:
デバッガ

gcc の使い方

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

  1. Meadow などのテキストエディタで XXX.c という名前のソースファイルを 作る(例えばファイル名 test.c など)。
  2. コマンドプロンプトで 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 というファイル名を 指定します(ファイル名は何でも良い)。
  2. ブラウザ上で上のプログラムをマウスでドラッグし、「編集→コピー」を 選びます。 そして、 Meadow の画面で「Edit → Paste」を選び、プログラムをコピーし ます。
  3. Meadow で「Files → Save Buffer」を選びセーブします。
  4. コマンドプロンプトを動かします。
  5. (もしやってなかったら)c:\gcc-2.95.2\mingw32 を実行しま す。
  6. カレントディレクトリを c:\work にします。
  7. gcc hello.cと打つと、 hello.c というプログラムがコンパ イルされ、オブジェクトファイル a.exe ができます。 ここでエラーが出た場合は、エラーの内容を良く読んで対処して下さい。
  8. .\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-4. 宿題

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


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