~sumii/class/proenb2009/ml6/

Slides:



Advertisements
Similar presentations
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
Advertisements

情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
初年次セミナー 第8回 データの入力.
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
配列(2) 第10回目 [6月22日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)課題
ヒープソートの演習 第13回.
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
ISD実習E 2009年7月13日 LISPシステム入門 (第6回) 関数の定義 eval load 関数.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
多重ループ 繰り返し構造:補足事項 第8回目 [6月8日、H.16(‘04)] 本日のメニュー 1)前回の課題について
多重ループ 繰り返し構造:補足事項 第8回目 [6月12日、H.15(‘03)] 本日のメニュー 1)前回の課題について
プログラミング演習(2組) 第12回
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
第8回 プログラミングⅡ 第8回
2006/10/19 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井英二郎
情報教育論 第9回 仮定文の仕組み 政策・メディア研究科 岡田 健.
データ構造と アルゴリズム 知能情報学部 新田直也.
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
~sumii/class/proenb2010/ml4/
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
4. 組み合わせ回路の構成法 五島 正裕.
~sumii/class/proenb2010/ml1/
プログラミング演習I 2003年5月7日(第4回) 木村巌.
知能情報工学演習I 第12回(後半第6回) 課題の回答
~sumii/class/proenb2009/ml1/
第11回 プログラミングⅡ 第11回
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
関数への道.
第4回 ファイル入出力方法.
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
11.再帰と繰り返しの回数.
演習07-0 “Hello\n” “World!\n”と
C言語 はじめに 2016年 吉田研究室.
計算機プログラミングI 第6回 2002年11月14日(木) アルゴリズムと計算量 第1回課題の説明 平方根を計算するアルゴリズム 計算量
2007/6/12(通信コース)2007/6/13(情報コース) 住井
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラミング演習I 2003年7月2日(第11回) 木村巌.
プログラミングⅡ 第2回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
PROGRAMMING IN HASKELL
~sumii/class/proenb2010/ml2/
~sumii/class/proenb2009/ml4/
2006/7/18(通信コース)2006/7/26(情報コース) 住井
確率論・数値解析及び演習 (第7章) 補足資料
2006/6/27(通信コース)2006/7/5(情報コース) 住井
精密工学科プログラミング基礎 第7回資料 (11/27実施)
2008/7/16(情報コース)2008/7/22(通信コース) 住井
PROGRAMMING IN HASKELL
関数型言語の基礎 型なしl計算 型理論 構成的プログラミング GUIにあらわれる関数概念 PBD VL
~sumii/class/proenb2010/ml5/
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
Cプログラミング演習 ニュートン法による方程式の求解.
演習00-0 “Hello\n” “World!\n”と
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
2007/6/26(通信コース)2007/6/27(情報コース) 住井
Presentation transcript:

http://www.kb.ecei.tohoku.ac.jp/ ~sumii/class/proenb2009/ml6/ プログラミング演習B ML編 第6回 2009/6/2(コミ) 2009/6/3(情報・知能) 住井 http://www.kb.ecei.tohoku.ac.jp/ ~sumii/class/proenb2009/ml6/

どの機能を使えばよいか、 自分で考えるトレーニング 今日のポイント 第1~5回の復習 + どの機能を使えばよいか、 自分で考えるトレーニング もしわからなくても、今までのスライドを見直せば必ずできるはず! どうしてもわからなければ質問する

レポートについて 電気・情報系内のマシンから http://130.34.188.208/ (情報・知能) にアクセスし、画面にしたがって提出せよ。締め切りは二週間後厳守。 初回は画面にしたがい自分のアカウントを作成すること。 「プログラム」のテキストボックスがある課題では、 プログラムとしてsmlに入力した文字列のみを 過不足なく正確にコピー&ペーストして提出せよ。 (smlの出力は「プログラム」ではなく考察に含めて書くこと。) プログラムの課題でも必ず考察を書くこと。 提出したレポートやプログラムの実行結果は「提出状況」から 確認できる。 質問はml-enshu@kb.ecei.tohoku.ac.jpにメールせよ。 レポートの不正は試験の不正と同様に処置する。

前回までのまとめ 「Standard ML簡単文法」 を参照 http://www.kb.ecei.tohoku.ac.jp/ ~sumii/class/proenb2009/syntax.txt を参照

プログラムの作り方 問題を理解し、 プログラムの仕様を策定する 何を入力されたら、何を出力するべきか (契約) MLなど関数型言語では、「プログラム=関数」「入力=引数」「出力=返値」と考えることが 多い 関数や引数には適切な名前をつける

プログラムの作り方 問題を理解し、 プログラムの仕様を策定する 入力と出力の例を考える

プログラムの作り方 問題を理解し、 プログラムの仕様を策定する 入力と出力の例を考える プログラムを書く MLでは(型と)関数を定義する 繰り返し(ループ)は、自然数についての 数学的帰納法で考え、再帰関数を定義する 入力がdatatypeで定義された型を持つときは、 その定義にしたがって場合わけ(や再帰)を 行うことが多い

プログラムの作り方 問題を理解し、 プログラムの仕様を策定する 入力と出力の例を考える プログラムを書く 例を用いて、 書いたプログラムをテストする 間違っていたら直す(デバッグ) もしできれば数学的証明がベストだが…

課題6. 1 摂氏の温度を華氏に変換する関数ctofを定義せよ。また、逆の関数ftocも定義せよ。 商品の税抜き価格から、消費税(5%) 込みの価格を求める関数taxを定義せよ。 価格はいずれも整数とし、小数点以下の端数は切り捨てること。

課題6. 2 正の整数nを引数として受け取り、 1からnまでの整数の「積」を返す 関数factを書け。 二つの整数mとnを受け取り、 二項係数mCn(m個のものから n個のものを選ぶ場合の数)を返す 関数chooseを書け。 余裕があれば、無駄な計算をできるだけ しないように工夫せよ。

課題6. 3 (optional) 自然対数の底eの近似値を、 テイラー展開により求める 関数expを定義せよ。 余裕があれば、どれぐらい 近似するか、許容する誤差を 指定できるようにせよ。

課題6. 4 整数のリストxを受け取り、 そのすべての要素の和を返す 関数sumを定義せよ。 課題6. 4  整数のリストxを受け取り、 そのすべての要素の和を返す 関数sumを定義せよ。 考え方:xがnilのときは0を返す。 xがi::yの形のときはi + sum yを返す。 整数のリストを受け取り、 そのすべての要素の積を返す 関数prodを定義せよ。

課題6. 5 整数のリストxを受け取り、その中から偶数だけ抜き出したリストを返す関数fを書け。 考え方:xがnilのときはnilを返す。 xがi::yの形のときは、iが偶数ならばi :: f yを、そうでなければf yを返す。 第4回の「苗字と名前と年齢のレコード」のリストを受け取り、その中から年齢が20以上のレコードを抜き出したリストを返す、という関数gを書け。

課題6. 6 (optional) リストxと関数fを受け取り、 xの要素xiの中でf xiがtrueとなるものを抜き出したリストを返す、という関数filterを書け。また、その型を考察せよ。 課題6. 5の二つの関数を、 filterを用いて定義し直せ。

課題6. 7 (optional) リスト[x1,x2,x3,...,xn]と 初期値s0と関数fを受け取り、 s1 = f x1 s0 s2 = f x2 s1 s3 = f x3 s2 ... sn = f xn sn-1 というsnを返す関数foldを書け。 課題6. 4の二つの関数を、 foldを用いて定義し直せ。

課題6. 8 (optional) 整数のリストを受け取り、 昇順にソートしたリストを返す、 という関数を定義せよ。 できるだけ比較の回数が 少なくなるように書くこと