こんにちは。paizaラーニングで動画制作を担当している岡山です。
条件文(if文やswitch文)は、どのプログラミング言語を学ぶ上でも基本中の基本として必ず習得しておきたい文法のひとつです。
単純な条件分岐であれば問題ないという方も多いと思いますが、条件が複雑になるとケアレスミスをしやすい箇所でもあり注意が必要です。
そこで今回は、paizaラーニングのレベルアップ問題集に追加された「条件分岐メニュー」を使って、複雑な条件分岐の実装に慣れるための学習法を紹介していきたいと思います。
レベルアップ問題集とは
条件分岐処理の話に入る前に、レベルアップ問題集とは何かを簡単に説明します。
レベルアップ問題集とは、プログラミング学習における計算ドリルや漢字ドリルのようなものだと思ってください。
ドリルのようにプログラミング問題を解き進めながら、解答例となるコード(一部言語)や解説文も参照できる*1ため分からないことを理解したり、苦手なポイントを克服したりできるように作られています。
paizaが提供しているスキルチェックとは異なり時間制限がなく、問題文や自分の解答コードを公開することが認められていますので、誰かと協力して取り組むことも可能です。
練習問題集「条件分岐メニュー」
今回追加された条件分岐メニューには、if文やswitch文を用いた条件分岐処理を学習できるプログラミング問題を集めています。現在、C++の解答コード例を参照していただけます。
条件分岐メニューは、スキルチェックのD~Cランクを取得している方に取り組んでいただくことを想定して作成しています。(スキルチェックでは、問題の難易度をS・A・B・C・Dのランク分けして公開しています。)
問題を解くにあたり標準入出力の知識があるとよりスムーズですが、基本的にはプログラミング初心者の方が対象となる問題集です。
標準入力については、言語別で学習講座を公開していますのでこちらの一覧から取り組みたい言語を選択して受講してみてください。合わせてレベルアップ問題集の「標準入力メニュー」「標準出力メニュー」も解いておくとよいでしょう。
出題される問題の特徴
「条件分岐メニュー」にはプログラミング問題が全25問用意されており、あとの問題ほど解くのが難しくなっています。
メニューは4つのセクションに分かれています。また、各セクションは、1つの「ボス問題」(もっとも難易度が高い問題)といくつかの「準備問題」(ボス問題を解くための準備ができる問題)によって構成されています。
1:単純な条件分岐
条件分岐メニューの1つ目のセクションは「単純な条件分岐」のセクションです。このセクションでは、if文の使い方や、条件分岐の基本的な考え方について理解することができます。
4つの準備問題で登場した要素を組み合わせると、最後のボス問題が解けるようになっています。
3:剰余
3つ目は「剰余」のセクションです。剰余とは、割り算のあまりのことです。このセクションの最初の2問は、単純な剰余を求めると正解できる問題です。
しかし3問目はループの中で剰余を求める必要がある問題、4問目は一見すると剰余とは関係がなさそうな問題で、正解するためには発想力が求められるような問題となっています。
そしてボス問題には、剰余の定番とされるFizzBuzzの問題を用意しました。これに正解できれば剰余に関しては合格と言ってよいでしょう。
なお、FizzBuzzについては、動画講座「アルゴリズム入門編」でも解説していますので、よければごらんください。
4:複雑な条件分岐
最後は「複雑な条件分岐」のセクションです。
このセクションの中の各問題は、難易度にほとんど差がありません。スキルチェックでCランクを獲得するために必要な条件分岐のパターンを網羅する問題構成になっています。
このセクションの最初の問題は以下のとおりです。
1けた数の測定
問題:
文字列Sが与えられます。Sがpaizaと一致する場合はYESを、一致しない場合はNOを出力してください。
入力される値:
S
期待する出力:
YES
または
NO
なんとなく解き方がひらめいた方は、ぜひこちらからチャレンジしてください。
ボス問題も紹介します。問題文がやや長いですが、じっくり読んで何を問われているか整理するところから始めてみましょう。
積の最小化
問題文:
-1,000 ≦ A ≦ B ≦ 1,000 を満たす 2 つの整数 A, B が与えられます。A 以上 B 以下である 2 つの整数 X, Y を適当に選んだとき、X * Y の取り得る値の最小値を出力してください。なお、X と Y は同じ値でもよいものとします。
たとえば A が 3, B が 5 の場合について考えます。これは X と Y を両方とも 3 にしたときが最小で、 X * Y が 9 となります。
入力される値:
A B
期待する出力:
N
プログラミング学習を始めたばかりの方には少し難しく感じるかもしれませんが、ここまでの問題を解き進めていれば自力で解くことができると思います。
解答例となるコードや解説も用意しておりますので、「ちょっと解けそうにないな……」という方は参考にしてみてください。
条件分岐処理をマスターしたら
「条件分岐メニュー」の問題を解けるようになったら、ぜひ時間制限のあるスキルチェックに挑戦してみてください!
もっとも易しいのがDランク問題ですので、順にチャレンジしてみて、解けない問題があればまたレベルアップ問題集で鍛えて…と活用していただければより力がつくはずです。
問題集は、たとえばCランク相当の問題を安定して解けるようになりたいなら「Cランクレベルアップメニュー」、難易度の高い問題にチャレンジしてみたい場合は「Bランクレベルアップメニュー」「Aランクレベルアップメニュー」あたりがおすすめです。
または、自分が苦手な内容だったり、コードを書く力をつけたいと思ったりしている分野の問題集に取り組んでみるのもおすすめです。
まとめ
レベルアップ問題集に新しく追加された、「条件分岐メニュー」をご紹介しました。
条件分岐は一見簡単そうに見えますが、範囲指定のミスなどでバグになりやすい箇所でもあります。問題をたくさん解いて、使いこなせるようにしておきましょう。
なお、問題集の内容が難しいと感じた方は、まずはプログラミングの基礎文法から学習を始めたほうがよいかと思います。
paizaラーニングでは、Python・PHP・Ruby・Java・C・C#・JavaScriptの7言語の入門講座を公開していますので、ぜひご活用ください。プログラミング言語入門講座一覧はこちら
*1:ただし、それらを閲覧するためには学習チケットが必要となります。チケットは毎日初回ログイン時に1枚付与され6枚まで所持できます。(有料会員の場合はチケットの消費なしで閲覧可能です)