復習 (1)
今回の内容
今回は「入出力」から「手続き」までの復習を行います。知識に抜けがないかチェックしておきましょう。
復習
入出力
「入出力」の回では、入力ダイアログとメッセージダイアログを表示する簡単なプログラムを紹介しました。
package j1.review01; import javax.swing.JOptionPane; public class First { public static void main(String[] args) { new First().start(); } void start() { String input = JOptionPane.showInputDialog("メッセージをどうぞ"); JOptionPane.showMessageDialog(null, input); } }
プログラムの基本的な構造は「入力された値を処理し、結果を出力する」という「入力→処理→出力」の流れです。この回ではそのうち、「入力された値を(ほとんど)そのまま出力する」といった非常に単純なものを紹介しました。
また、このコースではメソッドを紹介する手前のところまで、次のようなプログラムの「ひな型」を利用しています。
import javax.swing.JOptionPane;
public class <クラスの名前> {
public static void main(String[] args) {
new <クラスの名前>().start();
}
void start() {
<命令>
}
}
プログラムは、void start() {…}というstartメソッドのうち、ブロックと呼ばれる{…}の部分を書き換えていくつかの命令を書きます。ここでメッセージを表示する際には次のように書きます。
また、入力ダイアログを表示するには次のように書きます。
式と変数
「式と変数」の回では、整数や実数、文字列などの値や、それらを計算で組み合わせる方法、変数を宣言してそれらの値を記憶させる方法などを紹介しました。
package j1.review01; import javax.swing.JOptionPane; public class CircleArea { public static void main(String[] args) { new CircleArea().start(); } void start() { String input = JOptionPane.showInputDialog("円の半径を入力"); double radius = Double.parseDouble(input); JOptionPane.showMessageDialog(null, radius * radius * 3.14); } }
このプログラムには「"円の半径を入力"」や「3.14」のようにプログラムで書いたとおりの値を利用するための「リテラル」というものが含まれています。この回では、次の3種類のリテラルを紹介しました。
- 文字列を表すリテラル ("と"で囲む, "こんにちは!" など)
- 整数を表すリテラル (0から9までの数字の列, 12345 など)
- 実数を表すリテラル (途中に.を含む数字の列, 3.141592 など)
また、入力された値など、あとで使う値を「変数」に記憶させています。これらを利用するにはプログラム中で次のように「変数の宣言」を行います。
int <変数名> = <整数>;
double <変数名> = <実数>;
変数に記憶させた値を利用するには、リテラルの代わりに宣言した変数の名前を指定します。なお、String, int, double をそれぞれ変数の「型」と呼び、変数に記憶させられる値の種類は、それぞれ型ごとに決められています。
その他に、整数や実数のリテラルや変数を組み合わせて、新しい値を作りだす方法を紹介しました。上記の例では、円の面積を求めるために「radius * radius * 3.14」という計算を行っています。
Javaでの書き方 | 算数での書き方 | 意味 |
---|---|---|
a + b | a + b | aとbの和 (文字列を含む場合はaとbの結合) |
a – b | a - b | aとbの差 |
a * b | a × b | aとbの積 |
a / b | a ÷ b | aとbの商 |
なお、入力ダイアログに入力された値は、文字列として取り扱うことになります。文字列のままでは上記のような計算が行えないため、整数や実数に変換して利用する方法を紹介しました。
double <変数名> = Double.parseDouble(<文字列>);
条件分岐
「条件分岐」の回では、コンピューターに簡単な「判断」を行わせるプログラムを紹介しました。
package j1.review01; import javax.swing.JOptionPane; public class SelectQuiz2 { public static void main(String[] args) { new SelectQuiz2().start(); } void start() { String input = JOptionPane.showInputDialog("条件分岐をするには?" + "(1) if文 " + "(2) for文 "); int answer = Integer.parseInt(input); if (answer == 1) { JOptionPane.showMessageDialog(null, "正解です"); } else if (answer == 2) { JOptionPane.showMessageDialog(null, "不正解です"); } else { JOptionPane.showMessageDialog(null, "無効な値です"); } } }
条件分岐は、次のようにif文を使います。
<条件式が成立する場合の命令>
}
else {
<条件式が成立しない場合の命令>
}
このうち、{ … }となっている部分を「ブロック」と呼び、ブロックの中には複数の命令を書くことができます。3つ以上に分岐する場合には、elseに続くブロックの代わりに別のif文を書きます。
<1つ目の条件が成立する場合の命令>
}
else if (<2つ目の条件式>) {
<2つ目の条件が成立する場合の命令>
}
else if (<3つ目の条件式>) {
<3つ目の条件が成立する場合の命令>
}
…
else {
<全ての条件が成立しない場合の命令>
}
また、条件式では次のような値の比較を行えます。
Javaでの書き方 | 数学での書き方 | 意味 |
---|---|---|
a == b | a = b | aはbと等しい |
a != b | a ≠ b | aはbと等しくない |
a < b | a < b | aはbより小さい |
a > b | a > b | aはbより大きい |
a <= b | a ≦ b | aはbより小さいか、等しい (以下) |
a >= b | a ≧ b | aはbより大きいか、等しい (以上) |
他には、この条件式を組み合わせて複雑な条件式を表現する方法についても紹介しました。
Javaでの書き方 | 数学での書き方 | 意味 |
---|---|---|
A && B | A ∩ B | AかつB |
A || B | A ∪ B | AまたはB |
手続き
「手続き」の回では、命令のかたまりを「メソッド」として切り出して、プログラムを分割する方法について紹介しました。
package j1.review01; import javax.swing.JOptionPane; public class QuizMethod { public static void main(String[] args) { new QuizMethod().start(); } void start() { showQuiz("10 + 20 = ?", 30); showQuiz("リンゴの色は? (1) 青 (2) 赤", 2); showQuiz("うるう年の1年の日数は?", 366); } void showQuiz(String message, int correct) { String input = JOptionPane.showInputDialog(message); int answer = Integer.parseInt(input); if (answer == correct) { JOptionPane.showMessageDialog(null, "正解です"); } else { JOptionPane.showMessageDialog(null, "不正解です"); } } }
メソッドを利用するには、まず次の形で「メソッドの宣言」を書きます。
<命令>
}
このメソッドに含まれる{ <命令> }の部分をブロックと呼びます。このブロックに含まれる命令はいくつでもよく、それぞれ上から順に処理されます。これらの命令を実行するには、該当するメソッドを下記の形式で起動します。
すると、同じ名前を持つメソッドが起動し、それぞれの仮引数には対応する実引数の値が記憶されます。仮引数は通常の変数のように扱えますので、メソッドを起動する際に渡された値を、起動先のメソッドで利用できます。
達成度の確認
以下それぞれの項目について、問題ないか確認してみましょう。不安な要素があればそれぞれの回をさらに復習してください。
- 入出力処理を含むプログラムを作成できる
- 受講にあたって必要な手順を実践できる
- Eclipseを利用してプログラムを作成し、実行して挙動を確認できる
- 一般的なプログラムの構造を説明できる
- ダイアログに入力された文字列を簡単に修飾し、ダイアログ上に表示するプログラムを書ける
- 式と変数を利用するプログラムを作成できる
- int, double, String型のリテラルを利用したプログラムを書ける
- int, doubleの四則演算、Stringの結合を利用したプログラムを書ける
- int, double, String型の変数を宣言および初期化し、値を参照するプログラムを書ける
- 文字列をint, doubleに変換して利用するプログラムを書ける
- int, double, String型の変数に値を代入するプログラムを書ける
- 条件分岐を利用するプログラムを作成できる
- 3種の制御構造のうち、順次と分岐について説明できる
- 場合分けを行うプログラムを書ける
- 論理演算 (&&, ||) を利用したプログラムを書ける
- 一連の手続きをメソッドにまとめて、命令として利用するプログラムを作成できる
- 引数を伴う値を返さないメソッドを宣言し、任意のメソッドから起動するプログラムを書ける
- それぞれの変数の有効範囲(スコープ)を説明できる