情報技術 ~アルゴリズム演習~ 2015年6月25日 笠井俊信 新しいデータ型 • 今までのデータ型 – 変数を1つを宣言 • 今日の新しいデータ型 「配列」 – A[N] ・・・Aという配列名で複数の変数を格納 N・・・添字:何番目のデータかを指定 – 配列の参照の仕方() • 0番目のデータ → A[0] • N番目のデータ → A[N] 1 演習問題3 問題: 整数データを10個入力していき,合計と平均 (整数値)を求めて表示する手順を示せ. • 合計(SUM)に0を代入する • 繰り返し制御の変数(I)に0を代入 • (繰り返し)Iの値が10未満である限り繰り返す – 数値(DAT)を入力する – SUMにDAT+SUMを代入 – IにI+1を代入 • 合計値(SUM)を出力 • 平均値(SUM/10)を出力 10個のデータを配列に 格納するアルゴリズムにすると 演習問題3 問題: 整数データを10個入力していき,合計と平均 (整数値)を求めて表示する手順を示せ. • 合計(SUM)に0を代入する • 繰り返し制御の変数(I)に0を代入 • (繰り返し)Iの値が10未満である限り繰り返す – 数値(DAT[I])を入力する – SUMにDAT[I]+SUMを代入 – IにI+1を代入 • 合計値(SUM)を出力 • 平均値(SUM/10)を出力 2 1000以下の素数をすべて求める • もっとも単純な方法 – 2から1000までの整数 i を対象とする – 2から i-1 までの数で割り切れるか? • 割り切れる数が見つかれば素数ではない データ構造(方法の1つ) 配列 num[0] ~ num[1000] 3 もっとも単純な方法のアルゴリズム • 1~Nまでの変数列(num[i])を用意 • i(調べる対象)が0~Nまで繰り返す – num[i] = 1 配列の用意と初期化 • num[0] = 0, num[1] = 0 • i(調べる対象)が3~Nまで繰り返す – j(約数を探す)を2~i-1まで繰り返す • (条件分岐) i ÷ j の余りが0? – Yesなら,num[i] = 0 • j を1増やす 約数が見つかったので j の繰り返しから抜ける – i を1増やす • i(調べる対象)が1~Nまで繰り返す – (条件分岐)num[i] = 1? • Yesなら,iを出力(素数) 結果の出力 1000以下の素数をすべて求める • もっとも単純な方法 – 2から1000までの整数 i を対象とする – 2から i-1 までの数で割り切れるか? • 割り切れる数が見つかれば素数ではない • 少し工夫した方法 – 2から1000までの整数 i を対象とする • 奇数のみ対象とする – 2から i の平方根までの数で割り切れるか? • 割り切れる数が見つかれば素数ではない 4 もっとも単純な方法のアルゴリズム • i(調べる対象)が3~Nまで繰り返す – j(約数を探す)を2~i-1まで繰り返す • (条件分岐) i ÷ j の余りが0? – Yesなら,num[i] = 0 約数が見つかったので j の繰り返しから抜ける • j を1増やす – i を1増やす 少し工夫した方法のアルゴリズム • i(調べる対象)が3~Nまで繰り返す – j(約数を探す)を2~ iの平方根 まで繰り返す • (条件分岐)i ÷2の余りが0? – Yesなら,偶数なので何もしない – Noなら,(条件分岐)i ÷ j の余りが0? » Yesなら,num[i] = 0 約数が見つかったので j の繰り返しから抜ける • j を1増やす – i を1増やす 5
© Copyright 2024 ExpyDoc