【基本情報】令和6年度(科目B:問1 条件分岐)自分の好きな言語で再現してみよう!
基本情報技術者試験
今回は表題の公開問題を使って、ちょっと遊んでみたいと思います。
基本情報を受験しようと思っている方で、まだプログラミングに慣れていないという方には良い勉強・練習になると思いますので、参考にしてみてください^^
今回のサンプルについて
ちょうど良い短さ
公開されているプログラミングの出題としては最も短いと思われます。
いろいろ試すには、ちょうど良いです!
※出典:基本情報技術者試験(FE)公開問題(令和6年度 科目B)
難易度
個人的な感覚ではありますが、試験問題としてはとても簡単だと思っています。
理由ですが、コードは8行なのに最初の3行で答えられるからです。
解いてみよう
最初の条件でxを返す・・・つまり、xが最大値であることが証明できる条件です。
好きな言語で書いてみよう
自分で書くと学びになる
正解を確認できたので、ここからは『試験用の疑似言語』を『実際に動かしたい言語』で再現してみましょう。
ご自身が使っている言語、もしくは勉強中の言語で書くことで、試験対策とコーディングの相乗効果が期待できます!
ブラウザだけでも動かせる
「試したいけど、PCに何かインストールしないとできないのかな?」
そう思っていませんか?
paiza.ioを使うと、webブラウザだけで様々な言語の動作を確認できます!
(ログインをしなくても使えます)
こんな感じ
試しにいくつか紹介しますので、コピペしてpaiza.ioで確認してみてください!
Python3の場合
def maximum(x: int, y: int, z: int) -> int:
if x > y and x > z:
return x
elif y > z:
return y
else:
return z
print(maximum(1, -1, 0)) # 出力: 1 xが一番大きい
print(maximum(0, 2, -2)) # 出力: 2 yが一番大きい
print(maximum(-3, 0, 3)) # 出力: 3 zが一番大きい
結果がそれぞれ出力されます。
Rubyの場合
def maximum(x, y, z)
if x > y && x > z
return x
elsif y > z
return y
else
return z
end
end
puts maximum(1, -1, 0) # 出力: 1 xが一番大きい
puts maximum(0, 2, -2) # 出力: 2 yが一番大きい
puts maximum(-3, 0, 3) # 出力: 3 zが一番大きい
プログラム言語でなくても可能
上記ではPythonやRubyで書く場合を紹介しました。
他にJAVAやC#、PHPなどでも、もちろん可能です。
しかし!
私はひねくれ者ですので(笑)
プログラム言語以外で書いてみます。
PostgreSQL
データベース言語『SQL』です。
プログラム寄りであれば、PLpgSQL(ストアド的なもの)が適しているのですが、あえて普通のDMLで書いてみます。
また、ご紹介するコードはpaiza.ioでは動かせないですが、DB Fiddleで動かせます!
こちらもwebブラウザのみで動かせますので、よろしければお試しください^^
-- 関数の代わりにwith句で指定
WITH maximum AS (
SELECT 1 AS x ,-1 AS y ,0 AS z
UNION ALL
SELECT 0 AS x ,2 AS y ,-2 AS z
UNION ALL
SELECT -3 AS x ,0 AS y ,3 AS z
)
-- with句から抽出し、CASE句でif文を再現
SELECT
CASE WHEN x > y AND x > z THEN x
WHEN y > z THEN y
ELSE z
END AS "return" -- returnはキーワードのためダブルクォーテーションで囲む
FROM maximum
;
プログラム言語でなくても、同じ結果を再現できました!
最後に
いかがでしたでしょうか?
試験問題ひとつで、様々な言語での学習が可能です。
また、今回は正解のコードのみご紹介しましたが
「他の選択肢だと、どういう動きになるのか?」
という観点で誤ったコードも試してみると、更に良い勉強になります!
試験対策については、私が過去に作成したこの動画より引用しました。
実はもうひとつ、基本情報技術者試験の公開問題にて同じような問題を見つけていますので、今後またご紹介しようと思います。
ここまでお付き合い頂き、ありがとうございましたm(_ _)m
Discussion