第 4 回 木構造、エディタ、表計算(3)

本日の内容


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

本日は Meadow をインストールしますので、 ダウンロードしておいて下さい。

4-1. コンピュータでの情報の扱い方

OS は人間が情報を扱いやすくするために、さまざまなサポートをしてます。

OS はファイルと、ディレクトリ(フォルダ)とい う機能を提供しています。

ファイル

ビット、バイト

コンピュータのデータの基本は 0 と 1 です。 この 0 または 1 という 2 通りの情報を記憶する単位を bit(ビッ ト)と言います。 8 bit を 1 Byte(バイト)と言います。 1 Byte には 28=256 通りの情報を記憶することができます。 英字や数字などは一文字 1 Byte で記憶されます。 一方、ひらがな、かたかな、漢字などは数 Byte で記憶されます。 1000 Byte を 1kB と言うこともありますが、 1024=210Byte を 1KBと表すこともあります。 bit, Byte などもともと 2 進数と関係 がある単位なので、 2 の巾乗の数で区切ることが多いです。

データ、レコード、ファイル

データとは数字や文字列など、情報を表現しているものをいいます。 例えば、「10」「東京電機大学」「(1,2,3)」などはデータです。

レコードとは情報の意味のある組合せです。 例えば、「コンピュータ基礎および演習 I, 月曜日3,4 限, 1C1 , 必修, 前期」 や、「飲み会、お茶の水駅前、18:00、会費 3000円」のような複数のデー タの組合せはレコードになります。

ファイルは処理の対象となるひとまとまりのレコードの集まりを言 います。 クラスの名簿、スケジュール表などはファイルの例です。

コンピュータではファイルに名前をつけ、名前で管理します。 通常のコンピュータの処理はファイルを対象にします。 CUI シェルでは通常命令は次の文法になってます。

コマンド名 対象ファイル名

文字列を改行で区切ったファイルをテキストファイルと言い ます。 改行で区切られた文字列をということがあります。行はレコード に対応します。 電子メールの内容やコンピュータのプログラムはテキストファイルでで きています。 テキストファイルはほとんどのコンピュータで取り扱えるため、情報をやりと りする際に便利です。

例4-1

MS-DOS やコマンドプロンプトのコマンドの例

type ファイル名
ファイルの内容を表示する(まともに表示できるのはテキストファイルの み)
del ファイル名
ファイルを消去する

ディレクトリ(フォルダ)

複数のファイルをまとめる仕組みをディレクトリフォルダ と言います。ディレクトリも名前をつけて管理します。 ディレクトリはディレクトリも含むことができます。

例4-2

ディレクトリ A がファイル B とファイル C を含んでいる。

例4-3

ディレクトリ A がディレクトリ B とファイル C を含んでいる。

例4-4

ディレクトリ A がディレクトリ B とファイル C を含んでいて、ディレクト リ B がファイル D を含んでいる

例4-5

ディレクトリ A がディレクトリ B とディレクトリ C を含んでいる。 ディレクトリ B はファイル D とファイル E を、ディレクトリ C はディレク トリ F とファイル G を含んでいる。

「A が B を含んでいる」という関係をA→Bで表すと上の関係はそれ ぞれ次のようになります。

例4-2

ディレクトリ A がファイル B とファイル C を含んでいる。

例4-3

ディレクトリ A がディレクトリ B とファイル C を含んでいる。

例4-4

ディレクトリ A がディレクトリ B とファイル C を含んでいて、ディレクト リ B がファイル D を含んでいる

例4-5

ディレクトリ A がディレクトリ B とディレクトリ C を含んでいる。 ディレクトリ B はファイル D とファイル E を、ディレクトリ C はディレク トリ F とファイル G を含んでいる。

数学では、このように対象物の関係を→の接続で表したものグラフといいます。 さらに、グラフの中で、 すべてが連結しているが合流がない形を木(tree)と言います。 木やグラフを表す時の特有の用語には、頂点、節(対象物)、枝(関係)などがあ ります。また、木特有の用語として、根(すべての始点)、葉(端点)があります。

さらにある頂点から別の頂点への道筋、あるいは道筋の頂点の列挙を道 (path)と言います。 この場合の道は B,A,C,G と表すことができます。

木の節から見て、自分に接続している節をと言い、自分が接続している 節をと言います。 ディレクトリでは親ディレクトリサブディレクトリとい う言い方をします。

CUI におけるディレクトリ操作

CUI シェルでは命令の次に対象ファイル名を指定します。 Windows はファイルシステムを提供していますので、次に述べるような方法に よりディレクトリを利用したファイルを指定できます。

CUI シェルでは、注目しているディレクトリ(カレントディレクトリ) があります。 カレントディレクトリに関連するコマンドには次のものがあります。

cd
カレントディレクトリを表示する(表示形式は後述)。UNIX では pwd
cd ディレクトリ名
カレントディレクトリを指定したディレクトリに変更する。

Windows では次の特別な約束があります。

.
.(ピリオド)一つでカレントディレクトリを表す。
..
..(ピリオド)二つで親ディレクトリを表す。
ルートディレクトリ
ルートディレクトリには名前がついてない。(正確には名前が空)
英字と同じ幅の¥(円記号)

バックスラッシュの由来 path を表す時、ディレクトリ名の区切りに使う。 もともと UNIX では /(スラッシュ)を使っていた。それを真似て、 MS-DOS(MS Windows の原型)のアメリカ仕様では\(バックスラッシュ)が使われた

日本向けのコンピュータでは、文字の構成が違い、バックスラッシュの代りに 円記号が登録されているため、枝の表現に似ても似つかないがそのまま円記号 を使うようになった。 キーボードで右shift の左側に ろ というキーがある。 これはバックスラッシュを入力するキーだが、日本語の Windows では¥記号 として扱われる。

Windows でファイルを指定する場合、「カレントディレクトリからのパス (相対パス)」で表現します。 但し、パスの先頭が区切り記号の時は、「ルートディレクトリからのパス (絶対パス)」を表します。

例4-6

例の表示

例4-7

MS-DOS やコマンドプロンプトのコマンドの例

mkdir ディレクトリ名
ディレクトリを作る
rmdir ディレクトリ名
ディレクトリを消去する
dir ディレクトリ名
ディレクトリの内容を表示する(ディレクトリ名を省略した時はカレント ディレクトリの内容を表示する)
copy ファイル名1 ファイル名2
ファイル1 をファイル 2 の名前でコピーする。

余談: 包含関係とパス表示

ディレクトリやパスの表現を説明しましたが、これは一般社会で良く使われて います。 例えば、市区町村の分割と住所表示がその例です。

区分け 市区町村の分割

figure of tree 住所の書き方

4-2. Meadow のインストール

有名なエディタ emacs の Windows 版 Meadow を使用します。ソフトウェアのぺージの説明にしたがって、 Meadow をインストールしましょう。

Meadow は、Windows の「メモ帳」などと違い、キーボード上の手をホーム ポジションから動かさなくても多彩な機能を使えるように設計されています。 Ctrl や Alt キーを押しながらアルファベットのキーを押すことによりさまざ まな状態に変化します。 このような設計のため使いこなせば便利ですが、使いこなすまでは戸惑うかも 知れません。 操作が分からなくなってしまった時は、 Ctrl-g を押すと、 文字を入力する基本的な状態へ戻ります。

4-3. エディタの基本操作

情報を編集するものをエディタと言います。また、テキストファイルを編集す るエディタをテキストエディタと言います。 ここではどのようなエディタにもある機能を紹介します。

ファイルの作り方

一般的な Windows のソフトウェアでは、初期画面で「名称未設定」という名 前のウィンドウが出ます。 ここに情報を入力した後、保存する際にファイル名を決定します。

一方、Meadow は一般的な Windows のソフトウェアと違い、目標のファイルを 作成する時、まず、ファイル名を指定します。 「Files→Open File...」を選び、ファイル名を入力して下さい。 一番下の画面に「Find file:~/」という表示がでます。この状態でカレントディ レクトリは c:\work になってます。 この画面では Windows のパスの区切り文字はスラッシュ「/」が使えます。 また、円記号「¥」も入力できますが、画面内ではバックスラッシュ「\」が 表示されます。

文字の入力

文字を押すとその文字が入力されます。通常は挿入モードといい、 カーソルのある位置へ文字が挿入されます。 insキーを押すと上書きモードになり、カーソル 位置の文字を押した文字と取り替えるように文字が入力されるようになります。 Backspace キーDel キーで修正ができます。 また「半角/全角 漢字」キーを押すと日本語入力が可能になります。

但し、マイクロソフト Wordでは、押した文字と違う文字(大文字や漢字と同 じ幅の文字)が入力されることがあります。 また、特に Word 2002 は ins キーを押しても上書きモードになりません。

カット、コピー、ペースト

文字の特定部分を指定して、切り取り、コピーができます。

通常、ポインティングデバイスを使用して、文字上をドラッグすると、左ボタ ンを押したところから、離したところまでの範囲を指定できます。

Meadow ではさらに、一番最近 Ctrl-Space を押した位置から、カー ソルまでの文字を指定できます (これを利用すると何ページにも渡る領域を複雑なマウス操作なしで指定でき ます)。

「Edit」や「編集」のメニューから「切り取り」や「Cut」を選ぶと指定領域 を削除できます。 一番最近削除した領域は、メモリーの中に保存されます。 この削除した領域を一旦保存しておくメモリーの領域をカットバッファ (またはクリップボード)と言います。 「Edit」メニューの中から「貼り付け」、「ペースト」、「Paste」を選ぶと、 カーソル位置に先ほど削除したものが挿入されます。 カーソルを移動して、そこで「貼り付け」を行うと、そこに削除されたものが 挿入されます。

image of cut buffer 「Edit」メニューの中の「コピー」「copy」を選ぶと、指定領域はカット バッファにコピーされ、指定領域はそのまま残ります。つまり画面上はなにも 変わりません。 指定位置に指定したものをコピーするには、このコピー操作をした後、コピー する位置を指定して「貼り付け」を行って下さい。

このように領域を指定して、その領域の内容を切り取りった後貼り付けを行う ことで指定された領域を移動させることをカットアンドペースト と言います。 また、コピーして貼り付けることで指定領域のコピーを作ることをコピー アンドペーストと言います。

検索、置換

どのテキストエディタでも「検索(Find)」はあるはずです。 Meadow では Ctrl-s で検索ができます。 探したい文字を入れていくと、入力の途中でも検索を行います。 次の候補を見つけたいときはさらに Ctrl-s を入力します。 目的の位置へ移動できたらEsc キーを押します。 途中で検索を止めたくなったらCtrl-gを押します。 文書を最後から最初の方へ検索する時はCtrl-rを押します。

また、どのテキストエディタでも「置換(replace)」はあるはずです。 Meadow では「Search→Query Replace」を使用します。 これは複数ある対象を一気に置換するのではなく、ひとつずつ確認しながら置 換します。 操作は次の通りです。

Space キー
置換する
Backspaceキー
置換しない
Esc キー
置換を途中で終了する
!
最後まで確認せずに置換する

なお、検索や置換を行うとき、現在のカーソルの位置が重要になります。 通常、検索や置換は現在のカーソルより後ろに対して作用します。 ファイルの全体を対象にしたい場合は、カーソルをファイルの先頭に持っていく 必要があります。 Meadow では Alt+Shift+, (Alt+<) を打つとファイルの先頭にカーソルが 動きます。また、 Alt+Shift+. (Alt+>) を打つとファイルの最後にカーソ ルが移動します。

4-4. カットバッファ

上で説明した「カットバッファ」は、アプリケーションソフトウェア間のデー タのやりとりに使えます(Windows では Macintosh と同様にクリップボー ドと呼ぶようです)。 例えば、Web ブラウザの内容の一部を電子メールで送ることも可能です。

なお、さまざまなソフトウェアでカット、コピー、ペーストの機能は実現され ていますが、それぞれ微妙に呼び方が異なることがあります。 以下はそれぞれのソフトウェアでの画面写真です。

メモ帳
Mozilla Firefox
Almail
コマンドプロンプト
Meadow
OpenOffice の表計算

4-5. 表計算(3)

他のアプリケーションとのやりとり

表計算ソフトウェアやデータベースなどでもっとも基本的なデータ形式は、 CSV(Comma Separated Value)と呼ばれる、カンマ「,」でデータを区 切った形式です。 この形式でやりとりする限りは、ほぼ間違いなくデータ交換がうまくいきます。

一方、電子メールや Web など通常のテキストファイルの形式でデータをやり とりするにはどうすれば良いでしょうか? 作成した表を電子メールなどで送るには、OpenOffice の表の部分を選択して、 Copy & Paste で電子メールソフトにデータを貼り付けると、各々のデー タが Tab コードで区切られた形式で貼りつけられます。

しかし、一方、電子メールや Web 上のデータに関しては、データ同士が Tab で区切られていないかぎり、 Copy & Paste ではうまくいきません。 空白などで区切られていたらどのようにすればよいでしょうか? この場合、次のような手順で読み込みます。

  1. テキストエディタで一旦テキストファイルを作成し、拡張子 .txt でディ スクに保存します。
  2. OpenOffice 側で「ファイル→開く」でファイル名を指定し、「ファイルの種 類」から、「テキスト CSV」を選美、「OK」を押します。
  3. 区切りのオプションとして、「タブ」「スペース」「フィールド区切りの結合」を選 択します。

IF と論理関数

表計算の関数には IF という関数があります。

AB
11=IF(A1=3;5;10)

このような場合、B1 の値は A1 の値が 3 の時だけ 5 に、それ以外の時は 10 になります(この場合 10)。 IF を使うと一つの式で表せなかったような計算をすることができるようにな ります。

例4-8

二次方程式 ax2 + bx + c = 0 ( a0 ) の実根の数は、判別式 D= b2 - 4 a c の値により、次のようになります。

D>0 のとき
2個
D=0 のとき
1個
D<0 のとき
0 個

これを計算させましょう。

ABCDE
1'a'b'c'判別式の値実根の個数
2102030=B2*B2-4*A2*C2=if(D2>0;2;if(D2=0;1;0))

例4-9

コンピュータのソフトウェアの設計では、どんな入力が来ても正常に動作する ことが期待されます。一番初めに取り上げた一次方程式の解法においても a=0 が入力されることは予想され、その場合も正常に動作するこ とが期待されます。

方程式 ax + b = 0 の解は a=0 を考慮すると、 a b の値により、次のようになります。

a0 のとき
x=-ba
a=0 のとき
b0 のとき
解なし。
b=0 のとき
任意の x は式を満たす。

これを計算させましょう。

ABC
1'a'b'ax+b=0 の解
21020=if(A2=0;if(B2=0;"任意の値";"解なし");-B2/A2)

このように表を作ると、 a が 0 の時でも解が求まります。

註: このように式に文字列を入れる時は、ダブルクォーテーションマークで 「"文字列"」というように括ります。

4-6. 宿題

次回までに Gimp をダウンロードしておいて下さい。 また、Gimp のインストールに使いますので、モノサシを持ってきて下さい。

4-7. 付録

演習4-1

次の情報を記憶するのに必要なビット数を求めよ。

  1. 勝ち負け
  2. 男か女か
  3. 0 から 9 までの数のうちの一つ
  4. A から Z までの文字のうちの一つ
  5. 0 から 9 と A から Z と a から z までの文字のうちの一つ

ヒント: log2(場合の数) の切り上げを考える

演習4-2

次の問いに答えなさい。

  1. コマンドプロンプトあるいは MS-DOS プロンプトを起動した時、カレント ディレクトリはなにになりますか?
  2. カレントディレクトリをディレクトリ c:\work に移しなさい。
  3. 
    echo abc > def
    
    を実行しなさい。 そして dirコマンドやtypeを利用し、カレントディ レクトリになにが起きたか調べなさい。
  4. 次の図の構造になるようにディレクトリを作りなさい。
  5. ファイル def を、ディレクトリ A とディレクトリ B にそれぞれコピー しなさい。
  6. 「スタートボタン」を右クリックして、エクスプローラを動かし、 work ディレクトリに何が入っているか調べて、絵を写しなさい。
  7. 作成した A, B, test ディレクトリを消しなさい。

演習4-3

  1. 次の文字を入力しなさい。
    qwer
    asdf
    zxcv
    
  2. 「asdf」をコピーし、「qwer」の後ろに挿入しなさい。
    qwerasdf
    asdf
    zxcv
    
  3. 「asdf」を「ghjk」に置換しなさい。
    qwerghjk
    ghjk
    zxcv
    

演習4-4

表計算ソフトで保存できる形式について調べます。

  1. 始めに次のように表を作ります。
    ABCDE
    1'あいうえお12006/5/1=B1+1=SIN(PI()/4)
  2. 「ファイル→名前をつけて保存」で、ファイル名として a など適当なも のを指定し、次のファイル形式で保存する。
    1. Open Document の表計算ドキュメント (.ods) OpenOffice.org Spreadsheet(.sxc)
    2. Microsoft Excel 97/2000/XP (.xls;.xlw)
    3. SYLK (.slk)
    4. テキストTEXT CSV (.txt;.csv)
  3. コマンドプロンプトで dir a.* によりファイルのサイズを調 べる。
  4. メモ帳でそれぞれのファイルを開き、何が入っているか調べる。
  5. a.odsa.sxc に対して、ファイル名を a.zip と変更する。そして、それを解凍 し、内容物を調べる。

演習4-5

次の手順に従って電子メールを送りなさい。

  1. 宛先 literacy@edu.net.c.dendai.ac.jp へ電子メールを送る準備をする。
  2. 次の内容をマウスで選択する。
    0000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244
    0000020 0000 0902 0000 2502 0302 0000 2200 8362
    0000040 0026 0000 5009 544c 0045 0000 4f2f ff4f
    0000060 ffff f36c c2ff 0000 9e0b 4449 5441 9c78
    0000100 9ded 8e4b aae4 8612 8f2d ac4a d522 8b23
    0000120 d4fd fa91 a0ec 157b 4796 e62d 4ae7 8677
    0000140 2a52 6289 1795 3f12 1378 f380 6e75 52d0
    0000160 a665 f8ed a5fd 360d ece0 07f8 f4f9 0f32
    0000200 26cf 8640 6537 4410 1dff ed39 abdf 552b
    0000220 1c73 a074 b1f8 c09c 4ae0 1981 1ac4 5928
    0000240 8037 052f e066 9026 fedf 15f6 0a5f c0c4
    0000260 c83f 1338 a1f9 3e5f 3106 4bce fefb 5223
    
  3. メニューの「Edit→Copy」を選ぶ。
  4. 電子メールの送信画面を選択し、本文を書く欄の中に、挿入する位置をマ ウスで指定する。
  5. メニューの「Edit→Paste」または「編集→貼り付け」を選ぶ
  6. メッセージを送信する。
  7. 正常に送れたら、その旨のメッセージが返ってくる。

補足: 画像も同様にカット、コピー、ペーストの操作ができます。 なお、ウィンドウの表示を画像としてカットバッファ(クリップボード)|に取り込み たい時は、「Alt+PrtSc(PrintScreen)」を押します。

演習4-6

次の表を上記の方法で表にし、表を完成させなさい。 合計は、数量、小計、値引き、販売価格について求めなさい。そして、 出来上がった表を宛先 literacy@edu.net.c.dendai.ac.jp へ電子メールで送 りなさい。


割引率  30
商品名  単価 数量 小計 値引き 販売価格
りんご   120   5 
デコポン 300   3
バナナ    60  10
キウイ   100   7
いちご   400   5
合計  

但し、タブで区切られているので、文字数により表示が乱れることがあります。 この演習の場合、表示が乱れたまま電子メールを送っても構いません。

演習4-7

例4-8の表を利用して、次の方程式の実根の数を求めなさい。

  1. 2x2 - 3x + 1 = 0
  2. 4x2 + 4x + 1 = 0
  3. x2 + x + 1 = 0

演習4-8

例4-9 の表を利用して、次の方程式を解きましょう。

  1. 2x + 4 = 0
  2. 2x + 0 = 0
  3. 0x + 4 = 0
  4. 0x + 0 = 0

演習4-9

二次方程式 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 の時
何も表示しない

演習4-10

前回の演習で作成したシートに対してさらに「合格人数」を入力できるよう にして、合否判定を行えるようにしなさい。

ABCDEFGHIJKLMN
1人数平均点標準偏差合格人数合格最低点
2?????
3受験番号国語数学I・A数学II・B総合理科 物理IB化学IB生物IB地学IB外国語得点順位偏差値合否
4C100150707563456500130????
5C10026562335471076098????
6C1003608093070800065????
  1. 合格人数から LARGE 関数を使用して合格最低点(100 人合格させるなら 100 番目の点数)を求めなさい。
  2. 得られた合格最低点と各素点から IF 文を使用して「合格」「不合格」を それぞれ表示させなさい。

演習4-11

次の方程式の組みを満たす x, y の組みを求めるよう なシートを作りなさい。 但し、 ad- bc=0 の時は、解が無限に存在したり、解がなかったりするので、注意すること。

{ ax + by = e cx + dy = f

そして、次の連立方程式を解きなさい。

  1. { 2x + 3y = 8 3x - y = 3
  2. { 2x + 0y = 8 x - y = 3
  3. { 4x - 2y = 8 2x - y = 3
  4. { 4x - 2y = 8 2x - y = 4
  5. { 2x + 3y = 8 0x - 0y = 3
  6. { 2x + 3y = 8 0x - 0y = 0
  7. { 2x + 0y = 8 0x + 0y = 0
  8. { 0x + 0y = 0 0x + 0y = 0
ヒント

二元一次方程式は二つの直線の共通部分と考えることができます。平面上の二 つの直線の関係は次のうちのどれかになります。

つまり、与えられた二つの式が平行かどうかを調べてから、さらに平行なら一致す るかどうかを調べると、この場合分けができます。 但し、これは二つの式が両方とも直線を表している時に、初めてできる場合わけ です。 一方、 abcdの組が 0 になると直線を表さなくなります。 少なくとも一方の式が直線でない場合は、その式に関しては例4-9の方 程式で変数の係数が 0 の場合と同じになります。 つまり、直線でない式 0x + 0y = f ではその式を満たす x, yf が 0 か そうでないかで場合わけし、「全ての x, y」あるい は「解なし」となります。 この式で「解なし」の場合はもう一方の直線の式を考慮せずに連立方程式の解 が「解なし」となります。 一方、「全ての x, y」の場合は、もう一方の式を満 たす x, y が、この連立方程式の解になります。 つまりこの場合に出力すべき解は 「 ax + by = e を満たす全てのx, y」と表示することになります。

なお、例えば「解は 5x+ 3y = 1 を 満たす全ての(x, y)」と表計算のセルに表示させるに は、式の中に文字列を埋め込む必要があります。 その場合は次のようにダブルクォーテーションマークで文字列を括り、 & 記号で他の値と結合させます。

="解は"&A2&"x+"&B2&"y="&C2&"を満たす全ての(x,y)"

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