Turtle Cafe 2
>>
Turtle Cafe 2
Version 2.2.3 For 静大プログラミング2013
2013/12/17
Yoshiaki Matsuzawa
http://www.inf.shizuoka.ac.jp/
目次
1 Javaプログラミング入門
1 論プロエディタでJavaプログラムを動かしてみよう
1.1 学習目標
1.2 環境のインストール
1.2.1 JDKのインストール
1.2.1.1 JDKがインストールされているか調べる
1.2.1.2 JDKのインストール
1.2.2 論プロエディタのインストール
1.3 論プロエディタの基本的な使い方
1.3.1 論プロエディタの基本
1.3.1.1 起動の仕方
1.3.1.2 各部名称・機能
1.3.1.3 リソース
1.3.2 プログラム作成の流れ
1.3.2.1 プログラムの編集
1.3.2.2 コンパイル
1.3.2.3 実行
1.4 発展的な使い方
1.4.1 サンプルプログラムの使い方
1.4.1.1 サンプルプログラムの使い方
1.4.1.2 リソースとファイルシステムの関係
1.4.2 その他の機能
1.4.3 ショートカットキー
2 はじめてのJavaタートルプログラミング
2.1 学習目標
2.2 最初のプログラムの解説
2.2.1 家を書くサンプルプログラム
2.2.2 プログラムの要素
2.2.2.1 ブロック
2.2.2.2 クラス
2.2.2.3 メソッド
2.2.2.4 命令
2.2.2.5 命令の区切り
2.2.2.6 コメント
2.3 プログラムの作成手順
2.3.1 ファイルの作成
2.3.2 プログラムの書き方
2.4 プログラムミスと対処
2.4.1 コンパイルエラー
2.4.2 バグ
2.5 タートルを使って好きな図形を書くためのテクニック
2.5.1 曲線が書きたい
2.5.2 タートルの最初の位置を変えたい
2.6 練習問題
2.6.1 正五角形描こう
2.6.2 星を描こう
2.6.3 こんぺいとうを描こう
2.6.4 トライフォースを描こう
2.6.5 好きな図形を描こう
3 コンピュータに情報を記憶させてみよう(変数)
3.1 学習目標
3.2 変数
3.2.1 変数と値
3.2.2 変数を使ったプログラムの実行
3.2.2.1 変数の宣言
3.2.2.2 変数へ値を代入する
3.2.2.3 変数を評価して値にする
3.2.3 複数の変数と変数名
3.2.3.1 複数の変数と変数名
3.2.3.2 プログラムの実行過程
3.3 コンピュータに計算をさせる
3.3.1 計算式を使ったプログラム
3.3.2 計算式を使ったプログラムの実行
3.3.3 計算式と代入文を使ったプログラムの実行
3.4 ユーザと対話する(インタラクティブ)なプログラム
3.4.1 入力を受け付ける
3.4.2 ユーザにメッセージを出す
3.5 おみくじ
3.5.1 乱数
3.6 練習問題
3.6.1 与えられた大きさの正五角形を描くプログラム
3.6.2 乱数を使って星を描くプログラム
4 プログラムに知性を(条件分岐)
4.1 学習目標
4.2 条件分岐を使う
4.2.1 条件分岐
4.2.2 条件式の評価
4.2.2.1 成立(true)する場合
4.2.2.2 不成立(false)する場合
4.2.2.3 注意すること
4.2.3 複数の分岐
4.2.3.1 じゃんけんプログラム
4.2.3.2 じゃんけんの手のデータの扱いについて
4.2.3.3 複数の条件分岐
4.3 いろいろな条件式
4.3.1 比較演算子
4.3.2 論理演算子
4.3.2.1 論理演算子の評価の過程
And演算子が成立(true)する場合
And演算子が不成立(false)する場合
4.4 変数のスコープ(有効範囲)
4.5 練習問題
4.5.1 絵の描き分けプログラムを作ろう
4.5.2 おみくじプログラムを作ろう
4.5.3 評点グレード変換プログラムを作ろう
5 コンピュータの得意な仕事(繰り返し)
5.1 学習目標
5.2 繰り返し
5.2.1 何を繰り返すのか
5.2.2 繰り返しを使ったプログラム
5.2.2.1 プログラムのフローチャート
5.2.2.2 繰り返しのフローチャート
5.2.3 繰り返しを使ったプログラムの実行過程
5.2.3.1 変数の宣言
5.2.3.2 変数を初期化する(1を代入)
5.2.3.3 変数を評価して条件を判定する
5.2.3.4 変数に1を加える
5.3 応用:円を書くプログラム
5.3.1 円を書きつづけるプログラム
5.4 練習問題
5.4.1 円を描くプログラムを改良しよう
5.4.2 円の描かれ方について考察しよう
5.4.3 四角形を繰り返しを使って描こう
5.4.4 五角形を繰り返しを使って描こう
5.4.5 星を繰り返しを使って描こう
5.4.6 アスタリスクを繰り返しを使って描こう
6 ブロックの入れ子構造
6.1 学習目標
6.2 繰り返しの入れ子
6.2.1 窓を描く(4つの四角形を描く)プログラム
6.2.2 ブロックの入れ子
6.2.3 インデント
6.3 入れ子と並列の違いの考察:花を描くプログラム
6.3.1 花びらを描く
6.3.2 花を描く
6.3.3 花を描く(間違い)
6.4 繰り返し変数の利用
6.4.1 目玉を描くプログラム
6.4.2 奇数と偶数を判定する
6.5 練習問題
6.5.1 四角形を10個描くプログラムを作ろう
6.5.2 四角形を100個描くプログラムを作ろう
6.5.3 四角形と三角形を交互に100個描くプログラムを作ろう
6.5.4 貝殻を描くプログラムを作ろう
6.5.5 タイヤを描くプログラムを作ろう
6.5.6 ドラえもんを描くプログラムを作ろう
6.5.7 キーボードを描くプログラムを作ろう
7 たくさんのタートル
7.1 学習目標
7.2 複数のタートルを使う
7.2.1 2匹のタートルを使うプログラム
7.2.2 タートル(オブジェクト)の生成
7.2.3 タートル(オブジェクト)への命令
7.3 同時に動いているように見せるために
7.4 練習問題
7.4.1 4匹のタートルでまんじ(卍)を描こう
7.4.2 タートルリレー
7.4.3 タートルレース
7.4.4 たくさんのタートルで絵を描こう
7.4.5 星と五角形を同時に描こう
8 アニメーション入門(いままで作ったものを動かそう)
8.1 学習目標
8.2 アニメーションの基本
8.2.1 回る家
8.2.2 アニメーションの基本構造
8.2.3 アニメーションをするための新しい命令
8.2.4 円を描く家
8.3 座標の制御
8.3.1 上向きのまま右に動かす
8.3.2 ワープを使う
8.4 大きさの変更(拡大/縮小)
8.4.1 大きさを変更するプログラム
8.4.2 徐々に大きくする
8.5 練習問題
8.5.1 オブジェクトの回転
8.5.2 流れ星アニメーションを作ろう
8.5.3 ハードル走アニメーションを作ろう
9 ぱらぱら漫画アニメーション
9.1 学習目標
9.2 画像を使ったプログラム
9.3 オブジェクトを隠す/出現させる
9.4 ぱらぱら漫画アニメーション
9.4.1 見た目を別のオブジェクトのものに
9.4.2 人を動作させる
9.4.3 背景を動かす(画面のスクロール)
9.5 文字をオブジェクトして扱う
9.5.1 文字を回す
9.5.2 文字を変化させる
9.6 練習問題
9.6.1 アニメーションを作ろう
9.6.1.1 作品例
9.6.2 0655アニメーションを作ろう(1)
9.6.3 0655アニメーションを作ろう(2)
9.6.4 0655アニメーションを作ろう(3)
10 ゲームを作ろう!
10.1 学習目標
10.2 キーボード入力の判定
10.2.1 キーコードの取得
10.2.2 キーコードを調べる
10.2.3 個別にキーが押されているかどうかを調べて,同時押しに対応する
10.3 マウス入力の判定
10.3.1 マウスの位置を調べる
10.3.2 マウスが押されているかどうか調べる
10.3.3 マウス入力を詳しく調べる
10.3.4 ドラッグを調べる
10.4 あたり判定
10.4.1 2つのオブジェクトのあたり判定
10.4.2 座標とオブジェクトのあたり判定
10.5 練習問題
10.5.1 プレイヤーを操作出来るようにしよう
10.5.2 画像をドラッグ出来るようにしよう
10.5.3 得点板を作ろう
10.5.4 ゲームを作ろう
2 CUI情報処理プログラミング
11 はじめてのCUIプログラム
11.1 学習目標
11.2 はじめてのCUIプログラム
11.2.1 CUIとは
11.2.2 タートルプログラムとの違い
11.2.3 情報の表示とユーザ入力の受け取り
11.2.4 Java標準ライブラリ
11.2.4.1 インポート
11.2.4.2 入力を受け付ける命令
11.2.4.3 コンソールに出力する命令
11.2.5 変数の型-文字列型
11.3 入力、処理、出力
11.3.1 西暦和暦変換プログラム
11.3.2 変数の型-整数型
11.4 変数の型とキャスト
11.4.1 平均得点計算プログラム
11.4.2 変数の型-浮動小数点数型
11.4.3 キャスト(型変換)
11.5 CUIプログラムの作り方
11.5.1 クラス(ファイル)の作り方
11.5.2 新しい命令-変数の型と変数宣言
11.5.3 Java標準ライブラリを使った命令
11.5.3.1 標準出力に文字を出力する命令
11.5.3.2 ユーザから入力を受け取る命令
11.5.3.3 乱数を求める命令(その1)
11.5.3.4 乱数を求める命令(その2)
11.6 練習問題
11.6.1 0.1を10回加算するプログラム
11.6.2 0.125を8回加算するプログラム
11.6.3 乱数生成プログラム
11.6.4 四捨五入プログラム
11.6.5 割り勘計算機
11.6.6 体型評価プログラム
11.6.6.1 概要
11.6.6.2 機能
11.6.6.3 エラー処理
11.6.6.4 プログラム設計条件
11.6.7 恋愛占いプログラム
11.6.7.1 概要
11.6.7.2 機能
11.6.7.3 エラー処理
11.6.7.4 プログラム設計条件
11.6.8 単位取得状況評価プログラム
11.6.8.1 概要
11.6.8.2 機能
11.6.8.3 エラー処理
11.6.8.4 プログラム設計条件
11.7 発展問題
11.7.1 脳トレ 論プロ風
11.7.1.1 概要
11.7.1.2 機能
11.7.1.3 エラー処理
11.7.1.4 プログラム設計条件
11.7.2 マイホーム大作戦
11.7.2.1 概要
11.7.2.2 機能
11.7.2.3 エラー処理
11.7.2.4 プログラム設計条件
11.7.3 ザ・バイナリサーチ
11.7.3.1 概要
11.7.3.2 機能
11.7.3.3 エラー処理
11.7.3.4 プログラム設計条件
11.7.4 世界の○○
11.7.4.1 概要
11.7.4.2 機能
11.7.4.3 エラー処理
11.7.4.4 プログラム設計条件
3 プログラムの部品化
12 命令をつくる(1):メソッド・引数付メソッド
12.1 学習目標
12.2 メソッド
12.2.1 メソッドとその目的
12.2.2 メソッド定義とメソッド呼び出し
12.2.3 メソッドの処理の順序
12.2.4 メソッドの定義位置の注意点
12.3 引数付メソッド
12.3.1 引数とその目的
12.3.2 引数を用いた、四角形を描くメソッドの抽象化
12.3.3 引数を用いた、多角形を描くメソッドの抽象化
12.4 変数の有効範囲と引数
12.4.1 変数の有効範囲
12.4.2 引数付メソッド定義とメソッド呼び出し
12.5 メソッドの設計・あるいはプログラムの構造化
12.5.1 窓付きの家を描くプログラム(引数を用いた、多角形を描くメソッドの抽象化)
12.6 練習問題
12.6.1 円を描くメソッドを作ろう
12.6.2 大きさが変わる家を描くメソッドを作ろう
12.6.3 中心角を指定して円弧を描くメソッドを作ろう
12.6.4 レモン型の図形を描くメソッドを作ろう
12.6.5 メソッドの多段呼び出しの練習をしよう
12.6.6 メソッドの再利用をしよう
12.6.7 マス目
12.6.8 構造化プログラミングによる自由作品
13 命令をつくる(2):戻り値付メソッド
13.1 学習目標
13.2 戻り値付メソッド
13.2.1 戻り値とは
13.2.2 相性占い1(int型の戻り値)
13.2.3 相性占い2(String型の戻り値)
13.2.4 相性占い2d(return文)
13.2.5 相性占い3(真偽値型)
13.2.6 相性占い3d(多段呼び出し + if文の中に命令)
13.3 メソッドの設計・あるいはプログラムの構造化(2)
13.3.1 西暦和暦変換プログラム
13.3.2 構造化された西暦変換プログラム
13.4 メソッドの単体テスト
13.4.1 結果の出力
13.4.2 テストのメソッド化
13.4.3 期待値とテスト正否の出力
13.5 練習問題
13.5.1 年齢計算
13.5.2 税込み価格計算
13.5.3 勝率計算
13.5.4 BMI
13.5.5 総和
13.5.6 ランダム
13.5.7 じゃんけん
13.5.8 コイン投げのシミュレーション
14 再帰プログラムとその「美」
14.1 学習目標
14.2 再帰呼び出し
14.2.1 あらまし
14.2.2 階乗計算
14.2.3 フィボナッチ数列
14.3 フラクタル図形
14.4 練習問題
14.4.1 自然な木を描こう
14.4.2 トーナメント表を描いてみよう
14.4.3 ギャスケットを描いてみよう
14.4.4 スーパースターを描いてみよう
14.4.5 コッホ曲線を描いてみよう
14.4.6 ひまわりの絵を描こう
14.4.7 葉っぱの絵を描こう
4 データ構造とアルゴリズム
15 集合データ構造入門
15.1 学習目標
15.2 集合データ構造
15.2.1 ListTurtle入門
15.2.2 アニメーションへの応用
15.3 ListTurtleの命令リスト
15.3.1 リストを作る命令
15.3.2 追加と削除
15.3.3 取得関係
15.3.4 カーソル関係
15.3.5 その他の命令
15.4 練習問題
15.4.1 アニメーションをListTurtleを使って作り直そう
15.4.2 大量流れ星アニメーションを作ろう
16 集合データ構造とアルゴリズム(1):並び替え
16.1 学習目標
16.2 カードプログラムの要素技術
16.2.1 CardTurtle
16.2.1.1 CardTurtleの仕様
16.2.2 デバッガの使用
16.3 並替えアルゴリズム
16.3.1 並替えアルゴリズムの設計
16.3.2 最小値検索プログラム
16.3.3 最小値選択法による並替えプログラム
16.4 練習問題
16.4.1 ウォーミングアップ問題集
16.4.1.1 問題(1)
16.4.1.2 問題(2)
16.4.1.3 問題(3)
16.4.2 挿入法の並替えプログラムを作ろう
16.4.3 アルゴリズムを改良しよう
17 集合データ構造とアルゴリズム(2):辞書
17.1 学習目標
17.2 入力プログラムの要素技術
17.2.1 InputTurtle
17.2.1.1 おうむ返しプログラム(入力タートルバージョン)
17.2.1.2 2つの入力タートルの制御
17.2.1.3 InputTurtleの仕様
17.2.2 ButtonTurtle
17.2.2.1 ButtonTurtleの仕様
17.3 辞書のプログラム
17.4 練習問題
17.4.1 入力タートルの練習
17.4.2 作文さん
17.4.3 タイピングゲーム
18 Java標準APIによる集合データ構造
18.1 学習目標
18.2 APIとJavaAPIドキュメント
18.3 LinkedList
18.3.1 カーソルを使わない方法
18.3.2 LinkedList
18.4 配列
18.4.1 配列の使い方
18.5 集合データ構造の使い方のまとめ
18.6 練習問題
18.6.1 0655アニメーションを標準APIで作り直そう
18.6.2 大量流れ星アニメーションを標準APIで作り直そう
19 文字列とアルゴリズム
19.1 学習目標
19.2 ファイル入出力
19.2.1 ファイル入出力の仕様
19.3 作文遊び
19.3.1 作文さん
19.3.2 反転さん
19.3.3 判定さん
19.3.4 回文さん
19.4 Webスクレイピング
19.4.1 WebからHTMLの読み込み
19.4.2 読み込んだHTMLからのスクレイピング
19.5 練習問題
19.5.1 ケンブリッジ変換
19.5.2 CSVファイルの読み込み
19.5.3 問題3:Webマッシュアップ
5 付録
20 やり残したJava文法
20.1 学習目標
20.2 繰り返しの制御
20.3 論理否定演算子
21 タートルの仕様
21.1 タートルの命令リスト
21.1.1 基本的な命令
21.1.2 オブジェクトの生成に関する命令
21.1.3 画面の描画処理に関する命令
21.1.4 座標に関する命令
21.1.5 大きさに関する命令
21.1.6 オブジェクトを出現/隠す命令
21.1.7 オブジェクトの見た目を変える命令
21.1.8 テキストの中身を変える命令
21.1.9 キー・マウス入力に関する命令
21.1.10 オブジェクトの接触に関する命令
21.2 タートルで作ってはいけないメソッド名
22 音を鳴らしてみよう
22.1 音を鳴らす方法
22.2 SoundTurtleの使い方
22.3 あらかじめ音を読み込んでおく
22.4 SoundTurtleで利用できる命令
22.4.1 再生と停止
22.4.2 音量の取得・変更
22.4.3 音の読み込み
22.5 練習問題
22.5.1 シューティングゲームに効果音をつけよう
22.5.2 シューティングゲームにBGMをつけよう
22.6 練習問題解答例
23 セル・オートマトン
23.1 セルオートマトンとは
23.2 1次元セルオートマトン
23.2.1 CellTurtleの基本的な使い方
23.2.2 ルール
23.2.3 アサリの貝殻の模様と1次元オートマトン
23.3 2次元セルオートマトン
23.4 CellTurtleで利用できる命令
23.4.1 「位置」について
23.4.2 移動の命令
23.4.3 CellTurtleのマーク処理命令
23.4.4 2次元オートマトンのターン処理命令
23.5 練習問題
23.5.1 1次元セルオートマトンのいろいろなルールを試してみよう
23.5.2 ルールをメソッドにしてみよう
23.5.3 ルールをメソッドにしてみよう改
23.5.4 2次元セルオートマトンを試してみよう
23.5.5 2次元セルオートマトンのいろいろなルールを試してみよう
23.5.6 ライフゲームを作ってみよう
23.6 参考文献
索引
Turtle Cafe 2
>>