SlideShare une entreprise Scribd logo
1  sur  25
1
                             N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




kaetsu.js #02
N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)
2
                   N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




1から1000までの数に対してFizzBuzz問題を解け!


•  3の倍数:Fizzと出力!
•  5の倍数:Buzzと出力!
•  3の倍数かつ5の倍数:FizzBuzzと出力!
•  それ以外:数字を出力!
3
                   N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




方針:細かい機能からつくっていく

1.  まず1と出力するプログラムを作る!
2.  1から1000まで出力するプログラムをつくる!
3.  3の倍数のときにFizzと出力するように変える!
4.  5の倍数のときにBuzzと出力するように変える!
5.  3と5の倍数のときにFizzBuzzと出力するように変える
4
                     N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




まず1と出力するプログラムを作る


document.write(1);
5
                              N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




1から1000まで出力するプログラムをつくる

var start= 1;!

var end = 1001;!

while(start < end){!

    document.write(start);!

    start = start + 1;!

}
6
                       N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




3の倍数のときにFizzと出力するように変える


var start= 1;!

var end = 1001;!

while(start < end){!

    // 次のページへ!

}
7
                                N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




3の倍数のときにFizzと出力するように変える

(続き)


if( start % 3 == 0){!

     document.write("Fizz");!

}else{!

 document.write(start);!

}!

start = start + 1;
8
                                  N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




5の倍数のときにBuzzと出力する


if( start % 3 == 0){!         document.write(start);!

  document.write("Fizz");!   }!

}else if(start % 5 == 0){!   start = start + 1;

  document.write("Buzz");!

}else {!
9
                                     N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




3と5の倍数のときにFizzBuzzと出力する

if(start%3 == 0 &&start%5 == 0){! document.write("Buzz");!

 document.write("FizzBuzz");!   }else {!

}if( start % 3 == 0){!           document.write(start);!

  document.write("Fizz");!      }!

} else if(start % 5 == 0){!     start = start + 1;
10
                             N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




3と5の倍数のときにFizzBuzzと出力する

(バリエーション)

var msg = "";!         }!

if(start%3 == 0 ){!    if(msg == ""){!

  msg += "Fizz";!           msg = start;!

}!                     }!

if(start % 5 == 0){!   document.write(msg);!

  msg += "Buzz";!      start = start + 1;
11
               N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




関数:手続きをまとめて名前をつけたもの


•  関数定義:関数を定義すること!
•  呼び出し:定義された関数を使うこと
12
               N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




関数定義のために必要なこと


•  名前!
•  まとめる仕事内容!
•  引数と返り値
13
                N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




引数と返り値


•  引数:パラメーター!
•  返り値:呼び出された関数の評価値!
14
                       N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




引き数に1を足して返す関数


function addOne(x){!

    return x + 1;!

}
15
                       N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




引数を足して返す関数


function add(x, y){!

    return x + y;!

}
16
                      N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




関数の呼び出し


var a = addOne(2);!

a = addOne(a);!

var b = addOne(a);!

var c = add(a, b);
17
                 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




スコープ:名前の有効範囲


•  変数や関数の名前には有効範囲がある!
 -  スコープ!

 -  宣言や定義された場所で自動的にきまる!

•  グローバルスコープとローカルスコープ!
18
               N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




ローカルスコープ


•  その関数の中でのみ有効であること!
•  関数定義の中で宣言、定義された名前は自動的に
ローカルスコープに所属する!

•  関数のそとでは利用できない
19
                         N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




例:x , yとretはaddの中でのみ有効


function add(x, y){!

     var ret = x + y;!

     return ret;!

}!
20
                            N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




subの中では、sは有効ではない

addの中では、dは有効ではない


function add(x, y){!   function sub(x , y){!

     var s = x + y;!       var d = x - y;!

     return s;!            return d;!

}!                     }

!
21
               N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




グローバルスコープ


•  プログラム全体で有効であること!
•  ローカルスコープではない名前はグローバルス
コープに所属する
22
                 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




関数のまとめ


•  関数:仕事をまとめたもの!
•  スコープ:名前の有効範囲!
 -  グローバルスコープ!

 -  ローカルスコープ!
23
                    N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




練習その1:次の関数を定義して使え


•  名前:toFizzBuzz!
•  引数:一つ!
•  返り値:引数に取った値によって、FizzかBuzzか
 FizzBuzzか数値を返す
24
                       N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




練習問題その2:次の関数を定義して使え

•  名前:fizzbuzz!
•  第1引数:FizzBuzz問題の最初の数!
•  第2匹数:FizzBuzz問題の終わりの数!
•  返り値:なし!
•  やること:第1引数から第2引数までの間でFizzBuzz問題を解い
 て、結果を出力する。
25
                         N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)   2012/04/23




回答例


•  練習問題その1:http://jsdo.it/chikoski/neon!
•  練習問題その2:http://jsdo.it/chikoski/Aqch

Contenu connexe

En vedette

EDEN võrgustik 2012
EDEN võrgustik 2012EDEN võrgustik 2012
EDEN võrgustik 2012
Aivar Ruukel
 
Hari sokan sekolahmu
Hari sokan sekolahmuHari sokan sekolahmu
Hari sokan sekolahmu
Syed Adib
 
Vincent Van Gogh
Vincent Van GoghVincent Van Gogh
Vincent Van Gogh
laragbea
 
Scheda libri di_testo_2012
Scheda libri di_testo_2012Scheda libri di_testo_2012
Scheda libri di_testo_2012
netizen
 
경정기 3차 팀플
경정기 3차 팀플경정기 3차 팀플
경정기 3차 팀플
숙현 나
 
My favorite philosophy
My favorite philosophyMy favorite philosophy
My favorite philosophy
filipj2000
 
Հնդկաստան,Չինաստան,Ճապոնիա
Հնդկաստան,Չինաստան,Ճապոնիա  Հնդկաստան,Չինաստան,Ճապոնիա
Հնդկաստան,Չինաստան,Ճապոնիա
ganyan
 
Handout cityeventslive
Handout cityeventsliveHandout cityeventslive
Handout cityeventslive
City Events
 
Teaching & Learning With Internet (9B)
Teaching & Learning With Internet (9B)Teaching & Learning With Internet (9B)
Teaching & Learning With Internet (9B)
cikguyatie_uum
 
20110412220212552(2)
20110412220212552(2)20110412220212552(2)
20110412220212552(2)
catarinapaim
 
Acceleration
AccelerationAcceleration
Acceleration
aimorales
 

En vedette (20)

Handout econsus
Handout econsusHandout econsus
Handout econsus
 
EDEN võrgustik 2012
EDEN võrgustik 2012EDEN võrgustik 2012
EDEN võrgustik 2012
 
La Rochelle workshop 2016
La Rochelle workshop 2016La Rochelle workshop 2016
La Rochelle workshop 2016
 
Hari sokan sekolahmu
Hari sokan sekolahmuHari sokan sekolahmu
Hari sokan sekolahmu
 
Vincent Van Gogh
Vincent Van GoghVincent Van Gogh
Vincent Van Gogh
 
Scheda libri di_testo_2012
Scheda libri di_testo_2012Scheda libri di_testo_2012
Scheda libri di_testo_2012
 
경정기 3차 팀플
경정기 3차 팀플경정기 3차 팀플
경정기 3차 팀플
 
원격교육활용론
원격교육활용론원격교육활용론
원격교육활용론
 
Consumers behaviour 2
Consumers behaviour 2Consumers behaviour 2
Consumers behaviour 2
 
Search engine
Search engineSearch engine
Search engine
 
محطة معرفة مؤتة1
محطة معرفة مؤتة1محطة معرفة مؤتة1
محطة معرفة مؤتة1
 
My favorite philosophy
My favorite philosophyMy favorite philosophy
My favorite philosophy
 
Հնդկաստան,Չինաստան,Ճապոնիա
Հնդկաստան,Չինաստան,Ճապոնիա  Հնդկաստան,Չինաստան,Ճապոնիա
Հնդկաստան,Չինաստան,Ճապոնիա
 
Handout cityeventslive
Handout cityeventsliveHandout cityeventslive
Handout cityeventslive
 
Teaching & Learning With Internet (9B)
Teaching & Learning With Internet (9B)Teaching & Learning With Internet (9B)
Teaching & Learning With Internet (9B)
 
20110412220212552(2)
20110412220212552(2)20110412220212552(2)
20110412220212552(2)
 
Acceleration
AccelerationAcceleration
Acceleration
 
Manipulador de aparatos de bronceado
Manipulador de aparatos de bronceadoManipulador de aparatos de bronceado
Manipulador de aparatos de bronceado
 
eFolder Expert Series Webinar — More than Dropbox: 5 Unique File Sync Deploym...
eFolder Expert Series Webinar — More than Dropbox: 5 Unique File Sync Deploym...eFolder Expert Series Webinar — More than Dropbox: 5 Unique File Sync Deploym...
eFolder Expert Series Webinar — More than Dropbox: 5 Unique File Sync Deploym...
 
Zakelijk twitteren smc0412
Zakelijk twitteren smc0412Zakelijk twitteren smc0412
Zakelijk twitteren smc0412
 

Plus de Noritada Shimizu

Plus de Noritada Shimizu (20)

20160803 devrel
20160803 devrel20160803 devrel
20160803 devrel
 
20160713 webvr
20160713 webvr20160713 webvr
20160713 webvr
 
20160601 devtools
20160601 devtools20160601 devtools
20160601 devtools
 
20150512 webgl-off-the-main-thread
20150512 webgl-off-the-main-thread20150512 webgl-off-the-main-thread
20150512 webgl-off-the-main-thread
 
20160428 html5jwebplat
20160428 html5jwebplat20160428 html5jwebplat
20160428 html5jwebplat
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
 
Mozilla とブラウザゲーム
Mozilla とブラウザゲームMozilla とブラウザゲーム
Mozilla とブラウザゲーム
 
2016 gunma.web games-and-asm.js
2016 gunma.web games-and-asm.js2016 gunma.web games-and-asm.js
2016 gunma.web games-and-asm.js
 
20151224-games
20151224-games20151224-games
20151224-games
 
20151128 firefoxos-handson
20151128 firefoxos-handson20151128 firefoxos-handson
20151128 firefoxos-handson
 
20151117 devtools
20151117 devtools20151117 devtools
20151117 devtools
 
Inspection & Tweak: Firefox を使ったフロント開発
Inspection & Tweak: Firefox を使ったフロント開発Inspection & Tweak: Firefox を使ったフロント開発
Inspection & Tweak: Firefox を使ったフロント開発
 
20150822 osc-shimane
20150822 osc-shimane20150822 osc-shimane
20150822 osc-shimane
 
20150829 firefox-os-handson
20150829 firefox-os-handson20150829 firefox-os-handson
20150829 firefox-os-handson
 
20150829 firefox-os
20150829 firefox-os20150829 firefox-os
20150829 firefox-os
 
20150727 Development tools for Firefox OS apps
20150727 Development tools for Firefox OS apps20150727 Development tools for Firefox OS apps
20150727 Development tools for Firefox OS apps
 
Firefox OS でアプリを作るときに気をつけたい N 個のこと
Firefox OS  でアプリを作るときに気をつけたい N 個のことFirefox OS  でアプリを作るときに気をつけたい N 個のこと
Firefox OS でアプリを作るときに気をつけたい N 個のこと
 
Firefox OSアプリ開発ハンズオン(Hello World編)
Firefox OSアプリ開発ハンズオン(Hello World編)Firefox OSアプリ開発ハンズオン(Hello World編)
Firefox OSアプリ開発ハンズオン(Hello World編)
 
WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)
WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)
WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)
 
Application submission, management and manetization in Firefox Marketplace
Application submission, management and manetization in Firefox MarketplaceApplication submission, management and manetization in Firefox Marketplace
Application submission, management and manetization in Firefox Marketplace
 

kaetsu.js #02

  • 1. 1 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 kaetsu.js #02 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski)
  • 2. 2 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 1から1000までの数に対してFizzBuzz問題を解け! •  3の倍数:Fizzと出力! •  5の倍数:Buzzと出力! •  3の倍数かつ5の倍数:FizzBuzzと出力! •  それ以外:数字を出力!
  • 3. 3 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 方針:細かい機能からつくっていく 1.  まず1と出力するプログラムを作る! 2.  1から1000まで出力するプログラムをつくる! 3.  3の倍数のときにFizzと出力するように変える! 4.  5の倍数のときにBuzzと出力するように変える! 5.  3と5の倍数のときにFizzBuzzと出力するように変える
  • 4. 4 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 まず1と出力するプログラムを作る document.write(1);
  • 5. 5 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 1から1000まで出力するプログラムをつくる var start= 1;! var end = 1001;! while(start < end){! document.write(start);! start = start + 1;! }
  • 6. 6 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 3の倍数のときにFizzと出力するように変える var start= 1;! var end = 1001;! while(start < end){! // 次のページへ! }
  • 7. 7 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 3の倍数のときにFizzと出力するように変える
 (続き) if( start % 3 == 0){! document.write("Fizz");! }else{! document.write(start);! }! start = start + 1;
  • 8. 8 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 5の倍数のときにBuzzと出力する if( start % 3 == 0){! document.write(start);! document.write("Fizz");! }! }else if(start % 5 == 0){! start = start + 1; document.write("Buzz");! }else {!
  • 9. 9 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 3と5の倍数のときにFizzBuzzと出力する if(start%3 == 0 &&start%5 == 0){! document.write("Buzz");! document.write("FizzBuzz");! }else {! }if( start % 3 == 0){! document.write(start);! document.write("Fizz");! }! } else if(start % 5 == 0){! start = start + 1;
  • 10. 10 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 3と5の倍数のときにFizzBuzzと出力する
 (バリエーション) var msg = "";! }! if(start%3 == 0 ){! if(msg == ""){! msg += "Fizz";! msg = start;! }! }! if(start % 5 == 0){! document.write(msg);! msg += "Buzz";! start = start + 1;
  • 11. 11 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 関数:手続きをまとめて名前をつけたもの •  関数定義:関数を定義すること! •  呼び出し:定義された関数を使うこと
  • 12. 12 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 関数定義のために必要なこと •  名前! •  まとめる仕事内容! •  引数と返り値
  • 13. 13 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 引数と返り値 •  引数:パラメーター! •  返り値:呼び出された関数の評価値!
  • 14. 14 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 引き数に1を足して返す関数 function addOne(x){! return x + 1;! }
  • 15. 15 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 引数を足して返す関数 function add(x, y){! return x + y;! }
  • 16. 16 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 関数の呼び出し var a = addOne(2);! a = addOne(a);! var b = addOne(a);! var c = add(a, b);
  • 17. 17 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 スコープ:名前の有効範囲 •  変数や関数の名前には有効範囲がある! -  スコープ! -  宣言や定義された場所で自動的にきまる! •  グローバルスコープとローカルスコープ!
  • 18. 18 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 ローカルスコープ •  その関数の中でのみ有効であること! •  関数定義の中で宣言、定義された名前は自動的に ローカルスコープに所属する! •  関数のそとでは利用できない
  • 19. 19 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 例:x , yとretはaddの中でのみ有効 function add(x, y){! var ret = x + y;! return ret;! }!
  • 20. 20 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 subの中では、sは有効ではない
 addの中では、dは有効ではない function add(x, y){! function sub(x , y){! var s = x + y;! var d = x - y;! return s;! return d;! }! } !
  • 21. 21 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 グローバルスコープ •  プログラム全体で有効であること! •  ローカルスコープではない名前はグローバルス コープに所属する
  • 22. 22 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 関数のまとめ •  関数:仕事をまとめたもの! •  スコープ:名前の有効範囲! -  グローバルスコープ! -  ローカルスコープ!
  • 23. 23 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 練習その1:次の関数を定義して使え •  名前:toFizzBuzz! •  引数:一つ! •  返り値:引数に取った値によって、FizzかBuzzか FizzBuzzか数値を返す
  • 24. 24 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 練習問題その2:次の関数を定義して使え •  名前:fizzbuzz! •  第1引数:FizzBuzz問題の最初の数! •  第2匹数:FizzBuzz問題の終わりの数! •  返り値:なし! •  やること:第1引数から第2引数までの間でFizzBuzz問題を解い て、結果を出力する。
  • 25. 25 N. Shimizu (chiko@kaetsu.ac.jp / @chikoski) 2012/04/23 回答例 •  練習問題その1:http://jsdo.it/chikoski/neon! •  練習問題その2:http://jsdo.it/chikoski/Aqch