pi-1. プログラミング入門:Java
言語の基礎と実行環境の理解
1
金子邦彦
Java マスター講座:基礎から応用まで)
URL: https://www.kkaneko.jp/pro/pi/index.html
2
Java プログラム
ソースコード
さまざまな
プログラミング言語
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
Java プログラム実行のためのコマンド
と実行結果
3
オンラインでの Java プログラム
実行(Java Tutor を使用)
オンラインでの Java プログラム
実行(GDB online を使用)
コンピュータは便利なものであるが,コンピュータを使うから
といって,計算が完璧に正確というわけではない
実行結果
プログラム
アウトライン
4
番号
項目
1
-1
プログラミング
1
-2
Java
プログラムの実行方法
1
-3
オンライン開発環境
1
-4
Java Tutor
での Java プログラム実行
1
-5
GDB online
での Java プログラム実行
1
-6
計算誤差
1
-7
さまざまなプログラミング言語
1
-8
この授業の全体計画
各自、資料を読み返したり、課題に取り組んだりも行う
この授業では、Java を用いて基礎を学び、マスターする
1-1. プログラミング
5
プログラム
コンピュータは,プログラムで動く
プログラムを設計,制作することはクリエイ
ティブである
6
さまざまなアプリ
アプリでは,プログラムが動いている
7
Web ブラウザ
ワープロ
(マイクロソフト・ワード)
コンピュータを細かくコントロー
8
人工知能のプログラム
Python 言語)
ニューラルネットワークを
作成している
コンピュータどうしがつながるときも
プログラムが必要
9
利用者
コンピュータ
利用者
利用者
サーバ(サービスを提供する
ITシステム)
ネットワーク
プログラム
プログラム
プログラム
プログラム
プログラミング (programming)
コンピュータは、プログラムで動く
プログラミングは、プログラムを設計、製作する
こと
何らかの作業を、コンピュータで実行させるため
に行う
10
プログラム
ソースコード
Java 言語)
プログラム
実行結果
ソースコード (source code)
プログラムを,何らかのプログラミング言語
で書いたもの
ソフトウエアの設計図」ということも.
人間も読み書き,編集できる
11
100 × 200 を計算する Java 言語プログラム
public class YourClassNameHere {
public static void main(String[] args) {
int x = 100;
int y = 200;
System.out.println(x + y);
}
}
プログラムが役に立つ理由
プログラム次第で,様々な処理が可能.
プログラムは,コンピュータでの様々な処理
動化する
プログラムソースコードは,作業記録としても
使うことができる.いつでも再現できる
プログラム中の値などを変えて再実行も簡単
12
プログラミングで気を付けるこ
13
コンピュータにも,できないことがある
コンピュータを使うからといって,計算が完璧に正確とい
うわけではない
人間がプログラムを作るとき,書き間違い,勘違い,思い
込みなどによるミスがありえる
プログラムが期待通りに動いているか」のテストが重要
ミスを減らすためにも,「やりたいこと」を1回書いて済
ませることが大切.次のようなさまざまな手段がある
抽象化
標準ライブラリ
クラス階層
問題をコンピュータで解くとき,解くべき問題を深く理解
した上で,必要に応じて,算法(アルゴリズム)を活用する
1-2. Java プログラムの実行方法
14
プラットフォームとは
もともとは、大地乗り降り場等の意味
IT では、ソフトウエア等を動作させるのに必要
機器ソフトウエアのこと
Windows 10 + パソコン
Max OS X + パソコン
Linux + サーバコンピュータ
Android + スマホ
15
Java 言語の良さ
さまざまなプラットフォームで、同じプログラム
が動く(プラットフォーム非依存)
私の見解
Java 登場前は,「違うプラットフォームで動
かすときは、プログラムの書き替えが必要」なのが
常識
Java の登場により,これが変化.人気の理由
・インターネットの普及により,Windows, Linux
等がミックスして動く IT システムが当たり前.
Java は便利に利用できる.
16
Java 言語の特徴
1. さまざまなプラットフォームで、同じプログラ
ムが動く(プラットフォーム非依存)
2. オブジェクト指向プログラミング言語である
3. 標準ライブラリ(標準機能として備わっている
ライブラリ)が充実している
4. C++言語と書き方が類似
Java のことを「C++ の改良」という人も
17
Java のプログラムを動かすには
Java ソースコード
18
コンパイル
(ビルド)
バイトコード
全部がそろって,
1つのアプリケーション
Java 仮想マシン
標準ライブラリ
これで,プラットフォーム
非依存を達成
コンパイル(ビルド)は、
ソースコードバイトコード
変換する操作
ファイル名: Main.java
自動結合
Java のプログラムのコンパイル(ビルド)と実行
19
Java のアプリケーション
起動すると,main
ッド実行される
Java のルール
Java のソースコード
ファイル名: Main.java
javac は、コンパイル(ビ
ルド)を行うコマンド
java アプリケーション
の起動を行うコマンド
1-3. オンライン開発環境
20
プログラム開発環境
プログラム開発環境は,プログラミングにおけ
るさまざまなことを支援する機能をもったプロ
グラム
プログラムの作成,編集(エディタ
プログラム中の誤り(バグ)の発見やテストの支援
デバッガ
プログラムの実行
マニュアルの表示
プログラムが扱うファイルのブラウズ
プログラムの配布(パッケージ機能など),共有,
共同編集
バックアップ,バージョン管理
これらが簡単に行えるようになる
21
オンラインのプログラム開発環
プログラム開発環境の操作は,ウエブブラウザで
できる
自分のパソコンに,特別なソフトをインストール
する必要がない
機能制限がある場合が多い
利用登録の有無と内容,利用条件,料金について
は,利用者で確認のこと
22
プログラム作成ができるウエブサービス
(オンラインの開発環境)の例
23
https://colab.research.google.com/
Google Colaboratory
Python の開発環境
多数のパッケージがインストール済み
ノートブックにより、記録が簡単に残
せる.ビジュアルな表示も簡単に可能
プログラムの共有も簡単
https://pythontutor.com/java.html
Java Tutor
Python, JavaScript, C, C++, Java
ステップ実行、オブジェクト
の表示がビジュアル
プログラム作成ができるウエブサービス
(オンラインの開発環境)の例
24
https://www.onlinegdb.com/
GDB online
C, C++, Java, Python, PHP, C#, OCam, VB,
HTML, Ruby, Perl, Pascal, R, Fortran,
Haskell, アセンブリ, Objective C, SQLite,
Javascript, Prolog, Swift, Rust, Go, Bash
デバッガの機能あり
https://www.tutorialspoint.com/
codingground.htm
Coding Ground
Python, C, Java, JavaScript, R,
Octave/MATLAB, SQL, bash, アセンブリ,
MySQL, SQLite, その他多数
ファイル作成,ファイル読み書き,
複数プログラムファイルの組み合わ
せ可能
プログラム作成ができるウエブサービス
(オンラインの開発環境)の例
25
https://jsfiddle.net/
JSFiddle
HTML, CSS, JavaScript
見た目をオンラインで確認
https://paiza.io/
Paiza.IO
Python, C, Java, JavaScript, R, MySQL
など多数
表示は日本語
一定の条件下でファイル操作も可能
無料のオンラインサービス
一定の条件下で無料で使える.
活用によって,ICTはより便利になる.
マナー
・作者が定める利用条件を確認
著作権を尊重
・安全意識:秘密にしたいデータをアップロード
ない
・広告等が表示される場合がある
26
1-4. Java Tutor での Java
ログラム実行
27
Java Tutor
28
Java などのプログラミング言語の体
験,演習ができるオンラインサービス
http://www.pythontutor.com/
オンラインなので、「秘密にしたいプログラム」を
扱うには十分な注意が必要
Java Tutor の起動
ウェブブラウザを起動する
Java Tutor を使いたいので,次の URL を開く
http://www.pythontutor.com/
Java」をクリック 編集画面が開く
29
Java Tutor の編集画面
30
Java 8」になっている
実行のためのボタン
エディタ
(プログラムを書き換えることができる)
最初から main メソッドの
ひな形が入っている
Java Tutor でのプログラム実行手
31
(1)Visualize Execution」をク
リックして実行画面に切り替える
(2)Last」をクリック.
(3) 実行結果を確認する.
(4)Edit this code」をク
リックして編集画面に戻る
Java Tutor 使用上の注意点①
実行画面で,次のような赤の表示が出ることがある
無視してよい
過去の文法ミスに関する確認表示
邪魔なときは「Close
32
Java Tutor 使用上の注意点②
please wait ... executing」のとき,10秒ほど待つ
混雑しているときは, Server Busy・・・」
というメッセージが出ることがある.
混雑している.少し(数秒から数十秒)待と自
動で表示が変わる(変わらない場合には,操作を
もう一度行ってみる)
33
1-5. GDB online での Java
ログラム実行
34
GDB online
35
Java などのプログラミング言語の体
験,演習ができるオンラインサービス
https://www.onlinegdb.com
オンラインなので、「秘密にしたいプログラム」を
扱うには十分な注意が必要
GDB online Java を動かす手順
ウェブブラウザを起動する
次の URL を開く
https://www.onlinegdb.com
36
Language」のところで,「Java」を選ぶ
37
エディタ画面
実行ボタン
プログラムを
書き換えること
ができる
38
39
ソースコードを入れる
実行.実行結果を確認
Run」をクリック.
1-5. 計算誤差
40
コンピュータで「1÷3」 を求めると
どうなると思いますか
1. 0.333333333333333333333333333333 と無
限に表示される
2. 計算できない
3. 正確な値が表示されない(誤差を含む)
41
演習
資料:43 45
【トピックス】
計算誤差
42
43
Java Tutor のエディタで次のプログラムを入れ
public class YourClassNameHere {
public static void main(String[] args) {
System.out.println(1.0/3.0);
}
}
44
実行するために,「Visual Execution」をク
リック.そして「Last」をクリック.結果を確認
結果を確認
誤差がある
Edit this code」をクリックして,エディタ
の画面に戻る
45
public class YourClassNameHere {
public static void main(String[] args) {
System.out.println(6 * 1.1);
}
}
Java Tutor のエディタで次のプログラムを入れ
46
実行するために,「Visual Execution」をクリッ
ク.そして「Last」をクリック.結果を確認
Edit this code」をクリックして,エディタ
の画面に戻る
結果を確認
誤差がある
47
Java Tutor のエディタで次のプログラムを入れ
public class YourClassNameHere {
public static void main(String[] args) {
System.out.println(3 * 1.1);
}
}
48
実行するために,「Visual Execution」をクリッ
ク.そして「Last」をクリック.結果を確認
結果を確認
誤差がある
コンピュータだから「計算が完璧に正確」という
思い込みはしないこと
1 ÷ 3 を計算して表示させると、
正確な値が表示されない(誤差を含む)
誤差があっても、十分に役に立つ
誤差を許しているから、計算が効率的に済むとい
う考え方もある
49
1-6. さまざまなプログラミン
グ言語
50
プログラミングを学ぶときに気を付けること
プログラミング言語には,種類が数多くある
基礎となる知識が大事.
一度,あるプログラミング言語で基礎をマス
ターしておけば,他のプログラミング言語でも
応用が利く,という考え方も
51
プログラミング
言語は複数ある
複数のプログラミング言語を学
ぶことは大事
賛成できますか?
「1つを知っていれば,どの言
語も大体似ているので,応用が
利く」という考え方もある.
「やりたいこと,学びたいこと
に向いた言語を,そのときどき
で選ぶのが,一番良い」とも.
人によって「好きな言語が違
う」ということも
52
さまざまなプログラミング言語
Python
C
Java
JavaScript
R
Octave
Scheme
など
53
ここで行う作業
1.20 より大きければ「big」、
さもなければ「small」と表示
2.0 + 1 + 2 + 3 + 4 + 5 を求める
国家資格取得にも関係する
Java, Python, C/C++
なぜプログラミング言語は
たくさんあるのでしょうか?
54
それぞれ
特徴があ
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)
55
すぐに実行できる
さまざまな「パッケージ」で
機能を拡張できる
Windows でも Linux でも,ほ
ほ同じプログラムで動く
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);
}
}
56
Windows でも Linux でも
Android アプリでも,同じプロ
グラムで動く
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;
}
57
・コンピュータの決め細かなコ
ントロール
・高速実行できるチューニング
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));
58
Webアプリに向く
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)
59
データ専門家向け
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)
60
行列計算,信号処理など
に向く
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)))
61
関数型言語
1-7 この授業の全体計画
62
この授業
プログラムに上達するとよいこ
とがたくさんある
この授業では,プログラミング
に関する基礎,大切なことを学
ぶ.
プログラミングの初心者を対象
63
この授業の
主な内容
64
オブジェクト
メソッド
データの種類
クラス
配列
条件分岐,繰り返し
入門
発展
バグのないプログラム
作成するのに役立つ実践
プログラムの設計法
プログラムでできる種々
の機能(タイマー,グラ
フィックスなど)
関連ページ
Java プログラミング入門
GDB online を使用
https://www.kkaneko.jp/pro/ji/index.html
Java の基本
Java Tutor, GDB online を使用
https://www.kkaneko.jp/pro/pi/index.html
Java プログラム例
https://www.kkaneko.jp/pro/java/index.html
65