第三回 †関数 †プログラミングにおいて、特定の処理をまとめておくことは重要なことです。処理を関数化しまとめることで、処理を何度も書かずに済みます。 関数は以下のようにして書くことができます。 戻り値の型 関数名(引数1の型 引数1の名前,引数2の型 引数2の名前....) { 関数の処理 return 戻り値; } 数学的な関数と同じように、プログラム上の関数でも何か関数に値を代入しないと結果は帰ってきません。 また、引数を持たなかったり戻り値を返さない関数も作ることができます。その時は、関数を宣言する際の戻り値の型にvoidと書けばよいです。 void 関数名(){ 関数の処理 } 戻り値がない場合、returnは省略することができます。 関数の使い方 †関数は以下のようにして使うことができます。 関数名(引数リスト); また、引数のない関数は引数リストを省略して書くことができます。 第一回で描いてもらった図形や色などは、すべてProcessingに標準である関数です。
これはほんの一部で、もっと詳しく知りたい方は こちら ステートメント †条件分岐 †Pcocessingにはプログラムの流れを制御する専用の構文が用意されています。これをステートメントといいます。 if(条件1){ 条件1が真の時の処理 }else if(条件2){ 条件2が真の時の処理 }else{ すべての条件が偽の時の処理 } if文は条件ごとに処理を行いたい場合に利用し、else ifやelseを省略して書くこともできます。 繰り返し †条件が真の間中処理を繰り返します。 繰り返しにはfor構文とwhile構文があります。 for(初期化式;条件式;更新式){ 繰り返す処理 } 初期化式とはfor構文の最初に必ず実行される式です。更新式は繰り返す処理が終わるたびに実行される式です。 具体的には int sum = 0; for(int i=0; i<10; i++){ sum += i; } このようにして使います。これはiを0~9まで回し、sumにiを足していくプログラムです。sumの中身は45となります。 一方while構文は while(条件式){ 繰り返す処理 } または do{ 繰り返す処理 }while(条件式); do whileは先に処理を実行してから条件を判断します。 その他 †読みやすいきれいなコードを書こう! †少し何かを表示させるだけなどの簡単なプログラムならコードの分量も少ないため、さほど気にする必要もないですが、規模が大きくなってくるとコードの量も必然的に多くなります。 改行 †まずはコードが見やすくなるよう、プログラムの意味ごとに改行を挟もう。 background(255);noFill();ellipse(250,250,300,300); line(250,0,250,500);line(0,250,500,250);fill(0); line(250,250,x,y);ellipse(x,y,5,5); x = cos(t)*150+250;y = -sin(t)*150+250; 改行が適当だと非常に見づらい... background(255); noFill(); ellipse(250,250,300,300); line(250,0,250,500); line(0,250,500,250); fill(0); line(250,250,x,y); ellipse(x,y,5,5); x = cos(t)*150+250; y = -sin(t)*150+250; 命令が終わる(セミコロンがつく)ごとに改行しよう! インデント †for文などの構文を使うとき中カッコを使う場面があるだろう。 for(int y=0; y<img.height; y++){ for(int x=0; x<img.width; x++){ int position = y * img.width + x; double a = img.width/2; double b = img.height/2; if( ((x-a)*(x-a))/(a*a)+((y-b)*(y-b))/(b*b)>1){ img.pixels[position] = color(0,0,0);}}} なぁにこれ どこでどうループが回ってんのかわかりにくっ72! for(int y=0; y<img.height; y++){ for(int x=0; x<img.width; x++){ int position = y * img.width + x; double a = img.width/2; double b = img.height/2; if( ((x-a)*(x-a))/(a*a)+((y-b)*(y-b))/(b*b)>1){ img.pixels[position] = color(0,0,0); } } } 中かっこの終わりとはじまりの位置を統一することで、分の始まりと終わりが分かりやすくなるぞ! 宗教上な理由 †関数やif文、for文などを使うとき中カッコを使うだろう。 for文の例 for(i=0; i<30; i++){ j++; } for(i=0; i<30; i++) { j++; } if文の例 if(a < b){ j++; }else{ k++; } if(a < b) { j++; }else { k++; } どちらでも正しく動くので完全に好みである。 ちなみにページ作成主は前者推し |