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

プログラミング演習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

(情報コース)

住井(代講:寺内)

(2)

今日のポイント

第1~5回の復習

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

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

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

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

(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. 問題を理解し、

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

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

(契約)

ML

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

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

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

(6)

プログラムの作り方

1. 問題を理解し、

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

2. 入力と出力の例を考える

(7)

プログラムの作り方

1. 問題を理解し、

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

2. 入力と出力の例を考える

3. プログラムを書く

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

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

入力が datatypeで定義された型を持つときは、

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

(8)

プログラムの作り方

1. 問題を理解し、

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

2. 入力と出力の例を考える

3. プログラムを書く

4. 例を用いて、

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

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

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

(9)

課題6 . 1

1. 摂氏の温度を華氏に変換する関数を 定義せよ。また、逆の関数も定義せよ

2. 商品の税抜き価格から、消費税 (5 % ) 込みの価格を求める関数を定義せよ。

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

(10)

課題6 . 2

1. 正の整数

n

を引数として受け取り、

1

から

n

までの整数の「積」を返す 関数を書け。

2. 二つの整数

m

n

を受け取り、

二項係数

mCn

m

個のものから

n

個のものを選ぶ場合の数)を返す 関数を書け。

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

(11)

課題6 . 3 (optional)

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

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

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

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

指定できるようにせよ。

(12)

課題6 . 4 

1. 整数のリスト

x

を受け取り、

そのすべての要素の和を返す 関数

sum

を定義せよ。

考え方:

x

nil

のときは

0

を返す。

x

i::y

の形のときは

i + sum y

を返す。

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

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

(13)

課題6 . 5

1. 整数のリスト

x

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

f

を書け。

考え方:

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

を受け取り、

s1 = f x1 s0

s2 = f x2 s1

s3 = f x3 s2

...

sn = f xn sn-1

という

s

nを返す関数

fold

を書け。

2. 課題6

.

4の二つの関数を、

fold

を用いて定義し直せ。

(16)

課題6 . 8 (optional)

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

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

という関数を定義せよ。

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

参照

関連したドキュメント

 このフェスティバルを成功させようと、まずは小学校5年生から50 代まで 53

第6回赤潮( Skeletonema costatum 、 Mesodinium rubrum 第7回赤潮( Cryptomonadaceae ) 第7回赤潮(Cryptomonadaceae). 第8回赤潮( Thalassiosira

 国によると、日本で1年間に発生し た食品ロスは約 643 万トン(平成 28 年度)と推計されており、この量は 国連世界食糧計画( WFP )による食 糧援助量(約

向井 康夫 : 東北大学大学院 生命科学研究科 助教 牧野 渡 : 東北大学大学院 生命科学研究科 助教 占部 城太郎 :

東北地方太平洋沖地震により被災した福島第一原子力発電所の事故等に関する原子力損害に

卒論の 使用言語 選考要件. 志望者への

国際地域理解入門B 国際学入門 日本経済基礎 Japanese Economy 基礎演習A 基礎演習B 国際移民論 研究演習Ⅰ 研究演習Ⅱ 卒業論文

授業は行っていません。このため、井口担当の 3 年生の研究演習は、2022 年度春学期に 2 コマ行います。また、井口担当の 4 年生の研究演習は、 2023 年秋学期に 2