progI-01

計算機プログラミング I
第1回 2005-10-17
担当: 立堀道昭
本日の講義内容
講義の概要
仮想ロボットを動かしてみよう
プログラミングとは
プログラムの作成と実行
演習
講義の概要
講義の概要
目的


プログラミングとは何かを理解し、
体験する
資料を参照しながら、自分で簡
単なJavaプログラムを書けるよ
うになる
教材



テキスト(オンライン)
Java(プログラミング言語・実行
環境)
ロボコード(仮想戦車ロボットシ
ミュレータ)
評価



出席、小テスト、小レポート
演習レポート、テスト
その他、授業への姿勢や掲示板
における活動なども評価する
スタッフ


講師:
立堀道昭(たつぼりみちあき)
TA:
小田原大(おだわらまさる)
松野弘樹(まつのひろき)
スケジュール

月曜2限(10:40-12:10)
10/17, 24, 31
11/7, 14, 21
12/5, 12, 19
1/16, 23, 30
(1/24自習)
教室

E31
情報教育棟3F大演習室2
連絡先・授業の資料
連絡先


[email protected]
適切な表題をつけること
ウェブ

http://lecture.ecc.u-tokyo.ac.jp/~cmich/
CFIVE

https://cfive.ecc.u-tokyo.ac.jp/cfive/
course?action=select&cid=1000-20075-2005W
講義の進め方
1コマ90分の時間配分



前回までの復習とウォームアップ(10分)
講義と演習(60分)
演習、自習、質疑応答(20分)
講義以外の時間


ときおり小さな課題が与えられることがある
質疑応答では、できるだけ掲示板を活用する
講義の受け方として望むこと
講義に集中する

授業に関係のないサイトやメールは見ない
積極的に自分で習ったこと覚えたことの応用
を考える

余力があるときには、余った時間を有効に使う
インターネットの情報を活用する
演習:ロボコードのインストールと実行
インストール
実行
マイロボット MyFirstRobot

Initialのところは苗字をローマ字で
例: tatsubori
別の名前で作ってみよう

例: MyFirstRobot -> Tatsubot
プログラミングとは
プログラミングとは
プログラム
プログラミング

アルゴリズム
プログラミング言語


機械語・高級言語・Java言語
コンパイル・インタプリタ・仮想機械
プログラムとは
計算機に情報を処理させる方法の記述
とりあえずは、ソフトウェアとほぼ同義と考え
よう


ソフトウェアはプログラムの他にデータも含む
「ソフト」でないプログラムもある
(例: ファームウェア)
コンピュータのある所には必ず
プログラムがある
プログラミングとは
狭義: ある手順を計算機に行わせる
プログラムを記述すること
広義: 与えられた問題の解決方法を考え,
それを行うプログラムを作ること
※ アルゴリズム: 問題を解決するための
自明でない手順


計算機だけが対象ではない
例: ガウスの消去法、ドント方式、……
プログラミング言語とは
プログラムを記述するための人工言語
言語なので文法・意味が決められている
計算機が実行できる
沢山ある: 1976年時点で米国防省で
使われていたプログラミング言語の
種類はいくつ? 
Audrey A. Hook, “A Survey of Computer Programming Languages” (1995)
Java言語はプログラミング言語のひとつ
プログラミング言語とは
プログラムを記述するための人工言語
言語なので文法・意味が決められている
計算機が実行できる
沢山ある: 1976年時点で米国防省で
使われていたプログラミング言語の
種類はいくつ?  450以上
Audrey A. Hook, “A Survey of Computer Programming Languages” (1995)
Java言語はプログラミング言語のひとつ
プログラミング言語の種類
2種類に大別できる
機械語 (machine languages):
計算機のCPUが直接実行できる
単純な命令の羅列
高級言語 (high-level languages):
人間が理解しやすいように
設計された言語
Java言語も高級言語の1つ
機械語
2:
3:
4:
5:
6:
7:
xorl %eax,%eax
xorl %edx,%edx
addl %edx,%eax
incl %edx
cmpl $99,%edx
jle 4
計算機のCPUが
直接実行できる
単純な命令の羅列
人間には読み書きしづらい
Aの値を0にせよ
Dの値を0にせよ
Aの値をDだけ増やせ
Dの値を1増やせ
Dの値と99を比較せよ
Dの方が小さかったら4へ行け
(例: 数式は四則演算に分解;
文字列は文字コードを並べて表現)
CPUごとに違う  異なる種類の計算機で同
じプログラムを動かすことは難しい
高級言語
人間が理解しやすいように設計された言語
複雑な処理・データを簡単に書ける
(例: 数式・文字列)
計算機は直接実行できない



翻訳(コンパイル)して実行
通訳プログラム(インタプリタ)を通して実行
Java言語は?
高級言語の例 (Java言語)
…
public class Friday extends Robot {
public void run() {
…
while(true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(-360);
}
}
…
}
100前に移動
銃を右に360度回転
100後ろに移動
銃を左に360度回転
プログラムの実行方式
作成
機械語
プログラム
プログラムの実行方式
作成
高級言語
プログラム
機械語
プログラム
機械語
プログラム
(オブジェクト
コード)
プログラムの実行方式
作成
高級言語
プログラム
機械語
プログラム
機械語
プログラム
(オブジェクト
コード)
通訳プログラム
(インタプリタ)
プログラムの実行方式
作成
高級言語
Java言語
プログラム
仮想機械語
プログラム
機械語
プログラム
機械語
プログラム
(オブジェクト
コード)
通訳プログラム
(インタプリタ)
実行
仮想機械
プログラム
Javaプログラムの
コンパイルと実行
プログラムの用意から実行まで
(一般的なプロセス)
ソース・プログラム(ソースコード)の作成

Java言語のプログラムはテキスト(.java)
ファイル例:
Hello.java

新規作成(コピー) or すでにあるものを編集
Java言語プログラム
Hello.java
作成
コンパイル

javacコマンド
コマンド実行例:
$ javac Hello.java


仮想機械語プログラムが生成される
Javaの仮想機械語プログラムはクラスファイル(.class)
ファイル例:
Hello.class
実行

クラスファイル
Hello.class
javaコマンド
コマンド実行例:
$ java Hello

Javaの仮想機械プログラム
仮想機械
javaコマンド
実行
プログラムの編集
すでにあるプログラムをコピー
エディタを使って編集
デモ
public class Hello {
public static void main(String[] args) {
System.out.println(“Hello World!”);
}
}
演習:Hello World
ファイルを用意してコンパイル
実行
ファイルを修正して、コンパイル・実行
統合開発環境Eclipse
統合開発環境


プログラムの作成から実行、およびその他の開
発作業を支援する環境
ロボコードも一種の統合開発環境
エディタと実行の環境が統合されている
デモ
Applet
Applet(アプレット) – Webブラウザ上で動作
するJavaプログラム
import java.awt.*;
import java.applet.*;
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello World",20,20);
}
}
<html>
<body>
<applet code="HelloWorldApplet" width=“100” height=“100” />
</body>
</html>
演習・自習
ロボットの色を変えてみる
わざと間違えてみる




;をとる
)をとる
}をとる
自分で適当に間違えてみる
Eclipseを使って同じことをしてみる
課題:

以下の内容を報告せよ
学籍番号と名前
文系理系やプログラミング経験(ありなしと、ありの場合その内容)
隣人(同じ机)の学籍番号と名前
わざと間違えてみた内容とその結果
授業の感想

Subjectを [cp1-1] g学籍番号 として [email protected] まで送ること
例: [cp1-1] g549999

締め切りは講義終了後すぐ(13:00pm)
謝辞
この資料は、増原英彦先生のものを部分的
にいただいて編集しました