1 / 69

情報の表現

情報の表現. 【 キーワード 】 変数,変数定義,構造体, 構造体のコンストラクタ, 構造体のセレクタ,構造体定義, 単純型,複合型. 1. 変数. 変数名 = 値に付いた名前. X. 変数名. apple. 文字列オブジェクト. N. 変数名. 5. 数値オブジェクト. 変数定義の一般形. (define ( <変数名> <式> ). 変数定義の例. ( define X ( * 3.14 10 10 )). π=3.14 で近似. 3. 3. 式と評価結果. 式. 評価結果. 式. 評価結果. 式. 評価結果. 式と評価結果.

freja
Download Presentation

情報の表現

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 情報の表現 【キーワード】変数,変数定義,構造体,構造体のコンストラクタ,構造体のセレクタ,構造体定義,単純型,複合型 1

  2. 変数 変数名 = 値に付いた名前 X 変数名 apple 文字列オブジェクト N 変数名 5 数値オブジェクト

  3. 変数定義の一般形 (define (<変数名> <式>) 変数定義の例 (define X (*3.14 10 10)) π=3.14で近似 3 3

  4. 式と評価結果 式 評価結果 式 評価結果 式 評価結果

  5. 式と評価結果 式 評価結果 関数も「値」なので, 変数に結びつける ことができる 評価結果 変数に結びつけられるのは,「一般の式」ではなく 値であることに注意! 

  6. Racket での関数名や変数名や構造体名のルール Scheme では関数名や変数名に数字や英記号を含めることができる.

  7. 組み込み済みの構造体

  8. 構造体とは? フィールドxの値が3, フィールドyの値が4 複数のデータ をひとつに まとめたもの 各フィールドには,名前(フィールド名)が付いている.  8

  9. posn 構造体のコンストラクタ フィールドxの値が3, フィールドyの値が4 posn構造体では, 1番目のフィールド名が x 2番目のフィールド名が y に決まっている (make-posn3 4) 全体で1つのデータ 9

  10. posn 構造体のコンストラクタ 構造体名 (構造体に付けられた名前) 3, 4という2つのデータから posn構造体データを組み立てる (make-posn3 4) 10

  11. posn 構造体のセレクタ posn構造体データに対して,フィールド xを参照するセレクタ:posn-x フィールドxの値が3, フィールドyの値が4 (posn-x (make-posn3 4)) -> 3 11

  12. posn 構造体のセレクタ フィールド名 (個々のフィールド に付けられた名前) posn 構造体データから, フィールド xの値を取り出す (posn-x(make-posn3 4)) -> 3 12 12

  13. posn 構造体のセレクタ posn構造体データに対して,フィールド y を参照するセレクタ:posn-y フィールドxの値が3, フィールドyの値が4 (posn-y (make-posn3 4)) -> 4 13

  14. posn 構造体のセレクタ フィールド名 (個々のフィールド に付けられた名前) 構造体データから, フィールド yの値を取り出す (posn-y(make-posn3 4)) -> 4 14 14

  15. 15

  16. 16

  17. 変数 aの定義 変数 aが構造体 「(make-posn1 2)」 を保持 17

  18. セレクタの引数は,変数 a 18

  19. セレクタの引数は,変数 a 19

  20. posn構造体 点 (3,4) を作る 点 (3,4) の x 座標値を選ぶ 点 (3,4) の y 座標値を選ぶ y 点a (3,4) 4 点 (3,4) を作り a という名前にする 点a の x 座標値を選ぶ 点a の y 座標値を選ぶ x 0 3

  21. posn構造体 posn 構造体 x y (make-posn10 20) フィールド名 • posn 構造体は Racket に組み込み済み • posn構造体は,2つのフィールド x, y を持つ複合データ • コンストラクタ ・・・ 構造体データを組み立てる make-posn • セレクタ ・・・ 構造体データから,個々のフィールド値をとりだす (「構造体名-フィールド名」の形) posn-x, posn-y 21

  22. 構造体のコンストラクタ(一般形) () この部分がコンストラクタ make-構造体名 <フィールド値> の並び 1個以上 半角のスペース で区切る 【posn構造体のコンストラクタの使用例】 半角のハイフン (make-posn3 4) 半角の括弧 で囲む このルールを守らないと構文エラー 22 22

  23. () 構造体のセレクタ(一般形) この部分がセレクタ 構造体名-フィールド名 構造体 ※ 構造体を保持している変数や,構造体を評価結果とする式も書ける、ので要注意 セレクタを含む Scheme 式の例 半角のハイフン (posn-x(make-posn3 4)) 半角の括弧 で囲む このルールを守らないと構文エラー 23 23

  24. 新しい構造体の作成(構造体定義)

  25. 新しい構造体の作成 構造体定義 構造体名,フィールド名を定め, Scheme処理系に読み込ませる 構造体定義により,新しい構造体が使えるようになる 25

  26. 構造体定義(一般形) (( )) define-struct <構造体名> <フィールド名>            の並び 1個以上 半角のスペース や改行で区切る 【構造体定義の例】 (define-struct person (name age rank graduated)) ここでは,name, age, rank, graduatedという 4 つのフィールドを持つperson構造体を定義している 26 26

  27. 構造体 person の定義(例) 【構造体定義の例】 (define-struct person (name age rank graduated)) 新しい構造体ができた. →新しいコンストラクタとセレクタが使えるようになる コンストラクタ make-person セレクタ person-name, person-age person-rank, person-graduated 27 27

  28. 構造体 person のコンストラクタ (make-person"Ken A." 20 'Student false) 全体で1つの複合データ 28

  29. 構造体 person のセレクタ person-name: person構造体の nameフィールドを参照するセレクタ (person-name (make-person"Ken A." 20 'Student false)) -> "Ken A." 29

  30. ② ③ リストの始まり リストの終わり 30 30

  31. 構造体のリスト ① ② ③ 3人分のデータ → 3個の構造体 データに順序がある = リスト 31

  32. この例では,4種類のデータが組み合わさっているこの例では,4種類のデータが組み合わさっている ① ② ③ 数 文字列 (文字,数字,記号, 空白文字の列) 論理値 (ブール値) (true または false) 記号(シンボル) (Symbol) (文字,数字, 記号の列) 32 32

  33. 構造体の定義 構造体名 (define-struct (フィールド名の並び)) 構造体定義の例 33

  34. 変数定義の例 変数定義.変数xが 構造体のリストを保持 34 34

  35. 同じ 変数 Xが保持しているデータが表示されている 35 35

  36. Scheme処理系の実演 36

  37. Racket の使用準備 Racket の起動 実演では「Advanced Student」に設定 言語 → 言語の選択 → Advanced Student → 「実行」ボタン 37 37

  38. 実演1.posn 構造体を使ってみる 1. 次の式を「対話ウインドウ」で評価させる (definea (make-posn1 2)) (defineb (make-posn3 4)) a b (posn-xa) (posn-ya) (posn-xb) (posn-yb) posn 構造体 x y (make-posn10 20) ※ posn 構造体は Racket に組み込み済み 38

  39. 39

  40. 実演2.実行時エラーの例 • 次を「対話ウインドウ」で評価させようとすると, • 実行時エラーが発生することを確認する (definec (make-posn1 2 3)) posn 構造体 x y (make-posn10 20) ※ posn 構造体は Racket に組み込み済み 40

  41. 【Racket の実行画面】 コンストラクタ make-posnの引数の個数は 2個である必要がある. 引数の個数が不一致の場合,実行時エラー が発生する 41

  42. 実演3.teachpack の draw.ss を使う Racket は,グラフィックスの teachpack である draw.ss が同梱 1. draw-solid-line: 始点と終点のposn構造体と色を受け取り線を描く。 2. draw-solid-rect: 左上角のposn構造体、幅、高さ、色を受け取り長方形を描く。 3. draw-solid-disk: 中心の posn 構造体、半径と色を受け取り円盤を描く。 4. draw-circle: 中心の posn 構造体、半径と色を受け取り円を描く。 描画に成功したとき, それぞれの関数は,評価結果として true を返す。 各描画演算には対応する clear-演算がある: clear-solid-line、clear-solid-rect、 clear-solid-disk、clear-circle 詳しくは Racket の Help Desk にある draw.ss の説明を参照

  43. teachpack の draw.ss を使う teachpack を読み込む (draw.ss の例) Language → Add Teachpack… を選択 → teachpack の htdp フォルダに ある draw.ss を選択 → Run ボタンを押してteachpackを有効にする Teachpack の draw.ss が読 み込まれたことを示す   (注:下線部は システムごとに異なる)

  44. キャンバスでは,左上角の座標が(0,0) y座標の値は下にいくほど大きくなる 描画演算のためのキャンバス 左上角 が(0,0) x 座標 y 座標 (draw-solid-line (make-posn 1 1) (make-posn 50 50)'red) で描画された直線

  45. 手順  構造体 posn のコンストラクタ を使用 (start 300300)キャンバスを開く (draw-solid-line (make-posn 1 1) (make-posn 50 50)'red) 赤い線の描画 (draw-solid-rect (make-posn 200 10) 50 200 'blue) 青い長方形の描画(幅50で高さ200) (draw-circle (make-posn 200 10) 50 'red) 赤い円の描画(半径50) (draw-solid-disk (make-posn 200 10) 50 'green) 緑の円盤の描画(半径50で中心が長方形の頂点) (draw-solid-string (make-posn 50 50) "Here") 文字列(“Here”)の描画 (stop)キャンバスを閉じる

More Related