Turtle Cafe
>>
Turtle Cafe
タートルとJavaで学ぶ論理思考とプログラミング
version 1.1 (2008/05/26)
CreW Project
https://crew-lab.sfc.keio.ac.jp/
目次
1 回授業:Javaプログラミング入門
1 大学のMacでJavaプログラムを動かしてみよう
1.1 目標
1.2 基本的な使い方
1.2.1 エディタのインストール
1.2.2 論プロエディタの基本
1.2.2.1 起動の仕方
1.2.2.2 各部名称・機能
1.2.2.3 リソース
1.2.3 プログラム作成の流れ
1.2.3.1 プログラムの編集
1.2.3.2 コンパイル
1.2.3.3 実行
1.3 発展的な使い方
1.3.1 サンプルプログラムの使い方
1.3.1.1 サンプルプログラムの使い方
1.3.1.2 リソースとファイルシステムの関係
1.3.2 自分のPCでJavaと論プロエディタを使う方法
1.3.3 その他の機能
1.3.4 ショートカットキー
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 問題1:五角形を描こう
2.6.2 問題2:星を描こう
2.6.3 問題3:好きな図形を描こう
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 問題1:五角形や星を描くプログラムの改造
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 問題1:絵の描き分けプログラムを作ろう
4.5.2 問題2:おみくじプログラムを作ろう
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 問題1:円を描くプログラムを改良しよう
5.4.2 問題2:円の描かれ方について考察しよう
5.4.3 問題3:五角形や星を繰り返しを使って描こう
2 回授業:Javaによる制御構造
6 ブロックの入れ子構造
6.1 学習目標
6.2 繰り返しの入れ子
6.2.1 たくさんの円を書くプログラム
6.2.2 ブロックの入れ子
6.2.3 インデント
6.3 奇数と偶数を判定する
6.4 応用:花を描くプログラム
6.4.1 花びらを描く
6.4.2 花を描く
6.5 練習問題
6.5.1 問題1:四角形と三角形を交互に100個描くプログラムを作ろう
6.5.2 問題2:貝殻を描くプログラムを作ろう
6.5.3 問題3:タイヤを描くプログラムを作ろう
6.5.4 問題4:ドラえもんを描くプログラムを作ろう
6.5.5 問題5:キーボードを描くプログラムを作ろう
7 はじめてのCUIプログラム
7.1 学習目標
7.2 はじめてのCUIプログラム
7.2.1 CUIとは
7.2.2 タートルプログラムとの違い
7.2.3 情報の表示とユーザ入力の受け取り
7.2.4 Java標準ライブラリ
7.2.4.1 インポート
7.2.4.2 入力を受け付ける命令
7.2.4.3 コンソールに出力する命令
7.2.5 変数の型-文字列型
7.3 入力、処理、出力
7.3.1 西暦和暦変換プログラム
7.3.2 変数の型-整数型
7.4 変数の型とキャスト
7.4.1 平均得点計算プログラム
7.4.2 変数の型-浮動小数点数型
7.4.3 キャスト(型変換)
7.5 CUIプログラムの作り方
7.5.1 クラス(ファイル)の作り方
7.5.2 新しい命令-変数の型と変数宣言
7.5.3 新しい命令-Java標準ライブラリを使った命令
7.5.3.1 標準出力に文字を出力する命令
7.5.3.2 ユーザから入力を受け取る命令
7.6 練習問題
7.6.1 問題1:体型評価プログラムを作ろう
7.6.1.1 概要
7.6.1.2 機能
7.6.1.3 エラー処理
7.6.1.4 プログラム設計条件
7.6.2 問題2:恋愛占いプログラムを作ろう
7.6.2.1 概要
7.6.2.2 機能
7.6.2.3 エラー処理
7.6.2.4 プログラム設計条件
7.6.3 問題3:単位取得状況評価プログラムを作ろう
7.6.3.1 概要
7.6.3.2 機能
7.6.3.3 エラー処理
7.6.3.4 プログラム設計条件
7.7 発展問題
7.7.1 問題1:脳トレ 論プロ風
7.7.1.1 概要
7.7.1.2 機能
7.7.1.3 エラー処理
7.7.1.4 プログラム設計条件
7.7.2 問題2:マイホーム大作戦
7.7.2.1 概要
7.7.2.2 機能
7.7.2.3 エラー処理
7.7.2.4 プログラム設計条件
7.7.3 問題3:ザ・バイナリサーチ
7.7.3.1 概要
7.7.3.2 機能
7.7.3.3 エラー処理
7.7.3.4 プログラム設計条件
3 回授業:オブジェクトの概念修得とミニ作品制作
8 たくさんのタートル
8.1 学習目標
8.2 複数のタートルを使う
8.2.1 2匹のタートルを使うプログラム
8.2.2 タートル(オブジェクト)の生成
8.2.3 タートル(オブジェクト)への命令
8.3 同時に動いているように見せるために
8.4 練習問題
8.4.1 問題1:たくさんのタートルで絵を描こう
9 アニメーション入門(いままで作ったものを動かそう)
9.1 学習目標
9.2 アニメーションの基本
9.2.1 回る家
9.2.2 アニメーションの基本構造
9.2.3 アニメーションをするための新しい命令
9.2.4 円を描く家
9.3 座標の制御
9.3.1 上向きのまま右に動かす
9.3.2 ワープを使う
9.4 大きさの変更(拡大/縮小)
9.4.1 大きさを変更するプログラム
9.4.2 徐々に大きくする
9.5 練習問題
9.5.1 流れ星アニメーションを作ろう
10 ぱらぱら漫画アニメーション
10.1 学習目標
10.2 画像を使ったプログラム
10.3 オブジェクトを隠す/出現させる
10.4 ぱらぱら漫画アニメーション
10.4.1 見た目を別のオブジェクトのものに
10.4.2 人を動作させる
10.4.3 背景を動かす(画面のスクロール)
10.5 文字をオブジェクトして扱う
10.5.1 文字を回す
10.5.2 文字を変化させる
10.6 練習問題
10.6.1 問題1:アニメーションを作ろう
10.6.2 作品例
11 ゲームを作ろう!
11.1 学習目標
11.2 キーボード入力の判定
11.2.1 キーコードの取得
11.2.2 キーコードを調べる
11.3 マウス入力の判定
11.3.1 マウスの位置を調べる
11.3.2 マウスが押されているかどうか調べる
11.3.3 マウス入力を詳しく調べる
11.4 あたり判定
11.4.1 2つのオブジェクトのあたり判定
11.4.2 座標とオブジェクトのあたり判定
11.5 課題
11.5.1 簡単なゲームを作ろう
4 回授業:プログラムの部品化(1)
12 プログラムの構造化(1)(メソッド・引数)
12.1 学習目標
12.2 メソッド
12.2.1 メソッドとは
12.2.2 四角形を描くプログラム
12.2.3 メソッドの作り方
12.2.3.1 メソッド定義とメソッド呼び出し
12.2.3.2 メソッド定義の注意点
12.2.4 四角形を3つ描くプログラム
12.2.5 メソッドの処理の順序
12.3 引数ありメソッド
12.3.1 引数とは
12.3.2 大きさを変えて四角形を描くプログラム(コンパイルエラー)
12.3.3 変数の有効範囲(復習)
12.3.4 大きさを変えて四角形を描くプログラム
12.3.5 引数ありメソッドの宣言と呼び出し
12.4 メソッドを用いたプログラムの構造化
12.4.1 窓付きの家を描くプログラム(メソッドなし)
12.4.2 窓付きの家を描くプログラム(1レベルをメソッド化)
12.4.3 窓付きの家を描くプログラム(2レベルをメソッド化)
12.5 引数を用いたメソッドの抽象化
12.5.1 窓付きの家を描くプログラム(引数なしメソッド)
12.5.2 窓付きの家を描くプログラム(引数を用いた、四角形を描くメソッドの抽象化)
12.5.3 窓付きの家を描くプログラム(引数を用いた、多角形を描くメソッドの抽象化)
12.6 課題
12.6.1 問題1-1:中心角を指定して円弧を描くメソッドを作ろう
12.6.2 問題1-2:円弧を描くメソッドを使って猫の目を描こう
12.6.3 問題1-3:円弧を描くメソッドを使って蝶を描こう
12.6.4 問題1-4:円弧を描くメソッドを使って花を描こう
12.6.5 問題2:入力によって猫の目、蝶、花を描き分けるプログラムを作ろう
12.7 おまけ問題
12.7.1 再帰を使って木を描くサンプルプログラム
12.7.2 おまけ問題1:再帰を使って自然な木を描くプログラム
12.7.3 おまけ問題2:再帰を使ってコッホ曲線を描くプログラム
5 回授業:プログラムの部品化(2)
13 プログラムの部品化(2)(戻り値)
13.1 学習目標
13.2 入力・処理・出力
13.2.1 プログラムの入出力
13.2.1.1 累乗計算プログラムの入出力
13.2.1.2 一般的なプログラムの入出力
13.2.2 メソッドの入出力
13.2.2.1 累乗を計算するメソッドの入出力
13.2.2.2 一般的なメソッドの入出力
戻り値とは
戻り値ありメソッドの定義と呼び出し
13.3 入出力を持つメソッドを用いたプログラムの構造化
13.3.1 西暦和暦変換プログラム(メソッドなし)
13.3.2 西暦和暦変換プログラム(1レベルをメソッド化)
13.3.3 西暦和暦変換プログラム(2レベルをメソッド化)
13.4 練習問題
13.4.1 問題1:体型評価プログラムを作ろう
13.4.1.1 概要
13.4.1.2 機能
13.4.1.3 エラー処理
13.4.1.4 プログラム設計条件
13.4.2 問題2:恋愛占いプログラムを作ろう
13.4.2.1 概要
13.4.2.2 機能
13.4.2.3 エラー処理
13.4.2.4 プログラム設計条件
13.4.3 問題3:単位取得状況評価プログラムを作ろう
13.4.3.1 概要
13.4.3.2 機能
13.4.3.3 エラー処理
13.4.3.4 プログラム設計条件
13.5 発展問題
13.5.1 問題1:脳トレ 論プロ風
13.5.1.1 概要
13.5.1.2 機能
13.5.1.3 エラー処理
13.5.1.4 プログラム設計条件
13.5.2 問題2:マイホーム大作戦
13.5.2.1 概要
13.5.2.2 機能
13.5.2.3 エラー処理
13.5.2.4 プログラム設計条件
13.5.3 問題3:ザ・バイナリサーチ
13.5.3.1 概要
13.5.3.2 機能
13.5.3.3 エラー処理
13.5.3.4 プログラム設計条件
6 回授業:集合データ構造とアルゴリズム
14 集合データ構造とアルゴリズム
14.1 学習目標
14.2 入れ物を使ったプログラム
14.2.1 カードを出し入れするプログラム
14.2.1.1 グローバル変数
14.2.1.2 break文
14.2.2 入れ物に関する新しい命令
14.2.2.1 入れ物を作る命令
14.2.2.2 追加と削除
14.2.2.3 カーソルに関する命令
14.2.2.4 その他の命令
14.2.3 カードに関する新しい命令
14.2.3.1 カードを作る命令
14.2.3.2 その他の命令
14.3 ソートアルゴリズム
14.3.1 ソートアルゴリズムとは
14.3.2 1重ループの最小値選択法(Squeakと同じ)
14.3.2.1 1重ループの最小値選択法(Squeakと同じ)のフローチャート
14.3.2.2 最小値選択法(1重ループ(Squeakと同じ))
14.3.3 2重ループの最小値選択法
14.3.3.1 2重ループの最小値選択法のフローチャート
14.3.3.2 最小値選択法(2重ループ)
14.4 ボタンを使ったプログラム
14.4.1 どのボタンが押されたか表示するプログラム
14.4.2 ボタンに関する新しい命令
14.4.2.1 ボタンを作る命令
14.4.2.2 ボタンから入力を受け付ける命令
14.4.2.3 その他の命令
14.4.3 押されたボタンによって状態を切り替えるプログラム
14.4.4 ソートアルゴリズム(ボタンの実用例)
14.4.4.1 最小値選択法(1重ループ・ボタンあり)
14.4.4.2 最小値選択法(1重ループ・ステップ実行)
14.4.4.3 最小値選択法(2重ループ・ボタンあり)
14.4.4.4 最小値選択法(2重ループ・ステップ実行)
14.5 辞書の作成
14.5.1 入力タートル
14.5.1.1 おうむ返しプログラム(入力タートルバージョン)
14.5.1.2 2つの入力タートルの制御
14.5.1.3 入力タートルに関する新しい命令
入力タートルを作る命令
入力タートルから入力を受け付ける命令
その他の命令
14.5.2 辞書プログラム
14.5.2.1 辞書プログラム
14.6 練習問題
14.6.1 問題1:挿入法のソートプログラムを作ろう
14.6.2 問題2:入れ物を使ったアプリケーションを作ろう
14.6.2.1 問題2-1:作文さん
14.6.2.2 問題2-2:タイピングゲーム
7 付録
15 MacintoshでJavaプログラムを動かしてみよう
15.1 目標
15.2 プログラム作成・実行の準備
15.2.1 Java開発環境(JDK)のインストール
15.2.2 作業用フォルダの作成
15.2.3 タートルプログラムのダウンロード
15.2.4 サンプルプログラムのダウンロード
15.2.5 テキストエディタの整備
15.3 プログラムの作成と実行
15.3.1 プログラム(ソースコード)の作成
15.3.2 ターミナルを利用したプログラムの実行
15.3.3 コンパイル
15.3.4 実行
16 WindowsでJavaプログラムを動かしてみよう
16.1 目標
16.2 プログラム作成・実行の準備
16.2.1 Java開発環境(JDK)のインストール
16.2.2 作業用フォルダの作成
16.2.3 タートルプログラムのダウンロード
16.2.4 サンプルプログラムのダウンロード
16.2.5 テキストエディタの整備
16.3 プログラムの作成と実行
16.3.1 プログラム(ソースコード)の作成
16.3.2 コマンドプロンプトを利用したプログラムの実行
16.3.3 コンパイル
16.3.4 実行
17 タートルの仕様
17.1 タートルの命令リスト
17.1.1 基本的な命令
17.1.2 オブジェクトの生成に関する命令
17.1.3 画面の描画処理に関する命令
17.1.4 座標に関する命令
17.1.5 大きさに関する命令
17.1.6 オブジェクトを出現/隠す命令
17.1.7 オブジェクトの見た目を変える命令
17.1.8 テキストの中身を変える命令
17.1.9 キー・マウス入力に関する命令
17.1.10 オブジェクトの接触に関する命令
17.2 タートルで作ってはいけないメソッド名
18 最終作品例
18.1 Java最終作品例(2007年度秋学期履修者の作品)
18.1.1 やすしゲーム
18.1.2 神経衰弱
18.1.3 しりとりゲーム
18.1.4 ドイツ語ワークブック
18.1.5 タロット占い
18.1.6 ゴジラと対決ゲーム
18.1.7 インベーダーゲーム
索引
Turtle Cafe
>>