Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プログラミング基礎#2(名古屋造形大学)
Search
ISHIGO Yusuke
PRO
December 02, 2024
Education
0
26
プログラミング基礎#2(名古屋造形大学)
ISHIGO Yusuke
PRO
December 02, 2024
Tweet
Share
More Decks by ISHIGO Yusuke
See All by ISHIGO Yusuke
2024年度参加希望者向けアプリ開発プロジェクト説明(名古屋文理大学)
yusk1450
PRO
0
7
プログラミング基礎#1(名古屋造形大学)
yusk1450
PRO
0
21
プログラミング基礎#3(名古屋造形大学)
yusk1450
PRO
0
29
プログラミング基礎#4(名古屋造形大学)
yusk1450
PRO
0
76
こどもICT学級 人工知能(AI)ってなに?(2020/11/21)
yusk1450
PRO
0
4
こどもICT学級 人工知能(AI)ってなに?(2020/11/7)
yusk1450
PRO
0
4
2025年度 基礎演習(石郷ゼミ)紹介(名古屋文理大学)
yusk1450
PRO
0
23
2024年度アプリ開発プロジェクト紹介(名古屋文理大学)
yusk1450
PRO
0
49
Processing入門
yusk1450
PRO
0
82
Other Decks in Education
See All in Education
地図を活用した関西シビックテック事例紹介
barsaka2
0
100
Zero to Hero
takesection
0
130
Web Architectures - Lecture 2 - Web Technologies (1019888BNR)
signer
PRO
0
2.7k
Semantic Web and Web 3.0 - Lecture 9 - Web Technologies (1019888BNR)
signer
PRO
2
2.6k
JavaScript - Lecture 6 - Web Technologies (1019888BNR)
signer
PRO
0
2.5k
Comezando coas redes
irocho
0
400
H5P-työkalut
matleenalaakso
4
36k
Mathematics used in cryptography around us
herumi
2
380
開発終了後こそ成長のチャンス!プロダクト運用を見送った先のアクションプラン
ohmori_yusuke
2
190
BrightonSEO, San Diego, CA 2024
mchowning
0
100
LLMs for Social Simulation: Progress, Opportunities and Challenges
wingnus
1
120
自己紹介 / who-am-i
yasulab
PRO
2
4.3k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
For a Future-Friendly Web
brad_frost
175
9.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Large-scale JavaScript Application Architecture
addyosmani
510
110k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
How to Ace a Technical Interview
jacobian
276
23k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
How STYLIGHT went responsive
nonsquared
95
5.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Building Applications with DynamoDB
mza
91
6.1k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Transcript
プログラミング基礎#2 Basics of Programming 名古屋造形大学
p5.js(ピーファイブ) グラフィカルなプログラムを簡単に作ることができる開発ツール https://editor.p5js.org/ プログラムを書くところ プログラムの結果
Processing プログラミング言語「Java」をベースにMITメディアラボにて開発されたアートと ビジュアルデザインのためのプログラミング環境(オープンソース・ソフトウェア) https://processing.org/download/
クリエイティブコーディング
「ジェネラティブ・アート」日本語編集 ジェネラティブ・アート Processingによる実践ガイド マット・ピアソン(著) 久保田 晃弘(監訳)、沖 啓介(訳) ビー・エヌ・エヌ新社
プログラムの流れ 順次 プログラムは、基本的に上から下へ1行ずつ順番に実行される size(640, 480); frameRate(60); background(120); //println(Serial.list()); String portID
= Serial.list()[1]; mono = new MonoStick(new Serial(this, portID, 115200)); mono.debugMode = true; 実行順序
プログラミングのルール function setup() { createCanvas(400, 400); } function draw() {
background(220); } 全く同じように書いてみよう 動かない場合は何かが違う(大文字・小文字、カッコ、記号は合っているか)
プログラムの実行 クリックで実行する
プログラミングのルール function setup() { createCanvas(400, 400); } function draw() {
background(220); } プログラミングの注意点 ・{}が処理のかたまりを表す ・大文字と小文字は区別される ・命令の後ろには「;」をつける ブロック名と同じ ブロックの中身
プログラミングのルール functionはイベント関数(すでに用意されている関数)を表す function setup() { createCanvas(400, 400); } function draw()
{ background(220); } setup → 最初に一度だけ実行される draw → 何度も呼び出される
createCanvas(400, 400); 関数(機能)の呼び出し方 関数名 内容1 (第1引数) 内容2 (第2引数) 画面幅 画面高さ
画面のサイズを決める 最後には セミコロン 画面サイズを変えてみよう(例:幅→640、高さ→480) 内容1 (第1引数) 内容2 (第2引数)
四角を書いてみる createCanvas(640, 480); rect(50, 50, 200, 200); ウィンドウのサイズを幅640、高さ480にする 左上座標(50, 50)に幅200px、高さ200pxで四角を書く
(0, 0) 480 640 50, 50 (50, 50) 200 200
枠線の指定 stroke(255, 0, 0); 枠線の色を赤255 緑0 青0にする strokeWeight(4); 枠線の太さを4にする stroke(0,
0, 0); 枠線の色を設定する 赤(0〜255)、緑(0〜255)、青(0〜255)
円の描画 circle(160, 160, 200); 中心座標(160, 160)、直径200pxの円
フレーミーを描いてみる noFill(); 塗りつぶしをなしにする
課題(階段) 階段状に線を描画する line(0, 0, 100, 100); 始点(0, 0)から終点(100, 100)まで線を引く 始点X座標,
始点Y座標, 終点X座標, 終点Y座標
マウス座標に円を描画する circle(mouseX, mouseY, 200); mouseX → マウスのX座標 mouseY → マウスのY座標
コメント // circle(mouseX, mouseY, 200); 「//」以降に書かれたプログラムは読み飛ばされる コメント化することを「コメントアウト」と言う プログラムを試行錯誤するときは、いきなりコードを消さずに コメントとして残しておく
mouseMoved() function mouseMoved() { fi ll(random(255), random(255), random(255)); circle(mouseX, mouseY,
40); } マウスが動いたときに呼び出されるイベント関数 塗りつぶしの色を設定する random(255) 0から指定した数までのランダムな数を作る
課題 始点(0, 0)からマウス座標までランダムな色で線を引く line(0, 0, 100, 100); 始点(0, 0)から終点(100, 100)まで線を引く
徐々に消える表現 function setup() { createCanvas(640, 480); } function draw() {
background(‘rgba(255, 255, 255, 0.25)’); noStroke(); fi ll(200, 200, 200); circle(mouseX, mouseY, 100); } 透明度25%ずつ塗りつぶしていく
P5.jsリファレンス https://p5js.org/reference/
変数 変数→データを入れるための箱 100 a = 100; a abc b =
“abc”; b 文字列の場合は「”」もしくは「’」で囲う let a = 100; 変数を作る命令 (最初だけ)
変数を使ってみる 「w」という箱を作って、「640」を入れる 「h」という箱を作って、「480」を入れる w(640)とh(480)を使う let w = 640; let h
= 480; function setup() { createCanvas(w, h); } function draw() { background(220); }
変数の演算 数学の「計算」のことを、プログラムでは「演算」という ʴ ͢ ʔ Ҿ͘ ˎ ͔͚Δ ʗ ׂΔ
ˋ ׂͬͨ༨Γ 計算順序は、数学と同じ(かける・割るが優先される) 0%2=0、1%2=1、2%2=0、3%2=1…
四角を画面中央に描いてみる 左上が画面中央になるので、幅と高さを半分を引く let w = 640; let h = 480;
let boxSize = 100; function setup() { createCanvas(w, h); } function draw() { background(220); rect(w/2 - boxSize/2, h/2 - boxSize/2, boxSize, boxSize); }
let w = 640; let h = 480; let boxSize;
function setup() { createCanvas(w, h); } function draw() { background(220); noStroke(); boxSize = random(200); rect(w/2 - boxSize/2, h/2 - boxSize/2, boxSize, boxSize); } 四角のサイズをランダムに変える
課題 線をランダムな位置に描画し続ける
let w = 640; let h = 480; let x1,
y1, x2, y2; function setup() { createCanvas(w, h); x1 = random(w); y1 = random(h); x2 = random(w); y2 = random(h); } function draw() { background(220); line(x1, y1, x2, y2); } 課題 randomは関数内でしか使用できない
let w = 640; let h = 480; function setup()
{ createCanvas(w, h); } function draw() { background(220); noStroke(); rect(w/2 - 100/2, h/2 - 100/2, random(200), random(200)); } function mouseClicked() { fi ll(random(255), random(255), random(255)); } マウスクリックでランダムに色を変える クリックしたときに実行されるイベント関数
四角を画面の右側に動いていく ① Scratchでコードを考えてみる
四角を画面の右側に動かしていく let x = 0; function setup() { createCanvas(640, 480);
} function draw() { background(220); x += 1; rect(x, 200, 100, 100); } x++; 変数名 変数の中身を1増やす x += 1; 変数名 変数の中身を1増やす x += 2; 変数名 変数の中身を2増やす インクリメント
条件式 条件式の種類 a > 100 a < 100 a >=
100 aが100より大きい(100を含まない) aが100以上(100を含む) aが100より小さい(100を含まない) a <= 100 aが100以下(100を含む) a == 100 aが100と等しい a != 100 aが100ではない 条件に当てはまるときに、{}内が実行される 条件に当てはまらないときに{}内が実行される else{}は書かなくても良い if(条件式) { 条件式に当てはまったときに実行される } else { 条件式に当てはまらなかったときに実行される }
課題 1.変数「a」の中身が0なら四角を表示する、それ以外なら表示しない 2.変数「a」の中身が0なら赤色の四角、0以外なら青色の四角を表示する 3.変数「a」の中身が正の数なら赤色の四角、負の数なら青色の四角を表示する
壁にあたったら跳ね返る Scratchでコードを考えてみる
壁にあたったら跳ね返る let x = 0; let move = 1; function
setup() { createCanvas(640, 480); } function draw() { background(220); x += move; if (x > 640) { move = -1; } rect(x, 200, 100, 100); } 640を超えたら、moveを-1にする 四角が壁を突き抜けないようにするにはどうするか?
条件式 if (A && B) if (A || B) if
(A != B)
FizzBuzz問題 変数「a」の数字が、3の倍数なら赤色の四角、5の倍数なら青色の四角 15の倍数(3と5の倍数)ならピンク色の四角を表示する
課題 左右に跳ね返る四角
課題 let x = 0; let moveX = 1; function
setup() { createCanvas(640, 480); } function draw() { background(220); x += moveX; if (x > 640-100) { moveX = -1; } if (x < 0) { moveX = 1; } rect(x, 200, 100, 100); }
課題 let x = 0; let moveX = 1; function
setup() { createCanvas(640, 480); } function draw() { background(220); x += moveX; if (x > 640-100 || x < 0) { moveX *= -1; } rect(x, 200, 100, 100); }
課題 ランダムに四角を表示し、幅と高さが150pxを超えたら赤くする
一定の大きさを超えた場合、色を変える function setup() { createCanvas(640, 480); } function draw() {
background(220); let w = random(20, 200); let h = random(20, 200); let x = 640/2 - w/2; let y = 480/2 - h/2; if (w > 150 && h > 150) { fi ll(255, 0, 0); } else { fi ll(255, 255, 255); } rect(x, y, w, h); } 幅と高さが150以上の場合
課題 上下左右に跳ね返る四角(初期位置と移動速度をランダムにする)
課題 let x, y, moveX, moveY; function setup() { createCanvas(640,
480); x = random(640-100); y = random(480-100); moveX = random(-2, 2); moveY = random(-2, 2); }
課題 function draw() { background(220); x += moveX; y +=
moveY; if (x > 640-100 || x < 0) { moveX *= -1; } if (y > 480-100 || y < 0) { moveY *= -1; } rect(x, y, 100, 100); }
繰り返し 反復 同じ処理をn回繰り返す for (初期化; 条件式; 更新) { } 条件式に当てはまる間、繰り返す
function setup() { createCanvas(640, 480); } function draw() { background(220); for (let i = 0; i < 10; i++) { rect(random(400), random(400), 100, 100); } }
課題 for文を使って、四角を縦に並べる
プログラミングの構造 プログラムとは と データ 変数 データ操作 順次、分岐、反復 ……の集まり (構造化定理)