こんにちは、おじゃまします。
間もなく第2種改め・・・を受験する者なんですが、
今更過去問で疑問があって困っています。

タイトルに書いた問3なんですが、どうも理解できません。
call by reference は
(Cでは)「関数に、値を渡さずにアドレス(だけ)を渡すもの」
だと理解しています(いいでしょうか)、この定義だと
答えが選択肢に入ってこないんです・・・

親切などなたか、よろしければコメントをお願いします

このQ&Aに関連する最新のQ&A

A 回答 (2件)

この問題は使用しているプログラム言語を規定していません。


よって、C言語の範囲で考えてはいけません。

C言語はcall by valueである為に単項&演算子と単項*演算子を利用して“擬似的な”call by referenceを実現します。
しかし、この問題で想定している処理系は「言語処理系がcall by referenceである」という前提です。
(構文から推察してPascalを意識していると思われる)

call by referenceの言語処理系では仮引数にデータオブジェクトそのものを与えてもアドレスが渡されます。
呼び出された“手続き”(=関数に相当)では実引数は「アドレスが参照するデータオブジェクトそのもの」として認識されます。

「設問1-a」についての質問ですよね。
    • good
    • 0
この回答へのお礼

お返事ありがとうございました!
個人的にこの試験にはCでしか臨んでおらず、
完全にハマっていました。で、
今日は休日だったのでこの解説を書店で調べたんですが、
どの本にも Pascal 的だとは書いていなくて。
Cの知識を前提としている、と
書いている本さえありました。
何だったんだ?(^^;

本当にどうもありがとうございました、
精神安定しました(^^;

お礼日時:2001/04/12 18:40

call by referenceは引数のアドレスを渡す参照渡しであっています。



ただ、過去問の問3がどういう問題かわからないので、
回答できません。
差し支えなければ問3がどういう問題か教えていただけないでしょうか?

この回答への補足

早速のお返事ありがとうございます!
問題をまとめようにもまま打ち込もうにも大変なんですが(汗)、
東京理科大学さんのほうに何て親切な掲載がありました。
大変お手数ですが、よろしければさらっと教えていただきたく思います。

http://www.rs.kagu.sut.ac.jp/%7Einfoserv/j-siken …

※タグが使えませんでした

補足日時:2001/04/12 17:25
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q基本情報技術者検定の平成13年秋の午後問題について

基本情報技術者検定の平成13年秋の午後問題で質問です。
http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H13b2/pm02.html

上のurlの問題で「整数値を、指定された書式に従って10進数の文字列に変換する」というアルゴリズムを行うのですが、この問題の意図することがわかりません。

普通の問題はn進数を10進数に変換せよ、といった内容ですが、参考書の解答を見ても、10進数から10進数に変換しているようですし、それとも10進数の数値を(符号を含め)最大4桁の数値かどうかを判定しているということなのでしょうか?

Aベストアンサー

この問題は、10進数を10進数に変換する(って、それは基数変換ではない)ということではなく、入力した10進数を、桁ごとに分割して指定した書式に格納するものです。

例えば、123という10進数のデータがあって、出力様式が#,###と指定されている場合、「1」を二つめ(カンマの後)の#に格納するわけですが、このとき「1」は元の10進数でいう「100」の意味ではなく、単なる「1」と言う文字列でしかないわけです。

Qソフ開(一種)の過去問題をさがしてます。

ソフ開(一種を含め)の過去問題を20年分ほど集めて試験対策をしようと考えているのですが、なかなか見つけることが出来ません。下記のようなサイトは見つけたのですが数年分だけです。いい集め方(サイト等)を教えていただけないでしょうか?

※同様に回答も探しています。

http://xn--n9q36mh1hnxuksz7wt.jp/

Aベストアンサー

あまりに古いものは、個人的なルートでコピーさせてもらうしかないと思います。長い間には試験制度も出題分野も変わっており、それが現在でも試験対策として有効かどうかは、大いに疑問ですけれどもね。
平成12年度の一種問題に関しては、下記のサイトからダウンロードできます。

参考URL:http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/index.html

Q平成11年春 問3 が分かりません

平成11年春 問3
http://www7b.biglobe.ne.jp/~a0mediac/A99s/A99s0306/a99s0306.htm

n+1番地の語、つまりadrの値の計算方法が分かりません。
空欄 a はどうやって分かるのでしょうか?

解説にあるように、
>>EXIT命令の機械語コード1000 1000 0000 0000 1100 0000 0000 0000は、最初の1語目が
>>0000 0000 0001 0000番地に、2語目が次の0000 0000 0001 0001番地に格納されている。

とありますが、なぜ
最初の1語が0000 0000 0001 0000番地に格納されていることが分かるのでしょうか?

よろしくお願いします。

Aベストアンサー

旧 第二種情報処理技術者試験 平成11年 春期 問3
(現 基本情報技術者試験)

問題文の次の記述をヒントにして〔機械語のプログラム〕を読解していく。

> 各機械語命令の命令コードは、次のとおりである。
> ADD命令  0100 1100
> LD命令   0100 0000
> LEA命令  0100 0010
> ST命令   0100 0001
> EXITはマクロ命令であり、
> 1000 1000 0000 0000 1100 0000 0000 0000の2語からなる。
> START、ENDは擬似命令であり、機械語に変換されない。

まず,〔機械語のプログラム〕全13行分のうち前半9行分を読解する。
「n番地の語」に示された左8bit分と〔CASLのプログラム〕との対応は次のとおり。
「命令語は2語長である」ので,「n番地の語」と「(n+1)番地の語」を合わせた横一行分が1命令に対応する。

1行目 0100 0001 … ST GR1,SAGR1
2行目 0100 0001 … ST GR3,SAGR3
3行目 0100 0010 … LEA GR3,2
4行目 0100 0000 … LD GR1,X
5行目 0100 1100 … ADD GR1,Y(解答欄a)
6行目 bbbb bbbb … ST GR1,Z,GR3(解答欄b)
7行目 0100 0000 … LD GR1,SAGR1
8行目 0100 0000 … LD GR3,SAGR3
9行目 1000 1000 … EXIT

以上より,2語から成るEXIT命令が格納されている位置は,
〔機械語のプログラム〕全13行における
上から9行目の左半分(n番地の語)と右半分((n+1)番地の語)であることが判明した。
そのアドレスは,
上から9行目の番地n=0000 0000 0001 0000と
それに+1したもの,すなわち0000 0000 0001 0001である。

--------
残った後半4行分と〔CASLのプログラム〕中の領域ラベル名との対応は次のとおり。
SAGR1, SAGR3, X, Y はそれぞれ1語の領域,Zは4語の領域である。

10行目 <--- --SAGR1-- ---> <--- --SAGR3-- --->
11行目 XXXX XXXX XXXX XXXX YYYY YYYY YYYY YYYY
12行目 ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ
13行目 ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ

さて,前半で読解したように,
解答欄aは「ADD命令の2語目(=adr オペランドアドレス)」
すなわち領域Yの格納アドレスが空欄となっている。

領域Yが確保されている位置は,
〔機械語のプログラム〕全13行における
上から11行目(下から3行目)の右半分((n+1)番地の語)であることが上図より判明している。
そのアドレスは,
上から11行目の番地n=0000 0000 0001 0100 に+1したもの,
すなわち【オ】 0000 0000 0001 0101 である。

旧 第二種情報処理技術者試験 平成11年 春期 問3
(現 基本情報技術者試験)

問題文の次の記述をヒントにして〔機械語のプログラム〕を読解していく。

> 各機械語命令の命令コードは、次のとおりである。
> ADD命令  0100 1100
> LD命令   0100 0000
> LEA命令  0100 0010
> ST命令   0100 0001
> EXITはマクロ命令であり、
> 1000 1000 0000 0000 1100 0000 0000 0000の2語からなる。
> START、ENDは擬似命令であり、機械語に変換されない。

まず,〔機械語のプログラム〕全13行分のうち前半9行分を...続きを読む


人気Q&Aランキング

おすすめ情報