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

フローチャートの書き方 プログラムの開始と終わり 処理の流れの表記 ( アルゴリズム ) 逐次型 ( 直線型 ) 分岐型 ( 開始 ) 処理 1 条件 条件 処理 2 の処理 の処理 の処理 ( 終了 ) 処理 3 プログラムや人間の判断などのアルゴリズムは基本的に 逐次型 分岐型 ループ型の組み合

N/A
N/A
Protected

Academic year: 2021

シェア "フローチャートの書き方 プログラムの開始と終わり 処理の流れの表記 ( アルゴリズム ) 逐次型 ( 直線型 ) 分岐型 ( 開始 ) 処理 1 条件 条件 処理 2 の処理 の処理 の処理 ( 終了 ) 処理 3 プログラムや人間の判断などのアルゴリズムは基本的に 逐次型 分岐型 ループ型の組み合"

Copied!
11
0
0

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

全文

(1)

1

自動販売機をプログラミングする

-

フローチャートやいろいろな設計

-Ver 1.0 2017/02/15

© Go Ota, 2014

自動販売 機って、どこ にでもあって 便利だよね 自動販売機も中に入っ ているコンピュータで 動作しています。今回 の授業では、どのよう なプログラムが動いて いるか考えてみましょ う。 プログラムなどは、「高校「情報科」の教材・指導案作ってみました。」 http://www.beyondbb.jp/ Zipの教材内に入っています。 今回は、Scratchで自動販 売機のプログラムを作っ て、プログラムはどのよう に設計するか見ていきま しょう

No.1

一番簡単な自動販売機

1000000 金額 開始 飲み物ボタン が押される お金が 投入される 金額を100円にする 飲み物缶を出す お金が100円 入っている 簡単な仕組みの自動販売機 ・100円玉を1枚だけ入れられ る ・商品は1つだけ ・商品切れランプは無し ・お金返却ボタンは無し ・つり銭切れランプは無し ・お金を入れて一定時間たっ たら自動的にお金返却は無し まず、始めの一番簡単な自動販売機 について考えてみましょう。お金を入れ ることと製品のボタンを押すことしかで きません。 このプログラムの動作をフローチャー トで表すと右の図のようになります。 Yes No Yes Yes No No

(2)

3

フローチャートの書き方

(開始) プログラムの 開始と終わり (終了) 処理の流れの表記(アルゴリズム) 逐次型(直線型) 分岐型 処理2 処理1 処理3 条件 Yesの処理 Yes No 条件 Yesの処理 Yes No Noの処理 ループ型(繰返し型) 終了条件 ループの処理 No Yes 終了条件 ループの処理 No Yes ループの処理 無限ループ 後判断ループ 前判断ループ プログラムや人間の判断 などのアルゴリズムは基本 的に、逐次型、分岐型、 ループ型の組み合わせで 表現できますね。 4

演習

:

一番簡単な自動販売機を作ってみよう。

では、一番簡単な自動販売機をScratch で作ってみましょう。 こんな簡単なしくみでも、ちゃんとした見栄 えを考えると大変かもしれませんね。

(3)

5

プログラムサンプル

1A

[Vending01A]

自動販売機の動きだけをテキストでやってみました。

プログラムサンプル

1B

[Vending01B]

(4)

7

プログラムサンプル

1C

[Vending01C]

お金を入れたり、ボタンを押したりできるようにすると、少しプログラム自体も複 雑になってきます。 8

ちょっとだけ複雑な自動販売機

1000000 金額 開始 簡単な仕組みの自動販売機 ・100円玉を1枚だけ入れら れる ・商品は1つだけ ・商品切れランプは有り ・お金返却ボタンは無し ・つり銭切れランプは無し ・お金を入れて一定時間たっ たら自動的にお金返却無し 売り切れ 飲み物ボタン が押される お金が 投入される 金額を100円にする 飲み物缶を出す お金が100円 入っている Yes No Yes Yes No No 商品がある 売切れランプOn No Yes 商品がある 売切れランプOn No No もう少し複雑な自動販売機を考えて みましょう。売切れランプを追加しま す。 フローチャートも少し複雑になります ね。ポイントは、開始直後と「飲み物 缶を出す」の後の二か所に、商品の 確認をして売切れランプの処理が入 ることにあります。初めに品物が無 い場合もありますから

(5)

9

演習

:

もうちょっとだけ複雑な自動販売機

1200000 金額 簡単な仕組みの自動販売機 ・100円玉を1枚だけ入れられる ・商品は1つだけ ・商品切れランプは有り ・お金返却ボタンは有り ・つり銭切れランプは無し ・お金を入れて一定時間たった ら自動的にお金返却無し 売り切れ もう少し複雑な自動販売機を考え てみましょう。お金返却ボタンを追 加します。 この自動販売機のプログラムを 作ってみてください。 (早く終わった人は、複数の缶があ る場合も作ってみてください。) 返却 今までやったフローチャートにとらわれず に、いろいろな方法でプログラムができる と思いますので知恵を絞ってみてください。

作ったプログラムを見てみよう

A

E

まであるよ

どんなプログラムができましたか? 自動販売機といっても、いろいろな方法でプログラミングでき ます。そのいくつかを、その設計図といっしょに見ていきま しょう。

(6)

11

A:

単純なフローチャートをもとにした

プログラム

開始 お金が 投入される 金額をxxx円にする Yes No 商品がある 売切れランプOn No Yes 飲み物ボタン が押される 飲み物缶を出す お金が100円 入っている Yes Yes No No 商品がある 売切れランプOn No No 返却ボタンが押された No お金が 投入されている お金を返却する Yes No 金額を0円にする。 Yes 返却ボタンの追加では、お 金が現在投入されたとか、 金額表示を0円にするなど の処理も必要ですね。 このぐらいになるとフロー チャートもごちゃごちゃして 判りにくくなりますね。 12

プログラムサンプル

2A

[Vending02A]

フローチャートをもとにしたプログラムです。これもかなりぐちゃぐちゃしてきま したね。

(7)

13 返却ボタンの処理 返却ボタンが押された No お金が 投入されている お金を返却する Yes No 金額を0円にする。 Yes 戻る 売切れランプの処理 商品がある 売切れランプOn No Yes 戻る

B/C

サブルーチンでフローチャートをすっきりせたプログラム

メインルーチン サブルーチン1 サブルーチン2 フローチャートが複雑になってきたら、 サブルーチンを使いましょう。これは、 を使って、フローチャート を分けることができます。サブルーチン に対して、大元のものをメインルーチンと 呼びます。 人間は沢山の情報をいっぺんに扱うこと ができません。そこでチャンクという個別 の情報の塊にして扱います。 サブルーチンの終わ りは「戻る」 お金が 投入される 金額をxxx円にする Yes No 飲み物ボタン が押される 飲み物缶を出す お金が100円 入っている Yes Yes No No 開始 売切れランプの処理 返却ボタンの処理 売切れランプの処理

B/C

サブルーチンでもっとフローチャートをすっきり

メインルーチン サブルーチン3 開始 売切れランプの処理 お金投入の処理 飲み物ボタンの処理 返却ボタンの処理 No 飲み物ボタンの処理 飲み物ボタン が押される No お金が100円 入っている 飲み物缶を出す Yes Yes 戻る サブルーチン4 売切れランプの処理 お金投入の処理 お金が 投入される 金額をxxx円にする Yes No 戻る サブルーチン3 つり銭切れを入れた場合 お金投入の処理 お金が 投入される 金額をxxx円にする Yes No つり銭切れの処理 サブルーチンをもっと作るとメインルーチ ンがもっとすっきりします。こうすると、この 時点の自動販売機のプログラムは1つの メインルーチンと4つのサブルーチンから 構成されます。 また、つり銭切れの機能を入れる時は、と りあえず、お金の投入にサブルーチンを

(8)

15

B/C

構造化設計でプログラミング考えてみる

自動販売機 売切れランプの 処理をする。 お金投入後の 処理をする。 返却ボタンの 処理をする。 つり銭切れの 処理をする。 飲み物ボタンの 処理する。 ① ① 3つの処理がループに なっていることを表す 上のモジュールが下 のモジュールを利用 している ①につながって、「売切 れランプ…」を利用 フローチャートはコンピュータのプログラムを設計する一つの手法です が、あまり大きなプログラムには向いていません。現在では多くの設計 手法がありますが、構造化設計は古いものですが、手軽に利用できま す、また現在の設計手法の考え方のベースになっています。 フローチャートは処理の流れを中心に考えますが、構造化設計はモ ジュール(サブルーチン)の構造や関係を中心に表現します。この構造を 考えると上図のようにシンプルなものになります。 参考図書:ソフトウェアの複合/構造化設計,G.J. マイヤーズ(1978) 16

プログラムサンプル

2B

[Vending02B]

モジュール(サブルーチン)使ったプログラムです。随分すっきりしたように見え ます。

(9)

17

プログラムサンプル

2C

[Vending02C]

同じくモジュール使ったプログラムです。モジュールはScratchの各スプライト に入れて、メッセージで呼び出しています。 メッセージで呼ばれる各モジュールは 各スプライトのスクリプトを参照してく ださい。

D

割り込み処理でプログラムを考えてみる

割り込み処理は多くのコンピュータを内蔵した製品で使用されています。 ここではUMLのステート図を使って、動作を表現してみました。 割り込み処理 レジスタ処理(ネコ) 飲み物ボタン 缶出し 入金 表示変更 金額変更 返却 表示変更 金額変更 売切れボタン 飲み物選択 表示変更 金額変更 表示変更 缶出し

(10)

19

プログラムサンプル

2D

[Vending02D]

各スプライトをクリックすることで割り込みをメッセージで通知するプログラムで す。各イベントの発生に対してのプログラムがすっきりします。 割り込みの通知をする各モジュールは 各スプライトのスクリプトを参照してく ださい。 20

E

オブジェクト指向っぽくプログラミングしてみる

現在多くのプログラムがオブジェクト指向をもとに開発されています。オブジ ェクトは個々のプログラムがある役割を持って、それが協働して動くことによ り大きな仕事をするものです。ここでは、Scratchのスクリプトごとに機能をも たせるようにプログラミングしてみました。 また、その動作をUMLのオブジェクト図類似したもので表現してみました。

入金

+

入金

(100)

返却

+

入金

(0)

缶飲料制御

-

金額

-

在庫数

+

金額変更

()

+

在庫数変更

()

売切れボタン

+

売り切れボタン変更

()

飲み物ボタン

+

飲み物ボタン変更

()

缶出し

+

缶出し

()

(11)

21

プログラムサンプル

2E

[Vending02E]

各スプライトごとの役割がはっきりしています。 各スプライトのスクリプトを参照してください。 ↑缶飲料制御 ↑飲み物ボタン 自動販売機さん、 いつもご苦労様で す 何気ない自動販売機でも、いろ いろなプログラムの作り方があり ますね。

参照

関連したドキュメント

[No.20 優良処理業者が市場で正当 に評価され、優位に立つことができる環 境の醸成].

固体廃棄物の処理・処分方策とその安全性に関する技術的な見通し.. ©Nuclear Damage Compensation and Decommissioning Facilitation

廃棄物の再生利用の促進︑処理施設の整備等の総合的施策を推進することにより︑廃棄物としての要最終処分械の減少等を図るととも

  他人か ら産業廃棄物 の処理 (収集運搬、処 分)の 委託を 受けて 、その

上水道施設 水道事業の用に供する施設 下水道施設 公共下水道の用に供する施設 廃棄物処理施設 ごみ焼却場と他の処理施設. 【区分Ⅱ】

竣工予定 2020 年度 処理方法 焼却処理 炉型 キルンストーカ式 処理容量 95t/日(24 時間運転).

震災発生時のがれき処理に関

処理処分の流れ図(図 1-1 及び図 1-2)の各項目の処理量は、産業廃棄物・特別管理産業廃 棄物処理計画実施状況報告書(平成