ここから本文です

アルゴリズム反復構造での問題です。

naruchan0906さん

2012/4/1614:25:09

アルゴリズム反復構造での問題です。

1+2+3+4+~+99+100の1から100までを順に足していく計算で、私が見た問題集では

後判定型
スタート⇒処理①(0→n 0→t)⇒処理②(n+1→n t+n→t)⇒条件(n<=100)
⇒yesなら処理②へ、noなら処理③(tを表示)⇒エンド

となっていたのですが、処理②でn=100になったとき、n<=100故に
後判定を抜けてもう一度処理②にいってしまうと100+101が実行されて
計算結果がずれると思うのです。
ここは条件が(n<100)にならなければいけないとおもうのですが・・・

アルゴリズム初心者です。というか数学も苦手です。このアルゴリズムの条件が私の案で
あっているかどうかわかる方、いらっしゃったら教えてください。お願いします。

閲覧数:
315
回答数:
1
お礼:
250枚

違反報告

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

mahoo_nieeさん

2012/4/1702:19:42

>あっているかどうかわかる方
厳しいこといいますが、ここでさらなる追求を心がけてください。

>処理②でn=100になったとき、n<=100故に
>後判定を抜けてもう一度処理②にいってしまうと100+101が実行されて
>計算結果がずれると思うのです。

これは「机上チェック」「トレース」といわれる部分をやっていることになります。
自分の考えがあっているかどうか、
トレースをして、さらに実際に動かしてみる、ということをすれば明確になってきます。

机上で記載ロジックを追いかける、
実際に値がどういう推移していくか追いかける、(初期値、増分値、終了値等)
実機で実行してみる、
3段階行えば、おのずとわかってきますし、「おかしいだろう」、が「やっぱりおかしかった」、になります。

それから、
ここの観点からすれば「前判定型」に対する比較かと思うので、
説明のためにわざと(n<=100)にしているのかもしれません。
この行だけ見ないで、処理の前後も見ておく。
ループを抜けた後でその加算してしまった101を元にもどしておけば問題ありません。
(実践ではそこまで無駄なことはしないと思いますが・・・。)

DOuntilとWHILEもポイント。

10リットルのバケツに水を入れるのに300ccのコップでどうするか、
あふれたら終わるのかすりきりで終わるのか、手前で終わるのか、
「次に入れたらあふれるから終わる」
「あふれてしまったときに終わる」
などの考えに近いと思います。

アルゴリズムでは、
・・・・があるから・・・・・、という構図が多いです。
これは理系の数式などの考え方に近いからこういう分野は理系が強いと錯覚されがちです。
でも文章でも同じです。
・・・・こういう発言、言動があるから・・・・・。
すなわち・・・・、だから・・・・、と同じです。
それにつながる何かがある、と思えば文系、理系の境はそんなに広がっていません。
処理の流れを日本語レベルにして行えば普通に説明文に近くなります。

質問した人からのコメント

2012/4/18 18:42:37

丁寧な回答ありがとうございます。まだこの分野は勉強し始めたばかりで、実行して確かめるのはまだできない状態での質問でしたが、mahoo-nieeさんのアドバイス、これから頭にしっかりいれて勉強していきたいと思います!

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

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

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

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

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

ほかのID/ニックネームで利用登録する