「プログラミングの世界」 -...

16
プログラミングの世界 香川大学 創造工学部 情報システム・セキュリティコース 香川 考司 [email protected] 1

Transcript of 「プログラミングの世界」 -...

Page 1: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

「プログラミングの世界」

香川大学 創造工学部 情報システム・セキュリティコース

香川 考司[email protected]

1

Page 2: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

自己紹介

• 香川考司(かがわこうじ)1968年奈良県生まれ

• 所属香川大学創造工学部電子・情報工学領域准教授情報システム・セキュリティ (CSSS) コースを担当

• 専門分野プログラミング言語の型システムプログラミング学習支援システム

• 担当授業プログラミング、コンパイラ、オブジェクト指向言語、プログラミング・パラダイム(大学院)、プログラミング言語意味論(大学院)など

2

https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Deer_at_Nara.jpg/1200px-Deer_at_Nara.jpg

Page 3: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

例えると…

• コンピューター• プログラム• プログラミング• プログラミング言語• 型システム• 学習支援システム• コンパイラー

3

魔法のツエ・ランプ

呪文

呪文を組み立てること

呪文体系

呪文の間違いを少なくするしくみ

魔法使いの弟子養成システム

呪文体系変換装置

Page 4: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

本日の内容

• オープンキャンパスの展示を再構成したものです。• プログラムでシール、またはブックカバーを作成します。• BlocklyというGoogleが作ったブロック方式のプログラム作成環境に香川研究室で機能を追加したものを使います。

• ホームページの短縮URLは『goo.gl/KFsnYq』です。

4

https://developers.google.com/blockly/images/BlocklyDemoImage.png

Page 5: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

コンピューターとは

5

• コンピューターのメモリー(記憶装置)は電気仕掛けの巨大なそろばんみたいなものです。

• そろばんはせいぜい20桁くらいですが、コンピューターは億や兆を超えるくらいのケタがあります。

https://publicdomainq.net/images/201612/18s/publicdomainq-0003926kaj.jpg

https://upload.wikimedia.org/wikipedia/commons/7/7c/RAM_module_SDRAM_1GiB.jpg

Page 6: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

プログラムとは

6

• コンピューターに与える手順で、指示のまとまりです。• 巨大なすごろくをやるようなものです。• そろばんのいくつかのケタを一マスとみなします。

–ただし、さいころは振らず、ふつうは一マスずつ進みます。• 各マスにある数が指示に対応します。• コンピューターの制御装置は一秒に何十億回も指示を実行します。

https://c1.staticflickr.com/5/4199/35204464282_bcdc714ec0.jpghttp://cdn.wccftech.com/wp-content/uploads/2016/05/Intel-Core-i7-6950X-Package_6.jpg

Page 7: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

プログラムとは(続き)

• 各マスの指示はとても単純です。例えば…–あるマスの数を別のマスにコピーする。–あるマスに別のマスの数を足し算(引き算)する。–直前の計算の結果が0なら7マス戻る(または進む)。

• このような指示のまとまりである手順を部品化することで、さらに複雑な手順を組み立てることができます。

• ふつう、人間にわかりやすい形式で作成して、コンピューターにわかりやすい形式に翻訳します。

7

https://anakjajan.files.wordpress.com/2014/08/dscf0819.jpg

Page 8: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

ここまでのまとめ

• コンピューターは、一つ一つは単純な指示でも、それを何億回・何兆回…でもくりかえすことができます。–疲れない、忘れない、間違えない、速い、ただし人間が指示を間違えると、間違ったまま実行します。

• 手順(プログラム)を部品化すると、さらに複雑な手順を組み立てることができます。

今回は、プログラムで規則的な絵をコンピューターに描かせます。

8

Page 9: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

順次・反復・分岐

プログラムの基本の組み立て方は順次・反復・分岐の 3つ• 順次(逐次)いくつかの処理を、順に一つずつ実行していくこと

• 反復同じ処理を繰り返すこと(コンピューターが一番得意)

• 分岐(選択)条件が成り立つかどうかによって、処理を選ぶこと

Page 10: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

さまざまなプログラミング言語

Fortran, COBOL, C, C++, Java, Kotlin, C#, Delphi, Haskell, Scala, OCaml, CommonLisp, Scheme, Clojure, Prolog, miniKanren, Perl, Ruby, Python, Smalltalk, JavaScript, Visual Basic, PHP, Swift, Go, Lua, Rust, …

• パラダイムによる分類命令型、オブジェクト指向、関数型、論理型

• 型付けによる分類静的、動的、他

• 実行方式による分類コンパイラー方式、インタプリター方式

Page 11: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

いろいろなプログラミング入門

• Arduino– LEDチカチカやライントレースなどが作れます

– 電子回路の勉強にもなります

• Scratch– ブロックを組み合わせて、プログラムを作ります

– アニメーションやゲームなどが作れます

https://store.arduino.cc/usa/arduino-uno-rev3

Page 12: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

ここまでのまとめ

• 手順の組み立ての基本は順次・反復・分岐の 3つで、どんなプログラミング言語にもあります。

• 組み立ての基本を学ぶにはScratchやArduinoが使われることが多いようです。BlocklyもScratchによく似ています。

• 部品の作り方、実行の仕方などが異なり、得意分野が異なる様々なプログラミング言語があります。

12

Page 13: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

サンプル①

13

Page 14: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

14

Page 15: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

サンプル②

15

Page 16: 「プログラミングの世界」 - 香川大学guppy.eng.kagawa-u.ac.jp/OpenCampus/aboutProgramming.pdf · 2019-08-20 · – あるマスの数を別のマスにコピーする。

16