12/30のツイートまとめ

IT01765612

ゲーム業界およびソフトウェア開発技術者になるための定番資格である基本情報技術者試験。基本情報技術者試験の勉強にあたって、どのプログラム言語を選択するべきかというテーマで無料の動画を作成しました。よろしければ、見てくださいね。https://t.co/0wHJMIm3ET
12-30 10:54

12/28のツイートまとめ

IT01765612

有効求人倍率が高水準だったり、パートタイム労働者の時給が高くなったり、企業収益が高水準だったりと、経済は良好とのことですが、なぜか、実感がわかない今日この頃です。
12-28 00:22

12/25のツイートまとめ

IT01765612

知識だけでは解けない問題。そのような問題に対してどのようにアプローチすれば、よいのか。というテーマでyoutubeにて無料の動画を作成してみました。よろしければ、みてくださいね。https://t.co/jqL3AXd9YN
12-25 12:31

12/23のツイートまとめ

IT01765612

最近の企業業績は好調で利益は増加傾向にあるけど、その利益の多くは内部留保(貯金)する傾向にある。将来の先行き不透明感があるのだろうけど、経済のことを考えると企業は積極投資をしてもらった方がいいのにね。
12-23 23:08

創業・起業にはどのようなスキルが必要かというテーマでyoutube無料動画を作成しました。よかったら見てくださいね。https://t.co/E8vpln3SJp
12-23 10:15

12/21のツイートまとめ

IT01765612

社会人になると仕事をしながら学び、スキルアップをしていかなければなりません。どのようにすればそのようなことができるのかというテーマで、youtubeにて無料動画を作成しました。よろしければ、みて下さいね。https://t.co/TfyVEyrzCs
12-21 10:26

12/20のツイートまとめ

IT01765612

集客も重要ですが結局中身がない商品ではどうしようもないですね。逆に、素晴らしい商品を持っているとかなりビジネスがやりやすいです。成功する商品サービス選びというテーマでyoutubeにて無料動画を作成しました。みて下さいね。https://t.co/FQywgdutWg
12-20 10:27

12/18のツイートまとめ

IT01765612

マイクロソフトのAccess動画講座を行っております。入門から応用までトータル30時間30分の大作です。また、一部の動画は無料でも見れます。よかったら、見てくださいね。https://t.co/ccRgZpbTrX
12-18 11:36

12/15のツイートまとめ

IT01765612

サッカーのクラブワールドカップ(世界大会)で何と日本の鹿島アントラーズが南米王者を破って決勝に進出とのこと。大大大~~~~金星ですね。日本すごーーーーーい。
12-15 10:51

12/14のツイートまとめ

IT01765612

システムエンジニアをめざされている方向けに、魅力、勉強方法などにつてYOUTUBEで無料の動画を公開しております。よかったら、見てくださいね。https://t.co/lXIUFLU4nA
12-14 01:02

12/12のツイートまとめ

IT01765612

ボクが小さい時には、おばあちゃんに残さず食べなさいって教えられてきた。なので、出された食事は完食するけど、この前に、ある人から飽食の時代だから、ちょっとぐらい残す方が健康的だぞって指摘を受けた。どちらがよいかはわからないけど、時代と共に考え方を変えないといけないのかな。
12-12 17:43

テーブル作成①

**************************************************
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)
**************************************************

ACCESS講座テーブル編

1. ACCESSの起動と保存

~~~~本節の概要~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
・アクセスのファイルの開き方と保存の仕方

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

まずアクセスのファイルの開き方と保存の仕方についてご説明します。
このパソコン上ではデスクトップにアクセスのファイルを置いていますのでまずアクセスのシステムを起動してください。(アクセスのインストールは各自で、行ってください。本書は、デスクトップ上に、アクセスアイコンが存在する場合を想定しております。)

access_table_01.jpg

起動した画面ですが、アクセス2010の場合には下図のような状態になります。
 現在は、新規作成という形になっており空のデータベースです。保管場所とファイル名は下図の丸のようになります。ファイル名を変える場合には、赤丸部分に入力します。
 保存される場所は現在、「C:\Documents and Setting\ … 」となっております。
場所を変える場合には、丸部分のボタンを押します。

access_table_02.jpg

 丸部分のボタンを押しますと、「新しいデータベース」という画面を開きます。その画面の下部分に、ファイル名という欄がありますので、その欄にファイル名を入力します。今回は、「access講座」という下に [顧客管理.accdb] というファイル名を付けて[Ok]を押します。[作成]ボタンを押して頂きますと、「顧客管理」というデータベースになりファイルが開いた状態になります。

access_table_03.jpg access_table_04.jpg

今は新規に作成したばかりなので、これは中身が何も無い状態です。画面の上部分に保存ボタン(下図の丸部分)があります。このボタンは、上書き保存ということです。(ファイルの保存や終了などの操作は、word、excelなどと共通です。)

access_table_05.jpg

 保存したファイルを開くときは、先ほど「access講座」という所にファイルを保存しましたがこちらのファイルをダブルクリックして開きます。(ファイルを開く方法も、word、excelなどと共通です。)ファイルを開くと下図のようになります。ここで、コンテンツの有効化というので、これからアクセス上にプログラムとかを書いていきますので、プログラムを有効にするか有効にしないかということでこれを「有効にする」を選択します。

access_table_06.jpg

もしくは、先ほど単にファイルをダブルクリックしましたが、最初にアクセスを開いて頂いて、下図の丸部分を押していただき、そこから、「各種セミナ」の「ビデオ講座」の「アクセス」の「顧客管理」を選択(要は、保存したファイルパスを選択)して頂けば、ファイル開くことができます。

access_table_07.jpg

**************************************************
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)
**************************************************

**************************************************
【関連リンク】
《Access講座(1)》
テーブル編講座紹介

《Access講座(2)》
Accessウルトラマスター講座セット販売品(トータル26巻、動画合計時間30時間30分、作業管理システムソースコード公開版含む
**************************************************

経済学のお勉強

GDP・・・国内総生産のこと。国内で産み出された付加価値の総額。GDPの伸び率が経済成長率に値する。

名目GDP・・・ものやサービスの付加価値を合計したもの

実質GDP・・・名目GDPから物価変動を除いたもの

GDPデフレーター・・・名目GDPを実質GDPで割ったもの。物価変動の程度を表す物価指数で、プラスであればインフレーション、マイナスであればデフレーションと言える。

GNI・・・国民総所得のこと。

GDPを構成する主な要因には、公共需要、設備投資、住宅投資、在庫品増加、輸入、輸出がある。

GNIを構成する主な要因には、GDPの成長、交易利得、海外からの所得純受取がある。

交易利得・・・輸出物価指数を輸入物価指数で除した指数。これが100を超えると、交易条件が改善したことになる。

輸出物価指数・・・輸出した商品に対する物価の変動を指数にしたもの。

潜在(GDP)成長率・・・資本ストックや労働力を過不足なく活用した場合に達成し得る経済成長率のこと。

潜在(GDP)成長率は、労働投入、資本投入、全要素生産性に分解できる。

景気に影響を与える要因、為替市場、株価、企業収益、労働力、賃金、個人消費、設備投資、物価の動向がある。

消費性向・・・所得ないし可処分所得のうち消費支出される割合

基礎的財政収支・・・税収・税外収入と、国債費(国債の元本返済や利子の支払いにあてられる費用)を除く歳出との収支。要するに国の収支のこと。

国の債務残高に影響を与える要因としては、基礎的財政収支、利払費、GDPデフレーター、実質GDP成長率、などがある。

GDPデフレーターがマイナスであるとは、デフレーションを起こしている状態であるから、GDPデフレーターが大きくなると、国の債務残高に対しては縮小する要因となる。

税収の分類としては、法人税、所得税、間接税に分けられる。

法人税・・・企業の税金。

所得税・・・個人の税金。

間接税・・・税金を納める義務がある者(納税者)と、税金を負担する者が異なる税のこと。消費税などが該当する。

イールドカーブ・・・期間が異なる複数の債券などにおける利回りの変化をグラフにしたもの。

**************************************************
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)
**************************************************

12/09のツイートまとめ

IT01765612

最近、地下鉄の電車内で飲食する人をよく見かけますね。前は、マンゴジュースを一気飲みするおじさま。その前は、缶チューハイを一人で飲む、20代後半のスーツを着た女子。飲まずにやってられるか!って感じかな。
12-09 11:58

平成19年春期基本情報技術者試験午後問9、アセンブラ言語

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

**************************************************
無料から学べる講座
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~3に答えよ。

〔プログラムの説明〕

 副プログラムSYMTSTは,16ビットからなるビット列が左右対称かどうかを検査するプログラムである。図に左右対称なビット列の例を示す。

1 0 1 1 0 1 0 11 0 1 0 1 1 0 1

図 左右対称なビット列の例

(1) ビット列はGR1に設定されて,主プログラムから渡される。

(2) ビット列が左右対称であればGR0に1を,そうでなければ0を設定して主プログラムに返す。

(3) 副プログラムから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。

〔プログラム〕

(行番号)
1 SYMTST START
2 RPUSH
3 LD GR3,=8
4 LD GR2,GR1
5 LOOP SLL GR1,1
6 JOV OFLOW
7 SRL GR2,1 ; 右端のビットは1か?
8 JOV NG ; 1であれば左右対称でない。
9 JUMP OK
10 OFLOW SRL GR2,1
11 { a }
12 NG LD GR0,=0 ; 左右対称でない。
13 JUMP FIN
14 OK SUBA GR3,=1
15 { b }
16 LD GR0,=1 ; 左右対称である。
17 FIN RPOP
18 RET
19 END


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

解答群

ア JMI LOOP     イ JOV NG      ウ JOV OFLOW
エ JOV OK      オ JPL LOOP     カ JZE LOOP

設問2 ビット列が図のとおりであった場合,行番号17のマクロ命令RPOPの実行直前に おけるGR2の内容として正しい答えを,解答群の中から選べ。

解答群
assembla_02_01.jpg

設問3 ビット列が次のとおりであった場合(▲で示されるビットが左右対称ではない場合), 行番号10のSRL命令は何回実行されるか。正しい答えを,解答群の中から選べ。

assembla_02_02.jpg
解答群

ア 1       イ 2       ウ 3       エ 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 答 aエ 答 bオ  設問2 答 イ  設問3 答 ウ

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

解説
1行目のSTARTは、プログラムの先頭を定義している。
2行目のRPUSHは、GRの内容をGR1,GR2,・・・・GR7の順でスタックに格納する。
3行目は、GR3に8をセットする。
4行目は、GR1の内容をGR2にセットする。左右対称かを検査するビット列をGR2にもセットすることになる。

5行目は、GR1を1ビット左に論理シフトする。
図の左右対称なビット列の例は1ビット左に論理シフト結果として、以下のようになる。
0101101011010110 OF・・・1
OFにはレジスタから最後に送り出されたビットの値が設定される。

6行目は、オーバーフロー分岐でOFが1の時に分岐を行い、10行目に処理が移動する。図の例では分岐が起こる。

同様にして、10行目でGR1を1ビット右に論理シフトする。
図の左右対称なビット列の例は以下のようになる。
0110101101011010 OF・・・1
OFにはレジスタから最後に送り出されたビットの値が設定される。

{ a }
10行目は5・6行目でOFに1がセットされている場合に処理が行われる。よって、10行目の結果もOFに1がセットされていると左右対称となり、14行目に処理が移動する。
よって、解答はエとなる。

11行目の結果、処理が14行目に移動する。
14行目で算術減算を行い、GR3の値をマイナス1引く。GR3はカウンタの役割をしており、3行目でGR3に初期値として8をセットしておき順次マイナスしていく。


{ b }
1回目の処理でビットが左右対称かを確認して、左右対称ならGR3を7にして、ループする。処理は8回確認する必要がありその時のGR3は0となる。GR3が0となれば処理を終了すればよい。よって、解答はオとなる。

6行目でOFLOWに分岐しない場合、つまりは5行目で論理左シフトした際にOFに0がセットされていた場合には、7行目に処理が移り、GR2を論理右シフトする。

8行目で、OFに1がセットされていた場合には、左右非対称であるから処理が12行目に移り、その後に処理が終了する。また、OFに0がセットされていた場合には、左右対称であるから処理が14行目に移り、処理が続くことになる。

17行目のRPOPは、スタックから順にデータを取り出しGR7, GR6,・・・・GR1の順にデータを格納する。
18行目のRETは、呼び出し元へ戻る。
19行目のENDは、プログラムの終わりであることを定義する。

設問2
上記の説明より、GR1は論理左シフトを順次行っていき、GR2は論理右シフトを順次行っていく。また、シフトは左右対称の場合には8回の比較が行われる。よって、解答はイとなる。

設問3
10行目の論理右シフト命令は、5行目でGR1を左シフトした際に、OF(レジスタから最後に送り出されたビットの値)が1の時に、6行目の分岐条件で10行目に処理が移動する。

さらに11行目でビット列が非対称であった場合には、12行目のNG内に処理が移り、処理が終了する。

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

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

**************************************************
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)
**************************************************

12/08のツイートまとめ

IT01765612

基本情報技術者試験のC言語の過去問、解答、解説を行っています。興味があったら見てね。https://t.co/OIErl8tmK9
12-08 01:39

プロジェクト管理・経営管理のポイント



(1)プロジェクト管理・経営管理のポイント
・プロジェクトがうまくいくことはあくまでも結果。
・状況を把握して、良くないことにできる限り早く気が付くこと。

(2)早く気づくことで何ができるか
・残された時間が多い程、打つ手の選択肢が増える可能性が高い。
・そのためには現状把握に努める。
 ‐例えば
 ‐報告・連絡・相談の徹底
 ‐経営の実態をつかむ数値を管理

【アイライトIT経営研究会の紹介】
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)

12/07のツイートまとめ

IT01765612

.@it01765612 さんの @YouTube 動画を高く評価しました: https://t.co/NpYZM8zITZ
12-07 12:48

動画にメッセージを追加する https://t.co/NpYZM8zITZ
12-07 12:14

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

本ページは平成17年春期基本情報技術者試験午後問11、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) ローン条件情報(COND-R)のレコード様式は,次のとおりである。

ローン借入日
8けた
年利
5けた
毎月返済日
2けた
初回返済日
8けた
ローン元金
11けた
返済回数
3けた


① ローン借入日及び初回返済日は,4けたの西暦年,2けたの月,2けたの日で構成される8けたの日付とする(例:2005年7月1日の場合は,20050701)。

② 毎月返済日は,1~31の値とする。返済日に対応する日が存在しない月は,月末の日を返済日とする。

③ 年利は,%を単位とし,整数部2けた小数部3けたで構成される5けたの数値とする (例:年利5.0%の場合は05000)。 返済回数は1~420とする。

④ ローン条件情報で与えられたデータには,誤りがないものとする。

(2) ローン返済計画書の出力例を次に示す。

借入日=2005/06/01  毎月返済日=31 年利= 5.000% ローン元金= 5,000,000円
回数  返済日  日数  元金部分  利息部分  返済額  残高
1 2005/06/30 30 555,556 20,547 576,103 4,444,444
2 2005/07/31 31 555,556 18,873 574,429 3,888,888
3 2005/08/31 31 555,556 16,514 572,070 3,333,332
4 2005/09/30 30 555,556 13,698 569,254 2,777,776
5 2005/10/31 31 555,556 11,796 567,352 2,222,220
6 2005/11/30 30 555,556 9,132 564,688 1,666,664
7 2005/12/31 31 555,556 7,077 562,633 1,111,108
8 2006/01/31 31 555,556 4,718 560,274 555,552
9 2006/02/28 28 555,552 2,130 557,682 0
     273 5,000,000 104,485 5,104,485

ローン返済計画書の見出し部分(出力例の1,2行目)は,あらかじめ印字されているものとする。

(3) 毎月返済額の元金部分及び利息部分の計算は,次のように行う。

① 毎月の元金返済に充てる金額は,“ローン元金÷返済回数”で求める。この元金返済部分を,毎月の返済ごとにローン元金から減算し,ローン元金残高を更新する。

② “ローン元金÷返済回数”が割り切れない場合,毎月の元金返済額は小数点以下を切上げとし,最終回の元金返済額は次の端数の金額となる。

   端数=ローン元金-毎月元金返済額×(返済回数-1 )

③ 毎月の利息は,“ローン元金残高×(年利÷100)×日数÷365”で求め,割り切れない場合は切り捨てる。ここで日数は,最初の返済の場合はローン借入日から初回返済日までの日数,2回目以降は前回返済日の翌日から当月返済日までの日数とする。

(4) 関数 INTEGER-OF-DATE は,8けたの日付をグレゴリオ暦で1601年1月1日を1とする通算日に変換した整数値を返す。

(5) 日付が正しいかどうかを調べるために,副プログラム DATECHK を使用する。
DATECHK は,与えられた日付がカレンダーにある正しい日付かどうかを調べ,正しければ0,正しくなければ1を結果に返す。DATECHK の呼出し方法は,次のとおりである。

CALL "DATECHK" USING 日付 結果

〔プログラム〕
(行番号)
1 DATA DIVISION.
2 FILE SECTION.
3 FD PRINT-F EXTERNAL.
4 01 PRINT-R PIC X(128).
5 WORKING-STORAGE SECTION.
6 01 W-KAISU PIC 9(04).
7 01 W-AMARI PIC 9(05).
8 01 W-GANKIN-KINTOU PIC 9(15).
9 01 W-GANKIN-HASUU PIC 9(15).
10 01 W-REC.
11 05 W-NISSU PIC 9(04).
12 05 W-GANKIN PIC 9(15).
13 05 W-RISOKU PIC 9(15).
14 05 W-HENSAI-GAKU PIC 9(15).
15 05 W-ZANDAKA PIC 9(15).
16 01 MEI-R.
17 05 M-KAISU PIC ZZZ9.
18 05 FILLER PIC X(03).
19 05 M-HENSAI-YMD PIC 9999/99/99.
20 05 FILLER PIC X.
21 05 M-NISSU PIC ZZZZ9.
22 05 FILLER PIC X.
23 05 M-GANKIN PIC ZZZ,ZZZ,ZZ9.
24 05 FILLER PIC X.
25 05 M-RISOKU PIC ZZZ,ZZZ,ZZ9.
26 05 FILLER PIC X.
27 05 M-HENSAI-GAKU PIC ZZZ,ZZZ,ZZ9.
28 05 FILLER PIC X.
29 05 M-ZANDAKA PIC ZZZ,ZZZ,ZZ9.
30 01 GOUKEI.
31 05 G-NISSU PIC 9(05).
32 05 G-GANKIN PIC 9(15).
33 05 G-RISOKU PIC 9(15).
34 05 G-HENSAI-GAKU PIC 9(15).
35 01 W-HENSAI-YMD PIC 9(08).
36 01 W-HENSAI-YMD-R REDEFINES W-HENSAI-YMD.
37 05 W-HENSAI-YY PIC 9(04).
38 05 W-HENSAI-MM PIC 9(02).
39 05 W-HENSAI-DD PIC 9(02).
40 01 JDATE1 PIC 9(15).
41 01 JDATE2 PIC 9(15).
42 01 W-RETCD PIC 9.
43 LINKAGE SECTION.
44 01 COND-R.
45 03 CD-KARIIRE-YMD PIC 9(08).
46 03 CD-NENRI PIC 9(02)V9(03).
47 03 CD-MAITSUKI-DD PIC 9(02).
48 03 CD-SHOKAI-YMD PIC 9(08).
49 03 CD-GANKIN PIC 9(11).
50 03 CD-KAISU PIC 9(03).
51 PROCEDURE DIVISION USING COND-R.
52 MAIN-RTN.
53 PERFORM INIT-RTN.
54 PERFORM LOAN-RTN{ a } .
55 PERFORM GOUKEI-PRINT.
56 EXIT PROGRAM.
57 INIT-RTN.
58 INITIALIZE GOUKEI.
59 DIVIDE CD-GANKIN BY CD-KAISU GIVING W-GANKIN-KINTOU
60 REMAINDER W-AMARI.
61 IF W-AMARI > 0 THEN
62 ADD 1 TO W-GANKIN-KINTOU
63 END-IF.
64 COMPUTE W-GANKIN-HASUU = CD-GANKIN -
65 W-GANKIN-KINTOU * (CD-KAISU - 1).
66 LOAN-RTN.
67 IF W-KAISU = 1 THEN
68 * 最初の返済時
69 MOVE CD-GANKIN TO W-ZANDAKA
70 MOVE CD-SHOKAI-YMD TO W-HENSAI-YMD
71 COMPUTE JDATE1 =
72 FUNCTION INTEGER-OF-DATE(CD-KARIIRE-YMD)
73 COMPUTE JDATE2 =
74 FUNCTION INTEGER-OF-DATE(CD-SHOKAI-YMD)
75 COMPUTE W-NISSU = { b }
76 ELSE
77 * 2 回目以降の返済時
78 COMPUTE JDATE1 =
79 FUNCTION INTEGER-OF-DATE(W-HENSAI-YMD)
80 PERFORM NEXT-HENSAIBI-RTN
81 COMPUTE JDATE2 =
82 FUNCTION INTEGER-OF-DATE(W-HENSAI-YMD)
83 COMPUTE W-NISSU = { c }
84 END-IF.
85 COMPUTE W-RISOKU = { d }.
86 IF W-KAISU = CD-KAISU
87 MOVE W-GANKIN-HASUU TO W-GANKIN
88 ELSE
89 MOVE W-GANKIN-KINTOU TO W-GANKIN
90 END-IF.
91 COMPUTE W-HENSAI-GAKU = W-RISOKU + W-GANKIN.
92 SUBTRACT W-GANKIN FROM W-ZANDAKA.
93 MOVE SPACE TO MEI-R.
94 MOVE W-KAISU TO M-KAISU.
95 MOVE W-HENSAI-YMD TO M-HENSAI-YMD.
96 MOVE W-NISSU TO M-NISSU.
97 MOVE W-GANKIN TO M-GANKIN.
98 MOVE W-RISOKU TO M-RISOKU.
99 MOVE W-HENSAI-GAKU TO M-HENSAI-GAKU.
100 MOVE W-ZANDAKA TO M-ZANDAKA.
101 WRITE PRINT-R FROM MEI-R.
102 ADD W-NISSU TO G-NISSU.
103 ADD W-GANKIN TO G-GANKIN.
104 ADD W-RISOKU TO G-RISOKU.
105 ADD W-HENSAI-GAKU TO G-HENSAI-GAKU.
106 NEXT-HENSAIBI-RTN.
107 * 翌月の返済日を求める
108 MOVE CD-MAITSUKI-DD TO W-HENSAI-DD.
109 ADD 1 TO W-HENSAI-MM.
110 IF W-HENSAI-MM > 12 THEN
111 ADD 1 TO W-HENSAI-YY
112 MOVE 1 TO W-HENSAI-MM
113 END-IF.
114 * 月末の存在しない日付の調整
115 MOVE 1 TO W-RETCD.
116 PERFORM UNTIL W-RETCD = 0
117 CALL "DATECHK" USING W-HENSAI-YMD W-RETCD
118 IF W-RETCD NOT = 0 THEN
119 { e }
120 END-IF
121 END-PERFORM.
122 GOUKEI-PRINT.
123 MOVE SPACE TO MEI-R.
124 MOVE G-NISSU TO M-NISSU.
125 MOVE G-GANKIN TO M-GANKIN.
126 MOVE G-RISOKU TO M-RISOKU.
127 MOVE G-HENSAI-GAKU TO M-HENSAI-GAKU.
128 WRITE PRINT-R FROM MEI-R.


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

a に関する解答群

ア CD-KAISU TIMES
イ VARYING W-KAISU FROM 1 BY 1 UNTIL W-KAISU < CD-KAISU
ウ VARYING W-KAISU FROM 1 BY 1 UNTIL W-KAISU = CD-KAISU
エ VARYING W-KAISU FROM 1 BY 1 UNTIL W-KAISU > CD-KAISU

b,c に関する解答群

ア JDATE2 + JDATE1    イ JDATE2 - CD-SHOKAI-YMD
ウ JDATE2 - JDATE1    エ JDATE2 - JDATE1 + 1
オ JDATE2 - W-HENSAI-YMD

d に関する解答群

ア CD-GANKIN * JDATE2 * CD-NENRI / 100 / 365
イ CD-GANKIN * W-NISSU * CD-NENRI / 100 / 365
ウ W-ZANDAKA * JDATE2 * CD-NENRI / 100 / 365
エ W-ZANDAKA * W-NISSU * CD-NENRI / 100 / 365

e に関する解答群

ア ADD   1 TO  W-HENSAI-DD
イ ADD   1 TO  W-HENSAI-YY
ウ SUBTRACT 1 FROM W-HENSAI-DD
エ SUBTRACT 1 FROM W-HENSAI-MM

設問2 このプログラムでは,ローン元金が返済回数で割り切れない場合の端数調整を最終回の返済で行っている。パラメタ指定によって初回の返済でも調整できるようにプログラムを変更したい。行番号50と51の間に次の行を挿入し,ローン条件情報に端数調整方法を追加する。この値が1のときは初回調整,0のときは最終回調整とする。

   03 CD-HASUU     PIC  9.

あわせて,プログラム中の行番号 86を変更すべき内容として正しい答えを,解答群の中から選べ。

初回調整の場合のローン返済計画書の出力例を,次に示す。

借入日=2005/06/01  毎月返済日=31 年利= 5.000% ローン元金= 5,000,000円
回数 返済日 日数 元金部分 利息部分 返済額 残高
1 2005/06/30 30 555,552 20,547 576,099 4,444,448
2 2005/07/31 31 555,556 18,873 574,429 3,888,892
3 2005/08/31 31 555,556 16,514 572,070 3,333,336
4 2005/09/30 30 555,556 13,698 569,254 2,777,780
5 2005/10/31 31 555,556 11,796 567,352 2,222,224
6 2005/11/30 30 555,556 9,132 564,688 1,666,668
7 2005/12/31 31 555,556 7,077 562,633 1,111,112
8 2006/01/31 31 555,556 4,718 560,274 555,556
9 2006/02/28 28 555,556 2,130 557,686 0
    273 5,000,000 104,485 5,104,485

解答群

ア IF CD-HASUU = 0 AND W-KAISU = CD-KAISU THEN
イ IF CD-HASUU = 1 AND W-KAISU = 1 THEN
ウ IF CD-HASUU = 0 AND W-KAISU = CD-KAISU AND
    CD-HASUU = 1 AND W-KAISU = 1 THEN
エ IF CD-HASUU = 0 AND W-KAISU = CD-KAISU OR
    CD-HASUU = 1 AND W-KAISU = 1 THEN
オ IF W-AMARI NOT = 0 OR
    CD-HASUU = 0 AND W-KAISU = CD-KAISU OR
    CD-HASUU = 1 AND W-KAISU = 1 THEN

参考文献
PERFORM TIMES
http://tallercolibri.com/archives/101

SUBTRACT
http://ksprog.okoshi-yasu.com/cobol.html
http://www16.plala.or.jp/hiyokogumi/dic/a_subtract.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ウ 答 dエ 答 eウ

設問2
答 エ
********************************************************************************

解説
51行目のPROCEDURE DIVISIONから内容を確認する。
53行目のPERFORM INIT-RTNより、57 行目のINIT-RTNに処理が移動する。
58行目のINITIALIZE GOUKEIで、GOUKEIを初期化する。INITIALIZEは、数値項目を「0」にして、英数字項目をブランクにする。
59・60行目のDIVIDE CD-GANKIN BY CD-KAISU GIVING W-GANKIN-KINTOU
REMAINDER W-AMARI.で
CD-GANKIN÷CD-KAISUの商をW-GANKIN-KINTOUに余りをW-AMARIにセットする。

61 IF W-AMARI > 0 THEN
62 ADD 1 TO W-GANKIN-KINTOU
63 END-IF.
で、上記の割り算の計算で余りがある時は、割り算の商であるW-GANKIN-KINTOUに1を足している。これは、問題文の「②“ローン元金÷返済回数”が割り切れない場合,毎月の元金返済額は小数点以下を切上げとし・・・」の部分に該当する処理を行っている。

64・65行目のCOMPUTE W-GANKIN-HASUU = CD-GANKIN -
  W-GANKIN-KINTOU * (CD-KAISU - 1)
では、端数=ローン元金-毎月元金返済額×(返済回数-1 )の計算を行っている。

{ a }
54行目の{ a }の関して、解答群を確認するとすべて繰返し条件となっているが、
LOAN-RTNの処理内容次第なので、{ a }の解答を考える前に、LOAN-RTNの処理内容を読み進めことにする。

67・68行目のIF W-KAISU = 1 THEN
* 最初の返済時
より、W-KAISUが返済回数を示し、ここではローン返済計画書を作成していると推測できる。* の行はコメント行(プログラムの処理には関係のないプログラムの補足説明)である。

W-KAISUはWORKING-STORAGE SECTION内で与えられる変数であるが、68行目より前の処理ではW-KAISUの値は与えられていない。よって、{ a }の解答はエでとなる。

{ a }の解答群のア CD-KAISU TIMESは、CD-KAISU回数分ループする命令である。詳細は参考文献をご確認ください。ループ回数は正しいが、W-KAISUに値がセットされないため、不適切な解答である。

{ b }
W-NISSUはその後の処理で
96 MOVE W-NISSU TO M-NISSU.
96行目でM-NISSUに値をセットして、
101 WRITE PRINT-R FROM MEI-R.
101行目でローン返済計画書に出力されている。

M-NISSUは16~29行目を確認すると3列目の項目でローン返済計画書の3列目は、日数を示している。

また、問題文より「日数は,最初の返済の場合はローン借入日から初回返済日までの日数」とのことであるから、解答はエとなる。

日数を計算する時に、CD-SHOKAI-YMDからCD-KARIIRE-YMDを直接にマイナスして求めることができないので、問題文にあるように「関数 INTEGER-OF-DATE は,8けたの日付をグレゴリオ暦で1601年1月1日を1とする通算日に変換した整数値を返す。」で示された関数を使用して、一旦、基準日からの通算日の整数日を求めて、そこから引き算をして求める必要がある。それらの計算は、71~75行目で行われている。

79行目のW-HENSAI-YMDに関して、2回目の返済データを求める時、つまりはW-KAISU = 2の場合について検討する。W-KAISU = 1の時、
70行目にて、W-HENSAI-YMDには初回返済日がセットされている。

80行目より、処理が106行目に移る。
107行目のコメントより、NEXT-HENSAIBI-RTNの箇所は、翌月の返済日を求めていることがわかる。

108行目より、CD-MAITSUKI-DDをW-HENSAI-DDにセットしている。
CD-MAITSUKI-DD は43行目以下のLINKAGE SECTIONの項目であり、問題文より、COND-Rの3項目は毎月返済日を表している。

109行目より、W-HENSAI-MMに+1をしている。これは翌月の返済月を求めるためである。従って、100行目でW-HENSAI-MMが12を超えた時は年が変わったことを表しているので、101行目で年に+1をして、102行目で1月になったということで、W-HENSAI-MMに1をセットしている。

{ e }
114行目のコメントより、以降の処理は月末の存在しない日付の調整を行っている。問題文より「毎月返済日は,1~31の値とする。返済日に対応する日が存在しない月は,月末の日を返済日とする。」とあり、例えば、毎月返済日に31と記入されている場合、2月が28日までしかない時は、28を求めなければならない。

117行目は、問題文より「DATECHK は,与えられた日付がカレンダーにある正しい日付かどうかを調べ,正しければ0,正しくなければ1を結果に返す。」である。よって、結果が正しくない場合には、W-RETCDに1がセットされる。

118行目で結果が正しくない場合には、返済日から正しい日付になるまでカウントダウンしていけば、末日を求められる。よって、解答は、ウとなる。
SUBTRACTは引き算を表し、ここでは、W-HENSAI-DDから1を引いた値を
W-HENSAI-DDにセットしている。

{ c }
{ b }と同様に返済の日数の計算である。問題文より、「前回返済日の翌日から当月返済日までの日数とする。」とのことであるから、解答は、ウとなる。

{ d }
85行目でW-RISOKUの値を求めているが、この値は、98行目でM-RISOKUにセットされ、101行目で出力されている。
M-RISOKUは16~29行目のデータ定義でFILLER は空白を意味しているから、M-RISOKUは5列目の項目である。出力結果であるローン返済計画書より5列目は利息を表している。

利息の計算は、問題文より「ローン元金残高×(年利÷100)×日数÷365」で求められる。

さらに、問題文より「元金返済部分を,毎月の返済ごとにローン元金から減算し,ローン元金残高を更新する。」とあり、この計算は92行目で行われている。よって、解答はエとなる。

dの解答群にあるア・イでは、CD-GANKINを用いて計算を行っているが、CD-GANKINは初期の元金であるから、解答して相応しくない。

設問2
86行目では、W-KAISU = CD-KAISUの時に端数の値をセットしている。CD-KAISUは返済回数であり、W-KAISUは現在、プログラムで計算している返済回数である。これが等しい時は、返済が最終回であることを示している。

返済が最終回の時は設問文よりCD-HASUUが0のときである。よって、最終回に端数を出力する条件は、
IF CD-HASUU = 0 AND W-KAISU = CD-KAISU
となる。

同様にして、初回の場合は、W-KAISU が1で、CD-HASUUが1の時である。上記のどちらかが成立する時に、端数の値を使用するので、解答はエとなる。

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

**************************************************
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)
**************************************************

12/05のツイートまとめ

IT01765612

.@it01765612 さんの @YouTube 動画を高く評価しました: https://t.co/1LAsNBWJK2 ソフトウェア産業の現状
12-05 10:53

動画にメッセージを追加する https://t.co/1LAsNBWJK2
12-05 10:10

ソフトウェア産業の現状



(1)特徴
・受託ソフトウェア(Sierの仕事が多い)
・受託ソフトウェアの中でも製造業・金融・保険業の割合が多い
・業界的にはほぼ成熟化してきている
・ただ、従業員の不足感が多い
・そのなかでも、インターネット付随サービスの市場成長率が高い

(2)参考文献
・一般社団法人 情報サービス産業協会 特定サービス産業実態調査
http://www.jisa.or.jp/Portals/0/resource/statistics/jittai_chart2015.pdf?150831
・平成19年特定サービス産業実態調査
http://www.meti.go.jp/statistics/tyo/tokusabizi/result-2/h19/pdf/H19Manual_40,41information_services.pdf
・総務省  平成27年版 情報通信白書のポイント 
http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h27/html/nc371440.html

【アイライトIT経営研究会の紹介】
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)

12/04のツイートまとめ

IT01765612

どうやって、複雑な問題を解くか?というテーマでyoutubeで無料動画を公開しています。よかったら、見てくださいネ。https://t.co/0guFI7VLZD
12-04 22:51

12/03のツイートまとめ

IT01765612

最近、周りで喉が痛くなって、セキとか出て、若干、微熱になるという風邪が流行っているみたい。会社、ちっちゃいから、一人が風邪を持ち込むと皆同じような症状になる。皆様も気を付けてネ。
12-03 19:38

12/02のツイートまとめ

IT01765612

ボクが20キロの減量に成功した3つの方法です。①昼食は400kcalまで。②毎日30分体操する。③間食はしない。
12-02 22:35

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

本ページは平成19年春期基本情報技術者試験午後問12、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,2に答えよ。

〔プログラムの説明〕

三目並べを行うプログラムである。 盤は 3 × 3 の升(ます)目をもち,2人のプレーヤは交互に自分の記号( o 又は x )を書く。 たて,横,斜めでの三つの升の並びを列と呼び,先に,どれかの列で三つの升すべてに, 自分の記号を書いた方を勝ちとする。 また,盤のすべての升に記号が書かれていて,どちらの勝ちでもないときは,引き分けとする。 先手は o ,後手は x を使う。 先手(o)が勝ちの例を図1に示す。

 ×
× 
×

図 1 先手(o)が勝ちの例

列挙型 Mark は記号を表し,先手は Mark.CIRCLE,後手は Mark.CROSS を使うこととする。 また,升に何も書かれていない状態を Mark.BLANKで表す。

クラス TicTacToeBoard は盤を表し,(1) ~ (4) のメソッドをもつ。

(1) Progress put(int x, int y, Mark mark)
盤の位置 (x, y) に mark で表される記号を書く。 盤の状態を列挙型 Progress で返す。 戻り値と盤の状態の対応は,次のとおりである。

Progress.CIRCLE_WON ― 先手の勝ち
Progress.CROSS_WON ― 後手の勝ち
Progress.DRAWN ― 引き分け
Progress.IN_PROGRESS ― 進行中

指定位置が盤の範囲外のときは ArrayIndexOutOfBoundsException を投げる。 既に勝敗が決まっているとき(引き分けを含む)は IllegalStateException を投げ, 次のいずれかに該当するときは IllegalArgumentException を投げる。
① 指定位置に既に記号が書かれている。
② 指定された記号が書けるプレーヤの番ではない。


(2) boolean check(int x, int y, int dx, int dy, Mark mark)
盤のある一つの列の三つの升すべてに,指定された記号が書かれているか否かを
検査する。位置 (x, y),(x + dx, y + dy),(x + 2 * dx, y + 2 * dy)
の三つの升に書かれている記号が,mark と等しければ true を返す。

(3) Mark get(int x, int y)
盤の位置(x, y)に書かれている記号を返す。

(4) void undo()
直前に書いた記号を消す。ただし,勝敗が決まった後は消すことができない。
クラス TicTester はテスト用のプログラムである。実行結果の一部を図2に示す。

Turn : CROSS : IN_PROGRESS
o    x
   x   
o x o
Turn : CIRCLE : IN_PROGRESS
o    x
   x o
o x o
undo
o    x
   x   
o x o
Turn : CIRCLE : CIRCLE_WON
o    x
o    x
o x o
Game is over.

  図2 実行結果の一部
〔参考:列挙(enum)について〕

プログラム中の Mark と Progress はそれぞれ列挙型であり,列挙型 Mark は
三つの列挙定数 CIRCLE,CROSS,BLANK を,列挙型 Progress は四つの 列挙定数 CIRCLE_WON,CROSS_WON,DRAWN,IN_PROGRESS をもつ。 列挙型はクラスの一種であり,列挙定数は列挙型のインスタンスである。

〔プログラム1〕

public enum Mark {
// 記号の種類を表す列挙。各列挙定数では定数 symbol を定義する。
// 定数 symbol の値は各コンストラクタで与えられた値('o'など)である。
CIRCLE('o'), CROSS('x'), BLANK(' ');
public final char symbol;
Mark(char symbol) {
this.symbol = symbol;
}
}

〔プログラム2〕

public class TicTacToeBoard {
// ゲームの進行状況を表す列挙
public enum Progress {CIRCLE_WON, CROSS_WON, DRAWN, IN_PROGRESS}
private Mark[][] board = new Mark[3][3]; // 盤
private Mark turn = Mark.CIRCLE;
private Progress progress = Progress.IN_PROGRESS;
private int count = 0; // 盤に書かれた記号の個数
private int lastx, lasty; // 最後に記号が書かれた位置を保持する。
public TicTacToeBoard() { // 盤を初期化する。
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
board[i][j] ={ a } ;
}
public synchronized Progress put(int x, int y, Mark mark) {
if ({ b })
throw new IllegalStateException();
if (board[x][y] != Mark.BLANK || mark != turn)
throw new IllegalArgumentException();
board[x][y] = mark;
lastx = x;
lasty = y;
count++;
// 勝ちか否かを検査する。
boolean game =
// たてと横の列を検査する。
check(x, 0, 0, 1, mark) || check(0, y, 1, 0, mark) ||
// 斜めの列を検査する。
check(0, 0, 1, 1, mark) || check(0, 2,{ c } , mark);
if (game)
if (turn == Mark.CIRCLE)
progress = Progress.CIRCLE_WON;
else progress = Progress.CROSS_WON;
else if (count == 9) progress = Progress.DRAWN;
// 次に書かれる記号の種類を決定する。
if (turn == Mark.CIRCLE) turn = Mark.CROSS;
else turn = Mark.CIRCLE;
return progress;
}
private boolean check(int x, int y, int dx, int dy, Mark mark) {
return (board[x][y] == mark &&
board[x + dx][y + dy] == mark &&
board[x + 2 * dx][y + 2 * dy] == mark);
}
public Mark get(int x, int y) {
return board[x][y];
}
public synchronized void undo() {
if (progress == Progress.IN_PROGRESS &&
board[lastx][lasty] != Mark.BLANK) {
turn = board[lastx][lasty];
board[lastx][lasty] = Mark.BLANK;
count--;
} else {
throw new IllegalStateException();
}
}
}

〔プログラム3 〕

public class TicTester {
public static void main(String[] args) {
// 記号を書く位置(x, y)を定義した配列。null のときは undo を呼ぶ。
int[][] p = {{0, 0}, {1, 1}, {2, 2}, {2, 0}, {0, 2}, {1, 2},
{2, 1}, null, {0, 1}, {1, 0}};
TicTacToeBoard board = new TicTacToeBoard();
Mark marks[] = {Mark.CIRCLE, Mark.CROSS};
for (int i = 0; i < p.length; i++) {
try {
if (p[i] == null) {
System.out.println("undo");
board.undo();
} else {
Mark turn = marks[{ d }];
System.out.println("Turn : " + turn + " : " +
board.put(p[i][0], p[i][1], turn));
}
for (int y = 0; y < 3; y++) {
for (int x = 0; x < 3; x++)
System.out.print(board.get(x, y).symbol + " ");
System.out.println();
}
} catch (IllegalStateException ise) {
System.out.println("Game is over.");
}
}
}
}


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

a に関する解答群

ア Mark.BLANK     イ Mark.CIRCLE
ウ Mark.CROSS     エ null


b に関する解答群

ア count < 0
イ count >= 9
ウ progress != Progress.IN_PROGRESS
エ progress == Progress.IN_PROGRESS


c に関する解答群

ア -1, -1      イ -1, 1      ウ 1, -1      エ 1, 1


d に関する解答群

ア i      イ i % 2      ウ i & 2      エ i / 2

設問2 クラス TicTacToeBoard のメソッド undo に関する記述として正しい答えを, 解答群の中から二つ選べ。

解答群

ア 2手目以降で続けて2回呼ぶと,二つ消せる。
イ 2手目以降で続けて2回呼ぶと,呼ばなかった状態に戻る。
ウ 2手目以降で続けて2回呼んでも,消せるのは一つだけである。
エ ゲーム中で先手後手とも,それぞれ1回しか消せない。
オ 消すことができなければ例外を投げる。

***********************************************************************************************************
無料から学べる講座
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
答 ウ、オ

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

解説
〔プログラム1〕はpublic enum Markとあり、enumは列挙型と呼ばれるものである。
CIRCLE('o')と記載することで、プログラム内でMark.CIRCLEと記載した際にその値は'o'となる。

問題文より、クラス TicTacToeBoard は盤を表しており、また、クラス TicTacToeBoardのコンストラクタはプログラム中のコメントより盤を初期化している。盤の初期化とは升に何も書かれていない状態にすることである。問題文より、その場合をMark.BLANKで表すとある。よって、解答aはアとなる。

Progress putメソッドにはsynchronizedと記載されている。synchronizedとは処理が同時並行で稼働しないようにする排他制御である。Progress putの処理がまだ終了しない状態で次のProgress putが行われるとシステムに不整合が生じるので、そのようなことが起こらないようにしている。

{ b }
問題文の説明よりIllegalStateExceptionが投げられるのは、既に勝敗が決まっているとき(引き分けを含む)である。これは以下の場合を示す。
Progress.CIRCLE_WON ― 先手の勝ち
Progress.CROSS_WON ― 後手の勝ち
Progress.DRAWN ― 引き分け
よって、bの解答はウとなる。

同様にIllegalArgumentExceptionは次のいずれかに該当するときに投げられる。
「①指定位置に既に記号が書かれている。」場合は、プログラムより
board[x][y] != Mark.BLANKの判定する部分が該当している。

また、「②指定された記号が書けるプレーヤの番ではない。」の部分は
プログラム中のmark != turnの部分が該当している。
実際、プログラム2は初期設定として、
private Mark turn = Mark.CIRCLE;
とあり、turnに初期値を設定しているが、問題文より「先手は Mark.CIRCLE,後手は Mark.CROSS を使うこととする。」とあり、最初の値がMark.CIRCLEでないとエラーとなることがわかる。

メソッドの最終処理部分で
// 次に書かれる記号の種類を決定する。
if (turn == Mark.CIRCLE) turn = Mark.CROSS;
else turn = Mark.CIRCLE;
とあり、turmがMark.CIRCLEであれば、turnをMark.CROSSにして、
turmがMark.CROSSであれば、turnをMark.CIRCLEにしている。
これにより、先手→後手→先手→後手・・・の順が正しく判断されることになる。

// たてと横の列を検査する。
check(x, 0, 0, 1, mark)
の部分で、checkメソッド内を確認すると
(x,0), (x,1), (x,2)のmarkが等しいかをチェックしている。つまり、y軸方向でmarkがそろっているかを確認していることになる。

同様にcheck(0, y, 1, 0, mark)の部分は、
(0,y), (1,y), (2,y)のmarkが等しいかをチェックしている。つまり、x軸方向でmarkがそろっているかを確認していることになる。

// 斜めの列を検査する。
check(0, 0, 1, 1, mark)
部分に関して、斜めでmarkが揃うのは(0,0), (1,1), (2,2)かまたは (0,2), (1,1), (2,0)の場合のいずれかになる。

check(0, 0, 1, 1, mark)は(0,0), (1,1), (2,2)の場合をチェックしているから、
check(0, 2,{ c } , mark)は(0,2), (1,1), (2,0)の場合をチェックしていることになる。cの部分はプログラムよりx軸、y軸の増分を表している。よって、xは1増分し、yは-1増分すればよい。以上より、cはウとなる。

列がそろった際には上記の箇所でgame変数にtrueがセットされる。trueになった場合、現在、入力したプレイヤーが勝ちということである。現在のプレイヤーはmarkにセットされているが、markとturnは等しい値となっている。

よって、turn == Mark.CIRCLEのとき、つまり今のプレイヤーがMark.CIRCLEのとき、Mark.CIRCLEの勝ちであるから、
progress = Progress.CIRCLE_WON
となる。

gameがfalseであってもcountが9であるとき、つまりは升目がすべて埋まっているときは引き分けとなり
progress = Progress.DRAWN
となる。

2次元配列は以下のように定義される。
型名 配列変数名[][] = {{値1_1, 値1_2, ..}, {値2_1, 値2_2, ..}};

よって、以下のように定義されることになる。
p [0][0]=0, p [0][1]=0
p [1][0]=1, p [1][1]=1
p [2][0]=2, p [2][1]=2
p [3][0]=2, p [3][1]=0
p [4][0]=0, p [4][1]=2
p [5][0]=1, p [5][1]=2
p [6][0]=2, p [6][1]=1
p [7][0]=null
p [8][0]=0, p [8][1]=1
p [9][0]=1, p [9][1]=0

この時のp.lengthはp [0]~p [9]の要素数となり、10となる。
p [0][0]~p [0][1]の要素数を取得する場合は、p[0].lengthと記載し、その時の要素数は2となる。

{ d }
%は余りを表すので、
i=0の時、i%2=0
i=1の時、i%2=1
i=2の時、i%2=0
i=3の時、i%2=1
となる。

Mark marks[] = {Mark.CIRCLE, Mark.CROSS}より
marks[0]= Mark.CIRCLE, marks[1]= Mark.CROSSであるから、
Mark.CIRCLE→Mark.CROSS→Mark.CIRCLE→Mark.CROSS→・・・
となり、正しくプレイヤーが交互に入れ替わっているよって解答はイとなる。

&はビット毎のand演算を行う。ビット毎の演算であるから本問では10進数を2進数にしてand演算を行いさらにその結果を10進数に戻すと解が得られることになる。andは両方ともに1の時のみ1となる。また10進数の2は、2進数では10であるから
この場合は、
i=0の時、0 & 10 = 0
i=1の時、1 & 10 = 0
i=2の時、10 & 10=10、2進数10を10進数に戻すと 2
i=3の時、11 & 10=10、2進数10を10進数に戻すと 2(それぞれの桁ごとにビット演算を行う。)
となり、0,0,2,2,・・・となる。
marks[0]、marks[1]しか定義されていないから、marks[2]を指定した場合はエラーとなる。

/は割り算の商であり、i/2は分母も分子も整数であることから商も整数で出力される。
よって
i=0の時、0/2=0
i=1の時、0/2=0
i=2の時、2/2=1
i=3の時、3/2=1
となる。

設問2
選択肢を1つずつ検証していく。

ア 2手目以降で続けて2回呼ぶと,二つ消せる。
undo処理内で
board[lastx][lasty] = Mark.BLANK
で削除が行われている。ここのlastx、lastyはProgress put処理内でセットされているがあくまでも直前の手のみを保存している。よって2回呼び出した場合、1回目の処理は正常に消されるが2回目の処理時、
undo処理のif文の後半の条件部分で
board[lastx][lasty] != Mark.BLANK
はlastx、lastyは1回目の削除処理で呼び出された部分を再度みにいくことになるがすでにその箇所はMark.BLANKがセットされているので、この判別はfalseと判断される。
よって、例外IllegalStateExceptionが投げられることになる。

以上より、選択肢イも正しくなく、ウは正しいことがわかる。

エ ゲーム中で先手後手とも,それぞれ1回しか消せない。
そのような判別条件はないので正しくない。

オ 消すことができなければ例外を投げる。
上記の説明通り、本説明はただしい。


参考文献
enum
http://bleis-tift.hatenablog.com/entry/20090916/1253084400
synchronized
http://www.tohoho-web.com/java/thread.htm


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

***********************************************************************************************************
無料から学べる講座
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)複雑な問題を解く
・問題を要素に分解する
・1つ1つの要素に問題がないかを確認する。

(3)例)通信ができないという問題

(4)通信の順序を分解する

【アイライトIT経営研究会の紹介】
無料から学べる講座
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でシステム開発会社を探されている法人様はこちら)

11/30のツイートまとめ

IT01765612

.@it01765612 さんの @YouTube 動画を高く評価しました: https://t.co/l3e4umwvRl 複雑な問題を解く
11-30 11:49

動画にメッセージを追加する https://t.co/l3e4umeUsL
11-30 09:36

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
最新コメント
最新トラックバック
フリーエリア