質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

1921閲覧

スパゲティプログラムの変換

takashi123

総合スコア11

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

1クリップ

投稿2015/09/28 05:08

初めまして、お世話になります。
次のソースからgotoをwhile1,if2で構成された等価なプログラムにしたいのですが
最近勉強を始めた為うまく書き換える事ができません。
よろしければ解説付きで教えていただけないでしょうか
すごく初歩的な質問で申し訳ないのですが、よろしくお願いします。
P1;
L1:if(not C1) goto L4;
P2;
if(not C2) goto L2;
if(not C3) goto L1;
P3;
L2:P4;
goto L1;
L4:P5;
Stop;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2015/09/28 06:07

使われているプログラム言語では、whileとifの構文をどのように書くのですか? 質問では、ラベルと'if goto'ぐらいしか使われていませんので、回答者は書き方が判らないです。 そのため、回答できないのではないかと思います。
guest

回答2

0

ベストアンサー

こんな感じですかね?
P1;
while(C1 is true) {
P2;
if (C2 is true) {
if(C3 is true) {
P3;
}
else {
continue;
}
}
P4;
}
P5;

解説:
1: P1;
2: L1:if(not C1) goto L4;
3: P2;
4: if(not C2) goto L2;
5: if(not C3) goto L1;
6: P3;
7: L2:P4;
8: goto L1;
9: L4:P5;
10: Stop;

2行目のif文はCondition1がfalseのときにループ処理の外のLabel4にジャンプしているため、
Condition1がtrueのとき、次行以降が実行される
Condition2はfalseのときにLabel2にジャンプしているため、逆のtrueの場合に次行以降が
実行されるので、次行以降をCondition2のthenブロックで実行する
Condition3はfalseのときにLabel1、すなわちループの先頭にジャンプしてるため、これを
continue文で処理させる
Condition3がtrueのときは次行以降が実行されるので、if文のthenブロックでP3を実行する
P4はCondition2がfalseのときのジャンプ先となっており、またCondition2がtrueであっても
逐次処理で実行されるため、Condition2のif文の外で実施する
遂次処理は8行目のgoto文でLabel1に無条件で戻るため、Labelからここまでがループ処理の
中で実行されるものとする
Label4で示されるP5は、Condition1のジャンプ先なのでループ処理の終了後に実施される

投稿2015/09/28 06:39

KatsumiTanaka

総合スコア924

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takashi123

2015/09/28 12:34

詳しい解決つきでありがとうございました。
guest

0

間違いがありました.
しばらく修正します.

投稿2015/09/28 06:12

編集2015/09/28 06:23
KenTerada

総合スコア751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問