po-1. プログラミング入門

248 Views

December 21, 21

スライド概要

Python プログラミング演習
URL: https://www.kkaneko.jp/cc/po/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

po-1. プログラミング 入門 プログラミングの基礎を Python で学びたい人へ(全9回) URL: https://www.kkaneko.jp/cc/po/index.html 金子邦彦 1

2.

アウトライン 1-1 全体計画 1-2 プログラミングを始めるとき に知っておくこと 1-3 さまざまなプログラミング言 語 1-4 オブジェクト,メソッド, データの種類 1-5 オンライン開発環境 2

3.

1-1 全体計画 3

4.

はじめに • コンピュータはプログラムで動く • プログラムを学ぶことは,コンピュータを知るこ とにもつながる • プログラムを知らなくては、勉強に不便、研究や 実験に不便という場合も • 間違いのないプログラムを,簡単に書くことがで きるテクニックも大切 4

5.

9回分の資料 • URL: https://www.kkaneko.jp/cc/po/ • 入門者を対象 • オンラインサービスを利用.すぐに学習を開始できる • 9回の資料で,Python の基礎を学ぶことができる 条件分岐,繰り返し,関数と抽象化,リスト,辞書,オ ブジェクト,クラス,メソッド,コンストラクタ,クラ ス階層,継承 • これらの基礎は,間違いのないプログラムを,簡単に 書くことができるためにも重要 5

6.

9回の資料の計画 2 プログラミング,さまざまなプログラミング言語, オブジェクト,メソッド,データの種類 変数,データ型 3 リスト,条件分岐,繰り返し(ループ) 4 メソッド,抽象化 5 繰り返し(ループ),リスト,辞書 6 クラス,コンストラクタ,メソッド 7 クラス階層,継承 8 継承に関する演習 9 全体まとめ 1 6

7.

1-2.プログラミングを始 めるときに知っておくこと 7

8.

プログラミング (programming) • コンピュータは、プログラムで動く • プログラミングは、プログラムを設計、製作 すること • 何らかの作業を、コンピュータで実行させる ために行う プログラムの ソースコード プログラムの 実行結果 8

9.

ソースコード (source code) • プログラムを,何らかのプログラミング言語 で書いたもの • 「ソフトウエアの設計図」ということも. 人間も読み書き、編集できる • 複数のプログラミング言語を使うことも import picamera camera = picamera.PiCamera() camera.capture("1.jpg") exit() Raspberry Pi で,カメラを使って 撮影し,画像を保存するプログラムの ソースコード 9

10.

Python プログラムの実行手順例 • ソースコード Python プログラムのソース コードを,foo.py のような ファイル名で保存しておく • プログラムの起動は,シェル (Windows のコマン ドプロンプトなど)から,コマンドで行える 10

11.

プログラミングで気を付けること • コンピュータは「万能のマシン」と言われる こともある • プログラムで行わせたい「作業」について, 深い理解が必要 • プログラム中の誤り(バグ)を,コンピュー タが自動で発見してくれるわけではない. • 「プログラムが期待通りに動いているか」を 検証する、テストが必要 11

12.

ライブラリ類 • ライブラリとは 複数のプログラムが共有して使えるような 機能を持ったプログラムのこと. 多くの場合,プログラムの実行時にリンク(結 合)される • パッケージ (モジュール,インクルードファイ ルなどともいう) 複数のプログラムが共有して使えるような 機能を持ったソースコード ※ パッケージの種類、豊富は、プログラミング言語 とに違う 12

13.

1-3.さまざまな プログラミング言語 13

14.

• 複数のプログラミング言語を学 ぶことは大事. 賛成できますか? プログラミング 言語は複数ある • 「1つを知っていれば,どの言 語も大体似ているので,応用が 利く」という考え方もある. • 「やりたいこと,学びたいこと に向いた言語を,そのときどき で選ぶのが,一番良い」とも. • 人によって「好きな言語が違 う」ということも 14

15.

さまざまなプログラミング言語 • Python •C • Java • JavaScript ここで行う作業 1.20 より大きければ「big」、 さもなければ「small」と表示 2.0 + 1 + 2 + 3 + 4 + 5 を求める •R • Octave • Scheme など 15

16.

なぜプログラミング言語は たくさんあるのでしょうか? それぞれ 特徴があ る Java R SQL MATLAB / Octave どのコン 初心者向 コン ピュータ け.その ピュータ でも同じ おかげで, の性能を 「データ 処理」に 特化した 「データ ベース」 に特化し 「数値計 算」, 「信号処 プログラ 多数の拡 最大限引 ムが動く. 張機能も. き出す. コマンド 言語 たコマン ド言語 理」など に特化し たコマン ド言語 普及度は トップレ ベル. Python C / C++ 16

17.

Python プログラム見本 x = 100 if (x > 20): print("big") else: print("small") • すぐに実行できる • さまざまな「パッケージ」で 機能を拡張できる • Windows でも Linux でも,ほ ほ同じプログラムで動く s=0 for i in [1, 2, 3, 4, 5]: s=s+i print(s) 17

18.
[beta]
Java プログラム見本
public class Main {

public static void main(String[] args) throws Exception {
int x = 100;
if (x > 20) {
System.out.printf("big\n");

• Windows でも Linux でも
Android アプリでも,同じプロ
グラムで動く

} 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);
}

}

18

19.
[beta]
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;

}

19

20.
[beta]
JavaScript プログラム見本
process.stdin.resume();

Webアプリに向く

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));

20

21.
[beta]
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)

21

22.

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) 22

23.

Scheme プログラム見本 (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))) 23

24.

まとめ • プログラミングは,プログラムを設計,製作する こと • プログラミング言語は多数ある 24

25.

1-4.オブジェクト, メソッド,データの種類 25

26.

プログラムの書き方 • オブジェクト • 変数名 + + 「=」 メソッド + 式もしくは値 • その他,コマンドなど 26

27.

オブジェクト • プログラミングでのオブジェク トは,コンピュータでの操作や 処理の対象となるもののこと • オブジェクトは1つあるいは複 数のデータを持つことができる 27

28.

オブジェクトとメソッド hero.moveDown() Python プログラム hero オブジェクト moveDown() メソッド 間を「.」で区切っている • オブジェクト コンピュータでの操作や処理の対象となるもののこと. ※ 値が変化するオブジェクトのことを変数と呼んだりもする • メソッド オブジェクトに属する操作や処理のこと 28

29.

オブジェクトが動く 実行画面 オブジェクトとメソッド (Python プログラム) CodeCombat の画面を用いて説明している 29

30.

オブジェクトが動く 実行画面 オブジェクトとメソッド (Python プログラム) CodeCombat の画面を用いて説明している 30

31.

オブジェクトが動く 実行画面 オブジェクトとメソッド (Python プログラム) 引数 引数がある場合もあれば, ない場合もある. CodeCombat の画面を用いて説明している 31

32.

Python の基礎 • 文字列は「"」または「'」で囲む • メソッド呼び出しでは,引数を指定することがある. 引数(ひきすう)とは,メソッドに渡す値のこと Hero.attack("fence", 36, 26) Hero.attack(enemy1) • 変数と代入.代入により,変数の値が変化する x = "Door" • メソッドの結果を,変数に代入 enermy1 = hero.findNearestEnemy() これらをマスターしておく. 他の多くのプログラミング言語でも応用がきく. 32

33.

Python での繰り返し(ループ) while True: hero.moveRight() hero.moveLeft() Python プログラム 同じ処理や操作を繰り返す これをマスターしておく. 他の多くのプログラミング言語でも応用がきく. 33

34.

• データには種類がある データの種類 • • • • • • • 整数 浮動小数 文字列 辞書 集合 bool (True/False) バイト列(バイナリともいう) 34

35.

全体まとめ • プログラミングは,プログラムを設計、製作する こと • プログラム開発環境とは、プログラミングにおけ るさまざまなことを支援する機能をもったプログ ラム • プログラミング言語は多数ある • プログラミングでのオブジェクトは,コンピュー タでの操作や処理の対象となるもののこと • メソッドは,オブジェクトに属する操作や処理の こと • データの種類は種々ある 35

36.

1-5.オンライン開発環境 36

37.

開発環境とは 開発環境とは、プログラミングにおけるさまざ まなことを支援する機能をもったプログラム • プログラムの作成、編集(エディタ) • プログラム中の誤り(バグ)の発見やテストの支援 (デバッガ) • プログラムの実行 • マニュアルの表示 • プログラムが扱うファイルのブラウズ • プログラムの配布(パッケージ機能など),共有, 共同編集 • 公開,共有,共同編集 • バックアップ,バージョン管理 ※ これらが簡単に行えるようになる 37

38.

オンラインのプログラム開発環境 • プログラム開発環境の操作は,ウエブブラウザで できる • 自分のパソコンに,特別なソフトをインストール する必要がない • 機能制限がある場合が多い • 利用登録の有無と内容,利用条件,料金について は,利用者で確認のこと 38

39.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 Google Colaboratory https://colab.research.google.com/ • Python の開発環境 • 人工知能,データサイエンス,その他多数のパッケージがイ ンストール済み • コードセル,テキストセルを複数ノートブックにまとめ,保 存や公開できる • ノートブックにより,記録が簡単に残せる.ビジュアルな表 示も簡単に可能 • プログラムの共有も簡単 39

40.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 Python Tutor http://www.pythontutor.com/ • Python, C, Java, JavaScript • ステップ実行,オブジェクトの表示がビジュアルに 40

41.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 Coding Ground https://www.tutorialspoint.com/codingground.htm • Python, C, Java, JavaScript, R, Octave/MATLAB の他にも , SQL, bash, アセンブリ言語など多数の言語 • ファイル作成,ファイル読み書きの実習も簡単にできる • 複数プログラムファイルの組み合わせも簡単にできる 41

42.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 • paiza.IO https://paiza.io/?locale=ja-jp • Python, C, Java, JavaScript, R の他にも SQL など多数 の言語 • 操作が簡単.表示は日本語. • 一定の条件下でファイル操作も可能 42

43.

まとめ • プログラム開発環境は,プログラミングにおける さまざまなことを支援する機能をもったプログラ ム 43

44.

関連資料 • Python まとめページ https://www.kkaneko.jp/cc/python/googlecolab.html • Python の基本 Google Colaboratory,Paiza.IO を使用. https://www.kkaneko.jp/cc/colab/index.html • Python 入門(全6回) Google Colaboratoryを使用. https://www.kkaneko.jp/cc/pf/index.html • Python プログラミング演習(全9回) Python Tutor, VisuAlgo を使用 https://www.kkaneko.jp/cc/po/index.html • さまざまな Windows アプリケーションのインストールと設定 https://www.kkaneko.jp/cc/tools/index.html 44