◎第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]を参照)
【余裕のある人】はここをクリック!