こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

基本情報 過去問について 

こんにちは、2010年10月の基本情報技術者試験を受験して
午後試験で 50.50点だったものです。

趣味でプログラミングをしていて、

JavaScriptでポーカーを再現し、

同じくJavaScriptで音声は出ませんが、

http://sdin.jp/browser/casino/blackjack/

と同様の動作をするブラックジャックを作るくらいです。
( CGI, サーバーのことはよくわかりません。)

現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、
わからないことが出てきましたので、質問させていただきます。

以下のサイトをみていただきたいのですが・・・


http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H12b2/pm03.html

問3について質問させていただきたいのですが、

正直申しまして、問題の意味がよくわからないでいます。
いくつか教えていただきたいのですが…

(1)
  「局所変数をスタック領域に割り当て」、
  「スタックは上位アドレス(番地の大きいほう)から
  下位に向かって使用される」とありますが、
  スタックポインタが図で見て、下位アドレスの位置にある、
  ということは、スタックの下位(小さい番地)から
  データが取り出される、ということでしょうか?

(2)
  原子プログラム1の先頭で s が宣言されていますが、
  大域変数であり、データ領域に割り当てられるので、
  スタックには格納されない、ということで
  よろしいでしょうか?

(3)
  問題文中の「コード領域」、「スタック領域」、
  「データ領域」というのは、コンピュータ上の
  どこにあるものなのでしょうか?

(4)
  問題文中の「原子プログラム1」は主たる関数
  ともいうべきもので、「原子プログラム2」は
  その補助的な関数ということでしょうか?

お手数ですが、どなたか教えていただけないでしょうか?
よろしくお願いします。

投稿日時 - 2011-02-08 23:33:36

QNo.6508516

困ってます

質問者が選んだベストアンサー

(1) いいえ,違います。
「使用される」は「popで取り出される」という意味で読んでください。

図3の内容ができあがる過程は次のとおり。
・α箇所の「Call B(X1)」で,原始プログラム1への戻り番地がpushされ,実引数である(原始プログラム1側の)X1のアドレスがpushされる。
・原始プログラム2が呼び出され,(原始プログラム2の局所変数)X1がpushされる。

よってスタック内のデータは,下位アドレス→上位アドレスの方向に向かってpushされ,上位アドレス→下位アドレスの方向に向かってpopされます。

(2) はい,そうです。

(3) いずれも主記憶(メモリ)上の互いに重ならない位置に存在します。

(4) そう呼んだ方がしっくりくるのならそれでかまわないでしょう。
私としては「手続Aは原始プログラム1で定義されており,手続Bと手続Cは原始プログラム2で定義されている」「手続Aは手続Bを呼び,手続Bは手続Cを呼ぶ」と言えばそれで十分だと思うのですが。

追伸.
質問文で用いられている漢字について。
原子(atom)プログラムではなく,原始(source)プログラムが正しいです。

投稿日時 - 2011-02-09 00:41:46

お礼

いつも丁寧に解説していただきありがとうございます。
誤字があり、申し訳ありませんでした。
また、わからないところがあったときに、
おいそがしくないときにでも、
解説していただければ、と思います。
貴重な時間をさいての回答、ありがとうございました。

投稿日時 - 2011-02-09 07:27:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問