Recommended
PDF
PDF
PPTX
PDF
PDF
PPT
PPT
KEY
PPT
PPT
PDF
PPTX
PPTX
PDF
PPT
PPTX
PDF
PPTX
PDF
PDF
PDF
プログラミングロボットを用いたオンライン併用型の協調学習実践
PDF
PDF
PPTX
PDF
PDF
PPTX
PDF
PDF
PPTX
More Related Content
PDF
PDF
PPTX
PDF
PDF
PPT
PPT
KEY
Viewers also liked
PPT
PPT
PDF
PPTX
PPTX
PDF
PPT
PPTX
PDF
PPTX
Similar to 計算機理論入門02
PDF
PDF
PDF
プログラミングロボットを用いたオンライン併用型の協調学習実践
PDF
PDF
PPTX
PDF
PDF
PPTX
PDF
PDF
PPTX
PDF
PPTX
PDF
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
PDF
[CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて (発表資料)
PPTX
AtCoder Beginner Contest 004 解説
PDF
PDF
[CE81] プログラミング入門教育用学習環境PEN
PDF
More from Tomoyuki Tarumi 計算機理論入門02 1. 計算機理論入門2
2012 年度後期
垂水共之
tarumi@ems.okayama-u.ac.jp
20121003
2. 計算機から情報処理装置へ
• 日本語ワープロやゲームマシン( PS3, Wii )のように計
算(を主な仕事と)しない計算機が増えてきており、最
近は「計算機」と呼ぶより、「情報処理装置」と呼ばれ
ることが多くなってきた。
– iPod は MP3 音楽ファイルの再生機。
– Kobo など「電子書籍端末」はテキストファイルの再生機。
– デジタルフォトフレームは jpeg 画像ファイルの再生機。
3. アルゴリズムとプログラム
• 人間は、「平均値を求めよ」と言われただけで「2つの
値の和をとり、それを2で割る」という手順を理解し、
それに従って実行する。
• 計算機は自分で手順を考える能力が無い。このため、人
間が手順を考え、それを計算機に覚えこませて実行させ
る。
• この手順のことを「アルゴリズム」という。
• それをある決められた規則(文法)に従って書いたもの
が
「プログラム」である。
4. フローチャート(流れ図)
• アルゴリズム(処理手順)を図式に書き表したもの
– (1)問題を設定し、解析し、プログラムを書く手順を決める
段階で、論理的手順をはっきりさせる。
– (2)細かい部分を正確に把握すると同時に、全体を把握する
。
– (3)プログラムの処理手順をはっきりと表現する。
• 次の計算を考えてみよう。
「 a, b, c, a’, b’, c’ を入力して、次の連立方程式の解を求
める。
ax + by =c
a’x+ b’y =c’ 」
5. 流れ図の例(連立方程
始まり
式)
a,b,c,a’,b’,c’
• 上から下へ 入力
D = a b’ - a’ b
• 始まり
• 入力 ≠
D= 0
=
• 処理
• 判断 x = ( c b’ - c’ b) / D
y = ( a c’ - a’ c) / D a’ c = a c’
No
• 出力 Yes
• 終わり 不 定 不 能
結果の出力
終わり
6. 7. プログラミングとは
• 処理したいことを、
計算機が実行(計算)できるように
計算機の言葉で、論理的に述べること
• 次のフェーズからなる
– 問題の提起
– 解決方法の考案
– フローチャートの作成
– プログラムの作成
– デバッギング
– 記 録
8. (電子)計算機 (Computer) と電卓 (Calculator)
• プログラム内蔵(記憶)方式 Stored Program System
• 電卓と計算機の違い
– プログラム自身を計算機 ( メモリ ) に記憶すること
– 処理の高速化
• von Neumann が提唱
• 高級な「プログラマブル電卓」は電子計算機の範疇に入
る
9. 10. 機械語
• 計算機は高速に演算を処理するが,一時点をとれば一つ
の操作しかしていない。
• 計算機の理解できる基本的な操作を「命令」 (operation)
とか、「機械語」とか言う。
• 「機械語」は計算機の機種(正確にはCPU)ごとに異
なっており,どのような操作ができるかは個々の機種に
ついて調査しなければならない。
• プログラムはこの基本的な命令の一連の並びで作られ,
• 計算機は記憶している命令を上から順に実行していく
(逐次制御 automatic sequential control )だけである。
11. 機械語の例
• A+B を求め結果を C に格納する.
– [1] 1100 | 01 | 00 | 00000001
– [2] 1010 | 01 | 00 | 00000010
い
– [3] 1101 |く | 00 | 00000011
に 01
え 覚
読み にくい 直し!
ら覚え
– 頭の4ビット 命令を区別する
わった
U ) が変
次の 2 ビット 4 本の算盤(レジスタ)のうち、どの算盤を使
械 (CP
–
うか 機
– [1] レジスタ register に後の方で指定された場所の値をもって
くる。
– [2] 現在そろばんに置かれている値に後の方で指定された場所
の値をもってきて加える。(A+Bの値が求まる。)
– [3] そろばんに置かれている値(A+Bの値)を後の方で指定
された場所に格納する。
12. アセンブラ言語 (Assembler language)
• 0,1の組合せの暗号の機械語を人間が憶えることは至
難の業である。このため,人間が憶えやすい言葉で書く
ための言語として「アセンブラ言語」がある。アセンブ
ラ言語は命令のパタ-ンを憶えやすい記号(ニモニック
mnemonic )で表現できる。
• アセンブラ言語の例
• A+B を求め結果を C に格納する.
– LD 1,A
– ADD 1,B
– ST 1,C
13. アセンブラーとアセンブリング
• アセンブラ言語で記述したプログラムは「アセンブラ」
と呼ばれる特別のプログラムが例1の機械語に変換して
くれる。
• この変換を「アセンブリング」という。
• アセンブラ言語のニモニックは機械語と1対1に対応し
ており,機種(正確にはアセンブラ)によって異なる点
は機械語と同じである。
• 同じ機種に複数のアセンブラ言語がある場合もある。
– あるアセンブラでは load をLDと書くし、
– 別のアセンブラではLOADと書くものもある。
アセンブラ
LD 1,A 1100010000000001
Load, Store を区別
せずに
MV Move
アセンブリング で表すものもある。
14. 高級言語
• アセンブラ言語の機種依存性から脱却し,より日常用い
る言葉,数式に近い形でプログラムが記述できる言語と
して下記のような高級言語が開発されている。
• FORTRAN Formula Translation
• COBOL Common Business Oriented Language
• ALGOL Algorithmic Language
• PL/I Programming Language One
• BASIC Beginner's All Purpose Symbolic
Instruction Code
• APL A Programming Language
• PASCAL (フランスの科学者パスカルの名前
より命名)
• C ? ( BCPL → B → C )
15. コンパイラーとコンパイリング
• 高級言語で書かれたプログラムは、「コンパイ
ラー」 compiler と呼ばれる特別のプログラムが、機械語
に変換(翻訳、コンパイル)される。
• この変換、翻訳することを「コンパイリング」という。
1100010000000001
1010010000000010
コンパイラ
C=A+B 1101010000000011
コンパイリング
(翻訳)
「高級言語」 で書かれた 1 行の命令は、複数の機械語へ変換される。
16. レジスター
• スーパーやコンビニの「レジ係」とは「レジスタ=金銭
登録機」を操作し、会計をする人のことであるのは衆知
の通りである。
• 計算機も「計算」はレジスタを使って行う。計算機では
「レジスタ=算盤」と思えばよい。
• 人間が操作できる算盤や、電卓は1本に限られるが、現
在の計算機は電卓と異なり、レジスタ(算盤)を複数
(8本ないし16本)持っているものが多い。
• このためA+Bの計算をどのレジスタを使って行うか陽
に指示しなければならない。
• 計算機の世界では番号を0から付けることが多く、レジ
スタ0からレジスタpまでの(p+1)本のレジスタが
ある。このレジスタ番号を表しているのが機械後の第2
フィールド、アセンブラ言語のオペランドの第1フィー
ルドである。
17. Load と Store
• レジスタが16本あっても全
体の計算ではたかがしれてお
り、これだけで計算できるわ
けではなく、中間結果や計算
に用いる値をメモリに記憶す
る必要がある。
• メモリは512MB~8GB
程度を持っている。
• LOAD メモリの値をレジ
スタへ
• STORE レジスタの値をメ
モリへ
18. 両手の指でいくつまで数えられる?(閑話休
題)
• 両手の10本の指を使っていくつまで数えられるだろう
か? 1つずつ指を折っていき、10までというのが普
通だが、「2」の時に親指、人差し指の両方を折る必要
もなかろう。人差し指だけ折っていれば十分である。で
は「3」の時は?
• 中指だけを折るか、それとも「1 親指」と「2 人差
し指」の2本を折るか?これが2進数である。左の親指
、人差し指、中指、薬指、小指を順に1(=20)、2
(=21)、4(=22)、8(=23)、16(=24)
とし、折っている指の数を加えた値を表している。 ( N
HK パソコン実践セミナー 4月/5月 P29,図4-4より )
19. コンパイラとインタプリタ
• コンパイラ compiler
– 高級言語等で書かれたプログラムは、まとめて機械語に翻訳し
、翻訳された機械語を一気に実行する。
• インタプリタ interpreter
– インタプリタ言語で書かれたプログラムを順次翻訳し、実行す
る。
– 例: BASIC
• スクリプト script
– 簡単な処理(テキスト処理が多い)を簡単に記述できるように
したスクリプト言語で書かれたプログラムを順次解釈して処理
する。
– インタプリタ言語と基本的な動きは同じであるが、簡単なもの
をいうことが多い。
– 例: perl, ruby, python, awk, sed
20. 練習問題
• ニモニックとは何か説明しなさい。
• 高級言語とアセンブラ言語の違いは何か。
• 高級言語を数個例示し、その特徴を述べよ。
• レジスタを説明しなさい。
• 両手の指でいくつまで数えられるか?