• 検索結果がありません。

プログラミング演習B ML編 第6回

N/A
N/A
Protected

Academic year: 2021

シェア "プログラミング演習B ML編 第6回"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラミング演習B ML編 第6回

2007/7/10

(通信コース)

2007/7/11

(情報コース)

住井(代講:寺内)

http://www.kb.ecei.tohoku.ac.jp/

~sumii/class/proenb2007/ml6/

(2)

今日のポイント

第1~5回の復習

どの機能を使えばよいか、

自分で考えるトレーニング

z

もしわからなくても、今までのスライド を見直せば必ずできるはず!

どうしてもわからなければ質問する

(3)

レポートについて

課題の解答を

ml-enshu@kb.ecei.tohoku.ac.jp

にメールせよ。件名

(Subject)

は必ず

kadai6:A1TB2345:

東北太郎

の形にすること(氏名以外半角)。

締め切りは二週間後の午前8時50分厳守。

質問は上述のアドレスにメールせよ。

レポートの不正は試験の不正と同様に処置する。

第何回の課題か(一桁の数字) 自分の学籍番号 自分の氏名

(4)

前回までのまとめ

「 Standard ML 簡単文法」

http://www.kb.ecei.tohoku.ac.jp/

~sumii/class/proenb2007/syntax.txt

を参照

(5)

プログラムの作り方

1.

問題を理解し、

プログラムの仕様を策定する

何を入力されたら、何を出力するべきか

(契約)

z

ML

など関数型言語では、「プログラム=関数」

「入力=引数」「出力=返値」と考えることが 多い

z 関数や引数には適切な名前をつける

(6)

プログラムの作り方

1.

問題を理解し、

プログラムの仕様を策定する

2.

入力と出力の例を考える

(7)

プログラムの作り方

1.

問題を理解し、

プログラムの仕様を策定する

2.

入力と出力の例を考える

3.

プログラムを書く

– ML

では(型と)関数を定義する

z 繰り返し(ループ)は、自然数についての 数学的帰納法で考え、再帰関数を定義する

z 入力が

datatype

で定義された型を持つときは、

その定義にしたがって場合わけ(や再帰)を 行うことが多い

(8)

プログラムの作り方

1.

問題を理解し、

プログラムの仕様を策定する

2.

入力と出力の例を考える

3.

プログラムを書く

4.

例を用いて、

書いたプログラムをテストする

間違っていたら直す(デバッグ)

z もしできれば数学的証明がベストだが

(9)

課題6 . 1

1.

摂氏の温度を華氏に変換する関数を

定義せよ。また、逆の関数も定義せよ。

2.

商品の税抜き価格から、消費税

(5

)

込みの価格を求める関数を定義せよ。

z

価格はいずれも整数とし、小数点以下の 端数は切り捨てること。

(10)

課題6 . 2

1.

正の整数nを引数として受け取り、

1からnまでの整数の「積」を返す

関数を書け。

2.

二つの整数mとnを受け取り、

二項係数m

C n(m個のものから

n個のものを選ぶ場合の数)を返す

関数を書け。

z

余裕があれば、無駄な計算をできるだけ しないように工夫せよ。

(11)

課題6 . 3 (optional)

z 自然対数の底 e の近似値を、

テイラー展開により求める 関数を定義せよ。

– 余裕があれば、どれぐらい

近似するか、許容する誤差を

指定できるようにせよ。

(12)

課題6 . 4

1.

整数のリストxを受け取り、

そのすべての要素の和を返す 関数sumを定義せよ。

z

考え方:xがnilのときは0を返す。

xがi::yの形のときはi + sum yを返す。

2.

整数のリストを受け取り、

そのすべての要素の積を返す 関数を定義せよ。

(13)

課題6 . 5

1.

整数のリストxを受け取り、その中から 偶数だけ抜き出したリストを返す関数f を書け。

z

考え方:xがnilのときはnilを返す。

xがi::yの形のときは、iが偶数ならば

i :: f yを、そうでなければf yを返す。

2.

第4回の「苗字と名前と年齢のレコー ド」を要素とするリストを受け取り、そ の中から年齢が

20

以上のレコードを抜き 出したリストを返す、という関数を書け。

(14)

課題6 . 6 (optional)

1. リストxと関数fを受け取り、

xの要素x i の中でf x i がtrueと なるものを抜き出したリストを

返す、という関数filterを書け。

また、その型を考察せよ。

2. 課題6 . 5の二つの関数を、

filterを用いて定義し直せ。

(15)

課題6 . 7 (optional)

1.

リスト[x

1 ,x 2 ,x 3 ,...,x n ]と

初期値s

0

と関数fを受け取り、

s

1

= f x

1

s

0

s

2

= f x

2

s

1

s

3

= f x

3

s

2

...

s

n

= f x

n

s

n-1

というs

n

を返す関数foldを書け。

2.

課題6

.

4の二つの関数を、

foldを用いて定義し直せ。

(16)

課題6 . 8 (optional)

z

整数のリストを受け取り、

昇順にソートしたリストを返す、

という関数を定義せよ。

できるだけ比較の回数が 少なくなるように書くこと

参照

関連したドキュメント

第20回 4月 知っておきたい働くときの基礎知識① 11名 第21回 5月 知っておきたい働くときの基礎知識② 11名 第22回 6月

小学校学習指導要領より 第4学年 B 生命・地球 (4)月と星

(以下「令和3年旧措置法」といいます。)第42条の12

2016 年度から 2020 年度までの5年間とする。また、2050 年を見据えた 2030 年の ビジョンを示すものである。... 第1章

ことの確認を実施するため,2019 年度,2020

 今年は、目標を昨年の参加率を上回る 45%以上と設定し実施 いたしました。2 年続けての勝利ということにはなりませんでし

その上で、第一地区、第二地区、第三地区とあるなか、今回の第一地区がその3つの地

かかる人々こそ妊娠を中絶して健康を回復すべきである。第2に,この条項