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

Slides:



Advertisements
Similar presentations
第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
Advertisements

情報基礎実習 I (第3回) 木曜4・5限 担当:北川 晃. プログラミング演習 2 つの数を入力し,「計算」ボタンをクリック すると,それぞれの計算結果を次のように 表示するプログラムを作れ.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
表計算ソフトウェア 関数の利用(基本編) Excel. 関数とは 関数とは ・ 計算方法があらかじめ定義され た 数式のこと ・ 必要な値を定められた書式に 従っ て入力するだけで、簡単に計算結 果を求めることができる.
プログラミング演習( 2 組) 第 9 回
情報システムプロジェクト I 第2回 FileScanner.java ~ファイル入力、文字切り出し機能を持つ プログラムの作成~
オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
アルゴリズムとデータ構造 第2回 線形リスト(復習).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
2006/10/26 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
(Rubyistのための) 超音速:ML入門
京都大学情報学研究科 通信情報システム専攻 湯淺研究室 M2 平石 拓
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ML 演習 第 1 回 佐藤 春旗, 山下 諒蔵, 前田 俊行 May 30, 2006.
2006/11/30 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
オブジェクト指向言語論 知能情報学部 新田直也.
エクセル(2)の目次 セル範囲の指定方法 データの消去法 アクティブセルの移動 セル内容の複写と移動 セル幅の変更方法
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
~sumii/class/proenb2010/ml4/
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
プログラミング言語論 第12回 関数型プログラミング 情報工学科 篠埜 功.
プログラミング 平成24年10月30日 森田 彦.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
2007/6/5(通信コース)2007/6/6(情報コース) 住井
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
~sumii/class/proenb2010/ml1/
整数データと浮動小数データ 整数データと浮動小数データの違い.
プログラミング 平成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.
情報処理Ⅱ 第2回:2003年10月14日(火).
エクセル(2)の目次 セル範囲の指定方法 データの消去法 アクティブセルの移動 セル内容の複写と移動 セル幅の変更方法
プログラミングⅠ 平成30年10月22日 森田 彦.
C言語 はじめに 2016年 吉田研究室.
2007/6/12(通信コース)2007/6/13(情報コース) 住井
地域情報学 C言語プログラミング 第1回 導入、標準出力、変数 2017年10月13日
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
ガイダンス 電子計算機 電気工学科 山本昌志 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/
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング 平成28年10月25日 森田 彦.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
第1章 文字の表示と計算 printfと演算子をやります.
2007/6/26(通信コース)2007/6/27(情報コース) 住井
Presentation transcript:

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

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

レポートについて 課題の解答を ml-enshu @ kb.ecei.tohoku.ac.jp にメールせよ。件名 (Subject) は必ず kadai1:A1TB2345: 東北太郎 の形にすること(氏名以外半角)。 締め切りは一週間後の午前8時50分厳守。 質問は上述のアドレスにメールせよ。 – レポートの不正は試験の不正と同様に処置する。 第何回の課題か(一桁の数字) 自分の学籍番号 自分の氏名

ポイント1 Q: MLって何? A: 「簡単・安全・高速」な プログラミング言語の名前 (「関数型言語」の一種) – ここでは "Mailing List" や "Markup Language" ではない

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

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

課題1. 2 "The Computer Language Shootout Benchmarks" ( debian.org/) は、様々なプログラミング 言語のプログラムの速度や行数を比較し たサイトである。 C, Java, SML, OCaml などのスコアを調べ、数行程度で述べよ。

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

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

課題1. 4 (2/3) 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) 4. 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 ;;

ポイント1 おわり ここから先は OCaml ではなく SML をやります (6セメの授業「コンパイラ」で SML を使用するので) – もっと OCaml について知りたい人は へ

参考書 「プログラミング言語 Standard ML 入門」 大堀淳 共立出版 ISBN jp/~ohori/texts/mltext.html

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

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

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

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

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

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

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