SlideShare a Scribd company logo
1 of 37
Download to read offline
早稲田大学 基幹理工学部 表現工学科
長研究室 B4 鈴木 遼
31 July 2013
今日やること
 Processing とプログラミングの基礎
 今日は 12 項目
1. 関数とは
入力 機械 出力
1. 関数とは
引数 関数 戻り値
1. 関数とは
引数 関数 戻り値
abs()-3.5 3.5
sqrt()16.0 4.0
2. 関数の作り方
戻り値の型 名前(引数の型 引数名)
{
何らかの処理
return 戻り値 ;
}
2. 関数の作り方
 与えられた数を二乗する Square() 関数を作る
float Square(float x)
{
return x*x;
}
戻り値の型 名前(引数の型 引数名)
{
何らかの処理
return 戻り値 ;
}
2. 関数の作り方
float Square(float x)
{
return x*x;
}
void setup()
{
float s = Square(12);
println(s);
}
void draw()
{
}
2. 関数の作り方
 絶対値を返す Abs() 関数を作る
float Abs(float x)
{
if(x<0)
{
return –x;
}
else
{
return x;
}
}
2. 関数の作り方
float Abs(float x)
{
if(x<0)
{
return –x;
}
else
{
return x;
}
}
void setup()
{
println(Abs(-3.5));
}
void draw()
{
}
2. 関数の作り方
 与えられた 2 つの値のうち大きい方の値
を返す Max() 関数
float Max(float x, float y)
{
if(x>y)
{
return x;
}
else
{
return y;
}
}
2. 関数の作り方
float Max(float x, float y)
{
if(x>y)
{
return x;
}
else
{
return y;
}
}
void setup()
{
println(Max(6.6, 3.5));
println(Max(-3.3, 5.5));
}
void draw()
{
}
2. 関数の作り方
 与えられた 2 つの値のうち大きい方の値
を返す Min() 関数
float Min(float x, float y)
{
if(x>y)
{
return y;
}
else
{
return x;
}
}
2. 関数の作り方
float Min (float x, float y)
{
if(x>y)
{
return y;
}
else
{
return x;
}
}
void setup()
{
println(Min(6.6, 3.5));
println(Min(-3.3, 5.5));
}
void draw()
{
}
2. 関数の作り方
 与えられた 3 つの値のうち最大の値を返
す Max3() 関数
float Max3(float x, float y, float z)
{
return Max(x, Max(y, z));
}
2. 関数の作り方
 与えられた中心位置と半径の円を描く
Circle() 関数
 戻り値が必要ない場合、戻り値の型は
void(ヴォイド)で、return しない
void Circle(float x, float y, float r)
{
ellipse(x,y,r*2,r*2);
}
2. 関数の作り方
void Circle(float x, float y, float r)
{
ellipse(x,y,r*2,r*2);
}
void setup()
{
size(600,400);
}
void draw()
{
Circle(300,200,200);
}
3. max(), min() 関数
 Processing で最初から使える関数
 大きい方の値、小さい方の値を返す
max(a,b)
min(a,b);
4. dist() 関数
 2 点間 (x1,y1) – (x2,y2) の距離を返す
 dist(0,0,1,1) = 1.41421…
dist(x1,y1,x2,y2)
4. dist() 関数
void setup()
{
size(600,400);
textSize(30);
}
void draw()
{
background(0,0,0);
ellipse(300,200,10,10);
float d = dist(300,200,mouseX,mouseY);
text(d,50,50);
}
5. 時刻関数
 現在の時、分、秒を int 型の値で返す
hour()
minute();
second();
6. クラスとは
いくつかの変数 1 つの型
int y
int x
int w
int h
Rectangle
型
7. クラスの作り方
class クラス名
{
いくつかのメンバ変数
}
7. クラスの作り方
class Rectangle
{
float x, y, w, h;
}
8. クラスを使う
 new を使って作成
Rectangle r = new Rectangle();
class Rectangle
{
float x, y, w, h;
}
void setup()
{
size(600,400);
}
void draw()
{
}
8. クラスを使う
Rectangle r = new Rectangle();
class Rectangle
{
float x, y, w, h;
}
void setup()
{
size(600,400);
r.x = 200;
r.y = 100;
r.w = 300;
r.h = 200;
}
void draw()
{
rect(r.x, r.y, r.w, r.h);
}
. を使ってメンバにアクセス. を使ってメンバにアクセス
9. コンストラクタ
class クラス名
{
メンバ変数
クラス名( 引数 )
{
何らかの処理
}
}
9. コンストラクタ
 new のときの引数と、初期化の方法を決
めることができる
class Rectangle
{
float x, y, w, h;
Rectangle(float _x, float _y, float _w, float _h)
{
x = _x;
y = _y;
w = _w;
h = _h;
}
}
9. コンストラクタ
Rectangle r = new Rectangle(200,100,300,200);
class Rectangle
{
float x, y, w, h;
Rectangle(float _x, float _y, float _w, float _h)
{
x = _x;
y = _y;
w = _w;
h = _h;
}
}
void setup()
{
size(600,400);
}
void draw()
{
rect(r.x, r.y, r.w, r.h);
}
10. メンバ関数
 メンバ関数は、メンバ変数を扱う関数
class クラス名
{
メンバ変数
メンバ関数
}
10. メンバ関数
class Rectangle
{
float x, y, w, h;
Rectangle(float _x, float _y, float _w, float _h)
{
x = _x;
y = _y;
w = _w;
h = _h;
}
float area()
{
return w * h;
}
void draw()
{
rect(x,y,w,h);
}
}
10. メンバ関数
Rectangle r = new Rectangle(200,100,300,200);
class Rectangle
{
////////////
////////////
}
void setup()
{
size(600,400);
println(r.area());
}
void draw()
{
r.draw();
}
11. クラスの配列
Rectangle[] rects = new Rectangle[6];
class Rectangle
{
////////////
////////////
}
void setup()
{
size(600,400);
for(int i=0; i<rects.length; ++i)
{
rects[i] = new Rectangle(i*100,100,50,50);
}
}
void draw()
{
for(int i=0; i<rects.length; ++i)
{
rects[i].draw();
}
}
12. そのほかの便利な機能
 String は文字列を代入できる型
String message = “Hello”;
println(message);
12. そのほかの便利な機能
 color は色を代入できる型であり、色を作
成する関数でもある
color c = color(255,0,0);
background(c);
12. そのほかの便利な機能
class Rectangle
{
//////
void draw(color c)
{
fill(c);
rect(x,y,w,h);
}
}
void draw()
{
r.draw( color(255,0,0) );
}
 簡単アプリ開発にチャレンジ
http://p.tl/ishH

More Related Content

What's hot

ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5
noname409
 
第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法
Takashi Yamane
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
Atsushi Tadokoro
 

What's hot (20)

深層強化学習入門 2020年度Deep Learning基礎講座「強化学習」
深層強化学習入門 2020年度Deep Learning基礎講座「強化学習」深層強化学習入門 2020年度Deep Learning基礎講座「強化学習」
深層強化学習入門 2020年度Deep Learning基礎講座「強化学習」
 
1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題1次式とノルムで構成された最適化問題とその双対問題
1次式とノルムで構成された最適化問題とその双対問題
 
Linear algebra
Linear algebraLinear algebra
Linear algebra
 
ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5ディジタル信号処理 課題解説 その5
ディジタル信号処理 課題解説 その5
 
深入淺出C語言
深入淺出C語言深入淺出C語言
深入淺出C語言
 
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
最短経路問題 & 最小全域木
最短経路問題 & 最小全域木最短経路問題 & 最小全域木
最短経路問題 & 最小全域木
 
第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法第一回広島ベイズ塾・最小二乗法
第一回広島ベイズ塾・最小二乗法
 
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
V6 unix in okinawa
V6 unix in okinawaV6 unix in okinawa
V6 unix in okinawa
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 動きを生みだす、アニメーション入門 - 芸大グラフィックスプログラミング演習B
 
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
 
Chapter1 4.6
Chapter1 4.6Chapter1 4.6
Chapter1 4.6
 
ZDD基礎
ZDD基礎ZDD基礎
ZDD基礎
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 

Similar to Processingによるプログラミング入門 第6回

速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
Akira Inoue
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentation
Jason Namkung
 
Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説
JPCERT Coordination Center
 
今さら始めるCoffeeScript
今さら始めるCoffeeScript今さら始めるCoffeeScript
今さら始めるCoffeeScript
Ashitaba YOSHIOKA
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよ
koji lin
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
Atsushi Tadokoro
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
Tomoharu ASAMI
 

Similar to Processingによるプログラミング入門 第6回 (20)

速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentation
 
現実世界のJRuby
現実世界のJRuby現実世界のJRuby
現実世界のJRuby
 
Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説
 
Implementation patterns
Implementation patternsImplementation patterns
Implementation patterns
 
Project lambda
Project lambdaProject lambda
Project lambda
 
現実世界のJRuby(ショートバージョン)
現実世界のJRuby(ショートバージョン)現実世界のJRuby(ショートバージョン)
現実世界のJRuby(ショートバージョン)
 
今さら始めるCoffeeScript
今さら始めるCoffeeScript今さら始めるCoffeeScript
今さら始めるCoffeeScript
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよ
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
Best practice laravel
Best practice laravelBest practice laravel
Best practice laravel
 
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
 

More from Ryo Suzuki

More from Ryo Suzuki (9)

Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
Processingによるプログラミング入門 第5回
Processingによるプログラミング入門 第5回Processingによるプログラミング入門 第5回
Processingによるプログラミング入門 第5回
 
Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回
 
Processingによるプログラミング入門 第3回
Processingによるプログラミング入門 第3回Processingによるプログラミング入門 第3回
Processingによるプログラミング入門 第3回
 
Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回
 
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"
 
Kinect 入門
Kinect 入門Kinect 入門
Kinect 入門
 
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
 

Recently uploaded

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (12)

論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 

Processingによるプログラミング入門 第6回