ニュース

Processing バージョン3.2.3 (7 November 2016)が配信されています.時間があるときにアップデートを.

https://processing.org/

予習

演習問題: 問題1

「マウスカーソルがボール上にあるか否かは関数を利用して判断するとよい。」 とある.

マウスカーソルがボール上にあるかどうかは

の二つの状態しかないので,関数を作る場合は,入力(引数)として「マウスカーソルが上にあるかどうか判断する対象のボールの情報が入った配列」を,出力(戻り値)として「あるかないか」の二つの値どちらかを結果として返せばよい.

この「あるかないか」という二つの値は,今回復習したboolean型を使用するのがちょうどよい.

を結果として返すようにする.

以上から,引数は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の上にマウスカーソルがあったら,赤,でなければ青」と,プログラムを分かりやすく記述することができる.

復習ドリルの解答例

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;
}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-11-10 (木) 09:40:03