SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
プログラミング
1 / 35
プログラミング
プログラム
実行すべき命令を書き並べたもの
※ プログラミング
プログラムを作成すること
例: 式典のプログラム
1 開式の辞
2 校歌
3 校長式辞
4 閉式の辞
Figure: アラン・チューリング Figure: フォン・ノイマン 2 / 35
プログラミング
オブジェクト指向プログラミング
互いにメッセージを送るオブジェクトの集まりとしてプログラムを作成
sensor
car1
tire
回転数と向きを変更
road
進行方向を指示
car2 障害物がないか確認
障害物の有無を伝達
加速状況を確認
加速度の変化を伝達
driver
行き先を指定
Figure: 自動運転でのメッセージ交換
3 / 35
プログラミング
実習:Squeak
自動運転プログラムの作成
4 / 35
プログラミング
アルゴリズム
問題を解く手順のこと
※ フローチャート (流れ図): アルゴリズムを図形と線で記述した図
5 / 35
プログラミング
アルゴリズムの基本構造
• 順次 (逐次)
命令を 1 つずつ順
に、s1 の次に s2 を
実行する
• 選択 (条件分岐)
条件 P が真なら
s1、偽なら s2 と実
行する命令を選ぶ
• 反復 (繰り返し)
条件 P が真である
限り命令 s1 を繰り
返す
s1
s1
PP
s1
Yes No
s2s2
6 / 35
プログラミング
例 1: 自動運転
自動運転のアルゴリズムを、フ
ローチャートで表す
※ 順次、選択、反復をすべて
用いる
開始
終了
Figure: 自動運転
7 / 35
プログラミング
例 1: 自動運転
自動運転のアルゴリズムを、フ
ローチャートで表す
※ 順次、選択、反復をすべて
用いる
車を進める
開始
終了
右センサーが
道路上 車を左に回す
No
左センサーが
道路上 車を右に回す
No
Yes
Yes
Figure: 自動運転
8 / 35
プログラミング
例 2: 自然数 p の素数判定
1 p = 1 なら p は素数でないので終了する
2 変数 n に 2 を代入する
(代入文は n = 2 のように表す)
3 n が p より小さければ次の命令を実行
1 もし p が n で割り切れたら、p は合
成数なので終了する
2 (そうでなければ、)n に 1 を加える
3 (3) へ戻る
4 (n = p より)p は素数だと分かったので
終了する
開始
終了(p:素数)
終了(p:合成数)
終了(p:非素数)
9 / 35
プログラミング
例 2: 自然数 p の素数判定
1 p = 1 なら p は素数でないので終了する
2 変数 n に 2 を代入する
(代入文は n = 2 のように表す)
3 n が p より小さければ次の命令を実行
1 もし p が n で割り切れたら、p は合
成数なので終了する
2 (そうでなければ、)n に 1 を加える
3 (3) へ戻る
4 (n = p より)p は素数だと分かったので
終了する
n = 2
n < p
p / nが整数
n = n+1
No Yes
開始
終了(p:素数)
終了(p:合成数)
p = 1
Yes
終了(p:非素数)
No
10 / 35
プログラミング
Python でのプログラム例
1 def isPrime(p):
2 if p == 1:
3 return False
4 for n in range(2, p):
5 if p % n == 0:
6 return False
7 n += 1
8 return True
n = 2
n < p
p / nが整数
n = n+1
No Yes
開始
終了(p:素数)
終了(p:合成数)
p = 1
Yes
終了(p:非素数)
No
11 / 35
プログラミング
Scratch でのプログラム例
n = 2
n < p
p / nが整数
n = n+1
No Yes
開始
終了(p:素数)
終了(p:合成数)
p = 1
Yes
終了(p:非素数)
No
12 / 35
プログラミング
例 3: 郵便物を受け取る
「郵便受けを見てきて!」という指示には、
「
1 郵便受けのある玄関まで行く
2 郵便受けのフタを開ける
3 郵便受けの中に
郵便物が入っているか確認する
4 もし郵便物が入っていたら、
それを取り出す
5 郵便受けのフタを閉める
6 居間へ戻ってくる
…ということをしてほしい」
という極めて複雑な意味がある
開始
終了
玄関へ行く
フタを開ける
中を確認する
郵便物が
あるか?
郵便物を
取り出す
フタを閉める
居間へ戻る
No
Yes
13 / 35
プログラミング
参考: 自閉スペクトラム障害 (ASD)
他人との社会的関係の形成の困難さ、言葉の発達の遅れ、興味や関心が狭く
特定のものにこだわることを特徴とする行動の障害
※ 以前「自閉症」「アスペルガー症候群」と呼ばれていたもの
ASD の人の特徴
• 言葉の裏の意味・皮肉を理解しにくい
• 曖昧な (不明瞭な・一貫性のない) 指示を理解しにくい
• 暗黙のルール (いわゆる「常識」) が分かりにくい
• 人の言うことを鵜呑みにしてしまう・騙されやすい
• 複数の答えがある質問に答えにくい
出典:「アスペな大人」 (http://asperger.nerim.info)
14 / 35
プログラミング
ASD の人とのコミュニケーション例
「郵便受けを見てきて!」と指示すると、
• 「郵便受けを見てきて!」
→ (玄関へ) →「見てきたよ!」
⇨ 「何か入っていた?」「?」
• 「郵便受けの中に何か
入っていないか確認してきて!」
→ (玄関へ)
→ 「新聞が入っていたよ!」
⇨ 「新聞は?」「?」
• 「郵便受けに入っていた
新聞を取ってきて!」
→ (玄関へ)
→「取ってきたよ!」
開始
終了
玄関へ行く
フタを開ける
中を確認する
郵便物が
あるか?
郵便物を
取り出す
フタを閉める
居間へ戻る
No
Yes
15 / 35
モデル化
モデル (model)
現実の現象から
じょうちょう
冗 長 な部分を除き、本質的な部分のみに単純化 (抽象化)
したもの
※ モデル化 (modeling): モデルを作成すること
モデル化の利点
• 似た現象を同じ考え方で考察できるようになる
• 現象の本質的な理解や分析が容易になる
• 現象を擬似的に再現 (シミュレーション) できる
16 / 35
モデル化
モデルの妥当さ
何を現象の「本質」だと捉えるかにより、「良い」モデルは異なる
• 何を選び何を捨てるかは、モデル作成の目的により変わる
• 現象のどの部分に意味を見出すかは、機械には判断できない
17 / 35
表
表
縦方向の行 (1, 2, ⋯) と、横方向の列 (A, B, ⋯) で定まるセル (cell) からなる
18 / 35
表
数式
数式は「=」で始める
= 3 + 2
= 3 ∗ 2
= 3/2
19 / 35
表
セルのコピー
右下隅の「■」をドラッグする
20 / 35
表
行・列の固定
数字 or アルファベットの前に「$」を追加する
= A$1 ∗ $B2
21 / 35
表
実習: 九九の表
1 × 1 = 1, ⋯ , 9 × 9 = 81 までの積の表を作成する
22 / 35
関数
関数
ひきすう
引数を受け取り値を返す
関数名(引数 1, 引数 2, ⋯)
23 / 35
関数
平方根: sqrt 関数
引数の (正の) 平方根 (square root) を返す
sqrt(4) = 2
余り: mod 関数
第 1 引数を第 2 引数で割った余り (modular) を返す
mod(7, 3) = 1(7 ≡ 1(mod3))
合計: sum 関数
引数の合計 (sum) を返す
sum(a1, a2) = sum(a1 ∶ a2)
24 / 35
関数
条件分岐: if 関数
条件の真偽により返す値を変える
if(条件, 真のとき, 偽のとき)
25 / 35
乱数
乱数: rand 関数
0 以上 1 未満の乱数 (random) を返す
0 ≤ rand() < 1
切り捨て: int 関数
引数の整数部分 (integer, [x]) を返す
int(3.4) = 3
26 / 35
乱数
順位: rank 関数
第 1 引数の第 2 引数の範囲内での順位 (ranking) を返す
rank(順位を求める数値, 対象範囲)
27 / 35
乱数
実習: 席替えプログラム
rand, rank 関数を組み合わせる
28 / 35
乱数
数え上げ: countif 関数
第 1 引数の範囲内で第 2 引数の条件を満たすセルの個数を数える
countif(対象範囲, 50)(範囲内で値が 50 のセルの個数)
countif(対象範囲, " > 50")(範囲内で 50 より大きいのセルの個数)
countif(対象範囲, " >= 50")(範囲内で 50 以上のセルの個数)
countif(対象範囲, "abc")(範囲内で値が文字列 abc のセルの個数)
29 / 35
乱数
実習: サイコロの頻度分布
rand 関数の結果を countif 関数で数え上げる
30 / 35
マクロ
マクロ
ユーザが行う処理を自動化
• Excel のマクロは VBA(Visual Basic for Applications) という言語で記
録される
※ VBA は強力なので、通常は無効化されている
31 / 35
シミュレーション
モンテカルロ法
確率的な手法で近似的に解を計算する手法
• 厳密解の算出に時間を要する問題の近似解を短時間で導出可能
32 / 35
シミュレーション
演習: 円周率の推定
1 辺 r の正方形内に半径 r、中心角 90∘
の扇形があ
るとき、
(正方形の面積) ∶ (扇形の面積) = S1 ∶ S2
= r2
∶ 𝜋r2
×
1
4
= 4 ∶ 𝜋
正方形上に Nall 個の点を蒔いたとき、Nin 個が扇
形上にあるとすると、
4 ∶ 𝜋 ≃ Nall ∶ Nin
より、 𝜋 ≃ 4 ×
Nin
Nall
S1 = r²
S2 = π r²/4
r
r
33 / 35
シミュレーション
開始
終了
[総数][内部]を0に
[総数]を1増やす
x2
+y2
1?≦
[内部]を
1増やす
π=4×[内部]/[総数]
No
Yes
0以上1未満のx,yを
ランダムにとる
34 / 35
Reference I
Edger Wybe Dijkstra. “Go to statement considered harmful”. In: Communications of the
ACM 11 (Mar. 1968), pp. 147–148. doi: 10.1145/362929.362947.
National Portrait Gallery. Alan Mathison Turing. url:
http://www.npg.org.uk/collections/search/portrait/mw63680.
Wikimedia. File:JohnvonNeumann-LosAlamos.gif. url:
https://commons.wikimedia.org/wiki/File:JohnvonNeumann-LosAlamos.gif.
アスペな大人. url: http://asperger.nerim.info.
文部科学省. 主な発達障害の定義について. url:
http://www.mext.go.jp/a_menu/shotou/tokubetu/004/008/001.htm.
日本工業標準調査会. JISX0121: 情報処理用流れ図・プログラム網図・システム資源図記号.
1970. url: http://www.jisc.go.jp.
35 / 35

Más contenido relacionado

Destacado

Destacado (17)

著作権
著作権著作権
著作権
 
メディア・リテラシー
メディア・リテラシーメディア・リテラシー
メディア・リテラシー
 
システム論に基づく情報教育の授業計画と教育実践
システム論に基づく情報教育の授業計画と教育実践システム論に基づく情報教育の授業計画と教育実践
システム論に基づく情報教育の授業計画と教育実践
 
知的財産
知的財産知的財産
知的財産
 
メディア・リテラシー実習
メディア・リテラシー実習メディア・リテラシー実習
メディア・リテラシー実習
 
社会システム理論に基づく情報教育の教材開発
社会システム理論に基づく情報教育の教材開発社会システム理論に基づく情報教育の教材開発
社会システム理論に基づく情報教育の教材開発
 
What is "design"?
What is "design"?What is "design"?
What is "design"?
 
セキュリティ
セキュリティセキュリティ
セキュリティ
 
セル結合を含む表のデータモデル
セル結合を含む表のデータモデルセル結合を含む表のデータモデル
セル結合を含む表のデータモデル
 
コミュニケーション
コミュニケーションコミュニケーション
コミュニケーション
 
情報とは
情報とは情報とは
情報とは
 
BADUIからユニバーサルデザインへ展開するデザイン教育実践
BADUIからユニバーサルデザインへ展開するデザイン教育実践BADUIからユニバーサルデザインへ展開するデザイン教育実践
BADUIからユニバーサルデザインへ展開するデザイン教育実践
 
暗号
暗号暗号
暗号
 
Extending Relational Data Model with Merged Cells(セル結合を考慮した関係データモデルの拡張)
Extending Relational Data Model with Merged Cells(セル結合を考慮した関係データモデルの拡張)Extending Relational Data Model with Merged Cells(セル結合を考慮した関係データモデルの拡張)
Extending Relational Data Model with Merged Cells(セル結合を考慮した関係データモデルの拡張)
 
Topic model
Topic modelTopic model
Topic model
 
トピックモデルの話
トピックモデルの話トピックモデルの話
トピックモデルの話
 
Gensim
GensimGensim
Gensim
 

Similar a プログラミング

2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日
nukaemon
 
2012年1月20日
2012年1月20日2012年1月20日
2012年1月20日
nukaemon
 

Similar a プログラミング (20)

[xDNCL] 配布資料
[xDNCL] 配布資料[xDNCL] 配布資料
[xDNCL] 配布資料
 
ji-5. 繰り返し計算
ji-5. 繰り返し計算ji-5. 繰り返し計算
ji-5. 繰り返し計算
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
cp-5. 繰り返し計算
cp-5. 繰り返し計算cp-5. 繰り返し計算
cp-5. 繰り返し計算
 
2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日
 
Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
 
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
 
Python基礎その1
Python基礎その1Python基礎その1
Python基礎その1
 
PRML4.3
PRML4.3PRML4.3
PRML4.3
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
Material
MaterialMaterial
Material
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
 
ロボット家電と制御 Domestic robotics: mechanisms and control
ロボット家電と制御 Domestic robotics: mechanisms and controlロボット家電と制御 Domestic robotics: mechanisms and control
ロボット家電と制御 Domestic robotics: mechanisms and control
 
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータStanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
 
mi-9. 知的なゲームのルール,コンピュータプレイヤーがゲームに参加,状態空間表現
mi-9. 知的なゲームのルール,コンピュータプレイヤーがゲームに参加,状態空間表現 mi-9. 知的なゲームのルール,コンピュータプレイヤーがゲームに参加,状態空間表現
mi-9. 知的なゲームのルール,コンピュータプレイヤーがゲームに参加,状態空間表現
 
2012年1月20日
2012年1月20日2012年1月20日
2012年1月20日
 

Más de saireya _

Más de saireya _ (15)

文章作成の基礎
文章作成の基礎文章作成の基礎
文章作成の基礎
 
Peirceの探究段階論に基づく「情報I, II」の授業設計
Peirceの探究段階論に基づく「情報I, II」の授業設計Peirceの探究段階論に基づく「情報I, II」の授業設計
Peirceの探究段階論に基づく「情報I, II」の授業設計
 
Peirceの探究段階論に基づく「情報I, II」における単元間の構造分析
Peirceの探究段階論に基づく「情報I, II」における単元間の構造分析Peirceの探究段階論に基づく「情報I, II」における単元間の構造分析
Peirceの探究段階論に基づく「情報I, II」における単元間の構造分析
 
テーマ設定・文献読解
テーマ設定・文献読解テーマ設定・文献読解
テーマ設定・文献読解
 
実験レポートの書き方
実験レポートの書き方実験レポートの書き方
実験レポートの書き方
 
実験ノートの書き方
実験ノートの書き方実験ノートの書き方
実験ノートの書き方
 
コミュニケーション(2020ver)
コミュニケーション(2020ver)コミュニケーション(2020ver)
コミュニケーション(2020ver)
 
情報(2020ver)
情報(2020ver)情報(2020ver)
情報(2020ver)
 
表現と内容
表現と内容表現と内容
表現と内容
 
人間と機械
人間と機械人間と機械
人間と機械
 
創発(2020ver)
創発(2020ver)創発(2020ver)
創発(2020ver)
 
セキュリティ(2020ver)
セキュリティ(2020ver)セキュリティ(2020ver)
セキュリティ(2020ver)
 
介入としての側面に焦点化したプレゼンテーションの教育実践
介入としての側面に焦点化したプレゼンテーションの教育実践介入としての側面に焦点化したプレゼンテーションの教育実践
介入としての側面に焦点化したプレゼンテーションの教育実践
 
社会のイノベーションを志向する情報教育の体系化
社会のイノベーションを志向する情報教育の体系化社会のイノベーションを志向する情報教育の体系化
社会のイノベーションを志向する情報教育の体系化
 
コミュニケーション・情報・メディアの統合モデルに基づく教育実践
コミュニケーション・情報・メディアの統合モデルに基づく教育実践コミュニケーション・情報・メディアの統合モデルに基づく教育実践
コミュニケーション・情報・メディアの統合モデルに基づく教育実践
 

プログラミング