解決済み
>変数の特定(特に1文字アルファベット)が曖昧 分かりにくくするために分かりにくい変数名にしているので対処法は無いです。 例えば4の1番だと変数にi,k,gを使ってますが二重ループだとi,gなんかではなく普通はカウント用の変数はi,jをペアとして使うからです。kもついでに宣言されてますがVBAとかの仕様でiを使いまわさない方向でやってるので変数が一つ余分です。 nやmは整数を表す典型的な一文字変数なので暗記します。 4の2番でもその傾向があり、p,r,sでカウント用の変数にしてます。これを読解するのは無駄なので工業系のプログラミングでは必ずi,j,kにしてるからです。問題ごとに変数の意味を変えるのは無駄ですが、全商系プログラミングでは分かりにくくするために問題ごとにカウント用変数の記号をコロコロ変えてるからです。 ローマ字変数の謎の省略ですが順位のJunはjuniじゃだめだったのかと謎です。わざわざ一文字省かれているのが気持ち悪いからです。 5番はのっけからTban、Hban、Htenと分かりにくい変数が目白押しです。これは「プログラミングには日本語変数は使えない」という旧態依然とした考えを引きずったものなので、テスト用に変数名を分かりにくくしているからです。分かってしまってはだめなので「変数名は日本語でもO.K.」とはなりません。他もおおよそどうようです。 Tmpはテンポラリのよくある略語なので暗記します。 フローチャートに出てくるカウント用の変数が揃ってないのは全商の嫌がらせです。 6番は分かりにくくするために捻った努力のあとがあります。Hi、Sc、Suとなります。HiはHiduke、ScはShohinCode、SuはSuryoなどと書けばいいですがそれをしないし英語とローマ字が混在してさらに分かりにくくしているからです。 後はなんでも配列でやってしまうという全商系プログラミングの凄まじい特色により、C言語などでは存在する「構造体」というものが微塵も出てこない前時代的なコードになっているので、Scod、Smei、Stanの配列が出てくるからです。 フローチャートでの変数名は全商系プログラミングの集大成です。「(Ka+Jo)÷2→Tyu」など、特に何の説明もない変数が出てきて複雑なことをやるからです。これは察する能力を使うと「下限、上限、中間」の略だと分かるので、その能力が使えればできます。 カウント用の変数が全く揃ってないのは前述のとおりです。 SkeiとUkeiは数量合計と売り上げ合計の略です。フローチャートでやってることの意味から名前を逆算します。それが出来なければ全商系のテストには受かりません。 Maxsoeですが、「Maxの添え字」という意味であり、soeが添えを意味します。これを英語で「max_index」などと平易にしてしまうとテストにならないのでわざわざ面倒な記法に捻って受験者に暗号解読させているからです。なので全商系はプログラミングのテストは30%ほど、暗号解読作業が70%くらいです。 7番のサウナは、Tukihi、Kubun、Tcode、Ccodeなどというものから始まります。TcodeはTenpoCode、CcodeはCouponCodeの略です。次に出てくるのがTmei、Hryo、Msuです。TenpoMei、HeijituRyoukin、そして引っ掛けとしてMonthSuuです。Tukihi(月日)はローマ字ですがこれはMonthと英語なので引っ掛けに注意します。こういうトラップをあっさり見抜けるような陰湿な人間を育成するためです。 Nsuは入館者数なのでNは入館者である、MritsuのMは目標である……というのはジャブていどの軽い解読です。 配列Tcodはtenpo_codeとしてしまうと前述の変数名とかぶってしまうのでわざわざeを抜いています。このあたりの分かりにくさにも余念がないからです。 で、例によってフローチャートにいきなり出てくる変数の読解ですが、このあたりに全商系プログラミングの厭らしさが凝縮されてるので、暗号解読に勤しみます。これは授業では全くやらないので気合でどうにかします。 Tukikei 月計 Sw switch Biko 備考 Hihoz 日付保存 カウント用の変数名がi,j,kと揃ってないなんてのは小さいことに見えるくらいの出来事です。なので、「いつもカウント用の変数をi,j,kなどと親切に揃えてしまうとテストが分かりやすくなってしまう、だからコロコロ変えねばならない」という製作者側の陰湿なトラップ製造のたまものです。この変数が単にカウントしてるだけなのかどうかを見極めにくくするためだけに、i,j,kという典型的な変数では揃えないからです。
なるほど:1
ありがとう:1
ぼくも流れ図は感覚で解いてたな〜 感覚で解いてるけど何か正答してるんですよね。 明確な根拠って難しいですなぁ。 分かりそうな部分から解いていきます。 大問4、問1の(1)(2)(3)であれば、 まずは(3)ですね。 Moji(g) = Moji(min) Moji(min) = Moji(0) ってのが非常に怪しい。 Moji(g)とMoji(min)を入れ替えている処理です。 Moji(0)はデータを一時的に保管するだけの場所。なぜなら問題の左側、Moji(0)には何もデータが入ってないもんね。 じゃあ入れ替えるために必要な処理は何でしょうか? まず、データをMoji(0)に退避させるところから始めます。 何を退避させるかというとMoji(g)です。 だってMoji(min)にMoji(0)を入れてるもんね。 Moji(g)→Moji(0)→Moji(min)の流れになるはずです。 だから(3)はエ。 次はうーん。取り敢えず選択肢を見てみましょう。 ウとカが目立ちますね。 両方ともminに代入してます。 で、残るは(1)と(2)です。(2)はIfだから代入なんてしません。 だから必然的に代入は(1)で行われるはず。 さらに言うと(2)のIfの中ではminに代入してますよね。 ということは(2)でminと何かしらの大小を比較してるはずです。 つまり、(2)の処理を行う前にminに代入しておかなければ(2)のIfで判定なんてしようがないんです。 だから(1)でminに代入するんですね。 じゃあminに何を代入するのでしょうか? そもそもminってことは一番小さいはずです。 外側のforで「n-1」に向かってループするのだから、minはgにしておくべきです。 そうすると配列の左から順に比較できますからね。 よって(1)はカ 残るは(2)比較です。Mojiの大小を比較しますよね。 さっきも述べたけど(2)のIfの中ではminに代入してますよね。 ということは(2)でminと何かしらの大小を比較してるはずです。 イとカのどちらかになります。 で、minを書き換えるということは、現在のminより小さい奴が現れた時です。 という訳で(2)はイ という思考過程で解きました。 見ての通りプログラムの思考を言語化するとこんなに長文になるんですよね。 やってると思うけど、局所的なトレースをすると良いです。 例えば(3)なら (3) Moji(g) = Moji(min) Moji(min) = Moji(0) で選択肢を当てはめながら、ちゃんと入れ替わってるかって検証ですね。 もう70点は超えてるんですか?? 感覚的に解ける人なら合格できると思います。 逆に理屈っぽく考える人ほど不合格な印象かも。 まぁあくまで主観です。 頑張ってくださいね〜
なるほど:1
ありがとう:1
< 質問に関する求人 >
情報処理検定(東京都)この条件の求人をもっと見る
求人の検索結果を見る
< いつもと違うしごとも見てみませんか? >
覆面調査に関する求人(東京都)この条件の求人をもっと見る