検定部

[プロ対策]重要Java構文集①

検定部

ここでは、「変数の宣言」・「printf」・「for文」を学習する。

変数の宣言

基本構文

データ型 変数名 = <初期値>;

SAMPLE-CODE

public class ex1 {
    public static void main (String[] args){
        //変数の宣言
        int point = 100;
        String name = "XX";
        //文字列の結合
        System.out.print( name + point );
    }
}
出力結果
XX100

コード解説

変数の宣言である。4行目ではint型の変数pointを宣言し、初期値として100を代入している。

5行目ではString型の変数nameを宣言し、初期値として”XX”を代入している。

変数は箱のイメージで、自由に入力(上書きや四則演算)・出力が可能になる。

合格への道

全商プロにおいて、変数の宣言を聞かれる問題は存在しない。しかし、プログラムの主となる構成要素である変数を利用しないソースコードも存在しない

この変数の宣言を知っていることで、「どの変数を利用しているのか」や「このデータ型は当てはまらないな(printfなどで活用可)」など、問題攻略へ繋がっていくので、覚えることを奨めたい。

printf

基本構文

System.out.printf(書式, 引数1, 引数2, 引数3…);

SAMPLE-CODE

public class ex2 {
    public static void main(String args[]){
        int price = 100;
        int quantity = 3;
        int total = price * quantity;
        String name = "XXチキン";
        System.out.printf("%sのご購入ありがとうございます:金額:%d×%d=%d",name,price,quantity,total);
        
    }
}
出力結果
XXチキンのご購入ありがとうございます:金額:100×3=300

コード解説

printfの利用である。これは書式指定子(フォーマット指定子)+データ型で、変数を代入する箇所を宣言する。

javaにおいて、書式指定子は「%」であるから「%」の箇所に変数が代入されていくことになる。

該当する変数は、書式の次以降に記載される「引数1~」に記載されていく。

引数1は最初の%~に代入され、引数2は2番目の%~に代入される。

%~の~はデータ型が当てはまり、下表の通りである。

特に赤字はよく利用される。余裕があればf(小数)も覚えておくと良い。

合格への道

printf関数の引数を記入させる問題は頻出問題と言っても良い。このprintf関数の%d,%f,%sと、引数の1番目と%の1番目は同じ(そこに代入される)ことを知っていれば、ここには文字型(%s)であるから「数値型の変数はあり得ないな」と思考出来るようになる。

この思考が出来るようになれば、情報量の少ない書式であってもデータ型を絞ることが可能になる。

for文

基本構文

for(初期化式;条件式;増減式){ }

SAMPLE-CODE

public class ex3 {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) {
            System.out.println();
            for (int k = 1; k <= 9; k++) {
                System.out.print(j * k + "\t");
            }
        }
    }
}
出力結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

コード解説

for文を利用した九九の表示プログラムである。

外のfor文(変数j)が1の時に中のfor文(変数k)は1から9まで増加する。

for文の実行順序は次の通りで、この性質をインサーションソートなどに応用している。

初期化式を考慮しなければ、必ず最初に条件式でfor文内の条件を満たすかどうかを確認し、満たす場合は中の条件に移動し、最後に増減式が実行される。

合格への道

全商Javaにおいて、for文は必ず出題される。利用用途は多岐にわたり、ソートや順位付けのアルゴリズムは勿論、データの集計などにも利用されるから、必ず「どの場所に何が来るのか」は把握しておくべきだし、余裕があればfor文の実行順序も覚えておくと良い。

補足

for文に限る話ではないが、条件は複数個設定することが出来る。例えば、「所持金が1000円以上」と「ある商品の在庫が10個以下である」の2つの条件を満たす場合は、新たに購入すると言った時、1つの条件式欄に1つの条件式しか書けないと不便である。

このような条件を結合する役割を担うのが論理演算子である。

論理演算子は3つ存在しており、特に上2つは重要である。

public class ex4 {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int c = 0;
        
        //論理和
        for (int i = 1; i <= a || c <= b; i++) {
            c += i;
        }
        System.out.println("論理和" + c);

        //論理積
        c = 0;
        for (int i = 1; i <= a && c <= b; i++) {
            c += i;
        }
        System.out.println("論理積" + c);
    }
}

それぞれの出力結果を予想出来るだろうか。

出力結果
論理和55
論理積15

論理和の方は、一方が偽になっても、もう一方が真ならばずっと内部の処理を実行する。

今回の例で言えば、2番目の条件式「c<= b 」は6回目に偽となるが、1番目の条件式「 i <= a 」は6回目時点でも、勿論真であるから、1から10までを加算した55という出力結果が返ってくる。

逆に論理積は、両方が真であり続ける必要がある。

for文自体の中身は変わらない訳だから、2番目の条件式が6回目に偽となり、for文の処理が終了する。これによって1から5までを加算した15が出力される。

論理演算子を記述させたり、条件文の中に入っている問題は、何回か出題されている。

論理演算子1つ覚えているだけで、得点が上がる可能性があるので、きちんと把握すると良い。

参考資料

コメント

タイトルとURLをコピーしました