78
できる つくれる JavaScript 超初学者向け講座 実践編 13210日日曜日

できるつくれるJavascript 初学者講座 2

Embed Size (px)

DESCRIPTION

2013/02/09開催の勉強会資料です

Citation preview

Page 1: できるつくれるJavascript 初学者講座 2

できる つくれるJavaScript

〜 超初学者向け講座 実践編 〜

13年2月10日日曜日

Page 2: できるつくれるJavascript 初学者講座 2

アジェンダ

★ 基本のおさらい

★ キーワードは順次・反復・分岐

★ アルゴリズムを考える・形にしてみる

★ まとめ

213年2月10日日曜日

Page 3: できるつくれるJavascript 初学者講座 2

基本のおさらい@今日必要な知識

13年2月10日日曜日

Page 4: できるつくれるJavascript 初学者講座 2

変数

• なんらかの値を名前をつけて保持しておくためのもの。

• 何らかの値 については、数値・文字列・関数・オブジェクト、配列等、なんでも!

• 変数を利用することで、プログラムによるデータの格納や操作が可能となる。

413年2月10日日曜日

Page 5: できるつくれるJavascript 初学者講座 2

変数

• なんらかの値を名前をつけて保持しておくためのもの。

• 何らかの値 については、数値・文字列・関数・オブジェクト、配列等、なんでも!

• 変数を利用することで、プログラムによるデータの格納や操作が可能となる。

5

重要だよ!

13年2月10日日曜日

Page 6: できるつくれるJavascript 初学者講座 2

• JavaScriptインタプリタが評価して値を生成できるもの。

• 123 // 数値

• “あいう” // 文字列

• true // 論理値

• x // 変数x 

613年2月10日日曜日

Page 7: できるつくれるJavascript 初学者講座 2

• JavaScriptインタプリタが評価して値を生成できるもの。

• 123 // 数値

• “あいう” // 文字列

• true // 論理値

• x // 変数x 

7

直接データを記述するこのような形を

リテラル(定数)と呼びます

13年2月10日日曜日

Page 8: できるつくれるJavascript 初学者講座 2

• JavaScriptインタプリタが評価して値を生成できるもの。

• 123 // 数値

• “あいう” // 文字列

• true // 論理値

• x // 変数x 

8

また、式としての呼称では定数式 と呼びます

対して、変数は変数式 と呼びます

13年2月10日日曜日

Page 9: できるつくれるJavascript 初学者講座 2

演算子

• 式を組み合わせて、結果を得るためのもの

• 例えば

• var a = 2+3;

913年2月10日日曜日

Page 10: できるつくれるJavascript 初学者講座 2

演算子

• 式を組み合わせて、結果を得るためのもの

• 例えば

• var a = 2+3;

10

この+が演算子(加算演算子)2と3の定数式を組み合わせて

結果を得ます。

13年2月10日日曜日

Page 11: できるつくれるJavascript 初学者講座 2

演算子

• 式を組み合わせて、結果を得るためのもの

• 例えば

• var a = 2+3;

11

この+が演算子(加算演算子)2と3の定数式を組み合わせて

結果を得ます。

13年2月10日日曜日

Page 12: できるつくれるJavascript 初学者講座 2

演算子

• 式を組み合わせて、結果を得るためのもの

• 例えば

• var a = 2+3;

12

この=も演算子(代入演算子)右辺値を左辺値に代入します。

13年2月10日日曜日

Page 13: できるつくれるJavascript 初学者講座 2

軽くおさらいと言いつつ演算子を掘り下げる

13年2月10日日曜日

Page 14: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

14

この部分について。

13年2月10日日曜日

Page 15: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

15

2と3というそれぞれの定数式を組み合わせた「複雑な式」を作っている。

13年2月10日日曜日

Page 16: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

16

「2+3」が式であるので=(代入演算子)は

変数式a と 式「2+3」を組み合わせることが出来る。

代入演算子は、右辺を左辺に代入します。

13年2月10日日曜日

Page 17: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

17

演算子によって取り扱われるものをオペランド(被演算子)・項といいます。

演算子によって取り扱われるものをオペランド(被演算子)・項といいます。

演算子によって取り扱われるものをオペランド(被演算子)・項といいます。

13年2月10日日曜日

Page 18: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

18

演算子によって取り扱われるものをオペランド(被演算子)・項といいます。

演算子によって取り扱われるものをオペランド(被演算子)・項といいます。

+(加算演算子)のように、2つのオペランドを必要とするものを二項演算子と呼びます

13年2月10日日曜日

Page 19: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

19

=(代入演算子)も、色分けすると2つのオペランドを必要とする

二項演算子であることがわかります。

13年2月10日日曜日

Page 20: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

20

ここに注目

13年2月10日日曜日

Page 21: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

21

この部分は左辺に変数式a 右辺に定数式2がある

13年2月10日日曜日

Page 22: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

22

ではこの部分が先に処理されてしまわないのはなぜか?

13年2月10日日曜日

Page 23: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

23

A. 演算子は種類ごとに優先順位(処理順序)が決まっているから

13年2月10日日曜日

Page 24: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3

24

算術演算子は代入演算子より優先順位が高いので、2+3が先に

評価されるのです。

13年2月10日日曜日

Page 25: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3 * 5

25

わかりやすいところでは算術演算子(加減乗除)は

乗算(*)・除算(/)・剰余算(%)のほうが加算(+)・減算(ー)よりも

優先度が高いです

13年2月10日日曜日

Page 26: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3 * 5

26

①最も優先順位の高い掛け算が処理されて

13年2月10日日曜日

Page 27: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3 * 5

27

②その次に優先順位の高い足し算が処理されて

13年2月10日日曜日

Page 28: できるつくれるJavascript 初学者講座 2

演算子@ちょい詳しく

var a = 2+3 * 5

28

③最後に代入演算子が右辺をaに代入する。

13年2月10日日曜日

Page 29: できるつくれるJavascript 初学者講座 2

とりあえず演算子ここまで

13年2月10日日曜日

Page 30: できるつくれるJavascript 初学者講座 2

ちなみに演算子の優先順位と種類については

13年2月10日日曜日

Page 31: できるつくれるJavascript 初学者講座 2

グーグル先生にきいたほうがいいよ!

(たくさんあるので)

13年2月10日日曜日

Page 32: できるつくれるJavascript 初学者講座 2

• JavaScriptになにかさせるためのもの

• なにが出来るかは予め言語側で定義されている

3213年2月10日日曜日

Page 33: できるつくれるJavascript 初学者講座 2

if文

• if文はJavaScriptが条件を判定したり、条件付きで文を実行したりするための基本的な制御文

• if文をつかうと条件に応じて処理を分岐させることが出来る

3313年2月10日日曜日

Page 34: できるつくれるJavascript 初学者講座 2

if文

• if文はJavaScriptが条件を判定したり、条件付きで文を実行したりするための基本的な制御文

• if文をつかうと条件に応じて処理を分岐させることが出来る

34

重要だよ!

13年2月10日日曜日

Page 35: できるつくれるJavascript 初学者講座 2

if文@例

✴var name = “山田”;

✴if(name == “鈴木”){

✴alert(“( ^q^)<おっす鈴木!”);

✴}

✴else if(name == “山田”){

✴alert(“(´・ω・)<山田かぁ”);

✴}

✴else {

✴alert(“:(;゙゚’ω゚’):<誰だお前!!”);

✴}

3513年2月10日日曜日

Page 36: できるつくれるJavascript 初学者講座 2

if文@例

✴var name = “山田”;

✴if(name == “鈴木”){

✴alert(“( ^q^)<おっす鈴木!”);

✴}

✴else if(name == “山田”){

✴alert(“(´・ω・)<山田かぁ”);

✴}

✴else {

✴alert(“:(;゙゚’ω゚’):<誰だお前!!”);

✴}

36

==(等値演算子)を使って右辺と左辺が等値であるか評価し、

その結果をif文に渡している

13年2月10日日曜日

Page 37: できるつくれるJavascript 初学者講座 2

if文@例

✴var name = “山田”;

✴if(name == “鈴木”){

✴alert(“( ^q^)<おっす鈴木!”);

✴}

✴else if(name == “山田”){

✴alert(“(´・ω・)<山田かぁ”);

✴}

✴else {

✴alert(“:(;゙゚’ω゚’):<誰だお前!!”);

✴}

37

else文はif文の実行が行われなかった時に、実行される。

13年2月10日日曜日

Page 38: できるつくれるJavascript 初学者講座 2

if文@例②

✴var sei = “山田”;var mei = “太郎”;

✴if(sei == “鈴木” || mei == “太郎”){

✴alert(“( ^q^)<おっす鈴木!…か、太郎”);

✴}

✴else {

✴alert(“(^q^)<鈴木でも太郎でもないやつに用はない”);

✴}

3813年2月10日日曜日

Page 39: できるつくれるJavascript 初学者講座 2

if文@例②

✴var sei = “山田”;var mei = “太郎”;

✴if(sei == “鈴木” || mei == “太郎”){

✴alert(“( ^q^)<おっす鈴木!…か、太郎”);

✴}

✴else {

✴alert(“(^q^)<鈴木でも太郎でもないやつに用はない”);

✴}

39

||(論理和演算子)姓が鈴木 または 名が太郎

を表している

13年2月10日日曜日

Page 40: できるつくれるJavascript 初学者講座 2

if文@例③

✴var sei = “山田”;var mei = “太郎”;var age = 30;

✴if(((sei == “鈴木”&& mei == “花子” ) || mei == “太郎”) && age >= 25 ){

✴alert(“:(;゙゚’ω゚’):<鈴木花子か名前が太郎 かつ 25歳以上・・・!”);

✴}

4013年2月10日日曜日

Page 41: できるつくれるJavascript 初学者講座 2

if文@例③

✴var sei = “山田”;var mei = “太郎”;var age = 30;

✴if(((sei == “鈴木”&& mei == “花子” ) || mei == “太郎”) && age >= 25 ){

✴alert(“:(;゙゚’ω゚’):<鈴木花子か名前が太郎 かつ 25歳以上・・・!”);

✴}

41

評価させる式が複雑になればなるほどわかりづらくなります。できれば、適当なところでわけるようにしましょう。

13年2月10日日曜日

Page 42: できるつくれるJavascript 初学者講座 2

while文

• 繰り返し処理をするための基本的な制御文

• 繰り返しをするための文は実は他にも色々ある

• do/while文

• for文

• for/in文

4213年2月10日日曜日

Page 43: できるつくれるJavascript 初学者講座 2

while文@例

✴var count = 0;

✴while(count < 10) {

✴ document.write(count + ’<br />’);

✴ count++;

✴}

4313年2月10日日曜日

Page 44: できるつくれるJavascript 初学者講座 2

while文@例

✴var count = 0;

✴while(count < 10) {

✴ document.write(count + ’<br />’);

✴ count++;

✴}

44

whileに渡す値がtrueである間、繰り返し処理をする

13年2月10日日曜日

Page 45: できるつくれるJavascript 初学者講座 2

for文

• 繰り返し処理をするための基本的な制御文

• whileより少しだけ複雑

• 基本としておさえておきたい

4513年2月10日日曜日

Page 46: できるつくれるJavascript 初学者講座 2

for文@例

✴for(var count=0; count < 10; count++){

✴ document.write(count + ‘<br />’);

✴}

46

さっきのwhileの例と同じ結果を出力します

13年2月10日日曜日

Page 47: できるつくれるJavascript 初学者講座 2

for文@例

✴for(var count=0; count < 10; count++){

✴ document.write(count + ‘<br />’);

✴}

47

①初期化

13年2月10日日曜日

Page 48: できるつくれるJavascript 初学者講座 2

for文@例

✴for(var count=0; count < 10; count++){

✴ document.write(count + ‘<br />’);

✴}

48

②ループ継続条件の判定

13年2月10日日曜日

Page 49: できるつくれるJavascript 初学者講座 2

for文@例

✴for(var count=0; count < 10; count++){

✴ document.write(count + ‘<br />’);

✴}

49

③ループ都度行う処理(increment)

13年2月10日日曜日

Page 50: できるつくれるJavascript 初学者講座 2

✄----- ここまでおさらい -----✄

13年2月10日日曜日

Page 51: できるつくれるJavascript 初学者講座 2

キーワードは順次・反復・分岐

13年2月10日日曜日

Page 52: できるつくれるJavascript 初学者講座 2

「処理」というものについて

✴ だいたいの「処理」は

順次・反復・分岐 の組み合わせで解決できる。

5213年2月10日日曜日

Page 53: できるつくれるJavascript 初学者講座 2

(^q^)<順次?

13年2月10日日曜日

Page 55: できるつくれるJavascript 初学者講座 2

wikipediaコピーしてすみません

13年2月10日日曜日

Page 56: できるつくれるJavascript 初学者講座 2

順次とはどういうことか

56

✴var price = 100;

✴var tax = 5;

✴var zeikomi = price + Math.floor(price * (tax / 100));

13年2月10日日曜日

Page 57: できるつくれるJavascript 初学者講座 2

順次とはどういうことか

57

✴var price = 100;

✴var tax = 5;

✴var zeikomi = price + Math.floor(price * (tax / 100));

①代入処理

13年2月10日日曜日

Page 58: できるつくれるJavascript 初学者講座 2

順次とはどういうことか

58

✴var price = 100;

✴var tax = 5;

✴var zeikomi = price + Math.floor(price * (tax / 100));

①代入処理

②代入処理

13年2月10日日曜日

Page 59: できるつくれるJavascript 初学者講座 2

順次とはどういうことか

59

✴var price = 100;

✴var tax = 5;

✴var zeikomi = price + Math.floor(price * (tax / 100));

①代入処理

②代入処理

③演算処理

13年2月10日日曜日

Page 60: できるつくれるJavascript 初学者講座 2

順次とはどういうことか

60

✴var price = 100;

✴var tax = 5;

✴var zeikomi = price + Math.floor(price * (tax / 100));

①代入処理

②代入処理

③演算処理

④演算処理

13年2月10日日曜日

Page 61: できるつくれるJavascript 初学者講座 2

順次とはどういうことか

61

✴var price = 100;

✴var tax = 5;

✴var zeikomi = price + Math.floor(price * (tax / 100));

①代入処理

②代入処理

③演算処理

④演算処理

もういいよね…

13年2月10日日曜日

Page 62: できるつくれるJavascript 初学者講座 2

順次とはどういうことか

62

✴var price = 100;

✴var tax = 5;

✴var zeikomi = price + Math.floor(price * (tax / 100));

①代入処理

②代入処理

③演算処理

④演算処理

しんどいのでこれ以上は省略しますがプログラムに記された順に逐次処理を

行なっていく、のが分かったと思います。

13年2月10日日曜日

Page 63: できるつくれるJavascript 初学者講座 2

(; ・`д・´)<反復と分岐は・・・

13年2月10日日曜日

Page 64: できるつくれるJavascript 初学者講座 2

(; ・`д・´)<forとif・・・!

13年2月10日日曜日

Page 65: できるつくれるJavascript 初学者講座 2

ガッツリおさらいをやった理由

65

• おさらいでやった内容は

• 順次を行うための変数と演算子について

• 分岐を行うためのif文について

• 反復を行うためのwhile文 for文について

13年2月10日日曜日

Page 66: できるつくれるJavascript 初学者講座 2

つまり・・・

13年2月10日日曜日

Page 67: できるつくれるJavascript 初学者講座 2

おさらいによってだいたいの処理ができるように

なったんだよ!!

13年2月10日日曜日

Page 69: できるつくれるJavascript 初学者講座 2

アルゴリズムを考える

実践編

13年2月10日日曜日

Page 70: できるつくれるJavascript 初学者講座 2

例題

70

1. 一列に並んでいる20匹の犬と猫がいます

2. 1.の犬と猫は順番に餌を受け取りに来ますただし、犬と猫の並び順はバラバラであり、受け取りに来るまでわかりません

3. 犬か猫かは名前を尋ねると答えてくれます

4. 犬にはドッグフードを、猫にはカルカンをあげてください

13年2月10日日曜日

Page 71: できるつくれるJavascript 初学者講座 2

やってみよう

★ http://jsfiddle.net/seino/2Trz9/2/★ 実装する前に、処理の流れを紙に書き起

こししてみるといいかもしれません。

7113年2月10日日曜日

Page 72: できるつくれるJavascript 初学者講座 2

例題2

72

1. 無作為に数値要素の格納されている配列 arr が存在します

2. arr に格納されている数値要素を順番に並べてください

※昇順・降順・手法は問いません。

13年2月10日日曜日

Page 73: できるつくれるJavascript 初学者講座 2

やってみよう2

★ http://jsfiddle.net/seino/y5REL/1/★ 実装する前に、処理の流れを紙に・・・

これは多分書いたほうがいいです。

7313年2月10日日曜日

Page 74: できるつくれるJavascript 初学者講座 2

まとめ

13年2月10日日曜日

Page 75: できるつくれるJavascript 初学者講座 2

応用を考える

75

• 例題でやった内容は、非常に単純な形のものでしたが、考え方それそのものは、実際にやりたい業務への応用がきく部分になると思います。

• 例えば

• 時系列の順番で並べる

• 特定の要素だけ、色変えや非表示など、何らかの制御をかける  ・・・など

13年2月10日日曜日

Page 76: できるつくれるJavascript 初学者講座 2

プログラミングとは何かを考える

76

• 私見ですが。私見ですよ!

• プログラミングは、扱う言語について深く知っているかとかどうかより「何を どういうときに どうするか」を上手くやる というのが肝要だとおもってます

• なので、大事なのは最適当なアルゴリズムを考えるようにすること

13年2月10日日曜日

Page 77: できるつくれるJavascript 初学者講座 2

するとなにがおこるか

77

• 宝くじはあたるわ庭から温泉が湧くわ彼女が出来るわですよ!嘘ですけど

• ライブラリやフレームワークなどを使う時の勘所がちょっとわかり良くなる・・・かもしれません(もともとのライブラリとかフレームワークが 残念な作りの場合はその限りではありませんが)

13年2月10日日曜日

Page 78: できるつくれるJavascript 初学者講座 2

ありがとうございました

13年2月10日日曜日