04/27のツイートまとめ

IT01765612

動画にメッセージを追加する https://t.co/KT2hAAo9bM
04-27 12:00

04/26のツイートまとめ

IT01765612

動画にメッセージを追加する https://t.co/yyLAeHCyUv
04-26 09:59

平成19年秋期基本情報技術者試験午後問4、疑似言語

本ページは平成19年秋期基本情報技術者試験午後問4、疑似言語の解説です。
問題文、解答、解説の順で掲載しております。

***********************************************************************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
***********************************************************************************************************

次のプログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕

 スタックを使って,実数値を10進数字列(文字列)に変換する副プログラムFloatFormatである。

(1) FloatFormatは,実数Floatの値を10進数字列に変換し,その先頭の数字から順に1文字ずつ文字型配列Out[]に格納する。

(2) 小数点以下は,引数Num(Num≧1)で指定されたけた数までを格納する。

(3) FloatFormatの引数の仕様を表に示す。

    表 FloatFormat の引数の仕様

引数データ型入力/出力意味
Float実数型入力変換対象の実数
Num整数型入力文字列に変換する際の小数点以下のけた数(Num≧ 1)
小数第 Num十1 位以下は切捨て
Out[]文字型出力変換結果を格納する文字型の配列
Len整数型出力配列 Oul[] に格納された変換結果の文字数


(4) 実数Floatの値を10進数字列に変換する手順は,次のとおりである。

  ① Floatの値が負の場合は,負符号を表す"-"をOut[]に格納し,Floatの値を正数に変換する。
 ② 整数部を,1の位から上位に向かって,1けたずつ10進数字に変換し,スタックに積む。
 ③ スタックに積み終わったら,スタックに積んだ文字を順番に取り出してOut[]に格納することによって,整数部の10進数字を正しい順番に並べ替える。
 ④ 整数部が0の場合は "0"をOut[]に格納する。
 ⑤ 小数点を表す"."をOut[]に格納する。
 ⑥ 小数部を,小数第1位から第Num位まで,1けたずつ10進数字に変換し,Out[]に格納する。

(5) Push()はスタックに1文字を積む関数,Pop()はスタックから1文字を取り出す関数である。Int()は小数点以下を切り捨てる関数である。

(6) 配列の添字は0から始まり,文字型配列Out[]の要素数は十分に大きいものとする。また,プログラム中の各演算であふれは発生しないものとする。

(7) FloatFormatの変換例を図に示す。
giji_02_01.jpg

  図 FloatFormat の変換例

[プログラム]
giji_02_02.jpg

設問1 プログラム中のgiji_02_03.jpgに入れる正しい答えを, 解答群の中から選べ。

a に関する解答群
ア Fint - 10
イ Fint - Fint ÷ 10
ウ Fint - (Fint ÷ 10)× 10
エ Fint ÷ 10
オ (Fint ÷ 10)× 10

b に関する解答群
ア L = 0
イ L = 0 or Out[0] = "-"
ウ L = 0 or (L =1 and out[0] = "-")
エ L = 1
オ L = 1 and Out[0] ="-"

c,d に関する解答群
ア Fdec - Int(Fdec)
イ Fdec - Int(Fdec × 10)
ウ Fdec - Int(Fdec ÷ 10)
エ Fdec × 10
オ Fdec ÷ 10

設問2 次の記述中のgiji_02_03.jpgに入れる正しい答えを, 解答群の中から選べ。

 Float = -0.012,Num = 2 として FloatFormat を呼び出した場合,プログラム中のαの部分はgiji_02_04.jpg回実行され, βの部分はgiji_02_05.jpg回実行される。

解答群
ア 0      イ 1      ウ 2      エ 3      オ 4

参考文献
番兵
https://ja.wikipedia.org/wiki/%E7%95%AA%E5%85%B5

***********************************************************************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
***********************************************************************************************************
********************************************************************************
解答

設問1 答 aエ 答 bウ 答 cエ 答 dア 設問2 答 eア 答 fウ
********************************************************************************

解説
Float≧0.0
Floatは問題文より、「変換対象の実数」である。ここではこの数値が0以上であるかを判別している。つまりは、Floatが正であるか負であるかを判別している。

Float≧0.0が偽の時、つまりはFloatが負の場合には、
F ← -Float
でFloatの値を正に変換している。

変換対象の実数が負の際には、問題文より「負符号を表す"-"をOut[]に格納」とある。
Out[] ← "-"
で、その処理を行っている。

このセクションでは、問題文の(4)①に該当する処理を行っている。

Push(“#”)
で、プログラム中のコメントには「スタックに番兵として、“#”を積む」とある。番兵とは参考文献にある通りデータの終了を示すために配置されたデータを指している。

Fint ← Int(F)
問題文よりInt()関数は小数点以下を切り捨てる関数であるから、例えば、F が12.345の場合にはFintには12がセットされる。

Idx ← Fint – ( Fint ÷ 10 ) × 10
でFintおよびIdxは共に整数であるから、その演算結果も整数であると推測される。例えば、Fintが12の場合、
Fint ÷ 10
で結果は1.2ではなく、1となり、×10 を行うことで10となる。この演算結果で、Idxの値は2となる。つまりは、整数部の1の位がIdxにセットされることになる。

Chr[Idx]で、Chrは配列で問題文より添字は0から始まるので、値は以下のように格納されている。
Chr[0]Chr[1]Chr[2]Chr[3]Chr[4]Chr[5]Chr[6]Chr[7]Chr[8]Chr[9]
“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”


上記の例ではIdxが2の時、つまりはChr[2]の時は文字の“2”が取得されることになる。

{ a }
問題文の(4)②より1の位から上位に向かって、1桁ずつ取得しスタックに格納していく。前段の処理で1の位の値がスタックに積まれたので、
Fint ÷ 10
によって、位を一つ落とすことができ、次の位をスタックに積めるようになる。よって、解答はエとなる。

T ← Pop()
でスタックから値を取り出す。この際に変換対象の実数に整数部がある時はその最上位の位を取得し、整数部がない場合には#が取り出される。

T ≠ ”#”
で変換対象の実数に整数部がある時には、以下の処理を行う。

OUT[L] ← T
で取り出した値を、変換結果を格納する文字型の配列に順にセットしていく。

{ b }
変換対象の実数に整数部がない場合に、例えば、変換対象の実数が0.012で、Numが2の時、Out[]は
0.01    

となる。

つまりは変換対象の実数に整数部がない場合には、Out[0]に”0”をセットする必要がある。この場合はL=0の場合が該当する。

同様にして、変換対象の実数に整数部がない負数の時は、例えば変換対象の実数が-0.012でNumが2の時、Out[]は
-0.01   

となる。この場合はL=1でOut[0]=”-“の場合が該当する。

よって、bの解答はウとなる。

Fdec ← F - Int(F)
で例えばFが12.345の時、Int(F)は12になるからFdecは0.345となる。よって、Fdecには変換対象の実数の小数部がセットされることになる。

{ c }
Fdec ← Fdec × 10
でFdecが0.345の時に結果は3.45となる。

さらに
Idx ← Int(Fdec)
でFdecが3.45の際にIdxには3がセットされる。

OUT[L] ← Chr[Idx]
で、Idxが3の時は文字の”3”がOUT[L]にセットされることになる。よって、解答はエとなる。

{ d }
上記の処理で小数点以下第1位をOUT[]にセットできる。上記の例では{ c }の処理でFdecが0.345の時に結果は3.45となる。よって、本処理で演算結果が0.45となれば、次の小数点がOUT[]に取得できるようになる。

よって、解答はアとなる。

設問2
Floatが-0.012の時、プログラム中の /* 符号の処理 */ セクションで
Float≧0.0
は偽となる。よって
F ← - Float
でFには0.012がセットされる。

/* 整数部の処理 */ セクションでInt(F)は0となる。
Fint > 0
は偽となるから、αの処理は一度も行われないことになる。よって、解答はアとなる。

/* 小数部の処理 */ セクションで
N:1 , N≦Num , 1
では擬似言語の言語仕様により、初期値がN=1でN≦Numが真の間はループを繰り返す。よって、βは2回繰り返されることになる。よって、解答はウとなる。

参考:平成19年秋期基本情報技術者試験午後問4

***********************************************************************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
***********************************************************************************************************

04/24のツイートまとめ

IT01765612

次の @YouTube 動画を高く評価しました: https://t.co/fNpGYDRyqc バーコードを活用した棚卸業務
04-24 23:32

動画にメッセージを追加する https://t.co/fNpGYDRyqc
04-24 10:15

04/19のツイートまとめ

IT01765612

次の @YouTube 動画を高く評価しました: https://t.co/aCsR0H3fq5
04-19 13:14

動画にメッセージを追加する https://t.co/aCsR0H3fq5
04-19 10:01

04/17のツイートまとめ

IT01765612

次の @YouTube 動画を高く評価しました: https://t.co/pSfxl8EHyn バーコードを活用したピッキング出荷検品
04-17 22:53

次の @YouTube 動画を高く評価しました: https://t.co/lHbhZoaCU8 Access入門(3)テーブルの作成
04-17 22:53

動画にメッセージを追加する https://t.co/lHbhZoaCU8
04-17 10:19

動画にメッセージを追加する https://t.co/pSfxl8EHyn
04-17 10:16

04/12のツイートまとめ

IT01765612

次の @YouTube 動画を高く評価しました: https://t.co/m3pyHTc6Uh Access入門(2)アクセスの起動
04-12 14:43

動画にメッセージを追加する https://t.co/m3pyHTtIiR
04-12 09:50

04/10のツイートまとめ

IT01765612

.@it01765612 さんの @YouTube 動画を高く評価しました: https://t.co/QXO3OhsUk4
04-10 18:06

.@it01765612 さんの @YouTube 動画を高く評価しました: https://t.co/ivoNChfAta
04-10 18:06

動画にメッセージを追加する https://t.co/ivoNChfAta
04-10 16:05

動画にメッセージを追加する https://t.co/QXO3OhsUk4
04-10 15:46

平成19年春期基本情報技術者試験午後問7、COBOL言語

本ページは平成19年春期基本情報技術者試験午後問7、COBOL言語の解説です。
問題文、解答、解説の順で掲載しております。

**************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
**************************************************

次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕

選挙速報を画面に表示するプログラムである。あるテレビ局では,地方自治体の首長選挙において,地区ごとの開票情報を収集し,候補者ごとの得票数を集計して表示するプログラムを開発した。

(1) 地区ごとの開票情報を記録した開票ファイルのレコード様式は,次のとおりである。

地区コード
6けた
候補者名
20けた
得票数
9けた


(2) 選挙速報の表示様式は,次のとおりである。


 候補者名      得票数
 XXX … XXX   ZZZ,ZZZ,ZZ9
   :        :



① 選挙速報は,得票数の降順に表示する。
② 見出しは,あらかじめ表示されている。

(3) 候補者数は最大 50人,得票数は最大9けたとし,データに誤りはないものとする。

〔プログラム〕
DATA DIVISION.
FILE SECTION.
FD KAIHYO-F.
01 KAIHYO-R.
05 K-CHIKU-CD PIC X(6).
05 K-KOH OS HA-MEI PIC X(20).
05 K-TOKUHYO-SU PIC 9(9).
WORKING-STORAGE SECTION.
01 SHUKEI-TABLE.
05 S-MAX PIC 9(3).
05 S-TBL OCCURS 0 TO 50 DEPENDING ON S-MAX
INDEXED BY S-IDX.
10 S-KOHOSHA-MEI PIC X(20).
10 S-TOKUHYO-SU PIC 9(9).
01 W-TBL PIC X(29).
01 P-TOKUHYO-SU PIC ZZZ,ZZZ,ZZ9.
01 W-EOF PIC 9.
01 W-I PIC 9(5).
01 W-J PIC 9(5).
01 W-K PIC 9(5).
PROCEDURE DIVISION.
MAIN-CTL.
OPEN INPUT KAIHYO-F.
MOVE 0 TO W-EOF.
MOVE 0 TO S-MAX.
PERFORM UNTIL W-EOF = 1
READ KAIHYO-F
AT END MOVE 1 TO W-EOF
NOT AT END PERFORM SHUKEI-PROC
END-READ
END-PERFORM.
PERFORM SHUKEI-DISP.
CLOSE KAIHYO-F.
STOP RUN.
*
SHUKEI-PROC.
SET S-IDX TO 1.
SEARCH S-TBL VARYING S-IDX
AT END
ADD 1 TO S-MAX
MOVE K-KOHOSHA-MEI TO S-KOHOSHA-MEI(S-MAX)
{ a }
WHEN S-KOHOSHA-MEI(S-IDX) = K-KOHOSHA-MEI
{ b }
END-SEARCH.
*
SHUKEI-DISP.
PERFORM VARYING W-I FROM 1 BY 1 UNTIL W-I > S-MAX
COMPUTE W-K = W-I + 1
PERFORM VARYING W-J FROM W-K BY 1 UNTIL W-J > S-MAX
IF S-TOKUHYO-SU(W-I) < S-TOKUHYO-SU(W-J)
MOVE S-TBL(W-I) TO W-TBL
{ c }
MOVE W-TBL TO S-TBL(W-J)
END-IF
END-PERFORM
MOVE S-TOKUHYO-SU(W-I) TO P-TOKUHYO-SU
DISPLAY S-KOHOSHA-MEI(W-I) " " P-TOKUHYO-SU
END-PERFORM.



設問1 プログラム中の{ }に入れる正しい答えを,解答群の中から選べ。

解答群

ア ADD K-TOKUHYO-SU TO S-TOKUHYO-SU(S-IDX)
イ ADD K-TOKUHYO-SU TO S-TOKUHYO-SU(S-MAX)
ウ MOVE K-TOKUHYO-SU TO S-TOKUHYO-SU(S-MAX)
エ MOVE S-TBL(W-I) TO S-TBL(W-J)
オ MOVE S-TBL(W-J) TO S-TBL(W-I)

設問2 このプログラムの動作を検証するための命令網羅テストにおいて,開票ファイルとして適切なデータの並びを,解答群の中から選べ。

解答群

cobol_03_01.jpg

参考文献
OCCURS DEPENDING ON
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1481956944
http://www16.plala.or.jp/hiyokogumi/dic/occurs.html

**************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
**************************************************

********************************************************************************
解答
設問1
答 aウ 答 bア 答 cオ

設問2
答 オ
********************************************************************************

解説

設問1
05 S-MAX PIC 9(3).
05 S-TBL OCCURS 0 TO 50 DEPENDING ON S-MAX
INDEXED BY S-IDX.
DEPENDING ONはS-TBLの配列数が可変であることを示している。この配列数はS-MAXによって与えられる。ただし、OCCURS 0 TO 50とあるので、可変の範囲はあくまで、0~50までの間に限られている。

OPEN INPUT KAIHYO-F.
ファイルKAIHYO-FをINPUT用(読込み用)として開く。

PERFORM UNTIL W-EOF = 1
READ KAIHYO-F
AT END MOVE 1 TO W-EOF
NOT AT END PERFORM SHUKEI-PROC
END-READ
END-PERFORM.
KAIHYO-FをREADで読込み、ファイルを読み終えた後でW-EOFに1をセットしている。PERFORM UNTIL W-EOF = 1になるまでループするから、KAIHYO-Fを読み終えるまで、ループすることになる。NOT AT ENDよりファイルを読込んだ時にレコードが読込めた場合には、処理がSHUKEI-PROCに移動する。


{ a }
SEARCH S-TBL VARYING S-IDX
でS-TBLをS-IDX分だけ繰り返す。初回は、S-TBLに何も設定されていないので、AT END以下の処理が行われる。

MOVE K-KOHOSHA-MEI TO S-KOHOSHA-MEI(S-MAX)
より、候補者名をS-TBLに登録する。
よって、同様に読み込んだレコードの得票数であるK-TOKUHYO-SUを
S-TOKUHYO-SU(S-MAX)にセットすればよい。よって、解答はウとなる。

{ b }
WHEN S-KOHOSHA-MEI(S-IDX) = K-KOHOSHA-MEI
S-KOHOSHA-MEI(S-IDX)よりS-TBLに存在する候補者名とK-KOHOSHA-MEIよりファイルで読込んだ候補者名が等しい時は、集計している得票数にプラスしてやればよい。よって解答は、イとなる。

イはADDとあり、追加でプラスする処理となる。具体的には
S-TOKUHYO-SU(S-IDX) = S-TOKUHYO-SU(S-IDX) +K-TOKUHYO-SU
という処理である。

{ c }
PERFORM VARYING W-I FROM 1 BY 1 UNTIL W-I > S-MAX
より、W-Iを1からS-MAXまで1ずつカウントアップする。

COMPUTE W-K = W-I + 1
PERFORM VARYING W-J FROM W-K BY 1 UNTIL W-J > S-MAX
より、W-Iが1の時、W-Jは2からS-MAXまで1ずつカウントアップする。W-Iが2の時、
W-Jは3からS-MAXまで1ずつカウントアップする。

IF S-TOKUHYO-SU(W-I) < S-TOKUHYO-SU(W-J)
で、例えば、W-Iが1の時、S-TOKUHYO-SU(1)とS-TOKUHYO-SU(2)の大小比較を行っている。

MOVE S-TOKUHYO-SU(W-I) TO P-TOKUHYO-SU
DISPLAY S-KOH OS HA-MEI(W-I) " " P-TOKUHYO-SU
より、最終的にS-TOKUHYO-SU(W-I)の値を出力しているが、問題文より「選挙速報は,得票数の降順に表示する。」とのことであるから、S-TOKUHYO-SU(W-I)はもっとも大きい数値でないといけない。

降順とは大きい値から小さい値にかけて並び替えることである。

よって、IF S-TOKUHYO-SU(W-I) < S-TOKUHYO-SU(W-J)以下の部分で
S-TOKUHYO-SU(W-J)の値の方が大きければ、S-TOKUHYO-SU(W-I)と並び替えないを行う必要がある。

MOVE S-TBL(W-I) TO W-TBL
で一旦、S-TBL(W-I)の値をワークデータW-TBLに保存しているので、その間に、
S-TBL(W-J)の値をS-TBL(W-I)にセットすればよい。よって、解答はオとなる。

MOVE W-TBL TO S-TBL(W-J)
より、退避していたワークデータW-TBLの値をS-TBL(W-J)に戻してやれば、値の入れ替えが完成する。

ワークデータを使って、値の入れ替えを行うというのは定番中の定番の処理などでしっかり理解しておいていただきたい。

設問2
命令網羅テストとは、文字通りすべての命令文が実行されるようにテストを行うことである。

解答群のウをみるとレコードのすべての候補者の名前が異なっている。
よってこの場合、SHUKEI-PROC内の
WHEN S-KOH OS HA-MEI(S-IDX) = K-KOH OS HA-MEI
ADD K-TOKUHYO-SU TO S-TOKUHYO-SU(S-IDX)
の式は実行されない。よって、すべてを命令網羅していないので解答として不適切である。同様の理由で解答エも不適切である。

イも同様に不適正に思えるかもしれないが、SHUKEI-PROC内の処理に関しては、1レコード目の処理でAT END以下が実行され、2レコード目でWHEN以下が実行されるから、命令網羅されている。

SHUKEI-DISP内の処理に関して、解答アの場合は、その前段階として、S-TBLに以下のようにセットされている。

 候補者名 得票数
WWWWWW 6000
XXXXXX 5000
ZZZZZZ 4000
VVVVVV 3000

この場合、すでに後方のレコード程に得票数が小さくなっているので、
IF S-TOKUHYO-SU(W-I) < S-TOKUHYO-SU(W-J)
の条件以下は処理が行われない。よって、アは不適切である。

解答イは候補者が1名しかいないので、
PERFORM VARYING W-J FROM W-K BY 1 UNTIL W-J > S-MAX
以下の処理が行われない。よって、イは不適切である。

解答オはその前段階として、S-TBLに以下のようにセットされている。

 候補者名 得票数
WWWWWW 4000
XXXXXX 5000
YYYYYY 9000

この場合は、IF S-TOKUHYO-SU(W-I) < S-TOKUHYO-SU(W-J)
の条件以下は処理も適切に行わるので、解答はオとなる。

参考:平成19年春期基本情報技術者試験午後問7

**************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
**************************************************

平成20年春期基本情報技術者試験午後 問8、JAVA言語

本ページは、平成20年 春期 基本情報技術者試験 午後 問8、JAVA言語の解説です。
問題文、解答、解説の順で掲載しております。

***********************************************************************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

***********************************************************************************************************

次の Java プログラムの説明及びプログラムを読んで,設問に答えよ。

〔プログラムの説明〕

 電気ポットの状態遷移を模したプログラムである。この電気ポットは,電源に接続すると休止状態になり,沸騰ボタンが押されると加熱を開始する。沸点に到達すると加熱を終了し,休止状態に戻る。ただし,電気ポットに水がない場合は,沸騰ボタンが 押されても加熱を開始せず,警告を表示する。電気ポットの状態遷移図を図1に示す。
java_03_01.jpg
   図1 電気ポットの状態遷移図

(1) 抽象クラス State は,電気ポットの状態を定義する。
(2) クラス Idle 及びクラスHeating は,それぞれ,休止状態と加熱中状態を示す State のサブクラスである。
(3) クラス ElectricPot は電気ポットを表す。フィールド currentState は ,電気ポットの状態を示す。フィールド content は,水量を示す。メソッド heat は, 沸騰ボタンが押されたときに呼ばれ,電気ポットに水があれば加熱を開始する(電気ポットの状態を加熱中に遷移)。水がない場合は例外を投げる。 メソッド boiled は,水が沸点に到達したときに呼ばれ, 加熱を終了する(電気ポットの状態を休上に遷移)。 メソッド isEmpty は,水がない場合 true,それ以外の場合 false を返す。 メソッド main はテスト用のメインプログラムである。実行結果を図2に示す。

 Idle -> Heating  
Heating -> Idle  
No Water!  
  

図2 メソッド main の実行結果
〔プログラム1〕

public abstract class State {
public static final State IDLE = new Idle();
public static final State HEATING = new Heating();

public void heat(ElectricPot pot) throws Exception {
if ({ a } )
{ b } ;
pot.changeState(HEATING);
}

public void boiled(ElectricPot pot) {
pot.changeState(IDLE);
}

private static class Idle { c } {
public String toString() { return "Idle"; }
}

private static class Heating { c } {
public String toString() { return "Heating"; }
}
}

〔プログラム2〕

public class ElectricPot {
private State currentState = State.IDLE;
private int content;

public ElectricPot(int content) { this.content = content; }
public void setContent(int content) {
this.content = content;
}

public boolean isEmpty() { return (content == 0); }
public void changeState(State newState) {
System.out.println(currentState + " -> " + newState);
currentState = newState;
}

public void heat() throws Exception {
{ d } .heat(this);
}

public void boiled() {
{ d } .boiled(this);
}

public static void main(String[] args) {
try {
ElectricPot pot = new ElectricPot(10);
pot.heat();
pot.boiled();
pot.setContent(0);
pot.heat();
pot.boiled();
} catch (Exception e) {
System.out.plintln(e.getMessage());
}
}
}


設問 プログラム中の{ }に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア isEmpty()       イ !isEmpty()
ウ pot.isEmpty()      エ !pot.isEmpty()
オ pot == null       カ pot != null

b に関する解答群

ア return "No Water!"
イ System.out.println("No Water!")
ウ throw "No Water!"
エ throw new Exception("No Water!")

c に関する解答群

ア extends Exception     イ extends Object
ウ extends State       エ implements Exception
オ implements Object     カ implements State

d に関する解答群

ア currentState       イ State
ウ super           エ this

***********************************************************************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

***********************************************************************************************************

********************************************************************************
解答

答 aウ 答 bエ 答 cウ 答 dア

********************************************************************************

解説
public static final State IDLE = new Idle();

publicはアクセス修飾子と呼ばれその他としてprotected、何も指定しない、privateなどがある。これは指定した変数やクラスなどをどの範囲から参照可能かを制御するのに用いられる。
自ファイル他ファイル
自クラスサブクラス他クラスサブクラス他クラス
public
protected×
なし××
private××××

staticは、クラスをインスタンスしなくても、そのクラス、メソッド、変数などを参照可能となる。

finalは上書きされないことを意味している。つまり、これをクラスに用いた場合はサブクラスを定義できないし、メソッドに用いた場合にはオーバーロードできない。

{ a }
問題文よりクラスStateは電気ポットの状態を定義するとある。ただ、それ以上の説明はないのでheatメソッドが何をしているかは問題文からは読み取れない。クラスStateはheatメソッドとboidedメソッドとあり、単語の意味から推測すると加熱した時の処理ではないかと推測できる。

加熱は問題文より水がない場合は加熱をせず、水がある場合は加熱をするということで、これはheatの中の処理と合致するようにみえる。
if ({ a } )
{ b } ;
pot.changeState(HEATING);
よって、if文で水があるかをチェックして、水がなければ{ b }の処理を行い、あればpot.changeState(HEATING)、つまりは温める処理をしているのではないかと推測できる。

aに関する解答群をみると、選択肢アのisEmpty()とあるが、いきなりメソッドを呼び出すためには基本時にそれが自クラス内で定義されたメソッドである必要がある。クラスStateにはisEmpty()というメソッドはないのでアもイも解答ではないことがわかる。

ウのpot.isEmpty()であるが、potは、heatメソッドの引数になっており、引数の型はElectricPotなのでElectricPotクラス内をみるとisEmpty()というメソッドが存在する。さらに、問題文の(3)をみると「メソッド isEmpty は,水がない場合 true,それ以外の場合 false を返す」とある。

よって、isEmpty内の処理は、contentが0の時は水がない場合を、content が0でない時は水がある場合を表している。説明文よりフィールドcontentは水量を表すとあるから、処理の内容とも合致する。よって、解答はウかエとなる。

{ a }のif文内は水がなければ{ b }の処理を行うので、解答はウとなる。

{ b }
問題文より「水がない場合は例外を投げる」とある。bの解答群で例外を投げているのはエだけである。よって、解答はエとなる。

private static class Idle { c }
ここにclassという表記があることから、Idleはクラスであることがわかる。問題文より「クラス Idle 及びクラスHeating は,それぞれ,休止状態と加熱中状態を示す State のサブクラスである。 」とあるので、{ c }の解答はウとなる。

これはStateクラスの中にIdleクラスが定義されており内部クラスと呼ばれるものである。
内部クラスには次のような特徴がある。
・内部クラスから同じクラス内のメンバ変数、メソッドを参照することができる。さらに、メンバ変数、メソッドにprivateアクセスレベルが付与されている場合でも、同じクラス内のため参照することができる。
・メソッド内に内部クラスを宣言することもできる。その場合、その内部クラスはメソッド内でのみ機能する。同じクラスのメンバ変数、メソッドを参照することはできないが、メソッド内のfinal修飾子が付与されているローカル変数は参照できる。

{ d }
heat処理は前段の説明より、Stateクラスのheatメソッドで行われている。よって、dではStateクラスのheatメソッドを呼び出せばよい。StateクラスはElectricPotクラス内では
private State currentState = State.IDLE
と定義されている。よってdの解答はアとなる。

参考文献
内部クラス
http://www.javaroad.jp/java_class15.htm

***********************************************************************************************************
無料から学べる講座
http://ai-light.com/itkeiei/

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

Access・Excel倶楽部
http://ai-light.com/accessclub/

株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

***********************************************************************************************************

adwords

外部リンク

カテゴリーメニュー 改
カテゴリ
検索フォーム
広告
最新記事
月別アーカイブ
Lc.ツリーカテゴリー
全記事表示リンク

全ての記事を表示する

リンク
各種タグ
キーワードをクリックすると該当のページに移動

中小企業診断士 情報システム  基本情報技術者のC言語 「レスリスバーガーの人間関係論(社会体系論) 「バーナードの協働体系論 「経営の階層 経営組織の体系 「官僚的組織」 「ITパスポートの徹底研究、通信講座」 「基本情報処理技術者試験の徹底研究、通信講座」 「当社のシステム開発サービスのご説明」 「マトリックス組織」 組織の活性化 「テイラーの科学的管理法 マズローの欲求5段階説 経営基本管理(コンティンジェンシー理論) 経営基本管理(SL理論) 経営基本管理(技術システムの高度化と組織) 経営基本管理(分化と統合の理論) 経営基本管理(意思決定論) 経営基本管理状況(適応的リーダーシップ理論) 経営基本管理(システム4理論) 行動科学理論(マネジリアル・グリッド) 動機づけ・衛生理論 行動学理論(ホーソン実験) 行動科学理論(フォードシステム) 経営基本管理(期待理論) XY理論 

当社のシステム開発の詳細
当社はaccess-excelでの小規模システム開発を中心に年間に50社以上の開発実績がございます。詳細は06-6599-8890ないしinfo@ai-light.comまで今すぐお問合せください
プロフィール

itkeieinews

Author:itkeieinews
ITと経営ニュースへようこそ!
アイライトIT経営研究会
株式会社アイライト
電話でのお問合せは06-6599-8890
Email:info@ai-light.com

メールフォーム
こちらからも簡単にメールを送付できます。当社のサービスに関してご質問がございましたら、よろしければ、ご利用ください。直接お電話の場合は06-6599-8890までご連絡ください。

名前:
メール:
件名:
本文:

お気に入り
本サイトをそのまま消してしまうと、もう探せなくなってしまうかもしれません。 当社はいずれお役に立てることがあるかと思いますので、よろしければお気に入りにご登録ください。
リンクツリーV1.1a
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
QRコード
QR
最新コメント
最新トラックバック
フリーエリア