データ構造とアルゴリズム論 第2章 配列(構造)を使った処理

Slides:



Advertisements
Similar presentations
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
Advertisements

復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
プログラミング 平成24年1月11日 森田 彦.
プログラミング 平成25年10月29日 森田 彦.
初年次セミナー 第8回 データの入力.
プログラミング 平成22年10月20日 森田 彦.
プログラミング 平成24年10月16日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
データ構造とアルゴリズム論 第5章 レコード構造を使った処理-クラスの利用
ファーストイヤー・セミナーⅡ 第8回 データの入力.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プログラミング 平成24年10月23日 森田 彦.
プログラミング 平成23年10月19日 森田 彦.
問題提起その 1 一文字ずつ文字(数字)を読み込み、それぞれの文字が何回入力されたかを数えて出力するプログラム。
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
データ構造とアルゴリズム論 第9章 木構造 平成16年12月21日 森田 彦.
情報数理Ⅱ 平成27年9月30日 森田 彦.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
プログラミング 平成25年12月10日 森田 彦.
ネットワークプログラミング論 平成28年12月12日 森田 彦.
プログラミング 平成24年10月30日 森田 彦.
データ構造とアルゴリズム論 第7章 探索のアルゴリズム
データ構造とアルゴリズム論 第9章 木構造 平成17年12月20日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成15年12月9日 森田 彦.
データ構造とアルゴリズム論 第8章 再帰処理 平成15年12月2日 森田 彦.
プログラミング 平成25年11月5日 森田 彦.
データ構造と アルゴリズム論 平成29年9月27日 森田 彦.
プログラミング 平成23年12月21日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力2
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
 情報の授業 アルゴリズムとプログラム(1) Go.Ota.
データ構造とアルゴリズム論 第7章 再帰処理 平成17年12月6日 森田 彦.
データ構造とアルゴリズム論 第6章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
プログラミングⅠ 平成30年10月29日 森田 彦.
ネットワークプログラミング論 平成28年12月19日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成29年12月20日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成30年6月27日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成16年12月14日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
ソフトウェア制作論 平成30年10月10日.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミングⅠ 平成30年10月22日 森田 彦.
プログラミングⅠ 平成31年1月7日 森田 彦.
プログラミング 平成22年12月15日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
アルゴリズムとプログラミング (Algorithms and Programming)
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
アルゴリズムとプログラミング (Algorithms and Programming)
データ構造とアルゴリズム論 第7章 再帰処理 平成16年11月30日 森田 彦.
プログラミングⅠ 平成30年12月10日 森田 彦.
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
CGプログラミング論 平成28年7月6日 森田 彦.
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
情報数理Ⅱ 平成28年9月21日 森田 彦.
プログラミング基礎演習 第4回.
データ構造とアルゴリズム論 第9章 連結リスト
プログラミング 平成24年12月11日 森田 彦.
ソフトウェア制作論 平成30年10月17日.
プログラミング 平成28年10月25日 森田 彦.
プログラミング入門2 第5回 配列 変数宣言、初期化について
CGプログラミング論 平成28年5月11日 森田 彦.
プログラミング 平成28年10月18日 森田 彦.
Presentation transcript:

データ構造とアルゴリズム論 第2章 配列(構造)を使った処理 データ構造とアルゴリズム論 第2章 配列(構造)を使った処理 平成15年10月7日 森田 彦

配列(構造)とは? A[1],A[2],・・・,のように、カッコ内の数字(添え字)で変数の値を指定できるデータ構造  例 1,5,3,9,7を配列変数に保存 大きさが「5」の配列変数Aを1個用意。 A 1 5 3 9 7 [1] [2] [3] [4] [5] ※一般の変数の場合 5個の変数を用意する。 1 5 3 9 7 A1 A2 A3 A4 A5

本章(本日)の学習のねらい 配列を使った(典型的な)処理を学習する。 処理内容(アルゴリズム)に応じて配列を利用できるようになる。 注意:配列を理解できなければ、次回以降の講義内容を理解できません。

2-1 配列の利点 例 5個の数値を順に表示させる。 <5個の変数> <1個の配列変数> i←i+1 2-1 配列の利点 例 5個の数値を順に表示させる。 <5個の変数> <1個の配列変数> 開始 開始 A1を表示 i←1 A2を表示 No i≦5 i≦100 A3を表示 Yes A[i] を表示 A4を表示 終了 i←i+1 A5を表示 繰り返し処理の場合 → 配列を利用すると便利! 終了

配列(利用)の利点 拡張が容易。上の例の場合、データ数が100になっても「5→100」に変えるだけで良い。 処理内容をコンパクトに記述できるので、見通しが良くなる。→アルゴリズムの構造がはっきりとする。

2-2 Java言語による配列の宣言 p.14~15を熟読して下さい。 プリントの訂正(p.14)  double B[] = new double[]  double B[] = new double[20]

2-3 配列の応用-最大・最小 4つの正の整数が変数A1~A4に入っている。この中の最大値を求める。 例:1,5,3,8の場合 2-3 配列の応用-最大・最小 4つの正の整数が変数A1~A4に入っている。この中の最大値を求める。 例:1,5,3,8の場合 終了!MAXに最大値が入っている。 1.A1とMAXの比較 2.A2とMAXの比較 3.A3とMAXの比較 4.A4とMAXの比較 1 1 1 5 5 5 3 3 3 8 8 8 8 0 5 0 1 A1 A2 A3 A4 MAX 勝ち抜き戦方式

流れ図で表すと・・・ 開始 No A3>MAX MAX←0 Yes No A1>MAX MAX←A3 Yes MAX←A1 No 終了

【基礎課題2-1】 配列A[1]~A[4]を用いて表すと・・・ 拡張が容易:整数の数が増えてもループの終値を変更するだけで良い。 開始 MAX←0 ループ i:1,1,4  拡張が容易:整数の数が増えてもループの終値を変更するだけで良い。 記述がコンパクトに:繰り返し処理をループ内に一つだけ記述するだけで済む。 A[i]>MAX No Yes MAX←A[i] ループ MAX の表示 理解度チェック→【基礎課題2-2 】、【基礎課題2-3 】、【基礎課題2-4】 終了

2-4 配列要素の挿入・削除 例:配列A[1]~A[N]にデータa1~aNが入っている。→配列要素のm番目にデータXを挿入する。 2-4 配列要素の挿入・削除 例:配列A[1]~A[N]にデータa1~aNが入っている。→配列要素のm番目にデータXを挿入する。 a1 a2 ・・・ am am+1 aN A[1] A[2] A[m] A[m+1] A[N] X am以降を右にずらす a1 a2 ・・・ am am+1 ・・・ aN A[1] A[2] A[m] A[m+1] A[m+2] A[N+1] 挿入完了! a1 a2 ・・・ X am am+1 ・・・ aN A[1] A[2] A[m] A[m+1] A[m+2] A[N+1]

流れ図で表すと・・・ A[N]→A[N+1] 右にずらす。 A[N-1]→A[N] ・・・ A[m]→A[m+1] 開始 X a1 a2 ・・・ am am+1 ・・・ aN mの入力 A[1] A[2] A[m] A[m+1] A[m+2] A[N+1] ループ i:N,-1,m A[N]→A[N+1] 右にずらす。 A[N-1]→A[N] A[i+1] ←A[i] ・・・ A[m]→A[m+1] ループ A[m]→A[m+1]から始めると、どうなるか? A[m] ←X 終了 【基礎課題2-5】

2-5 添え字の参照 例:配列Data[1]~Data[N]にデータ(整数)が入っている。この中で、偶数および奇数の個数を数える。 2-5 添え字の参照 開始 例:配列Data[1]~Data[N]にデータ(整数)が入っている。この中で、偶数および奇数の個数を数える。 Gusu←0 Kisu←0 ループ i:1,1,N Kosu[1]:偶数の個数Kosu[2]:奇数の個数 を導入すると・・・ Y ←Data[i] % 2 No Y=0 Yes Gusu←Gusu+1 Kisu←Kisu+1 ループ 終了

Kosu[ ]内には、何が入る? Y=0: Kosu[1]←Kosu[1]+1 Y=1: Kosu[2]←Kosu[2]+1 開始 Kosu[ ]内には、何が入る? 初期化ループ i:1,1,2 Y=0: Kosu[1]←Kosu[1]+1 Kosu[i]←0 Y=1: Kosu[2]←Kosu[2]+1 となることに注目すると・・・ 初期化ループ ループ i:1,1,N 選択構造が不要になった! Y ←Data[i] % 2 Kosu[Y+1]←Kosu[Y+1]+1 Kosu[ ]←Kosu[ ]+1 データ構造の変更→アルゴリズムの変更! ループ p.28~p.29を熟読して【基礎課題2-7】へ 終了

テストのアナウンス 11/4に第1回目のテストを実施します。 要領は前期と同じペーパーテスト形式です。 試験欠席の場合は、単位を取得できません。→十分注意してください。 詳細は、追ってアナウンスします。 成績=2回のテストの平均点+応用課題数