pi-1. プログラミング入門,プログラミング実行

>100 Views

January 26, 22

スライド概要

Java の基本
URL: https://www.kkaneko.jp/cc/pi/index.html

profile-image

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

シェア

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

各ページのテキスト
1.

pi-1. プログラミング入門, プログラミング実行 (Java の基本) URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 1

2.

私が体験したプログラミング • システム開発の国際プロジェクト・日本側リー ダー(C++言語) • 通信セキュリティシステム(SQL) • 3次元コンピュータグラフィックスのシステム (C/C++) • Cプログラミングに関する教科書 • 研究(仮説と実験と考察)でも 2

3.

アウトライン 番号 項目 説明時間の 目安 1-1 プログラミングはなぜ大切か? プログラミングとは? プログラムの 実行方法 プログラミングで気を付けて欲しいこ と.まとめ. 5分 さまざまなプログラミング言語 プログラムの書き方 Code Combat の紹介 この授業の全体計画 10分 1-2 1-3 1-4 1-5 1-6 1-7 5分 5分 10分 15分 5分 各自、資料を読み返したり、課題に取り組んだりも行う 3

4.

1-1.プログラミングは なぜ大切か? URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 4

5.

プログラムとは • プログラムとは、コンピュータが自動で動くた めの手順を書いたもの • プログラムの起動によって、コンピュータが動 き始める 5

6.

① さまざまなアプリ Web ブラウザ ワープロ (マイクロソフト・ワード) アプリでは,プログラムが動いている 6

7.

② コンピュータを細かくコントロール 人工知能のプログラム (Python 言語) ニューラルネットワークを 作成している (詳しくは3年生の授業で) 7

8.

③ コンピュータどうしがつながるときも プログラムが必要 プログラム プログラム ネットワーク 利用者 コンピュータ 利用者 利用者 サーバ(サービスを提供する ITシステム) プログラム プログラム 8

9.

1-2.プログラミングとは? プログラムの実行方法 URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 9

10.

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

11.

ソースコード (source code) • プログラムを,何らかのプログラミング言語 で書いたもの • 「ソフトウエアの設計図」ということも. 人間も読み書き、編集できる • 複数のプログラミング言語を使うことも 100 × 200 を計算する Java 言語プログラム 11

12.

Java プログラムの実行 • ソースコード Java 言語プログラム のソースコードを準備 • プログラムの起動は,シェル (Windows のコマン ドプロンプトなど)から,コマンドでも行える 12

13.

Java プログラムの実行 実行の方法は他にもある(オンラインのサービスを使う など) ・JavaTutor を使う ・Repl.it を使う 13

14.

1-3.プログラミングを学ぶ上 で気を付けて欲しいこと (まとめ) URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 14

15.

プログラミングを学ぶときに気を付けること • プログラミング言語には,種類が数多くある • 基礎となる知識が大事. 一度,あるプログラミング言語で基礎をマス ターしておけば,他のプログラミング言語でも 応用が利く,という考え方も 15

16.

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

17.

1-4.さまざまな プログラミング言語 URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 17

18.

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

19.

さまざまなプログラミング言語 • Python •C • Java • JavaScript ここで行う作業 1.20 より大きければ「big」、 さもなければ「small」と表示 2.0 + 1 + 2 + 3 + 4 + 5 を求める •R • Octave • Scheme など 国家資格取得にも関係する (Java, Python, C/C++) 19

20.

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

21.

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) • すぐに実行できる • さまざまな「パッケージ」で 機能を拡張できる • Windows でも Linux でも,ほ ほ同じプログラムで動く 21

22.
[beta]
Java プログラム見本
public class Main {
public static void main(String[] args) throws Exception {
int x = 100;
• Windows でも Linux でも
if (x > 20) {
Android アプリでも,同じプロ
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);
}
}

22

23.
[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;
}

・コンピュータの決め細かなコ
ントロール
・高速実行できるチューニング

23

24.
[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));

24

25.
[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)

データ専門家向け

25

26.

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) 行列計算,信号処理など に向く 26

27.

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

28.

1-5.プログラムの書き方 Python で説明 URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 28

29.

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

30.

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

31.

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

32.

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

33.

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

34.

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

35.

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

36.

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

37.

1-6 Code Combat の紹介 URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 37

38.

コードコンバット • コードコンバットは,Python プログラムの実習ができ るオンラインサービス • • • • • • オブジェクト メソッド 文字列 引数 変数と代入 繰り返し(ループ) プログラム実行結果 がビジュアルに表示 される画面など プログラム編集 の画面など 38

39.

コードコンバット(Code Combat) • URL: https://codecombat.com • 各自で会員登録することもできる(メリット:課金アイテ ムを買うことができる.履歴が残る).会員登録しなくて もよい ・メールアドレス ・パスワードは,コードコンバット専用の パスワードを自分で考える ・誕生日 • 課金のメッセージがでたら,注意深く対処する • この資料では,会員登録しないとして説明する • 最初のダンジョンのクリア:目安は1から3時間 39

40.

① Web ブラウザを使う • https://codecombat.com 「課金のメッセージ」などで心配なことが あるときは,無理に使い続けないこと 課金のメッセージの例 40

41.

② 「今すぐプレイ」をクリック • 「日本語」になっていない場合には,日本語に変える • アカウント登録やログインは行わないことにする 41

42.

③ キースガードのダンジョンを選んでみる。 「ゲームスタート」をクリック 42

43.

④ 「キースガードのダンジョン」の最初のダ ンジョンを選ぶ ゴール 課金なしで も問題なく ゴールに 行ける 最初のダンジョン 43

44.

⑤ 「ゲームスタート」をクリック • 音声が出るので、このとき、各自で「音量」を調 整 44

45.

⑥ 「Python(デフォルト)」を選び、「次 へ」をクリック 45

46.

⑦ゲームスタート 46

47.

⑧ 「装備する」をクリック 47

48.

⑨ 「ゲームスタート」をクリック 48

49.

⑩ 「レベルスタート」をクリック 49

50.

ヒントを見たいときは、「ヒント」をクリッ ク 50

51.

メソッドの説明を見たいときは、「メソッ ド」の下のリストの中から、説明を見たいメ ソッドをクリック 51

52.

⑪ 編集画面で、試しに、 「hero.moveDown()」と追加して、「実行」 をクリックしてみる 52

53.

⑫ 「実行」で,キャラクタが動くので確認す る • hero.moveRight() で右に動き、hero.moveDown() で下に動く 53

54.

迷ったら,「ミッション(目標)」や 「ヒント」を確認する • プログラミングの練習だけでなく,ゲーム要素 (パズル)もある.楽しんで解く. 54

55.

⑬「目標:成功!」になるまで、編集画面を 書き換えて、「実行」を繰り返す。 • 「目標:成功!」になったら「完了」をクリック 55

56.

⑭ 完了の確認.「続ける」をクリック 56

57.

ダンジョンのゴールを目指す • 赤い旗をたどり,ダンジョンのゴールを目指す • 有料のダンジョンもある.支払いをしない場合は, 有料のダンジョンは選べない 赤い旗をたどる 青い旗は有料のことも 57

58.

⑯ ダンジョンの出口を目指す 58

59.

Python まとめ • オブジェクトとメソッド hero.moveDown() hero はオブジェクト moveDown() はメソッド • 文字列は「”」または「’」で囲む • メソッド呼び出しでは,引数を指定することがある Hero.attack("fence", 36, 26) Hero.attack(enemy1) • 変数と代入 x = "Door" • メソッドの結果を,変数に代入 enermy1 = hero.findNearestEnemy() • 繰り返し(ループ) while True: hero.moveRight() hero.moveLeft() 59

60.

1-7 この授業の全体計画 60

61.

• プログラムに上達するとよいこ とがたくさんある この授業 • この授業では,プログラミング に関する基礎,大切なことを学 ぶ. • プログラミングの初心者を対象 61

62.

この授業の 主な内容 入門 • オブジェクト • メソッド • データの種類 • クラス • 配列 • 条件分岐,繰り返し 発展 • バグのないプログラムを 作成するのに役立つ実践 • プログラムの設計法 • プログラムでできる種々 の機能(タイマー,グラ フィックスなど) 62