単純ソート (1) 配列の先頭から順に, 次の要素以降の中から最小なものを次々に選び出し, 入れ替える. int[] a = new int[m]; と宣言され,M 個のデータが配列 a に格納されているとき, Step 1.: a[0] に着目し,a[1]~a[M-1] のうち最小のものが a[0] より小さければ a[0] と交換する. Step 2.: a[1] に着目し,a[2]~a[M-1] のうち最小のものが a[1] より小さければ a[1] と交換する. : Step M-2.: a[m-3] に着目し,a[M-2]~a[M-1] のうち最小のものが a[m-3] より小さければ a[m-3] と交換する. Step M-1.: a[m-1] の方が小さければ a[m-2] と交換する. 2020 年度都市環境学科プログラミング言語 265
単純ソート (2) 配列の先頭から後に向かって走査して比較をし後ろの要素が小さければ入れ替える a[0] a[1] a[2] a[3] a[4] 0-1 20 13 3 55 6 比較して入替え 2020 年度都市環境学科プログラミング言語 266
単純ソート (3) a[0] a[1] a[2] a[3] a[4] 0-1 20 13 3 55 6 0-2 13 20 3 55 6 比較して入替え 2020 年度都市環境学科プログラミング言語 267
単純ソート (4) a[0] a[1] a[2] a[3] a[4] 0-1 20 13 3 55 6 0-2 13 20 3 55 6 0-3 3 20 13 55 6 比較して入れ替えない : v 以下同様に繰り返す 2020 年度都市環境学科プログラミング言語 268
単純ソート (5) a[0] a[1] a[2] a[3] a[4] 0-1 20 13 3 55 6 0-2 13 20 3 55 6 0-3 3 20 13 55 6 0-4 3 20 13 55 6 1-2 3 20 13 55 6 1-3 3 13 20 55 6 1-4 3 13 20 55 6 2-3 3 6 20 55 13 2-4 3 6 20 55 13 3-4 3 6 13 55 20 3-F 3 6 13 20 55 ソーティング完了 2020 年度都市環境学科プログラミング言語 269
単純ソート (6) なくても可 実行結果 第 1 番目 : 11 第 2 番目 : 22 第 3 番目 : 32 第 4 番目 : 57 第 5 番目 : 91 2020 年度都市環境学科プログラミング言語 270
Array.Sort() メソッドによる配列のソート Array クラスの Sort() メソッドに配列を渡すとソーティングが行われて戻ってくる. 実行結果 第 1 番目 : 11 第 2 番目 : 22 第 3 番目 : 32 第 4 番目 : 57 第 5 番目 : 91 2020 年度都市環境学科プログラミング言語 271
Fortran で記述した p.270 と同様なプログラム program simplesort implicit none 継続行 integer :: i, j, temp, n=5 integer :: a(1:5)=(/22, 57, 11, & 91, 32/) do i=1, n-1 do j=i+1, n if (a(i) > a(j)) then temp = a(i) a(i) = a(j) a(j) = temp endif enddo enddo do i=1, n write(*,*) ' 第 ', i, ' 番目 : ', a(i) enddo endprogram simplesort 配列 a の 5 つの要素の初期化. 2020 年度都市環境学科プログラミング言語 272
配列 (18) ー 2 次元配列 int[,] a = new int[2,3]; と宣言すると a[0,0] a[0,1] a[0,2] a[1,0] a[1,1] a[1,2] 4 バイト 2 3 のように領域が確保され,a[0,0], a[0,1], a[0,2], a[1,0], a[1,1] および a[1,2] などとアクセスできる. 初期化 int[,] a = new int[,] {{1,2,3}, {4,5,6}}; a[0,0]=1; a[0,1]=2; a[0,2]=3; a[1,0]=4; a[1,1]=5; a[1,2]=6; のように配列のサイズが確定し各要素が初期化される. 2020 年度都市環境学科プログラミング言語 273
配列 (19) ー 2 次元配列の例 2 次元配列 aの行数 =2 2 次元配列 aの列数 =3 配列要素の参照 a.lengthは全要素数 6になる. 実行結果 1 2 3 4 5 6 2020 年度都市環境学科プログラミング言語 274
配列 (20) ー 2 次元配列の例 実行結果 本来不要なカンマだが, データの追加, 削除を容易にするためにつけても良い. ( 東京,Tokyo, とうきょう,) ( 大阪,Osaka, おおさか,) ( 名古屋,Nagoya, なごや,) ( 福岡,Fukuoka, ふくおか,) 2020 年度都市環境学科プログラミング言語 275
配列 (21) ー凸凹な 2 次元配列 凸凹な配列をジャグ配列という 配列の行数のみ指定 配列の各行の列数を指定.0 で初期化 配列要素の参照 実行結果 0 0 0 0 0 2020 年度都市環境学科プログラミング言語 276
配列 (22) ー凸凹な 2 次元配列 int[][] 型の配列変数. 参照先は int[] 型の配列 配列本体. 構成要素型は int 型. 要素数は 3 int[] 型の配列変数. 参照先は int 型の配列 配列本体. 構成要素型は int[] 型. 要素数は 2 int 型の変数 配列本体. 構成要素型は int 型. 要素数は 2 2020 年度都市環境学科プログラミング言語 277
配列 (23) ー凸凹な 2 次元配列 本来不要なカンマだが, データの追加, 削除を容易にするためにつけても良い. 実行結果 10 11 12 13 14 15 16 17 18 19 20 21 2020 年度都市環境学科プログラミング言語 278
配列 (24) ー凸凹な 2 次元配列 配列宣言時にデータで初期化 実行結果 Tokyo, Osaka, Nagoya, Fukuoka, Dog, Cat, Bird, Island, Lake, Peninsula, Mountain, Bitter, Sweet, Sour, 2020 年度都市環境学科プログラミング言語 279
配列 (25) ー凸凹な 2 次元配列 配列宣言とは別にデータで初期化 2020 年度都市環境学科プログラミング言語 280
配列 (26) 2020 年度都市環境学科プログラミング言語 281
foreach 文 (1) 一般的形式 foreach ( データ型変数 in コレクション ) 文 ; 意味 コレクション内のすべての変数に対して文を繰り返し実行する. 2020 年度都市環境学科プログラミング言語 282
foreach 文 (2) for 文を使用 配列の各要素の合計を求める foreach 文を使用 2020 年度都市環境学科プログラミング言語 283
foreach 文 (3) 実行結果 10 20 30 40 50 60 70 80 普通の多次元配列であれば 1 つの foreach 文で全要素にアクセス可能 ジャグ配列であれば行と列のそれぞれに foreach 文を用いる必要がある 2020 年度都市環境学科プログラミング言語 284
文字列と文字の配列 ( 文字配列 ) 行例文字列 >ABCDEFG. s1 = ABCDEFG s2 = 2020 年 6 月 9 日 s3 = 中央大学 3 年 1 組 s4 = 大学 3 年 s5 = 12345 ch2 = 2020 年 6 月 9 日実2020 年度都市環境学科プログラミング言語 285
文字列の長さの取得 ( 文字の個数 ) 実行例 文字列を入力 > 中央大学 3 年 1 組. 文字列の長さは :8 Length プロパティで文字列の長さを取得できる. 全角半角の区別はない. 2020 年度都市環境学科プログラミング言語 286
文字列の英字の大文字化 小文字化 大文字化 : ToUpper() メソッド小文字化 : ToLower() メソッド 実行例 元の文字列 : Good Morning 大文字へ変換 : GOOD MORNING 小文字へ変換 : good morning 2020 年度都市環境学科プログラミング言語 287
文字列の連結 s3 + d; も可 string.concat( 文字列 1, 文字列 2) メソッドで, 2 つの文字列を連結できる. 実行例 ABCD1234 現在時刻 : 2020/06/06 15:26:05 2020 年度都市環境学科プログラミング言語 288
文字列配列の各要素の区切り文字つき連結 string.join( 区切り文字, 文字列配列名 ) メソッドで, 区切り文字を指定して文字列を連結できる. 実行例 abc, DEF, 123, 999 abcdef123999 2020 年度都市環境学科プログラミング言語 289
区切り文字による文字列の分離 区切り文字に, 空白, カンマ, タブを指定 タブ 連続した区切り文字を適切に処理するオプション Split() メソッドにより, 区切り文字を指定して, 文字列を分離して, 配列に記憶させることができる. 実行例 ABCDE 中央大学 123456 xyz ()!#$% 2020 年度都市環境学科プログラミング言語 290
文字列の比較 (1) 2 つの文字列の内容を比較するだけならば, 比較演算子 "==" で可能 (Java では不可 ) 2020 年度都市環境学科プログラミング言語 291
文字列の比較 (2) 文字列 1.CompateTo( 文字列 2) メソッドにより文字列のコードの大小を比較できる ソーティングに利用できる. 2020 年度都市環境学科プログラミング言語 292
文字列中の文字の取得 (1) i はインデックス番号という 文字列中の各文字は, 文字列があたかも文字の配列かのように, 文字列名 [ インデックス番号 ] で取得できる. ただし,S[i]=' 中 ' のような代入は不可. 文字の配列は可 2020 年度都市環境学科プログラミング言語 293
行例文字列中の文字の取得 (2) インデックス番号文字列実0 1 2 3 4 5 6 7 中央大学 3 年 1 組 文字列を入力 > 中央大学 3 年 1 組. s[0]= 中 s[1]= 央 s[2]= 大 s[3]= 学 s[4]=3 s[5]= 年 s[6]=1 s[7]= 組 2020 年度都市環境学科プログラミング言語 294
文字列中の一部の文字列の取得 (1) 3 文字目から 3 文字を抽出 Substring() メソッドにより, 文字列中の一部の文字列を取得できる. 抽出開始文字位置 ( 抽出開始インデックス番号 ) と抽出文字数を与える. 2020 年度都市環境学科プログラミング言語 295
文字列中の一部の文字列の取得 (2) 実行例 1 文字列を入力 >ABCDEFGH 抽出文字列は CDE です. インデックス番号文字列 0 1 2 3 4 5 6 7 A B C D E F G H 実行例 2 文字列を入力 > 中央大学 3 年 1 組抽出文字列は大学 3 です. インデックス番号文字列 0 1 2 3 4 5 6 7 中央大学 3 年 1 組 インデックス番号の始まりは 0 であることに注意! 2020 年度都市環境学科プログラミング言語 296