◎第3回 基本的な構造

下へ一覧へ
○テキスト第2章(2.2-)

○"数値"と"文字"を扱うアルゴリズムについて考える 日常問題は実際には非常に複雑 行く、顔を洗うなどのアルゴリズムは計算機では実行できない。 ○計算機にできることは何か 数値、文字、記号で表されたデータの処理だけ。 ^^^^^^^^^^ データの処理:1つの形からより目的に合った別の形へ変換すること 広い意味での "計算" 文字や記号に固有の番号を割り当てる … コード(符合) → 数値として処理できる ただし数値とは異なる扱いをした方がよい(データ型によって区別) データ型:数値型(整数型、実数型など)… 数値 文字型 … 文字 ○計算機が直接実行できること ・記憶 記憶場所に数値や文字を記憶すること ・転送(代入) ある記憶場所から別の記憶場所に数値を転送(コピー)すること ・演算 記憶した数値どうしで演算を行うこと ・分岐 演算結果により処理の順序(流れ)を変えること テキストp.29 [例題2.1]2つの整数の最大値、最小値をもとめるアルゴリズム M, N, MAX, MIN … 変数名 := … 代入(転送) ただしでCでは=を用いる
下へ上へ ○変数と代入の概念 ・変数:値を変更できるデータ この意味では数学の変数と同じ。しかし、以下の違いがある 数値または文字を記憶する場所のこと 機械語:記憶装置内の位置を表す数値=アドレス(番地)で表す 高級言語またはアルゴリズム:場所につけた「名前」で表す ・添字つき変数(配列) : 一連のデータを扱う ( 数学では下つき添字で表すことが多いが、 ここでは C の配列の表記 x[i] を用いる ) (配列の詳しい説明はあとで行なう) ・代入(転送) =の右辺の値を左辺にある名前の記憶場所に格納すること。 代入すると前の値は消える → 選択的更新 テキストでは := で表す 多くのプログラミング言語では = で表す *注意....「等しい」という意味ではない! i=j 変数 j の値を変数 i に代入する。 i=j+2 変数 j の値に2を加えた値を変数 i に代入する。 i=i+1 変数 i の値に1を加えた値を新たに変数 i に代入する。 i+1=j+2 左辺が変数でないので間違い(多くのプログラミング言語)
下へ上へ ○反復構造の詳細 テキストp.34[例題2.2]: 添字つき変数の総和 ....重要 重要概念:初期化、初期設定、増分処理、後処理 よくある間違い 総和の場合 「初期設定忘れ」 「s=0 をしない」 「一つ違いの誤り」 「i=0 から始める」「i <n の間繰り返す」 繰り返し条件判断 前判定 (後判定) フローチャートによる表現前判定(後判定)
下へ上へ ○アルゴリズムの定義(テキストp.43) 「与えられた基本命令と制御構造とを組み合わせて、ある範囲内の一群の 仕事のどれでも行うことのできる一般的手順を記述したもの」 <基本命令> <制御構造> 転送(代入) 逐次 算術演算 選択 論理演算(論理積・論理和・否定) 反復 大小相等の比較 (分岐) 参考:演算 ( 数学関数 ) ○アルゴリズムの要件 次のような性質を持つことが望ましい: 一般性 特定のデータだけで正しい答がでるようなものはだめ 明確性 いつだれがやっても同じデータに対しては同じ結果がでる 停止性 基本命令の有限回の実行で終る 以下、実際にコンピュータが実行可能なアルゴリズムを学ぶ
下へ上へ ○演習3 3.1 3つの整数 L,M,N の最大値、最小値をもとめるアルゴリズムを 手書きの PAD で書いてみよ。(テキストp.30[演習2.8]) できたら4通りの解答と比べよ。 3.2 3.1 の答えの1つを参考に4つの数 K,L,M,N の最大値と最小値を求める アルゴリズムを考えよ。(p.33参照)( ヒント)
一覧へ上へ ○レポート課題3 3.1 三つの整数 L,M,N の 中央値(median)を求めるアルゴリズムを PAD で表せ。(テキストp.40[演習2.17]) pad2ps を用いて出力せよ。 3.2 n 個(n≧2)の数 x[1]〜x[n]のうちの最大値と最小値を求める アルゴリズムを PAD で表せ。(テキストp.40[演習2.18]) 大ヒント を熟読、理解した後、pad2ps を用いて出力すること。 3.3 の値が与えられたとき、xのn次多項式 の値を求めるアルゴリズムをPAD(pad2ps)で表せ。 最後の処理は"f を表示する" とすること。(テキストp.40[演習2.16]を参照) 【余裕のある人】はここをクリック!
一覧へ