プロが教えるわが家の防犯対策術!

いつもお世話になっております。独学で情報処理の勉強をしています。
【専門用語をなるべく使わないで質問に答えていただける方】にお願いしたいです。
午後のテキストを解いていて、「16ビットの加算処理を行うプログラム」ということで、xとyが入力でsが出力ですよという図と、s[i]に格納されるという説明があって、
1 ○ 論理型:X[16],y[16],s[16],sw
2 ○ 整数型:i  ・S[X]←1
3 ・ sw←0
で始まるプログラムで、これ以降に続く空欄を埋めるものが問題になっています。1時間ほど考えた末答えは合っていたのですが、なぜそんなに時間がかかったかというと、swが繰り上がり部分になるんだというのに結びつかなかったからです。解説を読むと「変数swが処理の中で参照されていないことから、swが桁上がりの有無を保存していると考えられます」となっていますが、これは問題を解くうちにピンっ!と来るようになるのでしょうか?それとも変数のアルファベットにヒントがあったりすのでしょうか。
それから・S[X]←1はなんでSが大文字なのですか。大文字小文字は混ぜて使うのが普通なのですか。
どなたかお願いします。

A 回答 (3件)

その問題を見たことすらないので,質問文から得られたイメージですが。



16ビットの加算処理を行うプログラム,ということなので,次のような筆算の図はすぐ脳裏に浮かんできます。

  x [][][][][][][][][][][][][][][][]
+ y [][][][][][][][][][][][][][][][]
------------------------------------
  s [][][][][][][][][][][][][][][][]

・加算は下の桁から上の桁へと順におこなわれるだろう
・swはスイッチ(switch)の略だろう。0か1かの論理型だからスイッチのイメージにも合う
・各桁ごとの加算のたび,桁上がりを考慮しなきゃならないだろう
・他に適当な変数がないのなら,swが桁上がりの保持用だろう

という程度でしたら,質問の文章からピンときます。


>大文字小文字は混ぜて使うのが普通なのですか。

いいえ,大文字・小文字は厳密に区別するのが普通です。
s 以外にも Xが大文字でyが小文字というのも解せませんし,Xは配列なのに S[X]←1 のように単独変数らしく表記しているのも変です( s[i]←1 なら納得できます)。
誤植の可能性はないのですか?
    • good
    • 0
この回答へのお礼

やっぱり普通は問題を見てピン!と来るものなのですね。
昔から数学が苦手でしたし、午後の参考書の擬似言語とかもかなり怪しいまま学習を進めてるのでだめなのかもしれないですね。ありがとうございます。
誤字にかどうかに関してですが、内容に関する質問は書面でということで面倒くさいのでここで聞いてみたのですが、誤字かもしれません。厳密に区別するということが分かったので確かめはしませんが。
分かりやす回答どうもありがとうございました。

お礼日時:2007/07/06 10:26

1.(初期設定)sw=0


2.s[i]=x[i] XOR y[i] OR sw(i=0 の時、swは必ず0)
3.sw=x[i] AND y[i]
4.S[i]=sw
5.i=i+1
6.i<16 であれば2.へ(繰り返し)

でした、訂正いたします。
    • good
    • 0

この処理は、



0=1ビット目(1桁目)、15=15ビット目(15桁目),すべて値は0か1
XOR=排他的論理和、OR=論理和、AND=論理積、の条件で

1.(初期設定)sw=0
2.s[i]=x[i] XOR y[i] OR sw(ここのswは必ず0)
3.sw=x[i] AND y[i]
4.S[i]=sw
5.i=i+1
6.i<16 であれば2.へ(繰り返し)

結果、{ S[?]=各桁の繰り上がり値/s[?]=各桁の加算演算の答え }
のはずですが…。

>A:変数swが処理の中で参照されていないことから
>B:swが桁上がりの有無を保存していると考えられます
A:これは一時的に使われ、“結果として直接結びつくものではない”
と言う意味で、変数を読み取り/書き込み、しない意図ではないと思いますよ。
B:処理の通り使用されます。

>それから・S[X]←1はなんでSが大文字なのですか。大文字小文字は混ぜて使うのが普通なのですか。
完全な誤字でS[i]の間違いでしょう。
通常変数は小英文字を使用しますが、's'は桁上げを意味し設問上、
共通化したかったため大英文字'S'(小文字's'を異なる変数文字に重複できません)
を選定したものかと思います。
    • good
    • 0

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