• 検索結果がありません。

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

N/A
N/A
Protected

Academic year: 2021

シェア "コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?"

Copied!
77
0
0

読み込み中.... (全文を見る)

全文

(1)

人間科学科コミュニケーション専攻

白銀 純子

コンピュータ・サイエンス2

第8回

(2)

第8回の内容

プログラミング言語

ソフトウェア開発の流れ

コンピュータの動作原理

ソフトウェアのインストール

プログラムの起動と実行

コンピュータの特徴

(3)
(4)

外国人に手紙を書く場合どうする??

相手がわかる言葉で手紙を書く

相手が理解できる言葉を覚えるのは大変!!

コンピュータには、手紙(命令書)で命令

コンピュータが理解できる言葉で手紙(命令書)を書く

私は...

I am...

(5)

外国人に手紙を書く場合どうする??

相手がわかる言葉で手紙を書く

相手が理解できる言葉を覚えるのは大変!!

コンピュータには、手紙(命令書)で命令

コンピュータが理解できる言葉で手紙(命令書)を書く

私は...

%$&**!+#?...

I am...

(6)

コンピュータが理解できる言葉は?

コンピュータが理解できる言葉:

機械語

コンピュータは、2進数しか理解できない

人間が理解するのは難しい

010001110101

命令書を人間が理解できる言葉で書き、

それを訳したものをコンピュータに渡す

プログラミング言語

(7)

プログラミング言語(p. 71)

プログラム(コンピュータへの命令書)を記述するための

言語

低水準言語

高水準言語

etc.

(8)

低水準言語[1](p. 72)

ハードウェアの種類に依存する部分が多い言語

Ex. 2つの異なるCPU AとBで、ある同じ計算をするときに、

AとBで処理方法が違う

→Aを使うときとBを使うときでプログラム言語で書く命令を

変える必要あり

人間にとっては、プログラムを書きにくい

すごく細かい処理を書く必要性

Ex. 「10+20」の計算のために10個の命令が必要、など

コンピュータにとっては理解しやすい

(9)

低水準言語[2](p. 72)

機械語

コンピュータが直接理解できるプログラミング言語

全て2進数で記述

「バイナリコード

」とも

001011101110000110101011

110001010111000101010010

...

機械語イメージ

(10)

低水準言語[3](p. 72)

アセンブリ言語

機械語の命令を、英単語や記号で表した言語

命令を2進数で考えなくて良い分、プログラムの記述が

簡単

書かれた命令を機械語に変換しないと、コンピュータは

命令を実行不可能

LD GR1, 10

ADD GR1, 20

ST GR1, 30

アセンブリ言語の例

(11)

高水準言語(p. 72)

ハードウェアの種類を意識せずに記述できる言語

人間にとっては、アセンブリ言語よりも書きやすい

命令の処理方式によっていくつかに分類

手続き型

関数型

論理型

オブジェクト指向型

書かれた命令は、機械語に変換されて

コンピュータが実行

それぞれ、いろいろな言語あり

(12)

スクリプト言語(p. 73)

命令書を機械語に変換することなく実行できる

プログラミング言語

人間が変換作業をする必要のない言語

⇔低水準言語(機械語を除く)・高水準言語は、人間が

変換用ソフトウェアを使って、機械語に変換する作業を

する必要のある言語

記述したプログラムを「スクリプト

習得するのが容易

Ex. HTMLやJavaScriptなど

(13)
(14)

手紙を訳すには?

手紙を翻訳する

手紙を通訳する

日本語

翻訳者

英語

受取人

日本語

(15)

言語処理方式(p. 73)

プログラミング言語で書かれた命令書: 機械語に

変換しなければ、コンピュータは実行

変換方式は大きく分けて2種類

コンパイラ

: 翻訳

インタプリタ

: 通訳

(16)

コンパイラ[概要](p. 75)

コンパイラ

: 命令書を機械語に翻訳し、

コンピュータで実行可能にするためのソフトウェア

Step 2. 手紙(英語)

Step 2. 手紙(英語)

Step 1. 手紙(日本語)

Step 1. 手紙(日本語)

Step 3. 手紙(英語)

外国人

日本人

翻訳者

(17)

コンパイラ[概要](p. 75)

コンパイラ

: 命令書を機械語に翻訳し、

コンピュータで実行可能にするためのソフトウェア

日本人

Step 1. 手紙(日本語)

Step 2. 手紙(英語)

外国人

翻訳者

コンピュータ

Step 1. ソースコード

Step 2. バイナリコード

命令書を全て

翻訳して相手に渡す

「コンパイル」する

コンパイラ

(18)

コンパイラ[詳しく](p. 75)

コンパイラ/アセンブラ

バイナリコード

ソースコード

書く

オブジェクトコード

オブジェクトコード

オブジェクトコード

リンク

(19)

用語[1](p. 75)

ソースコード

: プログラミング言語で記述した命令書

オブジェクトコード

: ソースコードを翻訳したもの

コンパイル

: 高水準言語をオブジェクトコードに

翻訳すること

アセンブル

: 低水準言語をオブジェクトコードに

翻訳すること

(20)

用語[2](p. 75)

実行可能プログラム

: コンピュータが実行可能な

形に変換・処理された命令書

ソフトウェアそのもの

連係編集

(

リンク

): 複数のオブジェクトコードを

連結して、1つの実行可能プログラムを作成すること

1つのソフトウェアのソースコードは、複数のファイルに

分割して記述されることが多い

リンケージエディタ

(

リンカ

): 連係編集をするための

ソフトウェア

(21)

インタプリタ(p. 76)

インタプリタ

: 命令書を最初から1行ずつ読んで

機械語に通訳するためのソフトウェア

Step 1. 手紙(日本語)

Step 1. 手紙(日本語)

Step 2. 手紙から一行ずつ(英語)

外国人

日本人

通訳

(22)

インタプリタ(p. 76)

インタプリタ

: 命令書を最初から1行ずつ読んで

機械語に通訳するためのソフトウェア

Step 2. 手紙から一行ずつ(英語)

Step 1. 手紙(日本語)

外国人

日本人

Step 2. ソースコードから一行ずつ(機械語)

Step 1. ソースコード

コンピュータ

インタプリタ

通訳

命令書を一行ずつ

翻訳して伝える

(23)
(24)

ソフトウエアの開発の流れ

ソフトウェアの開発計画から実際の開発、できあがった

ソフトウェアの利用やメンテナンスの流れ:

ソフトウェアのライフサイクル

ソフトウェアは、利用者側が開発側に開発を依頼

利用者側: 開発が業務としない企業や企業内の部署

開発側: 開発を業務とする企業や企業内の部署

企画

要求分析

設計

(25)

企画

ソフトウェアの利用者側がソフトウェアの導入を

決定する(業務改善などのため)

RFP(提案依頼書)などを作成し、開発側に提示

RFP (Request For Proposal): 欲しいソフトウェアの内容や

予算、導入スケジュールなどの条件を書いた、利用者側

(客側・依頼者側)が作成する文書

提示する開発側は、多くの場合、複数の業者(競争入札で

発注する業者を選定するため)

開発側がRFPについて検討し、ソフトウェアの詳細や

スケジュール(

提案書

)、コストの見積もり(

見積書

)を提案

(26)

要求分析

開発側が利用者側から、ソフトウェアに対する要望を

聞いて分析

どのような機能があれば良いか?

開発の上での条件はあるか?

機能以外で重要なこと(セキュリティや保守性など)は

あるか?

etc.

利用者側のニーズが実現可能かどうかなどを検討

実現可能と判断したニーズについて、実現するための詳細

仕様化

(27)

設計

要求仕様書に書かれている要求を、どのように

コンピュータで実現するかを決定

どのような技術を使うか?

すでに存在するソフトウェアやハードウェアで、使えるものは

あるか?

どのような設計図にするか?

etc.

(28)

実装

(29)

テスト

実装した(プログラミング言語で記述した)ソフトウェアに

問題がないかをチェック

うまく動かないところはないか?

入力したものに対し、適切な出力が出ているか?

おかしな動作をするところがないか?

要求仕様書に記述された要求が、すべて実現されて

いるか?

要求仕様書に記述された要求が、適切に実現されて

いるか?

etc.

(30)

運用・保守

運用: ソフトウェアを導入し、利用

ソフトウェアをインストール

インストールしたソフトウェアを動作させ、利用

保守: ソフトウェアのメンテナンス

不具合の修正

機能の追加

機能の内容の変更

etc.

(31)
(32)

ソフトウェア(p. 78)

OS: HDDに記録されていなければコンピュータを

起動できない

HDDに記録されていない場合は、記録する作業を行う

市販されているコンピュータでは、OSはあらかじめHDDに

記録されている

OSを含めてソフトウェアをHDDなどに記録し、

利用可能な状態にすること = インストール

(33)

インストール[1](p. 78)

多くの場合、インストーラを使ってソフトウェアを

インストール

インストーラ

: ソフトウェアをインストールするための

ソフトウェア

ウィザード(質問に答えていくことで、ソフトウェアをインストールしたり

設定するソフトウェア)を使ってインストールするものが多い

例: Outlook Expressのメールアカウントの設定ウィザード

(34)

インストール[2](p. 78)

インストーラの機能

ウィザードを使ってソフトウェアの初期設定

インストール場所に自動的にフォルダを作って、本体の

プログラムなどの必要なファイルを保存

起動用アイコン(ダブルクリックするとソフトウェアが起動する

アイコン)の作成

(35)

ソフトウェアの配布形式

CD-ROMまたはDVD-ROM

コンピュータにCD-ROMやDVD-ROMを入れると、

自動的にウィザードが起動することが多い

Webサイトからダウンロード

ソフトウェアを利用するために必要なファイルを全てまとめて

圧縮し、1つのファイルにしていることが多い

ダウンロードしたファイルを解凍し、「setup.exe」ファイルを

ダブルクリックすると、インストーラが起動することが多い

解凍

: 圧縮されているファイルからもとの圧縮前のファイルを

取り出すこと(複数のファイルをまとめて圧縮して1つのファイルに

(36)

OSとソフトウェアの連携[1]

ソフトウェア: 基本ソフトウェアとアプリケーション

ソフトウェアに分類

基本ソフトウェア(OS): ハードウェアを直接管理するための

ソフトウェア

ハードウェアに対して、様々な命令をする

アプリケーションソフトウェア: ハードウェアには直接的には

関与しないソフトウェア

通常、マウスやキーボードで人間が操作するソフトウェア

ハードウェアとのやりとりが必要な場合は、OSを仲介

(37)

OSとソフトウェアの連携[2]

アプリケーションソフトウェア

Ex. Webブラウザ, メールソフト, Officeソフトなど

基本ソフトウェア(OS)

Ex. Windows, Mac OS, Unixなど

ハードウェアとやりとりがしたい

Ex. HDDに保存してある

データを読みたい

アプリケーションソフトの要求を

伝える

Ex. HDDに保存してある

ハードウェアの処理結果を

伝える

Ex. HDDからのデータを渡す

命令を処理して結果を伝える

Ex. HDDに保存してある

データを取り出して渡す

(38)
(39)

ソフトウェアの起動[1](p. 78)

ソフトウェアの起動アイコンをダブルクリック

or 実行可能プログラムを指定

起動アイコンは、ソフトウェアの実行プログラムそのもの、

または実行プログラムのありかを示したもの

→ダブルクリックすることは、実行プログラムの指定と同じ

実行プログラムがHDDからメインメモリに転送

「ローディング

」と呼ぶ

(40)

ソフトウェアの起動[2](p. 78)

ローディングされたプログラムの命令をCPUが

取り出して解読

CPU

OSを記録

している領域

実行プログラムを

記録する領域

命令

データ

実行プログラム

実行プログラム

実行プログラム

入出力装置(キーボード, ディスプレイなど)

補助記憶装置

メインメモリ

(41)

CPUの命令解読例(p. 80)

「10+20」の計算をするプログラム(C言語)

x, y, zという名前の3つの箱を用意する

プログラムでは、データは箱に入れて扱う

yとzという箱にそれぞれ10と20を入れる

xという箱に、「y+z」の結果を入れる

計算結果を画面に表示する

#include<stdio.h>

void main() {

int x;

int y = 10;

int z = 20;

(42)

CPUの命令解読例[手順図](p. 80)

デコーダ

ALU

50→51→52

プログラムカウンタ

LD→AD→ST

命令レジスタ

制御部

10→30

アキュムレータ

20

オペランドレジスタ

演算部

LD 101

AD 102

ST 100

30

10

OSを記録している領域

プログラムを記録する領域

50

51

52

100

101

CPU

メインメモリ

(43)

CPUの命令解読例[手順1](p. 81)

1.

プログラムカウンタによって、メインメモリの50番地が

設定される

これにより、50番地の「LD 101」命令が取り出され、

命令レジスタに転送される

2.

プログラムカウンタの数値を1増やす

3.

デコーダが「LD 101」を解釈して実行する

これにより、101番地のデータをアキュムレータに転送

する(「LD」はCPUへのデータの転送命令)

(44)

CPUの命令解読例[手順2](p. 81)

4.

プログラムカウンタの数値が51なので51番地の

命令を取り出す

これにより、51番地の「AD 102」命令が取り出され、

命令レジスタに転送される

5.

プログラムカウンタの数値を1増やす

6.

デコーダが「AD 102」を解釈して実行する

これにより、102番地のデータをオペランドレジスタに

転送する

ALUにより加算処理が行われる(「AD」は加算命令)

(45)

CPUの命令解読例[手順3](p. 81)

7.

プログラムカウンタの数値が52なので52番地の

命令を取り出す

これにより、52番地の「ST 100」命令が取り出され、

命令レジスタに転送される

8.

プログラムカウンタの数値を1増やす

9.

デコーダが「ST 100」を解釈して実行する

これにより、アキュムレータにあるデータ「30」を100番地に

格納する(「ST」はデータのメインメモリへの格納命令)

10.

次の命令へ進む

(46)

CPUの命令解読例[概要](p. 81)

C言語のプログラムの「x=y+z;」の計算をするために

Step1~Step9の手順

Step1~Step4: 「y」という箱からデータを取り出す処理

Step5~Step6: 「z」という箱からデータを取り出し、

「y+z」の計算をする処理

Step7~Step9: 「x」という箱に「y+z」の結果を入れる

処理

(47)
(48)

コンピュータの特徴(p. 81)

コンピュータでのプログラムの処理方式

デジタル方式

プログラム内蔵方式

逐次制御方式

(49)

デジタル方式(p. 81)

全てのものを2進数に変換して扱う方式

プログラム

入力・出力データ

数字, 文字, 記号

図表, 静止画, 動画, 音声, 音楽

etc.

論理素子・記憶素子: CPUやメモリの構成要素

電圧の高低で動作を制御

電圧の高低を2進数の0と1に対応

(50)

プログラム内蔵方式(p. 82)

当初のコンピュータ: 現在プログラムが行っている

処理をスイッチと配線の組み換えでその都度操作

スイッチと配線の組み換えで様々な命令を表現

非常に手間がかかり、間違いが多発

たくさんのスイッチのONとOFFを逐一切り替える必要

同じ処理をするために毎回プログラムを作成する必要

(51)

プログラム内蔵方式(p. 82)

プログラム内蔵方式

: 作成したプログラムを

記憶装置に記憶させて利用する方式

プログラムを実行するときに命令を記憶装置から

取り出して実行

同じ処理をするためにプログラムは1度だけ作成

用途に応じてプログラムを入れ替え、様々な処理を実行

「フォン・ノイマン」という人に

よって提案された方式

フォン・ノイマン: 「コンピュータの父」と呼ばれるアメリカの数学者

(52)

逐次制御方式(p. 82)

メインメモリから命令が1つずつ取り出されて実行

される方式

プログラムカウンタによって、命令が格納されている番地を

指定

その番地から命令を取り出して実行

プログラムカウンタの数値を1増やして次の命令の

番地を指定

CPUとメインメモリの間の通信経路の転送速度のために

コンピュータ全体の処理の速度が遅くなる問題も存在

(53)
(54)

アルゴリズムとは[1](p. 88)

アルゴリズム

: ある問題を解決するときに必要な

処理手順

ソフトウェアでの処理の方法を記述したもの

何をどのように行うかを記述

コンピュータには手順を1つ1つ詳細に指示する必要

人間には一言ですむような処理でも、コンピュータがその処理を

こなすには、たくさんの手順が必要

(55)

アルゴリズムとは[2](p. 88)

焼きそば作りの例

人間への命令:

焼きそばを作りなさい。

コンピュータへの命令:

1.

キャベツや肉などの具をフライパンで炒めなさい。

2.

フライパンからいったん具を取り出しなさい。

3.

めんをフライパンで炒めなさい。

4.

具をめんの入っているフライパンに戻しなさい。

5.

焼きそばソースを加えてさらに炒めなさい。

「焼きそばを作る」という問題を

解決するためのアルゴリズム

(56)

アルゴリズムとは[2](p. 88)

焼きそばを作るアルゴリズム

1.

キャベツや肉などの具をフライパンで炒めなさい。

2.

フライパンからいったん具を取り出しなさい。

3.

めんをフライパンで炒めなさい。

4.

具をめんの入っているフライパンに戻しなさい。

5.

焼きそばソースを加えてさらに炒めなさい。

フライパンが大きければ2. は不要

フライパンが小さければ2. は必要

人間はこのくらいの指示をもらえば臨機応変に対応

コンピュータには、何人前でフライパンの直径が何cm

以上であれば大きいかを具体的に指示することが必要

(57)

アルゴリズムの書き方(p. 90)

文章で書く

箇条書きで書くことも多い

簡単な図で書く

(58)

焼きそば作成[簡単な図](p. 91)

3. めんを炒める

1. 具を炒める

2. 具をいったん取り出す

(59)

焼きそば作成[詳細な図](p. 91)

開始

フライパンを火にかける

フライパンに油を引く

具を炒める

具をいったん取り出す

めんを炒める

さらに炒める

フライパンに具を戻す

火が通ったか

火が通ったか

Yes

No

Yes

(60)

やってみよう!

教科書の練習問題を考えること

(61)

アルゴリズムの記述 (p. 91)

用途に応じて記述の詳しさは代わる

解決したい問題について詳しい人には、簡単な説明

簡単な図での焼きそばの作り方の説明

解決したい問題について詳しくない人には、詳細な説明

詳細な図での焼きそばの作り方の説明

コンピュータには、常に詳細な説明が必要

ある問題を解決するためのアルゴリズムは1通りとは

アルゴリズムは最終的には、ソフトウェアの内部での処理手順を表す

=最終的にはより詳細なアルゴリズムの記述が必要

(62)
(63)

最大公約数(p. 92)

2つの数の最大公約数を求めるアルゴリズムは2通り

素因数分解で求める

(64)

素因数分解(p. 92)

1.

1つ目の数を素因数分解する

2.

2つ目の数を素因数分解する

3.

それぞれの素因数の共通項を掛け合わせる

Ex. 136と24の最大公約数

136 = 2×2×2×17

24 = 2×2×2×3

共通項: 2×2×2 = 8

(65)

ユークリッドの互助法(p. 92)

1.

2つの数のうち、大きい方を小さい方で割る

2.

1. の余りが0でない場合、その余りと小さい方の数を

改めて2つの数とし、1. へ戻る

3.

1. の余りが0の場合、割った数が最大公約数と

なる

Ex. 136と24の最大公約数

136 = 2×2×2×17

24 = 2×2×2×3

136÷24 = 5 … 16

24÷16 = 1 … 8

(66)
(67)

ATM[1](p. 93)

人間から見える手順

1.

「引き出し」ボタンを押す

2.

キャッシュカードを入れる

3.

暗証番号を入力する

4.

引き出し金額を入力する

5.

現金を取り出す

(68)

ATM[2](p. 93)

ATM側での処理手順

1.

初期画面を表示してボタンが押されるのを待つ

2.

押されたボタンによってサービスの種類を判別する

a.

「引き出し」ボタンの場合、3. へ進む

b.

「預け入れ」ボタンの場合、4. へ進む

... 以下略 ...

3.

サービスの種類が「引き出し」の場合

a.

カードを入れてくださいと表示する

b.

正しいカードかどうかを調べる

c.

暗証番号を調べ、番号が間違っていたら5. へ進む

(69)

ATM[3](p. 93)

4.

サービスの種類が「預け入れ」の場合

... 以下略 ...

5.

「最初からやり直し」の画面を表示して、1. へ戻る

(70)

アルゴリズムからプログラムへ(p. 94)

アルゴリズムで記述した処理をコンピュータで実行

→プログラミング言語で記述する必要

アルゴリズムの内容が大雑把な場合は、細かく記述した

上でプログラミング言語で記述

プログラミング言語: 種類は多数あっても、基本的な部

分は共通

変数

制御構造

順次処理

(71)

変数(p. 94)

変数

: 計算の対象や処理結果などのデータを

記憶しておくための場所

データを入れておく「箱」と言うことができる

変数には名前をつける

変数にデータを入れることを「代入

」と呼ぶ

変数に入れられたデータのことを「値

」と呼ぶ

変数の名前を指定するとデータを取り出すことができる

変数はプログラム中でいくつも使うことができる

10

代入

代入

5

(72)

変数の特徴[1](p. 95)

変数の中のデータを取り出しても、変数の中に

データは残っている

「変数の値を参照する」とは、「箱の中のデータを見る」と

いう意味

すでにデータが入っている変数に別のデータを

入れると、元のデータは消えてしまう

代入

20

10

20

10

追い出されて

消える

(73)

変数の特徴[2](p. 95)

データの種類によって、違う箱を使う必要がある

整数用の箱

実数用の箱

文字列用の箱

etc.

整数用の箱に実数を入れることはできない

文字列用の箱に整数や実数を入れることは

できない

10

10.5

あらかじめ、「この名前の箱は整数用の箱」と、決めて

コンピュータに知らせた上で箱を使い始める

(74)

制御構造(p. 95)

制御構造

: プログラムでの命令を処理する流れ

順次処理

条件分岐処理

繰り返し処理

3つあわせて「基本制御構造」と呼ぶ

(ただ単に「制御構造」とも)

(75)

順次処理(p. 96)

プログラム中に書いてある命令を、上から順に

1つずつ処理する

1.

キャベツや肉などの具をフライパンで炒めなさい。

2.

フライパンからいったん具を取り出しなさい。

3.

めんをフライパンで炒めなさい。

4.

具をめんの入っているフライパンに戻しなさい。

5.

焼きそばソースを加えてさらに炒めなさい。

順次処理の例

(76)

条件分岐処理(p. 96)

ある条件を満足するかどうかで、処理内容が変わる

1.

キャベツや肉などの具をフライパンで炒めなさい。

2.

具に火が通ったら、3. をしなさい。火が通っていなかったら

1. をしなさい。

3.

フライパンからいったん具を取り出しなさい。

4.

めんをフライパンで炒めなさい。

条件分岐の例(2)

1.

気に入った服と靴を選びなさい。

2.

服と靴の合計が10000円以内であれば、3. をしなさい。

そうでなければ4. をしなさい。

3.

服と靴をどちらも買いなさい。

4.

服だけ買いなさい。

条件分岐の例(1)

(77)

繰り返し処理(p. 96)

ある条件が満たされている限り、いくつかの命令を

繰り返し処理する

1.

キャベツや肉などの具をフライパンで炒めなさい。

2.

具に火がとおるまで1. をしなさい。

3.

フライパンからいったん具を取り出しなさい。

繰り返しの例(2)

1.

ピアノの曲Aを練習しなさい。

2.

ピアノの曲Bを練習しなさい。

3.

練習回数が10になっていなければ1.に戻りなさい。10になっていれば

4. をしなさい。

4.

練習を終わりなさい。

繰り返しの例(1)

参照

関連したドキュメント

当社グループにおきましては、コロナ禍において取り組んでまいりましたコスト削減を継続するとともに、収益

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

アンチウイルスソフトウェアが動作している場合、LTO や RDX、HDD 等へのバックアップ性能が大幅に低下することがあります。Windows Server 2016,

ら。 自信がついたのと、新しい発見があった 空欄 あんまり… 近いから。

ウェブサイトは、常に新しくて魅力的な情報を発信する必要があります。今回制作した「maru 

個別の事情等もあり提出を断念したケースがある。また、提案書を提出はしたものの、ニ

○今村委員 分かりました。.

信号を時々無視するとしている。宗教別では,仏教徒がたいてい信号を守 ると答える傾向にあった