SlideShare a Scribd company logo
今さら聞けない!
Webデザイナーのための
プログラミング講座
AED LABO 2015.1.25. sun.
TOSHIYUKI TAKAHASHI (GRAPHIC ARTS UNIT )
“コンピュータが行うべき処理を順序立てて記述したもの”
出典:プログラムとは 〔 コンピュータプログラム 〕 【 program 】 - 意味/解説/説明/定義 : IT用語辞典(http://e-words.jp/w/E38397E383ADE382B0E383A9E383A0.html)
プログラムとは
1つめの処理 実行
2つめの処理
3つめの処理
4つめの処理
……
実行
実行
実行
あらかじめ決められた処理を上から順番に実行していく
プログラムとは
3つめの処理-A
……
4つめの処理-A実行
実行
1つめの処理 実行
2つめの処理 実行
条件A B
プログラムとは
実行
実行
3つめの処理-B
4つめの処理-B
……
1つめの処理 実行
2つめの処理 実行
条件A B
プログラムとは
3つめの処理-A
……
4つめの処理-A
1つめの処理
2つめの処理
3つめの処理-B
4つめの処理-B
……条件によって処理を振り分ける
条件A B
プログラムとは
冷蔵庫を開ける
中身を確認する
牛肉がある 豚肉がある 鶏肉がある
ビーフステーキ ポークソテー グリルチキン
買いに行く肉があるか
NO
YES
夕食のメニューを決めるときの流れ
画像出典:川崎市:カモ診断テスト(http://www.city.kawasaki.jp/280/page/0000056910.html)
診断チャートや占いチャートは一種の「プログラム」と言える
我々が話す言葉が国によって異なるように
プログラム言語にもいくつかの種類があります
Web Design (Front End) JavaScript / PHP …
Web Development Ruby / Python / Perl / Scala …
Application Development Java / C++ / Objective-C / Swift …
主なプログラム言語の種類
もちろん、この他にもたくさんのプログラム言語が存在します
ウェブデザイナー的に馴染みがあるのはココ
主なプログラム言語の種類
Web Design (Front End) JavaScript / PHP …
Web Development Ruby / Python / Perl / Scala
Application Development Java / C++ / Objective-C / Swift
言語の仕様や文法などを覚えるのも大切だが、
処理の考え方(アルゴリズム)を覚える方が大切
プログラム的な思考をするには
妻「牛乳を1パック買ってきて。卵があったら6つお願い」
しばらくして、夫が《牛乳を6パック》買って帰宅
妻「なんで牛乳を6パックも買ってきたのよ」
夫「だって卵があったから」
ある妻がプログラマーの夫に買い物を頼んだら……
お前は一体何を言っているのだ
1.
2.
3.
4.
5.
6.
7.
var 牛乳の個数;
if( 卵 ) {
牛乳の個数 = 6;
} else {
牛乳の個数 = 1;
}
牛乳を買う( 牛乳の個数 );
※JavaScriptの場合
妻のお願いは夫にはこう聞こえている
コードを書くこと
プログラム的な思考をするには
プログラム
アルゴリズム(仕組みや手順)
を考えること
プログラム
プログラム的な思考をするには
Hands on
やってみよう
1.実行環境
• console.log
2.ダイアログ表示
• alert
• confirm
• prompt
3.変数
4.データ型
5.演算子
• 算術演算子
• 代入演算子
• 比較演算子
• 論理演算子
11.関数
• function
• 引数
• 戻り値
• 即時関数
• 無名関数
12.変数のスコープ
6.配列
7.連想配列(ハッシュ)
8.条件分岐
• if
• if … else
• if … else if
• 比較演算子
• switch
9.繰り返し
• while
• do … while
• for
• for … in
今日やりたいこと
ウェブブラウザ • Google Chrome、Safari
エディタ • お好きなもの(UTF-8を扱えるもの)
• デモはSublime Textを使用
コードを書く場所 • HTMLの<script> 要素内
• 外部jsファイル
言語 • JavaScript
実行環境
console.log()
デバッガの Web コンソールにメッセージを出力
Google Chrome:表示 → 開発/管理 → JavaScriptコンソール
Safari:開発 → エラーコンソールを表示
Firefox:ツール → Web開発 → Webコンソール
IE:[F12]で開発者ツールを開き、[コンソール]タブを選択
実行環境
Show dialog box
ダイアログボックス表示
alert()
警告ダイアログを表示
ダイアログボックス表示
confirm()
確認ダイアログを表示
ダイアログボックス表示
prompt()
文字入力可能なダイアログを表示
ダイアログボックス表示
Variable
変数
値を自由に入れ替えできる入れ物
?
100
"あいう"
true
変数
変数
変数を最初に使うときは「var」で宣言する
var 変数名
変数
変数の中に値を入れるには「=」を使う
変数名 = 値
このイコールは「代入演算子」という
代入
変数
Data type
データ型
データ型
データには「型」がある
データ型
文字のこと
シングルクオーテーションかダブルクオーテーションで括る
String 型
文字列
データ型
数字のこと
JavaScriptでは整数も小数(浮動小数点)も区別しない
Number 型
数値
データ型
true(真)、false(偽)のどちらか
主に条件判定などで使う
boolean 型
論理値
Expressions and operators
演算子
数値の計算に使う
算術演算子
演算子
変数に値を代入するときに使う
代入演算子
演算子
複数の対象を比較するときに使う
比較演算子
演算子
条件の真偽をするときに使う
論理演算子
演算子
Array
配列
複数の変数を1セットにしたようなもの
0
値
値
配列
1 2 3 4
値
値
値
変数 変数 変数 変数 変数
配列
最初に使うときは「new Array()」で作成する
変数名 = new Array()
配列
このように省略して書くこともできる
変数名 = []
new Array()と同じ
配列
値を代入するときは変数名に[番号]を付ける
変数名[n] = 値
この番号のことをキーと呼ぶ
代入
配列
Associative array
連想配列
番号ではなくキーワードで管理する配列
name
"山田太郎"
連想配列
age sex height weight
変数 変数 変数 変数 変数
25
"男"
170
60
連想配列
最初に使うときは「new Object()」で作成する
変数名 = new Object()
連想配列
変数名 = {}
このように省略して書くこともできる
new Object()と同じ
連想配列
変数名["key"] = 値
変数名.key = 値
値を代入するときは変数名に[”キー"]を付ける
または、変数名にドット区切りでキーを指定してもOK
代入
代入
連想配列
Conditional branch
条件分岐
if
もっとも基本的な条件分岐
条件分岐
if ( 条件 ) {
条件が真のときの処理
}
条件分岐
if … else
2パターンを分岐する
条件分岐
if ( 条件 ) {
条件が真のときの処理
} else {
条件が偽ときの処理
}
条件分岐
if … else if
3つ以上のパターンを分岐する
条件分岐
if( 条件A ){
条件Aが真のときの処理
} else if( 条件B ) {
条件Bが真ときの処理
} else {
すべてが偽ときの処理
}
条件分岐
switch
変数の値によって処理を分岐
条件分岐
switch( 変数 ){
case A :
変数の値がAのときの処理
case B :
変数の値がBのときの処理
default :
どれにも当てはまらないときの処理
}
条件分岐
Repeat
繰り返し
while
条件を満たしている間繰り返す
繰り返し
while ( 条件 ) {
繰り返す処理
}
この条件を満たしている間ずっと繰り返される
繰り返し
do … while
条件を満たしている間繰り返す(最低1回は実行する)
繰り返し
do {
繰り返す処理
} while ( 条件 )
無条件に1回だけは実行
あとはこの条件を満たしている間ずっと繰り返される
繰り返し
for
一定回数の処理を繰り返す
繰り返し
for ( var i = 0; i < n; i++ ) {
繰り返す処理
}
ここに繰り返す回数を指定する
繰り返し
for … in
配列を走査する(配列要素の個数分繰り返す)
繰り返し
for ( var 変数名 in 配列名 ) {
繰り返す処理
}
キーを格納するための変数名を指定
走査したい配列
繰り返し
Function
関数
よく使う処理に名前をつけていつでも呼び出せるようにする
「Hello!」と
表示する処理
関数名「hello」hello()
Hello!
hello()
hello()
Hello!
Hello!
関数
function 関数名() {
処理
}
「function」に続いて関数名を指定する
関数
引数
実行側から関数に渡す値
関数
関数に対して任意のデータを渡す
変数
「message」
を表示する処理
関数名「talk(message)」talk("Hello")
Hello
talk("Hey")
talk("やあ!")
Hey
やあ!
関数
関数名のあとの()内に引数名を指定しておく
function 関数名( 引数名 ) {
処理
}
ここに引数名を指定しておく
関数
複数の引数を指定することも可能
function 関数名( 引数1, 引数2, … ) {
処理
}
カンマで区切って複数指定
関数
戻り値
関数から実行側に返す値
関数
実行側に対して関数から任意のデータを返す
戻り値に
「Hello」という
文字列を指定
関数名「get()」
get()
"Hello"
get()
"Hello"
get() "Hello"
関数
「return」に続いて戻す値を指定する
function 関数名() {
return 戻り値
} 実行側に戻す値
関数
「return」は関数を強制終了するため、以降の処理は実行されない
function 関数名() {
処理A
return
処理B
} 処理Bは実行されない
関数
Scope of variables
変数のスコープ
変数は「var」で宣言する位置で有効な範囲が異なる
var 変数名
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
関数の外側で宣言された変数は全体で参照できる
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
Taro
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name); Taro
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
関数の中で宣言された変数はその関数内でしか参照できない
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
Taro
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name); Error !
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
return name;
}
var user = test();
console.log(user); Taro
戻り値を使う
変数のスコープ

More Related Content

PPTX
配列とループ
PDF
Java初心者勉強会(2015/08/07)資料
PDF
Java電卓勉強会資料
PDF
C++0x in programming competition
PDF
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
PDF
Replace Output Iterator and Extend Range JP
PDF
What is template
PDF
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
配列とループ
Java初心者勉強会(2015/08/07)資料
Java電卓勉強会資料
C++0x in programming competition
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
Replace Output Iterator and Extend Range JP
What is template
(Ruby使いのための)Scalaで学ぶ関数型プログラミング

What's hot (20)

PDF
error handling using expected
PDF
Xtend - Javaの未来を今すぐ使う
PDF
Ekmett勉強会発表資料
PDF
そしてjsの基礎へ戻る#4
ODP
Ekmett勉強会発表資料
PDF
Introduction Xtend
PPTX
JavaScriptクイックスタート
PPTX
関数
PDF
すごいConstたのしく使おう!
PPTX
Javaデザインパターン入門【第3回】
PDF
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
PPTX
Javaプログラミング入門【第2回】
PDF
クロージャデザインパターン
PDF
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
KEY
Clojure programming-chapter-2
PPTX
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
PDF
C++0x 言語の未来を語る
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
PDF
Van laarhoven lens
error handling using expected
Xtend - Javaの未来を今すぐ使う
Ekmett勉強会発表資料
そしてjsの基礎へ戻る#4
Ekmett勉強会発表資料
Introduction Xtend
JavaScriptクイックスタート
関数
すごいConstたのしく使おう!
Javaデザインパターン入門【第3回】
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Javaプログラミング入門【第2回】
クロージャデザインパターン
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Clojure programming-chapter-2
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
C++0x 言語の未来を語る
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Van laarhoven lens
Ad

Similar to Aedlabo program 20150125 (20)

PDF
初心者講習会資料(Osaka.r#6)
PPTX
PHP, JavaScriptプログラマのためのC#入門
PDF
Gura プログラミング言語の紹介
ODP
Introduction of Python
DOCX
Ⅰ. Rの基礎 2017
PDF
初心者講習会資料(Osaka.R#7)
PDF
Lisp Tutorial for Pythonista : Day 3
PDF
たのしい関数型
PDF
[xDNCL] 配布資料
PDF
新しい並列for構文のご提案
PPTX
関数型言語&形式的手法セミナー(3)
PPTX
C#6.0の新機能紹介
PPTX
秀スクリプトの話
PDF
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
PDF
わからないまま使っている?UE4 の AI の基本的なこと
PDF
Tokyor23 doradora09
PDF
Java勉強会2017.3.17
PDF
初心者講習会資料(Osaka.R#5)
PPTX
Rでのtry関数によるエラー処理
PDF
eZ Publish勉強会9月〜テンプレート言語〜
初心者講習会資料(Osaka.r#6)
PHP, JavaScriptプログラマのためのC#入門
Gura プログラミング言語の紹介
Introduction of Python
Ⅰ. Rの基礎 2017
初心者講習会資料(Osaka.R#7)
Lisp Tutorial for Pythonista : Day 3
たのしい関数型
[xDNCL] 配布資料
新しい並列for構文のご提案
関数型言語&形式的手法セミナー(3)
C#6.0の新機能紹介
秀スクリプトの話
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
わからないまま使っている?UE4 の AI の基本的なこと
Tokyor23 doradora09
Java勉強会2017.3.17
初心者講習会資料(Osaka.R#5)
Rでのtry関数によるエラー処理
eZ Publish勉強会9月〜テンプレート言語〜
Ad

Aedlabo program 20150125