~sumii/class/proenb2010/ml1/

Slides:



Advertisements
Similar presentations
プログラミング演習B ML編 第1回 2006/6/20 (通信コース) 2006/6/28 (情報コース) 住井 ~sumii/class/proenb2006/ml1/
Advertisements

2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
(Rubyistのための) 超音速:ML入門
京都大学情報学研究科 通信情報システム専攻 湯淺研究室 M2 平石 拓
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ML 演習 第 1 回 佐藤 春旗, 山下 諒蔵, 前田 俊行 May 30, 2006.
プログラミング言語としてのR 情報知能学科 白井 英俊.
ソフトウェア基礎科学 授業資料: 論理関係(logical relations)のお話
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
6/26 前回復習 for文、while文による繰り返し計算
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
オブジェクト指向言語論 知能情報学部 新田直也.
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
条件式 (Conditional Expressions)
~sumii/class/proenb2010/ml4/
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
プログラミング言語論 第12回 関数型プログラミング 情報工学科 篠埜 功.
プログラミング 平成24年10月30日 森田 彦.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
2007/6/5(通信コース)2007/6/6(情報コース) 住井
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
プログラミング 平成25年11月5日 森田 彦.
プログラミング言語入門 手続き型言語としてのJava
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
京都大学情報学研究科 通信情報システム専攻 湯淺研究室 D1 平石 拓 2005/10/18
プログラミング言語入門.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
コンピュータに計算させる命令を確かめよう!
~sumii/class/proenb2009/ml1/
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
プログラミングⅠ 平成30年10月22日 森田 彦.
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
C言語 はじめに 2016年 吉田研究室.
2007/6/12(通信コース)2007/6/13(情報コース) 住井
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
プログラミング演習I 2003年4月30日(第3回) 木村巌.
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
ガイダンス 電子計算機 電気工学科 山本昌志 1E
~sumii/class/proenb2010/ml2/
~sumii/class/proenb2009/ml4/
2006/7/18(通信コース)2006/7/26(情報コース) 住井
2006/6/27(通信コース)2006/7/5(情報コース) 住井
2008/7/16(情報コース)2008/7/22(通信コース) 住井
~sumii/class/proenb2009/ml6/
第6回放送授業.
~sumii/class/proenb2010/ml5/
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング 平成28年10月25日 森田 彦.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
printf・scanf・変数・四則演算
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
第1章 文字の表示と計算 printfと演算子をやります.
2007/6/26(通信コース)2007/6/27(情報コース) 住井
Presentation transcript:

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

今日のポイント MLって何? 式を「評価」すると値になる 式や値には「型」がある

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

「簡単・安全・高速」な プログラミング言語の名前 (「関数型言語」の一種) ポイント1 Q: MLって何? A: 「簡単・安全・高速」な プログラミング言語の名前 (「関数型言語」の一種) ここでは"Mailing List"や"Markup Language"ではない MatLab(科学技術計算ソフトウェア)のことでもありません

Objective Caml (OCaml) 関数型 Haskell Standard ML (SML) Scheme Objective Caml (OCaml) Common Lisp オブジェクト指向 Smalltalk C++ Java 命令型 (手続き型) C 論理型 Pascal Fortran Prolog

課題1. 1 Wikipedia (http://ja.wikipedia.org/)で「プログラミング言語一覧」の項目を調べる等して、何か一つの言語(C, Java, SML, OCaml以外)について、どのような言語か数行程度で述べよ。 (特に日本語の)インターネット上の情報は不正確なことも多いので、一つの記述だけを鵜呑みにしたり、丸写ししたりしないこと(丸写しは検索すればすぐにバレる)。

課題1. 2 "The Computer Language Benchmarks Game" (http://shootout.alioth. debian.org/)は、様々なプログラミング言語において、比較的単純なプログラムの速度や行数を比較したサイトである。C, Java, SML, OCamlなどのスコアを調べ、数行程度で論じよ。

課題1. 3 電気系教育用計算機システムなどで 次の操作をし、結果を述べよ。 ktermなどにおいてコマンドocamlを起動 ocamlに#load "graphics.cma" ;; と入力してEnterキー(#も入力すること) さらにGraphics.open_graph "" ;; Graphics.draw_circle 100 100 50 ;; exit 0 ;; (わからなくなったらControlキーを押しながら cやdを連打すれば終了するのでやりなおす)

課題1. 4 (1/3) 近くの人とペアを組んで 次の操作をし、結果を述べよ。 課題1. 4 (1/3) 近くの人とペアを組んで 次の操作をし、結果を述べよ。 1人目はifconfig -aを実行し、 マシンのIPアドレスを確認する (130.34.195.11~18のはず) さらに、1人目は10000以上30000以下の適当な整数(ポート番号)を、 他の人と重ならないように決める

課題1. 4 (2/3) 1人目はocamlを起動し、 以下のプログラムを実行して待機する #load "unix.cma" ;; 課題1. 4 (2/3) 1人目はocamlを起動し、 以下のプログラムを実行して待機する #load "unix.cma" ;; open Unix ;; establish_server (fun ic oc -> print_endline (input_line ic)) (ADDR_INET (inet_addr_any, ポート番号)) ;;

課題1. 4 (3/3) 2人目はocamlを起動し、 以下のプログラムを実行する #load "unix.cma" ;; 課題1. 4 (3/3) 2人目はocamlを起動し、 以下のプログラムを実行する #load "unix.cma" ;; open Unix ;; let (ic, oc) = open_connection (ADDR_INET (inet_addr_of_string "IPアドレス", ポート番号)) ;; output_string oc "Hello, world!\n" ;; close_out oc ;;

ここからは、OCamlではなく SMLをやります (6セメの授業「コンパイラ」でSMLを使用するので) ポイント1 おわり ここからは、OCamlではなく SMLをやります (6セメの授業「コンパイラ」でSMLを使用するので) OCamlについて、もっと知りたい人は… 「プログラミング in OCaml」(ISBN 978-4-7741-3264-8) 「プログラミングの基礎」(ISBN 978-4-7819-1160-1) 「入門OCaml」(ISBN 978-4-8399-2311-2) http://www.google.co.jp/search?q=ocaml

参考書 http://www.pllab.riec.tohoku.ac. jp/~ohori/texts/mltext.html 「プログラミング言語 Standard ML入門」 大堀淳 共立出版 ISBN 978-4-320-12024-2 http://www.pllab.riec.tohoku.ac. jp/~ohori/texts/mltext.html

その他の本 「プログラミング言語ML」 (ISBN 978-4-7561-1641-3) "ML for the Working Programmer" (ISBN 978-0-5215-6543-1) "The Definition of Standard ML - Revised" (ISBN 978-0-262-63181-5)

SMLの起動と終了 起動: ktermなどでsmlコマンドを実行 終了:C-d (Controlキーを押しながらd) またはemacsで Esc x run-sml Enter Enter 終了:C-d (Controlキーを押しながらd) 入力や計算の中断:C-c

ポイント2 式を「評価」すると値になる 式の後に;を入力してEnterを押すと 式の値が計算される > sml Standard ML of New Jersey, Version 110.0.7, September 28, 2000 [CM; autoload enabled] - 1+2; val it = 3 : int - このように式の値を計算することを 「評価」(evaluation)という

いろいろな式と値 (1/2) 整数: 0, 123, ~456など 浮動小数点数: 0.0, 1.23, ~4.56など いろいろな式と値 (1/2) 整数: 0, 123, ~456など 浮動小数点数: 0.0, 1.23, ~4.56など 注: SMLでは負の数は-ではなく~で書く 算術演算: 式1 + 式2, 式1 - 式2, 式1 * 式2 商と余り: 式1 div 式2, 式1 mod 式2 浮動小数点数の割り算: 式1 / 式2 切り下げ, 切り上げ, 切り捨て, 偶数丸め: floor 式, ceil 式, trunc 式, round 式 整数から浮動小数点数への変換: real 式

いろいろな式と値 (2/2) 論理値: true, false いろいろな式と値 (2/2) 論理値: true, false 論理演算: not 式, 式1 andalso 式2, 式1 orelse 式2 比較: 式1 = 式2, 式1 <> 式2, 式1 >= 式2など 文字列: "abcde", "Hello, world!\n"など 文字列の連結: 式1 ^ 式2 カッコつき式: ( 式 ) スペースのところには、空白やタブや改行やコメントを好きなだけ入れてよい コメントは(*と*)で囲む

課題1. 5 次の式を評価してみて、結果を考察せよ。 123 + 456 1 + 2 * 3 (1 + 2) * 3 7 - -8 7 - ~8 10 div 3 ~10 div 3 ~10 mod 3 10.0 / 3.0

ポイント3 式や値には「型」がある 型 = 式や値の種類 型 = 式や値の種類 整数型int, 浮動小数点数型real, 論理値型bool, 文字列型string, etc.

静的型検査と型エラー MLは評価(実行)の前に型をチェックする 型が合わなければ評価せずエラーとする - 1.2 / 3.0 ; val it = 0.4 : real - 1.2 / 3 ; stdIn:18.1-18.8 Error: operator and operand don't agree [literal] operator domain: real * real operand: real * int in expression: 1.2 / 3 - 1.2 / real 3 ;

課題1. 6 今までの例と課題以外の、様々な式の評価を試みよ(エラーになる例も試せ)。できるだけ自明でない例を少なくとも3つ考察せよ。