-------------------------------------------------- /** * 9. (基本交換法) * 要素数10のint型配列aにデータが入っている。 * この配列要素を昇順に並べ替える。 * (参考:午前中のテキストp.62の基本交換法を使う) */ public class Quiz1609 { public static void main(String[] args) { int[] a = {50, 30, 90, 40, 100, 10, 20, 60, 80, 70, }; // 表示する System.out.print("整列前 = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // 整列する for (int i = 0; i for (int j = 0; j if (a[j] > a[j + 1]) { int w = a[j]; a[j] = a[j + 1]; a[j + 1] = w; } } } // 表示する System.out.print("整列後 = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); } } /* 実行結果 整列前 = [50, 30, 90, 40, 100, 10, 20, 60, 80, 70, ] 整列後 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, ] */ -------------------------------------------------- /** * 10. (基本選択法) * 要素数10のint型配列aにデータが入っている。 * この配列要素を昇順に並べ替える。 * (参考:午前中のテキストp.63の基本選択法を使う) */ public class Quiz1610 { public static void main(String[] args) { int[] a = {50, 30, 90, 40, 100, 10, 20, 60, 80, 70, }; // 表示する System.out.print("整列前 = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // 整列する for (int i = 0; i // 最大値を持つ添字を探す int maxIndex = 0; // 最大値を持つ添字 for (int j = 0; j if (a[j] > a[maxIndex]) { maxIndex = j; } } // 最大値を持つ添字を範囲の最後と交換する if (a[a.length - i - 1] int w = a[a.length - i - 1]; a[a.length - i - 1] = a[maxIndex]; a[maxIndex] = w; } } // 表示する System.out.print("整列後 = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); } } /* 実行結果 整列前 = [50, 30, 90, 40, 100, 10, 20, 60, 80, 70, ] 整列後 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, ] */ -------------------------------------------------- /** * 11. (基本挿入法) 要素数10のint型配列aにデータが入っている。 この配列要素を昇順に並べ替える。 * (参考:午前中のテキストp.63の基本挿入法を使う) */ public class Quiz1611 { public static void main(String[] args) { int[] a = {50, 30, 90, 40, 100, 10, 20, 60, 80, 70, }; // 表示する System.out.print("整列前 = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // 整列する for (int i = 1; i int w = a[i]; if (a[i - 1] > w) { // 挿入位置までずらす int j = i; for (j = i; (j > 0) && (a[j - 1] > w); j--) { a[j] = a[j - 1]; } a[j] = w; } } // 表示する System.out.print("整列後 = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); } } /* * 実行結果 整列前 = [50, 30, 90, 40, 100, 10, 20, 60, 80, 70, ] 整列後 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, ] */ -------------------------------------------------- /** * 12. (文字列探索 - 力まかせ探索法) char型配列textにデータが入っている。 * この文字配列textの中に、パターン文字列(char型配列pattern)を探索する。 * あった場合は、patternの先頭文字と一致するtextの添字を返す。 ない場合は、-1を返す。 * (参考:午前中のテキストp.66の力まかせ探索法を使う) */ public class Quiz1612 { public static void main(String[] args) { String textString = "PQACZXYZRXYZ"; char[] text = textString.toCharArray(); String patternString = "XYZ"; char[] pattern = patternString.toCharArray(); // 表示する System.out.println("テキスト = [" + textString + "]"); System.out.println("パターン = [" + patternString + "]"); // 探索する int index = -1; search: for (int i = 0; i <text.length - pattern.length + 1; i++) {
// パターンを後ろから見ていく int j; for (j = pattern.length - 1; (j >= 0) && (text[i + j] == pattern[j]); j--) { } // すべて一致すれば見つかった if (j <0) {
0) { i += k; } else { i += 1; } } // 結果を表示する System.out.print("index = " + index); } } /* * 実行例 テキスト = [PQACZXYZRXYZ] パターン = [XYZ] index = 5 * * テキスト = [PQACZXYZRXYZ] パターン = [XYZW] index = -1 */ --------------------------------------------------
1. 10個の要素を持つ配列a、bがある。 配列aの各要素をすべて配列bにコピーする。 2. 配列aの各要素を逆に配列bにコピーする。 a[0]→b[9]、a[1]→b[8]、・・・ a[9]→b[0] 3. 配列aの各要素を1つずらして、配列bにコピーする。 a[0]→b[1]、a[1]→b[2]、・・・ a[8]→b[9]、a[9]→b[0] 4. 配列aの各要素を逆にする。[オプション] a[0]⇔a[9]、a[1]⇔a[8]、・・・a[4]⇔a[5] 5. 配列aの各要素を1つずつずらす。[オプション] a[0]→a[1]→a[2]・・・ →a[9]→a[0] 6.配列DAYSには、つぎの初期値が順番に入っている。 int[] DAYS = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; これを使い、Quiz0705.java 「月(1~12)monthを入力して、その月の日数を表示する」 を改良する。 7. (線形探索) 要素数10のint型配列aにデータが入っている。 コマンドライン引数で、整数値を指定して、 その数値が配列要素にあるかどうか、 あれば、そのときの添字を表示する。 (参考:午前中のテキストp.58の線形探索) 8. (二分探索) 要素数10のint型配列aにデータが入っている。 このとき、要素の値は昇順に入っている。 コマンドライン引数で、整数値を指定して、 その数値が配列要素にあるかどうか、あれば、 そのときの添字を表示する。 (参考:午前中のテキストp.59の二分探索) 9. (基本交換法) 要素数10のint型配列aにデータが入っている。 この配列要素を昇順に並べ替える。 (参考:午前中のテキストp.62の基本交換法を使う) 10. (基本選択法) 要素数10のint型配列aにデータが入っている。 この配列要素を昇順に並べ替える。 (参考:午前中のテキストp.63の基本選択法を使う) 11. (基本挿入法) 要素数10のint型配列aにデータが入っている。 この配列要素を昇順に並べ替える。 (参考:午前中のテキストp.63の基本挿入法を使う) 12. (文字列探索 - 力まかせ探索法) char型配列textにデータが入っている。 この文字配列textの中に、パターン文字列 (char型配列pattern)を探索する。あった場 合は、patternの先頭文字と一致するtextの 添字を返す。ない場合は、-1を返す。 (参考:午前中のテキストp.66の力まかせ探索法を使う) (参考)Stringからchar配列を定義する例 String textString = "PQACZXYZRXYZ"; char[] text = textString.toCharArray(); 13. (文字列探索 - BM法) char型配列textにデータが入っている。 この文字配列textの中に、パターン文字列 (char型配列pattern)を探索する。あった場 合は、patternの先頭文字と一致するtextの 添字を返す。ない場合は、-1を返す。 (参考:午前中のテキストp.67のBM法を使う) (2次元配列) 21. Quiz0904で、じゃんけんの勝敗表(2次 元配列)をつくり、勝負するロジックを簡単 にする。 また、指定した手も、数字ではなく、日本語 表記(グー、チョキ、パー)で表示すること。 --------- ------- -------- -------- 勝敗表 0 グー 1 チョキ 2 パー --------- ------- -------- -------- 0 グー 引分け 勝ち 負け 1 チョキ 負け 引分け 勝ち 2 パー 勝ち 負け 引分け --------- ------- -------- -------- 22.金額を入力して、1000円でお釣りをもら う。お釣りの硬貨は最低枚数とする。 6×2の配列coinsの、2列目に、それぞれのお 釣りの枚数を入れるアルゴリズムを作る。 1列目には硬貨の種類があらかじめ入ってい るものとする。 ------- ---------- 硬貨 お釣り枚数 ------- ---------- [0] 1 [1] 5 [2] 10 [3] 50 [4] 100 [5] 500 ------- ---------- 23.重さに対する料金を出す。 6×2の配列の、1列目に重さ、2列目に料金が 入っている。 なお、重さは、下の表では以下をあらわす。 たとえば、200gに対しては、190円になる。 2000gより重い場合は、一律に2000円とする ------- ---- 重さ 料金 ------- ---- [0] 100 100 [1] 200 190 [2] 400 370 [3] 600 550 [4] 1000 900 [5] 2000 1700 ------- ---- -------------------------------------------------- /** * 10個の要素を持つ配列a、bがある。 * 配列aの各要素をすべて配列bにコピーする。 */ public class Quiz1601 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; int[] b = new int[a.length]; // 表示する。 System.out.print("a = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // コピーする。 for (int i = 0; i b[i] = a[i]; } // 表示する。 System.out.print("b = ["); for (int i = 0; i System.out.print(b[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を逆に配列bにコピーする。 * a[0]→b[9]、a[1]→b[8]、・・・ a[9]→b[0] */ public class Quiz1602 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; int[] b = new int[a.length]; // 表示する。 System.out.print("a = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // 逆順にコピーする。 for (int i = 0; i b[a.length - i - 1] = a[i]; } // 表示する。 System.out.print("b = ["); for (int i = 0; i System.out.print(b[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を1つずらして、配列bにコピーする。 * a[0]→b[1]、a[1]→b[2]、・・・ a[8]→b[9]、a[9]→b[0] */ public class Quiz1603 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; int[] b = new int[a.length]; // 表示する。 System.out.print("a = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // ずらしてコピーする。 for (int i = 0; i b[(i + 1) % b.length] = a[i]; } // 表示する。 System.out.print("b = ["); for (int i = 0; i System.out.print(b[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を逆にする。(オプション) * a[0]⇔a[9]、a[1]⇔a[8]、・・・a[4]⇔a[5] */ public class Quiz1604 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; // 表示する。 System.out.print("before = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // 逆にする。 for (int i = 0; i int w = a[i]; a[i] = a[a.length - i - 1]; a[a.length - i - 1] = w; } // 表示する。 System.out.print(" after = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を1つずつずらす。(オプション) * a[0]→a[1]→a[2]・・・ →a[9]→a[0] */ public class Quiz1605 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; // 表示する。 System.out.print("before = ["); for (int i = 0; i System.out.printf("%d, ", a[i]); } System.out.println("]"); // ずらす。 int w = a[a.length - 1]; for (int i = a.length - 1; i > 0; i--) { a[i] = a[i - 1]; } a[0] = w; // 表示する。 System.out.print(" after = ["); for (int i = 0; i System.out.printf("%d, ", a[i]); } System.out.println("]"); } } -------------------------------------------------- /** * 月(1~12)を指定して、その月の日数を表示する */ public class Quiz1606 { public static void main(String[] args) { int month = 6; // 月 int[] DAYS = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 結果を表示する System.out.println(month + " 月は " + DAYS[month - 1] + " 日です。"); } } /* 実行結果 6 月は 30 日です。 */ -------------------------------------------------- /** * 7. (線形探索) * 要素数10のint型配列aにデータが入っている。 * コマンドライン引数で、整数値を指定して、その数値が配列要素にあるかどうか、 * あれば、そのときの添字を表示する。 * (参考:午前中のテキストp.58の線形探索) */ public class Quiz1607 { public static void main(String[] args) { int key = Integer.parseInt(args[0]); int[] a = {50, 30, 90, 40, 100, 10, 20, 60, 80, 70, }; // 探索する int index = -1; for (int i = 0; i if (a[i] == key) { index = i; break; } } // 結果を表示する if (index >= 0) { System.out.println(key + " はありました。(index = " + index + ")"); } else { System.out.println(key + " はありませんでした。"); } } } /* 実行結果 >java Quiz1607 10 10 はありました。(index = 5) >java Quiz1607 50 50 はありました。(index = 0) >java Quiz1607 70 70 はありました。(index = 9) >java Quiz1607 55 55 はありませんでした。 */ -------------------------------------------------- /** * 7. (二分探索) * 要素数10のint型配列aにデータが入っている。このとき、要素の値は昇順に入っている。 * コマンドライン引数で、整数値を指定して、その数値が配列要素にあるかどうか、 * あれば、そのときの添字を表示する。 * (参考:午前中のテキストp.58の二分探索) */ public class Quiz1608 { public static void main(String[] args) { int key = Integer.parseInt(args[0]); int[] a = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, }; // 探索する int index = -1; int lowerIndex = 0; int upperIndex = a.length - 1; int middleIndex; while (lowerIndex <= upperIndex) {
middleIndex = (lowerIndex + upperIndex) / 2; if (a[middleIndex] <key) {
key) { upperIndex = middleIndex - 1; } else { index = middleIndex; break; } } // 結果を表示する if (index >= 0) { System.out.println(key + " はありました。(index = " + index + ")"); } else { System.out.println(key + " はありませんでした。"); } } } /* 実行結果 >java Quiz1608 10 10 はありました。(index = 0) >java Quiz1608 50 50 はありました。(index = 4) >java Quiz1608 100 100 はありました。(index = 9) >java Quiz1608 55 55 はありませんでした。 */ --------------------------------------------------
完全合格 応用情報技術者 午前問題集
http://ascii.asciimw.jp/books/books/detail/978-4-04-868358-6.shtml
著者: 林裕幸、末石吾朗、畠山弘行、野口庄一
定価:1,974円 (本体1,880円)
発売日:2010/07/09
形態:A5 (488ページ)
付属品:折込付録:解答用紙、解答一覧
ISBN:978-4-04-868358-6
http://ascii.asciimw.jp/books/books/detail/978-4-04-868358-6.shtml
著者: 林裕幸、末石吾朗、畠山弘行、野口庄一
定価:1,974円 (本体1,880円)
発売日:2010/07/09
形態:A5 (488ページ)
付属品:折込付録:解答用紙、解答一覧
ISBN:978-4-04-868358-6
1. 1から100までの偶数の合計を表示する 2. 1+2+・・・と足していき、 合計が100を越えた時点の合計値と、 そのときに足した数を表示する 3. ★を横に5個並べて表示する。 4. ★を縦に5個並べて表示する。 5. 変数aと変数bの最大公約数を表示する 6. 変数a (>=2)が素数かどうかを表示する (2重ループ) 7. ★を横に10個、縦に5個並べて表示する 8. ★を逆三角形の形で表示する ★★★★ ★★★ ★★ ★ (テキストサンプルのオプション) 9.リスト8-15の九九表の表示結果を桁揃えする (練習問題8のオプション) 10.問題2を2重ループを使って行う ------------------------------------------------------------ /** * 1から100までの偶数の合計を表示する */ public class Quiz0801 { public static void main(String[] args) { int sum = 0; // 合計 // 合計を計算する。 for (int i = 2; i <= 100; i = i + 2) { sum = sum + i; } // 表示する。 System.out.println("1 から 100 までの偶数の合計 = " + sum); } } ------------------------------------------------------------ /** * 1+2+・・・と足していき、合計が100を越えた時点の合計値と、そのときに足した数を表示する */ public class Quiz0802 { public static void main(String[] args) { int sum = 0; // 合計 int i = 1; // 計算する。 while (sum <= 100) { sum += i; i++; } // 表示する。 System.out.println("1 から " + (i - 1) + " までの合計 = " + sum); } } ------------------------------------------------------------ /** * ★を横に5個並べて表示する。 */ public class Quiz0803 { public static void main(String[] args) { // 表示する。 for (int i = 1; i <= 5; i++) { System.out.print("★"); } } } ------------------------------------------------------------ /** * ★を縦に5個並べて表示する。 */ public class Quiz0804 { public static void main(String[] args) { // 表示する。 for (int i = 1; i <= 5; i++) { System.out.print("★"); System.out.println(); } } } ------------------------------------------------------------ /** * 変数aと変数bの最大公約数を表示する */ public class Quiz0805 { public static void main(String[] args) { int a = 12; int b = 32; // 表示する。 System.out.println(); System.out.println("a = " + a + " , b = " + b); // 判定する。 int r; while ((r = a % b) != 0) { a = b; b = r; } // 表示する。 System.out.println("最大公約数 = " + b); } } ------------------------------------------------------------ /** * 変数a (>=2)が素数かどうかを表示する */ public class Quiz0806 { public static void main(String[] args) { int i; int a = 97; // 判定する。 for (i = 2; (i < a) && (a % i != 0); i++) { // for文の中は何も処理しない } // 表示する。 if (i < a) { System.out.println(a + " は素数ではありません。"); } else { System.out.println(a + " は素数です。"); } } } ------------------------------------------------------------ /** * ★を横に10個、縦に5個並べて表示する */ public class Quiz0807 { public static void main(String[] args) { // 表示する。 for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; j++) { System.out.print("★"); } System.out.println(); } } } ------------------------------------------------------------ /** * ★を逆三角形の形で表示する(4行分の三角形とし、全部で★は10個出る) */ public class Quiz0808 { public static void main(String[] args) { // 表示する。 for (int i = 4; i >= 1; i--) { for (int j = 1; j <= i; j++) { System.out.print("★"); } System.out.println(); } } } ------------------------------------------------------------ /** * 九九表を桁揃えして表示する *(リスト8-15の九九表の表示結果を桁揃えする) */ public class Quiz0809 { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { if ((i * j) <10) {<br> System.out.print(" "); } System.out.print(i * j); System.out.print(" "); } System.out.println(); } } } ------------------------------------------------------------ /** * *を三角形の形で表示する * (テキスト練習問題8-2を2重ループを使って実現する) */ public class Quiz0810 { public static void main(String[] args) { // 表示する。 for (int i = 1; i <= 10; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } } } ------------------------------------------------------------
■Quiz0701.java int型の変数a, bに適当な初期値を入れる。 変数aと変数bを小さい順に並べる。 ■Quiz0702.java int型の変数aに適当な初期値を入れる。 変数aの符号を「+」「0」「-」と表示する ■Quiz0703.java int型の変数a, b, cに適当な初期値を入れる。 変数aと変数b、変数cの最小値を表示する ■Quiz0704.java 西暦年yearを入力し、この西暦年がうるう年かどうかを表示する ・西暦年が4の倍数ならうるう年 ・上記の条件でも、100の倍数なら平年 ・上記の条件でも、400の倍数ならうるう年 どの条件にも当てはまらなければ平年 ■Quiz0705.java 月(1~12)monthを入力して、その月の日数を表示する ------------------------------------------------------------ /** * 変数aと変数bを小さい順に並べる */ public class Quiz0701 { public static void main(String[] args) { int a = 20; int b = 10; // 表示する System.out.println("並べ替え前:a = " + a + ", b = " + b); // 小さい順になるように入れ替える if (a > b) { int w = a; a = b; b = w; } // 表示する System.out.println("並べ替え後:a = " + a + ", b = " + b); } } ------------------------------------------------------------ /** * 変数aの符号を「+」「0」「-」と表示する */ public class Quiz0702 { public static void main(String[] args) { int a = 20; char sign; // 符号 // 符号を設定する if (a > 0) { sign = '+'; } else if (a == 0) { sign = '0'; } else { sign = '-'; } // 表示する System.out.println(a + " は " + sign + " です。"); } } ------------------------------------------------------------ /** * 変数aと変数b、変数cの最小値を表示する */ public class Quiz0703 { public static void main(String[] args) { int a = 20; int b = 5; int c = 10; int min; // 最小値 min = a; // a を最小値と仮定する // min と b の最小値を決める if (min > b) { min = b; } // min と c の最小値を決める if (min > c) { min = c; } // 表示する System.out.println(a + ", " + b + ", " + c + " の最小値は " + min + " です。"); } } ------------------------------------------------------------ /** * 西暦年を指定し、この西暦年がうるう年かどうかを表示する * 西暦年が4の倍数ならうるう年 * 上記の条件でも、100の倍数なら平年 * 上記の条件でも、400の倍数ならうるう年 * どの条件にも当てはまらなければ平年 */ public class Quiz0704 { public static void main(String[] args) { int year = 2010; // 西暦年 boolean leapYear; // うるう年かどうかのフラグ if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))) { leapYear = true; } else { leapYear = false; } // 結果を表示する if (leapYear) { System.out.println(year + " 年はうるう年です。"); } else { System.out.println(year + " 年は平年です。"); } } } ------------------------------------------------------------ /** * 月(1~12)を指定して、その月の日数を表示する */ public class Quiz0705 { public static void main(String[] args) { int month = 6; // 月 int day; // 日数 switch (month) { case 4: case 6: case 9: case 11: day = 30; break; case 2: day = 28; break; default: day = 31; break; } // 結果を表示する System.out.println(month + " 月は " + day + " 日です。"); } } ------------------------------------------------------------
■Quiz0601.java double型の変数widthとheightを宣言し、適当な初期値を入れ、 楕円の面積(width * height * 3.14 / 4)、 三角形の面積(width * height / 2)、 四角形の面積(width * height) を計算し、表示する。 ■Quiz0602.java BMI を計算し、表示する。変数はfloat型とする。 体重weight(kg) / 身長height(m)の2乗 ■Quiz0603.java 生まれてから今日で何秒経過したかをミリ秒で表示する。 1年は365.25日として計算する。 なお、結果はlong型として、小数点以下は四捨五入する。 ■Quiz0604.java int型の変数aに適当な初期値(正の整数)を入れる。 この変数aの値が何桁かを表示する。 (ヒント) 桁数は、数値を文字列にしたときの長さになる。 int型の変数aを文字列にする: Integer.toString(a) ■Quiz0605.java int型の変数aに適当な初期値を入れる。 aが偶数のときtrue、奇数のときfalseを表示する。 ---------------------------------------------------------- /** * double型の変数widthとheightを宣言し、適当な初期値を入れ、 * 楕円の面積(width * height * 3.14 / 4)、 * 三角形の面積(width * height / 2)、 * 四角形の面積(width * height) * を計算し、表示する。 */ public class Quiz0601 { public static void main(String[] args) { double width = 10; double height = 5; System.out.println("楕円 の面積 = " + (width * height * 3.14 / 4)); System.out.println("三角形の面積 = " + (width * height / 2)); System.out.println("四角形の面積 = " + (width * height)); } } /* 実行結果 楕円 の面積 = 39.25 三角形の面積 = 25.0 四角形の面積 = 50.0 */ ---------------------------------------------------------- ---------------------------------------------------------- /** * BMI を計算し、表示する。変数はfloat型とする。 * 体重 / 身長の2乗 */ public class Quiz0602 { public static void main(String[] args) { float weight = 55F; float height = 1.62F; System.out.println("BMI = " + (weight / (Math.pow(height, 2)))); } } /* 実行結果 BMI = 20.95717103956016 */ ---------------------------------------------------------- ---------------------------------------------------------- /** * 生まれてから今日で何秒経過したかをミリ秒で表示する。 * 1年は365.25日として計算する。 * なお、結果はlong型として、小数点以下は四捨五入する。 */ public class Quiz0603 { public static void main(String[] args) { long age; long time; age = 32; time = (long) ((age * 365.25 * 24 * 60 * 60 * 1000) + 0.5); // 別解 time = Math.round(age * 365.25 * 24 * 60 * 60 * 1000); System.out.println("あなたが生まれてから" + age + "年経ちました。"); System.out.println("これを秒ミリで表すと" + time + "ミリ秒です。"); } } /* 実行結果 あなたが生まれてから32年経ちました。 これをミリ秒で表すと1009843200000ミリ秒です。 */ ---------------------------------------------------------- ---------------------------------------------------------- /** * int型の変数aに適当な初期値(正の整数)を入れる。 * この変数aの値が何桁かを表示する。 * (ヒント) * 桁数は、数値を文字列にしたときの長さになる。 * int型の変数aを文字列にする: Integer.toString(a) */ public class Quiz0604 { public static void main(String[] args) { int a = 123456; String s = Integer.toString(a); System.out.println(a + " は " + s.length() + " 桁です。"); } } /* 実行結果 123456 は 6 桁です。 */ ---------------------------------------------------------- ---------------------------------------------------------- /** * int型の変数aに適当な初期値を入れる。 * aが偶数のときtrue、奇数のときfalseを表示する。 */ public class Quiz0605 { public static void main(String[] args) { int a = 123456; System.out.println(a + " は偶数? " + ((a % 2) == 0)); } } /* 実行結果 123456 は偶数? true */ ----------------------------------------------------------
■クイズ1 ------------------------------------------------------------ /** Quiz0501.java 円の面積(半径 * 半径 * 3.14)、 三角形の面積(底辺 * 高さ / 2)、 四角形の面積(幅 * 高さ) を計算し、表示する(値は適当に指定する) */ class Quiz0501 { public static void main(String[] args) { System.out.println("円 の面積 = " + (10 * 10 * 3.14)); System.out.println("三角形の面積 = " + (10 * 5 / 2.0)); System.out.println("四角形の面積 = " + (10 * 5)); } } /* 実行結果 C:src>java Quiz0501 円 の面積 = 314.0 三角形の面積 = 25.0 四角形の面積 = 50 */ ------------------------------------------------------------ ■クイズ2 ------------------------------------------------------------ /** Quiz0502.java BMI を計算し、表示する 体重(kg) / 身長(m)の2乗 */ class Quiz0502 { public static void main(String[] args) { System.out.println("BMI = " + (55 / (1.6 * 1.6))); } } /* 実行結果 C:src>java Quiz0502 BMI = 21.484374999999996 */ ------------------------------------------------------------
// 九九表を表示する class Kuku01 { public static void main(String args[]) { System.out.println(" 1 2 3 4 5 6 7 8 9"); System.out.println(" 2 4 6 8 10 12 14 16 18"); System.out.println(" 3 6 9 12 15 18 21 24 27"); System.out.println(" 4 8 12 16 20 24 28 32 36"); System.out.println(" 5 10 15 20 25 30 35 40 45"); System.out.println(" 6 12 18 24 30 36 42 48 54"); System.out.println(" 7 14 21 28 35 42 49 56 63"); System.out.println(" 8 16 24 32 40 48 56 64 72"); System.out.println(" 9 18 27 36 45 54 63 72 81"); /* for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.printf("%3d", (i * j)); } System.out.println(); } */ } }
<html> <head> <title>Q1</title> <!-- Q1. 整数を入力して、その値が負のときは、マイナスをかける。正のときは何もしない。 結果は表示する。 --> </head> <body> <script type="text/javascript"> num = Number(prompt ("数字を入力してください", 0)); if (num < 0) { num = -num; } document.write("結果 = " + num + "<br>"); </script> </body> </html> -------------------------------------------------------------------------------- <html> <head> <title>Q2</title> <!-- Q2. 整数を入力して、その符号を表示する。 表示は、「正」「負」でOK. --> </head> <body> <script type="text/javascript"> num = Number(prompt ("数字を入力してください", 0)); document.write(num + " は"); if (num >= 0) { document.write("正です。<br>"); } else { document.write("負です。<br>"); } </script> </body> </html> -------------------------------------------------------------------------------- <html> <head> <title>Q3</title> <!-- Q3. 整数を入力して、その値が0以上100以下にあるかどうかを表示する。 --> </head> <body> <script type="text/javascript"> num = Number(prompt ("数字を入力してください", 0)); document.write(num + " は"); if (0 <= num && num <= 100) { document.write("範囲内です。<br>"); } else { document.write("範囲外です。<br>"); } </script> </body> </html> -------------------------------------------------------------------------------- <html> <head> <title>Q4</title> <!-- Q4. ★を横に5個並べる --> </head> <body> <script type="text/javascript"> for (i = 1; i <= 5; i++) { document.write("★"); } </script> </body> </html> -------------------------------------------------------------------------------- <html> <head> <title>Q5</title> <!-- Q5. 1~5までの合計を計算して表示する (ループを使って計算) ヒント:合計を出す変数を使う --> </head> <body> <script type="text/javascript"> sum = 0; for (i = 1; i <= 5; i++) { sum += i; } document.write("合計 = " + sum); </script> </body> </html> --------------------------------------------------------------------------------
喫茶店。貴奈(きな)
http://www.kina-roppongi.com/
サンドイッチのセット。1050円。
店内が広い。天井が高い。ランプがいろいろある。
なかなか、雰囲気がよい。
また、ウェイターも親切。
http://www.kina-roppongi.com/
サンドイッチのセット。1050円。
店内が広い。天井が高い。ランプがいろいろある。
なかなか、雰囲気がよい。
また、ウェイターも親切。
カルクーベ
http://calqueve.com/
で、食べ歩きできるケーキを買う。
ワッフルコーンにケーキを詰めた、食べ歩けるスタイルの新しいケーキ。
いちごショートケーキ、チョコバナナクリーム、チーズケーキの3種類あり、3つ頼む。
好みでは、イチゴショートが一番よいかな。
名前の由来を聞いたところ、「軽く食う」だそうだ。
まあ、軽く食うには少々高い(399円)が。。。
「赤い彗星」という名のケーキもあり、ショーウィンドウの上には赤い彗星の模型が置いてあった。
「白い弾丸」?というのもあり、これも、ガンダムか?
でも、ワッフルコーンにケーキ詰めるのなら、アイスクリームも乗っているとよかったかもしれない。
http://calqueve.com/
で、食べ歩きできるケーキを買う。
ワッフルコーンにケーキを詰めた、食べ歩けるスタイルの新しいケーキ。
いちごショートケーキ、チョコバナナクリーム、チーズケーキの3種類あり、3つ頼む。
好みでは、イチゴショートが一番よいかな。
名前の由来を聞いたところ、「軽く食う」だそうだ。
まあ、軽く食うには少々高い(399円)が。。。
「赤い彗星」という名のケーキもあり、ショーウィンドウの上には赤い彗星の模型が置いてあった。
「白い弾丸」?というのもあり、これも、ガンダムか?
でも、ワッフルコーンにケーキ詰めるのなら、アイスクリームも乗っているとよかったかもしれない。
iPhoneアプリをおすすめするAppBank
http://www.appbank.net/michelin
iPhoneアプリのレビューサイト、AppVee
http://www.appvee.com/
The Best iPhone Apps Of 2009 (Appvee Edition)
http://techcrunch.com/2009/12/27/best-iphone-apps-2009-appvee/
http://www.appbank.net/michelin
iPhoneアプリのレビューサイト、AppVee
http://www.appvee.com/
The Best iPhone Apps Of 2009 (Appvee Edition)
http://techcrunch.com/2009/12/27/best-iphone-apps-2009-appvee/
年末に、
サイボーグ009 怪獣戦争 劇場版、1967
http://www.tsutaya.co.jp/works/10017082.html
をレンタルで見たが、このとき、ドルフィン号で海上を行く009たちと、
「レインボー戦隊ロビン」とすれ違うシーンがあった。
「レインボー戦隊ロビン」も見てみたい、ということで、DVDを探したが、
ない。
単体で、4話分入っているDVDはあったが、売り切れ。
結局、この単体の4話分のDVDが入っているボックス
東映アニメモノクロ傑作撰vol.2
を買う。
内容は、以下のとおり。
宇宙パトロールホッパ
第1話:宇宙少年ジュン
第14話:チビッコ政府誕生
第21話:太陽の子ライマン
第27話:お母さんは地球星
レインボー戦隊ロビン
第1話:怪星人現る!
第6話:宇宙にかける虹
第26話:パルタ星最后の日
第28話:リリにおまかせ
海賊王子
第1話:南海の王子
第14話:海賊同盟
第28話:トンダ海峡を突破せよ
第31話:海賊旗よ永遠に
「レインボー戦隊ロビン」は、懐かしい。ロビンも、第1話からからみると、
第28話は相当成長している感じだ。話の内容はあまり覚えていないが、
「教授」や「ベル」は覚えている。
4話分を見て、ますます、レインボー戦隊ロビンを見たくなった。
DVDで出してくれないかしらん。LDでは出ているみたい。でも、LDはいまさ
ら買う気はないが、DVDが出たら、きっと買うだろう。
「宇宙パトロールホッパ」も、不思議だが、ホッパ人については覚えてい
る。というよりも、初期のオープニングは記憶にある。再放送やったのか
な。
「海賊王子」は、見ていなかったと思う。この中では一番新しいものだが、
まったく記憶にないので。主人公のキッドの声を、星飛雄馬やアムロの古
谷徹が子供のころやっていた、ということで、けっこう興味深い。第1話と
第31話では明確に声が違い、これが、声変わりした結果か、と思っていた
が、実は、最初のころは古谷徹がキッドの声ではなかったみたい。
海賊王子が、上の3つの中では一番新しいためか、絵やストーリーがしっか
りしている印象。
サイボーグ009 怪獣戦争 劇場版、1967
http://www.tsutaya.co.jp/works/10017082.html
をレンタルで見たが、このとき、ドルフィン号で海上を行く009たちと、
「レインボー戦隊ロビン」とすれ違うシーンがあった。
「レインボー戦隊ロビン」も見てみたい、ということで、DVDを探したが、
ない。
単体で、4話分入っているDVDはあったが、売り切れ。
結局、この単体の4話分のDVDが入っているボックス
東映アニメモノクロ傑作撰vol.2
を買う。
内容は、以下のとおり。
宇宙パトロールホッパ
第1話:宇宙少年ジュン
第14話:チビッコ政府誕生
第21話:太陽の子ライマン
第27話:お母さんは地球星
レインボー戦隊ロビン
第1話:怪星人現る!
第6話:宇宙にかける虹
第26話:パルタ星最后の日
第28話:リリにおまかせ
海賊王子
第1話:南海の王子
第14話:海賊同盟
第28話:トンダ海峡を突破せよ
第31話:海賊旗よ永遠に
「レインボー戦隊ロビン」は、懐かしい。ロビンも、第1話からからみると、
第28話は相当成長している感じだ。話の内容はあまり覚えていないが、
「教授」や「ベル」は覚えている。
4話分を見て、ますます、レインボー戦隊ロビンを見たくなった。
DVDで出してくれないかしらん。LDでは出ているみたい。でも、LDはいまさ
ら買う気はないが、DVDが出たら、きっと買うだろう。
「宇宙パトロールホッパ」も、不思議だが、ホッパ人については覚えてい
る。というよりも、初期のオープニングは記憶にある。再放送やったのか
な。
「海賊王子」は、見ていなかったと思う。この中では一番新しいものだが、
まったく記憶にないので。主人公のキッドの声を、星飛雄馬やアムロの古
谷徹が子供のころやっていた、ということで、けっこう興味深い。第1話と
第31話では明確に声が違い、これが、声変わりした結果か、と思っていた
が、実は、最初のころは古谷徹がキッドの声ではなかったみたい。
海賊王子が、上の3つの中では一番新しいためか、絵やストーリーがしっか
りしている印象。
CanonのプリンターMP520を使っている。
白黒印刷で、黒インクが残っているのに、カラーインクの分がなくなると
印刷できない。
不思議だ。
上記から考えると当然なのだが、ここ数ヶ月は白黒印刷しかしていないのに、
カラーインクが減る。
なぜだろう。
ちなみに、MP520 は、黒・シアン・マゼンダ・イエローの4色のインクを
使っているタイプ。
白黒印刷で、黒インクが残っているのに、カラーインクの分がなくなると
印刷できない。
不思議だ。
上記から考えると当然なのだが、ここ数ヶ月は白黒印刷しかしていないのに、
カラーインクが減る。
なぜだろう。
ちなみに、MP520 は、黒・シアン・マゼンダ・イエローの4色のインクを
使っているタイプ。
ふとしたことから、また、
「プログラミング作法」
Brian W.Kernighan・Rob Pike著/福崎俊博訳
2000年
http://www.ascii.co.jp/books/books/detail/4-7561-3649-4.shtml
を読む。
参考までに最後のルール集を記しておく。
スタイル
- グローバルにはわかりやすい名前を、ローカルには短い名前を
- 統一しよう
- 関数には能動的な名前を
- 名前は的確に
- 構造がわかるようにインデントをしよう
- 自然な形の式を使おう
- かっこを使ってあいまいさを解消しよう
- 複雑な式は分割しよう
- 明快に書こう
- 副作用に注意
- インデントとブレースのスタイルを統一しよう
- 慣用句によって一貫性を確保しよう
- 他分岐の判定には else-if を使おう
- 関数マクロはなるべく使うな
- マクロの本体と引数はかっこに入れよう
- マジックナンバーには名前をつけよう
- 数値はマクロでなく定数名として定義しよう
- 数値でなく文字定数を使おう
- オブジェクトサイズは言語に計算させよう
- 当たり前のことをいちいち書くな
- 関数とグローバルデータにコメントを
- 悪いコードにコメントをつけるな、書き直せ
- コードと矛盾させるな
- あくまでも明快に、混乱を招くな
- 実装の詳細を隠蔽しよう
- 直交性のある小さなプリミティブセットを選択しよう
- ユーザーに内緒で何かをするな
- 同じことはどこでも同じように実行しよう
- リソースの開放は割り当てと同じレイヤで
- エラーの検出は低いレベルで、その処理は高いレベルで
- 例外は例外的な状況にのみ使用しよう
デバッグ
- おなじみのパターンを見つけよう
- 最新の変更点は要チェック
- 同じ間違いを繰り返すな
- デバッグは今すぐに
- スタックトレースを取得しよう
- 打つ前に読め
- 自分のコードを他人に説明してみよう
- バグを再現できるようにしよう
- 分割統治しよう
- 誤動作を「数字占い」で検証しよう
- 出力表示によってバグ探索範囲を狭めよう
- 自己検証コードを記述しよう
- ログファイルを出力しよう
- 作図しよう
- ツールを使おう
- 記録をとろう
テスト
- 境界をテストしよう
- 事前と事後の状態をテストしよう
- アサーションを使おう
- プログラミングは防御的に
- エラーの戻り値をチェックしよう
- テストはインクリメンタルに
- テストは単純な部品から
- 期待される出力を把握しておこう
- 保存される性質を検証しよう
- 独立した実装同士を比較しよう
- テストの網羅範囲を測定しよう
- 回帰テストを自動化しよう
- 自給自足テストを作成しよう
性能
- 時間計測を自動化しよう
- プロファイラを利用しよう
- ホットスポットに神経を集中しよう
- 作図しよう
- より優れたアルゴリズムやデータ構造を利用しよう
- コンパイラの最適化を有効に
- コードをチューニングしよう
- 関係ない部分を最適化するな
- 共通する式をまとめよう
- 高価な処理を案化な処理に置き換えよう
- ループは展開するか除去しよう
- 頻繁に使われる値をキャッシュしよう
- 専用のアロケータを書こう
- 入力と出力をバッファリングしよう
- 特別なケースは別個に処理しよう
- 結果を事前に計算しておこう
- 近似値を使おう
- より低級な言語で書き直そう
- できる限り小さなデータ型を使って領域を節約しよう
- 簡単に再計算できるものを記憶するな
移植性
- 標準に固執しよう
- 王道のプログラミングをしよう
- 言語のトラブルスポットに気をつけよう
- 複数のコンパイラで試してみよう
- 標準ライブラリを使おう
- どこでも利用できる機能だけ使おう
- 条件コンパイルは避けよう
- システム依存のコードは別個のファイルに
- システム依存部分はインターフェースの裏に隠蔽しよう
- データ交換にはテキストを
- データ交換には固定のバイト順を使おう
- 仕様を変えるなら名前を変えよう
- 既存のプログラムやデータとの互換性を維持しよう
- ASCIIを前提にするな
- 英語を前提にするな
これも参考。
プログラミング作法 - Wikipedia
http://ja.wikipedia.org/wiki/プログラミング作法
「プログラミング作法」
Brian W.Kernighan・Rob Pike著/福崎俊博訳
2000年
http://www.ascii.co.jp/books/books/detail/4-7561-3649-4.shtml
を読む。
参考までに最後のルール集を記しておく。
スタイル
- グローバルにはわかりやすい名前を、ローカルには短い名前を
- 統一しよう
- 関数には能動的な名前を
- 名前は的確に
- 構造がわかるようにインデントをしよう
- 自然な形の式を使おう
- かっこを使ってあいまいさを解消しよう
- 複雑な式は分割しよう
- 明快に書こう
- 副作用に注意
- インデントとブレースのスタイルを統一しよう
- 慣用句によって一貫性を確保しよう
- 他分岐の判定には else-if を使おう
- 関数マクロはなるべく使うな
- マクロの本体と引数はかっこに入れよう
- マジックナンバーには名前をつけよう
- 数値はマクロでなく定数名として定義しよう
- 数値でなく文字定数を使おう
- オブジェクトサイズは言語に計算させよう
- 当たり前のことをいちいち書くな
- 関数とグローバルデータにコメントを
- 悪いコードにコメントをつけるな、書き直せ
- コードと矛盾させるな
- あくまでも明快に、混乱を招くな
- 実装の詳細を隠蔽しよう
- 直交性のある小さなプリミティブセットを選択しよう
- ユーザーに内緒で何かをするな
- 同じことはどこでも同じように実行しよう
- リソースの開放は割り当てと同じレイヤで
- エラーの検出は低いレベルで、その処理は高いレベルで
- 例外は例外的な状況にのみ使用しよう
デバッグ
- おなじみのパターンを見つけよう
- 最新の変更点は要チェック
- 同じ間違いを繰り返すな
- デバッグは今すぐに
- スタックトレースを取得しよう
- 打つ前に読め
- 自分のコードを他人に説明してみよう
- バグを再現できるようにしよう
- 分割統治しよう
- 誤動作を「数字占い」で検証しよう
- 出力表示によってバグ探索範囲を狭めよう
- 自己検証コードを記述しよう
- ログファイルを出力しよう
- 作図しよう
- ツールを使おう
- 記録をとろう
テスト
- 境界をテストしよう
- 事前と事後の状態をテストしよう
- アサーションを使おう
- プログラミングは防御的に
- エラーの戻り値をチェックしよう
- テストはインクリメンタルに
- テストは単純な部品から
- 期待される出力を把握しておこう
- 保存される性質を検証しよう
- 独立した実装同士を比較しよう
- テストの網羅範囲を測定しよう
- 回帰テストを自動化しよう
- 自給自足テストを作成しよう
性能
- 時間計測を自動化しよう
- プロファイラを利用しよう
- ホットスポットに神経を集中しよう
- 作図しよう
- より優れたアルゴリズムやデータ構造を利用しよう
- コンパイラの最適化を有効に
- コードをチューニングしよう
- 関係ない部分を最適化するな
- 共通する式をまとめよう
- 高価な処理を案化な処理に置き換えよう
- ループは展開するか除去しよう
- 頻繁に使われる値をキャッシュしよう
- 専用のアロケータを書こう
- 入力と出力をバッファリングしよう
- 特別なケースは別個に処理しよう
- 結果を事前に計算しておこう
- 近似値を使おう
- より低級な言語で書き直そう
- できる限り小さなデータ型を使って領域を節約しよう
- 簡単に再計算できるものを記憶するな
移植性
- 標準に固執しよう
- 王道のプログラミングをしよう
- 言語のトラブルスポットに気をつけよう
- 複数のコンパイラで試してみよう
- 標準ライブラリを使おう
- どこでも利用できる機能だけ使おう
- 条件コンパイルは避けよう
- システム依存のコードは別個のファイルに
- システム依存部分はインターフェースの裏に隠蔽しよう
- データ交換にはテキストを
- データ交換には固定のバイト順を使おう
- 仕様を変えるなら名前を変えよう
- 既存のプログラムやデータとの互換性を維持しよう
- ASCIIを前提にするな
- 英語を前提にするな
これも参考。
プログラミング作法 - Wikipedia
http://ja.wikipedia.org/wiki/プログラミング作法