プログラミング基礎/2016/2016年10月20日
をテンプレートにして作成
開始行:
*講義資料の予習 [#i0f87ff4]
以下のプログラムを見やすくすることを考えると,
// 定数
final float gravity = 9.8 / 60; // <-- 1/60秒あたりの重...
// 変数
float y; // <-- ボールのy座標
float vy; // <-- ボールの速度のy...
void setup() {
size(200, 480);
noStroke();
fill(0, 0, 0);
y = 0;
vy = 0;
}
void draw() {
vy += gravity; // <-- 速度に重力加速度を加算する
y += vy; // <-- ボールが速度ぶん移動する
background(255, 255, 255);
ellipse(100, y, 40, 40);
}
ボールを描いている,
ellipse(100, y, 40, 40);
は,引数に直接値を指定しており,プログラムの見やすさとし...
ellipse(x, y, d, d);
とする.
~
~
~
課題を進めていくと,ボールのために
float x; //x座標
float y; //y座標
float vx; //x方向速度
float vy; //y方向速度
という4つのグローバル変数ができる.しかしながら,再度プロ...
float ボールの情報;
として,まとめたい.そこで配列の出番である.
float[] ball0;
ただし,配列はnew演算子を使用し,メモリ上に実際に値を記憶...
...
final int X = 0;
final int Y = 1;
final int VX = 2;
final int VY = 3;
float[] ball0;
...
void setup(){
...
ball0 = new float[4];
ball0[X] = ...;
ball0[Y] = ...;
...
...
}
~
~
~
さらに課題を進めていくと,
void draw(){
background(0, 0, 100); //画面を白(HSB)でぬりつぶす
//ボールを動かす
...
...
...
...
//ボールを描く
ellipse(ball0[X], ball0[Y], d, d);
}
となっていく.またプログラムを見やすくるのであれば,自分...
void draw(){
background(0, 0, 100); //画面を白(HSB)でぬりつぶす
//ボールを動かす
ボールを動かす(動かすボール);
//ボールを描く
ellipse(ball0[X], ball0[Y], d, d);
}
としたい.
ボールを動かす関数を作ることを考える.
+関数名はboundBallとする
+戻り値は不要
+引数には動かす対象のボールを指定できるようにする
1と2から,
void boundBall(){
}
3は,今,1個のボールの情報を1つのfloatの配列にまとめてい...
void boundBall(float[] b){
//ボールbを動かす処理
...
...
...
}
となる.
*再帰 [#t839a26e]
基本的な再帰を使ったプログラム(階乗を計算する).使いど...
void setup(){
int x = 5;
int y;
y = factorial(x);
println(x + "!=" + y);
}
int factorial(int x){
if (x <= 0)
return 1;
else
return x * factorial(x-1);
}
終了行:
*講義資料の予習 [#i0f87ff4]
以下のプログラムを見やすくすることを考えると,
// 定数
final float gravity = 9.8 / 60; // <-- 1/60秒あたりの重...
// 変数
float y; // <-- ボールのy座標
float vy; // <-- ボールの速度のy...
void setup() {
size(200, 480);
noStroke();
fill(0, 0, 0);
y = 0;
vy = 0;
}
void draw() {
vy += gravity; // <-- 速度に重力加速度を加算する
y += vy; // <-- ボールが速度ぶん移動する
background(255, 255, 255);
ellipse(100, y, 40, 40);
}
ボールを描いている,
ellipse(100, y, 40, 40);
は,引数に直接値を指定しており,プログラムの見やすさとし...
ellipse(x, y, d, d);
とする.
~
~
~
課題を進めていくと,ボールのために
float x; //x座標
float y; //y座標
float vx; //x方向速度
float vy; //y方向速度
という4つのグローバル変数ができる.しかしながら,再度プロ...
float ボールの情報;
として,まとめたい.そこで配列の出番である.
float[] ball0;
ただし,配列はnew演算子を使用し,メモリ上に実際に値を記憶...
...
final int X = 0;
final int Y = 1;
final int VX = 2;
final int VY = 3;
float[] ball0;
...
void setup(){
...
ball0 = new float[4];
ball0[X] = ...;
ball0[Y] = ...;
...
...
}
~
~
~
さらに課題を進めていくと,
void draw(){
background(0, 0, 100); //画面を白(HSB)でぬりつぶす
//ボールを動かす
...
...
...
...
//ボールを描く
ellipse(ball0[X], ball0[Y], d, d);
}
となっていく.またプログラムを見やすくるのであれば,自分...
void draw(){
background(0, 0, 100); //画面を白(HSB)でぬりつぶす
//ボールを動かす
ボールを動かす(動かすボール);
//ボールを描く
ellipse(ball0[X], ball0[Y], d, d);
}
としたい.
ボールを動かす関数を作ることを考える.
+関数名はboundBallとする
+戻り値は不要
+引数には動かす対象のボールを指定できるようにする
1と2から,
void boundBall(){
}
3は,今,1個のボールの情報を1つのfloatの配列にまとめてい...
void boundBall(float[] b){
//ボールbを動かす処理
...
...
...
}
となる.
*再帰 [#t839a26e]
基本的な再帰を使ったプログラム(階乗を計算する).使いど...
void setup(){
int x = 5;
int y;
y = factorial(x);
println(x + "!=" + y);
}
int factorial(int x){
if (x <= 0)
return 1;
else
return x * factorial(x-1);
}
ページ名: