計算機プログラミング 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) 謝辞 この資料は、増原英彦先生のものを部分的 にいただいて編集しました
© Copyright 2024 ExpyDoc