• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:基本情報試験の午後の言語について)

基本情報試験の午後の言語について

めとろいと(@naktak)の回答

回答No.6

#2です。 > Bucket型のnextってなに?とか(nextに何か入れるのでしょうが、入れた後Bucket型で何をどうしたい > のかがわからないなど) これ、調べてみたら23年度春期のやつですね。これは文字でだらだら書きやがって(笑)図解もないし、 かなりやっかいなやつでしょう。 ちょっとだけ試験問題からソースを追ってみました。 これは、問題文にある通り、1つのBucketには最大10文字までしか格納することができません。 そこで、10 / EXT_SIZE(10)などで余り0になった時(つまり11文字目を格納しようとした時)、 最新のBucketのnextプロパティに、次に続く文字が格納されるBucketを格納しています。 Bucket bucket = getBucket(length - 1); if (offset == 0 & length != 0) {  bucket.next = new Bucket();  bucket = bucket.next; } つまり、例えば29文字格納したいならば、Bucketクラスは3つ使われます。 length:0(1文字目)~9(10文字目)はBucketA length:10(11文字目)~9(19文字目)はBucketB length:20(21文字目)~9(29文字目)はBucketC nextは、BucketAの次はBucketB(BucketA.nextの値はBucketB)で、 BucketBの次はBucketC(BucketB.nextの値はBucketC)だよと教えてあげているにすぎません。 ここで、Bucket.getBucket(length - 1)が使われています。 length - 1になるのは、10文字目まで格納したら、lengthは11になってしまっているので、 10文字目まで格納された状態で調べたいからです。 > private Bucket getBucket(int index) { >  int n = index / EXT_SIZE; >  Bucket b = bucketList; >  for (int i= 0; i < n; i++) { >   b = b.next; >  } >  return b; > } これが何をしているかというと、前述した流れがある以上、最新の(処理中の値を格納すべき)Bucketを 知る必要があります。 ですから、bucketList(つまり、最も最初に利用されているBucket)から、nextを呼び続け、今操作 すべきBucketを見つけ出しています。(getBucket()という命名則が悪いことは試験だし、置いておきます) その結果、getBucket()から戻ってきたあとのif()にある条件の、1文字目ではなくて、 11文字目、21文字目などの場合に新しいBucketを作り、前のBucketに新しいBucketをひも付け、 操作するBucketは、新しいBucketに切り替えています。 今回のような箇所が分からない場合、main()から目的の部分だけトレースするといいです。 今回の場合はそれを目的とした穴埋めなのか、main()の後はすぐにListAppendableCharSequence()を 利用しているので、必要最小限のトレースが出来るので楽です。 途中、1つ穴埋め(length - 1)部分に引っ掛かりますが、その後続処理ではEXT_SIZEで割り算を 行っていますので、そこまで想像に難くありません。 > >そのメソッドが何を処理し、何を結果とするのかを理解しながらトレース > 本当にこちらの理解が足りていないのだなと思います。 JDKで用意されているクラスやメソッドの使いどこ自体が分からないならば、 それは調べるしかありません。暗記と一緒で、覚えるしかないのです。 なんなら、Javaをインストールして試すっていう手もありますが、模擬を していれば、調べて覚えるものもいくつかあるでしょう。 BufferedReader、BufferedWriter、FileReader、FileWriter、ArrayList、HashMapとか あたりを覚えておけば何とかなるような気もしますが、Iteratableインターフェースの 例もあることだし何とも・・・。 > で、何がしたかったの?for文でリスト分xに値が入りました。 > そのxがなんなのか、なんのためにxに値を入れたのかが、 > 自分ではわからない・・・という感じで躓きます。 これは問題文に記されているか、ロジックの流れがある為、そこだけ見ても絶対わかりません。 トレースしかないのです。 しかし、ロジック1つ1つは分からなくても、問題文とメソッド名だけで、ひとまず何をしようと しているのかは分かったりするものです。 > 基本情報の講習などを受けて講師の方に直接教えてもらった方がよいのでしょうか・・・。 私は中学時代から独学で始め、専門学校へ通って取得した為、どれが一番いいかと言われたら、 やはりみっちりやってくれる専門学校と思います。 今の専門学校ではきっと、Javaのセットアップを行い、授業で覚えたあとに模擬試験をこなすでしょうから。 が、そんなことはどうでもいいです。 私が学校で習ったことをお伝えしました。 『問題に正解しようが間違おうが、全て理解するまでその問題をトレースをする。 トレースしているだけではダメ。流れを把握しながらトレースする。それの反復。』 これに限ります。 その時の変数をメモってるだけでは意味ないわけですし、そいつが何を意味しているのかを 状況が変化する度に考えながらトレースします。 正解してても、ちょっと認識が間違っている部分もあったりするので、とにかく 完全に理解するまで復習をしまくることです。 同じ問題を日を空けてやるのも悪くありません。日を空けても暗記してしまうくらい回数をこなしましょう。 > なので、過去問の解説が詳しい参考書が欲しいと思ったのですが、午後は言語が抜かれた参考書が多 > く・・・。 午後の試験は、あまり解説は役に立ちません。というか、役に立つような解説を見たことがありません。 たまに書店でぺらぺら最近の問題集を見たりすることがありますが、 一部解説をすっ飛ばしたりしてて、ここの部分説明せんでいいんかよっていうのがあります。 あなたのレベルまで達していると、参考書は、模擬問題を紙で欲しいから、くらいにしか考えない方がいいですよ。 IPAからダウンロードしたのは印刷する手間がかかりますからね。

noname#180969
質問者

お礼

ご丁寧に解説ありがとうございます。 大変申し訳ないのですが、やっぱり導き方が思いつきません。 ご説明していただければ、なんとなく「そういう考え方でトレースするんだな」と思いますが、 いざ自分で真っ白なところから追っていくと、何も進みません。 いってしまえば、一番最初の static void measureTime(int n, 【空欄e】 a) {~ というところも、なぜ ArrayAppendableCharSequenceではなくAppendableCharSequenceが入るのかも理解できていません。 トレースするにしても、もう少し簡単な問題から徐々にこのような問題がトレースできるような問題集のようなものが欲しいです。 今まで過去問を丁寧にトレースすればきっと解けると思って、何度か試していましたが、 結局行き詰って終わります。 行き詰った時の解説が欲しいのです。 こればっかりは「トレースすれば」とかいう話しではないと思っています。 もう落ちたくないのです。 同じ方法で一人で頑張っても何も成長が見られない気がします。 二度も同じ事を繰り返して、三度目はきっと、とはもう思えません。 しかも、やっかいな問題が出たときに解く自信もありません。 アルゴリズムは、色々な参考書を使って勉強し直したら、力の伸びが確認できましたが、 javaはあまりいい参考書がないそうで、一人でトレースしか方法がないのですね。 とても参考になりました。 何度もご回答ありがとうございました。

関連するQ&A

  • 基本情報技術者試験について

    基本情報技術者試験について こんにちは。 五日後の基本情報技術者試験を受ける専門学生です。 今回で三回目になります。 一応、専門学校ではITの基礎を一通り習い午前免除制度の試験は去年の12月に取りましたので前回と今回は午後試験のみとなりました。前回は就職活動と重なり、就職活動メインでしたので基本情報技術者試験の方の勉強はおろそかとなり42点で不合格となりました。 ちなみに一回目は午前免除試験に落ちてしまったため午前からやり、午前が56.25点/100点で午後が37点でした... 専門は2年コースで午前免除も今年で切れますので今回が最後の試験になります。 ちなみに就職先はITの会社に決まりましたのでもし落ちたら働きながら勉強しなきゃと言うことでとても大変だなぁと思い、今回で必ず取りたいと思っています。 そして夏休み明けの9月から今に至るまで基本情報技術者試験の午後対策をやっていますが、どうしてもアルゴリズムが足を引っ張っています... 今まで学校では過去問をやってきているのですが... 平成23年度春期・・・51点 平成23年度秋期・・・55点 平成24年度春期・・・73点 平成24年度秋期・・・45点 平成25年度春期・・・55点 平成25年度秋期・・・57点 平成26年度春期・・・51点 平成26年度秋期・・・56点 平成27年度秋期・・・62点 iTEC業者模試・・・・45点 TAC業者模試・・・・48点 このようになかなか合格点に届きません。なかなか合格できるか不安です。 先生はアルゴリズムより、問1~7の選択問題と問13の表計算に力を入れて学習してそこのところを点数伸ばして行くように。と言っていましたが問題によってはなかなか点数が伸びない時があります。 最近はそのことに従ってアルゴリズム以外に力を入れて学習してきました。 確かにアルゴリズムは運がよく3問くらい当たっている時は合格点行ってる時もありました。ですが運が悪いと全滅の時もあり、合格点に届かない時もあります... 残り5日間なのですがアルゴリズムは捨てて他の問題で点数を稼ぐべきでしょうか? ちなみに選択問題は問2・5・6・7・13を選んでいます。(問1セキュリティと問8アルゴリズムは必須) ついでですが、基本情報技術者試験に合格した皆さんはどんな学習方法をしていたのか知りたいです。

  • 基本情報処理試験の午後の勉強方法

    こんばんは。 今年の秋期の基本情報処理試験を受験し、午前は通りましたが、午後はおそらく落ちました。 受けた感想としては、午前はどのような勉強をすれば良いか理解したのですが、 午後はどのような勉強をすれば良いのか今のところ分かっていません。 このままでは、なんとなく勉強したところで来年の試験も受かる気がしません。 そこで質問なのですが、ずばり午後試験に受かるための勉強方法をご教授下さい。 私自身としては、午後の試験にかかわらずプログラミングを習得するためには、そのプログラムのアルゴリズムを把握することが大切だとありましたので、アルゴリズムについての書籍を購入して勉強しようと考えています。 また、今の身近の目標としては試験に合格することではあるのですが、最終的にはプログラミングを習得したいと考えておりますので、それを含めて何かアドバイスを頂けると幸いです。 以上、よろしくお願い致します。

  • 基本情報処理試験について

    初めまして、sheerと申します。 来年、4月に基本情報を受験しようと思っています。 というのは、来年よりIT企業への就職が決まっており、少しでも 知識をつけようと思って受験を決めました。 文系なのですが、SEを目指しており、SEで採用されました。 でも、やはり不安で、少しでも知識があれば研修などでも理解がしやすい と思っています。 そこで問題なのが、午後の言語の選択です。 私はどの言語も一度もやった事がなく、どれを選択していいのかさっぱりわかりません。 色々読んでいると、JAVAは今後も需要が増えるとあり、Cは色んな言語のベースとありました。また、CASL2も良いとありますし・・。 ただ、企業での研修はJAVAで行うと聞きました。 その為、JAVAで受けるのが良いのか・・と思うのですが、何もやった事のない私がいきなり勉強して理解できるのかが不安です。 4月に一発で合格!とまではいかなくても、合格に近いラインまでもっていきたいです。 この試験に合格しても実務で生かせるほどの知識ではないと聞くので、合格した後も、受験した言語をしっかり学んでいきたいと思っています。 こんな私にお勧めの言語選択と、よろしければその言語を学ぶ上で良い参考書などがあれば教えて下さい。 今持っているのは、福嶋先生の集中ゼミ午前、午後です。午前はこの本1冊と過去問題で大丈夫でしょうか。午後はちょっとこの一冊では不足と聞いたのですが・・。

  • この秋に基本情報情報処理技術者を受験した者です。

    この秋に基本情報情報処理技術者を受験した者です。 今年の夏ごろから本気で取得に向けて、午前及び午後対策を行いました。 教科書は 基本情報技術者2010年度版 日高哲郎 著 平成20~22年の過去問(午前・午後)を2~3回繰り返しました。 あと、DBとアルゴリズムとプログラム言語が弱点なので、 書き込式SQLのドリル→DB対策 過去問などの擬似言語をJAVAを使ってのプログラミング→アルゴリズム、言語対策 試験1ヶ月前は抜き打ちで平成19年秋前後の過去問を3回行い、 その時は午前6割、午後は8割を超えていました。 2~3日前には、午後直前対策として ポケットスタディ午後・要点整理「即効!7つの知識」を通しました。 しかし、試験当日は午前・午後問ともに試験傾向が変わっていて 対応できずに目標合格点数に届きませんでした。 今回は今までの過去問を見比べると本当に難しかったです。 来年の春以降も諦めずに受験します。 しかし、合格するにはどう勉強すればいいのか、効率的なやり方がわからずに困っています。 折角受験したので、不合格のまま終わりたくはありません。 「教えて!goo」の皆様、大変お手数とは思いますが、 試験対策のアドバイスを頂けませんでしょうか? よろしくお願いします。

  • 基本技術者情報試験試験と言語

    よくある質問ですが、失礼します。 基本情報技術者試験のプログラミング言語の選択についてです。 私は、javaを勉強していますが、CASL2が良いとき聞きました。 しかし、CASL2は、初心者です。 残り3か月で、合格点をとることができるでしょうか。 同じような境遇で、合格された方、何かアドバイスいただけませんか。 宜しくお願いします。

  • 基本情報試験

    基本情報の試験を受けるのですが午前中の試験でいつも落ちてしまい、 いつも午後はあまり勉強していなかったのですが今回は午前を突破できそうなので午後をしっかりと勉強したいと思うのですが、選択問題でJAVAや表計算とかありますがITパスポートくらいの知識しかない者が一番はじめやすいのは何になるでしょうか? また午後試験の良い参考書があれば教えてください。

  • 基本情報技術者の午後について

    これからC言語をスクールで学ぼうと思っているのですが、基本情報技術者の午後のC言語は、サーティファイのC言語プログラミング能力認定試験の何級ぐらいに相当しますか? 初心者ですいません。よろしくお願いします。

  • 基本情報技術者試験について・・・

    今年の10月に基本情報技術者試験を受けたいと 思っています。午前は大体どのような問題、試験 対策がわかります。 午後の試験はどうすればいいでしょうか?? プログラムとアルゴリズムです。 プログラムは慣れれば簡単といわれた キャッスル?? を学びたいです。 午後の勉強方法とお薦め(キャッスル??)の 本がありましたら是非教えてください。 お願いします。

  • 基本情報技術者試験の午後対策をしたいです

    来年4月の基本情報技術者試験を受けることになりました。 午前の分は自分でテキストを1冊購入し、過去問を繰り返すことで なんとか合格ラインに立てそうですが、 午後の言語対策に関して、何をすればいいかさえ全くわかりません。 言語の中で一番応用が利いて、初心者にも比較的学習しやすいのはjavaだと聞いたことがあるので、このカテゴリに書き込ませていただきました。 言語に関して全く知識がなく、どうしたらよいかわからなくなっています。漠然とした質問で申し訳ありませんが、午後対策の仕方を教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • 基本情報が受からないのにソフトウェア開発技術者を受ける

    10/21の基本情報技術者試験を受けます。 模試などの結果、非常に合格は難しいです。 ですが、4月のソフトウェア開発で合格したいのです。 独学は難しいと思うので学校に通おうと思っています。 一般的に見てこれは無謀でしょうか? 今の基本情報技術者の実力として、 午前50問、午後はアルゴリズムを始めとしてプログラム言語もほとんど分かりません。。