第 5 回 清書(1), 論理計算、数列

本日の内容


2003.6.7 改訂

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

5-1. フリーソフトウェア、オープンソース、シェアウェア

フリーソフトウェア

著作権法の立場では、ソフトウェアは著作物であり、財産として認められてい ます。 しかし、リチャードストールマンはこれに異論を唱え、フリーソフトウェアファンデー ション(FSF)という協会を発足させ、フリーソフトという、ソフト ウェアに関する新しい権利のあり方を提言しました。

フリーソフトウェアの「フリー」は無料ではなく自由という意味です。 彼は、ソフトウェアを著作物ではなく、学術結果のように取り扱おうと提案し ました。

  1. 成果物は人類すべてで共有する
  2. 成果物に関する情報はすべて公開する(ソフトウェアではソースコード)
  3. 成果物を利用、改良した時は、その情報をすべて公開する(改造は自由だ が、改造してできたもののソースコードはすべて公開する)
  4. 成果物に関しては何も保証しない。

フリーソフトウェアでは、著作権の行使は放棄されていません。 逆に GPL(Gnu Public License) と呼ばれる著作権表示には次のこ とが主張されてます。

  1. コピーを禁じてはいけない。すきなだけコピーして良い。(copyleft)
  2. コピーさせる際、著作権表示などを改変してはいけない。
  3. このソフトウェアを改造したものを公開する場合は、ソースコードを公開 しなければならない。

このような主張は多くのプログラマーに認められたため、 GPL に基づいて作 られたソフト(GNU ソフト)は多く発表されています。 Linux も GPL のもとに発表されています。 フリーソフトウェアには、次のような利点があります。

  1. 複数の OS で利用することが容易である。
  2. OS などがバージョンアップしても対応できるので、長期間使用できる。
  3. 不具合が直るのが早い
  4. (ソースを読むことでプログラミングの勉強になる)

一方、次のような欠点もあります。

  1. 市場原理が働かないので質の低いものもある。
  2. 初心者を想定してないものが多く、むしろ慣れると使いやすくなるように 設定されているものが多い。使いこなすのに練習が必要。
  3. インストールに手間がかかる。

オープンソース

オープンソースは次の条件を満たしているソフトウェアのことです。 GPL もオープンソースと言うことができます。 ソースコードを読むことができてもオープンであると限らないのですが、誤解されることが多々あります。

  1. 再頒布の自由
  2. ソースコードの頒布
  3. 派生ソフトウェアに関しては同じライセンスの元で頒布することを許す
  4. 変更されたソースコードの頒布を制限するには、パッチファイルの頒布が必要
  5. 個人、グループ、使用目的への差別の禁止
  6. 追加ライセンスの禁止
  7. プログラムの一部を取り出しても同じライセンスを適用
  8. 一緒に頒布される他のソフトウェアの制限の禁止

シェアウェア

シェアウェアは販売形態が市販ソフトと異なる有料ソフトです。 一定期間無料で使用できますが、それ以上使用する場合は送金をするという販 売方式をとります。 シェアウェアで有名なものには Windows 用のエディタ「秀丸」などがあります。 almail もシェアウェアですが、教育機関で使用する限りは無料で使用できま す。

無料ソフト

無料ソフトは企業戦略などの理由により、無料で使用できるソフト ウェアです。有名なのは Netscape や Adobe Acrobat Reader などです。

5-2. ネットワークで使用できるファイル形式

皆さんの使用しているコンピュータと、インターネットで接続している他のコ ンピュータが全く同じと言うことはまずありません。 そのため、情報をやりとりするためにはある種のルールが必要です。 ここでは、情報を送る際に、使用すべきファイルの種類について説明します。

情報を受けとる際に望ましいと思える条件として、次のようなことが考えられ ると思います。

  1. 受けとったファイルを利用できること
  2. ファイルを利用するのに苦労しなくて良いこと
  3. ファイルを利用する際に費用が安いこと

これは相手方にも成り立つことです。従って、 情報を送る際には相手の立場として上記のことに注意する必要があります。 そのためには具体的に次のようなことを考えることが必要です。

  1. 相手が必ず使用できる形式であること。つまり、自明な形式であるか、形 式が公開されていること。
  2. 形式の解読に有料のソフトウェアの購入が不要であること。 通常のコンピュータで使用可能なソフトウェア、あるいは入手が容易なフリー ソフトなどで解読ができること。
  3. 通信量が少ないこと。通信量が少なくなる形式を選ぶか、適切な情報圧縮 をすること。

文書を送るには

文書の基本はテキストファイルです。 電子メールはテキストファイルを送るシステムですので、テキストファイルは そのまま送るようにして下さい。

単なる文書を送るのに 添付ファイルは推奨できません。 理由の第一は、テキストファイルを添付ファイルで送るのは、葉書を封筒で送 るようなものです。 読むのに余計な時間がかかり、読みにくくしているだけです。 さらに第二に、コンピュータの日本語処理と関係あります。 添付ファイルにするとコンピュータ独自の漢字コードのまま送られてしまうの ですが、マイクロソフトウィンドウズ独自の漢字コードには問題があります。 マイクロソフトウィンドウズは、歴史的経緯から「マイクロソフト漢字コード (Shift_JIS)」と呼ばれる漢字コードを使用したり、ユニコードという漢字コー ドを使用したりしています。 マイクロソフト漢字コードは、英語+日本語という環境では効率面で非常に優 れてますが、国際的な規格のインターネット上のやりとりには不向きです。 一方、ユニコードは国際的な規格として定められましたが、マイクロソフトは 国際規格とは良く似た別の形式のコード体系を採用し「ユニコード」と呼んで ます。マイクロソフト独自のユニコードは文字化けを起こします。 つまり、漢字を含む文書を添付ファイルで送ると、ウィンドウズで使用してい る漢字コードをそのまま送ることになりますが、これは受信先がウィンドウズ でないと文字化けを起こします。

インターネットで日本語を送受する際は、通常 ISO-2022-JP(RFC 1468) とい う規格を使用すべきです。 なお、 Shift_JIS はインターネットの国際機関 IANA(現 ICANN) に 1997 年 に登録されたので、WWW などでは国際的に使うことができます。

清書文書を送りたい

清書文書の形式として HTML, PDF, LaTeX を紹介します。

マイクロソフトワードの添付ファイルは、形式が公開されてなく、解読に 有料のソフトウェアを購入する必要があり、ファイルの容量が大きくなり、さ らに文書ファイルにウィルスの感染の可能性がある形式なのでお勧めしません。

HTML

インターネット上の清書文書でもっとも広く使われているのは HTML です。 HTML は規格が公表されており、多くの人が表示可能です。 テキストファイルにタグと呼ばれる記号列を埋め込んで、文書の構造を与えま す。

但し、HTML にも欠点があります。 まず、HTML には「ページの大きさ」の概念がありません。 また、どのように表示されるかは「ブラウザ」などの機能によりまちまちです。 従って、印刷を前提とした清書には不向きです。 また、ブラウザで Javascript というセキュリティの弱い拡張機能を使用すると、ウィル スに感染する可能性があります。

印刷を前提とした清書系で、先ほど提案した条件を満たすものとして二つの道 があります。

PDF

Adobe 社が開発した形式で、多くの OS で表示できるソフトウェア(Acrobat Reader)を Adobe 社が無料ソフトとして配布しています。 PDF は、基本的には Adobe 社が昔開発したプリンタ制御言語 Postscript に 圧縮機能を付け加えたもので、表示は美しいにも関わらずファイル容量は小さいです。

PDF 形式のファイルを作るには、通常は Adobe Acrobat を購入しなくてはな りません。但し、フリーソフトだけで作成する方法もあります。 また、特定のコンピュータに依存したフォントを指定できるため、完全にどん なコンピュータでも表示ができるわけではありません。さらに、受信した相手 は送った文書を修正できません。

LaTeX

計算機学者 Knuth と Lamport により開発された、論文プロセッサです。 学術論文を書くために作られたシステムで、テキストファイルを HTML 同様マー クアップして記述します。 数式の表現力が豊かで、また、カーニングや索引自動作成機能があります。 そのため、論文の清書形式として多くの学会で採用されています。 フリーソフトとして入手可能です。

欠点としては、とっつきにくく、習得に時間がかかります。 そのため、あまり普及していません。

表計算、データベースのデータ

表計算ソフトは各社で独自の機能が豊富なため、独自機能を多く使った表は、 異なるソフトウェアや異なるバージョンの相手方にはまず交換できません。 基本的なデータをやりとりするには、 CSV(comma separated valuable) とい う、「,(コンマ)」で各データを区切ったテキストファイル形式を利用するの が一般的です。 ほとんどの表計算、データベースのシステムでは CSV の入出力が可能です。

データベースの場合、SQL 言語によるバックアップができれば、テキストファ イルながらほとんど情報を失わずにやりとりが可能になります。

静止画像を送りたい

写真など

写真を送るには JPEG 形式が適しています。 これは非可逆圧縮という圧縮技術を用いているため、画質を落してファイル容 量を小さくできます。そのため画質の落ちた画像を元に戻すことはできません。 また JPEG 画像は非常に良く圧縮されているため、通常さらに別の圧縮ソフトで ファイル容量を小さくしようとしても小さくなりません。

図版など

線画などの画質がシャープな画像は PNG 形式が向いています。 PNG 形式は比較的新しい形式なので古いソフトウェアでは対応していないもの もあります。

従来、線画などの画像には GIF 形式が用いられていましたが、これは UNISYS 社の持っている特許に抵触します。 GIF 形式を利用して画像を公開すると、 無料サイトで 60万円、営利サイトで 4 億円もの特許使用料の請求が来た例 があるそうです。

解像度を落さない画像ファイル

PNG や JPEG 形式は画像のドットを一つずつ指定します。このような画像ファ イルの形式をラスタファイルと言います。 この形式はどのような画像でも表現できますが、ドットの数がそのまま画像の 表現力(解像度)となります。そのため、拡大しても細部の情報は失われてしま います。例えば円を表現すると、円周を階段状にドットで表現するため、拡大 すると円周はガタガタに見えます。

これに対して、ベクタファイルとは画像を図形の集まりとして表 現します。このため、画像を拡大してもがたがたになることはありません。 ベクタファイルで情報のやりとりに使われるファイル形式には Adobe 社が開 発した Postscript 形式があります。 但し、マイクロソフトは企業戦略からか Postscript ファイルの取扱が苦手で、 ワードやエクセルや画像処理ソフトでは Postscript ファイルを作ることがで きません。

動画

動画でポピュラーな形式は AVI, MPEG1, MPEG4 があります。 MPEG 4 はまだそれほど広まってませんが、このなかではもっとも容量が小さ くなる形式ですので、将来性があります。

なお、音声のみを MPEG1 形式で保存したものを MPEG1 Layer 3、通称 MP3 と言います。

5-3. GIMP

ソフトウェアのぺー ジの説明にしたがって、 GIMP をインストールしなさい。

GIMP(Gnu Image Manipulation Program) は Adobe 社の Photoshop に匹敵す る性能を持つ、画像処理ソフトウェアです。 これは、絵を書いたり、写真を修正したり、画像ファイルのフォーマットの変 換に使用できたりと非常に高機能です。 GIMP は PNG ファイルや、 JPEG ファイルを作成できるため、 Web 用の画像 を作るのに便利です。

演習5-1

  1. 「ファイル→新規」「了解」で新しい画像を作ります。
  2. できた画面上で右クリックし、「道具→描画ツール→鉛筆」を選びます。
  3. 左ボタンを押しドラッグすると太い黒い線が書けます。
  4. 画像上で右クリックし、「ダイアログ→パレット」でパレットを表示し、 別の色を選びます。
  5. 画像上で右クリックし、「道具→描画ツール→塗りつぶし」を選び、黒の 線で囲まれた部分を左クリックし、色を塗ります。
  6. 画像上で右クリックし、「フィルタ→ライト効果→きらめき」を選び、 「了解」を左クリックします。
  7. 「ファイル→別名で保存」を選び、「選択」の欄に「c:\work\test.png」 を入力し、「了解」を左クリックします。そして、「PNM 形式で保存する」の 画面で「了解」を左クリックします。

5-4. 清書(1)HTML

清書とは文章を見やすく表現するものです。 コンピュータで行う清書のうち、マークアップ言語 HTML 4.01による清書を取 り上げます。

文章の構造

文章には次のような構造があります。
  1. 表題
  2. 見出し
  3. 段落
  4. 箇条書

HTML の基本的な仕様

HTML は SGML という言語から作られた、 Web のページを作成するためのマークアッ プ言語です。 これをマスターすると Web のページを作ることができます。

HTML では、文書はヘッダとボディに分けることができます。

ヘッダ

ここでは HTML の決まりごとを書かねばなりません。 ここでは、最低限次のようなことを書く必要があります。

  1. HTML 言語の ver. 4.01 であることを宣言
  2. 日本語の HTML であることを宣言
  3. 漢字コードとして Shift_JIS(マイクロソフト漢字コード)を指定
  4. 作者のメールアドレスを指定
  5. タイトルを指定

これは実際には次のようにします。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<META HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=Shift_JIS">
<LINK REV=MADE HREF="mailto:sakamoto@c.dendai.ac.jp">
<title lang="ja">タイトル</title>
</head>

なお、本教材では、見栄えを良くするためにスタイルシートを使っています。 スタイルシートを使用する場合は、スタイルシートファイルを作成してから、 次の行をヘッダの中に書きます(ここではスタイルシートのファイル名は default.css としています)。

<link rel="stylesheet" type="text/css" href="/default.css">

ボディ

HTML 言語では、マークアップする対象(エレメント)をタグと呼ばれる記号列 で囲みます。開始タグは <エレメント名> で表し、終了タグは </エ レメント名> で表します。 ボディでは次の <body> と </body> の間に本文を HTML 言語に 基づいて書きます。

<body>
本文
</body>
</html>

パラグラフ

パラグラフ(段落)は <p> と </p>の間に書きます。

例5-1

<p> パラグラフ(段落)は &lt;p&gt; と &lt;/p&gt;の間に書きます。</p>

なお、このように <, > は特殊な意味(タグを表す)を持つ記 号なので、通常の文章の中に書くことはできません。 そのため、これらの記号は次のようにして入力します(セミコロン「;」を忘れ ないように)。

<
&lt;
>
&gt;
&
&amp;

見出し

見出しはレベル 1 からレベル 6 まで用意されています。一番の大見出しは <h1> と </h1> で囲みます。 原則として、レベルを飛び越えて見出しを使ってはいけません。

例5-2

<h1>HTMLについて</h1>
<h2>headerとは……</h2>
<h2>bodyとは……</h2>
<h3>見出し</h3>

箇条書

HTML では箇条書は(事実上)三種類用意されています。 通し番号を自動的につけるもの、それぞれの項目の頭に同じマークをつけるも の、項目名を指定するものがあります。

例5-3

<ol>
<li>内容 1
<li>内容 2
</ol>

とすると、次のようになります。

  1. 内容 1
  2. 内容 2

例5-4

<ul>
<li>内容 1
<li>内容 2
</ul>

とすると、次のようになります。

例5-5

<dl>
<dt>内容 1
<dd>内容 1 の説明
<dt>内容 2
<dd>内容 2 の説明
</dl>

とすると、次のようになります。

内容 1
内容 1 の説明
内容 2
内容 2 の説明

画像の挿入

画像の挿入は次の形式で行います。

<img src="画像のURL" alt="画像が表示されなかった時に表示する文字"
width=画像の横幅 height=画像の高さ>

画像のフォーマットは、線画なら PNG、写真のような画像なら JPEG がお勧め です。 なお、画像は普通の文字と同じような要素として扱われます。 文章中に入れると、文字として扱われるため、期待しているフォーマットと異 なる可能性があります。 行を改めて画像を配置するには、 <br> という強制改行タグを使用しま す。

例5-6

<img src="http://edu.net.c.dendai.ac.jp/literacy/2003/4/cutbuffer.png" alt="カットバッファの説明図" width=521 height=549>

プリフォーマット

HTML は連続した一つ以上の空白や改行は全て一つの空白と見なしてしまいます。 文字で作った表や、絵、数式などを表示するため、空白、改行などを入力した 通りに表示させるには、 <pre> と </pre> で囲みます。

例5-7

<pre>
  | x | y | z 
--+-----------
a | 1 | 2 | 3
b | 4 | 5 | 6
c | 7 | 8 | 9
 
\○
  □〉
  ||

   3
- ---
   5
</pre>

数式

HTML には複雑な数式を書く機能はありません。 但し、次のようにするとある程度の式を書くことができます。

変数
<var> と </var> で囲む。
上付文字
<sup> と </sup> で囲む。
下付文字
<sub> と </sub> で囲む。
ベクトル、行列などの太字の変数
<var><b> と </b></var> で囲む。

例5-8

<var>a</var>sin<sup>2</sup><var>x</var>

asin2x

<var><b>A</b></var><var><b>x</b></var> =<var><b>S</b></var><var><b>B</b></var><var><b>S</b></var><sup>-1</sup>

Ax=SBS-1

なお、プリフォーマットでは sup エレメントや sub エレメントが使えないの で、分数と変数が混ざった式を書くことができません。 HTML 4.01 で解決するには、グラフィックで数式を入れる方法があります。 OpenOffice で数式をグラフィックで作る方法を次に示します。

  1. Gimp をあらかじめ立ち上げておきます。
  2. OpenOffice で「File」→「New」→「Drawing」と Drawing のドキュメン トを作成する用意をします。
  3. 「Insert」→「Object」→「Formula」で数式の入力モードにして数式を 入力します。
  4. 数式を入力し終えたら「Modify」→「Convert」→「To bitmap」で画像ファ イルに変換します。
  5. 「Edit」→「Copy」でクリップボードに画像を保存します。
  6. Gimp の「ファイル」→「取り込み」→「クリップボードから」で取り込 んだ画像を Gimp で処理できるようにします。
  7. 取り込んだ画像上で右クリックを押し、メニューを表示させ、「ファイル」 →「別名で保存」で保存します。ファイル名として最後に「.png」を指定し、 PNG 形式にします。オプションで「背景色を保存」を外します。

このようにしてできた数式の PNG 形式の画像を img エレメントで指定するこ とで複雑な数式を表示することができます。

演習5-2

次の数式をPNG形式の画像ファイルにしなさい。

  1. sqrt{2} = 1+ frac{1}{2 + frac{1}{2 + frac{1}{2 + ...}}}
  2. f ( t ) = frac{d}{d t} int {0} {t} f ( x ) d x
  3. LRparen{matrix 2 2 a b c d} ^ {-1} = frac{1}{a d - b c}
LRparen{matrix 2 2 d {-b} {-c} a}

表は次のような書式になります。

<table border=1>
<caption>表のタイトル</caption>
<tr><th>第一行一項<th>第一行二項<th>第一行三項
<tr><th>第二行一項<td>第二行二項<td>第二行三項
<tr><th>第三行一項<td>第三行二項<td>第三行三項
</table>

border は枠の幅を指定します。指定しないと枠が書かれません。 caption は表のタイトルを指定しますが、省略しても構いません。 tr は行を指定します。行にはいくつ項目を含んでも構いません。 td は項目を指定します。見出しは th で指定します。

例5-9

<table border=1>
<tr><th><th>x<th>y<th>z
<tr><th>a<td>1<td>2<td>3
<tr><th>b<td>4<td>5<td>6
<tr><th>c<td>7<td>8<td>9
</table>
xyz
a123
b456
c789

その他

水平線、他の文書へのリンクなど良く使われるものがあります が、今回は省略しました。

演習5-3

  1. 次の内容を Meadow にコピーし、c:\work\test.html というファイル 名で保存しなさい。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html lang="ja">
    <head>
    <META HTTP-EQUIV=CONTENT-TYPE CONTENT="text/html; charset=Shift_JIS">
    <LINK REV=MADE HREF="mailto:xxxx@ed.cck.dendai.ac.jp">
    <title lang="ja">HTML のテスト</title>
    </head>
    <body>
    <h1>テスト文書</h1>
    <h2>自己紹介</h2>
    <dl>
    <dt>氏名
    <dd>名無しの権兵衛
    <dt>学籍番号
    <dd>03kc999
    </dl>
    <h2>本日の学習内容</h2>
    <p>本日は次のようなことを学習しました。</p>
    <ol>
    <li>最初の話題
    <li>次の話題
    <li>画像の作成
    <br>
    <img src="test.png" alt="らくがき" width=256 height=256>
    </ol>
    </body>
    </html>
    
  2. c:\work\test.html を Netscape で表示しなさい。
  3. 上記の内容を変更して、変更結果を表示しなさい。

学生用のサーバー

総合メディアセンターでは学内公開用サーバを用意しています。 余力のある人は 教育用システム の「UNIXサーバ(ワークステーション)」の中の「個人用のホームページ領域」 という部分を参照して下さい。

5-5. 表計算(4)

前回の宿題

演習5-4

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

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

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

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

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

このように表を作ると、aが 0 の時でも解が求まります。 次の方程式を解きましょう。

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

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

演習5-5

二次方程式 a x2+b x + c =0 (a≠ 0) の実根を求めるシートを作りなさい。 もし実根が無かったら「解なし」と表示しなさい。 そして次の問題を解きなさい。

  1. 2 x2 - 3x + 1 =0
  2. 4 x2 + 4x + 1 =0
  3. x2 + x + 1 =0
ヒント

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

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

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

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

演習5-6

「合格人数」を入力できるようにして、合否判定を行えるようにしなさい。

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

5-6. 論理計算

論理演算

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

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

ここで、解は a=0 であるか b=0 かという条件 で出方が変化しました。 a≠0の時は b の値がどんな値であっても一つ -b/a と決まりましたが、 a=0の時は b の値により解が存在するか存在しないか が決定します。 a=0 であり b=0 が両立した時だけ解が存在します。

複数の条件の成否に対して、「全てが成立する」とか「どれかが成立する」と かの条件を考えることを論理演算と言います。 数学では条件が成り立つことを(True) と言い、成り立たないこ とを(False) と言います。 x, y を真偽の値を持つ変数とする時、論理演算とし て次のようなものが考えられます。

NOT(否定)
x が真の時は偽、偽の時真となるような演算を NOT 演算と言 います。 NOT を表す時、¬x と書いたり、 x と書いたりします。
AND(論理積)
全ての値が真である時だけ真となる演算を AND 演算と言います。 AND を表す時、xyx y と書きます。
OR(論理和)
どれか一つ以上が真である時だけ真となる演算を OR 演算と言います。 OR を表す時、xy と書きます。

表計算では論理演算は条件を引数とする関数で行えます。

NOT(条件1)
条件1が成立しない時だけ、成立する関数です。
AND(条件1; 条件2; ...; 条件k)
全ての条件が成立する時だけ、成立する関数です。
OR(条件1; 条件2; ...; 条件k)
どれか一つの条件が成立すれば、成立する関数です。

これを使えば先ほどの二つの条件が成立する時というのを一つにまとめられま す。 解が存在しない条件は AND(a=0; NOT(b=0)) と書くことができます。

演習5-7

方程式 ax+b=0 に解が存在するか存在しないかを示す 表を作りましょう。 解が存在しない場合は「存在しない」、存在する場合は「存在する」と表示す るようにしましょう。

ABC
1'a'b'解の存在
21020?

演習5-8

次のような成績処理を考えましょう。 レポートを 3 回行って、最後に定期試験を行います。 レポートは 10 点満点、試験は 100 点満点です。 それらの内容により評価を決めます。 評価は S,A,B,C,D(不合格)と放棄です。 レポートは各自の最低限の実力を見極めたいため、全て合格点(6点)を取らな ければ不合格とします。 また一方、評価自体は複数の機会のうち一番実力を発揮できたものを本人の実 力としたいので、試験の成績よりレポートの内容が良ければレポートの評価を 優先させたいです。 これらの条件から成績評価としてつぎのような条件を考えました。

  1. 試験を受験していなければ放棄
  2. レポートは全て 6 点以上取っていなければ D(不合格)
  3. レポートが全て合格点で、試験を受験している時、点数として次のものを 考えます。
    1. 試験の点数
    2. (3 つのレポートの合計)*3+ 試験の点数/10
    このうちどちらか大きい方を総合点とします。
  4. 総合点に従って次のように評価を決めます。
    90 点から 100 点
    S
    80 点から 89 点
    A
    70 点から 79 点
    B
    60 点から 69 点
    C
    0 点から 59 点
    D (不合格)

なお、セルに 0 が入っていることと、何も入っていないことを区別するには CELL 関数を使用します。cell("type";セルの参照)とすると、 セルに何も入ってない時は "b" が値として返ってきます。

ABCDEFGH
1学籍番号レポート1レポート2レポート3試験 レポート点総合点評価
203kc99168978???
303kc9928665???
403kc993666???
503kc99410101060???

註: 採点時、各レポートは最低 6 点なので、総合点は少なくとも 54 点にな ります。

ド・モルガンの法則

方程式 ax+b=0 に解が存在するか存在しないかの条件を ab の値 から表にすると次のようになります。

b=0 b≠0
a=0解あり(無限個)解なし
a≠0解あり(1個)解あり(1個)

すると、解がある条件を考えるといくつかの意味が同じ式が得られます。

  1. (a=0)∧(b=0)∨ (a≠0)∧(b=0)∨ (a≠0)∧(b≠0)
  2. (b=0)∨(a≠0)

ところで、もともと解のない条件は (a=0)∧(b≠0)だったので、 これの否定 ¬((a=0)∧(b≠0)) は解のある条件にな り、上の二式に加えて同じ意味の式になります。

ド・モルガンの法則 とは、論理演算において次の式が成り立つと いうことです。

これに従うと ¬((a=0)∧(b≠0)) = (¬(a=0))∨(¬(b≠0)) = (a≠0))∨(b=0) となり、先ほどの 2 番目の式と同じになることが示せます。

5-7. 数列

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

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

例えば、 1,2,3,4,5… という列を生成することを考えます。 これは直前の値に対して 1 を足すことで生成できます。 数学的には ak = ak-1 +1 と書きます。 但し、一番最初の値はこれだけでは計算できないので具体的に 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 と確かに期待していた通りの数列が得られることになりま す。

演習5-9

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

  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

演習5-10

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

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

AB
15=A1
22=B1+A2
37?
41?

演習5-11

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

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

演習5-12

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

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

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

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

5-8. 宿題

次回からは C 言語を学習しますので、 gcc をダウンロードしておいて下さい。 また、タイプ練習をします。タイプ練習が不要な人はレポートを書く時間に充 てることも可能です。副手に質問も可能です。


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