- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-11-07T17:51:18+09:00","default:kyo-in","kyo-in")
#author("2016-11-10T09:40:03+09:00","default:kyo-in","kyo-in")
*ニュース [#ie01e865]
Processing バージョン3.2.3 (7 November 2016)が配信されています.時間があるときにアップデートを.
https://processing.org/
*予習 [#x6cf8886]
**演習問題: 問題1 [#me3f64ac]
「マウスカーソルがボール上にあるか否かは関数を利用して判断するとよい。」
とある.
マウスカーソルがボール上にあるかどうかは
-マウスカーソルがボール上にある
-マウスカーソルがボール上にない
の二つの状態しかないので,関数を作る場合は,入力(引数)として「マウスカーソルが上にあるかどうか判断する対象のボールの情報が入った配列」を,出力(戻り値)として「あるかないか」の二つの値どちらかを結果として返せばよい.
この「あるかないか」という二つの値は,今回復習したboolean型を使用するのがちょうどよい.
-ボール上にある→true
-ボール上にない→false
を結果として返すようにする.
以上から,引数はfloatの配列,戻り値(の型)はboolean,関数名は好みでよいが,ここでは「ボールの上にカーソルはあるか?」ということでIsCursorOnBallとすると,
boolean isCursorOnBall(float[] b){
//ボールbの上ににマウスカーソルがあれば
//return true;
//ボールbの上にマウスカーソルがなければ
//return false;
//というプログラムをここに書く
}
という関数を完成させればよい.
この関数がきちんと完成したのであれば,
void draw(){
...
if (isCursorOnBall(ball0))
fill(255,0,0);
else
fill(0,0,255);
...
}
として「ball0の上にマウスカーソルがあったら,赤,でなければ青」と,プログラムを分かりやすく記述することができる.
*復習ドリルの解答例 [#u715dbc8]
void setup(){
//(1)
printHello();
//(2)
printHello2();
//(3)
printHellos(10);
//(4)
calc1(8);
calc1(10);
//(5)
println("calc2="+calc2(5));
//(6)
println(calc3(5)+calc3(1));
//(7)
println(calc4(5, 1));
//(8)
println(calc5(5, 1, 4));
//(9)
println(sum(10));
//(10)
println(sum(1, 100));
//(11)
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
println(sum(a, 0));
println(sum(a, 9));
println(sum(a, 10));
//(12)
int[] a2 = {10, 9, 8, 4, 15, 0, -3, 18, 9, 7};
println(selectMaxValue(a2));
//(13)
println(selectMaxIndex(a2));
//(14)
println(selectMinIndex(a2));
//(15)
println(selectDiffMaxMinValue(a2));
//(16)
int[] p = {10, 9, 8, 4, 15, 0, -3, 18, 9, 7};
swapArrayElements(p, 0, 9);
for(int i = 0; i < p.length; i++)
print(p[i] + " ");
println("");
//(17)
println(selectMaxIndex(a2, 1, 6));
//(18)
int[] a3 ={1,2,3,4};
int[] b3 ={4,3,2,1};
swapTwoArrays(a3, b3);
for(int i = 0; i < a3.length; i++)
print(a3[i] + " ");
println("");
for(int i = 0; i < b3.length; i++)
print(b3[i] + " ");
println("");
}
void printHello(){
println("Hello World");
}
void printHello2(){
printHello();
printHello();
}
void printHellos(int n)
{
for(int i = 0; i < n; i++)
printHello();
}
void calc1(int x)
{
if (x < 10)
println("small number");
}
int calc2(int x)
{
return x * 2;
}
float calc3(float x)
{
return x * 2;
}
int calc4(int x, int y)
{
return (x + y) * 2;
}
int calc5(int x, int y, int z)
{
return (x + y + z) * 2;
}
int sum(int n)
{
int s = 0;
for(int i = 0; i <= n; i++)
s += i;
return s;
}
int sum(int p, int q)
{
int s = 0;
for(int i = p; i <= q; i++)
s += i;
return s;
}
int sum(int[] a, int index)
{
if ((index < 0) || (index >= a.length))
{
println("Index Error!");
return -1;
}
int s = 0;
for(int i = index; i < a.length; i++)
s += a[i];
return s;
}
int selectMaxValue(int[] a)
{
int max = a[0];
for(int i = 1; i < a.length; i++)
{
if (max < a[i])
max = a[i];
}
return max;
}
int selectMaxIndex(int[] a)
{
int max = a[0];
int maxIndex = 0;
for(int i = 1; i < a.length; i++)
{
if (max < a[i])
{
max = a[i];
maxIndex = i;
}
}
return maxIndex;
}
int selectMinIndex(int[] a)
{
int min = a[0];
int minIndex = 0;
for(int i = 1; i < a.length; i++)
{
if (min > a[i])
{
min = a[i];
minIndex = i;
}
}
return minIndex;
}
int selectDiffMaxMinValue(int[] p)
{
int maxIndex = selectMaxIndex(p);
int minIndex = selectMinIndex(p);
return p[maxIndex] - p[minIndex];
}
void swapArrayElements(int[] p, int i, int j)
{
int tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
int selectMaxIndex(int[] a, int i, int j)
{
int max = a[i];
int maxIndex = i;
for(int index = i+1; index <= j; index++)
{
if (max < a[index])
{
max = a[index];
maxIndex = index;
}
}
return maxIndex;
}
boolean swapTwoArrays(int[] a, int[] b)
{
if (a.length != b.length)
return false;
for(int i = 0; i < a.length; i++)
{
int tmp = a[i];
a[i] = b[i];
b[i] = tmp;
}
return true;
}