未分類

【Java】匿名クラス(無名クラス)を使いこなそう! 匿名クラスの使い方と利点を解説!

今回は、Javaの匿名クラス(無名クラス)について解説します。

匿名クラスとは

匿名クラスを使うと、新しくクラスを記述せずともあるインターフェースや抽象クラスを実装し、インスタンスとして扱うことができます。語弊を恐れずに簡単に言うと、「使い捨てクラス」のようなものです。

C#の匿名型とは全く異なるものです。

匿名クラスの例

Java
public abstract class SuperClass { // 抽象クラス
    public void sayHello() {
        System.out.println("こんにちは!");
    }
    
    public abstract void abstractMethod(); // 抽象メソッド
}
Java
import..

public class Program {
    public static void main(String[] args) {
        SuperClass anonymous = new SuperClass() {
            @Override
            public void abstractMethod() { // 抽象メソッドのオーバーライド
                System.out.println("ハロー!");
            }
        };
        
        anonymous.sayHello(); // 「こんにちは」と出力される
        anonymous.abstractMethod(); // 「ハロー!」と出力される
    }
}
[実行結果]

こんにちは!
ハロー!

この例では、抽象クラス SuperClassを実装する匿名クラスを作成しています。匿名クラス内でスーパークラスの抽象メソッドabstractMethod()をオーバーライドしています。

匿名クラスの利点

匿名クラスを利用しない場合と比較

もし匿名クラスを利用しない場合、次のような新しいクラスを実装する必要があります。

Java
import..

public class DerivedClass extends SuperClass {
    @Override
    public void abstractMethod() {
        System.out.println("ハロー!");
    }
}

一度しか使わないようなインターフェースや抽象クラスの実装は、匿名クラスを利用することでより簡潔に書くことができます。

SuperClassは先ほど示したものと同じです。

同じスコープ内の変数を利用することができる

匿名クラスを利用することの利点として、「匿名クラスの実装の中であっても同じスコープ内の変数を利用することができる」があります。

サンプルコード:

Java
import..

public class Program {
    public static void main(String[] args) {
        String myMessage = "釧路はええとこやで〜";
        
        new SuperClass() {
            @Override
            public void abstractMethod() {
                System.out.println(myMessage); // 同じスコープ内の変数myMessageを利用することができる
            }
        }.abstractMethod();
    }
}
[実行結果]

釧路はええとこやで〜

SuperClassは先ほど示したものと同じです。

備考

普通のクラスの継承で匿名クラスを扱う

当然、インターフェースや抽象クラスでなくても匿名クラスを作成することが出来ます

サンプルコード:

Java
public class People {
    public void sayHello() {
        System.out.println("Hello");
    }
}
Java
import..

public class Program {
    public static void main(String[] args) {
        var people = new People(); // 普通のPeopleクラスのインスタンス
        
        var japanesePeople = new People() {
            @Override
            public void sayHello() {
                System.out.println("こんにちは");
            }
        };
        
        var chinesePeople = new People() {
            @Override
            public void sayHello() {
                System.out.println("你好");
            }
        };
        
        var hogePeople = new People() {
            @Override
            public void sayHello() {
                super.sayHello(); // 匿名クラス内でもsuperキーワードを利用できる
            }
        };
        
        people.sayHello(); // -> Hello
        japanesePeople.sayHello(); // -> こんにちは
        chinesePeople.sayHello(); // -> 你好
        hogePeople.sayHello(); // -> Hello
    }
}
[実行結果]

Hello
こんにちは
你好
Hello

この例では、クラスPeopleを継承した匿名クラスを作り、インスタンスjapanesePeoplechinesePeoplehogePeopleを作成しました。

まとめ

今回は、Javaの匿名クラス(無名クラス)について説明しました。例のように、適切な箇所で匿名クラスを利用すると、普通にクラスを実装するよりも簡潔に記述することが出来ます。特に、そのクラスを一度しか使わない場合は、匿名クラスに書き換えるとよりコードがスッキリします。

最後までお読みいただきありがとうございました!

【高校数学Ⅰ】2次関数のグラフをマスターしよう!

今回から高校数学の中で最初の難関でもある二次関数について解説していきます!基礎から応用まで幅広く扱っていく予定なので数学で苦手な分野がある時や、数学力を高めたい時に是非ご覧ください。

関数とは?

ある変数$\ x\ $があるとき,この$\ x\ $を関数という箱にいれると$\ y \ $の値がただ1つに決まる時$\ y\ $は$\ x\ $の関数といいます。関数は$\ f(x)\ $ と表し,ある関数$\ f\ $ に$\ x\ $を代入していることを表しています。下図のようなイメージですね。

              $x$➡︎$f$という関数➡︎$f(x)$として値が出てくる

また関数$ y=f(x) $において$ x=a $のときの$ y $の値を$ f(a) $と表します。
例えば$ f(x)=x+3 $のとき$ x=2 $のときの$ y $の値は$ f(2)=2+3=5 $といった具合です。

象限

座標平面には$ x$軸と$ y$軸の2つの軸があります。この2つの$ x$軸と$ y$軸で平面が4つに分割されるとき,この分割された4つの領域を第1象限から第4象限までで分類します。どこが題2象限であるか〜などは覚える必要があります。下図のようになるので覚えましょう。また$ x軸$や$ y$軸上の点はどの象限にも含まれないので注意しましょう。

2次関数のグラフ・軸・頂点

2次関数のグラフは放物線と呼ばれ, $y=ax^2+bx+c$ (一般形)の形で表されます($a≠0$)。
また放物線に関わる重要な言葉として,軸と頂点があります。
とは…放物線はある直線を境に線対称な図形になっています。この直線を軸といいます。
頂点とは…放物線とその軸の交点のことを頂点といいます。

2次関数の形は $a$ の値により大きく変わります。

(1) $a>0$ のとき,
  放物線のグラフは下に尖った形となり,これを下に凸(したにとつ)と呼びます。

(2) $a<0$ のとき,
  放物線のグラフは上に尖った形となり,これを上に凸(うえにとつ)と呼びます。

$y=a(x-p)^2+q$(標準形)のグラフと平方完成

$y=ax^2+bx+c$ の表記ではグラフをかくことは難しいです。しかし,グラフの頂点と軸が分かればグラフの概形をかくことができます。2次関数を $y=a(x-p)^2+q$(標準形) の形に変形することでグラフの頂点と軸を知ることができます(理由は後程説明)。この変形を平方完成といいます。

・平方完成のやり方
$y=ax^2+bx+c$

$=a(x^2+\frac{b}{a}x)+c$

$=a{(x+\frac{b}{2a})^2-(\frac{a}{2b})^2}+c$

$=a(x+\frac{a}{2b})^2-\frac{b^2}{4a}+c$

ここで,$p=-\frac{a}{2b} , q=-\frac{b^2}{4a}+c$ とおくと

$y=a(x-p)^2+q$ を得る。■

平方完成は慣れなので数を沢山こなしましょう。

・標準形から軸と頂点を求める。

$y=a(x-p)^2+q ⇔ y-q=a(x-p)^2$ は $y=ax^2$ の $x$ を $x-p$,$y$ を $y-q$ に置き換えた形をしています。この変換は $y=ax^2$ のグラフを $x$ 軸方向に $p$ ,$y$ 軸方向に $q$ だけ平行移動させたグラフを表しています。

$y=ax^2$ の軸は $x=0$ なので,$x$ 軸方向に $p$ 平行移動させた $y=a(x-p)^2+q$ の軸は $x=p$
同様に,$y=ax^2$ の頂点は $(0,0)$ なので,$x$ 軸方向に $p$ $y$ 軸方向に $q$ 平行移動させた $y=a(x-p)^2+q$ 頂点の座標は$(p,q)$ となります。

$y=a(x-p)^2+q$の2次関数の軸は$x=p$,頂点の座標は$(p,q)$

定義域・値域・最大値・最小値

関数 $y=f(x)$ において,$x$ の取りうる範囲を定義域,そのときの $y$ の取りうる範囲を値域といいます。また,値域のうち最も大きい値があるとき,その値を最大値,逆に値域のうち最も小さな値があるとき,その値を最小値と言います。

〈例1〉 $y=2x$ の定義域が$ -1<x≦3 $のときの値域・最大値・最小値は?

$y=2x$ は直線を表すので,端点を考えると値域は $-2<y≦6$ となります。
よって最大値は6となります。一方最小値は,値域の不等式に左側に等号(=)が含まれないので最小値はありません。

〈例2〉

$y=x^2+2x$ の定義域が $x≦1$ のときの値域・最大値・最小値は?

2次関数なのでグラフの形を考えましょう。平方完成すると $y=(x+1)^2-1$ となり,軸は $x=-1$ ,頂点は$ (-1,-1)$ であることがわかります。グラフをかくと,最小値は $x=0$ のとき$0 $ですが,$ x $の定義域が負の方向に無限に続くので最大値は存在しません。

〈例3〉

$y=-x^2+4x+1$ の定義域が $-1≦x≦4$ のときの最大値と最小値は?

これも2次関数なので平方完成すると,$y=-(x-2)^2+2$ となり頂点の座標が$ (2,2)$ とわかります。 $x^2$ の係数が負であるので上に凸であることに注意すると,グラフは以下のようになります。よって最大値は $x=2$ のとき$2$,最小値は $x=-1$ のとき $-7$ となります。

第1回は2次関数の基本事項について整理しました。次回からは2次関数の頻出問題や応用問題の解説をしていきますのでよろしくお願いします。なお,記事に誤りがありましたらご気軽にコメントください。最後に練習問題を載せておきますので力試しにどうぞ!

【練習問題】$a$ を実数とする。$y=ax^2+2ax+a^2+a$ の最大値が $4$ のとき,$a$ の値を求めよ。

以下解答⇩

平方完成すると,$y=a(x+1)^2+a^2$ で定義域が実数全体の放物線の最大値が存在するのは放物線が上に凸のとき。よって $a<0$ である。このとき最大値は $x=-1$ のとき $a^2$ で,条件より最大値は4だから,$a^2=4$ これを解くと,$a=±2$ 。$a<0$ に注意すると求める値は $a=-2$

【高校, 大学】LaTeXで簡単にきれいなレポートを書こう!高校生・大学生向けの使い方解説

大学や高校で数式を使うレポートを書くときにWordやGoogle ドキュメント,一太郎といったワープロソフトを使ったことがある人は多いと思います。でも,なんか教科書みたいに綺麗にならないなあと困ったことがあると思います。そこで,今回のブログでは理系の論文などでよく使われている$\mathrm{\LaTeX}$の使い方や,インストール方法について紹介していきます!

今回はWindowsでの使い方を説明をしていきます!

コードにおいて\と¥は同じ文字として認識されます。

1. インストール

以下のサイトを参考にインストールをしてください。

【大学生向け】LaTeX完全導入ガイド Windows編 (2022年)

2. 実際に書いてみよう!

VSCodeを起動して実際に書いてみましょう。

sample.texを作成します。レポートなどを書くときのひな型のコードは以下の通りです。

\documentclass[a4paper]{ltjsarticle}
\title{}
\author{}
\date{}

\begin{document}
\maketitle
ここには適当な文章を書いていきます。
\\これでこの行は上の文と同じ段落で改行されます。
\section{見出しってやつ}
段落では一文字下げが自動的に行われます。
\subsection{小見出しやで}

\end{document}

1行ずつ説明をしていきます。

\documentclass[a4paper]{ltjsarticle} []の中身で用紙のサイズの指定を{}の中身はLaTexの方式を指定しています。ltjsarticleLuaLaTexという方式でLaTexをPDFに変換します。変換の方式はいろいろありますが,何か指定がなければ比較的新しいLuaLaTexの使用をおすすめします。

\title{} {}の中にタイトルを書きます。

\author{} {}の中に著者(名前,学生番号,所属など…)を書きます。

\date{} {}の中に書いた日や提出日などを書きます。

以上の/titleから/dateの部分に書いたコードをプリアンブルといい,文書の基本的な設定や画像やグラフなどを使う際に使用する,パッケージの読み込みなどを書きます。

\begin {document} ~ end {document} この間には実際に表示される文章や数式,グラフなどを書いていきます。

\maketitle \title ~ \dateで書いた情報を文書上に表示させるための文です。通常は文章の最初に置くことが多いです。

\section{} {}のなかに見出しを書きます。段落で小見出しを付けるときは\subsection{}を書きます。

3. 数式を書いてみよう!

LaTeXのメインの機能の一つである数式を書いてみましょう。数式の書き方は主に2種類あります。

囲み方機能
\$~\$文中に数式を入れるときに使います。例:この関係は$ y = 2x$で表される
\$\$~\$\$数式をブロックとして入れるときに使います。
例:以上より,この問の答えは,
$$ x = \frac{(1+\sin{\theta})(1+e^x)}{1+\tan^2{\theta}}$$

以上のようにすべての数式は\$マークで囲む必要があります。

次にいくつかのよく使われる数学記号を紹介します。 これらの記号は大量にあるので必要に応じて自分で調べてください。

記号名入力出力
乗算\times$\times$
除算\div$\div$
分数\frac{a}{b}$\frac{a}{b}$
累乗x^a , b^{xyz+pqr}$x^a,b^{xyz+pqr}$
下付き文字a_n , b_{12}$a_n, b_{12}$
微分f'(x) , f^{\prime\prime}(x) , \frac{dx}{dt} , \dot{x}$f'(x) , f^{\prime\prime}(x) , \frac{dx}{dt} , \dot{x}$
積分\int {f(x)dx}, \int_{b}^a {(x^n+at)}dt$\int {f(x)dx}, \int_{b}^a {(x^n+at)}dt$
三角関数\sin{\theta},\cos{\theta},\tan{\theta}$\sin{\theta},\cos{\theta},\tan{\theta}$

以上が,基本的な数式を書くためのコマンドです。三角関数などは上記のようにかかなくても出力はされますが、見やすさなどの点から\sinなどを使うようにしましょう。

4. まとめ

以上が,基礎的なLaTeXの使い方です。

グラフを書いたり,図形を書いたりするにはパッケージをするにはそれぞれ適したパッケージなどがあるので調べながら,がんばってみてください。

【sinの値の評価】数学問題解説#1

はじめまして! 釧路湿原大学運営のユルリ島です。当サイトでは主に高校数学、理科、地理、情報等に関する記事をあげていく予定ですが、今回は数学の第1回として自作の問題を解説していきます(既出の問題でしたらすみません)。今後は不定期で自作問題や典型問題の解説、および入試問題の解説等を行っていく予定ですのでどうぞよろしくお願いします。

それでは早速始めていきましょう!

              $\fbox{1}\ \ \sin1の値を小数第1位まで求めよ。$

第1回は三角関数を扱います。誰でも思いつきそうななんとも単純な問題ですが、解説を始めていきます笑。京都大学の某問題に見た目が似ている気もする。


まず、$\sin1$なんて値は勿論そのまま出せないですし、$π$が絡んだ数でもないので倍角の公式を使い導くこともできません。よって、不等式で評価をする方針でいきましょう。有名角の$\sin$で挟みたいので1に近い有名角を探していきます。まず初めに思いつくのは$\frac{π}{3}$でしょうか、これは1よりも少し大きい値ですので上から挟むことはできそうです。下からの評価は少し思いつきにくいですが$\frac{3}{10}π$で評価できると推測し、倍角の公式を用いてこの値を求めていきます。$\frac{1}{10}π$系統の三角比の問題を解いたことがある人は簡単に思いついたかもしれませんね。

解答

$0<x<\frac{\pi}{2}$で、$\sin x$は単調増加し、

$1<\frac{\pi}{3}$より、

$$\sin 1<\sin\frac{\pi}{3} \tag{1}$$

ここで、$\theta=\frac{\pi}{10}$とすると、$5\theta =\frac{\pi}{2}$より、

$$
\begin{aligned}
&2\theta =\frac{\pi}{2}-3\theta\\
\Longrightarrow&\sin 2\theta=\sin(\frac{\pi}{2}-3\theta)=\cos 3\theta\\
\Longleftrightarrow&2\sin\theta\cos\theta=4\cos^3\theta-3\cos\theta\\
\Longleftrightarrow&4\sin^2\theta+2\sin\theta-1=0\qquad(\because\sin\theta\ne0)
\end{aligned}
$$

よって、$\sin\theta=\frac{\sqrt{5}-1}{4}\quad(\because\sin\theta>0)$

$$
\sin3\theta=3\sin\theta-4\sin^3\theta=\frac{\sqrt{5}-1}{4}\\
\Longleftrightarrow\sin\frac{3}{10}\pi<\sin1
$$

$\frac{3}{10}\pi<1$より、

$$\sin\frac{3}{10}\pi<\sin1 \tag{2}$$

$(1)(2)$より、

$$
\sin\frac{3}{10}\pi<\sin1<\sin\frac{\pi}{3}\\
\Longleftrightarrow\frac{\sqrt{5}-1}{4}<\sin1<\frac{\sqrt{3}}{2}
$$

$2.22<\sqrt5<2.24$、$1.72<\sqrt3<1.74$より、

$$\frac{\sqrt{5}-1}{4}<0.808<\sin1<0.866<\frac{\sqrt3}{2}$$

ゆえに、$\sin1$を小数第一位まで求めると、

$$0.8$$

【医学部入試】独学で国立医学部に現役合格したい! やるべきこと・コツ・おすすめの参考書を大公開!

非常に狭き門である医学部医学科。予備校の難易度ランキングによると、国公立大医学科受験は東大受験に匹敵するほどの難しさがあります。この難しさゆえに医学部合格者の6割以上が浪人しています。

そんな中、私(筆者)の友人が学習塾に通わずに独学で国立大学の医学科に合格しました。彼が実践していた勉強法とは一体どのようなものだったのでしょうか?

今回は、医学部受験で独学を成功させるためのコツについて彼にいくつかの質問をしていきます。

※参考書等のAmazon販売サイトへのリンクを掲載しておりますが、当ブログではAmazonアソシエイト•プログラムを利用しておりません。安心してご利用ください。

進路選択について

志望校はいつ決めたか。

志望校はいつ頃決めましたか?

自分は元々高校1年生の時から名古屋大学医学部医学科を目指していました。しかし名大医学部志望とは思えないような時間しか勉強しておらず、遂に共通テスト本番で697(得点調整後)点というとても受かるとは思えない点数を叩き出してしまいました。そこで進路面談で先生に現役時は福井大学の医学部を目指し、休学し浪人をしたのち名古屋大学を目指してはどうか、そこで合格すればとりあえず医学部のパスポートは得られる、と説得されxx(国立)大学医学部医学科を目指すことをしました。つまり1月下旬に志望校を決定しました。

最終的な志望校決定はおよそ二次試験の1ヶ月前だったようです。しかし、高校1年生と早めの段階から医学科を志しており、学習を続けてきたようですね。

受験勉強について

受験勉強を始める時期

受験勉強はいつから始めるべきですか?

早ければ早いほうがいいと思います。理想としては1年のうちに英語と古文漢文をある程度の水準まで持って行ったほうがいいと思います。自分は英語をサボったせいで苦労しました。自分は2年で数学と物理を真面目にやり始めたところ割と得意科目にすることができました。化学は3年から真面目にやりましたがなんとかなりました。とりあえず早いほうがいい。

予備校について

予備校等に通わなかった理由を教えて下さい。

予備校には高校3年から通おうと思っていましたが気づけば卒業してしまっていました。通学のルート上に予備校がなかったため、交通費や移動時間もかかるというのも通わなかった理由ですかね。家で集中して勉強できるならそれで十分だと思います。自分は問題を解き長々と解説を聞くよりは自分のスピードで問題集を進める派だったのも理由です。

彼にとって、予備校に通うよりも自分で進めた方が効率が良かったようです。予備校に通うべきか、よく検討するのが良いでしょう。

赤本を解く時期

赤本はいつ頃から手をつけるべきですか?

名古屋大学の赤本は夏休みに少し見ていました。本当に少しです。数学を1問解く程度。本格的に赤本をやろうと思い始めたのは共通テスト後ですね、しかし赤本というよりは名大数学の15ヵ年を少しやっただけです。その後上記のように志望校を変更しxx(国立)大学の赤本を購入しました。福井大学の赤本は2017年の1年分のみやりました。おそらくもっとやったほうがいいと思いますが、自分は何にせよ怠惰なので1年分しかできませんでした。最後の詰め込みは赤本ではなく市販の問題集がメインでした。

基礎固めの参考書

基礎を固めるのに最適な参考書を教えて下さい。

数学はFocus Goldですかね、例題だけ解きましたが最初期の解法のレパートリーを増やすことに関しては最適だったと思います。基礎問題から発展問題まで載っているので最初は網羅系の参考書をやるのが良いかと思います。物理は学校で配られたリードαをやっていました。これは2周ほどすれば十分でしょう。化学は新研究エクセル→新研究で知識詰め込む⇄重要問題集をやっていました。化学は時間がなかったため1周のみしかできていませんが、重要問題集はいくらでもやっていいでしょう。英語は知りません。単語をやってください。国語は知りません。古文7点でも医学部は受かります。地理はひたすら暗記&共通テスト演習

入試直前の参考書

入試直前期に最適な参考書を教えて下さい。

数学は理系数学262をずっとやっていました。xx(国立)大学レベルにちょうどいい参考書だと思います。化学は標準問題精巧をやっていました。問題数が少なめで解説が凄く丁寧なので共通テスト後にやる問題集としては最適かと思います。物理は学校で配られたプリント(2022の色んな入試)をかるーくやっていました。英語は単語のみですね。

高3の春•夏•秋•冬の勉強

高3の春、夏、秋、冬はそれぞれどのような学習をしましたか。また、学習時間はそれぞれどれくらいでしたか。

春は寝て遊んでました。おかげで春休み宿題テストでは驚異の順位をとってしまいました。その後定期テストの順位によってクラス分けが変動することを知り、6月ごろから化学などを真面目にやった気もするししない気もします。夏休み初期は数学の問題を作り遊んでいたり北海道旅行に行ってました。途中から化学の問題や数学を主にやっていた気がします。秋も同じく化学メインで数学、物理もそこそこにみたいな感じでやっていました。12月からは共通テスト対策ですかね、数学は学校で配られた共通テスト形式の問題を、物理も同じく、化学は学校で配られた共通テストやセンター試験の過去問問題集を解いていました。勉強時間は平均して3~4なのではないでしょうか。圧倒的に足りないです。またおわかりかと思いますが英語は殆どやっていません笑

受験生になった当初は勉強に熱心とは言えなかったようです。適宜必要な学習をし、追い上げたという感じでしょうか。

休日の学習

休日の主な学習スケジュールを教えて下さい。

まずは好きな数学をやり勉強のやる気を出す。時間を計り4題セットで解くようにしていました。時間を厳しめに設定すると記述力や計算力もあがると思います。次に物理か化学ですね、これも理系科目なのでやる気がありました。そして夕食を食べたのち、気が向けば英語をやっていました笑、地理は毎日やる時間を固定していましたね。国語は知らぬ。

勉強の息抜き

勉強に詰まった時、何をしましたか?

音楽をかけるかディーゼルエンジンの音を聞いて自分の勉強のエンジンをつけてました。おすすめはキハ283とキハ85。それと9nine-をやっていました。

ちょっと癖が強いですが、好きな音楽を聴くなど勉強の妨げにならない程度のことをしてモチベーションを高めるのがいいようです。

医学部医学科受験について

カギとなる入試科目

医学部入試において鍵となる教科はなんですか?

全部重要ですが強いて言えば理科とかですかね。化学は割と短期間で伸びる気がしますのでコスパが良い。理想は英語と数学がある程度しあがった状態で直前期に理科をやる感じでしょうか。自分は英語が死んでましたが。

面接について

面接時に心がけたことを教えて下さい。

ただひたすらに緊張しないようにしました。しかし意味がありませんでした。そもそも面接対策というものを前日の夜ホテルでテキトーに考えていただけというのがよくなかったのでしょう。面接が苦手な人や面接の配点が大きい大学を志望する人はネットでよく聞かれる質問を検索し、それには答えられるように一字一句完璧に暗記して面接に臨むことを推奨します。面接は暗記科目です。

面接対策を行わなかったことが反省点のようです。筆記試験のように典型的な質問をされることが多いので、対策をして本番時に緊張しないよう準備するのが良いでしょう。

最後に

医学部医学科はとても狭き門であり、秀才であっても合格は難しいです。そんな中、独学で現役合格した友人の生の声を共有しました。

受験生の皆さんがいろいろな意見を取り入れていく中で、少しでも参考になる点が見つかれば幸いです。

最後まで読んでいただきありがとうございました!