ここから本文です

プログラミングでwhile や do while を使用しなくても if や for を使ってすべ...

pas********さん

2010/2/1119:42:58

プログラミングでwhile や do while を使用しなくても

if や for を使ってすべての処理を代用することはできますか?

while や do while を使用しなければできない処理は存在しますか?

閲覧数:
899
回答数:
3

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

qui********さん

2010/2/1121:53:35

何らかのループ脱出方法が必要だからifとforとbreakを使えばwhile/do while相当は記述できますね。
while(条件)文->for(;条件;)文 で等価。
do 文 while(条件) -> for(;;){ 文 if(!条件)break;} で等価

出来る出来ないで言えば、gotoとifがあれば他の全ての制御構造に等価に書けるでしょう。だって、機械語がそうなんだから。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

hir********さん

2010/2/1411:12:01

構造化プログラミングを使わずに goto 文で処理を代用できますかとの質問ですね。
http://ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E...

たとえば、10までの合計値を求めるプログラムは↓のような風になります。while などを使うと見易く、スッキリ記述でき、プログラミングの際の間違いを少なくさせる効果があるといわれています。
「構造化プログラミングを使用しなければできない処理は存在しますか?」と同義語の質問ですが、皆さんこれを用いて回答されているようにありません。逆に goto文にはあって、例外処理や処理のスピードアップなどに使われます。



/* Structured programming by gcc on Mac OSX
* file name: sp.c
* compile: gcc sp.c
* execution: ./a.out
*/

#include <stdio.h>

int main(void) {
int i, sum;

i = 1; sum = 0;
while (i <= 10)
sum += i++;
printf("Using while sum= %d¥n", sum);

i = 1; sum = 0;
while_top:
if (i > 10) goto while_end;
sum += i++;
goto while_top;
while_end:
printf("Using goto sum= %d¥n", sum);


return 0;
}

tar********さん

編集あり2010/2/1120:09:43

できますがコードが読みにくくなると思いますよ。

終了コードが判らないループを含む場合はwhileを使ったほうがスッキリ

bool bCheck = true;
for (;;)
{


bCheck = XXXXXX();
if (bCheck == false) break;
}

よりは

bool bCheck = true;
while(bCheck)



bCheck = XXXXXX();


もしくは

while(XXXXXX())
{
}


>while や do while を使用しなければできない処理は存在しますか?

咄嗟に思いつかないけど、たぶんそれは無いんじゃないかな。
for と if だけで作れると思いますよ。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる