九州大学 工学部地球環境工学科 講義資料 担当：木村

情報処理概論

01. コンピュータの原理

Turing Machine （チューリングマシン） Alan M. Turing 1936
一般的なコンピュータの数学的モデル
書き換え可能なテープ…

00021158900012222•

オートマトン

021

内部状態

••
•

書き換え可能なテープ ＝ メモリー
テープ上を移動してデータを読み書きするオートマトン ＝ CPU2…

書き換え可能な無限に長いテープと、テープ上を移動してその位置のデータを読み書き可能なオートマトンから構成される。
テープには予め文字が書かれている（計算機へのデータ入力とプログラムに相当）オートマトンの動作（テープの読み書きや移動）は今の場所のデータと内部状態によって決まる。
処理結果はテープ上に出力される

大型計算機からワンチップのマイクロプロセッサまで、あらゆるコンピュータはこれと同じ構成

CPUとメモリー•••

8, 16, 32 or 64 (bit)アドレス

１次元的に並んだメモリーがあり、メモリーに格納されたデータは自然数の番地で参照して読み書きできる。
メモリーに格納されたプログラム（命令）とデータの見かけ上の区別は無い
ノイマン型コンピュータと呼ばれるアドレス(16bit)

アドレス指示データ(8bit)
0 - 255012
30000…

ザイログ社製
Z80 CPU （1976年）
インテル8080互換

65534
65535

00

読み込み／書き込み指示

メモリー(64KB)

ある番地のデータを命令として実行したら次の番地の命令を実行
リセット直後は0番地からスタート

Z80命令（一部）
058 n m
50 n m
128
71
160
60
202 n m…

命令を読み飛ばして次の番地の命令実行
CPU内のAレジスタにmn番地の値を入れる
mn番地にCPU内のAレジスタの値を入れる
AレジスタにBレジスタの値を加える
BレジスタにAレジスタの値を加える
AレジスタとBレジスタのANDをとり結果をAへ
Aレジスタの値を1つ増やす
直前の計算結果が0のときmn番地へジャンプ…
レジスタとは：CPU内の変数記憶装置
A,B,C,D,E,H,Lレジスタが使用可能だがAだけ特別に高機能コンパイラ／インタプリタ
計算機に直接命令を指示する場合、ハードウエアに依存した命令コードやメモリの番地、使用するレジスタなどを記述しなければならない
機械語＝バイナリコード（数字の羅列）／アセンブリコード（命令を簡単な文字列で表したコード）

機械語を生成コンパイラ（C/C++, FORTRAN, Java）
インタプリタ（Basic, Python）

利用者は、問題解決のための処理手順（アルゴリズム）の作成だけに専念すべき
ハードウエア非依存、かつあいまいさのないアルゴリズムの表現方法 ＝ プログラミング言語例） C／C++言語，FORTRAN，Basic，Java，Pythonなど
アルゴリズム自然言語で表現

プログラミング言語

プログラム

特定のハードウエアに非依存ではあるが、「アドレスを指示してデータを読み書き」するプロセッサの基本原理に沿って書式が定義されている例） データの格納など

プログラミング言語Python
•
•
•
•
•

オランダ人Guido van Rossum (現Dropbox勤務) によって１９８０年台に開発がスタート．
インタプリタ方式（対話式で動作可能）
Python3が最新版で主流になりつつある．
Python2もまだ現役だが２０２０年にサポート停止予定.
多様な用途（https://www.python.org/about/apps/）• ウェブ，科学技術計算，データ解析，教育，GUI，ソフトウェア等

本講義・演習で用いるPythonの情報源• 一次情報源• Python チュートリアル https://docs.python.jp/3.6/tutorial/• ウェブ上の資料・本•Think Python
http://greenteapress.com/wp/think-python/• 上記の日本語化プロジェクト
http://www.cauldron.sakura.ne.jp/thinkpython/• その他（Python 関係の書籍・ウェブ上の資料は多量）• テキスト：Pythonスタートブック 技術評論社 ISBN978-4-7741-9643-5

このテキストに沿って実行環境を整えますPythonのインストール
１）ブラウザで次のURLへ： https://www.python.org/
２）トップページのメニューから「Downloads」をクリックし、Windows→Python3の最新バージョンをクリック
ダウンロードあるいは直接実行してインストーラを起動３）インストーラのウインドウの下にある「Add Python 3.6 to PATH」をクリックしてチェックを付ける（これで環境パスの設定を自動的にやってくれる）
続いて「Install Nowをクリック」
４）インストールが終了したら、「Close」ボタンを押してインストーラを終了

その他の設定１）ファイルの拡張子を見えるようにする
スタートメニューから「Windowsシステムツール」→「コントロールパネル」→「デスクトップのカスタマイズ」→「エクスプローラのオプション」へ進み、表示されるウインドウ
で「表示」タブをクリック「登録されている拡張子を表示しない」の項目のチェックを外す
２）プログラムのコードを編集してファイル読み書きするため、テキストエディタをインストール
TeraPadがお勧め「窓の杜」サイトからダウンロード・インストールしてくださいPythonのプログラムコードファイル編集と実行
１）デスクトップ、あるいはエクスプローラで「新規作成」→「フォルダ」から新しいフォルダを作成し名前を付ける。
２）テキストエディタを起動し、Pythonのプログラムコードを編集したら、上記で作成したフォルダへ拡張子として.py を付けて「名前を付けて保存」する。例） test.py３）「スタートメニュー」→「Windows PowerShell」をクリックして実行または「Windowsシステムツール」→「コマンドプロンプト」を実行

シェルのカレントディレクトリがこのフォルダへと移動します＝入出力ファ
イルがこのフォルダになる

４）上記のシェルまたはコマンドプロンプト上で> cd と文字入力し、半角スペースを１つ入力してから、１）で生成したフォルダをドラッグアンドドロップ
するとcd の文字の後ろに１）のフォルダを示すパスの文字列が入力されるので、Enterキーを押す
５）> dir と入力すると、カレントディレクトリのファイル一覧が表示される
６）> python test.pyと入力してEnterキーを押すとtest.pyが実行され、結果が表示される
７）以降、必要に応じてPythonのコードを編集し、再度６）でプログラムを実行

開始
print("Hello,")print("world!")

終了

プログラムの流れ
上から順番に読み込まれ実行されていく画面への文字出力関数 print【注意】
日本語を使う場合は、ファイルの文字コードをUTF8にすること。

• プログラム中では下のように記述
print("表示したい文字列")
引数（この内容が表示される）• “ ” : ダブルクォート•

Python ではダブルクォートの代わりに‘’(シングルクォート）を用いてもよい• print関数はデフォルトで改行を出力• あえて改行させたくない時は endオプションを用いる• 途中で改行も出来るまとめ

チューリングマシン／CPUとメモリ
アルゴリズムとプログラム／コンパイラ／インタプリタ
Pythonによるプログラミング

第１回 レポート課題
print関数を４回使って「おはよう」「こんにちは」「こんばんは」「おやすみ」を各１行で表示するプログラムをprint関数を一つだけ使って実現せよ．

下記の課題提出用フォルダへ、課題の番号と提出者が分かるようにファイル名を以下のようにしてアップロードせよ
第１回1TE19xxxZ名前.py
https://share.iii.kyushu-u.ac.jp/public/lRbwAAVITI5A2X4BE45t6TqQIE0UQSQUl5Bap_kZ_sjy