◎第3回 基本的な構造
◇下へ・一覧へ
○テキスト第2章(2.2-)
○コンピュータが直接に実行できることは何か
数値、文字、記号で表されたデータの処理だけ。
^^^^^^^^^^^
日常問題は実際には非常に複雑
行く、顔を洗うなどはできない。
データの処理:
1つの形からより目的に合った別の形へ変換すること。
広い意味での "計算"
◇下へ・上へ
○変数と代入の概念
・変数
値を変更できるデータ。この意味では数学の変数と同じ。
しかし、以下の違いがある
数値または文字を記憶する場所
機械語では場所はアドレス(番地)で表す
アドレス(番地)=記憶装置内の位置を表す数値
高級言語またはアルゴリズムでは変数につけた「名前」で表す
ある値(一定の値、変数の値、計算結果)を変数に記憶させる。
・添字つき変数(配列)
: 一連のデータを扱う
( 数学では下つき添字で表すことが多いが、
ここでは C の配列の表記 x[i] を用いる )
(配列の詳しい説明はあとで行なう)
・代入(転送)
=の右辺の値を左辺にある名前の記憶場所に格納すること。
代入すると前の値は消える。そろばんのよう。
テキストでは := で表す。
多くのプログラミング言語では = で表す。
!等しいという意味ではない!
i=j 変数 j の値を変数 i に代入する。
i=j+2 変数 j の値に2を加えた値を変数 i に代入する。
i=i+1 変数 i の値に1を加えた値を新たに変数 i に代入する。
i+1=j+2 左辺が変数でないので間違い(多くのプログラミング言語)
◇下へ・上へ
○反復構造の詳細
例:(添字つき変数の総和)重要
重要概念:初期化、初期設定、増分処理、後処理
よくある間違い
総和の場合
「初期設定忘れ」 「s=0 をしない」
「一つ違いの誤り」 「i=0 から始める」「i <n の間繰り返す」
繰り返し条件判断 前判定 (後判定)
フローチャートによる表現前判定(後判定)
◇下へ・上へ
○アルゴリズムの定義
与えられた基本命令
転送(代入)
算術演算
論理演算(論理積論理和
否定)
大小相等の比較
参考:演算 ( 数学関数 )
と与えられた制御構造
逐次
選択
反復
(分岐) で構成されている
アルゴリズムの要件
一般性 特定のデータだけで正しい答がでるようなものはだめ
明確性 いつだれがやっても同じデータに対しては同じ結果がでる。
停止性 基本命令の有限回の実行で終る
以下、実際にコンピュータが実行可能なアルゴリズムを学ぶ。
◇下へ・上へ
○演習3
3.1 2つの整数の最大値、最小値をもとめるアルゴリズム
これとテキスト p29 で読んで”変数”、”代入”の意味を確認せよ。
3.2 3つの整数 L,M,N の最大値、最小値をもとめるアルゴリズムを
手書きの PAD で書いてみよ。できたら4通りの解答と比べよ。
3.3 3.2 の答えの1つを参考に4つの数 K,L,M,N の最大値と最小値を求める
アルゴリズムを考えよ。( ヒント)
◇一覧へ・上へ
○レポート課題3 <(解答)>
3.1 三つの数 L,M,N の 中央値(median)を求めるアルゴリズムを PAD で
表せ。(テキスト演習2.17)( 大ヒント )
適当な名前の pad ファイルをつくり、pad2ps を用いて出力せよ。
3.2 演習 3.2, 3.3 を参考に n 個の数 x[1]〜x[n]の最大値と最小値を
求めるアルゴリズムを PAD で表せ。
大ヒント を熟読、理解した後、
各自 pad ファイルを作成し、pad2ps を用いて出力すること。
3.3 n (n は負でない整数)の 階乗 f を求め、それを表示するアルゴ
リズムを PAD で表せ。最後の処理は”f を表示する" とすること。
ヒント、n の場合分け必要、反復構造も使う。この PAD は手書きでよい。