Java と C/C++
ご意見・ご質問(@を半角に変換)
totomi.kuni.mahoroba.00@gmail.com
- Java についての解説ですが,適宜,C/C++ との比較も行っています.プログラミングに対する初心者を対象として記述していくつもりですが,十分ではないかもしれません.Java について学習し,ゲームを作成したいと考えている人は,ゲームの作成を通して Java について学ぶのも一つの方法かと思います(「ゲームプログラミング」参照).また,C/C++ に関しては,「 C/C++ 言語」もご利用下さい.本文中のプログラム例・演習問題のほとんどの部分(第Ⅳ部における Window の生成・消滅や描画に関する箇所は除く)は,「 C/C++ 言語」と共通のものを使用しています.
- 付録 : Java のクラスとメソッド(検索機能はこのページのものと同じ)
- Java 概説 : Java に対する概説.既に他の言語に精通している方はここを読むだけで十分かもしれません.
目次
- はじめに
第Ⅰ部 コンピュータと言語
- 第1章 コンピュータ入門
- 1.1 コンピュータの構造と動作
- 1.2 情報の表現
- 1.2.1 2 進数
- 1.2.2 10 進数から 2 進数への変換
- 1.2.3 数値の表現
- 1.2.3.1 整数の表現
- 1.2.3.2 浮動小数の表現
- 1.2.4 文字の表現
- 演習問題1
- 第2章 プログラム作成手順
- 2.1 アルゴリズム
- 2.2 コーディング
- 2.3 コンパイルと実行
- 演習問題2
- 第3章 簡単なプログラム
- 3.1 プログラムの書き方
- 3.1.1 基本原則
- 3.1.2 わかりやすいプログラム
- 3.2 データ型
- 3.2.1 定数
- 3.2.2 変数
- 3.2.3 列挙型変数
- 3.3 算術演算子と代入演算子
- 3.3.1 算術演算子
- 3.3.2 代入演算子
- 3.3.3 インクリメント,デクリメント演算子
- 3.3.4 型変換( cast 演算子)
- 3.4 簡単なプログラム
- (プログラム例 3.1 ) 2 つのデータの和と差
- (プログラム例 3.2 ) 2 つのデータの和と差( Console クラスの利用)
- (プログラム例 3.3 ) 2 つのデータの和と差( 1 行に 2 つ以上のデータ,StringTokenizer )
- (プログラム例 3.4 ) 2 つのデータの和と差( 1 行に 2 つ以上のデータ,split )
- (プログラム例 3.5 ) 2 つのデータの和と差( 1 行に 2 つ以上のデータ,Scanner )
- 3.5 その他
- 3.5.1 キーワード
- 3.5.2 アスキーコード
- 3.5.3 エスケープシーケンス
- 演習問題3
- 第4章 演算子
- 4.1 関係演算子,等値演算子,及び,論理演算子
- (プログラム例 4.1 ) 関係式と論理式
- 4.2 ビット演算子とシフト演算子
- (プログラム例 4.2 ) ビット演算とシフト演算
- 4.3 その他の演算子
- 演習問題4
- 第5章 制御文
- 5.1 分岐
- 5.1.1 if 文
- (プログラム例 5.1 ) 円周と面積の計算
- (プログラム例 5.2 ) 坪・m2 間の単位変換
- (プログラム例 5.3 ) 3 つのデータの最大値と最小値
- (プログラム例 5.4 ) データの比較
- 5.1.2 switch 文
- (プログラム例 5.5 ) データの比較( switch 文)
- 5.2 繰り返し
- 5.2.1 繰り返し文
- (プログラム例 5.6 ) 平均値の計算
- (プログラム例 5.7 ) ファイル入出力
- (プログラム例 5.8 ) for 文のネスト
- (プログラム例 5.9 ) 入力の繰り返し( do-while )
- (プログラム例 5.10 ) 最大値(初期設定)
- 5.2.2 繰り返しの中断
- 5.2.2.1 break 文
- (プログラム例 5.11 ) 繰り返しの中断( break )
- 5.2.2.2 continue 文
- (プログラム例 5.12 ) 繰り返しの中断( continue )
- 5.3 変数の有効範囲
- (プログラム例 5.13 ) 変数の有効範囲
- 演習問題5
- 第6章 配列
- 6.1 new 演算子と配列
- 6.1.1 new 演算子
- 6.1.2 1 次元配列
- (プログラム例 6.1 ) 平均値と平均値以下の人の出力
- (プログラム例 6.2 ) 平方根の計算とファイルへの出力
- (プログラム例 6.3 ) 大文字から小文字への変換
- 6.1.3 多次元配列
- (プログラム例 6.4 ) 多次元配列
- 6.2 配列とポインタ
- (プログラム例 6.5 ) 1 次元配列,初期設定,及び,ポインタ
- (プログラム例 6.6 ) 多次元配列,初期設定,及び,ポインタ
- (プログラム例 6.7 ) new 演算子と代入・初期化
- 演習問題6
- 第7章 クラスとメソッド
- 7.1 メソッド
- (プログラム例 7.1 ) 階乗の計算
- (プログラム例 7.2 ) 階乗の計算(関数の利用)
- (プログラム例 7.3 ) 階乗の計算(再帰呼び出し)
- (プログラム例 7.4 ) nCrの計算
- 7.2 クラス
- (プログラム例 7.5 ) クラス宣言とメンバーの参照( C/C++ との違い)
- (プログラム例 7.6 ) private 変数
- (プログラム例 7.7 ) 静的変数・メソッドとインスタンス変数・メソッド
- 7.3 コンストラクタ
- (プログラム例 7.8 ) コンストラクタ
- 7.4 メソッドとのデータの受け渡し
- (プログラム例 7.9 ) 様々なデータ型の引き渡し
- (プログラム例 7.10 ) 複数結果の受け取り
- (プログラム例 7.11 ) メソッド名の引き渡し
- 7.5 main メソッド
- (プログラム例 7.12 ) main メソッドの引数(数字の和)
- 7.6 パッケージ
- (プログラム例 7.13 ) パッケージ
- 7.7 いくつかの例
- (プログラム例 7.14 ) プラントモデル
- (プログラム例 7.15 ) ベクトルの内積と大きさ
- (プログラム例 7.16 ) リスト構造
- (プログラム例 7.17 ) ソート(並べ替え)
- (プログラム例 7.18 ) カレンダー
- (プログラム例 7.19 ) 基本アルゴリズム(その1)
- (プログラム例 7.20 ) 基本アルゴリズム(その2)
- 演習問題7
- 第8章 継承
- 8.1 継承
- (プログラム例 8.1 ) 継承の基本
- (プログラム例 8.2 ) フレームの表現
- 8.2 抽象クラス
- (プログラム例 8.3 ) 抽象クラス
- 8.3 インタフェース
- (プログラム例 8.4 ) インタフェース
- 演習問題8
- 第9章 その他
- 9.1 例外処理
- (プログラム例 9.1 ) 例外処理
- 9.2 マルチスレッド
- (プログラム例 9.2 ) マルチスレッド
- 第10章 クラスライブラリ
- 10.1 入出力クラス
- 10.1.1 標準入出力
- (プログラム例 10.1 ) 標準入出力
- 10.1.2 書式付き入出力
- (プログラム例 10.2 ) 書式付き出力
- 10.1.3 ファイル入出力
- (プログラム例 10.3 ) ファイル入出力
- 10.2 java.util パッケージ内のクラス
- (プログラム例 10.4 ) ファイル入出力( ArrayList クラス)
- 10.3 Math クラス
- 演習問題10
第11章 プログラム例:数値計算とその周辺
- 11.1 はじめに
- 11.2 数値計算
- (プログラム例 11.1 ) 連立線形方程式,逆行列(ガウス・ジョルダン)
- (プログラム例 11.2 ) 非線形方程式(二分法)
- (プログラム例 11.3 ) 非線形方程式(セカント法)
- (プログラム例 11.4 ) 非線形方程式(ニュートン法)
- (プログラム例 11.5 ) 代数方程式(ベアストウ)
- (プログラム例 11.6 ) 行列の固有値(フレーム法+ベアストウ法)
- (プログラム例 11.7 ) 実対称行列の固有値・固有ベクトル(ヤコビ法)
- (プログラム例 11.8 ) 最大固有値と固有ベクトル(べき乗法)
- (プログラム例 11.9 ) 数値積分(台形則)
- (プログラム例 11.10 ) 数値積分(シンプソン則)
- (プログラム例 11.11 ) 微分方程式(ルンゲ・クッタ)
- (プログラム例 11.12 ) 補間法(ラグランジュ)
- (プログラム例 11.13 ) 補間法(スプライン)
- (プログラム例 11.14 ) 補間法(ベジエ曲線)
- 11.3 最適化
- (プログラム例 11.15 ) 最適化(線形計画法)
- (プログラム例 11.16 ) 最適化(黄金分割法)
- (プログラム例 11.17 ) 最適化(多項式近似法)
- (プログラム例 11.18 ) 最適化(最急降下法)
- (プログラム例 11.19 ) 最適化(共役勾配法)
- (プログラム例 11.20 ) 最適化( Newton 法)
- (プログラム例 11.21 ) 最適化(準 Newton 法)
- (プログラム例 11.22 ) 最適化(シンプレックス法)
- (プログラム例 11.23 ) 最適化(動的計画法)
- (プログラム例 11.24 ) 巡回セールスマン問題(分割法)
- (プログラム例 11.25 ) 巡回セールスマン問題(逐次改善法)
- (プログラム例 11.26 ) 遺伝的アルゴリズム( TSP,関数の最大値への応用)
- 11.4 確率と統計
- (プログラム例 11.27 ) ガンマ関数
- (プログラム例 11.28 ) 二項分布
- (プログラム例 11.29 ) ポアソン分布
- (プログラム例 11.30 ) 一様分布
- (プログラム例 11.31 ) 指数分布
- (プログラム例 11.32 ) 正規分布
- (プログラム例 11.33 ) χ2 分布
- (プログラム例 11.34 ) t 分布
- (プログラム例 11.35 ) F 分布
- (プログラム例 11.36 ) Fisher の直接確率
- 11.5 モンテカルロ法
- (プログラム例 11.37 ) 乱数の発生
- (プログラム例 11.38 ) 待ち行列(簡単な例)
- (プログラム例 11.39 ) 待ち行列(複雑な例)
- 11.6 多変量解析
- (プログラム例 11.40 ) 最小二乗法
- (プログラム例 11.41 ) 重回帰分析
- (プログラム例 11.42 ) 正準相関分析
- (プログラム例 11.43 ) 主成分分析
- (プログラム例 11.44 ) 因子分析
- (プログラム例 11.45 ) クラスター分析
- (プログラム例 11.46 ) 分散分析
- 11.7 ニューラルネットワーク
- (プログラム例 11.47-0 ) Hopfield ネットワーク
- (プログラム例 11.47 ) パーセプトロン学習
- (プログラム例 11.48 ) Winner-Take-All
- (プログラム例 11.49 ) 競合学習
- (プログラム例 11.50 ) バックプロパゲーション
- 11.8 その他
- (プログラム例 11.51 ) ファジイ推論
- (プログラム例 11.52 ) 伝達関数(ゲインと位相の計算)
- 第12章 Network プログラミング
- 12.1 ソケットの利用
- (プログラム例 12.1 ) HTTP ポート
- (プログラム例 12.2 ) ファイルの転送
- (プログラム例 12.3 ) チャットルーム
- 第13章 Windows プログラミング
- 13.1 Window の生成・消滅とイベント処理
- 13.1.1 Window の生成
- (プログラム例 13.1 ) Window の生成
- 13.1.2 JAR ファイル
- 13.1.3 イベント処理
- (プログラム例 13.2 ) Window の消滅とイベント処理
- (プログラム例 13.3 ) マウスイベント
- 13.2 AWT,Swing とグラフィックス
- 13.2.1 AWT と Swing
- (プログラム例 13.4 ) ラジオボタン,チェックボックス,ドロップダウンリスト
- (プログラム例 13.5 ) 2 つの整数の和
- 13.2.2 グラフィックス
- (プログラム例 13.6 ) 描画の基本
- 13.3 アニメーション
- 13.3.1 アニメーションの開始と停止
- (プログラム例 13.7 ) アニメーションの開始と停止
- 13.3.2 アニメーション作成方法
- (プログラム例 13.8 ) ボールの運動(描画)
- (プログラム例 13.9 ) ボールの運動(外部の 1 画像)
- (プログラム例 13.10 ) ランニング(外部の複数画像)
- (プログラム例 13.11 ) 花火(ピクセル値の操作)
- 13.4 様々な例題
- 13.4.1 パズル & ゲーム
- (プログラム例 13.12 ) 8 / 15 パズル
- (プログラム例 13.13 ) 巡回セールスマン問題( TSP )
- (プログラム例 13.14 ) シューティング風ゲームと作成手順
- (プログラム例 13.15 ) ぷよぷよ風ゲームと作成手順
- 13.4.2 グラフの表示
- (プログラム例 13.16 ) グラフの表示
- 13.4.3 遺伝的アルゴリズム
- (プログラム例 13.17 )GA のステップ実行
- 13.4.4 お絵かき
- (プログラム例 13.18 ) マウスによる描画
- 13.4.5 その他
- (プログラム例 13.19 ) 2次方程式の根
- (プログラム例 13.20 ) 剛体振り子の運動
- (プログラム例 13.21 ) マニピュレータと LED の点灯制御
- 演習問題13