Javaプログラミング ・言葉の学習としてのプログラミング学習 (構造化プログラミングとは?) ・流れ図とアルゴリズムの考え方 ・検索のプログラムを作ってみよう 言語の学習としてのプログラミング 単語を覚えよう – println, int, double, if, for ・・・ 文法を覚えよう – System.out.println(‘Hello, world’); ではだめなの? 基本文型を覚えよう – 英語には「基本5文型」があります。 – プログラミング言語に基本文型はあるのでしょうか? 用例を積極的に利用しよう – 単語や文法を覚えても英作文は出来ない。。 – 誰かが書いた英文を利用しよう! – プログラミングも同じです! 言語の学習としてのプログラミング 基本文型を覚えよう – 英語には「基本5文型」があります。 S+V S+V+C S+V+O S+V+O+O S+V+O+C – プログラミング言語に基本文型はあるのでしょ うか? あります! 言語の学習としてのプログラミング 基本文型を覚えよう – 「制御構造」とも呼ばれます。文(処理)の並べ方 の決まりです。次の3つです。 順次構造 – 順番に処理を実行していく構造。 選択構造 – もしAならば処理Bを実行し,そうでない場合処理Cを実行す る。 繰り返し構造 – Aが成り立っている間,処理Bを繰り返し実行する。 – 全てのプログラムは,この3つの構造で書かれ ています=「構造化プログラミング」 「構造」の表し方 ~流れ図~ 選択構造(if文) 条件 真 処理1 処理1 条件 if( 偽 処理2 条件 処理1 } else{ 処理2 処理2 } ){ 他の流れ図の描き方 選択構造 フローチャート以外にも様々な描き方があります。 真 処理1 偽 真 条件 条件 条件 処理1 フローチャート 処理2 偽 処理2 PAD 真 偽 処理1 処理2 TSチャート 「構造」の表し方 ~流れ図~ 繰り返し構造(for文) iは繰り返し回数をカウントする変数 iの値を1に設定 i の値は回数以下 ? No for(i=1;i<=回数;i++ ){ Yes 実行したい処理 実行したい処理 i の値を1増やす } 他の流れ図の描き方 繰り返し構造 初期値設定 条件 Yes 実行する処理 No 繰り返し 条件 条件 処理 繰り返し条件の変更 フローチャート 処理 PAD TSチャート もう一つの繰り返し構造 繰り返す回数が最初に分かっていない場合が あります。 この場合,for文ではプログラムが書けません。 このような時は,while文を使います。 while1a.javaを見てみましょう – – – – while文はどのように書くのか? そのフローチャートは? for文との関係は? while文でなければ書けないプログラムとは? 例:0が入力されるまで入力を繰り返し,入力された数値の 合計と平均を出力するプログラム while文を使ったプログラム 決まり文句を覚えておきましょう。 最初の条件要素の設定 while( 繰り返し条件 ){ 実行したい処理; 繰り返しの条件要素の再設定 } アルゴリズムの考え方 では,どうやって「与えられた問題をこれら3つ の構造で表現する」のでしょうか? 次のように考えましょう – 与えられた課題の解析 例:「大きい順に並んでいるとはどういう状態か?」 – その状態を繰り返しと分岐でどのように表現する か? – 矛盾が生じている時(例:大きい順になっていない 時)にはどのようにするか? ソートアルゴリズム 次の配列の内容が昇順になるようにソート するプログラムを作成しなさい。 a[0], a[1], a[2], a[3], ………, a[n-1] 課題の解析 昇順にソートされているとはどういうことか a[0]≦a[1]≦a[2]≦a[3]≦………≦a[n-1] 繰り返しと分岐を使って,この性質をどのよ うに定義するか?(アルゴリズムの決定) 単純な並べ替え 性質の定義 a[i], 0≦i≦n-1, において 0≦i≦n-1 : a[0]が最小 1≦i≦n-1 : a[1]が最小 2≦i≦n-1 : a[2]が最小 … n-2≦i≦n-1 : a[n-2]が最小 単純ソート 性質をフローチャートで記述 0≦i≦n-2 i~n-1において a[i]がmin Y N i~n-1において minの要素a[k]を 検出 a[i]とa[k]を 交換する 基本バブルソート 性質の定義 a[i], 0≦i≦n-1, において,常に 次の関係が成り立つ。 a[i]≦a[i+1], 0≦i≦n-2 基本バブルソート 性質をフローチャートで記述 0≦k≦n-2 0≦i≦n-2 a[i]≦a[i+1] Y a[i]とa[i+1] の交換 逐次検索法 検索キーとデータとを,順番に最初から比較して いく方法です。 search1.javaを作成しましょう。 検索キーの入力 0≦i≦n-1 i番目のデータが 検索キーと一致し たならば Y i番目のデータ を出力 二分検索法 逐次検索法に比べ,比較の回数を大幅 に減少させることが出来る,高速な検索 アルゴリズムです。 まず最初にデータをソートしておきます。 中央要素と検索キーを比較します。 一致しない場合でも,その大小関係で, 次の検索範囲が右半分か左半分かが決 まります。急速に検索範囲が狭まります。 二分検索法の原理 search2.java No. データ 0 13 1 1 2 6 3 3 4 4 5 10 6 8 7 9 8 12 9 16 検索キーとして‘5’が入力されたとします。 No. データ 0 1 1 3 2 4 3 6 4 8 5 9 6 10 7 12 8 13 9 16 検索範囲を左側のみとし 検索範囲を右側とし ‘5’よりも大きいので,‘5’は左側に ‘5’よりも小さいので,‘5’は右側に あることになります。 中央値と‘5’と比較します 同じ処理を繰り返します。 処理を繰り返します。 あることになります。 中央値と‘5’と比較します
© Copyright 2025 ExpyDoc