アプリ版:「スタンプのみでお礼する」機能のリリースについて

電気回路とソフトウェアの連携 500in1で回路を作成
以下のプログラムのフローチャートの書き方教えてください。日本語の部分を四角で囲んで書くんじゃないんですよね?プログラム?の形で書くんですか
プログラムはボタンを押すことによって、0x00~0x0Fまでカウントアップし、LED4個で現在のカウント値を表示するプログラムです。また、ボタンでカウントをリセットできる機能も実現。

00H MOV C, #00H ;「c」の状態の初期化
01H MOV B, #00H ;「B」カウント値のリセット
02H OUT B ;出力ポートの状態を変更
03H IN A ;入力ポートの状態を取得
04H MOV D, A ;入力ポートの状態をDに退避
05H AND A, #02H ;2ビット目の情報を取得
06H JNZ L00H ;リセットボタンが押されている場合,0行目にジャンプ
07H MOV A, D ;入力ポートの状態をAにロード
08H AND A, #01H ;1ビット目の情報を取得
09H JNZ L0CH ;カウントボタンが押されている場合,C行目にジャンプ
0AH MOV C, #00H ;「C」の状態を0に設定
0BH JMP L02H ;2行目にジャンプ
0CH MOV A, C ;「C」の状態をAにロード
0DH CMP A, #00H ;「A」の状態は0か
0EH JNZ L02H ;ボタンが押されたままなので,2行目にジャンプ
0FH INC B ;Bの値を1カウントアップ
10H MOV C, ;「C」の状態を1に設定
11H JMP L02H ;2行目にジャンプ

質問者からの補足コメント

  • うーん・・・

    高級言語?風に書かなくてもいいのですか?

      補足日時:2015/07/18 17:01
  • うーん・・・

    このようなプログラムの場合は以下のようなフローチャートになるみたいなんですが、書き方さっぱりわかりません。。。
    00 MOV B,#10H;レジスタBへ初期値をセット
    00 MOV A #00H;Accへ初期値をセット
    02 OUT A ;L1-L4を消灯
    03 TM2 #01H ;1秒間ウェイト
    04 INC A ;Accに1を加算
    05 CMP B,A ;Accと上限値を比較
    06 JZ L01H ;カウンタ=上限値のとき#01へ
    07 JNZ L02H ;カウンタ=:=上限値のとき#02へ

    開始

    B<--10
    |
    A<--00
    |
    Accを出力
    |
    1秒間ウェイト
    |
    A=A+1
    |
    B:A

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/07/19 15:59

A 回答 (3件)

フローチャートに「唯一の正解」はありません。


どのくらいの単位で一つの箱に入れるか、中にどの程度の詳細さでどんな表現方法で書くか、は、そのフローチャートを書く目的等によって変わります。

もの凄く極端にすれば

(開始)

[ボタン1を押すことによって、0x00~0x0Fまでカウントアップし、LED4個で現在のカウント値を表示する
ボタン2でカウントをリセットする ]

(終了)

でも「正解」です。
(フローチャートにする意味は無いですが)


その例題から考えると
「プログラムの各命令がどんな順番で何が実行されるか」
を「見える化」する、あるいは、あなたが理解しているかを試すものではないでしょうか。

そのために、1命令を1ブロックにしてあるように思います。
よって、フローチャートを書くには次のようになると思います。
(1)とりあえず、開始と終了と、その間に入れる箱を 00H〜11Hの18個用意する。
(2) 開始の下に 00H の箱を置いて、矢印で結ぶ
(3) 箱の中に、 該当する番地の命令が何をするかを書く
(3)' このとき、分岐命令だったなら、箱ではなく菱形を使う。
 その分岐条件を書き、それぞれのときにどこへ分岐するかを矢印で示す
(4)00Hの下に 01Hの箱を置いて, 以下(2)〜(3)と同様にて終了まで継げる



> MOV B,#10H;レジスタBへ初期値をセット

をフローチャートの1ブロックにする場合。


それが何を意図したものかを表現したいなら

[レジスタBへ初期値をセット]

等と言葉で書けば、 #10H とは初期値のことだ、ということがわかります。
後で初期値を変えたくなったら、ここを変えたらよい、ということがわかります。

[MOV B,#10H]

と、プログラムをそのまま書くやりかたもあります。

[ B←#10H ]

の矢印は代入を表しています。 「Bに #10H を代入する」 という意味です。
プログラムっぽい書き方で、疑似コードと呼ばれたりします。
これだと「MOV B,#10H」とは「B←#10H」(Bに#10Hを代入)という動作をする命令だということがわかります。



まずは、上記の(1)〜(4)で、図を仕上げませんか?
とりあえずは、疑似コードとかを考えずに、コメントにある日本語を使って。




ところで。
その例は書き写し間違いとか、文字数制限で全部入らなかったとかがあるのでしょうか?
後半が無いし、表記が統一できてないし(Aと書いたりAccと書いたり)
    • good
    • 0

「フローチャートの書き方」とでも検索してみてください。



プログラム言語ではなく、普通の言葉で書くのが普通です。
この回答への補足あり
    • good
    • 0

> 日本語の部分を四角で囲んで書く



それが基本だと思いますが。

> リセットボタンが押されている場合,0行目にジャンプ

みたいな分岐は菱形ですが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!