図 目 次 - Yet another haikusphere

図目次
1.1
1.2
1.3
1.4
1.5
Backgroud, Color,
Ascii table . . . .
Francis Bacon . .
Bacon’s cipher . .
divisors.yab . . .
0.1
Answers
0.1.1
u-tokyo
0.1.2
CPU, FAN
0.2
Theme
. . . . .
. . . . .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 5
. 8
. 10
. 11
. 18
News
0.2.1
El Ni ñ o: Is 2014 the new 1997?
太平洋でエルニーニョ現象が起きているらしい。
http://science.nasa.gov/science-news/science-at-nasa/2014/19may_
elnino/
1
0.2.2
PC 遠隔操作事件
先週末に自称真犯人から報道各社にメールが送られて以降、い
ろいろ事態が急展開しすぎの遠隔操作事件ではあるが、行方が
分からなくなっていた保釈中の片山被告が自身の弁護団に対
して「私が犯人だ」と認め、さらに先週の報道各社へのメール
を送ったことも認めたということだ。片山被告は現在、都内
の弁護士事務所にいるという (NHK)。昨年 2 月に逮捕以降、
一貫して否認を続け、捜査の不手際やえん罪の可能性を指摘
され続けてきたこの事件に大きな転機が訪れたようだ。
ファイルスラック領域とは?
http://bylines.news.yahoo.co.jp/egawashoko/20140311-00033448/
2
第 1 章 Mu プログラミング入門
(Programming in Mu)
この章ではプログラミングの入門を解説する。プログラミングとは、プ
ログラムを作ることだ。プログラムという言葉は英語の program の発音
を片仮名にしたもので、Program は名詞、動詞どちらの使用法もある。
日本語でプログラムを書くことをプログラミングという。もともとは、
ギリシア語の「prographein=pro+graphein」が語源だといわれている。
「pro(before)+graphein(write)」なので、「あらかじめ書いたもの」「あら
かじめ書く」という意味がある。
それでは、Mu プログラミングの/em Mu とは、何かという問いかけに
答える。自明の答が「Mu は松山大学の省略形だ」
。もうひとつは、禅問答
のようだが「無 Mu だ」
。プログラムなどなくて直接人間と機械のコミュ
ニケーションができればいいともいえる。3 つ目の答は、
「ギリシア文字
の µ」だ。また統計学で、µ がデータの平均値を意味するように「Mu プ
ログラミング」は平均的、標準的なプログラムを目指していると解釈し
てもいい。
ともかく、松山大学でプログラムを作るというように単純に解釈して
ほしい。プログラムは Windows 上で作る。時々、スマートフォン用のア
プリを書くためのプログラムも併せて紹介する。
3
1.1
机の上を整理
ここで整理する「机の上」はデスクトップ、すなわち Windows のデス
クトップ画面のことだ。デスクトップ画面に切り換えるには、いくつか
方法がある:
• Windows 8, Windows 8.1 のスタート画面で「デスクトップ タイル」
をクリックする。
• キーボードで Windows ロゴキーと D キーを押す。
まだ他にも検索を使うなどのやり方もある。
1.2
机のデザイン
気にいったデザインの机で仕事ができるようにする。あまり凝りすぎ
ると集中力が削がれるし、同じものだと飽きがくるため、デスクトップ
のデザインの変更方法はよく理解しておく必要がある。
さらに、デスクトップではあまりたくさんのアプリを開かない方が仕
事の能率は上がる。特にメールやウェブの利用はスマホ専用にするのが
よい。ネットを使うアプリとそうでないアプリを分けて仕事をするのが
コンピュータ上での作業効率を高めるコツである。
1.2.1
背景、色、テーマ
コントロールパネルのデスクトップのカスタマイズをクリックする。ま
たは、デスクトップの上でマウスボタンの右クリックボタンのメニュー
から個人設定をクリックする。この後、背景、色、テーマなどを個人の
好みにあわせて選べばよい。
4
図 1.1: Backgroud, Color, Theme
5
1.3
紙とエンピツと消しゴム
紙、エンピツ、消しゴムの 3 点セットはプログラムを書くための必需品
なのは大昔のコーディングシートに書いていた時代とかわらない。しか
し、現代ではプログラムを書くためのプログラムを使う。エディタと呼
ぶ種類のプログラムである。エディタの紙は、デスクトップ上に開いた
ウィンドウだ。エンピツで文字を書く操作はカーソル位置でキーを打つ
ことになる。消しゴムは文字を書いた直後なら「Backspace」キーだが、
「Ctrl」キーとの組み合わせでも可能である。
紙とエンピツよりも、エディタが便利なのは、ハサミとノリで紙を切
り貼りするよりも素早く操作できることにある。このカット&ペースト
やコピー&ペーストについては次節「コピペの達人」で解説する。
エディタのプログラムは何を使うかは、大切な選択で、むずかしい選
択でもある。ワープロに何を使うかよりも迷うかもしれない。エディタ
は、Windows に標準で入っているものはノートパッド (notepad) しかな
いが、プロのプログラマはほとんど notepad を使ってないようだ。ワー
プロだとプロ作家も初心者も同じマイクロソフトのワードを使うような
気がする。しかし、エディタはプログラム言語の種類によっても様々な
統合環境があり、高機能なエディタの操作をマスターするのは相当日数
がかかる。
何か適当なものを後で選ぶことにするが、最初は Windows に標準のプ
ログラム notepad を使う。
世界の国々には色々な (人間の) 言語があり自分で書いたプログラムを
世界に流通させようとするれば、多種類の言語・文字コードに対応する工
夫をプログラムに施さなければならない。インターネットエクスプロー
ラ (IE) やメールでの文字化け現象は、最近ではあまり見られなくなった、
これは IE やメールなどのプログラムでの文字コード処理が進んだことも
ある。また文字コードが統一されてきている背景もある。
6
1.4
文字コード
文字コードとは、文字にコード (符号) を対応させたもののことをいう。
文字をコンピュータ内部でどのように表現するか、文字をどのような 0 と
1 のビット列にするかになる。
1.4.1
ASCII code
基本は、アスキー文字である。アルファベットと数字と記号を表すア
スキーコードがコンピュータの文字処理の始まりだった。下の表は、行
と列を16進数で示している。したがって、
「A」は、4の列の1の行だ
から、16進数の「41」。すなわち 4かける16たす1は、65とな
る。アルファベット A(大文字)は、10進数の65と計算機内部で表現
されて処理される。
2 進数だと、
「1000001」となる。これは、
「A」を 7 ビットの 2 進数であ
らわしたものである。
1.5
Yabasic プログラム
文字をコード (数) に変換する。
input "Input a character: " a$
print asc(a$)
出力 (プリント) をもう少し詳しくしたプログラム。
input "Input a character: " a$
print "Ascii code of ", a$, " is ", asc(a$)
7
図 1.2: Ascii table
8
1.6
C 言語のプログラム
#include <stdio.h>
int main(){
char c;
printf("Input a character: ");
scanf("%c", &c);
printf("Ascii code of %c = %d\n", c, c);
return 0;
}
1.7
暗号 (cypher) とコード (code)
文字をコード化することは、暗号にもつながっている。歴史的にみれ
ば、暗号が古くからあった。
フランシス・ベーコン (1562-1626) が使った暗号の例をあげてみよう。
ベーコンは、2 進法を利用した。ただし、0 と 1 ではなく a と b の組み合
わせを利用した。通常の英語のアルファベット 26 文字のかわりに、次の
ような 24 のアルファベットを使った。
ベーコンのやり方で、メッセージを暗号にしてみよう。たとえば、彼
がアリスに秘密の伝言「ITS BEANS」を手紙に書いて送るとする。
元の文:
置換文:
ITS BEANS
abaaa baaba baaab aaaab aabaa aaaaa abbaa baaab
さて、これを暗号文にして手紙の中に隠してみよう。短かい文を考え
て書き、置換文を短文の単語の長さにあわせて区切る。この後、a にあた
るところの文字は大文字にして、b にあたる文字を小文字にする。
9
図 1.3: Francis Bacon
10
A
B
C
D
E
F
G
H
=
=
=
=
=
=
=
=
aaaaa
aaaab
aaaba
aaabb
aabaa
aabab
aabba
aabbb
I/J
K
L
M
N
O
P
Q
=
=
=
=
=
=
=
=
abaaa
abaab
ababa
ababb
abbaa
abbab
abbba
abbbb
R
S
T
U/V
W
X
Y
Z
=
=
=
=
=
=
=
=
baaaa
baaab
baaba
baabb
babaa
babab
babba
babbb
図 1.4: Bacon’s cipher
置換文: ab aaa baa bab aaaba aaa baabaaa aa aaab baab aaab
手紙文: Hi, how are you doing. The weather is nice here today.
暗号1: Hi, HOW aRE yOu DOInG. THE wEAtHER IS NICe hERe TODay.
しかし、すぐに気が付くように、この暗号1は簡単に見やぶられてし
まう可能性が高い。暗号1から置換文を引きだすのはそれほど時間がか
からない。では、どうすれば見やぶられないようにすることができるだ
ろうか。1 つの方法は、アルファベットの A から Z を 2 つに分割し、
「A
から K」を a に置き換え、「L から Z」を b に置き換えることだ。
置換文: a baaa baa bab aaa ba aaa baa baaaa aaa ab baa baaab
暗号2: I like the new bag. We had the shade bag at the ready.
この暗号2は、暗号1よりも解読されにくくなっている。しかし、ア
ルファベットの a、b への置換の区切りがわかってしまえば解読されてし
まう。このフランシス・ベーコンが考案したやり方だと
Mu プログラミングでの文字コードは、ユニコードのエンコーディング
のひとつである「UTF-8」形式にする。
11
もう少し厳密にいえば、
「ja JP.UTF-8」に文字処理の環境 (locales) を
設定する。
「ja JP.UTF-8」は、
「日本人の日本語をユニコードの UTF-8 でエンコー
ディング」する解釈される。日本人の日本語というのは変な表現かもしれ
ないが、世界では同じ言語でも国によって表現が変化する例がある。英
語であれば「en US.UTF-8」だと米国の英語、
「en GB.UTF-8」 だと英国
での英語をユニコードでエンコードディングしたものということになる。
1.8
エディタ - notepad
Windows に標準のエディタ。
1.8.1
notepad++
notepad をプロフェッショナルな用途にも使えるよう拡張したエディ
タ。Download の必要がある。UTF-8 の文字コード処理ができる。
1.8.2
emacs
プログラマには必需品のひとつ。ほとんどすべての文字コードを処理
することができる。Lisp プログラムを実行できる。
1.9
コピペの達人
デジタルの特徴は、コピペにあるといっても言い過ぎではないだろう。
コピペは、コピー、ペースト、カットの 3 つの機能を組合せる。
12
1.9.1
コピー、カットおよびペーストを Windows で処理
する方法
クリップボードとは何か。
コピー、カットの領域。
1.10
画像処理
1.10.1
MSPAINT
Windows 標準
13
1.10.2
GIMP 2
Download の必要がある。
1.10.3
Bulk Image Converter
Download の必要がある。
1.11
PowerShell
1.12
BASIC!
BASIC は、パソコン創世記のころ、ハードウェアに組み込まれて販売
されていた。いまのように、ワード、エクセル、パワーポイントのよう
なアプリケーションがなかった時代であった。いまならエクセルでやる
経理事務を、ユーザがみずから BASIC のプログラムを作って事務処理を
行っていた。すなわちパソコンを使うことは BASIC でプログラムを書く
ことであった。パソコンが使えるということは、すなわち BASIC のプロ
グラムが書けるという時代であった。
1.13
RFO Basic
自分のスマホで、Android Apps を作ることができる。
1.13.1
Google Play Store で BASIC!アプリを見つける
「Play Store」の中でキーワードに「rfobasic」と文字列を入れアプリ
を検索する。
14
その結果、見つかったアプリの中から「BASIC!」をダウンロードし、
インストールする。(望遠鏡のアイコン)
1.13.2
RFO Basic の基礎
アプリ「BASIC!」をタップする。「BASIC!」が動きだしてスマホの画
面が下のように変る。
BASIC! Program Editor これから、この Editor(エディタ) で Basic 言語を使いプログラムを作
ることができるようになる。最初に、超簡単なものを作ってみよう。は
じめのタイトル「BASIC! Program Editor -」がある下部の白い画面には
「REM start of BASIC! Program」の文字列が表示されている。これは、
REM、すなわち注釈であると (BASIC 言語処理プログラム) に解釈され
てなにも起らない。したがって、この注釈行を消してもいいしそのまま
にして、次の行から自分のプログラムを書いても、どちらでもよい。
白い画面には、横罫線が引かれている。この罫線の行に 1 行づつプロ
グラムを書く。
popup "梅雨にはいった。",0,0,1
引用符にはさまれた日本語文字列「梅雨…」の他は、すべて半角の英
数字であることに注意して入力する。
さて、このはじめてのプログラムを実行してみよう。それには、右上の
縦方向に点が 3 つ並んだ「アンドロイド メニュー」を指で押さえる。す
ると「プルダウン メニュー」が縦方向に表示される。メニューの一番上
の「Run」をタップする。「Current Program Not Saved!」のメッセージ
がでたら、「Save」をタップする。すると「Save As..」の窓が開くので、
ソフトキーボードを使いファイル名を入力する。
そうすると画面の中央で「梅雨にはいった。」の窓が表示される。
15
1.14
Wifi File Transfer
実際にアンドロイド用のアプリを作るためには、デスクトップまたは
ラップトップのコンピュータが必要になる。理由は、スマホでエディタを
使い長いプログラムを入力することは疲れるうえに時間が無駄にかかっ
てしまうからである。そこで、スマホとコンピュータの間でファイルを
やりとりするためのアプリをスマホにインストールする。
よく使われるのは「Wifi File Transfer」などである。
1.15
Yabasic - Yet another Basic
http://www.yabasic.de/
このサイトを開いて左のメニューの「Download」をクリックして「Windows Binaries」を選ぶ。そのページにある「yabasic-2.xxx-setup.exe」を
クリックすると自分のコンピュータに yabasic のセットアップ用実行ファ
イルがダウンロードされるから、あとは、ダウンロードしたファイルを
実行する。実行中のセットアッププログラムからでてくる注意事項を確
認しなければならないが、ほとんどの問いかけに yes とこたえることでイ
ンストールは完了する。
セットアップは、自分のコンピュータに次のような設定をやってしまう。
1. スタートメニューに項目をつくる。
2. 拡張子「.yab」を登録する。
3. アンインストールのためのプログラムを登録する。
yabasic が不要になったときは、コントロールパネルを呼び出してソフ
トウェアの削除を機能を使い yabasic を選んで削除できる。
16
1.16
在庫管理
「商品の在庫量を管理するプログラムを作る。入庫量と出庫量をキー
ボードから読みとる。入庫は正、出庫は負の数とする。ゼロをキーボー
ドから入力すると、在庫量を画面に表示することとする。出庫量が在庫
量をこえたときは、全部出庫することにする。」
入力と出力の例
14
6
-11
0
9
2
-3
20
0
28
1.17
数の問題
例題プログラムとして、ある整数の約数を全部印刷するプログラムを書
いてみる。わかりやすいように、下のプログラムで、半角の空白 (スペー
ス) は、␣と表示した。
n␣=␣22000
for␣i␣=␣1␣to␣n
17
␣␣␣␣if␣(mod(n,i)=0)␣␣print␣i;
next␣i
このプログラムを自分で画面に入力すると、
n = 22000
for i = 1 to n
if (mod(n,i)=0)
next i
print i;
図 1.5: divisors.yab
図 1.5 のようになる。
最初の行は、整数 22000 の約数をしらべるということである。2 行目
は、BASIC の for 命令を使って約数を 1 からはじめて n までしらべるた
めに書いたものである。for 命令は、next i までの区間を繰り返す。next
i は、i をひとつづつ増やして繰り返す。
整数 n の約数を調べる肝心の行は 3 行目である。mod(n,i) は関数と呼
ぶ。n を i で割った余りをもとめるために使う。余りがゼロ (mod(n,i)=0)
なら、n は i で割り切れる、すなわち i は n の約数ということになる。
3 行目の先頭の if は、英語の「もしも」だ。だから、3 行目は日本語に
してよむと「もしも、n が i で割り切れるならば、print i、すなわち、i を
印刷する」だ。
この if 文を for …next ではさんで n-1 回繰り返す、という目的がこの
プログラムである。が、日本語で説明するよりも、プログラムの方が簡
潔である。まあ、ほとんどの場合、プログラムを説明すると長くなって
だるいつまらない日本語になるのはしかたがない。
18
1.17.1
yabasic プログラムを書いて実行
WindowsPowerShell の窓から notepad でプログラムを書いてファイル
(divisors.yab) に保存する。divisors.yab を動かす。
C:\Users\you>notepad divisors.yab
C:\Users\you>yabasic divisors.yab
プログラムで 22000 の約数 (因数) をすべてもとめた結果は次のように
なる。
1 2 4 5 8 10 11 16 20 22 25 40 44 50 55 80 88 100 110 125 176 200
220 250 275 400 440 500 550 880 1000 1100 1375 2000 2200 2750 4400
5500 11000 22000
1.17.2
練習問題
1. プログラム divisors.yab をもとにして、任意の整数の約数をもとめ
ることができるプログラムを書け。
2. 1 から 100 までの整数の約数をすべてもとめるプログラムを書け。
19