cs-4. プログラミング入門
(コンピューターサイエンス)
URL: https://www.kkaneko.jp/cc/cs/index.html
1
金子邦彦
IT 技術の可能性
コンピュータを活用した問題解決
批判的思考
プログラミング言語の多様性
2
アウトライン
1.
プログラミングの基本と意義
2. Python
言語の特徴とプログラミ
ングの可能性
3.
コンピュータの限界と精度の理
4.
さまざまなプログラミング言語
3
4-1. プログラミングの基本
と意義
4
5
コンピュータは,プログラム
に従って動作
プログラムは,コンピュータ
に指示を出し,所定の作業を
遂行させる
コンピュータとプログラム
6
プログラムを設計し作成する
プロセス(プログラミング)
は,創造的な活動
アイデアを形にできることが,
プログラミングの魅力
プログラミング
プログラムとアプリケーション
プログラムが動作し,アプリケーションの機能を実現
7
Web ブラウザ
ワープロ
(マイクロソフト・ワード)
プログラムは,コンピュータの動作をコント
ロール
8
Python 言語を使って
ニューラルネットワーク
を作成.AIシステムを構築
プログラムは,コンピュータの動作を細かくコントール
プログラムは,コンピュータ間の連携にも
役立つ
9
利用者
コンピュータ
利用者
サーバは,サービスを提供する
ITシステム
ネットワーク
コンピュータ同士の接続でもプログラムが必要.
コンピュータ
コンピュータ
プログラミングの目的
プログラムは,コンピュータに指示を出し,
所定の作業を遂行させる
複雑な作業も自動化し,効率化することが可
10
Python プログラム
ソースコード
プログラム
実行結果
11
プログラムの内容によって,
コンピュータさまざまな作
業を実行できる
プログラムを利用すること
で,多くの作業を自動化でき
プログラムで行った作業を
いつでも再現できる
プログラムは柔軟性がある.
変更により,プログラムの
作を簡単に調整できる
プログラミングの利点
プログラミングの基本と意義まとめ
コンピュータは,プログラムの指示に従って動作
るものである.
プログラミングは,創造的な活動としてプログラム
を設計・作成することである.
プログラムは,コンピュータの動作を詳細にコント
ロールする.
プログラムを活用することで,複雑な作業も自動化
が可能である.
プログラムは,作業の再現性柔軟な変更が可能
いう利点を持つ.
12
4-2. Python言語の特徴とプ
ログラミングの可能性
13
Python は多くの
人々に利用されてい
プログラミング言
の1つ
読みやすさ書きや
すさ幅広い応用範
が特徴
14
Python
Python 言語が広く使用されている理由
文法のシンプルさ
Python は,直感的で読みやすい文法
例えば、print で簡単に出力できる、if else 条件分岐for
while 繰り返し(ループ)
拡張性
多岐にわたる分野で利用が可能
例えば、関数やクラスを定義するため def class継承オブ
ジェクトの属性名と値を操作するため super vars などがある。
柔軟性
シンプルなスクリプトも、高度なプログラムも作成可能
オブジェクト指向の機能を持ち、__init__ self のようなキーワード
を使用してクラスを利用できる。
15
trinket
Trinket オンライン PythonHTML 等の学習サイト
ブラウザで動作
有料の機能と無料の機能がある
自分が作成した Python プログラムを公開し、他の人に実
行してもらうことが可能(そのとき、書き替えて実行も可
能)
Python の標準機能を登載、その他、次の外部ライブラリ
がインストール済み
matplotlib.pyplot, numpy, processing, pygal
16
trinket Python, HTML などのプログラムを書き実行できる
サイト
https://trinket.io/python/0fd59392c8
のように、違うプログラムには違う URL が割り当てられる
実行が開始しないときは、「実行ボタン」で実行
ソースコードを書き替えて再度実行することも可能
trinket でのプログラム実行
17
ソースコードの
メイン画面
実行結果
実行、STOP ボタン
演習.
Python プログラムの実行
18
trinket の次のページを開く
https://trinket.io/python/6c 652f1c2f
実行結果が,次のように表示されることを確認
19
実行が開始しないときは、「実行ボタン」で実行
ソースコードを書き替えて再度実行することも可能
実行、STOP ボタン
trinket の次のページを開く
https://trinket.io/python/94d1563844
実行結果が,次のように表示されることを確認
20
実行が開始しないときは、「実行ボタン」で実行
ソースコードを書き替えて再度実行することも可能
実行、STOP ボタン
ボールが
壁に当たったら
反射する.
演習.
簡単なプログラムでも
さまざまなことが可能
21
22
trinket の次のページを開く
https://trinket.io/python/2b804ab19a
実行結果が,次のように表示されることを確認
オペレーティングシステム(コンピュータ)のタイマー
を利用.現在の日時が表示される
現在の日時
import datetime
now = datetime.datetime.now()
print(now)
23
trinket の次のページを開く
https://trinket.io/python/597e5771ff
実行結果が,次のように表示されることを確認
面積が 7 の正方形の一辺の長さ
import math
print(math.sqrt(7))
24
trinket の次のページを開く
https://trinket.io/python/4e3559f879
実行結果が,次のように表示されることを確認
半径 3 の円の面積は?
import math
print(3 * 3 * math.pi)
25
trinket の次のページを開く
https://trinket.io/python/bdcce27488
実行結果が,次のように表示されることを確認
三角形の2辺の長さが,で,その間の角度が60
度のとき,面積は (1/2) × 4 × 6 × sin(60)
import math
print((1/2) * 4 * 6 * math.sin(60 * math.pi / 180))
プログラミングの可能性
人間の力を増幅し、私たちができることを大幅に広げる
シミュレーション大量データ処理AI連携ITシステム
制作など、さまざまな活動で役立つ
プログラミングはクリエイティブな行為
さまざまな作業を自動化したいとき、問題解決したいとき
にも役立つ
論理的思考力の向上
問題解決能力の育成
デジタル社会での必須スキル
26
プログラミングの応用分野
Web開発
フロントエンド(HTML, CSS, JavaScript),バックエンド
Python, Django, Flask
データ分析
ビッグデータ処理,統計分析,データビジュアライゼーショ
人工知能
自然言語処理,コンピュータビジョン,予測モデリング
ゲーム開発
2Dゲーム,3Dゲーム,モバイルゲーム
IoTInternet of Things
センサーデータの収集と分析,スマートホームシステム
サイバーセキュリティ
ネットワークセキュリティ,暗号化技術
27
Python 言語の特徴とプログラミングの可能性まと
Python直感的で読みやすい文法を持つプログラ
ミング言語.
文法のシンプルさ拡張性柔軟性が特徴的である.
Python基本的な計算から高度なプログラミング
で幅広く対応可能である.
Web開発,データ分析,AI,ゲーム開発など応用分
野が多岐にわたる.
プログラミングは人間の能力を増幅し,創造的な活
動を支援する.
28
4-3. コンピュータの限界と
精度の理解
29
プログラミングにおける注意点
30
1. コンピュータにも,できないことがある全ての
問題を解決できるわけではないことを理解しよう,
2. コンピュータを使用するからといって,算が常
に完全に正確であるとは限らない.特に複雑な計
算を行う場合には,精度に注意が必要.
3. 人間がプログラムを作る際には,書き間違い,勘
違い,思い込みなどによるミスが起こり得る
プログラミングにおける注意点
31
4. ミスがあり得るため,「プログラムが期待通りに
動いているか」を確認するテストは非常に重要
5. ミスの回避のため,抽象化、モジュール,標準ラ
イブラリの活用などの様々な手段を知っておく.
6. 性能や精度を追求し,問題を解決するために,
存のアルゴリズムを知っておく
コンピュータでの数値の扱い
コンピュータは、整数だけでなく、小数点以下の値を含む
数値浮動小数点数)を扱うことができる。
浮動小数点数は、通常、コンピュータが、10進数で約15-16
桁の精度まで数値を保持できるものである。
有限の精度であるため、この範囲を超える数値 10進数で
17桁以上の数値)を計算しようとする微小な誤差が発生す
る。
精密な計算を行う場合などは、精度について理解しておく
ことが重要となる。
32
コンピュータによる「1÷3」 の計算
コンピュータを使って1 ÷ 3」を計算してみるとどうなる
でしょうか?
コンピュータは「0.3333333333333333」などと表示
しかし,「無限に続く」数値を表現することはできない
つまり、「1 ÷ 3」の正確な値を計算できない
コンピュータが表示する結果には小さな誤差が含まれている
(精度に限界がある)と理解してください.
コンピュータを使った計算に注意してください.
33
演習.計算誤差
34
35
trinket の次のページを開く
https://trinket.io/python/8d555705c1
実行結果が,次のように表示されることを確認
1/3, 1/6, 1/9 を計算
計算誤差がある
36
trinket の次のページを開く
https://trinket.io/python/8a180f7d80
実行結果が,次のように表示されることを確認
0.3333333333333 3 倍を計算
計算誤差がある
コンピュータ計算と誤差
コンピュータを使えば計算は完璧に正確- この思い込
みは避けましょう
例えば,「1 ÷ 3」の計算結果は,完全な精度では表示で
きません.少ないながらも誤差が含まれます
しかしこの微小な誤差は、多くの場合、私たちの作業には
十分な精度
少しの誤差を許容すれば、多くの計算が効率的に処理でき
という考え方も.
37
コンピュータの限界と精度の理解
人間のプログラム作成時には,書き間違い勘違い思い
込みによるミスが起こり得る.
プログラムが期待通りに動いているかを確認するテスト
非常に重要である.
ミスの回避には,様々な知識・スキル(抽象化,モジュー
ル,標準ライブラリの活用など)が重要である.
問題解決のために,既存のアルゴリズムを知っておく必要
がある.
浮動小数点数は,10進数で約15-16桁の精度まで数値を保
持できる.10進数で17桁以上の数値計算では,微小な誤差
が発生する.
38
4-4. 様々なプログラミング
言語
39
40
プログラミング言語多種多様
それぞれの言語に,特性と利用シー
ンがある
プログラミング基本理念基礎知
理解することが重要.
一つのプログラミング言語基本を
身につけることで、他の言語への適
もスムーズに進むでしょう
プログラミングを学ぶときに気を付けること
さまざまなプログラミング言語
Python
C
Java
JavaScript
R
Octave
Scheme
など
41
ここで行う作業
1.20 より大きければ「big」,
さもなければ「small」と表示
2.0 + 1 + 2 + 3 + 4 + 5 を求める
なぜプログラミング言語は
たくさんあるのでしょうか?
42
それぞれ
特徴があ
Java
どのコン
ピュータ
でも同じ
プログラ
ムが実行
可能
Python
シンプル
で,実行
も簡単.
初心者に
とって学
びやすい.
C / C++
コン
ピュータ
の性能を
最大限引
き出すた
めに適す
る.
R
データ処
理に特化
したコマ
ンド言語
SQL
データ
ベースに
特化した
コマンド
言語
MATLAB /
Octave
数値計算,
信号処理
などに特
化したコ
マンド言
Python プログラム見本
x = 100
if (x > 20):
print("big")
else:
print("small")
s = 0
for i in [1, 2, 3, 4, 5]:
s = s + i
print(s)
43
シンプルで,実行も簡単.初
心者にとって学びやすい.
多種多様なパッケージを利用
することで、初心者でも容易
に強力な機能を追加できる.
Java プログラム見本
public class Main {
public static void main(String[] args) throws Exception {
int x = 100;
if (x > 20) {
System.out.printf("big¥n");
} else {
System.out.printf("small¥n");
}
int s = 0;
for(int i = 1; i <= 5; i++) {
s = s + i;
}
System.out.printf("%d¥n", s);
}
}
44
Javaはどのコンピュータ
でも同じプログラムが実行
可能
WindowsLinux、そして
Androidアプリなど、異な
る環境でも同じソースコー
ドで動作
このように,Java は互換
性が高く,広範なアプリ
ケーション開発に適する
C プログラム見本
#include <stdio.h>
int main(void){
int x, s, i;
x = 100;
if (x > 20) {
printf("big¥n");
} else {
printf("small¥n");
}
s = 0;
for(i = 1; i <= 5; i++) {
s = s + i;
}
printf("%d¥n", s);
return;
}
45
CC++はコンピュータの
性能を最大限引き出すため
に適する
細かな制御や高速な実行に
向いている
チューニングにより最適化
できる.高度なプログラミ
ングやパフォーマンス重視
のアプリケーション開発に
適する
R プログラム見本
x <- 100
if (x > 20) {
print("big")
} else {
print("small")
}
s <- 0
for (i in c(1,2,3,4,5)) {
s <- s + i
}
print(s)
46
Rはデータ処理に特化したコ
マンド言語
データ専門家にも適する
Rは豊富な統計やデータ解析
の機能を提供
データの可視化やモデリン
グなどの作業を効率的に行
うことが可能
Octave プログラム見本
x = 100
if (x > 20)
printf("big¥n")
else
printf("small¥n")
endif
s = 0
for i = [1 2 3 4 5]
s = s + i
endfor
printf("%d", s)
47
数値計算や信号処理などに特化
したコマンド言語
行列計算や信号処理などの科学
技術計算に向いている
高度な数値演算やデータ解析が
容易に行える
JavaScript プログラム見本
process.stdin.resume();
process.stdin.setEncoding('utf8');
var util = require('util');
var x = 100;
if (x > 20) {
process.stdout.write('big¥n');
} else {
process.stdout.write('small¥n')
}
var s = 0;
for(var i = 1; i <= 5; i++) {
s = s + i;
}
process.stdout.write(util.format('%d¥n', s));
48
インタラクティブな
ウェブページの作成に
適する
そのとき,ユーザーと
のリアルタイムな対話,
動的なコンテンツの表
示が可能
幅広い種類の OS でサ
ポートされている
(define (decide x)
(cond
((> x 20) "big")
(else "small")))
(define (sum n)
(cond
((= n 0) 0)
(else (+ (sum (- n 1)) n))))
(begin
(print (decide 100))
(print (sum 5)))
Scheme プログラム見本
49
シンプルで明確な構文を
持つ
関数型プログラミング言
強力な再帰処理や高階関
数の活用が簡単にできる
さまざな種類のプログラミング言語
プログラミングの基本理念基礎知識理解していくこ
が重要
一つの言語で基礎を身につけることで,他の言語への適応
もスムーズに進む
なぜプログラミング言語はたくさんあるのか?
異なるニーズや目的に対応
広範な用途に適するもの(Python, Java, JavaScript など)も
あれば,特定の領域でより強力な機能を提供するものも
自分の目標や学びたいことに応じて言語を選ぶことが重要
複数の言語を使い分けることもある
50
51
オンラインでの Python プログラム
実行(trinketを使用)
Python プログラム
ソースコード
さまざまな
プログラミング言語
x = 100
if (x > 20):
print("big")
else:
print("small")
s = 0
for i in [1, 2, 3, 4, 5]:
s = s + i
print(s)
public class Main {
public static void main(String[] args) throws Exception
{
int x = 100;
if (x > 20) {
System.out.printf("big¥n");
} else {
System.out.printf("small¥n");
}
int s = 0;
for(int i = 1; i <= 5; i++) {
s = s + i;
}
System.out.printf("%d¥n", s);
}
}
#include <stdio.h>
int main(void){
int x, s, i;
x = 100;
if (x > 20) {
printf("big¥n");
} else {
printf("small¥n");
}
s = 0;
for(i = 1; i <= 5; i++) {
s = s + i;
}
printf("%d¥n", s);
return;
}
Python
Java C
IT 技術の可能性
プログラミングを通じて,新しい創造,新しい発見,作
業の自動化などが実現できます。
コンピュータを活用した問題解決
プログラミングを通じた問題解決の手順の理解は、問題解決能
論理的思考力の向上に役立ちます。
批判的思考
コンピュータを使えば計算は完璧に正確」という一般的な
い込みを覆すことで、常に批判的に見ることや、根拠を確認す
ることが重要である。
プログラミング言語の多様性
一つの言語で基礎を身につけることで,他の言語への適
応もスムーズに進みます.将来,さまざまなプログラミ
ング言語を学ぶことで,それぞれの特性や利点を理解し,
ニーズに合わせた言語を選択する能力が取得できます.
52
まとめ
プログラミングは創造的な活動であり,多様な問題を解決
し,人間の能力を増幅する.
プログラミングは,計算,データ処理,データ送受信,人
工知能,グラフィックス,シミュレーションなどの多様な
活動を可能にする
コンピュータによる計算には,精度の限界が存在する.
1 ÷ 3」などの単純な計算でも微小な誤差が含まれている
場合がある
プログラミング言語は多様であり,それぞれの言語に特性
がある.異なるニーズ目的にあわせてプログラミング
言語が選択される.
基本的な概念と知識を一つの言語で習得することにより,
他の言語への適応も容易になる.
53