5月28日(水) 第7回講義⑥ 資料

計算機数学 配布日時 2014 年 5 月 28 日
計算機数学講義 (第7回)
5月28日(水) 第 7 回 講義室
6月 4日(水) 第 8 回 応数計算機室(20号館6階)
6月11日(水) 第 9 回 応数計算機室(20号館6階)
★履修取消 5月29日(木)、5月30日(金)
★懇親会日程変更
新入生懇親会(研修会)
6月13日(金)
16:30開場、開始17時~
18時半頃~片付け開始、解散
★場所 11号館8階 ラウンジ
★無料、景品もあるかも。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
プログラム言語の必要性
プログラム・・・・電子計算機(コンピュータ)に実行させる手順を定義したもの
手順の記述・・・・コンピュータに処理を行わせる手順を記号化したもの
手順=アルゴリズム
その記号化の第1歩・・・→図を用いて表現・・・→フローチャート
計算機の知能:お話
アラン・チューリング(1912~1954) はイギリスの数学者で、 チューリングマシンは 1936
年に発表された彼の論文、「計算可能数についての決定問題への応用」の中で、計算を数学的に
モデル化するために提唱された仮想の計算機です。
本当か?
チューリングが示したかったのは、あらゆる数学の問題を自動的に解くことがで
きる「究極のアルゴリズム」は存在しない、ということだったのだ。
もしそのような「究極のアルゴリズム」が存在すれば、もう数学者はいらない。
37
37
計算機数学 配布日時 2014 年 5 月 28 日
アルゴリズムに従って機械的な作業を続けるだけで、数学の問題は次々と解ける
ことになるのだから。
『万能チューリングマシンの存在定理』数学的に証明されること。
いかなるチューリングマシンであろうとも、それを模倣することが可能なチューリングマシン
(万能チューリングマシン)が可能である。
実は「万能チューリングマシン」=「コンピュータ」
哲学上の背景
1956 年に生まれた人工知能の分野は、哲学的にかなり根が深い問題であった。機械は思考でき
るのかという問題には長い歴史の末に、心に関する二元論と唯物論にはっきりと分けられてい
た。二元論の立場からすれば、心は形而上の(もしくは少なくとも形而上の性質を持っている存
在であり、したがって単に物理的な文脈では説明できないことになる。一方で唯物論の立場から
すれば、心は物理的に説明でき、したがって心を人工的に作りだせる可能性はあることになる。
1936 年、哲学者のアルフレッド・エイヤーは他者の心(other minds)に関して、他者が自分と
同様の意識体験を持っているとなぜ分かるのか? という有名な哲学的疑問を検討した。著書
『言語・真理・論理』の中で、エイヤーは意識を持つ人間と意識を持たない機械を区別する方法
を以下のように提案している。「私にとって、意識を持っているように見える対象が、本当は意
識をもつ存在ではなく単なるダミーや機械であると判断する根拠は、意識の有無を判定するため
の経験的なテストのどれかに失格した、ということしかない。」この意見はチューリングテスト
にとてもよく似ているが、この、エイヤーの有名な哲学上の古典がチューリングを支持している
のかは定かではない。
右図はロボットに対する
人間の感情。
お話:終了
――――――――――――――――――――――――――――――――――――――
アルゴリズム
この授業ではフローチャート使って
アルゴリズム&計算手順をしめすことを行う。
フローチャートで用いられる記号は右図の
説明のように、基本的な記号しか用いない。
特に、端子は開始(初め)
、終了(終わり)
の二つだけである。
(1) プログラムの開始と、終了の端子は各1つのみにする。
開始の端子はフローチャートの上の方、終了の端子はフローチャートの下の方に書く。
もし誤解の恐れがあれば、端子内に開始・終了がわかるように書き入れる。
(2) 処理の流れは原則として、上から下へ、左から右へ。
38
38
計算機数学 配布日時 2014 年 5 月 28 日
それに逆行する際には、必ず矢印にする。
すべての処理の流れに矢印をつけても問題ない.
(3) 線がなるべく交差しないようにする。
・流れ、逐次処理と判断(条件による)分岐を理解する。
直線型フローチャート
分岐型フローチャート
繰り返し型フローチャート
(順次型ともいう)
直線型とは、処理の流れが一直線に
分岐型とは条件を判断してその判断
判断の結果によってある行動を
進むタイプのフローチャートです。
によって処理が変わるタイプの
繰り返すタイプのフローチャートです
フローチャートです。
処理
データの入出力
計算機数式を使った代入
入力又は出力を書き、内容
をハッキリ記入
処理と同じように長方形で書いても構わない
39
39
計算機数学 配布日時 2014 年 5 月 28 日
ただし、処理と同じように書くときには
出力と入力は区別するように。ちゃんと記述する。
出力
入力
出力:ディスプレイ
入力:キーボード
判断
条件式を使って書く
YES
図で右図のように書く。
YES, NO は必ず記入。
NO
条件式
比較演算子
判断
値の大小を比較する条件式などで利用する演算子のこと
- 比較演算子
等しい
小さい
大きい
以下
以上
等しくない
=
<
>
≦
≧
≠
programa、
==
(来年度)
<=
>=
!=
注意) 紙に書く場合は、どちらの記号を使っても良い
比較を使った判断をするフロー図
・ある学生の計算機数学の試験結果が変数 a に入っている。
合格か不合格かを画面に表示する計算のフロー図を示せ。
ただし、60点以上の時に合格、60点未満の時に不合格とする。
注意)
フローチャートは、開始、終了を持ちアルゴリズムを表すもの。
フロー図、計算フロー図 は計算方法などを図で表したもの。
40
40
計算機数学 配布日時 2014 年 5 月 28 日
【成績判定】
秀
90≦a≦100
優
80≦a<90
良
70≦a<80
可
60≦a<70
a ≥ 60
No
Yes
出力:
出力:
合格
不合格
不可
0≦a<60
例題
キーボードから2つの数を読み込み、大きい数を画面に出力するフローチャート
開始
計算のフロー
処理、判断の流れを線で表すこと。
入力:
キーボードから
a
・キーボードから変数 a, b に
数を入れる。
入力:
キーボードから
b
a≥b
・2つの数のうちで大きい方を
画面に出す。
No
Yes
出力:
大きいのは a、a
出力:
大きいのは b、b
終了
a と b の大きな値を変数 c に代入するフロー図
a >b
NO
YES
c=a
c=b
41
41
計算機数学 配布日時 2014 年 5 月 28 日
例題 変数 a,b,c にキーボードから数値を入力して、一番大きな
数を画面に出すフローチャートを作成せよ。
計算のフロー図
変数 a, b, c は入力されているとする
Yes
a≥c
a≥b
No
No
b≥c
No
Yes
Yes
出力:
出力:
出力:
大きいのは a、a
大きいのは b、b
大きいのは c、c
出力:
大きいのは c、c
奇数、偶数の判定
変数 a に入っている数
は偶数
必ず、計算機の数式で記述する。
No
Yes
出力:
出力:
偶数
奇数
a は偶数か?
a は2で割り切れるか?
a は2で割った余りが0であるか?
mod(a, 2) == 0
以下のように書く
mod(a, 2) == 0
No
Yes
出力:
出力:
偶数
奇数
42
42
計算機数学 配布日時 2014 年 5 月 28 日
沢山の分岐のフローチャート
条件式1
条件式2
処理
条件式
処理
処理
例題2
処理
変数 a に数が入っている。このとき、 a の値が次のようなときに
「正しいです」と表示するフローを作れ。
a
2
1
1 ≤a≤2
a ≥1
NO
【論理演算子】
記号
AND
OR
NOT
&&
||
!
意味
論理積 かつ、そして
論理和 またわ
論理否定 でない
YES
a ≤2
NO
YES
画面表示
「正しいです」
紙に記述する際は、記号はどちらを使っても構わない。
43
43
計算機数学 配布日時 2014 年 5 月 28 日
論理積(AND)
論理和(OR)
排他的論理和(XOR)
否定(NOT)
論理演算子
1 ≤a≤2
論理演算子は2項演算子なので、上記のような書き方は出来ない。
計算機に理解できるようにキッチリと書く。
正確に書くと
(1 ≤ a ) & & ( a ≤ 2 )
( 1 ≤ a ) AND ( a ≤ 2 )
となる。
(1≤ a ) AND (a ≤ 2)
NO
YES
画面表示
「正しいです」
44
44