プログラミング基礎I(再) 山元進.

Slides:



Advertisements
Similar presentations
山元進.  今日 総合的な演習  来週  中間試験  期末と中間両方受けて初めて成績が付く  どちらかを欠席したら 成績表は X  期末試験:適切な理由があれば追試が受けられる  適切な理由であるかの判定のため、診断書などを持参せ よ  対外試合に参加、などの理由は基本的に認めない.
Advertisements

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
プログラミング Ⅱ 第2回 第1回(プログラミングⅠの復 習) の解説. プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていきます. TicTa cToe1.
プログラミング演習( 2 組) 第 9 回
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
プログラムのパタン演習 解説.
プログラミング基礎I(再) 山元進.
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
アルゴリズムとデータ構造 2012年6月27日
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プログラミングができるようになるには…. 一週間に1回では無理! 自分の力でできるだけがんばる
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
6/26 前回復習 for文、while文による繰り返し計算
プログラミング基礎I(再) 山元進.
最終回 総合演習 第13回目 [7月17日、H.15(‘03)] 本日のメニュー 1)総合演習課題 2)過去の試験問題 3)試験について
プログラミング基礎I(再) 山元進.
基礎プログラミング 第13回(2007年5月28日) 「関数」の補足説明 Report-Fの解説.
C言語 配列 2016年 吉田研究室.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
第6章 2重ループ&配列 2重ループと配列をやります.
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
社会人学習講座 「Javaプログラミング概論」
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
第20章 Flyweight ~同じものを共有して無駄をなくす~
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2)
コンパイラの解析 (2) GCJのデータ構造 - 1.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
JAVA入門後期⑩ 情報処理試験例題解説.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング入門 電卓を作ろう・パートIV!!.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
5.9 メソッドのオーバーロード 5.10 変数の引渡し 2003/11/21 紺野憲一
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
アルゴリズムとデータ構造1 2006年7月11日
アルゴリズムとデータ構造 2011年6月23日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング 3 2 次元配列.
プログラミングⅡ 第2回.
アルゴリズムとデータ構造 2012年7月2日
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
アルゴリズムとデータ構造 2011年6月28日
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
アルゴリズムとデータ構造 2013年7月2日
アルゴリズムとデータ構造 2012年6月25日
プログラミング基礎演習 第4回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
参考:大きい要素の処理.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

プログラミング基礎I(再) 山元進

今日は課題を解くのメイン 指示をよく読むこと まず、この PowerPoint の資料があったのと同じ Web page から、 Perm.class をダウンロードし、今日の課題プログラムを作成するディレクトリに置く。 同様に、Ex01.java をダウンロードし、同じディレクトリに置く。 Ex01.java の id=999; という行の999を、自分の学籍番号の下3ケタに書きかえる。

課題 class Ex01 { public static void main(String[] args){ int id=999; int[] test={0,1,2,3,4,5,6,7,8,9}; Perm.print(test); do{ Perm.permutation(id,test); }while(! Perm.isIdentity(test)); System.out.println("Finished."); }

付加説明 Perm.print(int[] input) Perm.permutation(int key,int[] inout) 長さ10の整数配列を画面に印字する Perm.permutation(int key,int[] inout) 長さ10の整数配列を並べ替える。 ただし、入力には制限があり、条件を満たさないと実行時エラーになる boolean Perm.isIdentity(int[] input) 長さ10の配列が、{0,1,2,3,4,5,6,7,8,9} と等しければ true そうでなければ false を返す これらの3つのメソッドは、Perm.class が同じディレクトリにあると使える。

以下、id=999; が書き換え済みであるとする。 問1 Ex01.java をコンパイル・実行し、結果を確認せよ。このプログラムで、 Perm. print, Perm.permutation, Perm.isIdentity の3つのメソッドは、どのような順序で実行されるか? 紙に書いて説明せよ。 図を併用しても良い。 問2 Ex01.java と同じ動作をするプログラムを、do を使わずに while のみを使って作れ。class 名は Report01 とする。 問3 Ex01.java と同じ動作をするプログラムを、do も while も使わずに、for を使って作れ。class 名は Report02 とする。

問4 Perm.permutation が行っている置き換えはどのような置き換えか、置き換え規則を明文化せよ。 この問の解答にはグレードがある。 良い解答は、2番目の引数の配列に蓄えられたデータの並びが、どのようなものであっても、Perm.permutation が行う置き換えの結果を再現する規則を書くことである。 普通の解答は、実行時に出力される 21 個のデータの並び方に対して置き換えの結果を再現する規則である。 1番目の引数が自分の学籍番号以外についてまで再現する必要はない。 理解を補助する目的で図を加えても良い。

問5 Perm.permutation の1番目の引数を自分の学籍番号の下3ケタに固定した場合と同じ動作をするメソッド permutation (int[ ] array)を作成し、permutation とPerm.permutation との動作比較をするプログラムを作れ。ただし、class 名は Report03 とすること。 この問の解答にも、問4と同様のグレードがある。 1番目の引数が自分の学籍番号以外についてまで再現する必要はない。→ 今回作る permutation の引数が 1 つしかないのは、そのため。

以下 参考資料

id=999; の場合の実行例 0123456789 1行目は、繰り返し処理の前に実行した print で印字されたもの 8901564237 繰り返し処理 1 回目 3789645012 繰り返し処理 2 回目 1237456890 繰り返し処理 3 回目 9012564378 7890645123 2378456901 0123564789 8901645237 3789456012 1237564890 9012645378 7890456123 2378564901 0123645789 8901456237 3789564012 1237645890 9012456378 7890564123 2378645901 0123456789 繰り返し処理 21 回目 ここで元の並びに戻ったので繰り返し終了 Finished. 終わったしるしに "Finished." と印字

do~while 文 (Ex01) do { 継続条件がtrueの間、繰り返し行う処理 } while( 継続条件 ) ; 最低1回は { } 内の処理が行われる ※ 繰り返し行う処理が 1 文であるばあい、 { } で括る必要はない。しかし、形式を整えるため、いつでも { } を入れておいた方が良い。

do~while 文の実行順序 do while 繰り返し行う処理 ({ } の中の処理) true 継続条件 false

while 文 (Report1) while( 継続条件 ) { 継続条件がtrueの間、繰り返し行う処理 } while 文で継続条件が true である間、繰り返す処理が記述できる。 条件の記述に気をつける。 ※ 繰り返し行う処理が 1 文であるばあい、 { } で括る必要はない。しかし、形式を整えるため、いつでも { } を入れておいた方が良い。

while 文の実行順序 while 繰り返し行う処理 ({ } の中の処理) true 継続条件 false 一度も「繰り返し行う処理」を実行せずに終了 false while 文の次の文へ

for 文 (Report2) for ( 初期化 ; 継続条件 ; 更新処理 ) { 繰り返し行う処理 } 何回も繰り返す処理を簡単に記述できる ※ 繰り返し行う処理が 1 文であるばあい、 { } で括る必要はない。しかし、形式を整えるため、いつでも { } を入れておいた方が良い。

for 文の実行順序 for 初期化 更新処理 繰り返し行う処理 ({ } の中の処理) true 継続条件 false 一度も「繰り返し行う処理」を実行せずに終了 false for 文の次の文へ

id=999; の場合の変換規則 0123456789 1行目は、繰り返し処理の前に実行した print で印字されたもの 8901564237 繰り返し処理 1 回目 3789645012 繰り返し処理 2 回目 1237456890 繰り返し処理 3 回目 9012564378 7890645123 2378456901 0123564789 8901645237 3789456012 1237564890 規則の明文化の例 0→8 9012645378 1→9 7890456123 2→0 2378564901 3→1 0123645789 4→5 8901456237 5→6 3789564012 6→4 1237645890 7→2 9012456378 8→3 7890564123 9→7 2378645901 0123456789 繰り返し処理 21 回目 ここで元の並びに戻ったので繰り返し終了 Finished. 終わったしるしに "Finished." と印字

ただし… 前頁の規則は、入力する配列のデータの並びを、前頁に出てくる 21 種に限定すれば正しいが、例えば {0,1,2,3,4,5,6,7,9,8} を入れると正しくない どんな入力に対しても Perm.permutation と同じ変換をするのが良い解答 実行時エラーまで再現する必要はない